@x0rium/devkit-cli 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/index.js +4 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/scaffold.d.ts +1 -0
  4. package/dist/scaffold.d.ts.map +1 -1
  5. package/dist/scaffold.js +42 -4
  6. package/dist/scaffold.js.map +1 -1
  7. package/package.json +3 -2
  8. package/skills/arch-kit/README.md +195 -0
  9. package/skills/arch-kit/SKILL.md +128 -0
  10. package/skills/arch-kit/references/adr.md +25 -0
  11. package/skills/arch-kit/references/impact.md +13 -0
  12. package/skills/arch-kit/references/invariants.md +9 -0
  13. package/skills/arch-kit/references/investigation.md +37 -0
  14. package/skills/arch-kit/references/rfc.md +36 -0
  15. package/skills/devkit-init/SKILL.md +99 -0
  16. package/skills/devkit-init/references/brownfield.md +147 -0
  17. package/skills/devkit-init/references/greenfield.md +44 -0
  18. package/skills/devkit-init/references/upgrade.md +103 -0
  19. package/skills/product-kit/README.md +135 -0
  20. package/skills/product-kit/SKILL.md +101 -0
  21. package/skills/product-kit/references/roadmap.md +16 -0
  22. package/skills/product-kit/references/users.md +14 -0
  23. package/skills/product-kit/references/ux_invariants.md +8 -0
  24. package/skills/qa-kit/README.md +188 -0
  25. package/skills/qa-kit/SKILL.md +113 -0
  26. package/skills/qa-kit/references/assumption_checks.md +10 -0
  27. package/skills/qa-kit/references/coverage_map.md +19 -0
  28. package/skills/qa-kit/references/test_contracts.md +10 -0
  29. package/skills/research-kit/README.md +139 -0
  30. package/skills/research-kit/SKILL.md +84 -0
  31. package/skills/research-kit/references/assumptions.md +9 -0
  32. package/skills/research-kit/references/feasibility.md +15 -0
  33. package/skills/research-kit/references/market.md +13 -0
  34. package/skills/research-kit/references/unknowns.md +9 -0
  35. package/skills/spec-kit/README.md +139 -0
  36. package/skills/spec-kit/SKILL.md +108 -0
