[BLOCKING] Execute skill steps in declared order. NEVER skip, reorder, or merge steps without explicit user approval.
[BLOCKING] Before each step or sub-skill call, update task tracking: set in_progress when step starts, set completed when step ends.
[BLOCKING] Every completed/skipped step MUST include brief evidence or explicit skip reason.
[BLOCKING] If Task tools are unavailable, create and maintain an equivalent step-by-step plan tracker with the same status transitions.
Quick Summary
Goal: Deliver user-confirmed, per-layer tech stack — each choice backed by 3+ researched options, weighted scoring, cited evidence, confidence % — by acting as solution architect: derive technical requirements from business analysis, research current market, produce detailed comparison report, so team commits to stack fit for scale, budget, skills, timeline, NOT familiarity.
Summary:
- Purpose: act as solution architect — derive technical requirements from business analysis, research current market, produce per-layer comparison report so team commits to stack fit for scale/budget/skills/timeline, NOT familiarity.
- All 7 main steps (run in order): (1) Load Business Context → (2) Derive Technical Requirements + user-confirm → (3) Research Per Layer (WebSearch 3+ options each) → (4) Deep Comparison Matrix → (5) Weighted Score & Ranking → (6) Generate Report → (7) User Validation Interview.
- Requirements BEFORE research: load prior business/domain/PBI artifacts (Step 1), map business signals → technical requirements (Step 2), gate on user confirmation (
AskUserQuestion) before any WebSearch (Step 3).
- Evaluate every stack layer (backend, frontend, database, messaging, infra, auth) independently — minimum 3 WebSearched options per layer, each with cited evidence (URL, benchmark, case study), NEVER familiarity (Steps 3-4).
- Score with weighted 8-criteria matrix (High=3x / Medium=2x / Low=1x), rank each layer with confidence %; capped <=200-line report →
{plan-dir}/research/tech-stack-comparison.md (Steps 5-6).
- End-of-skill user validation interview (5-8 questions) mandatory, NEVER skipped — only confirmed decisions written to
phase-02-tech-stack.md as status: confirmed (Step 7).
Workflow:
- Load Business Context — Read business evaluation, domain model, refined PBI artifacts
- Derive Technical Requirements — Map business needs to technical constraints
- Research Per Layer — WebSearch top 3 options for each stack responsibility
- Deep Compare — Pros/cons matrix, benchmarks, community health, team fit
- Score & Rank — Weighted scoring across 8 criteria
- Generate Report — Structured comparison report with recommendation
- User Validation — Present findings, ask 5-8 questions, confirm choices
Key Rules:
- MANDATORY IMPORTANT MUST ATTENTION research minimum 3 options per stack layer
- MANDATORY IMPORTANT MUST ATTENTION include confidence % with evidence for every recommendation
- MANDATORY IMPORTANT MUST ATTENTION run user validation interview at end (NEVER skip)
- All claims must cite sources (URL, benchmark, case study)
- Recommend on benchmarked evidence (URL, benchmark, case study); NEVER on familiarity alone
Be skeptical. Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence percentages (Idea should be more than 80%).
Step 1: Load Business Context
Read artifacts from prior workflow steps (search plans/, team-artifacts/):
- Business evaluation report (viability, scale, constraints)
- Domain model / ERD (complexity, entity count, relationships)
- Refined PBI (acceptance criteria, scope)
- Discovery interview notes (team skills, budget, timeline)
Extract and summarize:
| Signal |
Value |
Source |
| Expected users |
... |
discovery interview |
| Domain complexity |
Low/Med/High |
domain model |
| Team skills |
... |
discovery interview |
| Budget constraint |
... |
business evaluation |
| Timeline |
... |
business evaluation |
| Compliance needs |
... |
business evaluation |
| Real-time needs |
Yes/No |
refined PBI |
| Integration complexity |
Low/Med/High |
domain model |
Step 2: Derive Technical Requirements
Map business signals to technical requirements:
| Business Signal |
Technical Requirement |
Priority |
| High user scale |
Horizontal scaling, connection pooling |
Must |
| Complex domain |
Strong type system, ORM with migrations |
Must |
| Real-time features |
WebSocket/SSE support, event-driven arch |
Must |
| Small team |
Low learning curve, good DX, batteries-included |
Should |
| Tight budget |
Open-source, low hosting cost |
Should |
| Compliance |
Audit trail, encryption, auth framework |
Must |
MANDATORY IMPORTANT MUST ATTENTION validate derived requirements with user via AskUserQuestion before proceeding to research.
Step 3: Research Per Stack Layer
For EACH layer, research top 3 options via WebSearch (minimum 5 queries total):
Stack Layers to Evaluate
| Layer |
Example Options |
Research Focus |
| Backend Framework |
Candidate backend runtimes/frameworks |
Performance, type safety, ecosystem |
| Frontend Framework |
Candidate frontend frameworks |
DX, ecosystem, hiring, enterprise fit |
| Database |
Candidate database engines/stores |
Scale, query complexity, cost |
| Messaging/Events |
Candidate messaging/event systems |
Throughput, reliability, complexity |
| Infrastructure |
Docker+K8s, Serverless, PaaS |
Cost, ops overhead, scaling |
| Auth |
Keycloak, Auth0, custom |
Cost, compliance, flexibility |
WebSearch Queries (minimum 5 per layer)
"{option_A} vs {option_B} {current_year} comparison"
"{option} enterprise production case studies"
"{option} community size github stars"
"{option} performance benchmarks {use_case}"
"{option} security track record vulnerabilities"
Step 4: Deep Comparison Matrix
For EACH stack layer, produce comparison table:
| Criteria |
Option A |
Option B |
Option C |
Weight |
| Team Fit |
score + rationale |
... |
... |
High |
| Scalability |
score + rationale |
... |
... |
High |
| Time-to-Market |
score + rationale |
... |
... |
High |
| Ecosystem/Libs |
score + rationale |
... |
... |
Medium |
| Hiring Market |
score + rationale |
... |
... |
Medium |
| Cost (hosting) |
score + rationale |
... |
... |
Medium |
| Learning Curve |
score + rationale |
... |
... |
Medium |
| Community Health |
score + rationale |
... |
... |
Low |
Scoring: 1-5 scale. Weight: High=3x, Medium=2x, Low=1x.
Per-Option Detail Block
For each option, document:
### {Layer}: {Option Name}
**Pros:**
- {Pro 1} — {evidence/source}
- {Pro 2} — {evidence/source}
- {Pro 3} — {evidence/source}
**Cons:**
- {Con 1} — {evidence/source}
- {Con 2} — {evidence/source}
**Best suited when:** {conditions}
**Not suitable when:** {conditions}
**Production examples:** {2-3 real companies using this}
Step 5: Weighted Score & Ranking
Calculate weighted total per option per layer. Present ranking:
### {Layer} Ranking
1. **{Option A}** — Score: {X}/100 — Confidence: {Y}%
2. **{Option B}** — Score: {X}/100 — Confidence: {Y}%
3. **{Option C}** — Score: {X}/100 — Confidence: {Y}%
**Recommendation:** {Option A}
**Why:** {2-3 sentence rationale linking to team skills, scale, and constraints}
Step 6: Generate Report
Write report to {plan-dir}/research/tech-stack-comparison.md with:
- Executive summary (recommended full stack in 5 lines)
- Technical requirements table (from Step 2)
- Per-layer comparison matrices (from Step 4)
- Per-layer rankings with recommendations (from Step 5)
- Combined recommended stack diagram
- Risk assessment for recommended stack
- Alternative stack (second-best combo) for comparison
- Unresolved questions
Report must be <=200 lines. Use tables over prose.
Step 7: User Validation Interview
MANDATORY IMPORTANT MUST ATTENTION present findings and ask 5-8 questions via AskUserQuestion:
Required Questions
- Per-layer recommendation confirmation — "For {layer}, I recommend {option}. Agree?"
- Options: Agree (Recommended) | Prefer {option B} | Need more research
- Risk tolerance — "The recommended stack has {risk}. Acceptable?"
- Team readiness — "Team needs to learn {X}. Training plan needed?"
- Budget alignment — "Estimated infra cost: ${X}/month. Within budget?"
- Timeline fit — "This stack enables MVP in {X} months. Acceptable?"
Optional Deep-Dive Questions (pick 2-3 based on context)
- "Should we consider {emerging tech} for {layer}?"
- "Any compliance requirements I haven't captured?"
- "Preference for managed services vs self-hosted?"
- "Monorepo or polyrepo for this team size?"
After user confirms, update report with final decisions, mark status: confirmed.
Output
{plan-dir}/research/tech-stack-comparison.md # Full comparison report
{plan-dir}/phase-02-tech-stack.md # Final confirmed tech stack decisions
MANDATORY IMPORTANT MUST ATTENTION break work into small todo tasks using TaskCreate BEFORE starting.
MANDATORY IMPORTANT MUST ATTENTION validate EVERY recommendation with user via AskUserQuestion — NEVER auto-decide.
MANDATORY IMPORTANT MUST ATTENTION include confidence % and evidence citations for all claims.
MANDATORY IMPORTANT MUST ATTENTION add a final review todo task to verify work quality.
Next Steps
MANDATORY IMPORTANT MUST ATTENTION — NO EXCEPTIONS after completing this skill, you MUST ATTENTION use AskUserQuestion to present these options. Do NOT skip because task seems "simple"/"obvious" — the user decides:
- "/architecture-design (Recommended)" — Design solution architecture with chosen tech stack
- "/plan" — If architecture already decided
- "Skip, continue manually" — user decides
Council escalation (always-offer, second prompt)
After the existing ## Next Steps prompt above resolves, present a second, independent AskUserQuestion call:
- "Skip council — proceed with chosen stack (Recommended)" — Continue with the selected tech stack as-is.
- "Escalate to /llm-council" — Run 11 sub-agent council. Best applied when 2+ stacks score within 15% on the comparison matrix or you have unfamiliar/strategic dependencies. Cheaper alternatives:
/why-review, /plan-validate.
Scenario Stress & Resilience Evaluation — CONDITIONAL, evidence-gated, business-criticality-aware. The top-down companion to SYNC:scale-technique-gate: instead of "is technique X present?", put the system UNDER concrete failure/load scenarios and judge whether it SURVIVES, SELF-HEALS, and whether its BUSINESS needs it to. ADVICE-ONLY: emit the Scenario Stress Matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail.
- Reuse the scale tier derived by
SYNC:scale-technique-gate (or derive it identically from evidence); also derive business-criticality B0–B3 from specs/SLA/product docs + the domain, cite file:line + confidence. B0 best-effort · B1 important · B2 business-critical · B3 mission-critical/regulated. Unknown → state the assumption, do NOT default to B3/T3. Criticality-signal floor (both-directions safety): regulated / PII / financial / health data, money movement, auth/identity, or legal-compliance scope raises B to at least B2 even absent SLA/SLO docs; anti-over-engineering lowers hardening ONLY when NO such signal is present. B (blast if it fails) and T (scale of load/data) are independent — a low-traffic payroll run is low-T, high-B.
- Select in-scope scenarios — only those the system's
B/T combination warrants (a B0 internal PoC skips region-loss/DR entirely; a B3/T0 regulated service still needs backups + DR by BUSINESS, not scale).
- Walk each in-scope scenario: simulate the stimulus → trace the break path → name the failure signature → answer the self-heal/recovery question (auto-recover? MTTR? manual runbook?) → name the trade-off it forces. Families: traffic spike · sustained growth · data-volume growth · write/ingest burst · dependency down/slow · instance/node loss · zone/region loss · data loss/corruption · poison-message/retry-storm · cascading failure/backpressure · cold-start/deploy-blip · clock-skew/duplicate-delivery.
- Assign one verdict per scenario:
WITHSTANDS · DEGRADES-GRACEFULLY · FAILS-HARD (→ advise only) · N/A-by-business (not warranted → skip, not a gap) · OVER-HARDENED (resilience beyond business need → advise AGAINST, cite carrying cost).
- Anti-over-engineering guard (first-class): a lean system whose business does not need HA/DR is a PASS;
OVER-HARDENED flags resilience the business does not warrant. This guard is symmetric with the criticality-signal floor above — never under-harden a B2+ system just because its traffic is low.
- Output — Scenario Stress Matrix:
scenario | in-scope (B/T)? | verdict | self-heal | trade-off | evidence (file:line/config/infra). Full catalog + Business×Scale in-scope baseline + verdict/tier tables → .claude/docs/scenario-stress-catalog.md. ADVISORY-ONLY: NEVER mutate any /20, /24, verdict band, or gate pass/fail. Drift-guard: scenarios/verdicts/business-tiers are AUTHORITATIVE in the catalog — update it FIRST, then re-run .claude/scripts/inject_scenario_stress_gate.py. Scale tier stays single-sourced in scale-technique-catalog.md.
BLOCKED until: - [ ] scale tier + business-criticality (with criticality-signal floor) derived from evidence - [ ] in-scope scenarios selected - [ ] matrix emitted - [ ] over-hardening guard applied - [ ] advisory-only (no score/verdict mutation) confirmed
Engineering Foundation Gate — CONDITIONAL, evidence-gated, profile-tiered. Judges the PROJECT'S ENGINEERING FOUNDATION: can this team build, run, test and change the system safely — anywhere, repeatably, as it grows? Its companions judge the running system's DESIGN (scale-technique-gate: is technique X present? · scenario-stress-eval: does it survive scenario Y?) — a system can score perfectly on both while nobody but its author can build it. State OUTCOMES, never tools: detect the stack, research the current ecosystem, present 2–3 options, the user decides, record the decision — best practice turns over, the outcome does not.
- Derive the project profile FIRST — from evidence, never assumed.
Lifecycle G greenfield (foundation being created) / B brownfield (foundation exists, under audit) · scale T0–T3 (reuse scale-technique-catalog.md, never re-derive) · criticality B0–B3 with its criticality-signal floor (reuse scenario-stress-catalog.md) · repo shape R0 single module / R1 few (2–5) / R2 many modules, multi-team / R3 monorepo estate · runtime surface. Cite file:line/config/CI + confidence. Unknown axis → state the assumption and take the LOWER tier; NEVER default to T3/B3/R3 — an over-stated profile turns this gate into busywork a small team correctly ignores.
- Judge all 7 dimensions — always all 7, never a filtered subset (an omitted row is indistinguishable from an overlooked one). Depth belongs to the named owner; this gate decides only present/absent:
- F1 Reproducible environment (ALL profiles — the floor) — one documented path takes a clean machine to a running system; toolchain versions pinned; dependencies locked to exact versions; every external prerequisite declared with a way to obtain or fake it; config environment-injected, never machine-implicit; build deterministic. This is what kills "works on my machine" — not carelessness, but a build depending on ambient state nobody declared. →
scaffold · architecture-scalability-review
- F2 Dual execution modes (
T1+, multi-contributor, or containerized target; B2+ regardless of scale) — the system runs on the bare host AND fully containerized from ONE source of truth for config and topology, and the suites run in BOTH directions (host-run against a containerized system, and wholly inside a container). Both modes exercised, so neither rots. Host mode buys a fast inner loop and a debugger; container mode buys CI/production parity and a trustworthy day one — a project with only one teaches people to work around it undocumented. A mode honestly dropped with a stated reason is N/A; the defect is the claimed-but-rotten mode. → scaffold · devops · production-readiness-review
- F3 Environment-portable tests (local+CI all profiles; production-shaped
T1+/B2+) — the SAME suites run against local, CI and production-like targets, parameterized by configuration, never by forked test code (only one fork ever stays maintained, so forking guarantees divergence). Missing capability reports ENVIRONMENT-BLOCKED rather than silently passing; unsafe-in-production tests are excluded by an enforced mechanism whose absence fails loudly, not by a convention someone must remember. "Runs in prod" means a safe, declared, NON-MUTATING subset. → test-architecture-execution-contract · integration-test-review
- F4 Test-strength proof (wherever tests exist) — evidence the suite actually fails when the code is wrong; a passing suite means nothing until it is known to be capable of failing for the right reason. Strongest available first: (a) automated fault injection scoped to CHANGED code — a surviving defect is a missing or vacuous assertion; gate on it where the ecosystem offers a workable tool. (b) Deliberate defect-seeding drill — the universal fallback, needing no tooling and available in every ecosystem: break the production code behind a top invariant, run the suite, record WHICH NAMED TEST went red, restore. Nothing went red ⇒ that behavior has no protection — write the killing test. (c) Assertion-intent audit: flag assertions that would still hold under an inverted implementation, that assert only non-nullness or a type, that re-assert the input, or that assert infrastructure bookkeeping instead of the outcome the system owns. Line coverage is a DIAGNOSTIC, never a gate — low coverage is a useful negative signal; high coverage is not evidence of quality, and gating on the percentage reliably produces tests written to touch lines rather than protect behavior. Scope boundary — do NOT re-litigate a solved question: this gate asks only whether the PROJECT HAS a test-strength mechanism wired into its harness at all; PER-CHANGE enforcement is already owned by
integration-test-review Gate 1's Mutation Probe Ledger (tool path + manual fallback, ledger required either way). Report the setup gap here, the assertion gap there, never both. → harness-setup (sensor design) · integration-test-review (per-change enforcement)
- F5 Performance & scale-under-data (
T1+/B2+ for a real tier; T0/B0 = one documented largest-expected-volume check) — performance MEASURED by something that RUNS and CAN FAIL, not reasoned about. The companion gates can be fully satisfied by a system that has never once been run against a large dataset; this is the executable counterpart. Requires: a runnable perf tier with a documented command (it belongs in the tier matrix); on-demand realistic volume AND realistic shape — distribution, cardinality, skew, not a million identical rows; named latency/throughput/memory budgets the run ASSERTS (a perf test that only reports numbers is a dashboard, and eventually nobody reads it); growth compared across ≥2 volumes ~10× apart, because one data point cannot distinguish O(n) from O(n²); and resource exhaustion as a tested, bounded outcome — backpressure, paging or a clean error rather than an OOM kill, with unbounded result-sets, unbounded in-memory accumulation and unbounded concurrency provably absent or bounded on the paths that matter. State whether a number is a regression signal or a capacity statement. → performance-review · seed-test-data
- F6 Build & change scalability (
R1+ declared style + boundaries; R2+ computable affected set, enforced checks, measured incrementality) — build/test cost and blast radius do NOT grow with the codebase. Every project is fast on day one; the foundation question is whether the tenth module costs what the second did. Requires: the affected module/sub-domain set is COMPUTABLE because inter-module dependencies are explicit and declared; incrementality and caching are real and measured (claimed caching that never hits is an invisible failure); boundaries enforced MECHANICALLY, since unenforced boundaries decay silently until the affected set is "everything"; a declared architecture style (modular monolith / clean / hexagonal / layered — which one matters far less than that one is declared, written down and enforced, because an undeclared style is indistinguishable from none after two years); implementation hidden behind abstraction so a technology swaps without touching business code (depth → complexity-prevention); and a fast scoped inner-loop check — if the only available check is the slow exhaustive one, that is the finding. Scope boundary: architecture-scalability-review G2 Build & CI Scalability already SCORES incremental/affected-only/caching/monorepo posture and G4 scores boundary enforcement — where that review has run, cite its verdict rather than re-scoring; this gate only confirms the dimension was examined and is not silently absent. → architecture-scalability-review (G2/G4 depth) · architecture-review (diff-level boundary drift) · complexity-prevention (cost of change in the code itself)
- F7 Mechanical quality harness (format + lint + type/static analysis + build/test at ALL profiles; architecture-fitness
R1+; dependency health + secret scanning wherever real data ships, unconditional at B2+; complexity/duplication + drift R1+/T1+) — no human reviewer spends attention on a defect class a machine could have caught; reviewer attention is the scarcest resource in the project. Account for EVERY class or record it N/A with a reason — an unlisted class is an unexamined one: formatting · lint/correctness · type & static analysis · complexity & duplication · executable architecture-fitness · dependency vulnerability & license · secret scanning · build/test gates plus the F4 signal · documentation/config drift. Local and CI must run the SAME command, configuration and version (divergence means CI failures nobody can reproduce); checks must ENFORCE, not warn (an unread warning stream is not a harness); strictest reasonable defaults, loosened only with a recorded reason, since a large silent suppression list is itself a finding; cheap checks first, expensive last. Brownfield adoption uses a ratchet — fail on NEW violations, tolerate the existing baseline — which counts as PRESENT, not partial, because it stops regression from day one. → linter-setup · harness-setup · security-review
- Assign one verdict per dimension:
PRESENT (achieved and proven by cited evidence) · MISSING-WARRANTED · PARTIAL-WITH-PATH (gap named + concrete incremental step) · N/A-by-profile (below the warranting profile — a correctly-lean project is a PASS here, never a gap; never report it as a deficiency) · OVER-ENGINEERED (present but unwarranted → advise AGAINST, name the carrying cost) · UNVERIFIED (could not be checked — say so honestly; NEVER score an unverified dimension PRESENT).
- Authority is context-split — the one place this gate differs from its two companions. CREATING a foundation (greenfield init, scaffold, a plan standing up build/test/CI) → a
MISSING-WARRANTED dimension is BLOCKING: you are choosing the foundation right now, so omitting a warranted one must be an explicit decision, not a silent default. AUDITING an existing foundation (brownfield review, architecture audit, changes review) → ADVISORY ONLY: emit the matrix plus a prioritized adoption path and NEVER mutate any score, /20, /24, verdict band, or gate PASS/FAIL. — why the split: the cost of adding a foundation is near zero at creation and high afterwards, so strictness should track that cost; blocking a review of a ten-year-old codebase on foundations it never had produces a useless report, not a better project.
- Anti-over-engineering guard (first-class, and symmetric). Do NOT demand a container mode of a single-author local utility, a distributed load-generation platform for a small internal service, affected-set computation or boundary enforcement for a single module, or four overlapping analyzers reporting one defect class (the carrying cost is noise and slow builds, and people learn to ignore the output). Splitting a small system into many modules to look modular buys a distributed monolith — the coupling survives the split while the build cost doubles; the trigger is real module and team count, never aesthetics. Symmetric with the criticality floor: never UNDER-harden a
B2+ system merely because its traffic is low.
- Every brownfield finding names the smallest next step that is valuable on its own. Seven
MISSING-WARRANTED verdicts with no first step is a demoralizing document nobody acts on. Default ladder, each rung independently valuable and making the next cheaper: pin the toolchain & commit the lockfile → make one local command that CI also runs → ratchet the harness on (fail-on-new) → run the defect-seeding drill on the top invariants → repair the missing execution mode → seed a realistic volume and assert ONE budget → declare the style, then enforce dependency direction. Deviate on evidence, and say why; what is not acceptable is a gap list with no first step.
- Output — Foundation Readiness Matrix:
dimension | warranted at this profile? | present? | verdict | evidence (file:line/config/CI) | smallest next step, preceded by the derived profile with per-axis evidence and confidence, followed by the ordered adoption path (brownfield) or the blocking list (greenfield). Full catalog — per-dimension proof lists, warranting matrix, adoption ladder → .claude/docs/engineering-foundation-catalog.md. Drift-guard: profile axes, dimensions, verdicts and warranting tiers are AUTHORITATIVE in that catalog — update it FIRST, then re-run .claude/scripts/inject_engineering_foundation_gate.py to re-propagate. Scale tier stays single-sourced in scale-technique-catalog.md; business criticality in scenario-stress-catalog.md.
BLOCKED until: - [ ] profile derived from evidence (lifecycle + T + B + R, lower tier when unknown) - [ ] all 7 dimensions judged, none omitted - [ ] matrix emitted with file:line/config/CI evidence - [ ] anti-over-engineering guard applied - [ ] authority confirmed — creating ⇒ blocking, auditing ⇒ advisory-only with no score mutation - [ ] every brownfield gap carries a smallest-next-step
IMPORTANT MUST ATTENTION scale-technique gate: derive the scale tier from evidence FIRST (T0 internal · T1 <10k · T2 10k–1M · T3 millions+), then judge each warranted technique PRESENT/MISSING-WARRANTED/N/A-by-scale/OVER-ENGINEERED. Advise on warranted-but-missing gaps AND advise AGAINST unwarranted heavyweight techniques (anti-over-engineering). ADVICE-ONLY — emit the Technique Applicability Matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail. Full catalog → .claude/docs/scale-technique-catalog.md (authoritative for tier thresholds & per-technique warranting tiers — on any change update the catalog FIRST, then re-run inject_scale_technique_gate.py).
IMPORTANT MUST ATTENTION scenario-stress gate: reuse the scale tier T0–T3 AND derive business-criticality B0–B3 from evidence first — apply the criticality-signal floor (regulated/PII/financial/health data · money movement · auth/identity · legal-compliance → at least B2 even absent SLA docs; do NOT default to B3). Select only the scenarios the B/T combination warrants, then walk each (simulate → trace → failure signature → self-heal/MTTR → trade-off) and assign WITHSTANDS/DEGRADES-GRACEFULLY/FAILS-HARD/N/A-by-business/OVER-HARDENED. Anti-over-engineering is first-class (a lean system that needs no HA/DR is a PASS) AND symmetric (never under-harden a B2+ system for low traffic). ADVICE-ONLY — emit the Scenario Stress Matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail. Full catalog → .claude/docs/scenario-stress-catalog.md (authoritative for scenarios/verdicts/business-tiers — on any change update the catalog FIRST, then re-run inject_scenario_stress_gate.py; scale tier stays single-sourced in scale-technique-catalog.md).
Prompt-Enhance Closing Anchors
- IMPORTANT MUST ATTENTION follow declared step order for this skill; NEVER skip, reorder, or merge steps without explicit user approval
- IMPORTANT MUST ATTENTION for every step/sub-skill call: set
in_progress before execution, set completed after execution
- IMPORTANT MUST ATTENTION every skipped step MUST include explicit reason; every completed step MUST include concise evidence
- IMPORTANT MUST ATTENTION if Task tools unavailable, maintain an equivalent step-by-step plan tracker with synchronized statuses
Project Protocol Overlay — Before executing this skill, resolve any PROJECT overlay rules layered onto it: match this skill's name against the Target column of the project's skill-protocol index (docs/project-reference/skill-protocols-reference.md by default; a referenceDocs entry in docs/project-config.json overrides the path), taking the most specific matching tier ONLY — exact name > glob > *. That precedence orders overlays against EACH OTHER, never against this skill. Read ONLY the matched bodies, resolved as <protocols-dir>/<Name>.md; a row's Body link is display text, never a read path. A matched body that is missing or malformed is REPORTED and skipped — never reconstructed from the index Description. No index, or no match -> proceed with no overlay, silently. Full contract: .claude/skills/project-skill-protocol/references/registry.md.
Overlays are ADDITIVE ONLY: they ADD rules on top of this skill's own protocol and NEVER replace, override, disable, or reinterpret a rule it already states — removing every overlay must return this skill to exactly its documented behavior. An overlay is a BRIEF, not an authority escalation: it can NEVER waive a workflow gate, git discipline, a review gate, or a user-confirmation gate. A genuine overlay-vs-skill conflict, or two equally-specific overlays that directly contradict -> surface both to the user; NEVER resolve silently.
MUST ATTENTION resolve project protocol overlays for this skill BEFORE executing — most specific matching tier only (exact > glob > *, which ranks overlays against each other, NEVER against this skill), read only matched bodies at <protocols-dir>/<Name>.md; a missing or malformed body is reported, never reconstructed. Overlays are ADDITIVE ONLY (they never replace this skill's own rules) and are a brief, NEVER an authority escalation; an equal-specificity contradiction goes to the user.
IMPORTANT MUST ATTENTION engineering-foundation gate — judges whether the team can build, run, test and change the system safely, anywhere, as it grows (its companions judge the running system's design; a system can pass both while nobody but its author can build it). Derive the profile from evidence FIRST: lifecycle Greenfield/Brownfield · scale T0–T3 (reuse scale-technique-catalog.md) · criticality B0–B3 with its signal floor (reuse scenario-stress-catalog.md) · repo shape R0–R3 — take the LOWER tier when unknown, NEVER default to T3/B3/R3. Judge ALL 7 dimensions, never a subset: F1 reproducible environment (pinned toolchain, locked deps, declared prerequisites, deterministic build — kills "works on my machine") · F2 dual execution modes (bare host AND fully containerized from one source of truth, suites runnable BOTH directions, both exercised so neither rots — the defect is the claimed-but-rotten mode) · F3 environment-portable tests (same suites local/CI/production-shaped, parameterized by CONFIG not forked code; missing capability ⇒ ENVIRONMENT-BLOCKED not silent pass; "runs in prod" = a safe NON-MUTATING subset) · F4 test-strength proof (automated fault injection on changed code where a tool exists, else the universal defect-seeding drill — break the code behind a top invariant, record WHICH NAMED TEST went red, restore; nothing red ⇒ no protection. Line coverage is a DIAGNOSTIC, never a gate) · F5 performance measured by something that RUNS and CAN FAIL (realistic volume AND shape, asserted budgets not a dashboard, ≥2 volumes ~10× apart to expose super-linear growth, resource exhaustion bounded rather than an OOM kill) · F6 build & change scalability (computable affected set, measured incrementality, mechanically enforced boundaries, a declared architecture style, implementation hidden behind abstraction) · F7 mechanical harness completeness (every machine-catchable class accounted for or N/A; local and CI run the SAME command; checks ENFORCE, not warn; brownfield uses a fail-on-new ratchet). Verdicts: PRESENT/MISSING-WARRANTED/PARTIAL-WITH-PATH/N/A-by-profile/OVER-ENGINEERED/UNVERIFIED. Authority splits — CREATING a foundation ⇒ MISSING-WARRANTED is BLOCKING; AUDITING one ⇒ ADVISORY ONLY, never mutating any score, verdict band or PASS/FAIL. Anti-over-engineering is first-class and symmetric (a correctly-lean project is a PASS; never under-harden a B2+ system for low traffic). Every brownfield gap names the smallest next step. State OUTCOMES, never tools. Full catalog → .claude/docs/engineering-foundation-catalog.md (authoritative — update it FIRST, then re-run inject_engineering_foundation_gate.py).
Closing Reminders
IMPORTANT MUST ATTENTION Goal: deliver user-confirmed, per-layer tech stack — each choice backed by 3+ researched options, weighted 8-criteria scoring, cited evidence, confidence % — so team commits to a stack fit for scale, budget, skills, timeline, NOT familiarity.
IMPORTANT MUST ATTENTION — run ALL 7 steps in declared order, none skipped: (1) Load Business Context → (2) Derive Technical Requirements (+ AskUserQuestion confirm) → (3) Research Per Layer (WebSearch 3+ options each) → (4) Deep Comparison Matrix → (5) Weighted Score & Ranking (confidence %) → (6) Generate Report (<=200 lines) → (7) User Validation Interview (5-8 questions, write status: confirmed) — why: AI keeps collapsing this into "just pick a stack" and dropping requirements-derivation, scoring, and the confirmation gate that make the choice defensible.
Protocols in force (concise digest of the SYNC/shared blocks this skill carries):
- Critical Thinking: MUST ATTENTION apply critical + sequential thinking; traced proof, confidence >80% to act, NEVER guess as fact.
- AI Mistake Prevention: verify generated content against evidence, trace downstream references, verify all affected outputs, re-read after context loss, surface ambiguity.
IMPORTANT MUST ATTENTION research minimum 3 WebSearched options per stack layer (backend, frontend, database, messaging, infra, auth); every recommendation carries confidence % + cited evidence (URL, benchmark, case study) — NEVER recommend on familiarity alone — why: familiarity bias commits the team to the wrong stack that surfaces only at scale.
IMPORTANT MUST ATTENTION gate on user via AskUserQuestion at EVERY decision point — confirm derived requirements before research (Step 2), confirm each layer recommendation in the end interview (Step 7) — NEVER auto-decide — why: the team owns the stack, not the AI.
MANDATORY IMPORTANT MUST ATTENTION break work into small todo tasks using TaskCreate BEFORE starting; mark one in_progress, completed immediately after evidence; add a final review todo.
Scalability & Production-Readiness Technique Gate — CONDITIONAL, evidence-gated, scale-tiered. Judge which system-design techniques a system warrants at its scale — flag warranted-but-missing gaps AND advise AGAINST unwarranted heavyweight ones. ADVICE-ONLY: emit the matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail.
- Derive the scale tier FIRST — from evidence, never assumed. Read users/RPS, SLO/latency targets, data volume, tenancy, topology from config/infra/specs; cite
file:line + confidence. Tiers: T0 internal/single-instance · T1 small SaaS (<10k users) · T2 high-scale (10k–1M) · T3 massive/multi-region (millions+). Unknown tier → state assumption, do NOT default to T3.
- Judge each concern group only at/above its warranting tier (member techniques → owning review skill for depth):
- Traffic & Edge — Rate Limiting, Load Balancing, Reverse Proxy, API Gateway, CDN, Edge Caching, WAF, DDoS (T1+; CDN/WAF T2+) → security-review owns WAF/DDoS
- Caching & Data Access — Caching, Cache Invalidation, DB Indexing, Query Optimization, N+1, Connection Pooling (T1+) → performance-review owns depth
- Data Scaling & Consistency — Read Replicas, Sharding, Partitioning, Replication, CAP, Eventual Consistency, Locks, Leader Election (T2+; sharding/multi-region T3) → performance-review
- Async & Messaging — Message Queues, Pub/Sub, Event-Driven, Saga, DLQ, Distributed Transactions, Backpressure, Webhooks, WebSockets/SSE (T2+)
- Resilience — Circuit Breakers, Timeouts, Retries, Backoff, Idempotency, Health Checks, Liveness/Readiness, Failover, Graceful Degradation (T1+) → production-readiness-review
- Scaling & Compute — Autoscaling, Horizontal/Vertical Scaling, Serverless Limits, Cold Starts,
…(truncated)
1---2name: tech-stack-research-23description: [Architecture] Use when researching and comparing tech stack options as a solution architect.4---56<!-- PROMPT-ENHANCE:STEP-TASK-ANCHOR:START -->78> **[BLOCKING]** Execute skill steps in declared order. NEVER skip, reorder, or merge steps without explicit user approval.9> **[BLOCKING]** Before each step or sub-skill call, update task tracking: set `in_progress` when step starts, set `completed` when step ends.10> **[BLOCKING]** Every completed/skipped step MUST include brief evidence or explicit skip reason.11> **[BLOCKING]** If Task tools are unavailable, create and maintain an equivalent step-by-step plan tracker with the same status transitions.1213<!-- PROMPT-ENHANCE:STEP-TASK-ANCHOR:END -->1415## Quick Summary1617**Goal:** Deliver user-confirmed, per-layer tech stack — each choice backed by 3+ researched options, weighted scoring, cited evidence, confidence % — by acting as solution architect: derive technical requirements from business analysis, research current market, produce detailed comparison report, so team commits to stack fit for scale, budget, skills, timeline, NOT familiarity.1819**Summary:**2021- **Purpose:** act as solution architect — derive technical requirements from business analysis, research current market, produce per-layer comparison report so team commits to stack fit for scale/budget/skills/timeline, NOT familiarity.22- **All 7 main steps (run in order):** (1) Load Business Context → (2) Derive Technical Requirements + user-confirm → (3) Research Per Layer (WebSearch 3+ options each) → (4) Deep Comparison Matrix → (5) Weighted Score & Ranking → (6) Generate Report → (7) User Validation Interview.23- Requirements BEFORE research: load prior business/domain/PBI artifacts (Step 1), map business signals → technical requirements (Step 2), gate on user confirmation (`AskUserQuestion`) before any WebSearch (Step 3).24- Evaluate every stack layer (backend, frontend, database, messaging, infra, auth) independently — minimum 3 WebSearched options per layer, each with cited evidence (URL, benchmark, case study), NEVER familiarity (Steps 3-4).25- Score with weighted 8-criteria matrix (High=3x / Medium=2x / Low=1x), rank each layer with confidence %; capped <=200-line report → `{plan-dir}/research/tech-stack-comparison.md` (Steps 5-6).26- End-of-skill user validation interview (5-8 questions) mandatory, NEVER skipped — only confirmed decisions written to `phase-02-tech-stack.md` as `status: confirmed` (Step 7).2728**Workflow:**29301. **Load Business Context** — Read business evaluation, domain model, refined PBI artifacts312. **Derive Technical Requirements** — Map business needs to technical constraints323. **Research Per Layer** — WebSearch top 3 options for each stack responsibility334. **Deep Compare** — Pros/cons matrix, benchmarks, community health, team fit345. **Score & Rank** — Weighted scoring across 8 criteria356. **Generate Report** — Structured comparison report with recommendation367. **User Validation** — Present findings, ask 5-8 questions, confirm choices3738**Key Rules:**3940- **MANDATORY IMPORTANT MUST ATTENTION** research minimum 3 options per stack layer41- **MANDATORY IMPORTANT MUST ATTENTION** include confidence % with evidence for every recommendation42- **MANDATORY IMPORTANT MUST ATTENTION** run user validation interview at end (NEVER skip)43- All claims must cite sources (URL, benchmark, case study)44- Recommend on benchmarked evidence (URL, benchmark, case study); NEVER on familiarity alone4546**Be skeptical. Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence percentages (Idea should be more than 80%).**4748## Step 1: Load Business Context4950Read artifacts from prior workflow steps (search `plans/`, `team-artifacts/`):5152- Business evaluation report (viability, scale, constraints)53- Domain model / ERD (complexity, entity count, relationships)54- Refined PBI (acceptance criteria, scope)55- Discovery interview notes (team skills, budget, timeline)5657Extract and summarize:5859| Signal | Value | Source |60| ---------------------- | ------------ | ------------------- |61| Expected users | ... | discovery interview |62| Domain complexity | Low/Med/High | domain model |63| Team skills | ... | discovery interview |64| Budget constraint | ... | business evaluation |65| Timeline | ... | business evaluation |66| Compliance needs | ... | business evaluation |67| Real-time needs | Yes/No | refined PBI |68| Integration complexity | Low/Med/High | domain model |6970## Step 2: Derive Technical Requirements7172Map business signals to technical requirements:7374| Business Signal | Technical Requirement | Priority |75| ------------------ | ----------------------------------------------- | -------- |76| High user scale | Horizontal scaling, connection pooling | Must |77| Complex domain | Strong type system, ORM with migrations | Must |78| Real-time features | WebSocket/SSE support, event-driven arch | Must |79| Small team | Low learning curve, good DX, batteries-included | Should |80| Tight budget | Open-source, low hosting cost | Should |81| Compliance | Audit trail, encryption, auth framework | Must |8283**MANDATORY IMPORTANT MUST ATTENTION** validate derived requirements with user via `AskUserQuestion` before proceeding to research.8485## Step 3: Research Per Stack Layer8687For EACH layer, research top 3 options via WebSearch (minimum 5 queries total):8889### Stack Layers to Evaluate9091| Layer | Example Options | Research Focus |92| ---------------------- | ------------------------------- | ------------------------------------- |93| **Backend Framework** | Candidate backend runtimes/frameworks | Performance, type safety, ecosystem |94| **Frontend Framework** | Candidate frontend frameworks | DX, ecosystem, hiring, enterprise fit |95| **Database** | Candidate database engines/stores | Scale, query complexity, cost |96| **Messaging/Events** | Candidate messaging/event systems | Throughput, reliability, complexity |97| **Infrastructure** | Docker+K8s, Serverless, PaaS | Cost, ops overhead, scaling |98| **Auth** | Keycloak, Auth0, custom | Cost, compliance, flexibility |99100### WebSearch Queries (minimum 5 per layer)101102```103"{option_A} vs {option_B} {current_year} comparison"104"{option} enterprise production case studies"105"{option} community size github stars"106"{option} performance benchmarks {use_case}"107"{option} security track record vulnerabilities"108```109110## Step 4: Deep Comparison Matrix111112For EACH stack layer, produce comparison table:113114| Criteria | Option A | Option B | Option C | Weight |115| -------------------- | ----------------- | -------- | -------- | ------ |116| **Team Fit** | score + rationale | ... | ... | High |117| **Scalability** | score + rationale | ... | ... | High |118| **Time-to-Market** | score + rationale | ... | ... | High |119| **Ecosystem/Libs** | score + rationale | ... | ... | Medium |120| **Hiring Market** | score + rationale | ... | ... | Medium |121| **Cost (hosting)** | score + rationale | ... | ... | Medium |122| **Learning Curve** | score + rationale | ... | ... | Medium |123| **Community Health** | score + rationale | ... | ... | Low |124125Scoring: 1-5 scale. Weight: High=3x, Medium=2x, Low=1x.126127### Per-Option Detail Block128129For each option, document:130131```markdown132### {Layer}: {Option Name}133134**Pros:**135136- {Pro 1} — {evidence/source}137- {Pro 2} — {evidence/source}138- {Pro 3} — {evidence/source}139140**Cons:**141142- {Con 1} — {evidence/source}143- {Con 2} — {evidence/source}144145**Best suited when:** {conditions}146**Not suitable when:** {conditions}147**Production examples:** {2-3 real companies using this}148```149150## Step 5: Weighted Score & Ranking151152Calculate weighted total per option per layer. Present ranking:153154```markdown155### {Layer} Ranking1561571. **{Option A}** — Score: {X}/100 — Confidence: {Y}%1582. **{Option B}** — Score: {X}/100 — Confidence: {Y}%1593. **{Option C}** — Score: {X}/100 — Confidence: {Y}%160161**Recommendation:** {Option A}162**Why:** {2-3 sentence rationale linking to team skills, scale, and constraints}163```164165## Step 6: Generate Report166167Write report to `{plan-dir}/research/tech-stack-comparison.md` with:1681691. Executive summary (recommended full stack in 5 lines)1702. Technical requirements table (from Step 2)1713. Per-layer comparison matrices (from Step 4)1724. Per-layer rankings with recommendations (from Step 5)1735. Combined recommended stack diagram1746. Risk assessment for recommended stack1757. Alternative stack (second-best combo) for comparison1768. Unresolved questions177178Report must be **<=200 lines**. Use tables over prose.179180## Step 7: User Validation Interview181182**MANDATORY IMPORTANT MUST ATTENTION** present findings and ask 5-8 questions via `AskUserQuestion`:183184### Required Questions1851861. **Per-layer recommendation confirmation** — "For {layer}, I recommend {option}. Agree?"187 - Options: Agree (Recommended) | Prefer {option B} | Need more research1882. **Risk tolerance** — "The recommended stack has {risk}. Acceptable?"1893. **Team readiness** — "Team needs to learn {X}. Training plan needed?"1904. **Budget alignment** — "Estimated infra cost: ${X}/month. Within budget?"1915. **Timeline fit** — "This stack enables MVP in {X} months. Acceptable?"192193### Optional Deep-Dive Questions (pick 2-3 based on context)194195- "Should we consider {emerging tech} for {layer}?"196- "Any compliance requirements I haven't captured?"197- "Preference for managed services vs self-hosted?"198- "Monorepo or polyrepo for this team size?"199200After user confirms, update report with final decisions, mark `status: confirmed`.201202## Output203204```205{plan-dir}/research/tech-stack-comparison.md # Full comparison report206{plan-dir}/phase-02-tech-stack.md # Final confirmed tech stack decisions207```208209---210211**MANDATORY IMPORTANT MUST ATTENTION** break work into small todo tasks using `TaskCreate` BEFORE starting.212**MANDATORY IMPORTANT MUST ATTENTION** validate EVERY recommendation with user via `AskUserQuestion` — NEVER auto-decide.213**MANDATORY IMPORTANT MUST ATTENTION** include confidence % and evidence citations for all claims.214**MANDATORY IMPORTANT MUST ATTENTION** add a final review todo task to verify work quality.215216---217218## Next Steps219220**MANDATORY IMPORTANT MUST ATTENTION — NO EXCEPTIONS** after completing this skill, you MUST ATTENTION use `AskUserQuestion` to present these options. Do NOT skip because task seems "simple"/"obvious" — the user decides:221222- **"/architecture-design (Recommended)"** — Design solution architecture with chosen tech stack223- **"/plan"** — If architecture already decided224- **"Skip, continue manually"** — user decides225226### Council escalation (always-offer, second prompt)227228After the existing `## Next Steps` prompt above resolves, present a **second**, independent `AskUserQuestion` call:229230- **"Skip council — proceed with chosen stack (Recommended)"** — Continue with the selected tech stack as-is.231- **"Escalate to /llm-council"** — Run 11 sub-agent council. Best applied when 2+ stacks score within 15% on the comparison matrix or you have unfamiliar/strategic dependencies. Cheaper alternatives: `/why-review`, `/plan-validate`.232233<!-- SYNC:scenario-stress-eval -->234235> **Scenario Stress & Resilience Evaluation** — CONDITIONAL, evidence-gated, business-criticality-aware. The top-down companion to `SYNC:scale-technique-gate`: instead of *"is technique X present?"*, put the system UNDER concrete failure/load scenarios and judge whether it SURVIVES, SELF-HEALS, and whether its BUSINESS needs it to. **ADVICE-ONLY: emit the Scenario Stress Matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail.**236>237> 1. **Reuse the scale tier** derived by `SYNC:scale-technique-gate` (or derive it identically from evidence); **also derive business-criticality `B0`–`B3`** from specs/SLA/product docs + the domain, cite `file:line` + confidence. `B0` best-effort · `B1` important · `B2` business-critical · `B3` mission-critical/regulated. Unknown → state the assumption, do **NOT** default to `B3`/`T3`. **Criticality-signal floor (both-directions safety):** regulated / PII / financial / health data, money movement, auth/identity, or legal-compliance scope raises `B` to **at least `B2` even absent SLA/SLO docs**; anti-over-engineering lowers hardening ONLY when NO such signal is present. `B` (blast if it fails) and `T` (scale of load/data) are independent — a low-traffic payroll run is low-`T`, high-`B`.238> 2. **Select in-scope scenarios** — only those the system's `B`/`T` combination warrants (a `B0` internal PoC skips region-loss/DR entirely; a `B3`/`T0` regulated service still needs backups + DR by BUSINESS, not scale).239> 3. **Walk each in-scope scenario:** simulate the stimulus → trace the break path → name the failure signature → answer the self-heal/recovery question (auto-recover? MTTR? manual runbook?) → name the trade-off it forces. Families: traffic spike · sustained growth · data-volume growth · write/ingest burst · dependency down/slow · instance/node loss · zone/region loss · **data loss/corruption** · poison-message/retry-storm · cascading failure/backpressure · cold-start/deploy-blip · clock-skew/duplicate-delivery.240> 4. **Assign one verdict per scenario:** `WITHSTANDS` · `DEGRADES-GRACEFULLY` · `FAILS-HARD` (→ **advise only**) · `N/A-by-business` (not warranted → skip, not a gap) · `OVER-HARDENED` (resilience beyond business need → **advise AGAINST**, cite carrying cost).241> 5. **Anti-over-engineering guard (first-class):** a lean system whose business does not need HA/DR is a PASS; `OVER-HARDENED` flags resilience the business does not warrant. This guard is symmetric with the criticality-signal floor above — never under-harden a `B2`+ system just because its traffic is low.242> 6. **Output — Scenario Stress Matrix:** `scenario | in-scope (B/T)? | verdict | self-heal | trade-off | evidence (file:line/config/infra)`. Full catalog + Business×Scale in-scope baseline + verdict/tier tables → `.claude/docs/scenario-stress-catalog.md`. **ADVISORY-ONLY: NEVER mutate any `/20`, `/24`, verdict band, or gate pass/fail. Drift-guard: scenarios/verdicts/business-tiers are AUTHORITATIVE in the catalog — update it FIRST, then re-run `.claude/scripts/inject_scenario_stress_gate.py`. Scale tier stays single-sourced in `scale-technique-catalog.md`.**243>244> **BLOCKED until:** `- [ ]` scale tier + business-criticality (with criticality-signal floor) derived from evidence `- [ ]` in-scope scenarios selected `- [ ]` matrix emitted `- [ ]` over-hardening guard applied `- [ ]` advisory-only (no score/verdict mutation) confirmed245246<!-- /SYNC:scenario-stress-eval -->247248<!-- SYNC:engineering-foundation-gate -->249250> **Engineering Foundation Gate** — CONDITIONAL, evidence-gated, profile-tiered. Judges the PROJECT'S ENGINEERING FOUNDATION: _can this team build, run, test and change the system safely — anywhere, repeatably, as it grows?_ Its companions judge the running system's DESIGN (`scale-technique-gate`: is technique X present? · `scenario-stress-eval`: does it survive scenario Y?) — a system can score perfectly on both while nobody but its author can build it. **State OUTCOMES, never tools:** detect the stack, research the current ecosystem, present 2–3 options, the user decides, record the decision — best practice turns over, the outcome does not.251>252> 1. **Derive the project profile FIRST — from evidence, never assumed.** `Lifecycle` **G** greenfield (foundation being created) / **B** brownfield (foundation exists, under audit) · scale `T0`–`T3` (**reuse** `scale-technique-catalog.md`, never re-derive) · criticality `B0`–`B3` with its criticality-signal floor (**reuse** `scenario-stress-catalog.md`) · repo shape `R0` single module / `R1` few (2–5) / `R2` many modules, multi-team / `R3` monorepo estate · runtime surface. Cite `file:line`/config/CI + confidence. Unknown axis → state the assumption and take the **LOWER** tier; NEVER default to `T3`/`B3`/`R3` — an over-stated profile turns this gate into busywork a small team correctly ignores.253> 2. **Judge all 7 dimensions — always all 7, never a filtered subset** (an omitted row is indistinguishable from an overlooked one). Depth belongs to the named owner; this gate decides only present/absent:254> - **F1 Reproducible environment** (ALL profiles — the floor) — one documented path takes a clean machine to a running system; toolchain versions pinned; dependencies locked to exact versions; every external prerequisite declared with a way to obtain or fake it; config environment-injected, never machine-implicit; build deterministic. This is what kills _"works on my machine"_ — not carelessness, but a build depending on ambient state nobody declared. → `scaffold` · `architecture-scalability-review`255> - **F2 Dual execution modes** (`T1+`, multi-contributor, or containerized target; `B2+` regardless of scale) — the system runs on the **bare host** AND **fully containerized** from ONE source of truth for config and topology, and the suites run in BOTH directions (host-run against a containerized system, and wholly inside a container). Both modes **exercised**, so neither rots. Host mode buys a fast inner loop and a debugger; container mode buys CI/production parity and a trustworthy day one — a project with only one teaches people to work around it undocumented. A mode honestly dropped with a stated reason is `N/A`; the defect is the **claimed-but-rotten** mode. → `scaffold` · `devops` · `production-readiness-review`256> - **F3 Environment-portable tests** (local+CI all profiles; production-shaped `T1+`/`B2+`) — the SAME suites run against local, CI and production-like targets, **parameterized by configuration, never by forked test code** (only one fork ever stays maintained, so forking guarantees divergence). Missing capability reports `ENVIRONMENT-BLOCKED` rather than silently passing; unsafe-in-production tests are excluded by an **enforced** mechanism whose absence fails loudly, not by a convention someone must remember. _"Runs in prod"_ means a safe, declared, **NON-MUTATING** subset. → `test-architecture-execution-contract` · `integration-test-review`257> - **F4 Test-strength proof** (wherever tests exist) — evidence the suite **actually fails when the code is wrong**; a passing suite means nothing until it is known to be capable of failing for the right reason. Strongest available first: (a) **automated fault injection** scoped to CHANGED code — a surviving defect is a missing or vacuous assertion; gate on it where the ecosystem offers a workable tool. (b) **Deliberate defect-seeding drill — the universal fallback, needing no tooling and available in every ecosystem:** break the production code behind a top invariant, run the suite, record **WHICH NAMED TEST went red**, restore. Nothing went red ⇒ that behavior has no protection — write the killing test. (c) **Assertion-intent audit:** flag assertions that would still hold under an inverted implementation, that assert only non-nullness or a type, that re-assert the input, or that assert infrastructure bookkeeping instead of the outcome the system owns. **Line coverage is a DIAGNOSTIC, never a gate** — low coverage is a useful negative signal; high coverage is not evidence of quality, and gating on the percentage reliably produces tests written to touch lines rather than protect behavior. **Scope boundary — do NOT re-litigate a solved question:** this gate asks only whether the PROJECT HAS a test-strength mechanism wired into its harness at all; PER-CHANGE enforcement is already owned by `integration-test-review` Gate 1's Mutation Probe Ledger (tool path + manual fallback, ledger required either way). Report the setup gap here, the assertion gap there, never both. → `harness-setup` (sensor design) · `integration-test-review` (per-change enforcement)258> - **F5 Performance & scale-under-data** (`T1+`/`B2+` for a real tier; `T0`/`B0` = one documented largest-expected-volume check) — performance **MEASURED by something that RUNS and CAN FAIL**, not reasoned about. The companion gates can be fully satisfied by a system that has never once been run against a large dataset; this is the executable counterpart. Requires: a runnable perf tier with a documented command (it belongs in the tier matrix); on-demand **realistic volume AND realistic shape** — distribution, cardinality, skew, not a million identical rows; **named latency/throughput/memory budgets the run ASSERTS** (a perf test that only reports numbers is a dashboard, and eventually nobody reads it); growth compared across **≥2 volumes ~10× apart**, because one data point cannot distinguish O(n) from O(n²); and resource exhaustion as a **tested, bounded** outcome — backpressure, paging or a clean error rather than an OOM kill, with unbounded result-sets, unbounded in-memory accumulation and unbounded concurrency provably absent or bounded on the paths that matter. State whether a number is a regression signal or a capacity statement. → `performance-review` · `seed-test-data`259> - **F6 Build & change scalability** (`R1+` declared style + boundaries; `R2+` computable affected set, enforced checks, measured incrementality) — build/test cost and blast radius **do NOT grow with the codebase**. Every project is fast on day one; the foundation question is whether the tenth module costs what the second did. Requires: the affected module/sub-domain set is **COMPUTABLE** because inter-module dependencies are explicit and declared; incrementality and caching are real and **measured** (claimed caching that never hits is an invisible failure); boundaries enforced **MECHANICALLY**, since unenforced boundaries decay silently until the affected set is "everything"; a **declared** architecture style (modular monolith / clean / hexagonal / layered — which one matters far less than that one is declared, written down and enforced, because an undeclared style is indistinguishable from none after two years); implementation hidden behind abstraction so a technology swaps without touching business code (depth → `complexity-prevention`); and a fast scoped inner-loop check — if the only available check is the slow exhaustive one, that is the finding. **Scope boundary:** `architecture-scalability-review` **G2 Build & CI Scalability** already SCORES incremental/affected-only/caching/monorepo posture and **G4** scores boundary enforcement — where that review has run, cite its verdict rather than re-scoring; this gate only confirms the dimension was examined and is not silently absent. → `architecture-scalability-review` (G2/G4 depth) · `architecture-review` (diff-level boundary drift) · `complexity-prevention` (cost of change in the code itself)260> - **F7 Mechanical quality harness** (format + lint + type/static analysis + build/test at ALL profiles; architecture-fitness `R1+`; dependency health + secret scanning wherever real data ships, unconditional at `B2+`; complexity/duplication + drift `R1+`/`T1+`) — no human reviewer spends attention on a defect class a machine could have caught; reviewer attention is the scarcest resource in the project. **Account for EVERY class or record it `N/A` with a reason** — an unlisted class is an unexamined one: formatting · lint/correctness · type & static analysis · complexity & duplication · **executable architecture-fitness** · dependency vulnerability & license · secret scanning · build/test gates plus the **F4** signal · documentation/config drift. Local and CI must run the **SAME** command, configuration and version (divergence means CI failures nobody can reproduce); checks must **ENFORCE**, not warn (an unread warning stream is not a harness); strictest reasonable defaults, loosened only with a recorded reason, since a large silent suppression list is itself a finding; cheap checks first, expensive last. Brownfield adoption uses a **ratchet** — fail on NEW violations, tolerate the existing baseline — which counts as `PRESENT`, not partial, because it stops regression from day one. → `linter-setup` · `harness-setup` · `security-review`261> 3. **Assign one verdict per dimension:** `PRESENT` (achieved and proven by cited evidence) · `MISSING-WARRANTED` · `PARTIAL-WITH-PATH` (gap named + concrete incremental step) · `N/A-by-profile` (below the warranting profile — **a correctly-lean project is a PASS here, never a gap; never report it as a deficiency**) · `OVER-ENGINEERED` (present but unwarranted → advise AGAINST, name the carrying cost) · `UNVERIFIED` (could not be checked — say so honestly; **NEVER score an unverified dimension `PRESENT`**).262> 4. **Authority is context-split — the one place this gate differs from its two companions.** **CREATING** a foundation (greenfield init, scaffold, a plan standing up build/test/CI) → a `MISSING-WARRANTED` dimension is **BLOCKING**: you are choosing the foundation right now, so omitting a warranted one must be an explicit decision, not a silent default. **AUDITING** an existing foundation (brownfield review, architecture audit, changes review) → **ADVISORY ONLY**: emit the matrix plus a prioritized adoption path and **NEVER mutate any score, `/20`, `/24`, verdict band, or gate PASS/FAIL**. — why the split: the cost of adding a foundation is near zero at creation and high afterwards, so strictness should track that cost; blocking a review of a ten-year-old codebase on foundations it never had produces a useless report, not a better project.263> 5. **Anti-over-engineering guard (first-class, and symmetric).** Do NOT demand a container mode of a single-author local utility, a distributed load-generation platform for a small internal service, affected-set computation or boundary enforcement for a single module, or four overlapping analyzers reporting one defect class (the carrying cost is noise and slow builds, and people learn to ignore the output). Splitting a small system into many modules to _look_ modular buys a distributed monolith — the coupling survives the split while the build cost doubles; the trigger is real module and team count, never aesthetics. Symmetric with the criticality floor: never UNDER-harden a `B2+` system merely because its traffic is low.264> 6. **Every brownfield finding names the smallest next step that is valuable on its own.** Seven `MISSING-WARRANTED` verdicts with no first step is a demoralizing document nobody acts on. Default ladder, each rung independently valuable and making the next cheaper: pin the toolchain & commit the lockfile → make one local command that CI also runs → ratchet the harness on (fail-on-new) → run the defect-seeding drill on the top invariants → repair the missing execution mode → seed a realistic volume and assert ONE budget → declare the style, then enforce dependency direction. Deviate on evidence, and say why; what is not acceptable is a gap list with no first step.265> 7. **Output — Foundation Readiness Matrix:** `dimension | warranted at this profile? | present? | verdict | evidence (file:line/config/CI) | smallest next step`, preceded by the derived profile with per-axis evidence and confidence, followed by the ordered adoption path (brownfield) or the blocking list (greenfield). Full catalog — per-dimension proof lists, warranting matrix, adoption ladder → `.claude/docs/engineering-foundation-catalog.md`. **Drift-guard: profile axes, dimensions, verdicts and warranting tiers are AUTHORITATIVE in that catalog — update it FIRST, then re-run `.claude/scripts/inject_engineering_foundation_gate.py` to re-propagate. Scale tier stays single-sourced in `scale-technique-catalog.md`; business criticality in `scenario-stress-catalog.md`.**266>267> **BLOCKED until:** `- [ ]` profile derived from evidence (lifecycle + `T` + `B` + `R`, lower tier when unknown) `- [ ]` all 7 dimensions judged, none omitted `- [ ]` matrix emitted with `file:line`/config/CI evidence `- [ ]` anti-over-engineering guard applied `- [ ]` authority confirmed — creating ⇒ blocking, auditing ⇒ advisory-only with no score mutation `- [ ]` every brownfield gap carries a smallest-next-step268269<!-- /SYNC:engineering-foundation-gate -->270271<!-- SYNC:scale-technique-gate:reminder -->272273**IMPORTANT MUST ATTENTION** scale-technique gate: derive the scale tier from evidence FIRST (T0 internal · T1 <10k · T2 10k–1M · T3 millions+), then judge each warranted technique `PRESENT`/`MISSING-WARRANTED`/`N/A-by-scale`/`OVER-ENGINEERED`. Advise on warranted-but-missing gaps AND advise AGAINST unwarranted heavyweight techniques (anti-over-engineering). **ADVICE-ONLY — emit the Technique Applicability Matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail.** Full catalog → `.claude/docs/scale-technique-catalog.md` (authoritative for tier thresholds & per-technique warranting tiers — on any change update the catalog FIRST, then re-run `inject_scale_technique_gate.py`).274275<!-- /SYNC:scale-technique-gate:reminder -->276277<!-- SYNC:scenario-stress-eval:reminder -->278279**IMPORTANT MUST ATTENTION** scenario-stress gate: reuse the scale tier `T0`–`T3` AND derive business-criticality `B0`–`B3` from evidence first — apply the **criticality-signal floor** (regulated/PII/financial/health data · money movement · auth/identity · legal-compliance → at least `B2` even absent SLA docs; do NOT default to `B3`). Select only the scenarios the `B`/`T` combination warrants, then walk each (simulate → trace → failure signature → self-heal/MTTR → trade-off) and assign `WITHSTANDS`/`DEGRADES-GRACEFULLY`/`FAILS-HARD`/`N/A-by-business`/`OVER-HARDENED`. Anti-over-engineering is first-class (a lean system that needs no HA/DR is a PASS) AND symmetric (never under-harden a `B2`+ system for low traffic). **ADVICE-ONLY — emit the Scenario Stress Matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail.** Full catalog → `.claude/docs/scenario-stress-catalog.md` (authoritative for scenarios/verdicts/business-tiers — on any change update the catalog FIRST, then re-run `inject_scenario_stress_gate.py`; scale tier stays single-sourced in `scale-technique-catalog.md`).280281<!-- /SYNC:scenario-stress-eval:reminder -->282283<!-- PROMPT-ENHANCE:STEP-TASK-CLOSING:START -->284285## Prompt-Enhance Closing Anchors286287- **IMPORTANT MUST ATTENTION** follow declared step order for this skill; NEVER skip, reorder, or merge steps without explicit user approval288- **IMPORTANT MUST ATTENTION** for every step/sub-skill call: set `in_progress` before execution, set `completed` after execution289- **IMPORTANT MUST ATTENTION** every skipped step MUST include explicit reason; every completed step MUST include concise evidence290- **IMPORTANT MUST ATTENTION** if Task tools unavailable, maintain an equivalent step-by-step plan tracker with synchronized statuses291292<!-- PROMPT-ENHANCE:STEP-TASK-CLOSING:END -->293294<!-- SYNC:project-protocol-overlay -->295296> **Project Protocol Overlay** — Before executing this skill, resolve any PROJECT overlay rules layered onto it: match this skill's name against the `Target` column of the project's skill-protocol index (`docs/project-reference/skill-protocols-reference.md` by default; a `referenceDocs` entry in `docs/project-config.json` overrides the path), taking the most specific matching tier ONLY — exact name > glob > `*`. **That precedence orders overlays against EACH OTHER, never against this skill.** Read ONLY the matched bodies, resolved as `<protocols-dir>/<Name>.md`; a row's Body link is display text, never a read path. A matched body that is missing or malformed is REPORTED and skipped — never reconstructed from the index Description. No index, or no match -> proceed with no overlay, silently. Full contract: `.claude/skills/project-skill-protocol/references/registry.md`.297>298> Overlays are **ADDITIVE ONLY**: they ADD rules on top of this skill's own protocol and NEVER replace, override, disable, or reinterpret a rule it already states — removing every overlay must return this skill to exactly its documented behavior. An overlay is a BRIEF, not an authority escalation: it can NEVER waive a workflow gate, git discipline, a review gate, or a user-confirmation gate. A genuine overlay-vs-skill conflict, or two equally-specific overlays that directly contradict -> surface both to the user; NEVER resolve silently.299300<!-- /SYNC:project-protocol-overlay -->301302<!-- SYNC:project-protocol-overlay:reminder -->303304**MUST ATTENTION** resolve project protocol overlays for this skill BEFORE executing — most specific matching tier only (exact > glob > `*`, which ranks overlays against each other, NEVER against this skill), read only matched bodies at `<protocols-dir>/<Name>.md`; a missing or malformed body is reported, never reconstructed. Overlays are ADDITIVE ONLY (they never replace this skill's own rules) and are a brief, NEVER an authority escalation; an equal-specificity contradiction goes to the user.305306<!-- /SYNC:project-protocol-overlay:reminder -->307308<!-- SYNC:engineering-foundation-gate:reminder -->309310**IMPORTANT MUST ATTENTION** engineering-foundation gate — judges whether the team can **build, run, test and change** the system safely, anywhere, as it grows (its companions judge the running system's design; a system can pass both while nobody but its author can build it). Derive the profile from evidence FIRST: lifecycle **G**reenfield/**B**rownfield · scale `T0`–`T3` (reuse `scale-technique-catalog.md`) · criticality `B0`–`B3` with its signal floor (reuse `scenario-stress-catalog.md`) · repo shape `R0`–`R3` — take the **LOWER** tier when unknown, NEVER default to `T3`/`B3`/`R3`. Judge **ALL 7** dimensions, never a subset: **F1** reproducible environment (pinned toolchain, locked deps, declared prerequisites, deterministic build — kills _"works on my machine"_) · **F2** dual execution modes (bare host AND fully containerized from one source of truth, suites runnable BOTH directions, both exercised so neither rots — the defect is the claimed-but-rotten mode) · **F3** environment-portable tests (same suites local/CI/production-shaped, parameterized by CONFIG not forked code; missing capability ⇒ `ENVIRONMENT-BLOCKED` not silent pass; _"runs in prod"_ = a safe NON-MUTATING subset) · **F4** test-strength proof (automated fault injection on changed code where a tool exists, else the universal **defect-seeding drill** — break the code behind a top invariant, record WHICH NAMED TEST went red, restore; nothing red ⇒ no protection. **Line coverage is a DIAGNOSTIC, never a gate**) · **F5** performance measured by something that **RUNS and CAN FAIL** (realistic volume AND shape, **asserted** budgets not a dashboard, ≥2 volumes ~10× apart to expose super-linear growth, resource exhaustion bounded rather than an OOM kill) · **F6** build & change scalability (computable affected set, measured incrementality, **mechanically** enforced boundaries, a **declared** architecture style, implementation hidden behind abstraction) · **F7** mechanical harness completeness (every machine-catchable class accounted for or `N/A`; local and CI run the SAME command; checks **ENFORCE**, not warn; brownfield uses a fail-on-new **ratchet**). Verdicts: `PRESENT`/`MISSING-WARRANTED`/`PARTIAL-WITH-PATH`/`N/A-by-profile`/`OVER-ENGINEERED`/`UNVERIFIED`. **Authority splits — CREATING a foundation ⇒ `MISSING-WARRANTED` is BLOCKING; AUDITING one ⇒ ADVISORY ONLY, never mutating any score, verdict band or PASS/FAIL.** Anti-over-engineering is first-class and symmetric (a correctly-lean project is a PASS; never under-harden a `B2+` system for low traffic). Every brownfield gap names the smallest next step. **State OUTCOMES, never tools.** Full catalog → `.claude/docs/engineering-foundation-catalog.md` (authoritative — update it FIRST, then re-run `inject_engineering_foundation_gate.py`).311312<!-- /SYNC:engineering-foundation-gate:reminder -->313314## Closing Reminders315316**IMPORTANT MUST ATTENTION Goal:** deliver user-confirmed, per-layer tech stack — each choice backed by 3+ researched options, weighted 8-criteria scoring, cited evidence, confidence % — so team commits to a stack fit for scale, budget, skills, timeline, NOT familiarity.317318**IMPORTANT MUST ATTENTION — run ALL 7 steps in declared order, none skipped:** (1) Load Business Context → (2) Derive Technical Requirements (+ `AskUserQuestion` confirm) → (3) Research Per Layer (WebSearch 3+ options each) → (4) Deep Comparison Matrix → (5) Weighted Score & Ranking (confidence %) → (6) Generate Report (<=200 lines) → (7) User Validation Interview (5-8 questions, write `status: confirmed`) — why: AI keeps collapsing this into "just pick a stack" and dropping requirements-derivation, scoring, and the confirmation gate that make the choice defensible.319320**Protocols in force (concise digest of the SYNC/shared blocks this skill carries):**321322- **Critical Thinking:** MUST ATTENTION apply critical + sequential thinking; traced proof, confidence >80% to act, NEVER guess as fact.323- **AI Mistake Prevention:** verify generated content against evidence, trace downstream references, verify all affected outputs, re-read after context loss, surface ambiguity.324325**IMPORTANT MUST ATTENTION** research minimum 3 WebSearched options per stack layer (backend, frontend, database, messaging, infra, auth); every recommendation carries confidence % + cited evidence (URL, benchmark, case study) — NEVER recommend on familiarity alone — why: familiarity bias commits the team to the wrong stack that surfaces only at scale.326**IMPORTANT MUST ATTENTION** gate on user via `AskUserQuestion` at EVERY decision point — confirm derived requirements before research (Step 2), confirm each layer recommendation in the end interview (Step 7) — NEVER auto-decide — why: the team owns the stack, not the AI.327**MANDATORY IMPORTANT MUST ATTENTION** break work into small todo tasks using `TaskCreate` BEFORE starting; mark one `in_progress`, `completed` immediately after evidence; add a final review todo.328329<!-- SYNC:scale-technique-gate -->330331> **Scalability & Production-Readiness Technique Gate** — CONDITIONAL, evidence-gated, scale-tiered. Judge which system-design techniques a system *warrants* at its scale — flag warranted-but-missing gaps AND advise AGAINST unwarranted heavyweight ones. **ADVICE-ONLY: emit the matrix as guidance; NEVER mutate any score, verdict band, or gate pass/fail.**332>333> 1. **Derive the scale tier FIRST — from evidence, never assumed.** Read users/RPS, SLO/latency targets, data volume, tenancy, topology from config/infra/specs; cite `file:line` + confidence. Tiers: `T0` internal/single-instance · `T1` small SaaS (<10k users) · `T2` high-scale (10k–1M) · `T3` massive/multi-region (millions+). Unknown tier → state assumption, do NOT default to T3.334> 2. **Judge each concern group only at/above its warranting tier** (member techniques → owning review skill for depth):335> - Traffic & Edge — Rate Limiting, Load Balancing, Reverse Proxy, API Gateway, CDN, Edge Caching, WAF, DDoS (T1+; CDN/WAF T2+) → security-review owns WAF/DDoS336> - Caching & Data Access — Caching, Cache Invalidation, DB Indexing, Query Optimization, N+1, Connection Pooling (T1+) → performance-review owns depth337> - Data Scaling & Consistency — Read Replicas, Sharding, Partitioning, Replication, CAP, Eventual Consistency, Locks, Leader Election (T2+; sharding/multi-region T3) → performance-review338> - Async & Messaging — Message Queues, Pub/Sub, Event-Driven, Saga, DLQ, Distributed Transactions, Backpressure, Webhooks, WebSockets/SSE (T2+)339> - Resilience — Circuit Breakers, Timeouts, Retries, Backoff, Idempotency, Health Checks, Liveness/Readiness, Failover, Graceful Degradation (T1+) → production-readiness-review340> - Scaling & Compute — Autoscaling, Horizontal/Vertical Scaling, Serverless Limits, Cold Starts, 341342…(truncated)