alignment
Solution direction synthesis — design opinions from research findings, presented for human correction, with each settled decision handed to the adr skill. Invoke whenever task involves the A stage of
SKILL.mdplugins/the-blueprint/skills/alignment/SKILL.md
GitHubAlignment
Declare every pattern you intend to follow and every design opinion you've formed — explicitly, with evidence and reasoning — so the human can correct them before implementation begins. Research produces facts; alignment is where you form and surface opinions for correction.
Prerequisites
Locate the inputs:
- Brief — check conversation context first; fall back to
design-docs/NN-name.brief.md; if absent, ask whether to run discovery. - Research — check conversation context first; fall back to
design-docs/NN-name.research.md; if absent, ask whether to run research. - Glossary — load
docs/glossary.mdif present. If absent (first iteration), schedule creation at Phase 3 end (see Glossary maintenance below).
Process
Phase 1 — Synthesize
- Read the brief, research, and glossary (if present).
- From research, extract:
- Codebase patterns with prevalence (dominant convention vs isolated instance).
- Integration points and boundaries relevant to the brief's goals.
- From the brief, extract:
- Motivation, desired end state, constraints, non-goals.
- Flagged term ambiguities — unresolved terms discovery surfaced for alignment to resolve.
- Not-yet-specified items — unknowns discovery could not yet phrase as precise questions. Check each against the research findings: graduate the ones research has sharpened into open questions for Phase 3; carry the rest into the alignment document unchanged.
- From the glossary, extract:
- Canonical vocabulary to use throughout alignment.
- Definitions that constrain pattern choices (e.g., "Customer owns CustomerId" forbids cross-context FKs).
- Form opinions: which patterns to follow, which to deviate from, and why.
Phase 2 — Surface Patterns
Present patterns you intend to follow as a structured block:
- Pattern: [what]
- Found in: [where, prevalence — e.g., "12/15 files in
internal/auth/"] - Intend to follow: yes / no / partially
- Reason: [why]
After presenting, ask: "Any patterns to reject or modify before I propose the end state?"
Iterate until the user confirms the pattern set. Do not proceed to Phase 3 until patterns are reviewed.
<examples> <example name="pattern-surfacing"> **Patterns I intend to follow:**Pattern: Service classes suffixed with
*HandlerFound in: 8/10 files in
internal/api/— dominant conventionIntend to follow: yes
Reason: Consistent with codebase; deviating creates naming inconsistency.
Pattern: Raw SQL queries in repository layer
Found in: 3/12 files in
internal/data/— minority patternIntend to follow: no
Reason: Dominant pattern (9/12 files) uses query builder. Raw SQL files predate its adoption.
Pattern: Error wrapping with
fmt.Errorf("%w", err)Found in: 14/14 files — universal
Intend to follow: yes
Reason: Consistent, well-established.
Any patterns to reject or modify before I propose the end state?
</example> <example name="user-correction"> **User:** "The `*Handler` naming is legacy — new code uses `*Controller`. Check `internal/api/v2/`."Agent: Updated. Verified *Controller convention in internal/api/v2/. Revised pattern set: [updated list].
Phase 3 — Present End State
With corrected patterns, present:
- Current state — how the affected area works today, derived from research.
- Desired end state — what it should look like after the change, derived from brief + corrected patterns.
- Open questions — anything not determinable from brief and research alone, including not-yet-specified items that graduated during synthesis.
Iterate until end state is clear and all questions are resolved. Not-yet-specified items that remain too dim to phrase stay in the alignment document's Not yet specified section — resolving them is not a gate for completing alignment.
Glossary maintenance. Apply term resolutions the moment they crystallize during Phases 2–3 — a batched cleanup at the end loses the rationale that was live when the term was resolved. Before completing Phase 3, sweep for stragglers:
- If glossary exists: apply term resolutions surfaced in this initiative — sharpen definitions, resolve ambiguities
the brief flagged, add new entries that pass the glossary skill's trap test. Invoke the
glossaryskill for the update. - If glossary missing (first iteration): invoke the
glossaryskill to create one from canonical terms used in brief, research, and alignment dialog. The glossary is a sibling artifact, not a section ofalignment.md.
Phase 4 — Record Decisions
When the dialog settles a choice between real alternatives, invoke the adr skill. It decides whether the choice earns
an ADR, and it owns the ADR, its format, its number, and the ADR index. Alignment adds no ADR rule of its own; the
initiative's number is the group the adr skill numbers the record in.
Explore alternatives before committing (optional). The first workable design anchors — when a genuine trade-off surfaces and no option is clearly right, generate alternatives before asking the user to commit:
- Write the problem framing — constraints from brief and research, adopted patterns, what any solution must satisfy — and present it to the user.
- While the user reads, spawn 2–3 parallel subagents via the Agent tool, each designing the same decision under a different bias: follow dominant patterns with minimal change; design the clean target state ignoring migration cost; optimize for operational simplicity. Give each the problem framing; each returns its direction, what it changes, and where its trade-offs bite.
- Compare the returns on named dimensions, recommend one — or a hybrid — with reasoning. The user picks; the chosen
direction goes to the
adrskill.
Fire this only when a real trade-off exists — routine alignments never need it.
When to prompt. When the dialog surfaces two or more viable approaches and the user expresses uncertainty, ask:
"Multiple paths exist — commit to one and record it?" Uncertainty alone earns no ADR; the adr skill's test decides.
Cross-reference from alignment.md. Add a line under ## Recorded ADRs pointing at the ADR file. Do not copy ADR
content into alignment.md — the ADR file is the source of truth.
Phase 5 — Write Artifact
- Compose
alignment.mdusing the document format below. - Number prefix: match existing artifacts (
NN-name.brief.md/NN-name.research.md), or next available number indesign-docs/. - Save to
design-docs/NN-name.alignment.md. - Present to user for final review. Revise if requested.
Transition
On user approval:
Alignment is complete. Proceed to
frame?
Alignment Document Format
Target ~150 lines. Exceeding 250 indicates content belongs in the frame stage or in ADR files.
# Alignment: {title from brief}
- **Date:** {date}
- **Brief:** {path or "in conversation context"}
- **Research:** {path or "in conversation context"}
- **Glossary:** {path, or "(created during this alignment)"}
## Patterns Adopted
- **[Pattern name]** — [description]. Found in [location, prevalence]. [Reason.]
## Current State
[How the affected area works today.]
## Desired End State
[Target state, derived from brief + corrected patterns.]
## Resolved Questions
- [Question] → [Resolution]
## Not Yet Specified
(Only when unphrased unknowns remain. In-scope territory future iterations revisit — carried from the brief or surfaced
during alignment, written as loosely as the current view allows.)
- [Unknown — what's dim about it, what would sharpen it]
## Recorded ADRs
(Only when ADRs were written during this alignment. List paths — ADR content lives in the files, not here.)
- [4.1 Event-source the write model](/design-docs/adr/4.1-write-model.md)
Rules
- Surface every opinion. Patterns you intend to follow, deviations you chose, assumptions you made — declare all of them. Silently adopting a pattern is the failure mode this skill exists to prevent.
- Living artifact.
alignment.mdmay be updated throughout development. Immutable only when moved tocompleted/. - Always persists to disk. No "skip file" option. Brief and research may live in conversation context; alignment always writes to the filesystem.
- ADRs belong to the
adrskill. Alignment writes every record and every index line through it, andalignment.mdonly links the records. - Glossary maintenance is alignment's job. Discovery flags ambiguities; alignment resolves them by invoking the
glossaryskill before Phase 4. - Complexity is a signal. If the user struggles to answer your questions during alignment, the scope is too large or ill-defined. Push to split or simplify before proceeding — don't paper over the uncertainty.
- Create only. One alignment per initiative. Revise the living artifact directly; formal update mode deferred.