aidlc-express
Run the AI-DLC workflow with the express scope baked in — no scope detection. Lightest run: requirements to deploy, no design pass, no reviewers. Packaging over `/aidlc --scope express`, which works w
SKILL.md.claude/skills/aidlc-express/SKILL.md
GitHubAI-DLC — express scope
Drive the AI-DLC engine with the express scope fixed. This is the same
deterministic forwarding loop the /aidlc orchestrator runs, with --scope express baked into the first next so scope detection is skipped. The
engine owns all routing; the conductor persona arrives in the conductor_persona
field of the first run-stage, or of the first rules part when it is sent
ahead of that run-stage. Adopt it for the whole run.
The loop
directive = aidlc engine orchestrate next --scope express $ARGUMENTS- Before acting on each directive, read
.claude/aidlc-common/protocols/stage-protocol.mdonce per session, then read every.claude/aidlc-common/protocols/stage-protocol-<module>.mdnamed bydirective.protocol_modules. Load every listed module before acting; skip only a module already loaded earlier in this session. Then act ondirective.kindexactly as the orchestrator does (load-steering / run-stage / invoke-swarm / ask / print / error / done). Aload-steeringdirective brings a stage's rules in parts ahead of itsrun-stage(most stages on GitHub Copilot): applydirective.rules_contentin array order and keep it as that stage's rules, adoptconductor_personawhen the part carries it, then runaidlc engine orchestrate continue <directive.receipt>(copy the 8-character receipt printed at the top of the directive, never rebuild it) and act on the directive it returns. Neverreporta part or tell the user about it. Every engineaskcarriesask_typeandresponse_route:nextfollows the chosen command,commandrunsresume_commandonly when the human chooses to resume and then re-runsnext(otherwise it waits for their direction),claimfollows the Unit claim contract, andexecute-remedyoffers only executable guard remedies and executes the human-selected command or action. An empty remedy list is terminal; wait for the human and invent no report, receipt, reset, or decision. Forintent-pick, choose theselect_commandsentry by its exactselectorand execute its completecommandverbatim, never by selector interpolation. Scope and compose commands retain--request <8hex id>; never append the request text. The ask names the request only by id (a pasted<document>block stays in the question store as data), whilequestionechoes at most 240 characters, ending in.... The engine carries the request through a secondnew-work-routingask (a question of its own) on any harness and through compose/creation handoffs until creation succeeds; a repeated answer carries on with the work it started instead of creating it twice. That ask carries its routes asnew_intent_command,scope_commands,compose_command, andcontinue_commandfor the active workflow or (withavailable_intents)select_commandsandreshape_commands; run the chosen one verbatim and preserve its description and scope; an unselected intent with new work waiting is not anintent-pick. Legacy Plan Approval recovery keeps its explicit bare-nextchoice. Never usereportas a fallback for an engine ask answer; a selected guard remedy may still explicitly name a stage report. aidlc engine orchestrate report --stage <directive.stage> --result <outcome> [--user-input "<text>"]only after acting on a stage directive. A redo, jump, or start-fresh request on re-entry is the sole non-stage report round-trip and usesreport --result resumed --choice <redo|jump|fresh>.- Pass
$ARGUMENTSonly to the firstnextin step 1: every later pass runs bareaidlc engine orchestrate next, with no--scopeand no$ARGUMENTS(repeating them would redo a jump or a setting the person already asked for). Keep going untildirective.kind == done. Adonewithoutdirective.workflow_continuesis the real end: present the completion summary and stop. Adonethat carries it only recorded a step: run that barenextat once and act on what it returns, with no completion summary. If the person's reply that led to that step also asked to stop the workflow there for now (not to pause on one decision inside the work), runaidlc engine orchestrate parkinstead and act on itsparkeddirective.
On that first next, pass $ARGUMENTS through verbatim after --scope express; the engine parses
any flags (--status, --stage, …) and the --scope from the
state file always wins on an existing workflow, so re-running a started workflow
resumes it. To run a different scope, use /aidlc --scope <other> instead.
Starting unrelated new work?
Before you forward $ARGUMENTS on step 1, make the SAME recognise-vs-route
judgment the /aidlc orchestrator makes: does this input continue the
active intent, or does it describe a genuinely new, unrelated piece of work?
This matters most when the active intent is already complete: then next
correctly returns done (the engine never creates alongside a live intent
without the confirmed new-work route), and the loop above would simply stop. New work is NOT a
continuation; the escape hatch is next --new-intent.
This recognition and conductor-authored offer apply only before an engine ask
is emitted. Once an ask exists, follow its typed route and supplied commands,
preserving any --request id rather than rebuilding the request.
Default to CONTINUATION. Treat the input as new-work ONLY when it clearly names a distinct feature/bug/unit unrelated to the active intent's subject (
aidlc engine intent list --jsongives itsslugandstatus). When in doubt, continue: false-positive offers are the main risk.On genuine new-work, OFFER, never auto-create. Surface an
AskUserQuestionshowing the active intent and the proposed new one, including the scope you'd give the new intent. Default that scope to this runner's bakedexpress(the new work is likely the same flavour that made the user reach for this command), but if the new work clearly fits a DIFFERENT scope, propose that instead, and name it so the human can correct it. Lead the affirmative option with "Yes" (e.g. "Yes, start a second intent"). Never create it without their explicit yes.On CONFIRM, re-run
nextwith--new-intent, the confirmed scope, and the new-work text:aidlc engine orchestrate next --new-intent --scope <the confirmed scope> "<the new-work description>"The engine returns a
printdirective naming theintent-createcommand (with the--label "<2-3 word kebab essence>"placeholder). Act on it exactly as the loop'sprinthandling describes: create the intent, then re-runnextand carry on into the new work's first stage in this chat. Say the narration's line about starting it in a clean chat once: it is an option for the person, never a stop.On DECLINE, proceed with the active intent, the normal loop above.