Architecture fit
Skill KhurrumMahmood/senior-vibe-engineer/.claude/skills/architecture-fit
Router-first engineering skills for AI coding agents: deliberate refactoring, architectural hygiene, ADRs, and bounded multi-language tooling.
npx -y skills add KhurrumMahmood/senior-vibe-engineer --skill architecture-fitAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Third skill in the System-tier chain. Reads an `impacted`-status plan, walks the impact map against the decision registry, canonical-patterns, and architectural-smells; surfaces every material fork that needs an ADR (suggests `/decide` candidates inline); fills §5 (Architecture Fit) and §6 (Open Decisions) of the plan. Advances plan status to `architected`. The last judgment pause before promotion to spec.
SKILL.md
9.6 KB, as published. Nobody here has run it
/architecture-fit
You are the orchestrator for the third skill in the System-
tier planning chain. The deliverable is the same plan at
ai-docs/plans/<name>.md with §5 (Architecture Fit) and §6 (Open
Decisions) populated and status: architected. You do NOT scaffold
the spec — that's /plan-spec. You do NOT author ADRs — that's
/decide.
This is the final judgment pause before the plan becomes a spec. A
plan that reaches architected with unresolved P0 forks in §6 is
expected; /plan-spec will require those to be resolved (via
/decide) before it will promote.
How success is judged
- Every piece of the §3 impact map was walked through the three
checks — decision, pattern, smell — and §5 records the conformance
(or the explicit "no constraining priors" note
/plan-specwill demand). - Every material fork is surfaced in §6: authored inline via
/decide <slug>with the captured id, or recorded(decision pending)— never buried in prose. - Plan status advances to
architected; no ADR is authored by this skill itself, and no spec is scaffolded. - Stage 5 reports the real
.venv/bin/python scripts/plans.py auditoutput after the status edit; a claim without that output is not enough. Write toward these gates from Stage 0.
Core beliefs
- Conformance > novelty. Default is to follow existing decisions
and patterns. A new shape is only justified when an existing
decision is wrong-for-this-case (
/decide --supersede) or the pattern doesn't cover the situation. - Material forks are explicit, not buried. Every choice with 2+
defensible answers gets surfaced in §6. The threshold from
/decide: a fork is material if it (a) constrains future work, (b) excludes an alternative explicitly, or (c) sets an expiration. - Smells avoided are as load-bearing as patterns followed. If the natural shape of the work would create an omnibus module / a stringly-state / a layer violation, §5 says so and §6 records the fork "do this anyway and accept the smell" vs "redesign to avoid".
- Inline /decide invocations are encouraged. If you can write
the ADR Decision sentence right now without speculation, invoke
/decide <slug>inline and capture the assigned id. Otherwise, record the fork in §6 with(decision pending).
Scope (this skill itself)
- Project root: this worktree's root.
- Python:
.venv/bin/python. The registry scripts parse YAML frontmatter through PyYAML fromrequirements.txt; the venv is part of the contract. - Read:
ai-docs/plans/<name>.md,ai-docs/decisions/(full),.claude/docs/canonical-patterns.md,.claude/docs/architectural-smells.md. - Write:
ai-docs/plans/<name>.md(§5-6 + status bump). - MAY invoke:
/decide <slug>for forks that can be authored inline.
Pipeline
Stage 0 — Setup
PLAN_NAME="<arg>"
PLAN_PATH="ai-docs/plans/${PLAN_NAME}.md"
Verify plan exists and status: impacted. If status is draft or
scoped, abort and recommend the matching earlier-stage skill. If
status is architected+, abort and recommend the next-stage skill.
Stage 1 — Load constraints
.venv/bin/python scripts/decisions.py audit --json
.venv/bin/python scripts/decisions.py list --json
Read .claude/docs/canonical-patterns.md and
.claude/docs/architectural-smells.md end-to-end. Read every ADR file
under ai-docs/decisions/ whose applies_to: overlaps with the
subsystems in the plan's §3.
Stage 2 — Walk the impact map
For each touched piece in §3 (subsystem, model, route, service):
- Decision check. Is there an ADR that constrains how this can be
built? If yes, list it; the implementation must conform or the plan
must include a
/decide --supersedestep. - Pattern check. Does a canonical pattern apply? List the anchor. The implementation must follow it.
- Smell check. Would the natural shape create a known architectural smell? If yes, record the smell name and the avoidance strategy.
Build a working list of three columns: (target, conformance, smells_to_avoid).
Stage 3 — Identify material forks
For each design decision the implementation will face, classify:
- Resolved by existing decision. No fork — record the conformance.
- Resolved by pattern. No fork — record the pattern anchor.
- Material fork — can author inline. You can write the ADR's
Decision sentence right now without speculation. Invoke
/decide <slug>and capture the assigned id; add the id to §5 conformance. - Material fork — pending. Needs more investigation, prototype,
or stakeholder input. Add to §6 as
(decision pending). If 2+ alternatives are defensible and the cost of being wrong is high, recommend/design-it-twice <fork-slug>in the §6 entry — it spawns 3 divergent designers and produces a comparative analysis you can feed into/decidelater. - Material fork — supersedes existing. The natural answer
contradicts an existing decision. Surface to user; the resolution
is either (a)
/decide --supersede NNNN, (b) drop the work that caused the conflict (re-run/scope-feature), or (c) take an exception (record in §5).
Stage 4 — Write §5-6 of the plan
Edit ${PLAN_PATH} to fill §5 (Architecture Fit) and §6 (Open
Decisions) from the working list:
## 5. Architecture Fit
**Decision conformance.**
- ADR `NNNN` (`<title>`) — _how the implementation conforms_
- ADR `NNNN` (`<title>`) — _exception with one-line justification_
**Pattern alignment.**
- `<anchor>` — _where in the implementation this lands_
**Smells avoided.**
- `<smell-name>` — _avoidance strategy_
**Smells accepted (with justification).**
- `<smell-name>` — _why we accept it (link to §6 fork if pending)_
## 6. Open Decisions
_Material forks not yet resolved. Each blocks `/plan-spec` until
either authored as an ADR or explicitly waived._
**P0 — must resolve before promotion.**
- `<fork-name>` — _alternatives_; _recommended `/decide` slug_
**P1 — should resolve before implementation.**
- `<fork-name>` — _alternatives_; _can be deferred to `/refactor-subsystem`_
**Authored inline.**
- ADR `NNNN` (`<title>`) — _written during this run_
Stage 5 — Advance status
Edit the frontmatter status: line to architected.
.venv/bin/python scripts/plans.py audit
Stage 6 — Summarize
Report to the user in ≤10 lines:
- Path to the plan.
- ADRs conformed-to (count by id).
- Patterns aligned (count by anchor).
- Smells avoided (count) and accepted-with-justification (count).
- ADRs authored inline this run (ids).
- Open P0 forks count + names — these BLOCK
/plan-spec. - Open P1 forks count.
- Recommended next command:
- If P0 forks exist:
/decide <slug>for each, then/plan-spec <plan-name>. - If clean:
/plan-spec <plan-name>directly.
- If P0 forks exist:
Non-goals
- Authoring ADRs as a side effect —
/decideis the only way (this skill MAY invoke/decideinline but never writes toai-docs/decisions/directly). - Scaffolding the spec (that's
/plan-spec). - Editing canonical-patterns.md or architectural-smells.md.
- Implementing the feature.
When things go sideways
| Symptom | Action |
|---|---|
Plan status is not impacted | Abort; recommend the matching stage skill |
| §3 impact map is empty or "MISSING" | Abort; recommend re-running /impact-feature to fill the gap |
| A fork would supersede an existing decision | Stop; surface conflict to user; resolution is /decide --supersede or re-scope |
User invokes /decide inline but it fails | Record the fork as P0 pending in §6; do not block plan progression |
| Every fork is P0 with 5+ candidates | Plan may be too ambitious — recommend re-running /scope-feature to narrow before continuing |
| No applicable patterns / decisions / smells | Note "no constraining priors" in §5; this is fine for greenfield work but worth flagging |
Registry scripts fail with ModuleNotFoundError: yaml | Runtime is not initialized. Stop and run /engineer-init; do not retry with bare python3 |