@x0rium/devkit-cli 0.5.0 → 0.7.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 (66) hide show
  1. package/dist/constitution.d.ts.map +1 -1
  2. package/dist/constitution.js +62 -8
  3. package/dist/constitution.js.map +1 -1
  4. package/dist/dashboard.d.ts.map +1 -1
  5. package/dist/dashboard.js +6 -2
  6. package/dist/dashboard.js.map +1 -1
  7. package/dist/detector.d.ts.map +1 -1
  8. package/dist/detector.js +5 -2
  9. package/dist/detector.js.map +1 -1
  10. package/dist/escalate.d.ts.map +1 -1
  11. package/dist/escalate.js +8 -3
  12. package/dist/escalate.js.map +1 -1
  13. package/dist/gate.d.ts.map +1 -1
  14. package/dist/gate.js +57 -10
  15. package/dist/gate.js.map +1 -1
  16. package/dist/index.js +14 -7
  17. package/dist/index.js.map +1 -1
  18. package/dist/investigate.d.ts.map +1 -1
  19. package/dist/investigate.js +8 -10
  20. package/dist/investigate.js.map +1 -1
  21. package/dist/rfc.d.ts.map +1 -1
  22. package/dist/rfc.js +8 -10
  23. package/dist/rfc.js.map +1 -1
  24. package/dist/scaffold.d.ts +2 -0
  25. package/dist/scaffold.d.ts.map +1 -1
  26. package/dist/scaffold.js +52 -4
  27. package/dist/scaffold.js.map +1 -1
  28. package/dist/schemas.js +2 -2
  29. package/dist/schemas.js.map +1 -1
  30. package/dist/status.d.ts.map +1 -1
  31. package/dist/status.js +7 -4
  32. package/dist/status.js.map +1 -1
  33. package/dist/validator.js +1 -1
  34. package/dist/validator.js.map +1 -1
  35. package/dist/watch.js +10 -10
  36. package/dist/watch.js.map +1 -1
  37. package/package.json +4 -5
  38. package/skills/arch-kit/README.md +195 -0
  39. package/skills/arch-kit/SKILL.md +190 -0
  40. package/skills/arch-kit/references/adr.md +25 -0
  41. package/skills/arch-kit/references/impact.md +13 -0
  42. package/skills/arch-kit/references/invariants.md +9 -0
  43. package/skills/arch-kit/references/investigation.md +37 -0
  44. package/skills/arch-kit/references/rfc.md +36 -0
  45. package/skills/devkit-init/SKILL.md +74 -0
  46. package/skills/devkit-init/references/brownfield.md +147 -0
  47. package/skills/devkit-init/references/greenfield.md +44 -0
  48. package/skills/devkit-init/references/upgrade.md +103 -0
  49. package/skills/product-kit/README.md +135 -0
  50. package/skills/product-kit/SKILL.md +126 -0
  51. package/skills/product-kit/references/roadmap.md +16 -0
  52. package/skills/product-kit/references/users.md +14 -0
  53. package/skills/product-kit/references/ux_invariants.md +8 -0
  54. package/skills/qa-kit/README.md +188 -0
  55. package/skills/qa-kit/SKILL.md +155 -0
  56. package/skills/qa-kit/references/assumption_checks.md +10 -0
  57. package/skills/qa-kit/references/coverage_map.md +19 -0
  58. package/skills/qa-kit/references/test_contracts.md +10 -0
  59. package/skills/research-kit/README.md +139 -0
  60. package/skills/research-kit/SKILL.md +106 -0
  61. package/skills/research-kit/references/assumptions.md +9 -0
  62. package/skills/research-kit/references/feasibility.md +15 -0
  63. package/skills/research-kit/references/market.md +13 -0
  64. package/skills/research-kit/references/unknowns.md +9 -0
  65. package/skills/spec-kit/README.md +139 -0
  66. package/skills/spec-kit/SKILL.md +202 -0