@@ -0,0 +1,36 @@
1
+ # RFC Template — Request for Change
2
+
3
+ ## RFC-XXX: [title]
4
+ DATE:
5
+ STATUS: open / accepted / rejected / deferred
6
+ TRIGGERED_BY: [what new requirement or information caused this]
7
+
8
+ ## Affected Invariants
9
+ [List invariants from invariants.md that this touches]
10
+
11
+ ## Affected Specs
12
+ [List specs from .specify/ that need revision]
13
+
14
+ ## Change Cost
15
+ SPECS_TO_REVISE: N
16
+ INVARIANTS_TO_CHANGE: M
17
+ ESTIMATED_EFFORT: [rough estimate]
18
+
19
+ ## Options
20
+ ### Option A: [name]
21
+ Description, pros, cons
22
+
23
+ ### Option B: [name]
24
+ Description, pros, cons
25
+
26
+ ## Decision
27
+ CHOSEN: [option]
28
+ RATIONALE: [why]
29
+ DECIDED_BY: developer
30
+ DATE_DECIDED:
31
+
32
+ ## Post-Decision Actions
33
+ - [ ] Update invariants.md
34
+ - [ ] Regenerate constitution.md
35
+ - [ ] Mark affected specs as NEEDS_REVISION
36
+ - [ ] Resume SpecKit
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: devkit-init
3
+ description: Initialize DevKit in any project. Use when developer wants to start using DevKit methodology — whether starting fresh, adding to an existing project with code, or upgrading from spec-kit alone. Triggers on phrases like "init devkit", "setup devkit", "start devkit", "add devkit to project", "initialize devkit".
4
+ license: MIT
5
+ metadata:
6
+ author: devkit
7
+ version: "1.0"
8
+ ---
9
+
10
+ # DevKit Init
11
+
12
+ Initialize DevKit for any project state. Detect what exists, choose the right mode, set up what's needed.
13
+
14
+ ## Step 1: Detect Project State
15
+
16
+ Check what exists in the current directory:
17
+
18
+ ```
19
+ Check for:
20
+ .devkit/ → already initialized
21
+ .specify/ → spec-kit exists, no DevKit
22
+ source code files → brownfield (code without DevKit)
23
+ empty directory → greenfield
24
+ ```
25
+
26
+ Based on findings, choose mode:
27
+
28
+ | State | Mode |
29
+ |-------|------|
30
+ | .devkit/ exists | Already initialized → show status |
31
+ | .specify/ only | Upgrade mode → wrap spec-kit with DevKit |
32
+ | Code, no .devkit/ | Brownfield mode → reconstruct from code |
33
+ | Empty / no code | Greenfield mode → start fresh |
34
+
35
+ Read the mode guide:
36
+ - Greenfield: [greenfield.md](references/greenfield.md)
37
+ - Brownfield: [brownfield.md](references/brownfield.md)
38
+ - Upgrade from spec-kit: [upgrade.md](references/upgrade.md)
39
+
40
+ ## Step 2: Create .devkit/ Structure
41
+
42
+ After determining mode, create the directory structure:
43
+
44
+ ```
45
+ .devkit/
46
+ research/ ← ResearchKit artifacts
47
+ product/ ← ProductKit artifacts
48
+ arch/
49
+ decisions/ ← ADR, RFC, Investigation files
50
+ qa/
51
+ escalations/ ← QA escalation history
52
+ ```
53
+
54
+ ## Step 3: Install spec-kit if not present
55
+
56
+ Check if `specify` CLI is available:
57
+
58
+ ```bash
59
+ specify --version
60
+ ```
61
+
62
+ If not found, output instructions:
63
+ ```
64
+ spec-kit not found. Install with:
65
+ uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
66
+
67
+ Then run: specify init . --ai claude
68
+ ```
69
+
70
+ If found but `.specify/` doesn't exist:
71
+ ```bash
72
+ specify init . --ai claude
73
+ ```
74
+
75
+ ## Step 4: Confirm and Show Next Step
76
+
77
+ After init, tell developer what to do next based on mode:
78
+
79
+ Greenfield:
80
+ ```
81
+ DevKit initialized.
82
+ Start with: /research-kit
83
+ Describe your idea and we'll explore feasibility together.
84
+ ```
85
+
86
+ Brownfield:
87
+ ```
88
+ DevKit initialized in brownfield mode.
89
+ Reconstructed N invariants (review required).
90
+ Next: review .devkit/arch/invariants.md and confirm or correct.
91
+ Then: /arch-kit to fill gaps.
92
+ ```
93
+
94
+ Upgrade:
95
+ ```
96
+ DevKit initialized over existing spec-kit project.
97
+ Reconstructed constitution into ArchKit artifacts.
98
+ Next: review .devkit/arch/invariants.md
99
+ ```
@@ -0,0 +1,147 @@
1
+ # Brownfield Mode
2
+
3
+ Code exists. No .devkit/. May or may not have .specify/.
4
+
5
+ ## Phase 1: Project Scan
6
+
7
+ Read the codebase to understand what exists:
8
+
9
+ ```
10
+ Scan for:
11
+ - Main language and framework
12
+ - Entry points (main files, index, app)
13
+ - Database / storage patterns
14
+ - External services and integrations
15
+ - Test files (understand what's already tested)
16
+ - README or docs (understand stated intent)
17
+ - Package files (dependencies reveal architecture)
18
+ ```
19
+
20
+ Summarize findings before proceeding:
21
+ ```
22
+ Found: [framework], [database], [key integrations]
23
+ Size: ~N files, ~M lines
24
+ Tests: yes/no, coverage unknown
25
+ Docs: yes/no
26
+ ```
27
+
28
+ ## Phase 2: Invariant Extraction
29
+
30
+ Read source code deeply. Look for patterns that reveal implicit invariants:
31
+
32
+ **Signals of technical invariants:**
33
+ - Transactions wrapping multiple operations → atomicity invariant
34
+ - Locks, mutexes, SELECT FOR UPDATE → concurrency invariant
35
+ - Retry logic → reliability invariant
36
+ - Auth checks on every endpoint → security invariant
37
+ - Validation before DB writes → data integrity invariant
38
+
39
+ **Signals of broken invariants:**
40
+ - TODO/FIXME/HACK comments
41
+ - Exception swallowed silently
42
+ - Missing error handling on critical paths
43
+ - Race conditions (no locking where needed)
44
+
45
+ For each extracted invariant, create entry with status `inferred`:
46
+
47
+ ```markdown
48
+ ## I1: [name]
49
+ STATEMENT: what the system appears to guarantee
50
+ STATUS: inferred
51
+ CONFIDENCE: high / medium / low
52
+ SOURCE: code-analysis
53
+ EVIDENCE: [file:line that shows this]
54
+ NEEDS_REVIEW: true
55
+ ```
56
+
57
+ ## Phase 3: Decision Archaeology
58
+
59
+ Look for evidence of past architectural decisions:
60
+
61
+ **Where to look:**
62
+ - Git history and commit messages
63
+ - PR descriptions (if accessible)
64
+ - Comments explaining "why" not "what"
65
+ - Unusual patterns that suggest a workaround
66
+ - Dependencies that seem overengineered for the task
67
+
68
+ For each discovered decision:
69
+
70
+ ```markdown
71
+ ## ADR-XXX: [inferred decision name]
72
+ STATUS: inferred
73
+ CONFIDENCE: high / medium / low
74
+ EVIDENCE: [what in code suggests this]
75
+ UNKNOWN: [what context is lost]
76
+ NEEDS_REVIEW: true
77
+ ```
78
+
79
+ ## Phase 4: Gap Analysis
80
+
81
+ What can't be reconstructed from code alone?
82
+
83
+ ```markdown
84
+ # Gaps
85
+
86
+ ## UNKNOWN: [topic]
87
+ QUESTION: what we can't determine from code
88
+ WHY_MATTERS: impact on future development
89
+ HOW_TO_RESOLVE: ask developer / check git history / accept unknown
90
+ ```
91
+
92
+ Present gaps to developer and ask them to fill what they remember.
93
+
94
+ ## Phase 5: Produce Artifacts
95
+
96
+ Save to `.devkit/arch/`:
97
+ - `invariants.md` — all inferred invariants (status: inferred, needs_review: true)
98
+ - `decisions/ADR-*.md` — all inferred decisions
99
+ - `impact.md` — dependency map extracted from imports/calls
100
+
101
+ ## Status File
102
+
103
+ Create `.devkit/STATUS.md`:
104
+
105
+ ```markdown
106
+ # DevKit Status
107
+
108
+ MODE: brownfield
109
+ INITIALIZED: [date]
110
+ CURRENT_PHASE: arch-review
111
+
112
+ ## Reconstruction Summary
113
+ INVARIANTS_INFERRED: N
114
+ DECISIONS_INFERRED: M
115
+ GAPS: K (see arch/gaps.md)
116
+
117
+ ## Required Actions Before Development
118
+ - [ ] Review and confirm invariants.md
119
+ - [ ] Fill gaps in arch/gaps.md
120
+ - [ ] Run /arch-kit to verify and fill missing decisions
121
+
122
+ ## Phase Status
123
+ - [~] ResearchKit (skipped — existing project)
124
+ - [~] ProductKit (partially reconstructed)
125
+ - [ ] ArchKit (review required)
126
+ - [ ] SpecKit
127
+ - [ ] QAKit
128
+ ```
129
+
130
+ ## Message to Developer
131
+
132
+ ```
133
+ DevKit initialized in brownfield mode.
134
+
135
+ Reconstructed from your codebase:
136
+ Invariants: N (all marked as 'inferred', need your review)
137
+ Decisions: M (inferred from code patterns)
138
+ Gaps: K unknowns that couldn't be reconstructed
139
+
140
+ Next steps:
141
+ 1. Review .devkit/arch/invariants.md — confirm or correct each one
142
+ 2. Check .devkit/arch/gaps.md — fill what you remember
143
+ 3. Run /arch-kit to verify architecture and fill remaining gaps
144
+
145
+ Important: 'inferred' invariants are AI's best guess from code.
146
+ They may be wrong. Please review before trusting them.
147
+ ```
@@ -0,0 +1,44 @@
1
+ # Greenfield Mode
2
+
3
+ Fresh project. No code, no .devkit/, no .specify/.
4
+
5
+ ## What to Do
6
+
7
+ 1. Create .devkit/ structure (done by SKILL.md)
8
+ 2. Run `specify init . --ai claude` (done by SKILL.md)
9
+ 3. Tell developer to start with ResearchKit
10
+
11
+ ## Starting Message to Developer
12
+
13
+ ```
14
+ DevKit initialized for a new project.
15
+
16
+ Your development cycle:
17
+ /research-kit → explore feasibility and unknowns
18
+ /product-kit → define users and UX invariants
19
+ /arch-kit → verify architecture
20
+ /spec-kit → implement (via spec-kit workflow)
21
+ /qa-kit → verify against all decisions
22
+
23
+ Start with /research-kit — describe your idea.
24
+ ```
25
+
26
+ ## Files to Create
27
+
28
+ Create `.devkit/STATUS.md`:
29
+
30
+ ```markdown
31
+ # DevKit Status
32
+
33
+ MODE: greenfield
34
+ INITIALIZED: [date]
35
+ CURRENT_PHASE: research
36
+ SPEC_KIT: initialized
37
+
38
+ ## Phase Status
39
+ - [ ] ResearchKit
40
+ - [ ] ProductKit
41
+ - [ ] ArchKit
42
+ - [ ] SpecKit
43
+ - [ ] QAKit
44
+ ```
@@ -0,0 +1,103 @@
1
+ # Upgrade Mode
2
+
3
+ spec-kit exists (.specify/ present). No .devkit/ yet.
4
+ Developer is already using spec-kit and wants to add the full DevKit layer.
5
+
6
+ ## What This Means
7
+
8
+ spec-kit is already running. There are specs, possibly a constitution.md.
9
+ We need to reverse-engineer DevKit artifacts from what spec-kit has,
10
+ then connect them so ArchKit owns constitution.md going forward.
11
+
12
+ ## Phase 1: Read Existing spec-kit Artifacts
13
+
14
+ Read all files in `.specify/`:
15
+ - `constitution.md` — project principles and constraints
16
+ - `spec.md` — feature specifications
17
+ - `plan.md` — technical plans
18
+ - `tasks/` — implementation tasks
19
+
20
+ Understand what's already been built and decided.
21
+
22
+ ## Phase 2: Extract ArchKit Artifacts from constitution.md
23
+
24
+ constitution.md contains decisions that belong in ArchKit.
25
+
26
+ Extract:
27
+ - Tech stack decisions → ADR entries
28
+ - Constraints and rules → invariant candidates
29
+ - Patterns and standards → more invariants
30
+
31
+ Create `.devkit/arch/invariants.md` from these.
32
+ Create `.devkit/arch/decisions/` ADR files.
33
+
34
+ Mark all as `inferred` with `SOURCE: constitution.md`.
35
+
36
+ ## Phase 3: Extract ProductKit Artifacts
37
+
38
+ Look in constitution.md and spec.md for:
39
+ - Who the user is
40
+ - UX rules and constraints
41
+ - What's in scope / out of scope
42
+
43
+ Create `.devkit/product/users.md` and `ux_invariants.md`.
44
+ Mark as `inferred`.
45
+
46
+ ## Phase 4: Link DevKit to spec-kit
47
+
48
+ Going forward, constitution.md is OWNED by ArchKit.
49
+ Add a note at the top of `.specify/constitution.md`:
50
+
51
+ ```markdown
52
+ <!-- GENERATED BY DEVKIT — do not edit manually -->
53
+ <!-- Source: .devkit/arch/invariants.md + decisions/ -->
54
+ <!-- Regenerate with: /arch-kit generate-constitution -->
55
+ ```
56
+
57
+ ## Phase 5: Produce Status File
58
+
59
+ Create `.devkit/STATUS.md`:
60
+
61
+ ```markdown
62
+ # DevKit Status
63
+
64
+ MODE: upgrade-from-speckit
65
+ INITIALIZED: [date]
66
+ CURRENT_PHASE: arch-review
67
+
68
+ ## Migration Summary
69
+ SPEC_KIT_SPECS_FOUND: N
70
+ INVARIANTS_EXTRACTED: M
71
+ CONSTITUTION: linked (DevKit now owns it)
72
+
73
+ ## Required Actions
74
+ - [ ] Review .devkit/arch/invariants.md
75
+ - [ ] Confirm or correct extracted decisions
76
+ - [ ] Run /arch-kit to fill gaps
77
+
78
+ ## Phase Status
79
+ - [~] ResearchKit (not available — existing project)
80
+ - [~] ProductKit (partially extracted)
81
+ - [ ] ArchKit (review required)
82
+ - [x] SpecKit (already in use)
83
+ - [ ] QAKit
84
+ ```
85
+
86
+ ## Message to Developer
87
+
88
+ ```
89
+ DevKit initialized over your existing spec-kit project.
90
+
91
+ Extracted from your spec-kit artifacts:
92
+ Invariants: N (from constitution.md — review required)
93
+ Decisions: M (inferred — review required)
94
+
95
+ constitution.md is now managed by ArchKit.
96
+ Changes to architecture go through /arch-kit,
97
+ which regenerates constitution.md automatically.
98
+
99
+ Next steps:
100
+ 1. Review .devkit/arch/invariants.md
101
+ 2. Run /arch-kit to verify and complete the picture
102
+ 3. Continue using spec-kit as normal — it now has a verified foundation
103
+ ```
@@ -0,0 +1,135 @@
1
+ # ProductKit
2
+
3
+ > Уровень 2. "Что именно строим и для кого?"
4
+
5
+ ---
6
+
7
+ ## Когда использовать
8
+
9
+ - feasibility подтверждена в ResearchKit
10
+ - нужно определить что именно строить
11
+ - нужно понять как пользователь будет это использовать
12
+ - нужно зафиксировать UX инварианты до архитектуры
13
+ - нужно определить роадмап и приоритеты
14
+
15
+ ---
16
+
17
+ ## Ключевая идея
18
+
19
+ UX инварианты определяются **до** архитектуры. Они ограничивают архитектурные решения так же жёстко как технические требования.
20
+
21
+ Пример: если U1 = "CLI запускается с максимум 3 обязательными параметрами" зафиксирован здесь — архитектура с 60 параметрами станет блокером в ArchKit, а не открытием после реализации.
22
+
23
+ ---
24
+
25
+ ## Фазы
26
+
27
+ ### Phase 1: User Definition
28
+ ```
29
+ QUESTIONS:
30
+ - Кто конкретно будет это использовать?
31
+ - Какую проблему они решают сейчас без этого инструмента?
32
+ - Что они знают / умеют заранее?
33
+ - В каком контексте используют: вручную, в скрипте, в CI?
34
+
35
+ FORBIDDEN:
36
+ - думать о технической реализации
37
+ - выбирать стек
38
+ ```
39
+
40
+ ### Phase 2: UX Invariants
41
+ ```
42
+ Формализуем что система гарантирует пользователю.
43
+ Не "как выглядит" а "что обещает".
44
+
45
+ EXAMPLES:
46
+ U1: новый пользователь достигает результата за N шагов
47
+ U2: без конфига работает разумный default
48
+ U3: ошибка всегда содержит что делать дальше
49
+ U4: операция X занимает не более Y секунд субъективно
50
+ ```
51
+
52
+ ### Phase 3: Roadmap
53
+ ```
54
+ Фазы разработки с точки зрения продукта.
55
+ Что входит в MVP, что в v1, что позже.
56
+
57
+ BASIS: UX инварианты + assumptions из ResearchKit
58
+ CONSTRAINTS: будут дополнены техническими из ArchKit
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Артефакты
64
+
65
+ ### users.md
66
+ ```markdown
67
+ # Users
68
+
69
+ ## Primary User
70
+ PROFILE: кто это
71
+ CONTEXT: как и где использует
72
+ KNOWLEDGE: что знает заранее
73
+ GOAL: чего хочет достичь
74
+ HAPPY_PATH: типичный сценарий (80% случаев)
75
+
76
+ ## Edge Cases
77
+ ...
78
+ ```
79
+
80
+ ### ux_invariants.md
81
+ ```markdown
82
+ # UX Invariants
83
+
84
+ ## U1: [название]
85
+ STATEMENT: что система гарантирует пользователю
86
+ RATIONALE: почему это важно
87
+ VALIDATION: как проверить что инвариант соблюдён
88
+ PRIORITY: must / should / could
89
+ STATUS: active / suspended / rejected
90
+ ```
91
+
92
+ ### roadmap.md
93
+ ```markdown
94
+ # Roadmap
95
+
96
+ ## MVP
97
+ GOAL: минимум для первого реального использования
98
+ UX_INVARIANTS: [какие инварианты покрывает]
99
+ EXCLUDES: [что явно не входит]
100
+
101
+ ## V1
102
+ ...
103
+
104
+ ## Later
105
+ ...
106
+
107
+ ## Never (явный anti-scope)
108
+ ...
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Переход к ArchKit
114
+
115
+ **ALLOWED** когда:
116
+ - все пользовательские сценарии описаны
117
+ - UX инварианты зафиксированы для MVP
118
+ - роадмап имеет явный anti-scope
119
+ - нет open questions о том кто пользователь
120
+
121
+ **BLOCKED** когда:
122
+ - UX инварианты противоречат друг другу
123
+ - happy path не определён
124
+
125
+ ---
126
+
127
+ ## Команды
128
+
129
+ ```
130
+ /product init
131
+ /product users
132
+ /product ux-invariants
133
+ /product roadmap
134
+ /product status
135
+ ```
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: product-kit
3
+ description: DevKit Level 2. Use after ResearchKit when developer needs to define who the user is, establish UX invariants, and set the roadmap before architecture. Triggers on phrases like "who is this for", "how will people use this", "what's the MVP", "user experience", or when ResearchKit handoff is complete.
4
+ license: MIT
5
+ metadata:
6
+ author: devkit
7
+ version: "1.0"
8
+ layer: "2-of-5"
9
+ prev: research-kit
10
+ next: arch-kit
11
+ ---
12
+
13
+ # ProductKit — Level 2: "What exactly are we building and for whom?"
14
+
15
+ You are operating in ProductKit phase. Your job is to define the user, establish UX invariants, and set roadmap priorities before any architecture decisions are made.
16
+
17
+ ## Your Role
18
+
19
+ - Define who the user is and how they interact with the product
20
+ - Establish UX invariants that constrain architecture
21
+ - Prioritize ruthlessly: MVP vs later vs never
22
+ - Do NOT recommend technical solutions
23
+ - Do NOT write code or architecture
24
+
25
+ ## Critical Principle
26
+
27
+ UX invariants are defined HERE, before ArchKit. They constrain architecture just as hard as technical requirements. If defined after, you get 60-parameter CLIs that formally work but are unusable.
28
+
29
+ ## Phases
30
+
31
+ ### Phase 1: User Definition
32
+ Identify the real user. Ask:
33
+ - Who specifically will use this? (developer, devops, manager, end user?)
34
+ - What do they already know?
35
+ - What context are they in when they use this? (manually, in CI, in a script?)
36
+ - What is their happy path — the 80% case?
37
+
38
+ ### Phase 2: UX Invariants
39
+ Formalize what the system PROMISES the user. Not how it looks — what it guarantees.
40
+
41
+ Examples:
42
+ - "New user reaches result in under N steps"
43
+ - "No required config to get started — sensible defaults"
44
+ - "Every error message tells you what to do next"
45
+ - "Core operation completes in under N seconds"
46
+
47
+ Each invariant gets: PRIORITY (must/should/could) and VALIDATION method.
48
+
49
+ ### Phase 3: Roadmap
50
+ Define phases from user perspective:
51
+ - MVP: minimum to be genuinely useful
52
+ - V1: full intended experience
53
+ - Later: good ideas for the future
54
+ - Never (anti-scope): explicitly out of scope — prevents scope creep
55
+
56
+ ## Artifacts to Produce
57
+
58
+ Read templates from:
59
+ - [Users template](references/users.md)
60
+ - [UX Invariants template](references/ux_invariants.md)
61
+ - [Roadmap template](references/roadmap.md)
62
+
63
+ Save artifacts to `.devkit/product/`.
64
+
65
+ ## Gate: When Can We Move to ArchKit?
66
+
67
+ ALLOWED to proceed when:
68
+ - Primary user and happy path defined
69
+ - UX invariants established for MVP scope
70
+ - Roadmap has explicit anti-scope
71
+ - No contradictions between UX invariants
72
+
73
+ BLOCKED when:
74
+ - UX invariants contradict each other
75
+ - Happy path unclear
76
+ - "Who is the user" still open
77
+
78
+ ## Event Detection
79
+
80
+ ### Product Blocker (triggered during SpecKit or later)
81
+ If developer says: "this is awkward to use", "too many parameters", "users won't understand this" — this is a UX invariant violation.
82
+
83
+ Response:
84
+ > "This looks like a UX invariant violation. Let me check product-kit artifacts.
85
+ > [check ux_invariants.md]
86
+ > This conflicts with [U_N]. Running ProductKit investigation before continuing."
87
+
88
+ Open `product/investigations/PROD-XXX.md`, explore options, update ux_invariants.md, propagate changes to ArchKit.
89
+
90
+ ## Handoff
91
+
92
+ When gate conditions are met:
93
+ ```
94
+ PRODUCT COMPLETE
95
+ USER: [one-line description]
96
+ HAPPY PATH: [one sentence]
97
+ UX INVARIANTS: N defined (M must, K should)
98
+ MVP SCOPE: [summary]
99
+ ANTI-SCOPE: [what we explicitly won't do]
100
+ READY FOR: ArchKit
101
+ ```
@@ -0,0 +1,16 @@
1
+ # Roadmap Template
2
+
3
+ ## MVP
4
+ GOAL: minimum to be genuinely useful to the primary user
5
+ UX_INVARIANTS_COVERED: [U1, U2, ...]
6
+ EXCLUDES: [what is explicitly out of MVP]
7
+
8
+ ## V1
9
+ GOAL: full intended experience
10
+ ADDS: [what MVP lacks]
11
+
12
+ ## Later
13
+ [Good ideas that are not V1]
14
+
15
+ ## Never (Anti-Scope)
16
+ [What we explicitly will NOT do — this prevents scope creep]
@@ -0,0 +1,14 @@
1
+ # Users Template
2
+
3
+ ## Primary User
4
+ PROFILE: who they are
5
+ CONTEXT: when and where they use this
6
+ KNOWLEDGE: what they know coming in
7
+ GOAL: what they want to achieve
8
+ HAPPY_PATH: the typical 80% scenario (one sentence)
9
+
10
+ ## Secondary Users
11
+ [Other users and their scenarios if applicable]
12
+
13
+ ## Anti-Users
14
+ [Who this is explicitly NOT for — prevents over-engineering]
@@ -0,0 +1,8 @@
1
+ # UX Invariants Template
2
+
3
+ ## U1: [name]
4
+ STATEMENT: what the system promises the user
5
+ RATIONALE: why this matters
6
+ VALIDATION: how to verify the invariant holds
7
+ PRIORITY: must / should / could
8
+ STATUS: active / suspended / rejected