@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 CHANGED
@@ -5,7 +5,7 @@
5
5
  "files": [
6
6
  {
7
7
  "path": "CHANGELOG.md",
8
- "sha256": "44fbbf4909ce837794d0b46b1ac29c01a909ec9c46fd25baeb4247b63443ac77"
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": "bb159a378cb3f254761c27d45b0d72434a12b860370a0127889070b6ea8fe006"
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": "a871e47547ee349db19f6413e296db137e2833e2aa2277672ba33bac730855a5"
104
+ "sha256": "64780d15549e8c2c20a83fbb7afa6856cecbb6d7b940b72ea7d57dca83675786"
105
105
  },
106
106
  {
107
107
  "path": "templates/.claude/skills/idea2prd-manual/references/adr-catalog.md",
108
- "sha256": "165aebf4d997dc7ca34ac813befb62e82faa507be66cbf70af897192913a51b4"
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": "49b53a85ac55ef2c9836979da929abbdbf9b1a7069b86790c9c2df9b909cce2e"
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": "ijQ6u7pzx73w7JYknodK0orJvVrVmxmurNGnTbyMZgfh3EF7bFPov8tGzH3gQpnVVssdODRdmvESKXaSfuFLAA=="
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",
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": "44fbbf4909ce837794d0b46b1ac29c01a909ec9c46fd25baeb4247b63443ac77"
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": "bb159a378cb3f254761c27d45b0d72434a12b860370a0127889070b6ea8fe006"
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": "a871e47547ee349db19f6413e296db137e2833e2aa2277672ba33bac730855a5"
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": "165aebf4d997dc7ca34ac813befb62e82faa507be66cbf70af897192913a51b4"
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": "49b53a85ac55ef2c9836979da929abbdbf9b1a7069b86790c9c2df9b909cce2e"
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-0NN / [feature].feature |
426
- | ADR-002 | [Database]: [choice] | Accepted | [property] | FF-0NN / [feature].feature |
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
- > (a `FF-NNN` fitness function or a Gherkin `.feature` scenario). A blank = an incomplete ADR — go back.
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
- **Псевдокод фиксирует алгоритмическую логику ДО кодогенерации — меньше неоднозначности при реализации.** (Никаких неподтверждённых процентов: любые метрики качества эмитятся только с честным тегом — см. раздел «Claim Discipline».)
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-01 | BC Independence | 100% |
593
- | FF-02 | Aggregate Size | ≤7 entities |
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` — if recall reads one store and teach writes another, the two stores stay separate and
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): a property an ADR names is often the one that ships untested (a recurring
64
- > lesson in this repo), so the Confirmation stanza forces it to name its falsifying test.
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. Снижения неоднозначности при кодогенерации в Claude Code (алгоритм зафиксирован до кода)
7
+ 2. Фиксации алгоритмической логики до кодогенерации (логика описана независимо от синтаксиса реализации)
8
8
  3. Документирования business logic
9
9
 
10
10
  ## Syntax Conventions