@dzhechkov/skills-idea2prd 0.1.3 → 0.1.4
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/.dz-manifest.json +6 -6
- package/package.json +1 -1
- package/sbom.json +5 -5
- package/templates/.claude/skills/idea2prd-manual/SKILL.md +44 -12
- package/templates/.claude/skills/idea2prd-manual/references/adr-catalog.md +3 -2
- package/templates/.claude/skills/idea2prd-manual/references/pseudocode-style.md +1 -1
package/.dz-manifest.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"files": [
|
|
6
6
|
{
|
|
7
7
|
"path": "CHANGELOG.md",
|
|
8
|
-
"sha256": "
|
|
8
|
+
"sha256": "17403157f3609436e5587a532c022e6095ee85acc255cf313d5473df311cc55f"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
11
|
"path": "LICENSE",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"path": "package.json",
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "f1910823e00d102d9e4bf319123036426d0c5812054fca1e3efdb2e37763ebbf"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
"path": "sources.json",
|
|
@@ -101,11 +101,11 @@
|
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
103
|
"path": "templates/.claude/skills/idea2prd-manual/SKILL.md",
|
|
104
|
-
"sha256": "
|
|
104
|
+
"sha256": "64780d15549e8c2c20a83fbb7afa6856cecbb6d7b940b72ea7d57dca83675786"
|
|
105
105
|
},
|
|
106
106
|
{
|
|
107
107
|
"path": "templates/.claude/skills/idea2prd-manual/references/adr-catalog.md",
|
|
108
|
-
"sha256": "
|
|
108
|
+
"sha256": "e65f61ebeb9d3aa3179f0457028640510dca9e6f5c096ebc474d5a088280b828"
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
"path": "templates/.claude/skills/idea2prd-manual/references/c4-model.md",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
},
|
|
126
126
|
{
|
|
127
127
|
"path": "templates/.claude/skills/idea2prd-manual/references/pseudocode-style.md",
|
|
128
|
-
"sha256": "
|
|
128
|
+
"sha256": "80b006853de2e3e38816b91a9b91443a512e9d0d3ec85801fee12f0e5025e155"
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
"path": "templates/.claude/skills/idea2prd-manual/scripts/ai_context_builder.py",
|
|
@@ -149,5 +149,5 @@
|
|
|
149
149
|
}
|
|
150
150
|
]
|
|
151
151
|
},
|
|
152
|
-
"signature": "
|
|
152
|
+
"signature": "HQYa10d2ULIWDRdB/Y3hhYR4JtZZUZjZ0/g/LJ4CLS9Ffw2IsC49bcG6gIr5UkVoc2OSvY/43VJ1ID4CyM8pBw=="
|
|
153
153
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dzhechkov/skills-idea2prd",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Idea2PRD Manual — composite skill for Claude Code: from problem/idea to Vibe-Coding-ready docs (PRD + ADR + DDD + C4 + Pseudocode + Test Scenarios + Completion) with 9 checkpoints",
|
|
5
5
|
"main": "src/cli.js",
|
|
6
6
|
"bin": {
|
package/sbom.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"hashes": [
|
|
16
16
|
{
|
|
17
17
|
"alg": "SHA-256",
|
|
18
|
-
"content": "
|
|
18
|
+
"content": "17403157f3609436e5587a532c022e6095ee85acc255cf313d5473df311cc55f"
|
|
19
19
|
}
|
|
20
20
|
]
|
|
21
21
|
},
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"hashes": [
|
|
56
56
|
{
|
|
57
57
|
"alg": "SHA-256",
|
|
58
|
-
"content": "
|
|
58
|
+
"content": "f1910823e00d102d9e4bf319123036426d0c5812054fca1e3efdb2e37763ebbf"
|
|
59
59
|
}
|
|
60
60
|
]
|
|
61
61
|
},
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
"hashes": [
|
|
256
256
|
{
|
|
257
257
|
"alg": "SHA-256",
|
|
258
|
-
"content": "
|
|
258
|
+
"content": "64780d15549e8c2c20a83fbb7afa6856cecbb6d7b940b72ea7d57dca83675786"
|
|
259
259
|
}
|
|
260
260
|
]
|
|
261
261
|
},
|
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
"hashes": [
|
|
266
266
|
{
|
|
267
267
|
"alg": "SHA-256",
|
|
268
|
-
"content": "
|
|
268
|
+
"content": "e65f61ebeb9d3aa3179f0457028640510dca9e6f5c096ebc474d5a088280b828"
|
|
269
269
|
}
|
|
270
270
|
]
|
|
271
271
|
},
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
"hashes": [
|
|
316
316
|
{
|
|
317
317
|
"alg": "SHA-256",
|
|
318
|
-
"content": "
|
|
318
|
+
"content": "80b006853de2e3e38816b91a9b91443a512e9d0d3ec85801fee12f0e5025e155"
|
|
319
319
|
}
|
|
320
320
|
]
|
|
321
321
|
},
|
|
@@ -422,12 +422,14 @@ idea2prd-manual/
|
|
|
422
422
|
|
|
423
423
|
| ADR | Decision | Status | Load-bearing property | Falsifying test |
|
|
424
424
|
|-----|----------|--------|-----------------------|-----------------|
|
|
425
|
-
| ADR-001 | [Architecture]: [choice] | Accepted | [property] | FF-
|
|
426
|
-
| ADR-002 | [Database]: [choice] | Accepted | [property] | FF-
|
|
425
|
+
| ADR-001 | [Architecture]: [choice] | Accepted | [property] | FF-NNN / [feature].feature |
|
|
426
|
+
| ADR-002 | [Database]: [choice] | Accepted | [property] | FF-NNN / [feature].feature |
|
|
427
427
|
...
|
|
428
428
|
|
|
429
|
-
> **Confirmation check:** every row above MUST name a load-bearing property and a real falsifying test
|
|
430
|
-
>
|
|
429
|
+
> **Confirmation check:** every row above MUST name a load-bearing property and a real falsifying test —
|
|
430
|
+
> a `FF-NNN` fitness function id (3-digit, matching `references/fitness-functions-catalog.md`) or a Gherkin
|
|
431
|
+
> `.feature` scenario. A blank = an incomplete ADR — go back. **Phase 5 re-checks this table** (see the
|
|
432
|
+
> Phase-5 "ADR Confirmation reconciliation" step): every id named here must EXIST in the Phase-5 output.
|
|
431
433
|
|
|
432
434
|
## C4 Diagrams
|
|
433
435
|
|
|
@@ -484,7 +486,7 @@ idea2prd-manual/
|
|
|
484
486
|
|
|
485
487
|
**Reference:** `references/pseudocode-style.md`
|
|
486
488
|
|
|
487
|
-
**Псевдокод фиксирует алгоритмическую логику ДО кодогенерации —
|
|
489
|
+
**Псевдокод фиксирует алгоритмическую логику ДО кодогенерации — кодоген реализует уже принятый дизайн, а не изобретает его по ходу.** (Никаких неподтверждённых процентов: любые метрики качества эмитятся только с честным тегом — см. раздел «Claim Discipline».)
|
|
488
490
|
|
|
489
491
|
**Действие Claude:**
|
|
490
492
|
```
|
|
@@ -563,10 +565,27 @@ END FUNCTION
|
|
|
563
565
|
### Phase 5: Validation, Tests & AI Context [ENHANCED]
|
|
564
566
|
|
|
565
567
|
**Генерирует:**
|
|
566
|
-
- 5+ Fitness Functions
|
|
568
|
+
- 5+ Fitness Functions (ids in the canonical `FF-NNN` 3-digit form — see `references/fitness-functions-catalog.md`)
|
|
567
569
|
- 5+ Gherkin Test Scenarios
|
|
568
570
|
- 8 .ai-context/ files
|
|
569
571
|
|
|
572
|
+
**ADR Confirmation reconciliation (REQUIRED — consumes the Phase-3 ADR table):**
|
|
573
|
+
|
|
574
|
+
Phase 5 is where each ADR's Confirmation stops being a promise. Before the Phase-5 checkpoint, iterate the
|
|
575
|
+
Checkpoint-3 **ADRs Summary** table and, for EVERY ADR, verify:
|
|
576
|
+
|
|
577
|
+
1. Its `Falsifying test` names a concrete artifact — a `FF-NNN` id or a `<feature>.feature` scenario — not
|
|
578
|
+
a placeholder (`FF-NNN`, `[feature]`, `TBD`, blank).
|
|
579
|
+
2. That artifact ACTUALLY EXISTS in this Phase-5 output: the `FF-NNN` id appears in the Fitness Functions
|
|
580
|
+
table (and `references/fitness-functions-catalog.md` / `scripts/fitness_validator.py`), or the `.feature`
|
|
581
|
+
file is in `docs/tests/`.
|
|
582
|
+
3. The named test is tied to the ADR's **load-bearing property** — it would go RED if that property were
|
|
583
|
+
violated (not merely a generic happy-path scenario).
|
|
584
|
+
|
|
585
|
+
A missing, placeholder, or property-mismatched test is an **incomplete ADR ⇒ Phase 5 is NOT signed off**:
|
|
586
|
+
go back and add the fitness function / Gherkin scenario (or correct the ADR). Emit the result as the "ADR
|
|
587
|
+
Confirmation Coverage" block below (every ADR row must read `✅ mapped`; any `🔴 unmapped` blocks sign-off).
|
|
588
|
+
|
|
570
589
|
**Test Scenarios (Gherkin):**
|
|
571
590
|
|
|
572
591
|
```gherkin
|
|
@@ -589,10 +608,23 @@ Feature: Order Placement
|
|
|
589
608
|
|
|
590
609
|
| ID | Rule | Target |
|
|
591
610
|
|----|------|--------|
|
|
592
|
-
| FF-
|
|
593
|
-
| FF-
|
|
611
|
+
| FF-001 | BC Independence | [target — tag MEASURED baseline or ESTIMATED from an NFR] |
|
|
612
|
+
| FF-002 | Aggregate Size | [threshold — e.g. entity cap, tag ESTIMATED with its basis] |
|
|
594
613
|
...
|
|
595
614
|
|
|
615
|
+
> Targets are claims: fill each with a tagged value (MEASURED baseline / ESTIMATED target), never a naked
|
|
616
|
+
> perfect score. See "Authoring Discipline → Claim Discipline".
|
|
617
|
+
|
|
618
|
+
## ADR Confirmation Coverage
|
|
619
|
+
|
|
620
|
+
| ADR | Load-bearing property | Named test | Exists in Phase 5? |
|
|
621
|
+
|-----|-----------------------|------------|--------------------|
|
|
622
|
+
| ADR-001 | [property] | FF-NNN / [feature].feature | ✅ mapped |
|
|
623
|
+
| ADR-002 | [property] | FF-NNN / [feature].feature | ✅ mapped |
|
|
624
|
+
...
|
|
625
|
+
|
|
626
|
+
> Any `🔴 unmapped` row blocks Phase-5 sign-off (the ADR named a test that does not exist here).
|
|
627
|
+
|
|
596
628
|
## Test Scenarios
|
|
597
629
|
|
|
598
630
|
| Feature | Scenarios | Coverage |
|
|
@@ -650,14 +682,14 @@ so nothing fragments.
|
|
|
650
682
|
3. For each genuinely NEW lesson, via Bash run VERBATIM (one call per lesson):
|
|
651
683
|
|
|
652
684
|
```bash
|
|
653
|
-
cd <BRAIN> && dz teach "<one-line reusable lesson>" --reward 0.7 --domain idea2prd --project <BRAIN>
|
|
685
|
+
cd "<BRAIN>" && dz teach "<one-line reusable lesson>" --reward 0.7 --domain idea2prd --project "<BRAIN>"
|
|
654
686
|
```
|
|
655
687
|
|
|
656
688
|
4. Log how many lessons were taught (0 is a valid, honest result on a run that surfaced nothing new).
|
|
657
689
|
|
|
658
|
-
> **Pin discipline:** Step 0 recall and this teach MUST hit the SAME `<BRAIN>` (project root) via
|
|
659
|
-
> `--project
|
|
660
|
-
> the loop does not accumulate in a single place. This mirrors the feature-adr `args.brain` rule.
|
|
690
|
+
> **Pin discipline:** Step 0 recall and this teach MUST hit the SAME absolute `<BRAIN>` (project root) via
|
|
691
|
+
> `--project`, shell-quoted — if recall reads one store and teach writes another, the two stores stay
|
|
692
|
+
> separate and the loop does not accumulate in a single place. This mirrors the feature-adr `args.brain` rule.
|
|
661
693
|
|
|
662
694
|
---
|
|
663
695
|
|
|
@@ -60,8 +60,9 @@
|
|
|
60
60
|
> Its `Required automated check` MUST name a REAL Phase-5 artifact — a `FF-NNN` fitness function
|
|
61
61
|
> (`references/fitness-functions-catalog.md` / `scripts/fitness_validator.py`) or a Gherkin `.feature`
|
|
62
62
|
> scenario — so the decision's load-bearing property is *falsifiable*, not prose. This wires Phase 3 (ADR)
|
|
63
|
-
> to Phase 5 (fitness/tests):
|
|
64
|
-
> lesson
|
|
63
|
+
> to Phase 5 (fitness/tests): the property an ADR names is often the one left untested (CLAIMED — harness
|
|
64
|
+
> feature-adr lesson, `.claude/rules/feature-adr-ultracode.md`), so the Confirmation stanza forces it to
|
|
65
|
+
> name its falsifying test.
|
|
65
66
|
> An ADR whose Confirmation names no falsifying check is **incomplete** — do not accept it at Checkpoint 3.
|
|
66
67
|
|
|
67
68
|
### Supersession discipline
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Pseudocode в idea2prd используется для:
|
|
6
6
|
1. Точного описания алгоритмов до написания кода
|
|
7
|
-
2.
|
|
7
|
+
2. Фиксации алгоритмической логики до кодогенерации (логика описана независимо от синтаксиса реализации)
|
|
8
8
|
3. Документирования business logic
|
|
9
9
|
|
|
10
10
|
## Syntax Conventions
|