@@ -0,0 +1,195 @@
1
+ # ArchKit
2
+
3
+ > Уровень 3. "Как это устроено технически?"
4
+
5
+ ---
6
+
7
+ ## Когда использовать
8
+
9
+ - ProductKit завершён, UX инварианты зафиксированы
10
+ - нужно выбрать архитектуру из нескольких вариантов
11
+ - нужно формализовать технические инварианты
12
+ - нужно верифицировать архитектуру до написания кода
13
+ - нужно сгенерировать constitution.md для SpecKit
14
+
15
+ ---
16
+
17
+ ## Ключевая идея
18
+
19
+ Архитектура описывается декларативно — не "как реализовать" а "что гарантировать". Верификация происходит до написания кода. SpecKit получает на вход не догадки а доказанное основание.
20
+
21
+ ---
22
+
23
+ ## Фазы
24
+
25
+ ### Phase 1: Discovery
26
+ ```
27
+ QUESTIONS:
28
+ - Какие quality attributes критичны? (reliability, performance, security)
29
+ - Что хуже: потерять данные или показать устаревшие?
30
+ - Какая нагрузка? Какие пики?
31
+ - Один разработчик или команда?
32
+ - Где хостим?
33
+
34
+ FORBIDDEN:
35
+ - предлагать конкретные технологии
36
+ - выбирать стек
37
+ ```
38
+
39
+ ### Phase 2: Architecture Variants
40
+ ```
41
+ AI предлагает 2-3 варианта с явными трейдоффами.
42
+ Каждый вариант — ADR с:
43
+ - что выбираем
44
+ - почему именно это
45
+ - от чего отказываемся и почему
46
+ - риски выбора
47
+
48
+ FORBIDDEN:
49
+ - предлагать один вариант как единственный
50
+ - скрывать трейдоффы
51
+ - выбирать за разработчика
52
+ ```
53
+
54
+ ### Phase 3: Specification
55
+ ```
56
+ Выбранная архитектура формализуется:
57
+ - компоненты и их контракты
58
+ - технические инварианты
59
+ - failure modes и как обрабатываются
60
+ - явные UNKNOWN которые блокируют разработку
61
+ ```
62
+
63
+ ### Phase 4: Verification
64
+ ```
65
+ Adversarial scenarios — AI играет роль враждебной среды:
66
+ - что если этот сервис упал в момент транзакции?
67
+ - что если два запроса пришли одновременно?
68
+ - что если внешний сервис недоступен?
69
+
70
+ Для каждого сценария архитектура даёт ответ.
71
+ Если ответа нет — OPEN_QUESTION, блокирует переход.
72
+
73
+ Уровни верификации:
74
+ L1: структурная (зависимости, интерфейсы, нет циклов)
75
+ L2: сценарная (adversarial scenarios, AI симуляция)
76
+ L3: формальная (TLA+/Alloy для критических инвариантов, опционально)
77
+ ```
78
+
79
+ ---
80
+
81
+ ## События которые обрабатывает ArchKit
82
+
83
+ ### RFC (Request for Change)
84
+ Triggered: когда новые требования затрагивают инварианты
85
+ ```markdown
86
+ # RFC-XXX: [название]
87
+
88
+ TRIGGER: что изменилось
89
+ AFFECTED_INVARIANTS: [список]
90
+ AFFECTED_SPECS: [список]
91
+ COST: оценка стоимости изменения
92
+
93
+ OPTIONS:
94
+ A: ...
95
+ B: ...
96
+
97
+ DECISION: [выбранный вариант]
98
+ RATIONALE: почему
99
+ STATUS: open / accepted / rejected
100
+ ```
101
+
102
+ ### Investigation (технический блокер)
103
+ Triggered: баг в либе / провал бенчмарка / неожиданное ограничение
104
+ ```markdown
105
+ # Investigation-XXX: [название]
106
+
107
+ TRIGGER: что произошло
108
+ AFFECTED_ASSUMPTION: [ADR который сломался]
109
+ FINDING: что обнаружили
110
+
111
+ OPTIONS:
112
+ A: ...
113
+ B: ...
114
+ C: ...
115
+
116
+ DECISION: [выбранный вариант]
117
+ INVARIANTS_AFFECTED: none / [список]
118
+ SPECS_AFFECTED: [список]
119
+ TECHNICAL_DEBT: none / [описание]
120
+ STATUS: open / resolved
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Артефакты
126
+
127
+ ### invariants.md
128
+ ```markdown
129
+ # Technical Invariants
130
+
131
+ ## I1: [название]
132
+ STATEMENT: что система гарантирует
133
+ RATIONALE: почему это важно
134
+ VERIFICATION: как доказать / проверить
135
+ FAILURE_MODE: что происходит при нарушении
136
+ STATUS: verified / assumed / unverified
137
+ ```
138
+
139
+ ### impact.md
140
+ ```markdown
141
+ # Impact Map
142
+
143
+ Карта зависимостей между архитектурными решениями.
144
+ Используется для impact analysis при RFC и Investigation.
145
+
146
+ ## [Компонент / Решение]
147
+ DEPENDS_ON: [список]
148
+ DEPENDED_BY: [список]
149
+ INVARIANTS: [список инвариантов которые затрагивает]
150
+ ```
151
+
152
+ ### decisions/
153
+ ```
154
+ ADR-XXX.md ← Architecture Decision Records
155
+ RFC-XXX.md ← Request for Change
156
+ INV-XXX.md ← Investigation
157
+ ```
158
+
159
+ ### constitution.md
160
+ ```
161
+ Генерируется автоматически из invariants.md и decisions/.
162
+ Это входной артефакт для SpecKit.
163
+ НЕ редактировать вручную.
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Переход к SpecKit
169
+
170
+ **ALLOWED** когда:
171
+ - все adversarial scenarios имеют ответ
172
+ - нет OPEN_QUESTIONS без resolution
173
+ - все инварианты имеют статус verified или assumed с явным риском
174
+ - constitution.md сгенерирован
175
+
176
+ **BLOCKED** когда:
177
+ - есть OPEN_QUESTIONS блокирующего типа
178
+ - инварианты противоречат UX инвариантам из ProductKit
179
+ - не все failure modes описаны для критических путей
180
+
181
+ ---
182
+
183
+ ## Команды
184
+
185
+ ```
186
+ /arch init
187
+ /arch discovery
188
+ /arch variants
189
+ /arch specify
190
+ /arch verify
191
+ /arch rfc "описание изменения"
192
+ /arch investigate "описание блокера"
193
+ /arch generate-constitution
194
+ /arch status
195
+ ```
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: arch-kit
3
+ description: DevKit Level 3. Use after ProductKit to explore architecture variants, establish technical invariants, verify system design, and generate constitution.md for SpecKit. Also triggers on architectural events during development: new requirements touching invariants (RFC), technical blockers like library bugs or benchmark failures (Investigation), or any change that affects system guarantees.
4
+ license: MIT
5
+ metadata:
6
+ author: devkit
7
+ version: "1.1"
8
+ layer: "3-of-5"
9
+ prev: product-kit
10
+ next: spec-kit
11
+ ---
12
+
13
+ # ArchKit — Level 3: "How is this technically structured?"
14
+
15
+ You are operating in ArchKit phase. Your job is to explore architecture options, establish technical invariants, verify the design, and produce a verified foundation for SpecKit.
16
+
17
+ ## Start
18
+
19
+ ```bash
20
+ devkit status
21
+ ```
22
+
23
+ Confirm you are in the arch phase. If not, check gate status of the previous phase.
24
+
25
+ ## Your Role
26
+
27
+ - Explore multiple architecture variants with explicit tradeoffs
28
+ - Establish technical invariants the system must guarantee
29
+ - Run adversarial verification before any code is written
30
+ - Generate constitution.md for SpecKit
31
+ - Handle RFC and Investigation events during development
32
+
33
+ ## FORBIDDEN at This Phase
34
+
35
+ - Writing implementation code
36
+ - Choosing FOR the developer between variants
37
+ - Hiding tradeoffs
38
+ - Moving to SpecKit while OPEN_QUESTIONS exist
39
+
40
+ ## Phases
41
+
42
+ ### Phase 1: Discovery
43
+ Before proposing any architecture, understand constraints. Ask:
44
+ - What quality attributes matter most? (reliability, performance, simplicity, security)
45
+ - What is worse: losing data or showing stale data?
46
+ - Expected load and growth?
47
+ - Team size?
48
+ - Hosting constraints?
49
+
50
+ Do NOT suggest technologies yet.
51
+
52
+ ### Phase 2: Architecture Variants
53
+ Propose 2–3 variants. Each must include:
54
+ - What we choose
55
+ - Why this fits the constraints
56
+ - What we give up (explicit tradeoffs)
57
+ - Risks of this choice
58
+
59
+ Never present one option as the only option.
60
+
61
+ ### Phase 3: Specification
62
+ Formalize the chosen architecture:
63
+ - Components and their contracts
64
+ - Technical invariants (what the system guarantees)
65
+ - Failure modes and how each is handled
66
+ - Explicit OPEN_QUESTIONS that block progress
67
+
68
+ Before creating an RFC for a change, check what it affects:
69
+ ```bash
70
+ devkit impact "description of change"
71
+ ```
72
+
73
+ To create an RFC:
74
+ ```bash
75
+ devkit rfc "description"
76
+ ```
77
+
78
+ To open an investigation:
79
+ ```bash
80
+ devkit investigate "description"
81
+ ```
82
+
83
+ ### Phase 4: Adversarial Verification
84
+ Play the role of a hostile environment. For every critical path, ask:
85
+ - What if this service crashes mid-transaction?
86
+ - What if two requests arrive simultaneously?
87
+ - What if the external service is down for 2 hours?
88
+ - What if the queue fills up?
89
+
90
+ Each scenario must have an answer. No answer = OPEN_QUESTION = blocks SpecKit.
91
+
92
+ Verification levels:
93
+ - L1: Structural (no circular deps, all interfaces defined, no unknowns)
94
+ - L2: Scenario (adversarial simulation, all failure modes handled)
95
+ - L3: Formal (TLA+/Alloy for critical invariants — optional, for high-stakes systems)
96
+
97
+ ## Artifacts to Produce
98
+
99
+ Read templates from:
100
+ - [Invariants template](references/invariants.md)
101
+ - [ADR template](references/adr.md)
102
+ - [RFC template](references/rfc.md)
103
+ - [Investigation template](references/investigation.md)
104
+ - [Impact map template](references/impact.md)
105
+
106
+ Save to `.devkit/arch/`.
107
+
108
+ Generate constitution and sync:
109
+ ```bash
110
+ devkit generate-constitution
111
+ devkit sync
112
+ ```
113
+
114
+ **After creating or updating artifacts, always run:**
115
+ ```bash
116
+ devkit validate
117
+ ```
118
+ Fix any errors before proceeding.
119
+
120
+ ## Event Detection During SpecKit
121
+
122
+ ### RFC Trigger
123
+ Developer says: "we also need X", "the client wants Y", "what if we add Z"
124
+
125
+ Check invariants.md. If any invariant is touched:
126
+ > "This touches invariant [I_N]. I'm stopping SpecKit and opening an RFC.
127
+ > Here's what's affected and the cost of the change."
128
+
129
+ ```bash
130
+ devkit impact "description of change"
131
+ devkit rfc "description"
132
+ ```
133
+
134
+ Run delta ArchKit cycle. Resume SpecKit only after RFC is resolved.
135
+
136
+ ### Investigation Trigger
137
+ Developer says: "found a bug in lib X", "benchmark failed", "this doesn't work as expected", "library doesn't support Y"
138
+
139
+ Check which ADR this breaks:
140
+ > "This breaks assumption in [ADR-N]. Opening Investigation."
141
+
142
+ ```bash
143
+ devkit investigate "description"
144
+ ```
145
+
146
+ Present options with costs. Developer decides. Update affected specs.
147
+
148
+ After resolving, regenerate constitution if invariants changed:
149
+ ```bash
150
+ devkit generate-constitution
151
+ devkit sync
152
+ devkit validate
153
+ ```
154
+
155
+ ## Gate: When Can We Move to SpecKit?
156
+
157
+ ```bash
158
+ devkit gate
159
+ ```
160
+
161
+ ALLOWED when:
162
+ - All adversarial scenarios have answers
163
+ - No OPEN_QUESTIONS of blocking type remain
164
+ - All invariants are `verified` or `assumed` with explicit risk noted
165
+ - UX invariants from ProductKit are not violated
166
+ - constitution.md generated
167
+
168
+ BLOCKED when:
169
+ - Any blocking OPEN_QUESTION is unresolved
170
+ - Invariants conflict with UX invariants
171
+ - Critical failure modes are unaddressed
172
+
173
+ ## Handoff
174
+
175
+ When `devkit gate` shows ALLOWED:
176
+
177
+ ```bash
178
+ devkit advance
179
+ devkit status
180
+ ```
181
+
182
+ Then generate summary:
183
+ ```
184
+ ARCHITECTURE VERIFIED
185
+ VARIANT CHOSEN: [name and one-line rationale]
186
+ INVARIANTS: N verified, M assumed (risks noted)
187
+ OPEN_QUESTIONS: none / [list with owners]
188
+ CONSTITUTION: generated at .specify/constitution.md
189
+ READY FOR: SpecKit
190
+ ```
@@ -0,0 +1,25 @@
1
+ # Architecture Decision Record Template
2
+
3
+ ## ADR-XXX: [title]
4
+ DATE:
5
+ STATUS: proposed / accepted / superseded / rejected
6
+
7
+ ## Context
8
+ What situation requires a decision?
9
+
10
+ ## Decision
11
+ What we chose.
12
+
13
+ ## Rationale
14
+ Why this over alternatives.
15
+
16
+ ## Alternatives Considered
17
+ | Option | Why rejected |
18
+ |--------|-------------|
19
+
20
+ ## Consequences
21
+ What becomes easier. What becomes harder. What risks we accept.
22
+
23
+ ## Assumptions
24
+ What must be true for this decision to hold.
25
+ [These become targets for Investigation if they break]
@@ -0,0 +1,13 @@
1
+ # Impact Map Template
2
+
3
+ ## [Component or Decision Name]
4
+ DEPENDS_ON: [list of components/decisions it depends on]
5
+ DEPENDED_BY: [list of components/decisions that depend on it]
6
+ INVARIANTS: [invariants from invariants.md this touches]
7
+ SPECS: [spec files that implement this]
8
+
9
+ ## How to Use
10
+ When RFC or Investigation opens, query this map:
11
+ "What depends on [changed thing]?" → everything in DEPENDED_BY
12
+ "What does [changed thing] depend on?" → everything in DEPENDS_ON
13
+ This gives the full blast radius before any decision is made.
@@ -0,0 +1,9 @@
1
+ # Technical Invariants Template
2
+
3
+ ## I1: [name]
4
+ STATEMENT: what the system guarantees
5
+ RATIONALE: why this matters
6
+ VERIFICATION: how to prove or test this
7
+ FAILURE_MODE: what happens if violated
8
+ STATUS: verified / assumed / unverified
9
+ RISK_IF_ASSUMED: [fill if status is assumed]
@@ -0,0 +1,37 @@
1
+ # Investigation Template — Technical Blocker
2
+
3
+ ## INV-XXX: [title]
4
+ DATE:
5
+ STATUS: open / resolved
6
+ TRIGGERED_BY: [what broke — bug, benchmark, unexpected limitation]
7
+
8
+ ## Broken Assumption
9
+ ASSUMPTION_IN: [ADR-N]
10
+ ASSUMPTION_WAS: [what we believed]
11
+ REALITY: [what we discovered]
12
+
13
+ ## Impact
14
+ INVARIANTS_AT_RISK: [list]
15
+ SPECS_AFFECTED: [list]
16
+
17
+ ## Options
18
+ ### Option A: [name]
19
+ Description. Cost. Technical debt introduced (if any).
20
+
21
+ ### Option B: [name]
22
+ Description. Cost. Technical debt introduced (if any).
23
+
24
+ ### Option C: [name]
25
+ Description. Cost. Technical debt introduced (if any).
26
+
27
+ ## Decision
28
+ CHOSEN: [option]
29
+ RATIONALE: [why]
30
+ DECIDED_BY: developer
31
+ DATE_DECIDED:
32
+
33
+ ## Post-Decision Actions
34
+ - [ ] Update affected ADR or create new one
35
+ - [ ] Update invariants.md if changed
36
+ - [ ] Update affected specs
37
+ - [ ] Document any technical debt in debt.md
@@ -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,74 @@
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.1"
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: Run CLI Init
15
+
16
+ Run the CLI command — it auto-detects project state and creates the structure:
17
+
18
+ ```bash
19
+ devkit init
20
+ ```
21
+
22
+ This will:
23
+ - Detect project state (greenfield / brownfield / upgrade / already initialized)
24
+ - Create `.devkit/` directory structure
25
+ - Generate `STATUS.md` with correct mode and phase
26
+ - Report what was created vs skipped
27
+
28
+ If `.devkit/` already exists, it safely skips (idempotent).
29
+
30
+ ## Step 2: Verify State
31
+
32
+ ```bash
33
+ devkit status
34
+ ```
35
+
36
+ Review the output: mode, current phase, progress. This confirms init worked correctly.
37
+
38
+ ## Step 3: Install spec-kit if not present (optional)
39
+
40
+ Check if `specify` CLI is available:
41
+
42
+ ```bash
43
+ specify --version
44
+ ```
45
+
46
+ If not found, inform the developer (do not block init):
47
+ ```
48
+ Note: spec-kit not found. DevKit works independently.
49
+ If you want SpecKit integration, install with:
50
+ uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
51
+ Then run: specify init . --ai claude
52
+ ```
53
+
54
+ Important: spec-kit installation is optional. DevKit init must succeed regardless of spec-kit availability.
55
+
56
+ ## Step 4: Mode-Specific Setup
57
+
58
+ For **brownfield** mode, also follow [brownfield.md](references/brownfield.md) to reconstruct invariants from existing code.
59
+
60
+ For **upgrade** mode, follow [upgrade.md](references/upgrade.md) to extract artifacts from existing constitution.
61
+
62
+ For **greenfield**, no extra setup needed.
63
+
64
+ ## Step 5: Confirm and Show Next Step
65
+
66
+ ```bash
67
+ devkit status
68
+ ```
69
+
70
+ Tell developer what to do next based on detected mode:
71
+
72
+ - Greenfield: "Start with: /research-kit — describe your idea"
73
+ - Brownfield: "Review .devkit/arch/invariants.md, then /arch-kit to fill gaps"
74
+ - Upgrade: "Review .devkit/arch/invariants.md extracted from constitution"