ADLC
Integrations

GitHub Copilot

Native ADLC integration for the GitHub Copilot CLI: seven lifecycle hooks, six phase skills, allowlisted MCP gate tools, and six read-only prosecution agents, backed by the unbypassable CI rail gate.

ADLC × GitHub Copilot CLI

Native ADLC integration for the GitHub Copilot CLI, built against Copilot's own plugin surfaces rather than as a compatibility shim. It ships as plugins/adlc-copilot with a plugin.json manifest and installs from this repo's Git plugin marketplace.

Two enforcement layers, and it matters which one you rely on:

  1. In-session rail hook (best-effort). A preToolUse hook denies edits to a frozen ticket's rails, and build-gate checks context fitness before a high-risk build starts. A shell cannot be reliably parsed, so a rail write via Bash can still land in the diff.
  2. CI diff gate (the guarantee). scripts/rails-guard-ci.mjs rejects any PR whose diff touches a rail frozen on the base branch, in any spelling. This is the control to depend on.

Install

npm install -g @adlc/cli
copilot plugin marketplace add voodootikigod/adlc
copilot plugin install adlc-copilot@adlc
adlc init --no-codex-agents

adlc init --harness copilot is not available in @adlc/cli 1.6.0, the current published release — it exits with --harness must be codex or cursor. The flag exists in the repository and ships in the next release; until then use --no-codex-agents, which creates the same .adlc/ runtime without the Codex agent templates. What you lose in the meantime is only the .github/copilot-instructions.md block and the copilot-setup-steps.yml snippet, which can be added by hand.

The plugin installs from the Git marketplace, not npm. The @adlc/copilot npm package is not the install path — the marketplace command above does not go through npm at all.

adlc init --harness copilot is a separate step that scaffolds repository state: a .github/copilot-instructions.md block and a copilot-setup-steps.yml snippet. It does not install the plugin, and is not a substitute for the marketplace commands.

Or let the installer do it. The universal installer detects the copilot CLI and runs the marketplace install automatically:

curl -fsSL https://www.agenticlifecycle.ai/install.sh | sh

What the plugin wires

PrimitiveCopilot surfaceCount
Phase skillsskills/6 — adlc, adlc-init, adlc-ticket, adlc-prosecute, adlc-distill, adlc-maintain
Lifecycle hookshooks/hooks.json7 — sessionStart, preToolUse, postToolUse, preCompact, subagentStart, subagentStop, agentStop
Gate tools.mcp.json → adlc mcp-server2 — adlc_gate, adlc_prosecute
Prosecution agentsagents/6 — five read-only lenses plus an independent verifier

The skills use progressive disclosure: adlc routes to a phase, then a focused skill loads just that P0–P7 workflow rather than the entire lifecycle.

Which adlc the hooks run

The build-gate bypass recorder and audit steps run the first adlc on PATH that is:

  • reached through an absolute PATH entry outside any node_modules directory, since a repository could place one there, and
  • owned by you, or (a sudo npm i -g @adlc/cli install) a root-owned file reached through a root-owned PATH entry in a root-owned directory, with neither the file nor any directory above it or above the PATH entry writable by group or others.

These are the same terms the Claude Code integration applies. A project-local install (node_modules/.bin/adlc only) is never run, and a bypass that needs an adlc to record it is refused when none qualifies.

Wire the CI control

The in-session hook is a nudge. The commit-time gate is the control, and it needs a deliberate bootstrap:

mkdir -p .github/workflows
test -e .github/workflows/adlc-rails-guard.yml \
  && echo "REFUSING: a workflow already exists — diff before replacing it" \
  || curl -fsSL https://raw.githubusercontent.com/voodootikigod/adlc/main/docs/ci/rails-guard.yml \
       -o .github/workflows/adlc-rails-guard.yml

The filename is not cosmetic — the workflow protects itself by name, and any other name leaves it editable by the PRs it is meant to gate. Read the file's header before marking the check required: it documents a multi-stage bootstrap (the bootstrap commit merges first, the base branch needs trustedCodeownersAttested, and .adlc/manifest.jsonl must be absent or empty until reviewed). Enabling it early fails every subsequent PR.

Further reading

On this page