@dzhechkov/skills-feature-adr 1.3.11 → 1.3.13
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/README.md +21 -1
- package/docs/team-onboarding.md +13 -0
- package/package.json +1 -1
- package/templates/.claude/skills/feature-adr/SKILL.md +24 -3
- package/templates/.claude/skills/feature-adr/modules/00-complexity-router.md +18 -0
- package/templates/.claude/skills/feature-adr/modules/01-requirements.md +6 -0
- package/templates/.claude/skills/feature-adr/modules/08-qe.md +45 -0
- package/templates/.claude/skills/feature-adr/modules/09-fleet-qe.md +42 -1
package/README.md
CHANGED
|
@@ -379,7 +379,8 @@ npx @dzhechkov/skills-feature-adr init --with-learning --knowledge-extractor
|
|
|
379
379
|
|
|
380
380
|
There are **three independent self-learning systems** that can sit under a Feature ADR run.
|
|
381
381
|
`--full-qe-extended` does **not** turn on learning by itself — it controls QE depth. Learning is a
|
|
382
|
-
separate
|
|
382
|
+
separate concern — though in Direct modes the pipeline now adds explicit touchpoints into layer B
|
|
383
|
+
(Step 0 pattern recall, Steps 8/9 outcome store — see the skill's "Pattern memory loop" section). The three layers do **not conflict**: each is isolated by its own
|
|
383
384
|
storage path, its own learning signal, and its own consumer.
|
|
384
385
|
|
|
385
386
|
| Layer | Turn it on with | Learns from | Storage (distinct!) | Needs a DB? |
|
|
@@ -408,6 +409,25 @@ storage path, its own learning signal, and its own consumer.
|
|
|
408
409
|
- Living inside the `dz` harness and want cross-session memory → `dz setup` (add agentdb only if you
|
|
409
410
|
want the vector tier).
|
|
410
411
|
|
|
412
|
+
### Maintenance: consolidate periodically
|
|
413
|
+
|
|
414
|
+
Hooks and events only **collect** raw data — distilling it into reusable patterns is a separate
|
|
415
|
+
**consolidation** step, and for layers B and C that step is worth running deliberately:
|
|
416
|
+
|
|
417
|
+
- **A (reward JSON)** — nothing to do; it consolidates implicitly at every checkpoint.
|
|
418
|
+
- **B (agentic-qe)** — queues raw *experiences* that only its consolidation pass distills into
|
|
419
|
+
patterns. Left alone, a project can pile up thousands of unconsolidated experiences over a month
|
|
420
|
+
while its per-prompt pattern injection returns **zero useful patterns**. Run
|
|
421
|
+
`aqe learning consolidate` periodically (e.g. weekly, or after a heavy QE run);
|
|
422
|
+
`aqe learning stats` shows the experience backlog.
|
|
423
|
+
- **C (dz harness)** — run `dz consolidate` to harvest session learnings into the lexical store
|
|
424
|
+
(mirrored to the agentdb vector store if present); inspect the result with `dz recall`. The
|
|
425
|
+
SessionEnd hook automates this **only on clean session ends** — crashed or killed sessions are
|
|
426
|
+
missed.
|
|
427
|
+
|
|
428
|
+
**Degradation symptom:** patterns stop improving while raw logs keep growing. If recall/injection
|
|
429
|
+
quality plateaus, you're collecting but not distilling — consolidate.
|
|
430
|
+
|
|
411
431
|
> There is no single unified "what did the whole stack learn" view — each layer reports from its own
|
|
412
432
|
> store. That's the price of isolation (and the reason there are no cascading failures). Tune each
|
|
413
433
|
> where it lives.
|
package/docs/team-onboarding.md
CHANGED
|
@@ -208,6 +208,19 @@ consumer):
|
|
|
208
208
|
**Do you need agentdb?** For A and B — **no** (each has its own store). Only layer C's *vector* tier
|
|
209
209
|
uses agentdb, and even there it's optional (lexical recall works without it).
|
|
210
210
|
|
|
211
|
+
**Maintenance: consolidate periodically.** Hooks/events only *collect* raw data — distilling it into
|
|
212
|
+
reusable patterns is a separate consolidation step:
|
|
213
|
+
- **A** — nothing to do (consolidates implicitly at each checkpoint).
|
|
214
|
+
- **B** — agentic-qe queues raw experiences that only its consolidation pass distills. Skip it and a
|
|
215
|
+
project can pile up thousands of unconsolidated experiences while per-prompt pattern injection
|
|
216
|
+
returns zero useful patterns. Run `aqe learning consolidate` periodically (weekly, or after a
|
|
217
|
+
heavy QE run); `aqe learning stats` shows the backlog.
|
|
218
|
+
- **C** — run `dz consolidate` (harvests session learnings into the lexical store, mirrored to the
|
|
219
|
+
vector store if present); inspect with `dz recall`. The SessionEnd hook covers **clean exits only**.
|
|
220
|
+
|
|
221
|
+
**Degradation symptom:** patterns stop improving while raw logs keep growing → you're collecting,
|
|
222
|
+
not distilling. Consolidate.
|
|
223
|
+
|
|
211
224
|
---
|
|
212
225
|
|
|
213
226
|
## 9. Team workflow conventions
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dzhechkov/skills-feature-adr",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.13",
|
|
4
4
|
"description": "Adaptive Feature Development skill pack for Claude Code — 11-step pipeline with Complexity Router (S/M/L/XL), ADR-driven architecture, 15 agentic-qe skills, multi-agent fleet QE. Supports --full-qe, --full-qe-extended, --with-learning, and --knowledge-extractor modes.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"skills-feature-adr": "./bin/cli.js"
|
|
@@ -216,6 +216,7 @@ After Step 8 (or Step 9 for L/XL) completes, verify:
|
|
|
216
216
|
| `{COMPLEXITY_TIER}` | Step 0 | All steps | S/M/L/XL |
|
|
217
217
|
| `{ACTIVE_STEPS}` | Step 0 | Orchestrator | list[int] |
|
|
218
218
|
| `{TIME_BUDGET}` | Step 0 | All steps | dict |
|
|
219
|
+
| `{LEARNED_PATTERNS}` | Step 0 | Step 1 (brief); Steps 8-9 do their own namespace recalls | list[pattern] (Direct modes only) |
|
|
219
220
|
| `{REQUIREMENTS}` | Step 1 | Steps 2-9 | structured |
|
|
220
221
|
| `{RESEARCH_FINDINGS}` | Step 2 | Steps 3-5 | structured |
|
|
221
222
|
| `{ADR_DECISIONS}` | Step 3 | Steps 3.5-7 | list[ADR] |
|
|
@@ -342,18 +343,38 @@ Step 0 (Complexity Router) checks:
|
|
|
342
343
|
3. If flag + installed → set `{AGENTIC_QE_MODE}` = `direct` or `direct-extended`
|
|
343
344
|
4. If flag present but not installed → WARN and fall back to reference mode
|
|
344
345
|
|
|
346
|
+
### Pattern memory loop (Direct modes)
|
|
347
|
+
|
|
348
|
+
When `{AGENTIC_QE_MODE}` = `direct` | `direct-extended`, the pipeline runs a recall → store cycle
|
|
349
|
+
over agentic-qe's MCP pattern memory (`namespace: "learning"`, `fleet_init` first):
|
|
350
|
+
|
|
351
|
+
- **Step 0** — `memory_query("patterns/feature-adr/*")` **plus** `dz recall --json` over the durable
|
|
352
|
+
dz store → merged top-3 set `{LEARNED_PATTERNS}`; Step 1 folds them into the requirements brief as advisory lessons.
|
|
353
|
+
- **Step 8** — recalls `patterns/feature-adr/qe/*` to prime the review checklist; after the gap loop
|
|
354
|
+
closes, stores a `qe-outcome` record in aqe **and** the same lesson via `dz teach` (durable).
|
|
355
|
+
- **Step 9** — recalls `patterns/feature-adr/fleet/*` to prime agent focus; after the fleet verdict,
|
|
356
|
+
stores a `fleet-qe-finding` in aqe **and** the same lesson via `dz teach`.
|
|
357
|
+
|
|
358
|
+
**Two stores by design:** the aqe kv store is *ephemeral across MCP-server restarts* (janitor/TTL —
|
|
359
|
+
observed live), so it serves fast in-session semantic recall; the dz lexical store
|
|
360
|
+
(`dz teach`/`dz recall`) is the durable half that survives to the next day. All calls are
|
|
361
|
+
non-blocking — an error or empty result never stalls the pipeline. This layer is
|
|
362
|
+
**distinct from the Keysarium reward layer** installed by `--with-learning`: it uses agentic-qe MCP
|
|
363
|
+
memory + the dz store, is gated on Direct modes only, and never touches `.keysarium/memory/`.
|
|
364
|
+
|
|
345
365
|
### What changes with `--full-qe`
|
|
346
366
|
|
|
347
367
|
Full agentic-qe protocols for the same 9 core skills. No new agents, just deeper methodology.
|
|
348
368
|
|
|
349
369
|
| Step | Reference Mode (default) | Direct Mode (`--full-qe`) |
|
|
350
370
|
|------|--------------------------|---------------------------|
|
|
371
|
+
| Step 0 | Standard routing | + pattern recall → `{LEARNED_PATTERNS}` |
|
|
351
372
|
| Step 3 | Condensed shift-left protocol | Full Level 1-4 shift-left with BDD generators |
|
|
352
373
|
| Step 3.5 | 3 core + flag-based conditionals | Full QCSD swarm with all 9 agents + DDD mapping |
|
|
353
374
|
| Step 6 | SPARC-GOAP goal state analysis | Full agent with milestone tracking + success metrics |
|
|
354
375
|
| Step 7 | Standard code generation | Standard code generation (no change) |
|
|
355
|
-
| Step 8 | Brutal-honesty 3-mode review | Full calibration levels (1-3) + evidence protocol |
|
|
356
|
-
| Step 9 | 4 agents with condensed protocols | 4 agents with full agentic-qe protocols |
|
|
376
|
+
| Step 8 | Brutal-honesty 3-mode review | Full calibration levels (1-3) + evidence protocol + QE pattern recall/store |
|
|
377
|
+
| Step 9 | 4 agents with condensed protocols | 4 agents with full agentic-qe protocols + fleet pattern recall/store |
|
|
357
378
|
|
|
358
379
|
### What `--full-qe-extended` adds on top
|
|
359
380
|
|
|
@@ -399,7 +420,7 @@ npx @dzhechkov/skills-feature-adr init --with-learning --knowledge-extractor
|
|
|
399
420
|
| Flag | Installs | Purpose |
|
|
400
421
|
|------|----------|---------|
|
|
401
422
|
| (none) | Core skill + command + rules + shard | Feature development pipeline |
|
|
402
|
-
| `--with-learning` | + `lib/memory-protocol.md`, `lib/reward-tracker.md`, `.claude/rules/reward-learning.md` | Installs the shared **Keysarium learning layer** (Phases 0-5, `.keysarium/memory/`). The feature-adr pipeline itself does not yet wire `memory_query`/`memory_store` into its Steps 0-9 — this layer applies only if you also run the Keysarium pipeline. |
|
|
423
|
+
| `--with-learning` | + `lib/memory-protocol.md`, `lib/reward-tracker.md`, `.claude/rules/reward-learning.md` | Installs the shared **Keysarium learning layer** (Phases 0-5, `.keysarium/memory/`). The feature-adr pipeline itself does not yet wire `memory_query`/`memory_store` into its Steps 0-9 — this layer applies only if you also run the Keysarium pipeline. A separate loop exists: in Direct modes (`--full-qe`/`--full-qe-extended`) the pipeline wires **agentic-qe MCP** pattern memory into Steps 0/8/9 — see "Pattern memory loop (Direct modes)" above. |
|
|
403
424
|
| `--knowledge-extractor` | + `.claude/skills/knowledge-extractor/`, `.claude/commands/harvest.md` | Extract reusable patterns after feature completion |
|
|
404
425
|
|
|
405
426
|
> **Note:** If `@dzhechkov/keysarium` is already installed, these flags are not needed — keysarium includes all learning and extraction capabilities.
|
|
@@ -79,6 +79,23 @@ Load `references/complexity-matrix.md` for the full matrix. Summary:
|
|
|
79
79
|
|
|
80
80
|
R = Requirements, P = Planning (ADR+DDD+Arch), I = Implementation, Q = QE
|
|
81
81
|
|
|
82
|
+
### 6. Pattern Recall (Direct Mode only)
|
|
83
|
+
|
|
84
|
+
Runs after tier classification, only when `{AGENTIC_QE_MODE}` = `direct` | `direct-extended`
|
|
85
|
+
(set during Step 0 flag detection per SKILL.md: `--full-qe`/`--full-qe-extended` + agentic-qe installed). Non-blocking — an error or empty result must never stall the pipeline.
|
|
86
|
+
|
|
87
|
+
1. If the aqe fleet is not yet initialized this session, call `mcp__agentic-qe__fleet_init` first (required before any other aqe MCP tool).
|
|
88
|
+
2. Call `mcp__agentic-qe__memory_query({ pattern: "patterns/feature-adr/*", namespace: "learning", limit: 5 })`.
|
|
89
|
+
3. ALSO query the **durable half** of the loop — the dz lexical store:
|
|
90
|
+
`dz recall "<feature domain keywords>" --json --limit 5` (CLI; works wherever dz is set up).
|
|
91
|
+
Why both: the aqe kv store is **ephemeral across MCP-server restarts** (janitor/TTL — observed
|
|
92
|
+
live: a record survived hours, not days), so aqe serves in-session semantic recall while the
|
|
93
|
+
dz store is the durable memory the loop can trust tomorrow.
|
|
94
|
+
4. Merge both result sets, dedupe by content, select the top 3 by confidence/reward → set `{LEARNED_PATTERNS}`.
|
|
95
|
+
5. Reference mode, no hits, or errors (either store) → `{LEARNED_PATTERNS}` = `[]` or the surviving half; proceed normally.
|
|
96
|
+
|
|
97
|
+
Step 1 folds `{LEARNED_PATTERNS}` into the requirements brief as "lessons from previous features" — advisory context only, never requirements themselves. Why here: Step 0 is the one point where recall can be keyed to the feature's phase and domain — per-prompt hook auto-injection cannot see which pipeline step is running.
|
|
98
|
+
|
|
82
99
|
## Output
|
|
83
100
|
|
|
84
101
|
Set the following variables:
|
|
@@ -88,6 +105,7 @@ Set the following variables:
|
|
|
88
105
|
{ACTIVE_STEPS} = [0, 1, 6, 7, 8] # example for S
|
|
89
106
|
{TIME_BUDGET} = { requirements: 2, planning: 0, implementation: 10, qe: 3 }
|
|
90
107
|
{DIMENSION_SCORES} = { files: 1, domains: 1, integrations: 1, breaking: 1, models: 1, crosscutting: 1 }
|
|
108
|
+
{LEARNED_PATTERNS} = [ ... ] # top-3 by confidence from memory_query; [] in reference mode / no hits / error
|
|
91
109
|
```
|
|
92
110
|
|
|
93
111
|
Create artifact: `features/<slug>/00_complexity_assessment.md`
|
|
@@ -29,6 +29,12 @@ Read: .claude/skills/explore/SKILL.md
|
|
|
29
29
|
Use the explore skill to clarify ambiguous requirements through adaptive questioning.
|
|
30
30
|
For S-tier: skip explore, extract requirements directly from description.
|
|
31
31
|
|
|
32
|
+
### 1.5 Fold Learned Patterns (Direct modes only)
|
|
33
|
+
|
|
34
|
+
If `{LEARNED_PATTERNS}` is non-empty (set by Step 0's Pattern Recall), fold each into the
|
|
35
|
+
requirements brief as an advisory "lesson from previous features" — context that informs
|
|
36
|
+
elicitation, never a requirement itself. Empty/absent → skip silently.
|
|
37
|
+
|
|
32
38
|
### 2. Identify Stakeholders
|
|
33
39
|
|
|
34
40
|
| Question | Why |
|
|
@@ -56,6 +56,19 @@ For critical user flows:
|
|
|
56
56
|
- Test with realistic data volumes
|
|
57
57
|
- Test failure recovery scenarios
|
|
58
58
|
|
|
59
|
+
### 2.5 QE Pattern Recall (Direct Mode only)
|
|
60
|
+
|
|
61
|
+
When `{AGENTIC_QE_MODE}` = `direct` | `direct-extended`, before the brutal-honesty review starts,
|
|
62
|
+
recall prior QE outcomes for similar work:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
mcp__agentic-qe__memory_query({ pattern: "patterns/feature-adr/qe/*", namespace: "learning", limit: 5 })
|
|
66
|
+
// If this session resumed directly at Step 8, call fleet_init first (as in Steps 0/9).
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Use the results to prime the review checklist — e.g. recurring gap types, dimensions that historically
|
|
70
|
+
produced blockers. Non-blocking: empty result or error → proceed with the standard checklist.
|
|
71
|
+
|
|
59
72
|
### 3. Code Review via Brutal Honesty Review (M+)
|
|
60
73
|
|
|
61
74
|
> Load: `references/agentic-qe/brutal-honesty-review.md`
|
|
@@ -193,6 +206,38 @@ Compile all findings into a structured report:
|
|
|
193
206
|
✅ READY FOR MERGE | ❌ NEEDS FIXES | ⚠️ CONDITIONAL APPROVAL
|
|
194
207
|
```
|
|
195
208
|
|
|
209
|
+
### 8. QE Pattern Store (Direct Mode only)
|
|
210
|
+
|
|
211
|
+
When `{AGENTIC_QE_MODE}` = `direct` | `direct-extended`, after the gap loop is closed and the verdict is set:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
mcp__agentic-qe__memory_store({
|
|
215
|
+
key: "patterns/feature-adr/qe/{timestamp}",
|
|
216
|
+
namespace: "learning",
|
|
217
|
+
value: {
|
|
218
|
+
pattern: "<one-sentence lesson from this QE run>",
|
|
219
|
+
confidence: <honest 0-1 derived from the gap loop>,
|
|
220
|
+
type: "qe-outcome",
|
|
221
|
+
metadata: { tier: "{COMPLEXITY_TIER}", gaps_found: <N>, verdict: "<READY|NEEDS_FIXES|CONDITIONAL>" }
|
|
222
|
+
},
|
|
223
|
+
persist: true
|
|
224
|
+
})
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Confidence must be honest — derived from the gap loop, never a fabricated 1.0
|
|
228
|
+
(e.g. zero gaps in one iteration ≈ 0.9; gaps remaining after 3 iterations ≤ 0.4).
|
|
229
|
+
|
|
230
|
+
Then persist the SAME lesson durably (the aqe kv store is ephemeral across MCP-server
|
|
231
|
+
restarts — observed live; the dz lexical store is the half that survives):
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
dz teach "<the same one-sentence lesson>" --reward <same confidence> --domain feature-adr \
|
|
235
|
+
--type <success-pattern if verdict READY, else lesson-learned>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Non-blocking: if `dz` is not on PATH or the command fails, note it and proceed.
|
|
239
|
+
Non-blocking: a write failure is logged and the pipeline continues.
|
|
240
|
+
|
|
196
241
|
## Output
|
|
197
242
|
|
|
198
243
|
Create `features/<slug>/08_qe_report.md` with full QE report.
|
|
@@ -263,6 +263,47 @@ are added — the same fleet runs with deeper methodology from the full skill fi
|
|
|
263
263
|
| Agent 3 | Condensed enterprise-integration | Full hierarchical fleet + QCSD flags |
|
|
264
264
|
| Agent 4 | Condensed regression-testing | Full change-based + historical + time-budget strategies |
|
|
265
265
|
|
|
266
|
+
## Pattern Memory Loop (Direct Modes)
|
|
267
|
+
|
|
268
|
+
When `{AGENTIC_QE_MODE}` = `direct` | `direct-extended`, Step 9 runs a recall → store cycle over
|
|
269
|
+
agentic-qe pattern memory. Non-blocking: errors or empty results never stall the assessment.
|
|
270
|
+
(`fleet_init` was called in Step 0; call it first if this session resumed at Step 9.)
|
|
271
|
+
|
|
272
|
+
**Before fleet assembly** — prime agent focus areas:
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
mcp__agentic-qe__memory_query({ pattern: "patterns/feature-adr/fleet/*", namespace: "learning", limit: 5 })
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Fold recurring findings (e.g. traceability chains that historically break, risk categories that recur)
|
|
279
|
+
into each agent's scope brief.
|
|
280
|
+
|
|
281
|
+
**After the fleet verdict** — store the finding for future pipeline runs:
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
mcp__agentic-qe__memory_store({
|
|
285
|
+
key: "patterns/feature-adr/fleet/{timestamp}",
|
|
286
|
+
namespace: "learning",
|
|
287
|
+
value: {
|
|
288
|
+
pattern: "<one-sentence lesson from this assessment>",
|
|
289
|
+
confidence: <honest 0-1 from gap synthesis — never a fabricated 1.0>,
|
|
290
|
+
type: "fleet-qe-finding",
|
|
291
|
+
metadata: { tier: "{COMPLEXITY_TIER}", verdict: "{FLEET_QE_VERDICT}", agents_used: <4-7>, remediation_count: <N> }
|
|
292
|
+
},
|
|
293
|
+
persist: true
|
|
294
|
+
})
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Then persist the SAME finding durably via the dz lexical store (the aqe kv store is
|
|
298
|
+
ephemeral across MCP-server restarts — the dz half survives):
|
|
299
|
+
|
|
300
|
+
```
|
|
301
|
+
dz teach "<the same one-sentence lesson>" --reward <same confidence> --domain feature-adr \
|
|
302
|
+
--type <success-pattern if COMPLETE, else lesson-learned>
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Non-blocking: if `dz` is unavailable or fails, note it and proceed.
|
|
306
|
+
|
|
266
307
|
## Direct Extended Mode (`--full-qe-extended`)
|
|
267
308
|
|
|
268
309
|
When `{AGENTIC_QE_MODE}` = `direct-extended`, Step 9 gets everything from
|
|
@@ -282,7 +323,7 @@ These agents are spawned alongside Agents 1-4 in the same message.
|
|
|
282
323
|
|
|
283
324
|
After Step 9 completes, if `--full-qe-extended` is active:
|
|
284
325
|
1. Load `qcsd-production-swarm` feedback loop patterns
|
|
285
|
-
2. Store Fleet QE findings
|
|
326
|
+
2. Store Fleet QE findings via the Pattern Memory Loop above (`patterns/feature-adr/fleet/{timestamp}`)
|
|
286
327
|
3. Flag production health risks for monitoring post-deploy
|
|
287
328
|
4. Advisory: suggest post-deploy monitoring checklist
|
|
288
329
|
|