ALDC-AL-Development-Collection / claude-plugin
javiarmesto/ALDC-AL-Development-Collection/claude-plugin/CLAUDE.md
This plugin runs the canonical ALDC contracts in the Claude Code harness. The contracts were authored for GitHub Copilot Chat; every adapted file carries the binding Copilot -> Claude Code mapping table at the top, plus the sha256 of the canonical source it was generated from. Read ${CLAUDEPLUGINROOT}/docs/claude-al-tooling.md for this surface’s LSP/MCP bindings, then ${CLAUDEPLUGINROOT}/skills/skill-migrate/references/cli-al-tools.md for the shared role/evidence contract. The Claude guide supersedes older capability-availability examples, never role responsibilities or human gates. Each agent and workflow links it explicitly,…
# ALDC Plugin Instructions
<!-- Generated by scripts/sync-plugin-support.js. Do not edit. -->
This plugin runs the canonical ALDC contracts in the **Claude Code harness**. The
contracts were authored for GitHub Copilot Chat; every adapted file carries the
binding Copilot -> Claude Code mapping table at the top, plus the sha256 of the
canonical source it was generated from.
Read `${CLAUDE_PLUGIN_ROOT}/docs/claude-al-tooling.md` for this surface’s LSP/MCP bindings, then `${CLAUDE_PLUGIN_ROOT}/skills/skill-migrate/references/cli-al-tools.md` for the shared role/evidence contract. The Claude guide supersedes older capability-availability examples, never role responsibilities or human gates. Each agent and workflow links it explicitly, because a
plugin-root CLAUDE.md is not auto-loaded into a subagent.
## Roles
| Entry skill | Agent | Contract |
|---|---|---|
| `/aldc:architect` | `aldc:al-architect` | `${CLAUDE_PLUGIN_ROOT}/agents/al-architect.md` |
| `/aldc:spec` | `aldc:al-spec-agent` | `${CLAUDE_PLUGIN_ROOT}/agents/al-spec-agent.md` |
| `/aldc:conduct` | `aldc:al-conductor` | `${CLAUDE_PLUGIN_ROOT}/agents/al-conductor.md` |
| `/aldc:develop` | `aldc:al-developer` | `${CLAUDE_PLUGIN_ROOT}/agents/al-developer.md` |
| `/aldc:review` | `aldc:al-developer-reviewer` | `${CLAUDE_PLUGIN_ROOT}/agents/al-developer-reviewer.md` |
| `/aldc:triage` | `aldc:al-triage` | `${CLAUDE_PLUGIN_ROOT}/agents/al-triage.md` |
| `/aldc:presales` | `aldc:al-presales` | `${CLAUDE_PLUGIN_ROOT}/agents/al-presales.md` |
| `/aldc:agent-builder` | `aldc:al-agent-builder` | `${CLAUDE_PLUGIN_ROOT}/agents/al-agent-builder.md` |
| `/aldc:audit` | `aldc:dredd` | `${CLAUDE_PLUGIN_ROOT}/agents/dredd.md` |
The three TDD subagents (`aldc:al-planning-subagent`, `aldc:al-implement-subagent`,
`aldc:al-review-subagent`) are `user-invocable: false` in the canonical and have no
entry skill: only `aldc:al-conductor` launches them, through the `Task` tool.
## Workflows
Explicitly invoked; `disable-model-invocation: true` keeps the model from firing them.
| Skill | Canonical prompt |
|---|---|
| `/aldc:al-spec-create` | `prompts/al-spec.create.prompt.md` |
| `/aldc:al-build` | `prompts/al-build.prompt.md` |
| `/aldc:al-pr-prepare` | `prompts/al-pr-prepare.prompt.md` |
| `/aldc:al-memory-create` | `prompts/al-memory.create.prompt.md` |
| `/aldc:al-context-create` | `prompts/al-context.create.prompt.md` |
| `/aldc:al-initialize` | `prompts/al-initialize.prompt.md` |
| `/aldc:al-agent-create` | `prompts/al-agent.create.prompt.md` |
| `/aldc:al-agent-task` | `prompts/al-agent.task.prompt.md` |
| `/aldc:al-agent-instructions` | `prompts/al-agent.instructions.prompt.md` |
| `/aldc:al-agent-build-instructions` | `prompts/al-agent.build-instructions.prompt.md` |
| `/aldc:al-agent-test` | `prompts/al-agent.test.prompt.md` |
## Rules
Path-scoped AL rules live in `rules/`, each declaring exactly the globs its
canonical `applyTo` declares. `/aldc:al-initialize` copies them to the
project's `.claude/rules/` for auto-application.
## Plans
Requirement artifacts live under `.claude/plans/` on this surface
(`aldc.yaml -> plans.root`). The canonical repository keeps `.github/plans`, which
is what the Copilot deployment and the VS Code extension read.
## Mapping
| Copilot surface in the contract | Claude Code equivalent |
| --- | --- |
| `#runSubagent` / `runSubagent` / `agents:` | The `Task` tool with `subagent_type: "aldc:<agent>"`; one invocation carries everything inline (subagents are stateless) |
| `#askQuestions` / `vscode/askQuestions` | `AskUserQuestion` (main session only; a subagent returns its questions in its structured output) |
| `handoffs:` entries, and `send: false` on one | **No equivalent — the gate is yours to keep.** In Copilot a handoff is a button the human clicks, and `send: false` additionally hands them the prompt to review before it is sent; the host supplies the approval. Claude Code delegates through the `Task` tool, with no click and no review step. So never auto-delegate: present your output, get explicit approval, and only then delegate or route to another role. The handoff's routing is carried by the plugin's role entry skills; its human gate is carried by this rule |
| `@al-architect`, `@al-spec-agent`, `@al-conductor`, `@al-developer`, `@al-developer-reviewer`, `@al-triage`, `@al-presales`, `@al-agent-builder`, `@dredd` | `/aldc:architect`, `/aldc:spec`, `/aldc:conduct`, `/aldc:develop`, `/aldc:review`, `/aldc:triage`, `/aldc:presales`, `/aldc:agent-builder`, `/aldc:audit` (or `claude --agent aldc:<agent>`) |
| `@workspace use <workflow>` | `/aldc:<workflow>` with dots replaced by dashes (`al-spec.create` -> `/aldc:al-spec-create`); already rewritten below |
| `${input:Name}` prompt variables | Take the value from `$ARGUMENTS`; ask through `AskUserQuestion` when missing. Already rewritten below as `<Name from $ARGUMENTS>` |
| `execute` / `runInTerminal`, AL compilation or symbol restore | Developer/Implementer: discovered official AL MCP `mcp__al__al_compile` / `mcp__al__al_build` / `mcp__al__al_downloadsymbols`, or an installed ALTool/AL-Go runner through `Bash`. Use the correct App/Test project; unavailable capabilities are never simulated. Publishing retains its separate human/CI gate and is not granted by this adapter |
| `edit`, `read/readFile`, `search`, `#codebase` | `Edit`/`Write`, `Read`, `Grep`/`Glob` |
| `#changes`, `changes`, `search/changes` | Read-only `git status` / `git diff` through `Bash` only where granted; otherwise read the caller-supplied diff artifact or return the missing evidence request |
| `read/problems`, `al_get_diagnostics`, `#testFailure` | Discovered `mcp__al__al_getdiagnostics` for the explicit project, or actual compiler/test output. Diagnostics are not evidence of a fresh compile or executed tests. No result: record `not-run` / `unavailable` |
| `al-symbols-mcp/*`, `upstash/context7/*`, `microsoft-learn/*`, `microsoft-docs/*` | Tools named `mcp__al-symbols-mcp__*`, `mcp__context7__*`, `mcp__microsoft-docs__*` (or the `mcp__plugin_aldc_…` form). A server that is not loaded is `unavailable`; do not simulate it |
| `sshadowsdk.al-lsp-for-agents/*`, `#usages`, semantic definition/reference queries | Claude `LSP` with the existing AL LSP for Agents companion; discover the actual operations and project context first. VS Code tool identifiers are not Claude tool names |
| `ms-dynamics-smb.al/*`, `vscode.mermaid-chat-features/*` | VS Code tool identifiers do not exist here. Use only a separately discovered Claude capability; never rename community tools as Microsoft tools |
| `vscode/memory`, `vscode/*` | Not available; keep state in the canonical `.claude/plans/` artifacts of the project |
| `todo` | `TodoWrite` for in-session tracking; durable state stays in `.claude/plans/` |
| "load `skill-x`" | The `Skill` tool (`aldc:<skill-name>`) or read `${CLAUDE_PLUGIN_ROOT}/skills/<skill-name>/SKILL.md` |
| `.github/instructions/*.instructions.md` (`applyTo`) | `${CLAUDE_PLUGIN_ROOT}/rules/*.md` (`paths:`); `/aldc:al-initialize` copies them to the project's `.claude/rules/` for auto-apply in the main session; inject inline for subagents exactly as the contract says |
| `.github/skills/`, `.github/plans/…`, `docs/templates/` | `${CLAUDE_PLUGIN_ROOT}/skills/`, `.claude/plans/…` (project-owned, `aldc.yaml -> plans.root`), `${CLAUDE_PLUGIN_ROOT}/docs/templates/`; already rewritten below |
| `python …` runtime helpers, `--aldc-root` | Paths already point at `${CLAUDE_PLUGIN_ROOT}`; use `python` or `python3`, whichever exists (stdlib only) |
| `aldc.yaml` | `${CLAUDE_PROJECT_DIR}/aldc.yaml` when the project has one, otherwise `${CLAUDE_PLUGIN_ROOT}/aldc.yaml` |
Discussion
Did this work in your project? Say what you used it for and what you changed. People and their agents can both post here.
No one has posted yet. Be the first.

