yadflow 1.0.1 → 2.0.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 (77) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +137 -134
  3. package/bin/{sdlc.mjs → yad.mjs} +18 -17
  4. package/cli/commit.mjs +3 -3
  5. package/cli/epic-state.mjs +2 -2
  6. package/cli/gate.mjs +8 -8
  7. package/cli/lib.mjs +1 -1
  8. package/cli/manifest.mjs +77 -36
  9. package/cli/openpr.mjs +3 -3
  10. package/cli/plan.mjs +88 -1
  11. package/cli/platform.mjs +2 -2
  12. package/cli/reconcile.mjs +18 -10
  13. package/cli/repo.mjs +5 -5
  14. package/cli/setup.mjs +7 -7
  15. package/docs/index.html +1227 -0
  16. package/package.json +10 -7
  17. package/skills/sdlc/config.yaml +24 -24
  18. package/skills/sdlc/install.sh +2 -2
  19. package/skills/sdlc/module-help.csv +16 -16
  20. package/skills/{sdlc-author-analysis → yad-analysis}/SKILL.md +12 -12
  21. package/skills/{sdlc-author-architecture → yad-architecture}/SKILL.md +12 -12
  22. package/skills/{sdlc-author-architecture → yad-architecture}/references/contract-format.md +1 -1
  23. package/skills/{sdlc-backfill → yad-backfill}/SKILL.md +4 -4
  24. package/skills/{sdlc-backfill → yad-backfill}/references/backfill.md +2 -2
  25. package/skills/{sdlc-backfill → yad-backfill}/templates/checks/backfill-check.sh +1 -1
  26. package/skills/{sdlc-checks → yad-checks}/SKILL.md +20 -20
  27. package/skills/{sdlc-checks → yad-checks}/references/check-gates.md +21 -21
  28. package/skills/{sdlc-checks → yad-checks}/templates/checks/contract-check.sh +2 -2
  29. package/skills/{sdlc-checks → yad-checks}/templates/checks/verified-commits.sh +2 -2
  30. package/skills/{sdlc-checks/templates/github/sdlc-checks.yml → yad-checks/templates/github/yad-checks.yml} +3 -3
  31. package/skills/{sdlc-checks/templates/github/sdlc-verified-commits.yml → yad-checks/templates/github/yad-verified-commits.yml} +4 -4
  32. package/skills/{sdlc-checks → yad-checks}/templates/gitlab/gitlab-ci.include-root.yml +3 -3
  33. package/skills/{sdlc-checks/templates/gitlab/sdlc-checks.gitlab-ci.yml → yad-checks/templates/gitlab/yad-checks.gitlab-ci.yml} +7 -7
  34. package/skills/{sdlc-checks/templates/gitlab/sdlc-verified-commits.gitlab-ci.yml → yad-checks/templates/gitlab/yad-verified-commits.gitlab-ci.yml} +4 -4
  35. package/skills/{sdlc-connect-repos → yad-connect-repos}/SKILL.md +7 -7
  36. package/skills/{sdlc-connect-repos → yad-connect-repos}/references/code-context.md +6 -6
  37. package/skills/{sdlc-connect-repos → yad-connect-repos}/references/hub-config.md +3 -3
  38. package/skills/{sdlc-author-epic → yad-epic}/SKILL.md +13 -13
  39. package/skills/{sdlc-author-epic → yad-epic}/references/state-schema.md +13 -13
  40. package/skills/{sdlc-hub-bridge → yad-hub-bridge}/SKILL.md +24 -24
  41. package/skills/{sdlc-hub-bridge → yad-hub-bridge}/references/bridge.md +11 -11
  42. package/skills/{sdlc-hub-bridge → yad-hub-bridge}/references/login-roster.md +2 -2
  43. package/skills/{sdlc-hub-bridge → yad-hub-bridge}/templates/checks/hub-route.sh +3 -3
  44. package/skills/{sdlc-hub-bridge/templates/github/sdlc-gate-sync.yml → yad-hub-bridge/templates/github/yad-gate-sync.yml} +10 -10
  45. package/skills/{sdlc-hub-bridge → yad-hub-bridge}/templates/gitlab/gitlab-ci.include-root.yml +3 -3
  46. package/skills/{sdlc-hub-bridge/templates/gitlab/sdlc-gate-sync.gitlab-ci.yml → yad-hub-bridge/templates/gitlab/yad-gate-sync.gitlab-ci.yml} +11 -11
  47. package/skills/{sdlc-implement → yad-implement}/SKILL.md +14 -14
  48. package/skills/{sdlc-implement → yad-implement}/references/implement-conventions.md +4 -4
  49. package/skills/{sdlc-pr-template → yad-pr-template}/SKILL.md +11 -11
  50. package/skills/{sdlc-pr-template → yad-pr-template}/references/risk-routing.md +5 -5
  51. package/skills/{sdlc-pr-template → yad-pr-template}/templates/checks/risk-route.sh +2 -2
  52. package/skills/{sdlc-pr-template → yad-pr-template}/templates/github/pull_request_template.md +1 -1
  53. package/skills/{sdlc-pr-template → yad-pr-template}/templates/gitlab/merge_request_templates/Default.md +1 -1
  54. package/skills/{sdlc-pr-template → yad-pr-template}/templates/hub/github/pull_request_template.md +4 -4
  55. package/skills/{sdlc-pr-template → yad-pr-template}/templates/hub/gitlab/merge_request_templates/Default.md +4 -4
  56. package/skills/{sdlc-review-comments → yad-review-comments}/SKILL.md +6 -6
  57. package/skills/{sdlc-review-comments → yad-review-comments}/references/comment-conventions.md +6 -6
  58. package/skills/{sdlc-review-comments → yad-review-comments}/templates/github/REVIEW_COMMENTS.md +2 -2
  59. package/skills/{sdlc-review-comments → yad-review-comments}/templates/gitlab/REVIEW_COMMENTS.md +2 -2
  60. package/skills/{sdlc-review-gate → yad-review-gate}/SKILL.md +13 -13
  61. package/skills/{sdlc-review-gate → yad-review-gate}/references/gating.md +3 -3
  62. package/skills/{sdlc-run → yad-run}/SKILL.md +12 -12
  63. package/skills/{sdlc-run → yad-run}/references/run-loop.md +10 -10
  64. package/skills/{sdlc-ship → yad-ship}/SKILL.md +8 -8
  65. package/skills/{sdlc-ship → yad-ship}/references/ship-and-record.md +3 -3
  66. package/skills/{sdlc-ship → yad-ship}/templates/.coderabbit.yaml +1 -1
  67. package/skills/{sdlc-spec → yad-spec}/SKILL.md +11 -11
  68. package/skills/{sdlc-spec → yad-spec}/references/spec-handoff.md +2 -2
  69. package/skills/{sdlc-status → yad-status}/SKILL.md +6 -6
  70. package/skills/{sdlc-author-stories → yad-stories}/SKILL.md +10 -10
  71. package/skills/{sdlc-author-stories → yad-stories}/references/story-schema.md +1 -1
  72. package/skills/{sdlc-author-ui → yad-ui}/SKILL.md +9 -9
  73. /package/skills/{sdlc-checks → yad-checks}/templates/checks/build-test-lint.sh +0 -0
  74. /package/skills/{sdlc-checks → yad-checks}/templates/checks/spec-link.sh +0 -0
  75. /package/skills/{sdlc-checks → yad-checks}/templates/gitlab/.gitlab-ci.yml +0 -0
  76. /package/skills/{sdlc-connect-repos → yad-connect-repos}/references/repos-registry.md +0 -0
  77. /package/skills/{sdlc-implement → yad-implement}/templates/.gitmessage +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ # [2.0.0](https://github.com/abdelrahmannasr/yadflow/compare/v1.4.0...v2.0.0) (2026-06-12)
