@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.
- package/dist/constitution.d.ts.map +1 -1
- package/dist/constitution.js +62 -8
- package/dist/constitution.js.map +1 -1
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +6 -2
- package/dist/dashboard.js.map +1 -1
- package/dist/detector.d.ts.map +1 -1
- package/dist/detector.js +5 -2
- package/dist/detector.js.map +1 -1
- package/dist/escalate.d.ts.map +1 -1
- package/dist/escalate.js +8 -3
- package/dist/escalate.js.map +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +57 -10
- package/dist/gate.js.map +1 -1
- package/dist/index.js +14 -7
- package/dist/index.js.map +1 -1
- package/dist/investigate.d.ts.map +1 -1
- package/dist/investigate.js +8 -10
- package/dist/investigate.js.map +1 -1
- package/dist/rfc.d.ts.map +1 -1
- package/dist/rfc.js +8 -10
- package/dist/rfc.js.map +1 -1
- package/dist/scaffold.d.ts +2 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +52 -4
- package/dist/scaffold.js.map +1 -1
- package/dist/schemas.js +2 -2
- package/dist/schemas.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +7 -4
- package/dist/status.js.map +1 -1
- package/dist/validator.js +1 -1
- package/dist/validator.js.map +1 -1
- package/dist/watch.js +10 -10
- package/dist/watch.js.map +1 -1
- package/package.json +4 -5
- package/skills/arch-kit/README.md +195 -0
- package/skills/arch-kit/SKILL.md +190 -0
- package/skills/arch-kit/references/adr.md +25 -0
- package/skills/arch-kit/references/impact.md +13 -0
- package/skills/arch-kit/references/invariants.md +9 -0
- package/skills/arch-kit/references/investigation.md +37 -0
- package/skills/arch-kit/references/rfc.md +36 -0
- package/skills/devkit-init/SKILL.md +74 -0
- package/skills/devkit-init/references/brownfield.md +147 -0
- package/skills/devkit-init/references/greenfield.md +44 -0
- package/skills/devkit-init/references/upgrade.md +103 -0
- package/skills/product-kit/README.md +135 -0
- package/skills/product-kit/SKILL.md +126 -0
- package/skills/product-kit/references/roadmap.md +16 -0
- package/skills/product-kit/references/users.md +14 -0
- package/skills/product-kit/references/ux_invariants.md +8 -0
- package/skills/qa-kit/README.md +188 -0
- package/skills/qa-kit/SKILL.md +155 -0
- package/skills/qa-kit/references/assumption_checks.md +10 -0
- package/skills/qa-kit/references/coverage_map.md +19 -0
- package/skills/qa-kit/references/test_contracts.md +10 -0
- package/skills/research-kit/README.md +139 -0
- package/skills/research-kit/SKILL.md +106 -0
- package/skills/research-kit/references/assumptions.md +9 -0
- package/skills/research-kit/references/feasibility.md +15 -0
- package/skills/research-kit/references/market.md +13 -0
- package/skills/research-kit/references/unknowns.md +9 -0
- package/skills/spec-kit/README.md +139 -0
- 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"
|