@dug-21/unimatrix 0.5.9 → 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.
- package/package.json +5 -4
- package/protocols/README.md +126 -0
- package/protocols/uni-agent-routing.md +187 -0
- package/protocols/uni-bugfix-protocol.md +547 -0
- package/protocols/uni-delivery-protocol.md +607 -0
- package/protocols/uni-design-protocol.md +379 -0
- package/skills/retro/SKILL.md +2 -2
- package/skills/uni-init/SKILL.md +12 -2
- package/skills/uni-knowledge-lookup/SKILL.md +13 -13
- package/skills/uni-knowledge-search/SKILL.md +8 -8
- package/skills/uni-query-patterns/SKILL.md +22 -22
- package/skills/uni-release/SKILL.md +68 -1
- package/skills/uni-retro/SKILL.md +46 -85
- package/skills/uni-review-pr/SKILL.md +14 -0
- package/skills/uni-seed/SKILL.md +20 -14
- package/skills/uni-store-adr/SKILL.md +18 -18
- package/skills/uni-store-lesson/SKILL.md +19 -19
- package/skills/uni-store-pattern/SKILL.md +18 -18
- package/skills/uni-store-procedure/SKILL.md +18 -18
- package/skills/uni-zero/SKILL.md +235 -0
- package/skills/uni-record-outcome/SKILL.md +0 -96
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
# Design Session Protocol (Session 1)
|
|
2
|
+
|
|
3
|
+
Triggers on: specification, architecture, design, research, scope, risk strategy, SCOPE.md creation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Execution Model
|
|
8
|
+
|
|
9
|
+
Session 1 produces three sacred source-of-truth documents, a scope risk assessment, a vision alignment report, an implementation brief, and an acceptance map. All artifacts land in `product/features/{feature-id}/` as untracked files — no git operations occur during design. Session 2 (Delivery) creates the feature branch, commits the design artifacts, and continues from there.
|
|
10
|
+
|
|
11
|
+
**You are the Design Leader.** Read the SM agent definition (`.claude/agents/uni/uni-scrum-master.md`) for role boundaries. You orchestrate — you NEVER generate content. Spawn specialist agents for all work.
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
Design Leader (you) Design Agents
|
|
15
|
+
─────────────────── ─────────────
|
|
16
|
+
read protocol + SCOPE.md (or initiate)
|
|
17
|
+
spawn researcher (Phase 1) ─────────────────────────► SCOPE.md written
|
|
18
|
+
◄────────────────────────────────────────────────────
|
|
19
|
+
human approves SCOPE.md
|
|
20
|
+
spawn risk strategist (Phase 1b) ───────────────────► scope risk assessment
|
|
21
|
+
◄────────────────────────────────────────────────────
|
|
22
|
+
spawn 2 specialists (Phase 2a) ─────────────────────► produce arch + spec
|
|
23
|
+
◄────────────────────────────────────────────────────
|
|
24
|
+
spawn risk strategist (Phase 2a+) ──────────────────► produce risk strategy
|
|
25
|
+
◄────────────────────────────────────────────────────
|
|
26
|
+
spawn vision guardian (Phase 2b)
|
|
27
|
+
spawn synthesizer (Phase 2c)
|
|
28
|
+
return all artifacts to human
|
|
29
|
+
human reviews and approves
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Session 1 ends when artifacts are returned to the human.** The human decides whether to proceed to Session 2 (Delivery).
|
|
33
|
+
|
|
34
|
+
### Concurrency Rules
|
|
35
|
+
|
|
36
|
+
Each message batches ALL related operations of the same type:
|
|
37
|
+
|
|
38
|
+
- ALWAYS spawn all agents WITHIN each phase step in ONE message via Task tool
|
|
39
|
+
- ALWAYS batch ALL file reads/writes/edits in ONE message
|
|
40
|
+
|
|
41
|
+
### Design Rules
|
|
42
|
+
|
|
43
|
+
- Output goes to `product/features/{feature-id}/` ONLY
|
|
44
|
+
- NO code changes. NO file edits outside `product/features/`
|
|
45
|
+
- NO launching delivery agents (uni-rust-dev, uni-pseudocode, uni-tester)
|
|
46
|
+
- Agents return: artifact paths + key decisions + open questions (NOT full file contents)
|
|
47
|
+
|
|
48
|
+
### No Git Operations in Design
|
|
49
|
+
|
|
50
|
+
Design produces artifacts in `product/features/{feature-id}/` only. No branch is created, no commits are made, no PR is opened. The working tree stays on whatever branch is currently checked out. Git operations begin in Session 2 (Delivery), which creates the feature branch and commits the design artifacts as its first action.
|
|
51
|
+
|
|
52
|
+
### Feature Cycle Attribution
|
|
53
|
+
|
|
54
|
+
Before spawning any agents, call `context_cycle` to declare the feature cycle:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
context_cycle(
|
|
58
|
+
type: "start",
|
|
59
|
+
topic: "{feature-id}",
|
|
60
|
+
next_phase: "scope",
|
|
61
|
+
agent_id: "{feature-id}-design-leader"
|
|
62
|
+
)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
This sets session-level feature attribution so all subsequent tool calls are tracked against this feature.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Flow: Phase 1 + Phase 2
|
|
70
|
+
|
|
71
|
+
### Phase 1: Research & Scope Definition
|
|
72
|
+
|
|
73
|
+
**Participants**: Human + uni-researcher
|
|
74
|
+
|
|
75
|
+
The Design Leader spawns `uni-researcher` to collaborate with the human on scope definition.
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
Task(
|
|
79
|
+
subagent_type: "uni-researcher",
|
|
80
|
+
prompt: "You are researching the problem space for {feature-id}.
|
|
81
|
+
Your agent ID: {feature-id}-researcher
|
|
82
|
+
|
|
83
|
+
High-level intent: {human's description}
|
|
84
|
+
|
|
85
|
+
Explore the problem space — existing codebase patterns, technical landscape,
|
|
86
|
+
constraints, and relevant project knowledge.
|
|
87
|
+
|
|
88
|
+
Synthesize findings and propose scope boundaries with rationale.
|
|
89
|
+
Write SCOPE.md to product/features/{feature-id}/SCOPE.md.
|
|
90
|
+
|
|
91
|
+
Return: SCOPE.md path, key findings, open questions for human."
|
|
92
|
+
)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
After the researcher returns, the Design Leader presents SCOPE.md to the human for review and approval. **Do not proceed to Phase 1b until the human approves SCOPE.md.**
|
|
96
|
+
|
|
97
|
+
### Phase 1b: Scope Risk Assessment
|
|
98
|
+
|
|
99
|
+
**Participants**: uni-risk-strategist (scope-risk mode)
|
|
100
|
+
|
|
101
|
+
After SCOPE.md approval, the Design Leader spawns the risk strategist in scope-risk mode. This surfaces product-level risks (technology bets, dependency risks, scope boundary risks) BEFORE the architect and spec writer begin — so they can design with risk awareness.
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Task(
|
|
105
|
+
subagent_type: "uni-risk-strategist",
|
|
106
|
+
prompt: "Your agent ID: {feature-id}-agent-0-scope-risk
|
|
107
|
+
MODE: scope-risk
|
|
108
|
+
|
|
109
|
+
Assess scope-level risks for {feature-id}.
|
|
110
|
+
|
|
111
|
+
Read these artifacts:
|
|
112
|
+
- SCOPE.md: product/features/{id}/SCOPE.md
|
|
113
|
+
- Product vision: product/PRODUCT-VISION.md
|
|
114
|
+
|
|
115
|
+
Produce SCOPE-RISK-ASSESSMENT.md at product/features/{id}/SCOPE-RISK-ASSESSMENT.md.
|
|
116
|
+
Return: file path, risk summary, top 3 risks for architect attention."
|
|
117
|
+
)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Wait for the scope risk assessment to complete before proceeding to Phase 2.
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
context_cycle(
|
|
124
|
+
type: "phase-end",
|
|
125
|
+
topic: "{feature-id}",
|
|
126
|
+
phase: "scope",
|
|
127
|
+
outcome: "SCOPE.md approved. Scope risk assessment complete.",
|
|
128
|
+
next_phase: "design",
|
|
129
|
+
agent_id: "{feature-id}-design-leader"
|
|
130
|
+
)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Phase 2: Design (Three Source Documents + Vision + Synthesis)
|
|
134
|
+
|
|
135
|
+
Phase 2 has five sequential steps: 2a (architect + spec parallel) → 2a+ (risk strategist) → 2b (vision check) → 2c (synthesis) → 2d (return to human).
|
|
136
|
+
|
|
137
|
+
#### Phase 2a: Architect + Specification (Parallel, ONE message)
|
|
138
|
+
|
|
139
|
+
The Design Leader spawns two specialists in parallel:
|
|
140
|
+
|
|
141
|
+
**uni-architect → Architecture** (`architecture/ARCHITECTURE.md` + `ADR-NNN-{name}.md`)
|
|
142
|
+
|
|
143
|
+
- High-level system design, component breakdown and boundaries
|
|
144
|
+
- How components interact (interfaces, contracts, data flow)
|
|
145
|
+
- Technology decisions with rationale
|
|
146
|
+
- Integration points and dependencies
|
|
147
|
+
- ADRs as individual files in `architecture/`
|
|
148
|
+
- **Store each ADR in Unimatrix** immediately after writing the file — `context_store(category: "decision", topic: "{feature-id}", feature_cycle: "{feature-id}", title: "{ADR title}", tags: ["adr", "{feature-id}"])` — so delivery agents can retrieve decisions via search without reading every ADR file
|
|
149
|
+
|
|
150
|
+
**uni-specification → Specification** (`specification/SPECIFICATION.md`)
|
|
151
|
+
|
|
152
|
+
- Functional and non-functional requirements
|
|
153
|
+
- User workflows and use cases
|
|
154
|
+
- Acceptance criteria with verification methods
|
|
155
|
+
- Domain models and ubiquitous language
|
|
156
|
+
- Constraints and dependencies
|
|
157
|
+
|
|
158
|
+
Each specialist receives:
|
|
159
|
+
1. `Your agent ID: {feature-id}-agent-N-{role}`
|
|
160
|
+
2. Path to approved SCOPE.md
|
|
161
|
+
3. Path to SCOPE-RISK-ASSESSMENT.md (from Phase 1b)
|
|
162
|
+
4. Task description
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
# Spawn both in ONE message:
|
|
166
|
+
Task(subagent_type: "uni-architect", prompt: "Your agent ID: {id}-agent-1-architect
|
|
167
|
+
...
|
|
168
|
+
Read scope risk assessment: product/features/{id}/SCOPE-RISK-ASSESSMENT.md
|
|
169
|
+
Address SR-XX risks in your architecture decisions where applicable.
|
|
170
|
+
|
|
171
|
+
After writing each ADR file, store it in Unimatrix:
|
|
172
|
+
context_store(category: 'decision', topic: '{feature-id}', feature_cycle: '{feature-id}',
|
|
173
|
+
title: '{ADR title}', tags: ['adr', '{feature-id}'], content: '{full ADR content}')
|
|
174
|
+
...")
|
|
175
|
+
Task(subagent_type: "uni-specification", prompt: "Your agent ID: {id}-agent-2-spec
|
|
176
|
+
...
|
|
177
|
+
Read scope risk assessment: product/features/{id}/SCOPE-RISK-ASSESSMENT.md
|
|
178
|
+
Consider SR-XX risks when defining constraints and acceptance criteria. ...")
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Wait for BOTH to complete before proceeding to Phase 2a+.
|
|
182
|
+
|
|
183
|
+
#### Phase 2a+: Risk Strategist (After Architect + Specification)
|
|
184
|
+
|
|
185
|
+
The Design Leader spawns the risk strategist with the architecture and specification as additional inputs. This allows risk identification against concrete component boundaries, ADRs, acceptance criteria, and domain models — not just the scope.
|
|
186
|
+
|
|
187
|
+
**uni-risk-strategist → Risk-Based Test Strategy** (`RISK-TEST-STRATEGY.md`)
|
|
188
|
+
|
|
189
|
+
- Feature-level risk identification — what could fail and impact users
|
|
190
|
+
- Risk-to-testing-scenario mapping
|
|
191
|
+
- Coverage requirements per risk
|
|
192
|
+
- Prioritization by severity and likelihood
|
|
193
|
+
- Integration risks, edge cases, failure modes
|
|
194
|
+
|
|
195
|
+
The risk strategist receives:
|
|
196
|
+
1. `Your agent ID: {feature-id}-agent-3-risk`
|
|
197
|
+
2. Path to approved SCOPE.md
|
|
198
|
+
3. Paths to architecture and specification artifacts (from Phase 2a)
|
|
199
|
+
4. Task description
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
Task(
|
|
203
|
+
subagent_type: "uni-risk-strategist",
|
|
204
|
+
prompt: "Your agent ID: {id}-agent-3-risk
|
|
205
|
+
MODE: architecture-risk
|
|
206
|
+
...
|
|
207
|
+
Read these artifacts for context:
|
|
208
|
+
- SCOPE.md: product/features/{id}/SCOPE.md
|
|
209
|
+
- Architecture: product/features/{id}/architecture/ARCHITECTURE.md
|
|
210
|
+
- ADRs: {list ADR file paths from architect's return}
|
|
211
|
+
- Specification: product/features/{id}/specification/SPECIFICATION.md
|
|
212
|
+
- Scope Risk Assessment: product/features/{id}/SCOPE-RISK-ASSESSMENT.md
|
|
213
|
+
|
|
214
|
+
Use the architecture (component boundaries, integration points, ADRs)
|
|
215
|
+
and specification (acceptance criteria, domain models, constraints)
|
|
216
|
+
to inform your risk analysis. Identify risks that are specific to
|
|
217
|
+
the designed architecture — not generic risks.
|
|
218
|
+
|
|
219
|
+
Trace each SR-XX scope risk in the Scope Risk Traceability table."
|
|
220
|
+
)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Wait for the risk strategist to complete before proceeding to Phase 2b.
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
context_cycle(
|
|
227
|
+
type: "phase-end",
|
|
228
|
+
topic: "{feature-id}",
|
|
229
|
+
phase: "design",
|
|
230
|
+
outcome: "Architecture, specification, and risk strategy complete.",
|
|
231
|
+
next_phase: "design-review",
|
|
232
|
+
agent_id: "{feature-id}-design-leader"
|
|
233
|
+
)
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
#### Phase 2b: Vision Alignment Check
|
|
237
|
+
|
|
238
|
+
Spawn `uni-vision-guardian`:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
Task(
|
|
242
|
+
subagent_type: "uni-vision-guardian",
|
|
243
|
+
prompt: "Your agent ID: {feature-id}-vision-guardian
|
|
244
|
+
|
|
245
|
+
Read the product vision: product/PRODUCT-VISION.md
|
|
246
|
+
Read the three source documents:
|
|
247
|
+
- product/features/{id}/architecture/ARCHITECTURE.md
|
|
248
|
+
- product/features/{id}/specification/SPECIFICATION.md
|
|
249
|
+
- product/features/{id}/RISK-TEST-STRATEGY.md
|
|
250
|
+
Read the scope: product/features/{id}/SCOPE.md
|
|
251
|
+
Read the scope risk assessment: product/features/{id}/SCOPE-RISK-ASSESSMENT.md
|
|
252
|
+
|
|
253
|
+
Produce ALIGNMENT-REPORT.md at product/features/{id}/ALIGNMENT-REPORT.md.
|
|
254
|
+
Flag any variances requiring human attention.
|
|
255
|
+
Return: report path, variance summary."
|
|
256
|
+
)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
#### Phase 2c: Synthesizer (Fresh Context Window)
|
|
260
|
+
|
|
261
|
+
After vision alignment, spawn `uni-synthesizer` with a fresh context window:
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
Task(
|
|
265
|
+
subagent_type: "uni-synthesizer",
|
|
266
|
+
prompt: "You are compiling the implementation brief for {feature-id}.
|
|
267
|
+
Your agent ID: {feature-id}-synthesizer
|
|
268
|
+
|
|
269
|
+
Read these artifacts:
|
|
270
|
+
- product/features/{id}/SCOPE.md
|
|
271
|
+
- product/features/{id}/SCOPE-RISK-ASSESSMENT.md
|
|
272
|
+
- product/features/{id}/specification/SPECIFICATION.md
|
|
273
|
+
- product/features/{id}/architecture/ARCHITECTURE.md
|
|
274
|
+
- product/features/{id}/architecture/ADR-*.md (all ADR files)
|
|
275
|
+
- product/features/{id}/RISK-TEST-STRATEGY.md
|
|
276
|
+
- product/features/{id}/ALIGNMENT-REPORT.md
|
|
277
|
+
|
|
278
|
+
ADR file paths from architect: {list from architect's return}
|
|
279
|
+
Vision variances: {from vision guardian's return}
|
|
280
|
+
|
|
281
|
+
Produce: IMPLEMENTATION-BRIEF.md, ACCEPTANCE-MAP.md, GH Issue.
|
|
282
|
+
Return: file paths + GH Issue URL."
|
|
283
|
+
)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
The synthesizer gets a fresh context window — it reads artifacts directly for higher quality synthesis.
|
|
287
|
+
|
|
288
|
+
#### Phase 2d: Return to Human
|
|
289
|
+
|
|
290
|
+
```
|
|
291
|
+
context_cycle(
|
|
292
|
+
type: "phase-end",
|
|
293
|
+
topic: "{feature-id}",
|
|
294
|
+
phase: "design-review",
|
|
295
|
+
outcome: "Vision aligned. Synthesis complete.",
|
|
296
|
+
next_phase: "spec",
|
|
297
|
+
agent_id: "{feature-id}-design-leader"
|
|
298
|
+
)
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Then returns to the human:
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
SESSION 1 COMPLETE — Design artifacts ready for review.
|
|
305
|
+
|
|
306
|
+
GH Issue: {URL}
|
|
307
|
+
|
|
308
|
+
Artifacts (untracked — git begins in Session 2):
|
|
309
|
+
- product/features/{feature-id}/SCOPE.md
|
|
310
|
+
- product/features/{feature-id}/SCOPE-RISK-ASSESSMENT.md
|
|
311
|
+
- product/features/{feature-id}/architecture/ARCHITECTURE.md
|
|
312
|
+
- product/features/{feature-id}/specification/SPECIFICATION.md
|
|
313
|
+
- product/features/{feature-id}/RISK-TEST-STRATEGY.md
|
|
314
|
+
- product/features/{feature-id}/ALIGNMENT-REPORT.md
|
|
315
|
+
- product/features/{feature-id}/IMPLEMENTATION-BRIEF.md
|
|
316
|
+
- product/features/{feature-id}/ACCEPTANCE-MAP.md
|
|
317
|
+
|
|
318
|
+
Vision Alignment: {summary}
|
|
319
|
+
Variances requiring approval: {list or "none"}
|
|
320
|
+
Open questions: {list or "none"}
|
|
321
|
+
|
|
322
|
+
Human action required: Review design artifacts. Then start Session 2 to deliver.
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Session 1 ends here.** No branch, no commit, no PR — artifacts sit untracked in `product/features/{feature-id}/` until Session 2 picks them up.
|
|
326
|
+
|
|
327
|
+
---
|
|
328
|
+
|
|
329
|
+
## Agent Context Budget
|
|
330
|
+
|
|
331
|
+
Each spawned agent receives:
|
|
332
|
+
- Agent ID
|
|
333
|
+
- Task description (2-3 sentences)
|
|
334
|
+
- SCOPE.md path (agents read it themselves)
|
|
335
|
+
- Specific file paths to read (not file contents)
|
|
336
|
+
|
|
337
|
+
Do NOT paste full documents into agent prompts. Agents read files themselves.
|
|
338
|
+
|
|
339
|
+
---
|
|
340
|
+
|
|
341
|
+
## Quick Reference: Message Map
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
DESIGN LEADER (you):
|
|
345
|
+
Init: context_cycle(type: "start", topic: "{feature-id}", next_phase: "scope", agent_id: "{feature-id}-design-leader")
|
|
346
|
+
Phase 1: Task(uni-researcher) — scope exploration with human
|
|
347
|
+
...human approves SCOPE.md...
|
|
348
|
+
Phase 1b: Task(uni-risk-strategist, MODE: scope-risk) — scope risk assessment
|
|
349
|
+
...wait...
|
|
350
|
+
context_cycle(type: "phase-end", phase: "scope", outcome: "...", next_phase: "design", ...)
|
|
351
|
+
Phase 2a: Task(uni-architect) + Task(uni-specification) — parallel, ONE message
|
|
352
|
+
...wait for both...
|
|
353
|
+
Phase 2a+: Task(uni-risk-strategist, MODE: architecture-risk) — receives arch + spec + scope risks
|
|
354
|
+
...wait...
|
|
355
|
+
context_cycle(type: "phase-end", phase: "design", outcome: "...", next_phase: "design-review", ...)
|
|
356
|
+
Phase 2b: Task(uni-vision-guardian) — alignment check
|
|
357
|
+
Phase 2c: Task(uni-synthesizer) — brief + maps + GH Issue (fresh context)
|
|
358
|
+
Phase 2d: context_cycle(type: "phase-end", phase: "design-review", outcome: "...", next_phase: "spec", ...) — SESSION 1 ENDS
|
|
359
|
+
return artifacts to human (no git ops — artifacts are untracked)
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Outcome Recording
|
|
365
|
+
|
|
366
|
+
After Phase 2d, record the phase transition (do NOT call `stop` — the cycle remains open for the delivery session):
|
|
367
|
+
|
|
368
|
+
```
|
|
369
|
+
context_cycle(
|
|
370
|
+
type: "phase-end",
|
|
371
|
+
topic: "{feature-id}",
|
|
372
|
+
phase: "design-review",
|
|
373
|
+
outcome: "Vision aligned. Synthesis complete.",
|
|
374
|
+
next_phase: "spec",
|
|
375
|
+
agent_id: "{feature-id}-design-leader"
|
|
376
|
+
)
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
The cycle is closed by `context_cycle(type: "stop")` at the end of Session 2 (delivery). If delivery never occurs, the cycle will be drained by GC or `context_status(maintain: true)`.
|
package/skills/retro/SKILL.md
CHANGED
|
@@ -26,7 +26,7 @@ Gather all evidence about the shipped feature:
|
|
|
26
26
|
|
|
27
27
|
1. **Run retrospective analysis** (if observation data exists):
|
|
28
28
|
```
|
|
29
|
-
|
|
29
|
+
mcp__unimatrix__context_cycle_review(feature_cycle: "{feature-id}")
|
|
30
30
|
```
|
|
31
31
|
This returns structured data: metrics, hotspots, baseline comparisons, narratives, and recommendations.
|
|
32
32
|
|
|
@@ -36,7 +36,7 @@ Gather all evidence about the shipped feature:
|
|
|
36
36
|
- `Warning` hotspots → potential lessons or procedure gaps
|
|
37
37
|
- `Info` hotspots → note trends, may not need action
|
|
38
38
|
- Key hotspot types to watch:
|
|
39
|
-
- `
|
|
39
|
+
- `orphaned_calls` → tool invocations with no terminal event — check context overflow or parallel call management
|
|
40
40
|
- `sleep_workarounds` → agents using sleep instead of run_in_background
|
|
41
41
|
- `cold_restart` → context loss after gaps, agents re-reading files
|
|
42
42
|
- `coordinator_respawns` → SM lifetime/handoff issues
|
package/skills/uni-init/SKILL.md
CHANGED
|
@@ -10,7 +10,7 @@ description: "Initialize Unimatrix in a repository: append knowledge block to CL
|
|
|
10
10
|
Before running this skill:
|
|
11
11
|
|
|
12
12
|
1. **Skill files installed**: Both `uni-init/SKILL.md` and `uni-seed/SKILL.md` must be present in `.claude/skills/` in the target repository.
|
|
13
|
-
2. **MCP server wired** (for `/uni-seed`): The Unimatrix MCP server (`unimatrix
|
|
13
|
+
2. **MCP server wired** (for `/uni-seed`): The Unimatrix MCP server (`unimatrix`) must be running and configured in your Claude Code `settings.json`. This skill (`/uni-init`) does not require MCP, but `/uni-seed` does.
|
|
14
14
|
|
|
15
15
|
If you need to install the Unimatrix server or wire MCP, consult the installation documentation.
|
|
16
16
|
|
|
@@ -128,8 +128,18 @@ Knowledge engine (MCP server). Makes agent expertise searchable, trustworthy, an
|
|
|
128
128
|
|
|
129
129
|
| Skill | When to Use |
|
|
130
130
|
|-------|-------------|
|
|
131
|
-
| `/uni-init` | First-time setup: wire CLAUDE.md and get agent
|
|
131
|
+
| `/uni-init` | First-time setup: wire CLAUDE.md and get agent orientation |
|
|
132
132
|
| `/uni-seed` | Populate Unimatrix with foundational repo knowledge |
|
|
133
|
+
| `/uni-store-adr` | After each architectural decision — stores the ADR |
|
|
134
|
+
| `/uni-store-lesson` | After failures and gate rejections — prevents recurrence |
|
|
135
|
+
| `/uni-store-pattern` | When a reusable implementation pattern emerges |
|
|
136
|
+
| `/uni-store-procedure` | When a step-by-step how-to technique evolves |
|
|
137
|
+
| `/uni-knowledge-search` | Semantic search across knowledge before implementing |
|
|
138
|
+
| `/uni-knowledge-lookup` | Deterministic lookup by feature, category, or ID |
|
|
139
|
+
| `/uni-query-patterns` | Query component patterns before designing or coding |
|
|
140
|
+
| `/uni-retro` | Post-merge retrospective — extract and store what was learned |
|
|
141
|
+
| `/uni-review-pr` | PR security review and merge readiness check |
|
|
142
|
+
| `/uni-zero` | Strategic advisor for product evolution and vision alignment |
|
|
133
143
|
|
|
134
144
|
### Knowledge Categories
|
|
135
145
|
|
|
@@ -34,27 +34,27 @@ Call the `mcp__unimatrix__context_lookup` MCP tool:
|
|
|
34
34
|
|
|
35
35
|
**Get all ADRs for a specific feature:**
|
|
36
36
|
```
|
|
37
|
-
mcp__unimatrix__context_lookup(topic: "nxs-002", category: "decision", helpful: true)
|
|
37
|
+
mcp__unimatrix__context_lookup({"topic": "nxs-002", "category": "decision", "helpful": true})
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
**Get a specific entry by ID (full content):**
|
|
41
41
|
```
|
|
42
|
-
mcp__unimatrix__context_lookup(id: 42, format: "markdown")
|
|
42
|
+
mcp__unimatrix__context_lookup({"id": 42, "format": "markdown"})
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**Find all deprecated decisions:**
|
|
46
46
|
```
|
|
47
|
-
mcp__unimatrix__context_lookup(category: "decision", status: "deprecated")
|
|
47
|
+
mcp__unimatrix__context_lookup({"category": "decision", "status": "deprecated"})
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
**Find entries tagged with a specific domain:**
|
|
51
51
|
```
|
|
52
|
-
mcp__unimatrix__context_lookup(category: "decision", tags: ["adr", "serialization"])
|
|
52
|
+
mcp__unimatrix__context_lookup({"category": "decision", "tags": ["adr", "serialization"]})
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
**Get all knowledge for a feature (any category):**
|
|
56
56
|
```
|
|
57
|
-
mcp__unimatrix__context_lookup(topic: "vnc-001")
|
|
57
|
+
mcp__unimatrix__context_lookup({"topic": "vnc-001"})
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
### Helpful Vote Guidance
|
|
@@ -72,7 +72,7 @@ Note: `context_lookup` already records a doubled access signal automatically (×
|
|
|
72
72
|
If you already have an entry ID (from a prior search or lookup result), use `context_get` for direct retrieval:
|
|
73
73
|
|
|
74
74
|
```
|
|
75
|
-
mcp__unimatrix__context_get(id: 42, format: "markdown")
|
|
75
|
+
mcp__unimatrix__context_get({"id": 42, "format": "markdown"})
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
This is faster than a lookup with an ID filter and always returns full content.
|
|
@@ -95,21 +95,21 @@ This is faster than a lookup with an ID filter and always returns full content.
|
|
|
95
95
|
|
|
96
96
|
**Before writing a new ADR (architect):**
|
|
97
97
|
```
|
|
98
|
-
1. mcp__unimatrix__context_lookup(topic: "{feature-id}", category: "decision")
|
|
98
|
+
1. mcp__unimatrix__context_lookup({"topic": "{feature-id}", "category": "decision"})
|
|
99
99
|
→ See what ADRs already exist for this feature
|
|
100
|
-
2. mcp__unimatrix__context_lookup(category: "decision", tags: ["adr", "{domain}"])
|
|
100
|
+
2. mcp__unimatrix__context_lookup({"category": "decision", "tags": ["adr", "{domain}"]})
|
|
101
101
|
→ See ADRs across features in the same domain
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
**Before implementing a component (developer):**
|
|
105
105
|
```
|
|
106
|
-
1. mcp__unimatrix__context_lookup(topic: "{feature-id}", category: "decision", format: "markdown")
|
|
106
|
+
1. mcp__unimatrix__context_lookup({"topic": "{feature-id}", "category": "decision", "format": "markdown"})
|
|
107
107
|
→ Read all architectural decisions for this feature
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
**Checking for deprecated knowledge:**
|
|
111
111
|
```
|
|
112
|
-
mcp__unimatrix__context_lookup(category: "decision", status: "deprecated", topic: "{feature-id}")
|
|
112
|
+
mcp__unimatrix__context_lookup({"category": "decision", "status": "deprecated", "topic": "{feature-id}"})
|
|
113
113
|
→ See what decisions have been superseded
|
|
114
114
|
```
|
|
115
115
|
|
|
@@ -121,8 +121,8 @@ Lookup may surface entries that are outdated or incorrect. Fix them:
|
|
|
121
121
|
|
|
122
122
|
| Situation | Action |
|
|
123
123
|
|-----------|--------|
|
|
124
|
-
| Entry is **wrong** | `mcp__unimatrix__context_correct(original_id:
|
|
125
|
-
| Entry is **outdated** | `mcp__unimatrix__context_deprecate(id:
|
|
126
|
-
| Entry is **suspicious** | `mcp__unimatrix__context_quarantine(id:
|
|
124
|
+
| Entry is **wrong** | `mcp__unimatrix__context_correct({"original_id": 1234, "content": "{corrected version}", "reason": "{why}"})` — `original_id` is an integer, never quote it |
|
|
125
|
+
| Entry is **outdated** | `mcp__unimatrix__context_deprecate({"id": 1234, "reason": "{why}"})` — `id` is an integer, never quote it |
|
|
126
|
+
| Entry is **suspicious** | `mcp__unimatrix__context_quarantine({"id": 1234, "reason": "{concern}"})` — Admin only; `id` is an integer |
|
|
127
127
|
|
|
128
128
|
Every agent shares responsibility for knowledge quality. Don't leave wrong entries for the next agent to trip over.
|
|
@@ -31,22 +31,22 @@ Call the `mcp__unimatrix__context_search` MCP tool:
|
|
|
31
31
|
|
|
32
32
|
**Find ADRs about error handling across all features:**
|
|
33
33
|
```
|
|
34
|
-
mcp__unimatrix__context_search(query: "error handling strategy", category: "decision", helpful: true)
|
|
34
|
+
mcp__unimatrix__context_search({"query": "error handling strategy", "category": "decision", "helpful": true})
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
**Find anything related to MCP transport:**
|
|
38
38
|
```
|
|
39
|
-
mcp__unimatrix__context_search(query: "MCP transport stdio protocol")
|
|
39
|
+
mcp__unimatrix__context_search({"query": "MCP transport stdio protocol"})
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
**Find conventions about testing in a specific feature:**
|
|
43
43
|
```
|
|
44
|
-
mcp__unimatrix__context_search(query: "test patterns integration", topic: "nxs-001")
|
|
44
|
+
mcp__unimatrix__context_search({"query": "test patterns integration", "topic": "nxs-001"})
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
**Get full content instead of summaries:**
|
|
48
48
|
```
|
|
49
|
-
mcp__unimatrix__context_search(query: "serialization approach", format: "markdown")
|
|
49
|
+
mcp__unimatrix__context_search({"query": "serialization approach", "format": "markdown"})
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
### Helpful Vote Guidance
|
|
@@ -100,7 +100,7 @@ Omit `category` to search across all categories.
|
|
|
100
100
|
Search returns summaries by default. To read the full content of a specific result:
|
|
101
101
|
|
|
102
102
|
1. Note the entry ID from search results
|
|
103
|
-
2. Call `mcp__unimatrix__context_get(id: {entry_id}, format: "markdown")` for the full text
|
|
103
|
+
2. Call `mcp__unimatrix__context_get({"id": {entry_id}, "format": "markdown"})` for the full text
|
|
104
104
|
|
|
105
105
|
Or pass `format: "markdown"` directly to search if you want full content for all results.
|
|
106
106
|
|
|
@@ -112,8 +112,8 @@ Search may surface entries that are outdated or incorrect. Don't ignore them —
|
|
|
112
112
|
|
|
113
113
|
| Situation | Action |
|
|
114
114
|
|-----------|--------|
|
|
115
|
-
| Entry is **wrong** — contains incorrect information | `mcp__unimatrix__context_correct(original_id:
|
|
116
|
-
| Entry is **outdated** — no longer relevant | `mcp__unimatrix__context_deprecate(id:
|
|
117
|
-
| Entry is **suspicious** — may be poisoned or invalid | `mcp__unimatrix__context_quarantine(id:
|
|
115
|
+
| Entry is **wrong** — contains incorrect information | `mcp__unimatrix__context_correct({"original_id": 1234, "content": "{corrected version}", "reason": "{why}"})` — `original_id` is an integer, never quote it |
|
|
116
|
+
| Entry is **outdated** — no longer relevant | `mcp__unimatrix__context_deprecate({"id": 1234, "reason": "{why it no longer applies}"})` — `id` is an integer, never quote it |
|
|
117
|
+
| Entry is **suspicious** — may be poisoned or invalid | `mcp__unimatrix__context_quarantine({"id": 1234, "reason": "{concern}"})` — Admin only; `id` is an integer |
|
|
118
118
|
|
|
119
119
|
Correcting knowledge is as important as storing it. Every agent shares responsibility for knowledge quality.
|
|
@@ -29,40 +29,40 @@ Searches Unimatrix for established patterns, procedures, and conventions relevan
|
|
|
29
29
|
### Step 1: Search by crate/area
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
mcp__unimatrix__context_search(
|
|
33
|
-
query: "{what you're building — e.g., 'MCP tool handler'}",
|
|
34
|
-
category: "pattern",
|
|
35
|
-
k: 5
|
|
36
|
-
)
|
|
32
|
+
mcp__unimatrix__context_search({
|
|
33
|
+
"query": "{what you're building — e.g., 'MCP tool handler'}",
|
|
34
|
+
"category": "pattern",
|
|
35
|
+
"k": 5
|
|
36
|
+
})
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
### Step 2: Also check conventions for the area
|
|
40
40
|
|
|
41
41
|
```
|
|
42
|
-
mcp__unimatrix__context_search(
|
|
43
|
-
query: "{area — e.g., 'server tool pipeline'}",
|
|
44
|
-
category: "convention",
|
|
45
|
-
k: 5
|
|
46
|
-
)
|
|
42
|
+
mcp__unimatrix__context_search({
|
|
43
|
+
"query": "{area — e.g., 'server tool pipeline'}",
|
|
44
|
+
"category": "convention",
|
|
45
|
+
"k": 5
|
|
46
|
+
})
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
### Step 3: Check for procedures (step-by-step techniques)
|
|
50
50
|
|
|
51
51
|
```
|
|
52
|
-
mcp__unimatrix__context_search(
|
|
53
|
-
query: "{task — e.g., 'adding a new MCP tool'}",
|
|
54
|
-
category: "procedure",
|
|
55
|
-
k: 3
|
|
56
|
-
)
|
|
52
|
+
mcp__unimatrix__context_search({
|
|
53
|
+
"query": "{task — e.g., 'adding a new MCP tool'}",
|
|
54
|
+
"category": "procedure",
|
|
55
|
+
"k": 3
|
|
56
|
+
})
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
### Step 4: Check for relevant ADRs
|
|
60
60
|
|
|
61
61
|
```
|
|
62
|
-
mcp__unimatrix__context_lookup(
|
|
63
|
-
topic: "{feature-id}",
|
|
64
|
-
category: "decision"
|
|
65
|
-
)
|
|
62
|
+
mcp__unimatrix__context_lookup({
|
|
63
|
+
"topic": "{feature-id}",
|
|
64
|
+
"category": "decision"
|
|
65
|
+
})
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
---
|
|
@@ -95,9 +95,9 @@ Query results may include entries that are outdated or incorrect. Fix them befor
|
|
|
95
95
|
|
|
96
96
|
| Situation | Action |
|
|
97
97
|
|-----------|--------|
|
|
98
|
-
| Pattern/procedure is **wrong** | `mcp__unimatrix__context_correct(original_id:
|
|
99
|
-
| Pattern/procedure is **outdated** | `mcp__unimatrix__context_deprecate(id:
|
|
100
|
-
| Convention no longer applies | `mcp__unimatrix__context_deprecate(id:
|
|
98
|
+
| Pattern/procedure is **wrong** | `mcp__unimatrix__context_correct({"original_id": 1234, "content": "{corrected version}", "reason": "{why}"})` — `original_id` is an integer, never quote it |
|
|
99
|
+
| Pattern/procedure is **outdated** | `mcp__unimatrix__context_deprecate({"id": 1234, "reason": "{why}"})` — `id` is an integer, never quote it |
|
|
100
|
+
| Convention no longer applies | `mcp__unimatrix__context_deprecate({"id": 1234, "reason": "{why}"})` — `id` is an integer, never quote it |
|
|
101
101
|
|
|
102
102
|
If you correct or deprecate an entry during your session, mention it in your return to the coordinator so it can be noted in the outcome.
|
|
103
103
|
|