factory-mission
Skill145 starsChanged 21 days agoMITView on GitHub
Use when executing a spec-gated mission from the queue — inner loop specify → plan → implement ↔ converge with tracker integration, worktree isolation, and a circuit breaker.
In this repository48 other files it gives its agents.
- architect-analyzeSkill
- architect-bootSkill
- architect-clarifySkill
- architect-implementSkill
- architect-initSkill
- architect-specifySkill
- writing-skillsSkill
- change-bootSkill
- change-clarifySkill
- change-initSkill
- change-publishSkill
- change-specifySkill
- evals-analyzeSkill
- evals-clarifySkill
- evals-implementSkill
- evals-initSkill
- evals-specifySkill
- evals-validateSkill
- factory-cleanSkill
- factory-initSkill
- factory-intentSkill
- factory-learnSkill
- factory-orchestratorSkill
- factory-queueSkill
- factory-releaseSkill
- factory-reviewSkill
- factory-runbookSkill
- factory-setupSkill
- factory-ticketsSkill
- mission-briefSkill
- product-analyzeSkill
- product-bootSkill
- product-clarifySkill
- product-implementSkill
- product-initSkill
- product-roadmapSkill
- product-specifySkill
- team-bootSkill
- team-constitutionSkill
- team-diagnoseSkill
- team-discoverSkill
- team-initSkill
- team-levelupSkill
- team-repairSkill
- team-setupSkill
- team-skillsSkill
- workspaceSkill
- tech-radar-bootSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 2 are distinctive, and 12 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 13
When ADLC_RUN_ID is set, the workflow engine runs this skill unattended as its execute step, and the completion gate follows it.
- Very specific: line 16
Run the mission for that issue end to end (Phases 0–6 below): brief, specify, clarify, plan, test (RED), code (GREEN), verify, converge, …
- Very specific: line 25
When ADLC_RUN_ID is not set, a person is in this session, and nothing else will answer a gate.
- Very specific: line 29
Before ending your turn, the run is completed, failed or aborted, or it is paused at a gate the person has been asked about.
- Distinctive: line 44
Stall Detection: After dispatching a subagent, observable progress is checked at a configurable window (default 20 min).
- Very specific: line 49
Decoupled Test/Code Separation: Test-first build with mechanical gates plus converging judgement lives in mission-brief.
- Very specific: line 70
Read the run's mission.yml (.adlc/workflows/runs/<run_id>/mission.yml).
- Very specific: line 71
If --issue <ref> is specified (in a factory run, ADLC_ISSUE_REF when it is not):
- Very specific: line 74
Read the labels. If dispatch is interactive or gating is human-required -> HALT execution (hand back to interactive session).
- Very specific: line 76
When the gate passes, move the issue to executing through the Set Lifecycle step (Operation 9.
- Distinctive: line 78
If no issue (outside a factory run): read spec description from arguments.
- Very specific: line 84
Team index fallback: when no team record-class index was injected at session start, read the binding records directly from …
- Very specific: line 125
If tracker-integrated: read all marker comments from the PR/MR/issue to compile the audit trail (converge decisions, test findings, …
- Very specific: line 127
Write per-implement logs to iterations.md.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
factory-mission
Scope rule: scripts stay skill-local — never source a script from another skill. For another skill's operations, invoke that skill (e.g.
architect-clarify,product-clarify,team-boot) via the Skill tool; for its documents, follow theRequiresline.scripts/andreferences/below are relative to this skill.{REPO_ROOT}denotes the project root (where.adlc/lives).
In a factory run — read this first
When ADLC_RUN_ID is set, the workflow engine runs this skill unattended as its execute step, and the completion gate follows it. Do exactly this:
- The mission is the run's issue. Take it from
--issue <ref>in the arguments; when that is missing or empty, useADLC_ISSUE_REF. With neither, do not ask: write{"conclusion":"blocked: factory run without an issue"}intoADLC_STEP_OUTPUTand return. - Run the mission for that issue end to end (Phases 0–6 below): brief, specify, clarify, plan, test (RED), code (GREEN), verify, converge, then Invoke the
factory-runbookskill to open or reuse the draft code MR/PR in the repository the change belongs to. - Once the code MR/PR is open, move the issue from
executingtovalidationthrough the Set Lifecycle step (factory-runbook/references/tracker-integration.mdOperation 9). That step addsvalidationand removes any other lifecycle label in the same call. With no MR, leave the label as it is and say so in theconclusion. - Before you return, always: write
mr_url(the code MR/PR you opened or reused) and a one-lineconclusionintoADLC_STEP_OUTPUT— one flat JSON object of string values; keep any keys already in the file. The engine linksmr_urlat the completion gate. Do this whatever the outcome; with no MR, write only theconclusion. - Never ask a question or wait for an answer. The completion gate after this step is the approval; a question here ends the step with nothing implemented.
Requires: the factory-runbook skill (provides the publish procedure and run contracts): adlc-cli skills add tikalk/adlc-team-skills --skill factory-runbook
In a local session — you answer the gates
When ADLC_RUN_ID is not set, a person is in this session, and nothing else will answer a gate. The agentic-container runtime that relays gates to Slack exists only in a runner pod.
- A paused run is your turn, not the end of the mission. When
adlc-cli workflow runorresumeexits with the run paused at a gate (run_paused,status: pausedinadlc-cli workflow state show <run_id>), ask the person the gate's question and options. Then runadlc-cli workflow resume <run_id> --input <verdict_input>=<answer>and keep going. Never end your turn on a paused run that nobody was asked about. - Every gate that approves MRs is followed by a step that opens them. A
gatewhose message promises MRs/PRs is followed by apublishstep: Invoke thefactory-runbookskill for each repository the change touches, writingmr_url(mr_urlsfor more than one). Only then comes the write-back step, so the completion comment links real MRs. A gate with nothing after it to act on its answer is a plan defect; fix the plan before you start the run. - Before ending your turn, the run is
completed,failedor aborted, or it is paused at a gate the person has been asked about.
What this skill does
factory-mission is the execution-harness orchestrator of the software factory. It takes a feature description, hands brief construction to mission-brief (goal, constraints, non-goals, success criteria — mission-brief/references/mission-brief-template.md), generates an ordered step list, and executes those steps via sequential subagent runs.
It implements the following key factory platform capabilities:
- Skill routing via the harness: step prompts name skills by exact name; the dispatched subagent resolves them through its own Skill tool (the runtime injects the installed inventory — no filesystem scan). For commands-based frameworks the model cannot see, consult
references/agent-integrations.md. - Tracker-Agnostic Integration (
factory-runbook/references/tracker-integration.md): When invoked with--issue <ref>, it pulls ticket context, respects automation/dispatch labels (autonomous/supervised), and writes back status comments + iteration logs. - Inter-Agent Comment Bus (
factory-runbook/references/tracker-integration.md§Inter-Agent Comment Bus): When tracker-integrated, each step's terminal output (decisions, findings, artifact references — never drafts) is published as a structured comment on the PR/MR/issue. The next step reads previous markers before starting. This is the durable inter-agent memory that survives session boundaries, runtime switches, and pod crashes. Drafts stay on local disk. - Self-Contained Worker Brief: The Mission Brief is persisted to
.adlc/workflows/runs/<run_id>/brief.mdas a draft. Resumed runs and cross-runtime workers read it from disk — no session-context dependency. - Worktree Isolation: Each run gets its own git worktree. Never touches the user's main checkout. Cleaned up on exit (retained if unsaved work).
- Lease-Based Liveness: The state file carries a renewable lease with heartbeat + TTL. Resume can distinguish live, stale, and completed runs.
- Stall Detection: After dispatching a subagent, observable progress is checked at a configurable window (default 20 min). A hung agent that passes the circuit breaker is detected and killed.
- Lane-Based Dispatch (
factory-runbook/references/lanes.md): Steps can run on different lanes —inline(this session),agent(fresh session of same CLI for maker/checker separation), orcli:<runtime>(optional cross-vendor). Theagentlane is the default for unattended stages. - Scratchpad Tools: Subagents share named, run-private scratchpads (
.adlc/workflows/runs/<run_id>/scratchpads/<name>.txt) to compile notes, drafts, and reviews incrementally before publishing. - Workflow Memory & Self-Improvement: Persistent JSONL database (
.adlc/workflows/memory.jsonl, workspace-global) stores learnings across runs.factory-learnperiodically runs retrospectives to prune/weight memories. - Hierarchical Context Parameters: Workflows and agents reference parameters as
{{params.<key>}}, resolved from most specific to least specific:agent < workflow < repository < project < default. - Decoupled Test/Code Separation: Test-first build with mechanical gates plus converging judgement lives in
mission-brief.
When to use
- "Build this feature end to end" inside a factory-enabled team.
- You want an execution loop with a circuit breaker, score-regression checking, and a robust resume mechanism (
factory-mission --resume). - You want to run autonomously against a ticket queue.
When NOT to use:
- For non-factory standalone projects (run
adlc-cli workflow run <workflow.yml>— the CLI engine, shared run state). - Trivial 1-line changes (do them directly).
Process
factory-mission executes in alignment with the shared executor contract (factory-runbook/references/executor.md) and the tracker-agnostic layer (factory-runbook/references/tracker-integration.md).
Phase 0 to 4: Setup & Compilation
- Read the run's
mission.yml(.adlc/workflows/runs/<run_id>/mission.yml). Resolve execution and supervision. - If
--issue <ref>is specified (in a factory run,ADLC_ISSUE_REFwhen it is not):- Discover credentials and MCP/CLI tools (
factory-runbook/references/tracker-integration.md). - Pull the issue content as the primary Brief description.
- Read the labels. If dispatch is
interactiveor gating ishuman-required-> HALT execution (hand back to interactive session). - Dependency hard gate (Operation 12): read the issue's
**Depends on**line, resolve each dependency's state via the connector, and refuse when any dependency is still open (onlyclosed/cancelledcount complete —spec-gateddoes NOT satisfy the gate). On refusal: publish ablocked: dependency-gatecomment naming the blocking issue(s), set the issue's lifecycle label back tospec-gatedthrough the Set Lifecycle step (tracker-integration Operation 9), release the lease (ADLC_STEP_OUTPUTconclusionblocked: dependency-gate on <refs>), and return without touching worktree, code, or executor. When the tracker exposes nativeblocked_by/blockingrelations (GitLab issue links, Linear/Jira relations), use them in addition to the brief's Depends-on line — aBlocked/blocked-bysignal from the tracker also triggers the gate. - When the gate passes, move the issue to
executingthrough the Set Lifecycle step (Operation 9; the lease ACQUIRE of Operation 10 does this). Lane runs arrive alreadyexecuting: the step then changes nothing. - The comment bus is active for this run — step outputs will be published as marker comments on the PR/MR/issue.
- Discover credentials and MCP/CLI tools (
- If no issue (outside a factory run): read spec description from arguments. The comment bus is inactive — steps communicate through local files only.
- Validate intake and hand the brief to
mission-brief— brief construction lives there (permission-brief/references/mission-brief-template.md). The intake bundle (validated intake) plus theFramework laneline the session model resolves (see step 5) is adraft— not published to the comment bus. - Resolve the framework lane per
mission-brief's detection section (aframework:pin in mission.yml overrides it) and record the disclosedFramework lane: <lane> (<evidence>)line in the run brief. If no framework is installed, disclose that and fall back to Default. - Resolve hierarchical Context Parameters from
agent < workflow < repository < project < defaultand embed the frozen value map in the brief. - Generate the step list based on route classification (
spec,change,quick). Each step declaresoutput_type(draft/decision/findings/artifact-ref) andreads_from(markers or local paths) per the executor contract. Step prompts carry the exact skill name; the subagent resolves it via its Skill tool. If the target is a commands-based framework, check the commands dir perreferences/agent-integrations.md; an absent dir means the step executes directly.
Team index fallback: when no team record-class index was injected at session start, read the binding records directly from docs/adlc/memory/ (dual-read order: docs/adlc/memory first, legacy .adlc/memory fallback) and state that fallback in one line. Never block on the missing injection.
Lifecycle DAG & Step Resolution
factory-mission resolves each lifecycle step to mission-brief, the lane-carrying core skill that owns it. The brief step is produced by mission-brief during Phase 0 intake, before the workflow is compiled; the table below is the dispatched lifecycle. Step order, inputs, and outputs follow the table; the owning skill defines the discipline.
| Step | Skill | output_type | reads_from |
| specify | mission-brief | draft | brief.md |
| clarify | mission-brief | decision | spec.md |
| plan | mission-brief | draft | spec.md, clarify |
| test | mission-brief | artifact-ref | spec.md |
| code | mission-brief | artifact-ref | test, spec.md, plan.md |
| verify | mission-brief | findings | test, code |
| converge | mission-brief | decision | brief.md |
A SPEC_CORRECTION_NEEDED verdict routes to the owning clarify gate (mission-brief clarify), never to code.
Boundary
factory-mission owns the execution harness: the worktree, the lease, tracker integration (issue intake, the comment bus, completion write-back), and the draft code MR. It never owns spec content, tests, code, or verdicts — each step's output belongs to the mission-brief skill that produced it. Dispatch names phases, not commands: every lifecycle step resolves through the table above.
Shared Executor Overrides
Knobs specific to a mission run, read from mission.yml (the policy home for execution and supervision):
- Supervision: the run's supervision mode — unattended runs never ask a question.
- Quality threshold:
quality_thresholdtravels in as a converge input owned bymission-brief; the orchestrator carries it, never applies it. - Test/code split: selected per run — whether the build dispatches separate test and code steps.
Phase 5: Converge Loop Control
The orchestrator runs test/code → verify → converge as a loop and owns the loop's counters; the verdict itself belongs to mission-brief.
- DONE at or above
quality_threshold→ the loop exits and the run proceeds to Phase 6.DONEbelowquality_thresholdis treated asCONTINUE. - CONTINUE → increment
consecutive_tasks_appended(persisted in the run stateruns/<run_id>/state.json, surviving resume), attach the verify findings, and loop back totest(TDD split on) orcode. When the counter reachescircuit_breakerfrommission.yml(default 3), stop the run as failed: "circuit breaker: N consecutive iterations did not converge — human review needed." - Score regression: track
consecutive_score_regressions(persisted in the run state, surviving resume). A converge quality score below the previous iteration increments it; equal or higher resets it to 0. Reachingcircuit_breakerstops the run: "N consecutive score regressions — quality trending downward, human review needed." - SPEC_CORRECTION_NEEDED → the owning clarify gate, bounded by
max_spec_corrections(default 2); exceeding it halts for human review. - The
code-step retry loop (mission-briefGREEN gate) never consumes these counters — only completed iterations do.
Phase 6: Completion & Write-Back
- If tracker-integrated: read all marker comments from the PR/MR/issue to compile the audit trail (converge decisions, test findings, implement artifact references, convergence history).
- Close the shared run: final
adlc-cli workflow state advance <run_id> --step <last> --status completed(the run dir is the durable archive; no separate move). - Write per-implement logs to
iterations.md. - If tracker-integrated:
- Post completion summary as a ticket comment (marker:
factory-mission:status=completed:run=<run_id>). - Move the issue from
executingtovalidation(ordoneif merged) through the Set Lifecycle step (tracker-integration Operation 9), which also removes any other lifecycle label. - Stamp
agent-authoredon opened PRs. - In a factory run, write the code MR/PR URL as
mr_urlintoADLC_STEP_OUTPUT(see "In a factory run" above). Open it via the runbook with--kind codeso the mission branch (factory/mission/*,factory/code/*) and mission title are used. - Defer PR merge to code-owner approval (never auto-merge without approval).
- Post completion summary as a ticket comment (marker:
- Output the complete audit summary.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

