About factory-architect
factory-architect is an agent skill for coordinating the architecture-decision lifecycle, aimed at teams creating, refining, or reviewing system design. It orchestrates other architecture skills in a fixed DAG to produce and check AD.md.
Key features
- 01Orchestrate the architecture decision lifecycle
- 02Support greenfield and existing-project routes
- 03Coordinate ADR drafting, clarification, and implementation
- 04Generate and check AD.md
- 05Produce severity-ranked consistency reports
- 06Handle commits and draft MRs in factory runs
Use cases
- 01Establishing architecture decisions for a new project
- 02Deriving draft ADRs from an existing codebase
- 03Checking consistency between architecture documents and decisions
- 04Running architecture changes through a factory workflow
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ tikalk/ adlc-team-skills --skill factory-architectAfter installing, type/factory-architectin Claude Code to confirm it loaded.
Bundled filesworkflow.yml
Details
From the project READMEfactory-architect
In a factory run — read this first
When ADLC_RUN_ID is set, the workflow engine runs this step unattended and a gate follows it. Do exactly this:
- Start:
bash {REPO_ROOT}/.agents/skills/factory-mission/scripts/bash/run-branch.sh— on Windows,pwsh {REPO_ROOT}/.agents/skills/factory-mission/scripts/powershell/run-branch.ps1(every helper has a PowerShell twin underscripts/powershell/; use it instead of the bash one on Windows) - Run the lifecycle steps the DAG resolves for the issue. After each step that changed files:
commit-step.shwith every path it wrote, moved or deleted. - Before you return, always:
open-mr.sh, then write a one-lineconclusionintoADLC_STEP_OUTPUT. Do this whatever the outcome, even when nothing changed. - Never ask for approval or wait for an answer. The engine's gate after this step is the approval; a question here ends the step with nothing published.
Only this orchestrator commits, pushes and opens the MR, and only through these helpers; architect-* skills never do. Details: Run Branch, Step Commits and Draft MR.
What this skill does
factory-architect orchestrates the architecture-decisions lifecycle. It coordinates individual architecture-related skills (architect-init, architect-specify, architect-clarify, architect-implement, architect-analyze) to maintain a consistent AD.md at the project root.
It operates as a Kind-A DAG orchestrator in alignment with the shared executor engine contract in factory-mission/references/executor.md.
When to use
- You want to bootstrap, refine, or analyze a project's system-level design and decisions (ADRs) end-to-end.
- You want to verify that architectural viewpoints conform to the Rozanski & Woods methodology.
When NOT to use:
- For product-requirements definition (use
factory-productinstead). - For feature-level software execution (use
factory-missioninstead).
Lifecycle DAG & Step Resolution
factory-architect implements a fixed named-skill DAG (fixed step resolution):
Greenfield Route (default on empty project)
specify(generatephase) -> Invokearchitect-specifyto collaboratively capture ADR drafts in.adlc/drafts/adr/.clarify⭐ (clarifyphase) -> Invokearchitect-clarifyto run interactive quality checks and mark ADRs Accepted (human sign-off gate).implement(buildphase) -> Invokearchitect-implementto compile accepted ADRs intoAD.md(by sub-systems) and promote them todocs/adlc/memory/adr/.analyze(analyzephase) -> Invokearchitect-analyzeto verify AD/ADR consistency and output a severity-ranked report.
Brownfield Route (default if code exists but no ADRs)
init(generatephase) -> Invokearchitect-initto reverse-engineer draft ADRs from the existing architecture.clarify⭐ →implement→analyze(same as Greenfield).
Refresh Route (default if AD.md and memory ADRs already exist)
analyze(analyzephase) -> Run architect-analyze first to detect drift.clarify⭐ →implement→analyze(drift-correction cycle).
Shared Executor Overrides
factory-architect overrides the shared executor engine primitives as follows:
- Publish Target: Fixed to
local. Outputs are written todocs/adlc/memory/adr/anddocs/adlc/architect/AD.md. If tracker-integrated, atrackercompletion summary comment is also posted. - Output Types: Steps use the following
output_typeassignments:specify/init→draft(ADR drafts stay in.adlc/drafts/adr/, not published to comment bus)clarify⭐ →decision(accepted/rejected ADR list published to comment bus)implement→artifact-ref(AD.md path reference published, content stays on disk)analyze→findings(severity-ranked consistency report published to comment bus)
- Correction Loop: If
analyzereturnsCRITICALorHIGHconsistency errors, the executor routes back toclarifywith the analyze marker inreads_from.clarifyreads the findings from the PR/MR/issue comment bus (or local fallback). This loop is bounded bymax_corrections(default 2); if exceeded, the orchestrator halts for human review. - Supervision Default:
hybrid. A human gate is hard-enforced atclarify⭐ (for ADR approvals) and at finalAD.mdreview. - Pre-flight Check: Verifies that the
architect-*lifecycle skills are installed in the workspace before beginning Phase 0.
Run Branch, Step Commits and Draft MR
Requires: the factory-mission skill (provides the run helpers): adlc-cli skills add tikalk/adlc-team-skills --skill factory-mission
In a factory run (ADLC_RUN_ID set by the workflow engine) this orchestrator — and only it, never the architect-* lifecycle skills — commits, pushes the run branch and opens the draft MR, always through these three helpers:
- Before the first step:
bash {REPO_ROOT}/.agents/skills/factory-mission/scripts/bash/run-branch.sh— checks outfactory/intent/<repo>-<iid>(fromADLC_ISSUE_REF) in the project root, reusing it or continuing fromorigin. Shared with the other intent lane and with re-dispatches. - After each step (
specify/init,clarify,implement,analyzefixes):bash {REPO_ROOT}/.agents/skills/factory-mission/scripts/bash/commit-step.sh --orchestrator factory-architect --step <step> --output-type <draft|decision|artifact-ref|findings> --summary "<one line, no issue text>" --records <IDs> -- <paths the step wrote>Pass every path the step wrote, moved or deleted (a promoted draft's old path too; the helper also commits deletions inside the allowlist), and only paths inside the lifecycle write allowlist (.adlc/drafts/adr/,docs/adlc/memory/adr/,docs/adlc/architect/AD.md,docs/adlc/architect/views/). It printssha: <sha>orsha: none; put thatshain the step's bus marker (the bus carries pointers, not content). Never stage.adlc/workflows/**. - Before you return, always:
bash {REPO_ROOT}/.agents/skills/factory-mission/scripts/bash/open-mr.sh— pushes the run branch only, finds or opens one draft MR (merge commit, no squash; milestone/assignee per the MR-ownership decision) and writesmr_urltoADLC_STEP_OUTPUT, which the engine's gate links (context.link). Call it whatever the outcome — even when nothing was committed (sha: none, an analyze-only pass): with no commits on the run branch it opens nothing and the gate shows there is nothing to review. Also write a one-lineconclusioninto the same JSON object (the gate's intent-conclusion rule). In a factory run the engine's gate after this step is the approval: do not ask for approval yourself (no "approveimplement?" question) — finish the steps the issue needs, runopen-mr.sh, state the conclusion and return.
Outside a factory run the helpers do nothing unless the user opted in (adlc.commit_steps: true in .adlc/init-options.json, or --commit passed to this skill, which you forward to commit-step.sh); run-branch.sh and open-mr.sh never act without ADLC_RUN_ID. A helper's non-zero exit (refused path, missing committer identity, tracker scope) stops the run — report it, do not work around it.