yadflow 2.2.0 → 2.4.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +75 -22
  3. package/cli/doctor.mjs +45 -3
  4. package/cli/epic-state.mjs +19 -2
  5. package/cli/errors.mjs +2 -0
  6. package/cli/manifest.mjs +23 -1
  7. package/cli/setup.mjs +109 -10
  8. package/docs/index.html +62 -11
  9. package/package.json +5 -3
  10. package/skills/sdlc/config.yaml +41 -4
  11. package/skills/sdlc/install.sh +1 -1
  12. package/skills/sdlc/module-help.csv +6 -1
  13. package/skills/yad-analysis/SKILL.md +10 -5
  14. package/skills/yad-connect-design/SKILL.md +1 -1
  15. package/skills/yad-connect-design/references/design-registry.md +4 -2
  16. package/skills/yad-connect-learning/SKILL.md +140 -0
  17. package/skills/yad-connect-learning/references/learning-context.md +79 -0
  18. package/skills/yad-connect-learning/references/learning-registry.md +60 -0
  19. package/skills/yad-connect-testing/SKILL.md +121 -0
  20. package/skills/yad-connect-testing/references/testing-context.md +67 -0
  21. package/skills/yad-connect-testing/references/testing-registry.md +55 -0
  22. package/skills/yad-epic/SKILL.md +10 -5
  23. package/skills/yad-epic/references/state-schema.md +42 -11
  24. package/skills/yad-hub-bridge/SKILL.md +2 -2
  25. package/skills/yad-learn/SKILL.md +146 -0
  26. package/skills/yad-learn/references/learning-state.md +75 -0
  27. package/skills/yad-review-gate/SKILL.md +14 -11
  28. package/skills/yad-review-gate/references/gating.md +1 -1
  29. package/skills/yad-run/references/run-loop.md +3 -3
  30. package/skills/yad-spec/SKILL.md +3 -1
  31. package/skills/yad-status/SKILL.md +35 -15
  32. package/skills/yad-stories/SKILL.md +3 -1
  33. package/skills/yad-test-cases/SKILL.md +173 -0
  34. package/skills/yad-test-cases/references/test-cases-schema.md +70 -0
@@ -0,0 +1,70 @@
1
+ # Test-cases schema
2
+
3
+ The test cases authored at front state 9 are one Markdown file under `epics/EP-<slug>/`, named
4
+ `test-cases.md` (one per epic — mirrors `ui-design.md`, not a per-story folder). The optional automation
5
+ linkage is a sibling `test-links.json`.
6
+
7
+ ## Frontmatter
8
+
9
+ | Field | Values | Meaning |
10
+ |-------|--------|---------|
11
+ | `id` | `EP-<slug>` | The epic ID — the artifact is epic-level. |
12
+ | `epic` | `EP-<slug>` | Parent epic ID — the unbroken link back to the epic. |
13
+ | `artifact` | `test-cases` | Marks the artifact kind (mirrors `ui-design`). |
14
+ | `status` | `draft` \| `in_review` \| `approved` | Lifecycle within the test-cases gate. |
15
+ | `owner` | name | Inherited from `epic.md` `owner` (the single source — not retyped). |
16
+ | `repos` | subset of the epic's `repos` | Which repos the automation targets. |
17
+ | `code-context` | `{ repos: [<name@sha>], loaded: <date> }` | Optional. Which connected-repo code-maps anchored the tests (Step 2b). The `@sha` (a repo's `syncedHead`) is recommended so freshness is recorded but may be omitted; the SKILL template shows the empty placeholder `{ repos: [], loaded: <date or none> }`. `none` / `[]` when no repos are connected. |
18
+ | `testing` | `none` \| `{ tool, direction, suite, tests }` | The connected testing tool and what it produced (Step 3b). `none` when the step ran artifacts-only. |
19
+
20
+ ## Body
21
+
22
+ ```markdown
23
+ ## Test strategy & risk
24
+ <!-- risk assessment (category, probability, impact, score), entry/exit criteria, NFR thresholds -->
25
+
26
+ ## Test cases
27
+ <!-- one row/subsection per case: id, story covered, priority (P0–P3), level, preconditions, steps, expected -->
28
+
29
+ ## Coverage & traceability
30
+ <!-- story -> case map; every story's acceptance criteria must be covered -->
31
+
32
+ ## Automation (<tool>)
33
+ <!-- omit when testing: none. one row per automation test, linking to it in the repo. mirrors test-links.json -->
34
+ ```
35
+
36
+ ## `test-links.json` (sibling, when a tool was used)
37
+
38
+ Written by `yad-test-cases` Step 4b. Absent when the step ran artifacts-only (`testing: none`).
39
+
40
+ ```json
41
+ {
42
+ "tool": "playwright",
43
+ "suite": "tests/playwright.config.ts",
44
+ "generatedAt": "<YYYY-MM-DD>",
45
+ "direction": "generated | linked",
46
+ "tests": [
47
+ { "case": "TC-01", "story": "EP-<slug>-S01", "repo": "backend", "level": "e2e",
48
+ "path": "tests/inquiry.spec.ts", "url": "<repo url to the test>" }
49
+ ],
50
+ "source": "playwright-mcp"
51
+ }
52
+ ```
53
+
54
+ ## Rules
55
+
56
+ - **Cover every story.** The "Coverage & traceability" section must map each story's acceptance criteria
57
+ to at least one case — an unmapped criterion is a gap the reviewer should catch.
58
+ - **Priorities are risk-based.** P0 = critical (run on every commit) … P3 = low (on-demand); depth
59
+ scales with impact (Murat's principle).
60
+ - **Prefer the lowest useful level.** unit > integration > E2E when a case can be verified lower.
61
+ - **`repos` is a subset of `epic.repos`.** Automation cannot target a repo the epic does not declare.
62
+ - **Single-file, not a folder.** `test-cases.md` resolves through the gate's default content-hash path
63
+ (the file's bytes), so the review gate, revoke-on-change, and review-PR machinery work unchanged.
64
+ - **Automation is additive.** When no testing tool is connected, the step still produces a complete
65
+ `test-cases.md`; `testing: none` and no `test-links.json`.
66
+
67
+ ## Review routing (the test-cases gate)
68
+
69
+ The test-cases gate uses the **base rule** (owner + 1 reviewer) — it is not escalated. The natural
70
+ reviewer is the test architect / QA owner, but the gate predicate requires only owner + 1.