2
+
3
+
4
+ * feat!: rename sdlc-* skills to yad-* and the CLI to yad; feature the report ([ea05f17](https://github.com/abdelrahmannasr/yadflow/commit/ea05f17085f992343fc9d1f25bde24c87815be1a))
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * rewrite the root .gitlab-ci.yml include when migrating gitlab fragments ([75eeb3a](https://github.com/abdelrahmannasr/yadflow/commit/75eeb3acf4f2c77b43af4577fe5d1d3cc4285258))
10
+
11
+
12
+ ### Features
13
+
14
+ * migrate pre-2.0 sdlc-* installs in place via yad update ([f85433f](https://github.com/abdelrahmannasr/yadflow/commit/f85433ff8fb4f54ce0c455abb2d72974f82fd507))
15
+
16
+
17
+ ### BREAKING CHANGES
18
+
19
+ * the installed command is now `yad` (was `sdlc`) and the
20
+ skills are invoked as /yad-* (were /sdlc-*). Repos wired before this release
21
+ keep their old sdlc-* workflow files and markers; re-run `yad check --fix`
22
+ to install the renamed ones.
23
+
24
+ Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
25
+
1
26
  # [1.1.0](https://github.com/abdelrahmannasr/sdlc-workflow/compare/v1.0.3...v1.1.0) (2026-06-09)
2
27
 
3
28
 
package/README.md CHANGED
@@ -1,12 +1,15 @@
1
1
  # Yadflow — the gated, team, multi-repo SDLC on top of BMAD
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/yadflow?logo=npm)](https://www.npmjs.com/package/yadflow)
4
- [![CI](https://github.com/abdelrahmannasr/sdlc-workflow/actions/workflows/ci.yml/badge.svg)](https://github.com/abdelrahmannasr/sdlc-workflow/actions/workflows/ci.yml)
4
+ [![CI](https://github.com/abdelrahmannasr/yadflow/actions/workflows/ci.yml/badge.svg)](https://github.com/abdelrahmannasr/yadflow/actions/workflows/ci.yml)
5
5
  [![provenance](https://img.shields.io/badge/npm-provenance-blue?logo=npm)](https://docs.npmjs.com/generating-provenance-statements)
6
+ [![report](https://img.shields.io/badge/docs-Yadflow%20report-2471a3)](https://abdelrahmannasr.github.io/yadflow/)
7
+
8
+ > 📖 **Start here: the [Yadflow Terminology & Workflow Structure Report](https://abdelrahmannasr.github.io/yadflow/)** —
9
+ > the full picture of every term, artifact, gate and skill in one richly illustrated page.
6
10
 
7
11
  **Yadflow** (*yahd-flow* — from **يد**, Arabic for "hand") is the AI-driven SDLC where a human hand
8
- moves every gate. *AI builds. The hand decides.* On npm as `yadflow`; the GitHub repo keeps its
9
- historical `sdlc-workflow` name.
12
+ moves every gate. *AI builds. The hand decides.* On npm and GitHub as `yadflow`.
10
13
 
11
14
  A custom BMAD module that turns BMAD from a solo tool into a **team, gated, file-driven SDLC
12
15
  engine**. Every step does its work, writes its output to a file, and **waits at a gate**. Who
@@ -20,7 +23,7 @@ a scaffolded module that installs cleanly, and a working **team review gate** yo
20
23
 
21
24
  The whole lifecycle, from an empty project to shipped code. Setup is one-time; the **front half**
22
25
  is human-gated and runs once per epic in the product hub; the **build half** runs once per story
23
- per code repo; **automation** is opt-in and earned. `sdlc-status` reads it all; `sdlc-hub-bridge`
26
+ per code repo; **automation** is opt-in and earned. `yad-status` reads it all; `yad-hub-bridge`
24
27
  mirrors front-half reviews to real PR/MRs.
25
28
 
26
29
  ```mermaid
@@ -33,20 +36,20 @@ flowchart TD
33
36
 
34
37
  subgraph SETUP["0 · One-time setup (per project)"]
35
38
  direction TB
36
- inst["install.sh<br/>copy sdlc-* skills into IDE dirs"]
37
- wire["wire each repo:<br/>sdlc-checks · sdlc-pr-template · sdlc-review-comments"]
38
- conn["sdlc-connect-repos<br/>repos.json + cached code-map"]
39
+ inst["install.sh<br/>copy yad-* skills into IDE dirs"]
40
+ wire["wire each repo:<br/>yad-checks · yad-pr-template · yad-review-comments"]
41
+ conn["yad-connect-repos<br/>repos.json + cached code-map"]
39
42
  phub["optional: hub on a platform<br/>detect-hub · roster"]
40
43
  inst --> wire --> conn --> phub
41
44
  end
42
45
 
43
46
  subgraph FRONT["A · Front half — product hub · human-gated · once per epic"]
44
47
  direction TB
45
- an["sdlc-author-analysis<br/>optional → analysis.md"]:::artifact
46
- ep["sdlc-author-epic<br/>epic.md · assigns EP-&lt;slug&gt;"]:::artifact
47
- ar["sdlc-author-architecture<br/>architecture.md + locked contract.md"]:::artifact
48
- ui["sdlc-author-ui<br/>ui-design.md + DESIGN.md"]:::artifact
49
- st["sdlc-author-stories<br/>repo-tagged stories/EP-&lt;slug&gt;-S0N.md"]:::artifact
48
+ an["yad-analysis<br/>optional → analysis.md"]:::artifact
49
+ ep["yad-epic<br/>epic.md · assigns EP-&lt;slug&gt;"]:::artifact
50
+ ar["yad-architecture<br/>architecture.md + locked contract.md"]:::artifact
51
+ ui["yad-ui<br/>ui-design.md + DESIGN.md"]:::artifact
52
+ st["yad-stories<br/>repo-tagged stories/EP-&lt;slug&gt;-S0N.md"]:::artifact
50
53
  gAn{{"gate · analysis"}}:::gated
51
54
  gEp{{"gate · epic<br/>base: owner + reviewer"}}:::gated
52
55
  gAr{{"gate · architecture<br/>escalated: + repo domain owners"}}:::gated
@@ -58,11 +61,11 @@ flowchart TD
58
61
 
59
62
  subgraph BUILD["B · Build half — per story, per code repo"]
60
63
  direction TB
61
- sp["sdlc-spec<br/>Spec Kit ceremony → specs/&lt;story&gt;/"]
62
- im["sdlc-implement<br/>1 task = 1 branch = 1 commit"]:::earns
63
- ck["sdlc-checks<br/>spec-link · contract-check · build/test/lint"]:::earns
64
- prm["open PR/MR + sdlc-pr-template route"]
65
- shp["sdlc-ship<br/>AI review (advisory)"]
64
+ sp["yad-spec<br/>Spec Kit ceremony → specs/&lt;story&gt;/"]
65
+ im["yad-implement<br/>1 task = 1 branch = 1 commit"]:::earns
66
+ ck["yad-checks<br/>spec-link · contract-check · build/test/lint"]:::earns
67
+ prm["open PR/MR + yad-pr-template route"]
68
+ shp["yad-ship<br/>AI review (advisory)"]
66
69
  eng{{"engineer review<br/>human · never automated"}}:::locked
67
70
  merged(["merge → build-log.json"]):::sentinel
68
71
  sp --> im --> ck --> prm --> shp --> eng --> merged
@@ -70,7 +73,7 @@ flowchart TD
70
73
 
71
74
  subgraph AUTO["C · Automation — earned & reversible"]
72
75
  direction TB
73
- run["sdlc-run<br/>reads automation dial + trust-log.json"]:::earns
76
+ run["yad-run<br/>reads automation dial + trust-log.json"]:::earns
74
77
  kill["kill switch → everything human_approve"]
75
78
  run --- kill
76
79
  end
@@ -78,9 +81,9 @@ flowchart TD
78
81
  phub --> an
79
82
  rfb --> sp
80
83
  run -. drives earned back steps .-> im
81
- bridge["sdlc-hub-bridge<br/>review PR/MR ↔ file ledger"]:::gated
84
+ bridge["yad-hub-bridge<br/>review PR/MR ↔ file ledger"]:::gated
82
85
  bridge -. syncs approvals .-> gEp
83
- status["sdlc-status<br/>read-only view over all of it"]
86
+ status["yad-status<br/>read-only view over all of it"]
84
87
  status -. observes .-> FRONT
85
88
  status -. observes .-> BUILD
86
89
  ```
@@ -97,30 +100,30 @@ human**. Detailed walkthroughs for each phase follow below.
97
100
  |------|-----------|
98
101
  | `RESEARCH-NOTES.md` | Verified Phase 0 facts about BMAD, Spec Kit, Repomix, Impeccable + deviations. |
99
102
  | `skills/sdlc/` | Module source of truth (`config.yaml`, `module-help.csv`, `install.sh`). Survives BMAD updates. |
100
- | `bin/`, `cli/` | The `sdlc` setup/update CLI (published to npm as `yadflow`). |
101
- | `skills/sdlc-author-analysis/` | Optional front state 1: pressure-test the idea with the analyst into `analysis.md` (skippable). |
102
- | `skills/sdlc-author-epic/` | Front state 1: author an epic with AI assist, assign its `EP-<slug>` ID, seed state. |
103
- | `skills/sdlc-author-architecture/` | Front state 3: author `architecture.md` + the locked `contract.md`; hash-lock the contract surface. |
104
- | `skills/sdlc-author-ui/` | Front state 5: author `ui-design.md` + `DESIGN.md` (Impeccable slash-commands, or graceful fallback). |
105
- | `skills/sdlc-author-stories/` | Front state 7: break the epic into repo-tagged stories with stable `EP-<slug>-S0N` IDs. |
106
- | `skills/sdlc-connect-repos/` | Connect code repos to the hub (GitHub/GitLab, local-user auth); cache a Repomix pack + **code-map** per repo so the front phases are code-aware. |
107
- | `skills/sdlc-review-gate/` | The reusable **team review + approve gate** (used for all four reviews). |
108
- | `skills/sdlc-spec/` | Build Step A: run the Spec Kit ceremony once per story per repo → `specs/<story-id>/`. |
109
- | `skills/sdlc-implement/` | Build Step B: implement ONE atomic task as a small diff on its own branch. |
110
- | `skills/sdlc-checks/` | Build Step C: wire + run the CI gates (spec-link, contract-check, build/test/lint, verified-commits). |
111
- | `skills/sdlc-pr-template/` | Build Step D: install the platform PR/MR template + risk routing (code repos **and** the hub). |
112
- | `skills/sdlc-review-comments/` | Install platform-matched PR/MR review-comment scaffolds (code repos and the hub). |
113
- | `skills/sdlc-hub-bridge/` | The templated PR/MR **review bridge**: open a review PR/MR on the hub and sync platform approvals/comments into the file ledger. |
114
- | `skills/sdlc-ship/` | Build Step E: AI review (advisory) → engineer review → ship + record in the build log. |
115
- | `skills/sdlc-backfill/` | Generate a human-verified spec for already-built code (Repomix), gated per touched feature. |
116
- | `skills/sdlc-run/` | Phase 4 orchestrator: drive a story's back half on the `automation` dial; kill switch. |
117
- | `skills/sdlc-status/` | Read-only view: front chain, build-half dials, trust record, fleet roll-up. |
103
+ | `bin/`, `cli/` | The `yad` setup/update CLI (published to npm as `yadflow`). |
104
+ | `skills/yad-analysis/` | Optional front state 1: pressure-test the idea with the analyst into `analysis.md` (skippable). |
105
+ | `skills/yad-epic/` | Front state 1: author an epic with AI assist, assign its `EP-<slug>` ID, seed state. |
106
+ | `skills/yad-architecture/` | Front state 3: author `architecture.md` + the locked `contract.md`; hash-lock the contract surface. |
107
+ | `skills/yad-ui/` | Front state 5: author `ui-design.md` + `DESIGN.md` (Impeccable slash-commands, or graceful fallback). |
108
+ | `skills/yad-stories/` | Front state 7: break the epic into repo-tagged stories with stable `EP-<slug>-S0N` IDs. |
109
+ | `skills/yad-connect-repos/` | Connect code repos to the hub (GitHub/GitLab, local-user auth); cache a Repomix pack + **code-map** per repo so the front phases are code-aware. |
110
+ | `skills/yad-review-gate/` | The reusable **team review + approve gate** (used for all four reviews). |
111
+ | `skills/yad-spec/` | Build Step A: run the Spec Kit ceremony once per story per repo → `specs/<story-id>/`. |
112
+ | `skills/yad-implement/` | Build Step B: implement ONE atomic task as a small diff on its own branch. |
113
+ | `skills/yad-checks/` | Build Step C: wire + run the CI gates (spec-link, contract-check, build/test/lint, verified-commits). |
114
+ | `skills/yad-pr-template/` | Build Step D: install the platform PR/MR template + risk routing (code repos **and** the hub). |
115
+ | `skills/yad-review-comments/` | Install platform-matched PR/MR review-comment scaffolds (code repos and the hub). |
116
+ | `skills/yad-hub-bridge/` | The templated PR/MR **review bridge**: open a review PR/MR on the hub and sync platform approvals/comments into the file ledger. |
117
+ | `skills/yad-ship/` | Build Step E: AI review (advisory) → engineer review → ship + record in the build log. |
118
+ | `skills/yad-backfill/` | Generate a human-verified spec for already-built code (Repomix), gated per touched feature. |
119
+ | `skills/yad-run/` | Phase 4 orchestrator: drive a story's back half on the `automation` dial; kill switch. |
120
+ | `skills/yad-status/` | Read-only view: front chain, build-half dials, trust record, fleet roll-up. |
118
121
  | `epics/EP-istifta-inquiries/` | A worked demo epic run **end to end** (front half + build half + automation). |
119
122
  | `demo-repos/` | Throwaway code repos for the build half (separate git repos; regenerable — see `demo-repos/README.md`). |
120
123
  | `docs/` | The phased build plans (`phase-2`…`phase-5`) and the original workflow design. |
121
124
  | [`CONTRIBUTING.md`](CONTRIBUTING.md) | Commit & PR/MR title convention (Conventional Commits, lowercase after the type). |
122
125
 
123
- ## The `sdlc` CLI (install, update, reconcile)
126
+ ## The `yad` CLI (install, update, reconcile)
124
127
 
125
128
  The module ships a zero-dependency CLI, published to npm as
126
129
  [`yadflow`](https://www.npmjs.com/package/yadflow). Run it
@@ -129,17 +132,17 @@ with `npx` from your **product hub** repo — no clone needed.
129
132
  | Command | What it does |
130
133
  |---------|--------------|
131
134
  | `npx yadflow setup` | Guided first-run wizard (the steps below). |
132
- | `npx yadflow check` | Read-only report: what is **missing** / **outdated** (drifted) / **stale** (code-context) vs the bundled manifest. |
135
+ | `npx yadflow check` | Read-only report: what is **missing** / **outdated** (drifted) / **stale** (code-context) / **legacy** (pre-2.0 `sdlc-*` names) vs the bundled manifest. |
133
136
  | `npx yadflow check --fix` | Reconcile: fill what is missing **and** update what changed — touches nothing already correct. |
134
- | `npx yadflow update` | Apply drift only (alias for `check --fix --scope=changed`). |
135
- | `sdlc gate open <epic> <artifact>` | Open the front-half **review PR/MR** for an artifact and mark the step `in_review`. |
136
- | `sdlc gate sync <epic> [artifact]` | Pull the PR/MR's reviews + comment threads into the file ledger; **auto-advance** the step when approvals are satisfied, all threads are resolved, and the PR is merged. |
137
- | `sdlc gate comments <epic> [artifact]` | Fetch the unresolved review comments to address (then reply on the PR; reviewers resolve their threads). |
138
- | `sdlc gate status <epic>` | Show each review step and its recorded approvals. |
139
- | `sdlc gate ci [--branch <head>] [--pr <n>]` | The CI entry the hub workflow calls on review/merge events: derive the epic/artifact from the `review/EP-*` branch, run the same sync, and commit **only the ledger** to the hub default branch (sweep every open review PR when no `--branch`). |
140
- | `sdlc commit --type <t> -m <subject>` | Commit by the SDLC convention — Conventional subject, `Task`/`Contract-Change`/`Co-Authored-By` trailers, atomic-file guard. |
141
- | `sdlc open-pr [--repo <name>]` | Open a code-repo **task** PR/MR from the repo's platform template (build half). |
142
- | `sdlc repo list` / `sdlc repo refresh [name]` | List connected repos as **fresh / stale**, and re-pack a stale one — staleness is now an explicit human decision, never an automatic skill side-effect. |
137
+ | `npx yadflow update` | Apply drift only (alias for `check --fix --scope=changed`). Also migrates a pre-2.0 install in place: `sdlc-*` skill copies and marker-owned `sdlc-*.yml` CI files are replaced by their `yad-*` names (a same-named file *you* authored is never touched). |
138
+ | `yad gate open <epic> <artifact>` | Open the front-half **review PR/MR** for an artifact and mark the step `in_review`. |
139
+ | `yad gate sync <epic> [artifact]` | Pull the PR/MR's reviews + comment threads into the file ledger; **auto-advance** the step when approvals are satisfied, all threads are resolved, and the PR is merged. |
140
+ | `yad gate comments <epic> [artifact]` | Fetch the unresolved review comments to address (then reply on the PR; reviewers resolve their threads). |
141
+ | `yad gate status <epic>` | Show each review step and its recorded approvals. |
142
+ | `yad gate ci [--branch <head>] [--pr <n>]` | The CI entry the hub workflow calls on review/merge events: derive the epic/artifact from the `review/EP-*` branch, run the same sync, and commit **only the ledger** to the hub default branch (sweep every open review PR when no `--branch`). |
143
+ | `yad commit --type <t> -m <subject>` | Commit by the SDLC convention — Conventional subject, `Task`/`Contract-Change`/`Co-Authored-By` trailers, atomic-file guard. |
144
+ | `yad open-pr [--repo <name>]` | Open a code-repo **task** PR/MR from the repo's platform template (build half). |
145
+ | `yad repo list` / `yad repo refresh [name]` | List connected repos as **fresh / stale**, and re-pack a stale one — staleness is now an explicit human decision, never an automatic skill side-effect. |
143
146
  | `npx yadflow --version` | Print the installed CLI version. |
144
147
 
145
148
  Flags: `--dir <path>` targets a project other than the cwd; `--force` re-copies unchanged files (or
@@ -149,8 +152,8 @@ bypasses the commit atomic guard). Commit flags: `--type`, `-m/--message`, `--ta
149
152
 
150
153
  ### The PR-driven review gate
151
154
 
152
- The front-half gate now rides the **PR/MR you open per step** (`sdlc gate open`). Reviewers approve and
153
- comment on the platform; `sdlc gate sync` maps that state into the file ledger (`approvals.json`,
155
+ The front-half gate now rides the **PR/MR you open per step** (`yad gate open`). Reviewers approve and
156
+ comment on the platform; `yad gate sync` maps that state into the file ledger (`approvals.json`,
154
157
  `comments.json`, `reviews/*.md`) — which stays the source of truth — and the step **auto-advances on
155
158
  merge** once three things hold: the reviewer rule is satisfied (owner + 1 reviewer, plus a domain-owner
156
159
  per touched repo on escalated steps), every comment thread is resolved, and the review PR/MR is merged.
@@ -158,22 +161,22 @@ The merge click is the human approval act, so front steps still never `machine_a
158
161
  **revoked when the reviewed artifact actually changes** (re-hash), giving reviewers a fresh pass. With no
159
162
  hub platform / no `gh`/`glab`, the gate degrades to file-only with no error.
160
163
 
161
- **Event-driven sync.** Wire the hub once (`sdlc check --fix` installs `.github/workflows/sdlc-gate-sync.yml`,
164
+ **Event-driven sync.** Wire the hub once (`yad check --fix` installs `.github/workflows/yad-gate-sync.yml`,
162
165
  or the GitLab fragment + schedule) and every **approval, change request, and merge** on a review PR/MR
163
- triggers `sdlc gate ci` in the hub's own CI: the ledger updates land directly on the hub's default branch
164
- — no manual `sdlc gate sync` needed (it stays valid as the fallback). CI never approves and never merges;
166
+ triggers `yad gate ci` in the hub's own CI: the ledger updates land directly on the hub's default branch
167
+ — no manual `yad gate sync` needed (it stays valid as the fallback). CI never approves and never merges;
165
168
  the human keeps the merge click. GitLab caveat: approvals are only picked up by the ~15-min scheduled
166
- sweep (GitLab fires no pipeline on approval) — details in `skills/sdlc-hub-bridge/references/bridge.md`.
169
+ sweep (GitLab fires no pipeline on approval) — details in `skills/yad-hub-bridge/references/bridge.md`.
167
170
  Concurrency caveat: on GitHub the workflow's `concurrency` group serializes runs repo-wide and every
168
171
  sync re-reads the full platform state, so racing reviewer events lose nothing. Outside that group —
169
- a manual `sdlc gate sync` racing CI, or GitLab pipelines — two simultaneous syncs serialize their
172
+ a manual `yad gate sync` racing CI, or GitLab pipelines — two simultaneous syncs serialize their
170
173
  *commits* via the rebase retry but each works from the state it read at start, so the rarer of two
171
174
  simultaneous advancements can be lost; the next event or scheduled sweep re-syncs and converges.
172
175
 
173
176
  ### What `setup` walks you through (7 steps)
174
177
 
175
178
  1. **Preflight** — confirm the hub is a git repo (offers `git init`); check `git`/`node`/`npx`.
176
- 2. **Install the module** — copy all 17 `sdlc-*` skills into the IDE skill dirs you pick
179
+ 2. **Install the module** — copy all 17 `yad-*` skills into the IDE skill dirs you pick
177
180
  (`.claude/`, `.agents/`, `.zencoder/`, `.opencode/`) and register `_bmad/sdlc/`.
178
181
  3. **Hub platform & roster** — detect GitHub/GitLab from the remote; record reviewers → `.sdlc/hub.json`.
179
182
  4. **Connect code repos** — register each repo into `.sdlc/repos.json` and cache a Repomix pack.
@@ -202,12 +205,12 @@ provenance). See [`RELEASING.md`](RELEASING.md).
202
205
  ## Agent skills (all 17)
203
206
 
204
207
  The CLI **installs and wires** the module; the skills below are the **agents you invoke by name** in your
205
- AI IDE (e.g. *“run `sdlc-author-epic`”*) to actually do the work. State lives in files you can also edit
208
+ AI IDE (e.g. *“run `yad-epic`”*) to actually do the work. State lives in files you can also edit
206
209
  directly. Each skill stops at a gate and never auto-advances unless a step has *earned* automation.
207
210
 
208
211
  ### Setup & code-awareness
209
212
 
210
- - **`sdlc-connect-repos`** — Connects code repos to the product hub so the front/"brain" phases are
213
+ - **`yad-connect-repos`** — Connects code repos to the product hub so the front/"brain" phases are
211
214
  code-aware. Registers N code repos (GitHub or GitLab, local-user auth, no stored tokens) into
212
215
  `.sdlc/repos.json`, then caches an AI-readable picture of each — a compressed Repomix pack and a
213
216
  lightweight code-map (existing endpoints/events/data-models/modules), secret-scanned. Idempotent and
@@ -215,64 +218,64 @@ directly. Each skill stops at a gate and never auto-advances unless a step has *
215
218
 
216
219
  ### Front half — author the "thinking" (once per epic, human-gated)
217
220
 
218
- - **`sdlc-author-analysis`** — *Optional* front state 1. With the analyst, pressure-test a feature idea
221
+ - **`yad-analysis`** — *Optional* front state 1. With the analyst, pressure-test a feature idea
219
222
  and write the discovery brief into `analysis.md`. Assigns the `EP-<slug>` ID and seeds `.sdlc/` state
220
223
  (the 10-step chain that puts analysis before epic). If skipped, the epic step does this shaping inline.
221
- - **`sdlc-author-epic`** — The epic front state. Shape the idea with the analyst (or read `analysis.md`
224
+ - **`yad-epic`** — The epic front state. Shape the idea with the analyst (or read `analysis.md`
222
225
  when it already ran), then write the epic with the pm into `epic.md`. The entry point when analysis is
223
226
  skipped: assigns the `EP-<slug>` ID and seeds `.sdlc/` state.
224
- - **`sdlc-author-architecture`** — Front state 3. With the architect, author `architecture.md` and the
227
+ - **`yad-architecture`** — Front state 3. With the architect, author `architecture.md` and the
225
228
  locked `contract.md` (the shared cross-repo surface), then hash-lock the contract surface into
226
229
  `.sdlc/contract-lock.json`. Reads `epic.md`; escalates on the contract risk tag.
227
- - **`sdlc-author-ui`** — Front state 5. With the ux-designer, author `ui-design.md` and `DESIGN.md`,
230
+ - **`yad-ui`** — Front state 5. With the ux-designer, author `ui-design.md` and `DESIGN.md`,
228
231
  driving Impeccable as harness slash-commands (document/extract/craft) when installed, or authoring
229
232
  directly when not. Reads epic + architecture.
230
- - **`sdlc-author-stories`** — Front state 7. With the pm, break the approved epic into user stories, each
233
+ - **`yad-stories`** — Front state 7. With the pm, break the approved epic into user stories, each
231
234
  tagged with the repos that must implement it. Assigns zero-padded `EP-<slug>-S0N` IDs, one file per
232
235
  story under `stories/`. Reads epic + architecture + contract + UI.
233
236
 
234
237
  ### The review gate (cross-cutting — used by every review)
235
238
 
236
- - **`sdlc-review-gate`** — The reusable team review + approve gate. Shares an authored artifact, records
239
+ - **`yad-review-gate`** — The reusable team review + approve gate. Shares an authored artifact, records
237
240
  reviewer comments and approvals as files, enforces the **owner + 1 reviewer** rule (escalating to
238
241
  domain owners on contract/auth/payments), and advances the epic state **only** when approval is
239
242
  recorded.
240
- - **`sdlc-hub-bridge`** — The templated PR/MR bridge for the front-half gate. When the hub has a platform
243
+ - **`yad-hub-bridge`** — The templated PR/MR bridge for the front-half gate. When the hub has a platform
241
244
  (`.sdlc/hub.json`), it opens a review PR/MR per artifact, sets the required reviewers/labels, and
242
245
  provides the read-only `gh`/`glab` recipes that sync platform comments + approvals back into the file
243
246
  ledger. The file ledger stays the source of truth; degrades to a file-only gate with no platform.
244
- - **`sdlc-review-comments`** — Installs platform-matched PR/MR review-comment scaffolds so reviewers
247
+ - **`yad-review-comments`** — Installs platform-matched PR/MR review-comment scaffolds so reviewers
245
248
  leave structured, attributable feedback that maps cleanly into the file ledger.
246
249
 
247
250
  ### Build half — turn stories into shipped code (once per story, per repo)
248
251
 
249
- - **`sdlc-spec`** — Step A. For one ready-for-build story and one of its repos, run the Spec Kit ceremony
252
+ - **`yad-spec`** — Step A. For one ready-for-build story and one of its repos, run the Spec Kit ceremony
250
253
  once (specify → clarify → plan → analyze → checklist → tasks) → `specs/<story-id>/`. Drives `/speckit.*`
251
254
  when installed; references the locked contract — never re-invents the surface.
252
- - **`sdlc-implement`** — Step B. With the dev lens, implement **one** atomic task as a small diff
255
+ - **`yad-implement`** — Step B. With the dev lens, implement **one** atomic task as a small diff
253
256
  (≤3 files) on its own branch. The diff stays inside the files the task declared (flag and STOP if it
254
257
  would grow). Commit ends with the task ID; `Contract-Change: yes` only if it touches the locked
255
258
  contract surface.
256
- - **`sdlc-checks`** — Step C, the production-safety gates. Wire and run three CI gates: **spec-link**
259
+ - **`yad-checks`** — Step C, the production-safety gates. Wire and run three CI gates: **spec-link**
257
260
  (every change links a real story/spec), **contract-check** (a contract-surface diff without a
258
261
  re-locked contract FAILS), and **build/test/lint**. CI-agnostic bash for GitHub Actions and GitLab CI.
259
- - **`sdlc-pr-template`** — Step D. Detect the repo's platform and commit the matching PR/MR template with
262
+ - **`yad-pr-template`** — Step D. Detect the repo's platform and commit the matching PR/MR template with
260
263
  an Impact & Risk block; high risk (or a contract/auth/payments surface) routes the review to domain
261
264
  owners. Includes `risk-route.sh`.
262
- - **`sdlc-ship`** — Step E. AI review (CodeRabbit, advisory) → engineer review (the human gate, owner +
265
+ - **`yad-ship`** — Step E. AI review (CodeRabbit, advisory) → engineer review (the human gate, owner +
263
266
  1 reviewer with the same escalation) → on merge, record the ship in the epic build-log and update the
264
267
  story state so the epic → story → task → PR chain stays traceable.
265
- - **`sdlc-backfill`** — Step G. Generate specs for already-built features in an existing repo so new work
268
+ - **`yad-backfill`** — Step G. Generate specs for already-built features in an existing repo so new work
266
269
  doesn't break them: pack one feature at a time with Repomix, write a DRAFT spec, require human approval
267
270
  before it counts. A change is blocked only until the features it touches have approved specs.
268
271
 
269
272
  ### Automation & status
270
273
 
271
- - **`sdlc-run`** — The Phase 4 orchestrator. Drives a story's back-half loop (spec → tasks → implement →
274
+ - **`yad-run`** — The Phase 4 orchestrator. Drives a story's back-half loop (spec → tasks → implement →
272
275
  checks) on each step's automation dial, recording every run in the trust log. A clean `checks` pass
273
276
  auto-advances to engineer-review; any failure, scope overrun, or contract-surface touch HALTS for a
274
277
  human. Also sets a step's dial (gated by trust evidence) and flips the system-wide kill switch.
275
- - **`sdlc-status`** — Read-only view of an epic: the current step, each step's dials (assistance/
278
+ - **`yad-status`** — Read-only view of an epic: the current step, each step's dials (assistance/
276
279
  automation) and status, which approvals are still required, per-story back-half trust records, the
277
280
  kill-switch state, and a fleet roll-up across epics.
278
281
 
@@ -286,7 +289,7 @@ UI, stories) and their reviews are **locked** — they may not be set to `machin
286
289
  version. A front state advances only on a **human act** — recording an approval and `advance`, or
287
290
  merging the approved, fully-resolved review PR — never on a machine.
288
291
 
289
- As of **Phase 4a** the `automation` dial is no longer inert: the orchestrator `sdlc-run` reads it and,
292
+ As of **Phase 4a** the `automation` dial is no longer inert: the orchestrator `yad-run` reads it and,
290
293
  for the safe **back** steps, advances on its own when a step is set to `machine_advance` (and has
291
294
  *earned* it — see "Run the back half on the dial" below). The engineer review and all four front
292
295
  states stay `human_approve` forever.
@@ -295,7 +298,7 @@ states stay `human_approve` forever.
295
298
 
296
299
  This is the full path from nothing to shipped code. Each numbered step names the skill to invoke; the
297
300
  detailed sections below expand every phase. Invoke a skill by name in your agent/IDE (e.g. *“run
298
- `sdlc-author-epic`”*); state lives in files you can also edit directly.
301
+ `yad-epic`”*); state lives in files you can also edit directly.
299
302
 
300
303
  ### 0 — One-time setup
301
304
 
@@ -309,66 +312,66 @@ detailed sections below expand every phase. Invoke a skill by name in your agent
309
312
  live under `demo-repos/<repo>/` — regenerate from `demo-repos/README.md`.
310
313
  3. **Optional tools** (the workflow degrades gracefully and records it if any are absent): **Spec Kit**
311
314
  (`/speckit.*`), **Impeccable** (`/impeccable …`), **Repomix** (`npx repomix`, used by
312
- `sdlc-connect-repos` and `sdlc-backfill`), **CodeRabbit** (advisory AI review).
313
- 4. **Wire each code repo once:** `sdlc-checks repo:<repo> action: wire` (installs the CI gates —
314
- *merges* with any existing CI, never clobbers), `sdlc-pr-template repo:<repo> action: wire` (PR/MR
315
- template + risk routing), `sdlc-review-comments repo:<repo> action: wire` (review-comment scaffold).
315
+ `yad-connect-repos` and `yad-backfill`), **CodeRabbit** (advisory AI review).
316
+ 4. **Wire each code repo once:** `yad-checks repo:<repo> action: wire` (installs the CI gates —
317
+ *merges* with any existing CI, never clobbers), `yad-pr-template repo:<repo> action: wire` (PR/MR
318
+ template + risk routing), `yad-review-comments repo:<repo> action: wire` (review-comment scaffold).
316
319
  5. **Connect each code repo to the hub** (so the front phases see what's already built):
317
- `sdlc-connect-repos action: connect repo:<repo> path:<path-or-git_url> domain_owner:<who>`. It
320
+ `yad-connect-repos action: connect repo:<repo> path:<path-or-git_url> domain_owner:<who>`. It
318
321
  registers the repo in `.sdlc/repos.json` and caches a Repomix pack + a lightweight **code-map**
319
322
  (existing endpoints/events/data-models/modules, secret-scanned). Clones/fetches as the **local user**
320
323
  (SSH or credential helper; GitHub or GitLab; no stored tokens). Re-run for any new repo. Freshness is a
321
- **human decision**: `sdlc repo list` shows fresh/stale, `sdlc repo refresh [name]` re-packs a moved repo
324
+ **human decision**: `yad repo list` shows fresh/stale, `yad repo refresh [name]` re-packs a moved repo
322
325
  (skills flag staleness and point here — they never silently re-pack). Greenfield → skip it.
323
326
  6. **(Optional) Put the hub on a platform** so the front-half review runs through real PRs:
324
- `sdlc-connect-repos action: detect-hub`, then `action: roster` once per reviewer (login → SDLC
325
- name + role), and `sdlc-pr-template repo:hub action: wire` / `sdlc-review-comments repo:hub action:
326
- wire` / `sdlc-checks repo:hub action: wire`. With no hub platform the front gate just runs file-only.
327
+ `yad-connect-repos action: detect-hub`, then `action: roster` once per reviewer (login → SDLC
328
+ name + role), and `yad-pr-template repo:hub action: wire` / `yad-review-comments repo:hub action:
329
+ wire` / `yad-checks repo:hub action: wire`. With no hub platform the front gate just runs file-only.
327
330
  7. **Conventions:** commits and PR/MR titles follow Conventional Commits (lowercase after the type), the
328
331
  human author owns each commit with an optional per-commit `Co-Authored-By` AI trailer — see
329
332
  [`CONTRIBUTING.md`](CONTRIBUTING.md).
330
333
 
331
334
  ### A — Front half (human-authored, once per epic)
332
335
  Each author step writes its artifact, sets itself `done`, moves `currentStep` to its review, and
333
- **stops at the gate**. Run every gate with **`sdlc-review-gate`** — or, when the hub is on a platform,
334
- drive it deterministically with the **`sdlc gate`** CLI (`open → sync → … → merge`): the review rides
336
+ **stops at the gate**. Run every gate with **`yad-review-gate`** — or, when the hub is on a platform,
337
+ drive it deterministically with the **`yad gate`** CLI (`open → sync → … → merge`): the review rides
335
338
  the per-step PR/MR and the step **auto-advances on merge** once approvals are satisfied and all comment
336
339
  threads are resolved. Details: **“Run the full front half by hand”** below.
337
340
 
338
- 6. `sdlc-author-epic` → `epic.md` (assigns `EP-<slug>`, seeds state) → review (base rule).
339
- 7. `sdlc-author-architecture` → `architecture.md` + locked `contract.md` → review (**escalated**: contract).
340
- 8. `sdlc-author-ui` → `ui-design.md` + `DESIGN.md` → review (base rule).
341
- 9. `sdlc-author-stories` → repo-tagged `stories/EP-<slug>-S0N.md` → review (**per-repo**).
341
+ 6. `yad-epic` → `epic.md` (assigns `EP-<slug>`, seeds state) → review (base rule).
342
+ 7. `yad-architecture` → `architecture.md` + locked `contract.md` → review (**escalated**: contract).
343
+ 8. `yad-ui` → `ui-design.md` + `DESIGN.md` → review (base rule).
344
+ 9. `yad-stories` → repo-tagged `stories/EP-<slug>-S0N.md` → review (**per-repo**).
342
345
  → `state.json` reaches `currentStep: ready-for-build`.
343
346
 
344
347
  ### B — Build half (per story, per repo)
345
348
  From a `ready-for-build` story, for **each** repo the story is tagged with. Details: **“Run the full
346
349
  build half by hand”** below.
347
350
 
348
- 10. `sdlc-spec story:<id> repo:<repo>` → writes `specs/<story-id>/` (spec/plan/tasks + `link.md`).
349
- 11. `sdlc-implement story:<id> repo:<repo> task:<T0N>` → one atomic task = one branch = one commit
350
- (repeat per task). Commit by convention with **`sdlc commit --type <t> -m <subject> [--ai <tool>]`**
351
+ 10. `yad-spec story:<id> repo:<repo>` → writes `specs/<story-id>/` (spec/plan/tasks + `link.md`).
352
+ 11. `yad-implement story:<id> repo:<repo> task:<T0N>` → one atomic task = one branch = one commit
353
+ (repeat per task). Commit by convention with **`yad commit --type <t> -m <subject> [--ai <tool>]`**
351
354
  (Task/Contract-Change/Co-Authored-By trailers, atomic-file guard).
352
- 12. `sdlc-checks repo:<repo> action: run` → spec-link, contract-check, build/test/lint, and
355
+ 12. `yad-checks repo:<repo> action: run` → spec-link, contract-check, build/test/lint, and
353
356
  verified-commits (platform-Verified signature + roster-allowlisted author) must pass.
354
- 13. Open the PR/MR from the wired template with **`sdlc open-pr --repo <repo> [--risk <level>]`**;
355
- `sdlc-pr-template repo:<repo> action: route` prints the required reviewers from the Impact & Risk block.
356
- 14. `sdlc-ship` → `ai-review` (advisory) → `approve` (the human engineer gate) → `ship` (merge, record
357
+ 13. Open the PR/MR from the wired template with **`yad open-pr --repo <repo> [--risk <level>]`**;
358
+ `yad-pr-template repo:<repo> action: route` prints the required reviewers from the Impact & Risk block.
359
+ 14. `yad-ship` → `ai-review` (advisory) → `approve` (the human engineer gate) → `ship` (merge, record
357
360
  in `build-log.json`, update story status to `in-build`/`shipped`).
358
361
  - **Multi-repo:** repeat 10–14 in each repo, all from the **one** locked contract.
359
- - **Existing code:** `sdlc-backfill` first, to produce a human-verified spec for a built feature.
362
+ - **Existing code:** `yad-backfill` first, to produce a human-verified spec for a built feature.
360
363
 
361
364
  ### C — Automation (optional, earned over time)
362
365
  15. After a back step accumulates trust evidence, earn it:
363
- `sdlc-run action: set-dial step:<step> to: machine_advance` (refused if evidence is short or for a
366
+ `yad-run action: set-dial step:<step> to: machine_advance` (refused if evidence is short or for a
364
367
  front state / the engineer review).
365
- 16. Drive a story's back half on the dials: `sdlc-run story:<id> repo:<repo>` — it auto-advances
368
+ 16. Drive a story's back half on the dials: `yad-run story:<id> repo:<repo>` — it auto-advances
366
369
  earned steps and stops for a human otherwise, always halting at the engineer review.
367
- 17. **Kill switch any time:** `sdlc-run action: kill` (everything → manual) / `action: unkill`.
370
+ 17. **Kill switch any time:** `yad-run action: kill` (everything → manual) / `action: unkill`.
368
371
  Details: **“Run the back half on the dial”** below.
369
372
 
370
373
  ### Any time
371
- - **`sdlc-status [EP-<slug>]`** — read-only: the front chain, each build step's dial + status, the
374
+ - **`yad-status [EP-<slug>]`** — read-only: the front chain, each build step's dial + status, the
372
375
  trust record, and (across epics) the fleet roll-up. Start here to see what's blocking.
373
376
 
374
377
  ## Run the full front half by hand
@@ -378,29 +381,29 @@ The front half walks **epic → review → architecture+contract → review →
378
381
  but you can also edit the files directly — that's the point.
379
382
 
380
383
  Each authoring step is the same shape: an author skill produces an artifact, sets its step `done`,
381
- moves `currentStep` to the matching review, and **stops at the gate**. Then **`sdlc-review-gate`**
384
+ moves `currentStep` to the matching review, and **stops at the gate**. Then **`yad-review-gate`**
382
385
  (one gate, reused for all four reviews) takes `open → comment → approve → advance`. When the hub is on a
383
- platform, the **`sdlc gate`** CLI runs that gate over a real PR/MR — `open` raises the review PR, `sync`
386
+ platform, the **`yad gate`** CLI runs that gate over a real PR/MR — `open` raises the review PR, `sync`
384
387
  pulls approvals + comment threads into the ledger, and the step **auto-advances when the approved,
385
388
  fully-resolved PR is merged** (the merge is the human approval act).
386
389
 
387
- **Code-aware (when repos are connected).** If you ran `sdlc-connect-repos` in setup, each author step
390
+ **Code-aware (when repos are connected).** If you ran `yad-connect-repos` in setup, each author step
388
391
  first loads the connected repos' **code-maps** (from `.sdlc/code-context/<repo>/`) so it considers what
389
392
  already exists: the epic references existing behaviour, **the architecture cross-checks the contract
390
393
  surface against existing endpoints/events/entities before hash-locking it**, the UI reuses existing
391
394
  components, and stories anchor to real modules. Each artifact stamps what it read in its `code-context:`
392
395
  frontmatter; a repo that has moved since connect triggers a staleness warning — the step **flags it and
393
- stops**, pointing you at `sdlc repo refresh <repo>` (refreshing is a human decision, never an automatic
396
+ stops**, pointing you at `yad repo refresh <repo>` (refreshing is a human decision, never an automatic
394
397
  side-effect). With no repos connected the steps proceed exactly as before (greenfield-safe).
395
398
 
396
399
  ### Author steps
397
- 1. **`sdlc-author-epic`** (state 1) → `epic.md`; assigns the stable `EP-<slug>` ID; seeds
400
+ 1. **`yad-epic`** (state 1) → `epic.md`; assigns the stable `EP-<slug>` ID; seeds
398
401
  `.sdlc/state.json` (all `human_approve`, front steps locked) + empty `.sdlc/approvals.json`.
399
- 2. **`sdlc-author-architecture`** (state 3) → `architecture.md` + the locked `contract.md`; writes the
402
+ 2. **`yad-architecture`** (state 3) → `architecture.md` + the locked `contract.md`; writes the
400
403
  contract-surface SHA-256 to `.sdlc/contract-lock.json`.
401
- 3. **`sdlc-author-ui`** (state 5) → `ui-design.md` + `DESIGN.md` (drives Impeccable
404
+ 3. **`yad-ui`** (state 5) → `ui-design.md` + `DESIGN.md` (drives Impeccable
402
405
  `document|extract|craft` slash-commands when installed; otherwise authors directly).
403
- 4. **`sdlc-author-stories`** (state 7) → one file per story `stories/EP-<slug>-S0N.md`, each tagged
406
+ 4. **`yad-stories`** (state 7) → one file per story `stories/EP-<slug>-S0N.md`, each tagged
404
407
  with the `repos` it implements.
405
408
 
406
409
  ### The one gate (every review)
@@ -421,17 +424,17 @@ flowchart LR
421
424
  adv -->|yes| nxt(["next step"])
422
425
  ```
423
426
 
424
- **File-only** — invoke **`sdlc-review-gate`** with `open` (present the artifact; reviewers comment in
427
+ **File-only** — invoke **`yad-review-gate`** with `open` (present the artifact; reviewers comment in
425
428
  `reviews/<artifact>--<date>--comments.md`), `approve` (name + role → `.sdlc/approvals.json`), and
426
429
  `advance` (moves **only if** the rule is satisfied, else it names the missing approval).
427
430
 
428
- **PR-driven** — when the hub is on a platform, the **`sdlc gate`** CLI runs the same gate over a PR/MR:
429
- - `sdlc gate open <epic> <artifact>` — raise the review PR/MR; mark the step `in_review`.
430
- - `sdlc gate sync <epic> [artifact]` — pull approvals + comment threads into the **same** ledger (your
431
+ **PR-driven** — when the hub is on a platform, the **`yad gate`** CLI runs the same gate over a PR/MR:
432
+ - `yad gate open <epic> <artifact>` — raise the review PR/MR; mark the step `in_review`.
433
+ - `yad gate sync <epic> [artifact]` — pull approvals + comment threads into the **same** ledger (your
431
434
  own `gh`/`glab`, no stored tokens) and **auto-advance on merge** once the rule is met and every thread
432
435
  is resolved. Approvals are **revoked when the reviewed artifact changes** (re-hash), so reviewers get
433
436
  a fresh pass. Unresolved comments hold the step `in_review`.
434
- - `sdlc gate comments <epic>` fetches the open threads to address; `sdlc gate status <epic>` shows
437
+ - `yad gate comments <epic>` fetches the open threads to address; `yad gate status <epic>` shows
435
438
  approvals (counting only the non-stale ones). The file ledger stays the source of truth; with no
436
439
  platform / no CLI it degrades to file-only.
437
440
 
@@ -444,7 +447,7 @@ flowchart LR
444
447
  in any story's `repos`**.
445
448
 
446
449
  ### Check status anytime
447
- Invoke **`sdlc-status`** (read-only) to see the full 8-step chain, every step's dials/status, the
450
+ Invoke **`yad-status`** (read-only) to see the full 8-step chain, every step's dials/status, the
448
451
  contract lock, story repo tags, and which approvals the active gate still needs.
449
452
 
450
453
  ## Worked example (already in this repo)
@@ -480,23 +483,23 @@ gates that protect production. Per-repo specs live in each code repo; the contra
480
483
  the product repo. Code repos are **separate git repos** under `demo-repos/<repo>/` (gitignored;
481
484
  `demo-repos/README.md` explains regeneration). **Nothing auto-advances** — every gate is human-owned.
482
485
 
483
- 1. **Spec** — `sdlc-spec` runs the heavy Spec Kit ceremony **once per story per repo**
486
+ 1. **Spec** — `yad-spec` runs the heavy Spec Kit ceremony **once per story per repo**
484
487
  (`specify`→`clarify`→`plan`→`analyze`→`checklist`→`tasks`), writing `specs/<story-id>/` and a
485
488
  `link.md` back to the story (drives `/speckit.*` when installed, else degrades). It **quotes** the
486
489
  locked contract; it never widens it.
487
- 2. **Implement** — `sdlc-implement` (the `dev` step): one atomic task = one branch
490
+ 2. **Implement** — `yad-implement` (the `dev` step): one atomic task = one branch
488
491
  (`feat/<story>-<task>-…`) = one PR. The diff stays inside the files the task declared. Commit with
489
- **`sdlc commit`** — it builds the conventional subject, derives the `Task:` trailer from the branch
492
+ **`yad commit`** — it builds the conventional subject, derives the `Task:` trailer from the branch
490
493
  (add `--contract-change` only if the locked surface is touched), appends an optional `--ai` co-author,
491
- and refuses a non-atomic stage. Open the PR with **`sdlc open-pr --repo <repo>`** (template prefilled).
492
- 3. **Check gates** — `sdlc-checks` wires three CI gates (GitHub + GitLab) that must pass before merge:
494
+ and refuses a non-atomic stage. Open the PR with **`yad open-pr --repo <repo>`** (template prefilled).
495
+ 3. **Check gates** — `yad-checks` wires three CI gates (GitHub + GitLab) that must pass before merge:
493
496
  **spec-link** (links a real story/spec), **contract-check** (a contract-surface change without
494
497
  `Contract-Change` + a re-locked contract FAILS, routing back to the architecture gate),
495
498
  **build/test/lint**. They fail closed on a bad base ref.
496
- 4. **PR/MR template + risk routing** — `sdlc-pr-template` drops the platform-matched template with an
499
+ 4. **PR/MR template + risk routing** — `yad-pr-template` drops the platform-matched template with an
497
500
  Impact & Risk block; `high` risk (or a contract/auth/payments surface) routes the review to domain
498
501
  owners (`risk-route.sh`), the same escalation as the gate.
499
- 5. **AI review → engineer review → ship** — `sdlc-ship`: CodeRabbit is an advisory first pass (never
502
+ 5. **AI review → engineer review → ship** — `yad-ship`: CodeRabbit is an advisory first pass (never
500
503
  the authority); a human engineer approves (owner + 1 reviewer, escalating to domain owners); on
501
504
  merge the ship is recorded in `.sdlc/build-log.json` and the story state becomes `in-build` →
502
505
  `shipped`. The epic → story → task → PR → mergeCommit chain is traceable both ways.
@@ -504,7 +507,7 @@ the product repo. Code repos are **separate git repos** under `demo-repos/<repo>
504
507
  **Multi-repo:** a story tagged `repos: [backend, mobile]` runs the above in each repo independently from
505
508
  the **one** locked contract; the contract-check blocks a surface bypass in either repo.
506
509
 
507
- **Backfill existing code:** `sdlc-backfill` packs one feature with **Repomix** (`npx repomix`, secret-scan
510
+ **Backfill existing code:** `yad-backfill` packs one feature with **Repomix** (`npx repomix`, secret-scan
508
511
  by default), drafts an *unverified* spec ("describe what exists, do not invent"), a human approves it,
509
512
  and `backfill-check.sh` blocks a change to that feature until its spec is approved — gated per touched
510
513
  feature, never the whole repo.
@@ -517,26 +520,26 @@ backfilled. The code repos are regenerable from `demo-repos/README.md`.
517
520
 
518
521
  Phase 4 is **automation, earned with evidence and reversible in one move**. Phase 4a made the
519
522
  `automation` dial real and earned the safest step (the check-gate advance); Phase 4b added the
520
- `implement → check` hand-off and the `spec`/`tasks` trust hooks. The engine is `sdlc-run`; the
523
+ `implement → check` hand-off and the `spec`/`tasks` trust hooks. The engine is `yad-run`; the
521
524
  evidence lives in two new files per epic under `.sdlc/`: `build-state/<story-id>.json` (the back steps
522
525
  with their dials, per repo) and `trust-log.json` (every run's verdict). See
523
526
  `docs/phase-4-build-plan.md` and `docs/phase-4b-build-plan.md`.
524
527
 
525
- - **Drive a story's back half:** `sdlc-run {story} {repo}` walks `spec → tasks → implement → checks`,
528
+ - **Drive a story's back half:** `yad-run {story} {repo}` walks `spec → tasks → implement → checks`,
526
529
  reading each step's dial. On `machine_advance` it advances on its own; on `human_approve` it stops
527
530
  for a human; on any FAIL, scope overrun, or contract-surface touch it **halts and pulls in a human**.
528
- It always stops at the engineer review (`sdlc-ship`), which is never automated.
529
- - **Read the trust log:** `sdlc-status {epic}` shows each back step's dial, status, and trust record —
531
+ It always stops at the engineer review (`yad-ship`), which is never automated.
532
+ - **Read the trust log:** `yad-status {epic}` shows each back step's dial, status, and trust record —
530
533
  runs, % `approved-unchanged`, and whether that clears the threshold (`automation.trust_threshold` in
531
534
  `config.yaml`, default ≥5 runs and ≥80% unchanged). The engineer review records each run's verdict
532
535
  (a diff merged as-authored is `approved-unchanged`; one edited first is `approved-with-edits`; a
533
536
  failed one is `rejected`).
534
537
  - **Earn automation for a step:** once a step's trust record clears the threshold,
535
- `sdlc-run action: set-dial step: checks to: machine_advance` flips it. The setter **refuses** if the
538
+ `yad-run action: set-dial step: checks to: machine_advance` flips it. The setter **refuses** if the
536
539
  evidence is short, or for any front state / the engineer review. Reverting
537
540
  (`to: human_approve`) is always allowed — automation is reversible in one move.
538
- - **Kill switch:** `sdlc-run action: kill` forces every step back to `human_approve` system-wide
539
- instantly (no code change, no per-step edits); `sdlc-run action: unkill` restores earned automation.
541
+ - **Kill switch:** `yad-run action: kill` forces every step back to `human_approve` system-wide
542
+ instantly (no code change, no per-step edits); `yad-run action: unkill` restores earned automation.
540
543
 
541
544
  **Earned so far:** `checks` (Step B, Phase 4a) and `implement` (Step D, Phase 4b — the
542
545
  `implement → check` hand-off; the scope/contract halts and the engineer review still gate the merge).
@@ -555,5 +558,5 @@ the dial, and **front states and the engineer review stay `human_approve`, perma
555
558
  unattended, read-only dashboards), built only when the CLI genuinely can't keep up, with git remaining
556
559
  the source of truth. It is **trigger-gated** — `docs/phase-5-build-plan.md` is the build plan: its
557
560
  three parts (read-index, unattended runner, dashboard) each ship only when *their* bottleneck is
558
- measured, with the hard rules they inherit and the instrumentation (already shipped in `sdlc-status`)
561
+ measured, with the hard rules they inherit and the instrumentation (already shipped in `yad-status`)
559
562
  that makes the decision data-driven. See also `docs/claude-code-build-plan.md` §8.