yadflow 1.4.0 → 2.0.1

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 +3 -3
  2. package/README.md +123 -186
  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 +8 -4
  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 +2 -2
  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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "yadflow",
3
- "version": "1.4.0",
4
- "description": "Gated, team, multi-repo SDLC workflow: author → review → build with a PR-driven review gate and a zero-dependency CLI (setup, gate, commit, open-pr, repo). A BMAD module + 17 skills.",
3
+ "version": "2.0.1",
4
+ "description": "Yadflow — the gated, team, multi-repo SDLC: author → review → build with a PR-driven review gate and a zero-dependency `yad` CLI (setup, gate, commit, open-pr, repo). A BMAD module + 17 yad-* skills.",
5
5
  "type": "module",
6
6
  "author": "AbdelRahman Nasr",
7
7
  "license": "MIT",
@@ -14,13 +14,14 @@
14
14
  "url": "https://github.com/abdelrahmannasr/yadflow/issues"
15
15
  },
16
16
  "bin": {
17
- "sdlc": "bin/sdlc.mjs"
17
+ "yad": "bin/yad.mjs"
18
18
  },
19
19
  "files": [
20
20
  "bin/",
21
21
  "cli/",
22
22
  "!cli/test.mjs",
23
23
  "skills/",
24
+ "docs/index.html",
24
25
  "README.md",
25
26
  "LICENSE",
26
27
  "CHANGELOG.md"
@@ -33,12 +34,15 @@
33
34
  "provenance": true
34
35
  },
35
36
  "scripts": {
36
- "sdlc": "node bin/sdlc.mjs",
37
+ "yad": "node bin/yad.mjs",
37
38
  "test": "node --test cli/test.mjs",
39
+ "diagrams": "npx -y @mermaid-js/mermaid-cli -i docs/diagrams/sdlc-overview.mmd -o docs/diagrams/sdlc-overview.svg -b transparent && npx -y @mermaid-js/mermaid-cli -i docs/diagrams/review-loop.mmd -o docs/diagrams/review-loop.svg -b transparent",
38
40
  "prepublishOnly": "npm test"
39
41
  },
40
42
  "keywords": [
41
43
  "sdlc",
44
+ "yad",
45
+ "yadflow",
42
46
  "bmad",
43
47
  "workflow",
44
48
  "cli",
@@ -11,7 +11,7 @@ product_root: "{project-root}"
11
11
  epics_folder: "{project-root}/epics"
12
12
 
13
13
  # Core configuration values (inherited convention from _bmad/config.toml).
14
- project_name: sdlc-workflow
14
+ project_name: yadflow
15
15
  communication_language: English
16
16
  document_output_language: English
17
17
  output_folder: "{project-root}/_bmad-output"
@@ -25,15 +25,15 @@ defaults:
25
25
  front_steps_locked: true
26
26
  # Each front authoring step opens its own branch at the start of the step (the <step> is the step id:
27
27
  # analysis | epic | architecture | ui-design | stories). Git/greenfield-safe; distinct from the
28
- # bridge's review branch (hub.artifact_branch). See sdlc-author-epic/references/state-schema.md.
28
+ # bridge's review branch (hub.artifact_branch). See yad-epic/references/state-schema.md.
29
29
  front_authoring_branch: "<step>/EP-<slug>"
30
30
 
31
31
  # Team review gate defaults (build plan §3 piece 2, §4).
32
32
  review_gate:
33
33
  default_reviewers: 1 # non-owner reviewers required (in addition to 1 owner) => owner + 1 reviewer
34
34
  escalate_when: [contract, auth, payments] # escalate to domain owners
35
- # PR-driven automation (the `sdlc gate` CLI). With a hub platform, the review rides the per-step
36
- # PR/MR: `sdlc gate sync` maps platform reviews/threads into the file ledger and the step
35
+ # PR-driven automation (the `yad gate` CLI). With a hub platform, the review rides the per-step
36
+ # PR/MR: `yad gate sync` maps platform reviews/threads into the file ledger and the step
37
37
  # AUTO-ADVANCES on merge, once (a) the reviewer rule is met, (b) every comment thread is resolved,
38
38
  # and (c) the review PR/MR is merged. The merge is the human approval act, so front steps still never
39
39
  # machine_advance. The file ledger stays the source of truth; no platform / no gh|glab => file-only.
@@ -44,13 +44,13 @@ review_gate:
44
44
 
45
45
  # Build half (Phase 3). Code repos are SEPARATE git repos (one .git each), not subfolders
46
46
  # of the product repo — faithful to "per-repo specs in each code repo, contract singular in the
47
- # product repo" (phase-3-build-plan.md, Cross-cutting). Documentation-as-config for sdlc-spec (Step A).
47
+ # product repo" (phase-3-build-plan.md, Cross-cutting). Documentation-as-config for yad-spec (Step A).
48
48
  build:
49
49
  code_repos_root: "{project-root}/demo-repos" # throwaway demo code repos for this build half
50
50
  feature_id: story_id # specs/<story-id>/ — pinned to the permanent story ID, not Spec Kit's auto-slug
51
51
  spec_layout: speckit # follow Spec Kit's native spec/plan/tasks layout
52
52
  speckit_ceremony: [specify, clarify, plan, analyze, checklist, tasks] # heavy run, once per story per repo
53
- # Step B (sdlc-implement) — the light per-task loop. One atomic task = one branch = one PR/MR.
53
+ # Step B (yad-implement) — the light per-task loop. One atomic task = one branch = one PR/MR.
54
54
  branch_convention: "feat/<story-id>-<task-id>-<short-slug>" # e.g. feat/EP-istifta-inquiries-S01-T01-create-inquiry
55
55
  commit_task_trailer: "Task: <story-id>-<task-id>" # final commit trailer; anchors the spec-link check (Step C)
56
56
  contract_change_trailer: "Contract-Change: yes" # ONLY when the locked contract surface is touched (routes back to architecture gate)
@@ -59,7 +59,7 @@ build:
59
59
  # + no trailing period; proper nouns/acronyms keep their case.
60
60
  commit_subject_style: "<type>: <lowercase imperative description, no trailing period>" # types: feat|fix|docs|refactor|test|perf|build|ci|chore|revert
61
61
  pr_title_style: same_as_commit_subject # one atomic task = one branch = one PR/MR; title defaults to the task's commit subject
62
- # Commit ownership + per-commit AI co-author (sdlc-implement installs the .gitmessage template).
62
+ # Commit ownership + per-commit AI co-author (yad-implement installs the .gitmessage template).
63
63
  # The human git author OWNS the commit; the assisting AI is recorded per-commit as a Co-Authored-By
64
64
  # trailer, chosen by the owner from `ai_coauthor.allowed`. The AI is never the author. `none` is an
65
65
  # explicit human-only choice. Trailer order is Task: -> Contract-Change: (if any) -> Co-Authored-By:.
@@ -73,30 +73,30 @@ build:
73
73
  - { id: cursor, name: "Cursor", email: "noreply@cursor.com" }
74
74
  - { id: coderabbit, name: "CodeRabbit", email: "noreply@coderabbit.ai" }
75
75
  - { id: none, name: "(no AI assistance)", email: "" }
76
- # Step C (sdlc-checks) — the three CI gates that must pass before merge. CI-agnostic bash in checks/.
76
+ # Step C (yad-checks) — the three CI gates that must pass before merge. CI-agnostic bash in checks/.
77
77
  gates: [spec-link, contract-check, build-test-lint]
78
- ci_platforms: [github, gitlab] # both wired from skills/sdlc-checks/templates/; GitHub is this product repo's platform
78
+ ci_platforms: [github, gitlab] # both wired from skills/yad-checks/templates/; GitHub is this product repo's platform
79
79
  contract_surface_glob: "specs/*/contracts/**" # the repo's quoted contract slice; a diff here needs Contract-Change + a re-locked contract
80
- # Step D (sdlc-pr-template) — platform-matched PR/MR template + risk routing.
80
+ # Step D (yad-pr-template) — platform-matched PR/MR template + risk routing.
81
81
  pr_templates:
82
82
  github: ".github/pull_request_template.md"
83
83
  gitlab: ".gitlab/merge_request_templates/Default.md"
84
- hub: # front-half artifact-review PR/MR on the product hub (sdlc-pr-template repo:hub)
84
+ hub: # front-half artifact-review PR/MR on the product hub (yad-pr-template repo:hub)
85
85
  github: ".github/pull_request_template.md"
86
86
  gitlab: ".gitlab/merge_request_templates/Default.md"
87
- risk_levels: [low, medium, high] # high (or a contract/auth/payments surface) routes to domain owners (sdlc-review-gate escalation)
88
- # Step E (sdlc-ship) — AI review (advisory) + engineer review (the human gate) + ship.
87
+ risk_levels: [low, medium, high] # high (or a contract/auth/payments surface) routes to domain owners (yad-review-gate escalation)
88
+ # Step E (yad-ship) — AI review (advisory) + engineer review (the human gate) + ship.
89
89
  ai_review: coderabbit # advisory first pass; never the authority (.coderabbit.yaml)
90
90
  build_log: "epics/EP-<slug>/.sdlc/build-log.json" # append-only ship ledger (back-half analogue of approvals.json)
91
91
  story_build_states: [in-build, shipped] # in-build = some tasks shipped; shipped = all tasks in tasks.md shipped
92
- # Backfill (sdlc-backfill) — specs for already-built features in an existing repo.
92
+ # Backfill (yad-backfill) — specs for already-built features in an existing repo.
93
93
  backfill:
94
94
  tool: repomix # the one true CLI subprocess: `npx repomix@latest` (Phase 0 / RESEARCH-NOTES §3)
95
95
  pack_flags: "--compress --include <globs> --include-logs --style markdown" # one feature at a time; Secretlint by default
96
96
  spec_location: "specs/backfill/<feature>/spec.md" # draft (verified: false) until a human approves
97
97
  gate_scope: touched-features # block a change only until the features it touches have approved specs
98
98
 
99
- # Code context (sdlc-connect-repos) — the front/"brain" phases are made code-aware. Code repos are
99
+ # Code context (yad-connect-repos) — the front/"brain" phases are made code-aware. Code repos are
100
100
  # connected to the product hub once (or any time a new repo is added), and an AI-readable picture of
101
101
  # each is cached so epic/architecture/ui/stories consider what already exists in the code. The product
102
102
  # repo is the FRONT-PHASE TOOLCHAIN HUB: repomix (and Impeccable) are installed/run here and target the
@@ -110,18 +110,18 @@ code_context:
110
110
  staleness: head-sha # stale when a repo's HEAD != registry syncedHead
111
111
  refresh: human # a stale repo is a HUMAN decision: front-phase
112
112
  # skills FLAG it and stop (pointing at
113
- # `sdlc repo refresh <repo>`) — they never silently
114
- # re-pack. `sdlc repo list` shows fresh/stale;
115
- # `sdlc repo refresh` and `sdlc check --fix` re-pack.
113
+ # `yad repo refresh <repo>`) — they never silently
114
+ # re-pack. `yad repo list` shows fresh/stale;
115
+ # `yad repo refresh` and `yad check --fix` re-pack.
116
116
  load_in_front_phases: true # epic, architecture, ui-design, stories read the maps
117
- # Auth: `sdlc-connect-repos` clones/fetches as the LOCAL user (SSH key or git credential helper),
117
+ # Auth: `yad-connect-repos` clones/fetches as the LOCAL user (SSH key or git credential helper),
118
118
  # works for both github and gitlab (and self-hosted), and stores NO tokens in the registry.
119
119
  platforms: [github, gitlab]
120
120
 
121
- # Hub platform + front-half review bridge (sdlc-connect-repos `detect-hub`; sdlc-review-gate + sdlc-hub-bridge).
121
+ # Hub platform + front-half review bridge (yad-connect-repos `detect-hub`; yad-review-gate + yad-hub-bridge).
122
122
  # The product hub is itself a git repo on a platform. With the bridge enabled, the front-half review/
123
123
  # comment/approval cycle runs through a real PR/MR on the hub: a review PR is opened per artifact, reviewers
124
- # approve/comment on the platform (their own gh/glab auth — NO stored tokens), and `sdlc-review-gate action: sync`
124
+ # approve/comment on the platform (their own gh/glab auth — NO stored tokens), and `yad-review-gate action: sync`
125
125
  # pulls that state into the file ledger (approvals.json/reviews/*.md) and runs the UNCHANGED gate predicate.
126
126
  # The file ledger stays the source of truth. Degrades to the file-only gate when there is no platform / no CLI.
127
127
  hub:
@@ -130,11 +130,11 @@ hub:
130
130
  bridge: true # master enable; false => file-only front gates everywhere
131
131
  platforms: [github, gitlab] # detected from the hub's own `git remote get-url origin`
132
132
  artifact_branch: "review/EP-<slug>/<artifact-base>" # branch a review PR is opened on, per artifact
133
- # roster (in hub.json) maps a platform login -> sdlc name + role; domain-owners are DERIVED from
133
+ # roster (in hub.json) maps a platform login -> yad name + role; domain-owners are DERIVED from
134
134
  # repos.json (a roster name that equals a repo's domain_owner owns that repo's domain) — never duplicated.
135
135
 
136
136
  # Phase 4 (automation) — the SECOND dial made real. Until Phase 4 nothing read this dial; the
137
- # orchestrator (sdlc-run) now does. Governing rule: automation is EARNED per step, with trust-log
137
+ # orchestrator (yad-run) now does. Governing rule: automation is EARNED per step, with trust-log
138
138
  # evidence, and is reversible in one move (phase-4-build-plan.md §"one principle"). Front states are
139
139
  # never listed in back_steps and can never be flipped — the engineer keeps authority over decisions.
140
140
  automation:
@@ -152,5 +152,5 @@ automation:
152
152
  # merge gate.
153
153
  locked_steps: [analysis, epic, architecture, ui-design, stories, engineer-review]
154
154
  # Kill switch (phase-4-build-plan.md §Safety): true => every step forced to human_approve
155
- # system-wide, no per-step edits. One line, instantly reversible. Toggle via `sdlc-run action: kill`.
155
+ # system-wide, no per-step edits. One line, instantly reversible. Toggle via `yad-run action: kill`.
156
156
  kill_switch: false
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bash
2
- # Install the hand-authored `sdlc` BMAD module into the IDE skill dirs.
2
+ # Install the hand-authored `yad` BMAD module into the IDE skill dirs.
3
3
  #
4
4
  # Source of truth: {project-root}/skills/ (survives `bmad-method` updates).
5
5
  # This script copies the sdlc-* skills into the four IDE locations the BMAD installer uses,
@@ -11,7 +11,7 @@ set -euo pipefail
11
11
  ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
12
12
  cd "$ROOT"
13
13
 
14
- SKILLS=(sdlc-author-analysis sdlc-author-epic sdlc-author-architecture sdlc-author-ui sdlc-author-stories sdlc-connect-repos sdlc-spec sdlc-implement sdlc-checks sdlc-pr-template sdlc-review-comments sdlc-hub-bridge sdlc-ship sdlc-backfill sdlc-run sdlc-review-gate sdlc-status)
14
+ SKILLS=(yad-analysis yad-epic yad-architecture yad-ui yad-stories yad-connect-repos yad-spec yad-implement yad-checks yad-pr-template yad-review-comments yad-hub-bridge yad-ship yad-backfill yad-run yad-review-gate yad-status)
15
15
 
16
16
  echo "Installing sdlc module from $ROOT/skills ..."
17
17
 
@@ -1,17 +1,17 @@
1
1
  module,skill,display-name,menu-code,description,action,args,phase,preceded-by,followed-by,required,output-location,outputs
2
- SDLC Workflow,sdlc-author-epic,Author Epic,AE,"Front state 1: shape an idea with analyst then pm into epic.md; assign EP-<slug> ID and seed .sdlc state. Never auto-advances.",,{idea: one-line feature idea},1-front,,sdlc-review-gate,true,epics/EP-<slug>/,epic.md state.json
3
- SDLC Workflow,sdlc-review-gate,Team Review Gate,RG,"Reusable review+approve gate for all four reviews. Shares an artifact for review, records comments and approvals as files, enforces owner + 1 reviewer (escalates on contract/auth/payments; per-repo routing for stories), advances state only when approved.",,{artifact: file under the epic} {action: open|comment|approve|advance},1-front,,,true,epics/EP-<slug>/reviews/,reviews/*.md approvals.json state.json
4
- SDLC Workflow,sdlc-author-architecture,Author Architecture,AA,"Front state 3: with the architect author architecture.md and the locked contract.md; hash-lock the contract surface. Never auto-advances.",,{epic: EP-<slug>},1-front,sdlc-review-gate,sdlc-review-gate,true,epics/EP-<slug>/,architecture.md contract.md contract-lock.json state.json
5
- SDLC Workflow,sdlc-author-ui,Author UI Design,AU,"Front state 5: with the ux-designer author ui-design.md and DESIGN.md, driving Impeccable slash-commands when installed. Never auto-advances.",,{epic: EP-<slug>},1-front,sdlc-review-gate,sdlc-review-gate,true,epics/EP-<slug>/,ui-design.md DESIGN.md state.json
6
- SDLC Workflow,sdlc-author-stories,Author Stories,AS,"Front state 7: with the pm break the epic into repo-tagged stories with stable EP-<slug>-S0N IDs, one file each under stories/. Never auto-advances.",,{epic: EP-<slug>},1-front,sdlc-review-gate,sdlc-review-gate,true,epics/EP-<slug>/stories/,stories/EP-<slug>-S0N.md state.json
7
- SDLC Workflow,sdlc-connect-repos,Connect Code Repos,CR,"Setup/maintenance: connect code repos to the product hub so the front/brain phases are code-aware. Registers each repo (GitHub or GitLab, local-user auth, no stored tokens) in .sdlc/repos.json and caches a Repomix pack + a lightweight code-map (existing endpoints/events/data-models/modules, secret-scanned). Idempotent and refreshable; staleness tracked by HEAD sha. Run at setup or any time a new repo is added. Not a gated state — never touches epic state or approvals.",,{action: connect|refresh|list|disconnect} {repo: <name>} {path: <path-or-absolute>} {git_url: <ssh-or-https>} {domain_owner: <who>},0-setup,,sdlc-author-epic,false,.sdlc/,repos.json code-context/<repo>/pack.md code-context/<repo>/code-map.md
8
- SDLC Workflow,sdlc-spec,Author Spec,SP,"Build-half Step A: for one ready-for-build story and one of its repos, run the heavy Spec Kit ceremony once (specify→clarify→plan→analyze→checklist→tasks) inside that code repo, writing specs/<story-id>/ in Spec Kit's layout (drives /speckit.* when installed, else hand-authors and records speckit: not-installed). References the locked contract; never re-invents the surface. Writes link.md back to the story. Never auto-advances.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {repo: <one of story.repos>},3-build,sdlc-review-gate,,false,demo-repos/<repo>/specs/<story-id>/,spec.md research.md data-model.md contracts/ plan.md tasks.md link.md
9
- SDLC Workflow,sdlc-implement,Implement Task,IM,"Build-half Step B: with the dev lens, implement ONE atomic task from a story's tasks.md as a small diff (<=3 files) on its own branch feat/<story>-<task>-<slug> in the code repo. Diff stays inside the task's declared files (flag and STOP if it grows beyond them). Commit ends with a Task: <story>-<task> trailer; add Contract-Change: yes only when the locked contract surface is touched (routes back to the architecture gate). Never auto-advances.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {repo: <one of story.repos>} {task: T0N},3-build,sdlc-spec,,false,demo-repos/<repo>/,branch+commit per atomic task
10
- SDLC Workflow,sdlc-checks,Check Gates,CK,"Build-half Step C: wire and run the three production-safety CI gates on a code repo — spec-link (every change links a real story/spec via its Task trailer), contract-check (a contract-surface change without Contract-Change + an updated re-locked contract FAILS and routes back to the architecture gate), and build/test/lint. CI-agnostic bash invoked by GitHub Actions and GitLab CI. Blocking in CI; the human still owns the merge. Never auto-advances.",,{repo: <one of an epic's repos>} {action: wire|run} {base: target branch},3-build,sdlc-implement,,false,demo-repos/<repo>/,checks/*.sh .github/workflows/sdlc-checks.yml .gitlab-ci.yml
11
- SDLC Workflow,sdlc-pr-template,PR/MR Template,PT,"Build-half Step D: detect a code repo's platform and commit the matching PR/MR template (.github/pull_request_template.md or .gitlab/merge_request_templates/Default.md) with an Impact & Risk block. A high risk level (or a touched contract/auth/payments surface) routes the review to domain owners — the same escalation sdlc-review-gate applies. risk-route.sh prints the required reviewers from a PR body. Never auto-advances.",,{repo: <one of an epic's repos>} {action: wire|route} {body: PR description file},3-build,sdlc-checks,,false,demo-repos/<repo>/,.github/pull_request_template.md .gitlab/merge_request_templates/Default.md checks/risk-route.sh
12
- SDLC Workflow,sdlc-review-comments,Review Comment Templates,RC,"Install platform-matched PR/MR review-comment scaffolds (committed REVIEW_COMMENTS.md) into a code repo or the product hub, so reviewers leave structured, attributable feedback whose **name (role)** headers map cleanly into the SDLC file ledger. GitHub Saved Replies / GitLab comment templates are per-user, so a committed doc is the repo-level mechanism. Never auto-advances.",,{repo: <one of an epic's repos | hub>} {action: wire},3-build,,,false,<repo>/.github|.gitlab/,REVIEW_COMMENTS.md
13
- SDLC Workflow,sdlc-hub-bridge,Hub Review Bridge,HB,"The templated PR/MR bridge for the front-half review gate: when the product hub has a platform (.sdlc/hub.json), open a review PR/MR on the hub for an authored artifact, set required reviewers/labels from the routing rule, and provide the read-only gh/glab recipes sdlc-review-gate's sync uses to pull platform comments + approvals into the file ledger. Local-user auth, no stored tokens; file ledger stays the source of truth; degrades to file-only when no platform/CLI. Never auto-advances.",,{epic: EP-<slug>} {artifact: epic.md|architecture.md|ui-design.md|stories/} {action: open|route},1-front,sdlc-review-gate,sdlc-review-gate,false,epics/EP-<slug>/.sdlc/,hub-prs.json
14
- SDLC Workflow,sdlc-ship,Review & Ship,SH,"Build-half Step E: wire an advisory AI first-pass (CodeRabbit) on the PR, record the human engineer review with the same human_approve discipline as the front gates (owner + 1 reviewer, escalating to domain owners on high risk / contract / auth / payments), and on merge record the ship in epics/<epic>/.sdlc/build-log.json and update the story state. AI review is advisory, never the authority; the human owns the merge. Never auto-advances.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {task: T0N} {repo: <repo>} {action: ai-review|approve|ship},3-build,sdlc-pr-template,,false,epics/EP-<slug>/.sdlc/,build-log.json story-status
15
- SDLC Workflow,sdlc-backfill,Backfill Specs,BF,"Build-half Step G: generate specs for already-built features in an existing repo. Confirm Repomix (npx repomix CLI), pack ONE feature (compress + git logs, secret-scan), feed to AI with a 'describe what exists, do not invent' prompt, write a DRAFT spec marked verified: false. Human approval (reuse sdlc-review-gate) makes it real. Boundary auto-proposed and human-confirmed. A change is blocked only until the features it touches have approved specs. Never auto-advances.",,{repo: <repo>} {feature: <name + globs>} {action: pack|draft|approve|gate},3-build,,,false,demo-repos/<repo>/specs/backfill/<feature>/,spec.md backfill-check.sh
16
- SDLC Workflow,sdlc-run,Run (Automation),RN,"Phase 4 orchestrator: drive a story's back-half loop (spec→tasks→implement→checks) in one code repo, reading each step's automation dial from build-state — on machine_advance it advances on its own, on human_approve it stops for a human. Records every run in the trust log. Realizes Step B (a clean checks pass auto-advances to the engineer review when earned; any FAIL / scope overrun / contract touch HALTS). set-dial earns/reverts a step's automation (machine_advance gated by the trust threshold; front states and engineer-review refused); kill/unkill toggles the system-wide kill switch. Front states and the human merge gate never auto-advance.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {repo: <repo>} {action: run|set-dial|kill|unkill} {step: <back-step>} {to: human_approve|machine_advance},4-automate,sdlc-spec,sdlc-ship,false,epics/EP-<slug>/.sdlc/,build-state/<story-id>.json trust-log.json
17
- SDLC Workflow,sdlc-status,SDLC Status,SS,"Read-only: print the full front-state chain, per-step dials, contract lock, story repo tags, and pending approvals at the active gate. For stories in the build half, also print each back-half step's automation dial and status, the trust record (runs / % approved-unchanged / earned vs gathering evidence), and the system-wide kill-switch state.",,{epic: EP-<slug>},1-front,,,false,,
2
+ SDLC Workflow,yad-epic,Author Epic,AE,"Front state 1: shape an idea with analyst then pm into epic.md; assign EP-<slug> ID and seed .sdlc state. Never auto-advances.",,{idea: one-line feature idea},1-front,,yad-review-gate,true,epics/EP-<slug>/,epic.md state.json
3
+ SDLC Workflow,yad-review-gate,Team Review Gate,RG,"Reusable review+approve gate for all four reviews. Shares an artifact for review, records comments and approvals as files, enforces owner + 1 reviewer (escalates on contract/auth/payments; per-repo routing for stories), advances state only when approved.",,{artifact: file under the epic} {action: open|comment|approve|advance},1-front,,,true,epics/EP-<slug>/reviews/,reviews/*.md approvals.json state.json
4
+ SDLC Workflow,yad-architecture,Author Architecture,AA,"Front state 3: with the architect author architecture.md and the locked contract.md; hash-lock the contract surface. Never auto-advances.",,{epic: EP-<slug>},1-front,yad-review-gate,yad-review-gate,true,epics/EP-<slug>/,architecture.md contract.md contract-lock.json state.json
5
+ SDLC Workflow,yad-ui,Author UI Design,AU,"Front state 5: with the ux-designer author ui-design.md and DESIGN.md, driving Impeccable slash-commands when installed. Never auto-advances.",,{epic: EP-<slug>},1-front,yad-review-gate,yad-review-gate,true,epics/EP-<slug>/,ui-design.md DESIGN.md state.json
6
+ SDLC Workflow,yad-stories,Author Stories,AS,"Front state 7: with the pm break the epic into repo-tagged stories with stable EP-<slug>-S0N IDs, one file each under stories/. Never auto-advances.",,{epic: EP-<slug>},1-front,yad-review-gate,yad-review-gate,true,epics/EP-<slug>/stories/,stories/EP-<slug>-S0N.md state.json
7
+ SDLC Workflow,yad-connect-repos,Connect Code Repos,CR,"Setup/maintenance: connect code repos to the product hub so the front/brain phases are code-aware. Registers each repo (GitHub or GitLab, local-user auth, no stored tokens) in .sdlc/repos.json and caches a Repomix pack + a lightweight code-map (existing endpoints/events/data-models/modules, secret-scanned). Idempotent and refreshable; staleness tracked by HEAD sha. Run at setup or any time a new repo is added. Not a gated state — never touches epic state or approvals.",,{action: connect|refresh|list|disconnect} {repo: <name>} {path: <path-or-absolute>} {git_url: <ssh-or-https>} {domain_owner: <who>},0-setup,,yad-epic,false,.sdlc/,repos.json code-context/<repo>/pack.md code-context/<repo>/code-map.md
8
+ SDLC Workflow,yad-spec,Author Spec,SP,"Build-half Step A: for one ready-for-build story and one of its repos, run the heavy Spec Kit ceremony once (specify→clarify→plan→analyze→checklist→tasks) inside that code repo, writing specs/<story-id>/ in Spec Kit's layout (drives /speckit.* when installed, else hand-authors and records speckit: not-installed). References the locked contract; never re-invents the surface. Writes link.md back to the story. Never auto-advances.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {repo: <one of story.repos>},3-build,yad-review-gate,,false,demo-repos/<repo>/specs/<story-id>/,spec.md research.md data-model.md contracts/ plan.md tasks.md link.md
9
+ SDLC Workflow,yad-implement,Implement Task,IM,"Build-half Step B: with the dev lens, implement ONE atomic task from a story's tasks.md as a small diff (<=3 files) on its own branch feat/<story>-<task>-<slug> in the code repo. Diff stays inside the task's declared files (flag and STOP if it grows beyond them). Commit ends with a Task: <story>-<task> trailer; add Contract-Change: yes only when the locked contract surface is touched (routes back to the architecture gate). Never auto-advances.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {repo: <one of story.repos>} {task: T0N},3-build,yad-spec,,false,demo-repos/<repo>/,branch+commit per atomic task
10
+ SDLC Workflow,yad-checks,Check Gates,CK,"Build-half Step C: wire and run the three production-safety CI gates on a code repo — spec-link (every change links a real story/spec via its Task trailer), contract-check (a contract-surface change without Contract-Change + an updated re-locked contract FAILS and routes back to the architecture gate), and build/test/lint. CI-agnostic bash invoked by GitHub Actions and GitLab CI. Blocking in CI; the human still owns the merge. Never auto-advances.",,{repo: <one of an epic's repos>} {action: wire|run} {base: target branch},3-build,yad-implement,,false,demo-repos/<repo>/,checks/*.sh .github/workflows/yad-checks.yml .gitlab-ci.yml
11
+ SDLC Workflow,yad-pr-template,PR/MR Template,PT,"Build-half Step D: detect a code repo's platform and commit the matching PR/MR template (.github/pull_request_template.md or .gitlab/merge_request_templates/Default.md) with an Impact & Risk block. A high risk level (or a touched contract/auth/payments surface) routes the review to domain owners — the same escalation yad-review-gate applies. risk-route.sh prints the required reviewers from a PR body. Never auto-advances.",,{repo: <one of an epic's repos>} {action: wire|route} {body: PR description file},3-build,yad-checks,,false,demo-repos/<repo>/,.github/pull_request_template.md .gitlab/merge_request_templates/Default.md checks/risk-route.sh
12
+ SDLC Workflow,yad-review-comments,Review Comment Templates,RC,"Install platform-matched PR/MR review-comment scaffolds (committed REVIEW_COMMENTS.md) into a code repo or the product hub, so reviewers leave structured, attributable feedback whose **name (role)** headers map cleanly into the SDLC file ledger. GitHub Saved Replies / GitLab comment templates are per-user, so a committed doc is the repo-level mechanism. Never auto-advances.",,{repo: <one of an epic's repos | hub>} {action: wire},3-build,,,false,<repo>/.github|.gitlab/,REVIEW_COMMENTS.md
13
+ SDLC Workflow,yad-hub-bridge,Hub Review Bridge,HB,"The templated PR/MR bridge for the front-half review gate: when the product hub has a platform (.sdlc/hub.json), open a review PR/MR on the hub for an authored artifact, set required reviewers/labels from the routing rule, and provide the read-only gh/glab recipes yad-review-gate's sync uses to pull platform comments + approvals into the file ledger. Local-user auth, no stored tokens; file ledger stays the source of truth; degrades to file-only when no platform/CLI. Never auto-advances.",,{epic: EP-<slug>} {artifact: epic.md|architecture.md|ui-design.md|stories/} {action: open|route},1-front,yad-review-gate,yad-review-gate,false,epics/EP-<slug>/.sdlc/,hub-prs.json
14
+ SDLC Workflow,yad-ship,Review & Ship,SH,"Build-half Step E: wire an advisory AI first-pass (CodeRabbit) on the PR, record the human engineer review with the same human_approve discipline as the front gates (owner + 1 reviewer, escalating to domain owners on high risk / contract / auth / payments), and on merge record the ship in epics/<epic>/.sdlc/build-log.json and update the story state. AI review is advisory, never the authority; the human owns the merge. Never auto-advances.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {task: T0N} {repo: <repo>} {action: ai-review|approve|ship},3-build,yad-pr-template,,false,epics/EP-<slug>/.sdlc/,build-log.json story-status
15
+ SDLC Workflow,yad-backfill,Backfill Specs,BF,"Build-half Step G: generate specs for already-built features in an existing repo. Confirm Repomix (npx repomix CLI), pack ONE feature (compress + git logs, secret-scan), feed to AI with a 'describe what exists, do not invent' prompt, write a DRAFT spec marked verified: false. Human approval (reuse yad-review-gate) makes it real. Boundary auto-proposed and human-confirmed. A change is blocked only until the features it touches have approved specs. Never auto-advances.",,{repo: <repo>} {feature: <name + globs>} {action: pack|draft|approve|gate},3-build,,,false,demo-repos/<repo>/specs/backfill/<feature>/,spec.md backfill-check.sh
16
+ SDLC Workflow,yad-run,Run (Automation),RN,"Phase 4 orchestrator: drive a story's back-half loop (spec→tasks→implement→checks) in one code repo, reading each step's automation dial from build-state — on machine_advance it advances on its own, on human_approve it stops for a human. Records every run in the trust log. Realizes Step B (a clean checks pass auto-advances to the engineer review when earned; any FAIL / scope overrun / contract touch HALTS). set-dial earns/reverts a step's automation (machine_advance gated by the trust threshold; front states and engineer-review refused); kill/unkill toggles the system-wide kill switch. Front states and the human merge gate never auto-advance.",,{epic: EP-<slug>} {story: EP-<slug>-S0N} {repo: <repo>} {action: run|set-dial|kill|unkill} {step: <back-step>} {to: human_approve|machine_advance},4-automate,yad-spec,yad-ship,false,epics/EP-<slug>/.sdlc/,build-state/<story-id>.json trust-log.json
17
+ SDLC Workflow,yad-status,SDLC Status,SS,"Read-only: print the full front-state chain, per-step dials, contract lock, story repo tags, and pending approvals at the active gate. For stories in the build half, also print each back-half step's automation dial and status, the trust record (runs / % approved-unchanged / earned vs gathering evidence), and the system-wide kill-switch state.",,{epic: EP-<slug>},1-front,,,false,,
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: sdlc-author-analysis
2
+ name: yad-analysis
3
3
  description: 'Optional front state 1 of the gated SDLC. With the analyst, pressure-test a feature idea and write the discovery brief into analysis.md. Assigns the EP-<slug> ID and seeds .sdlc/ state (the 10-step chain that puts analysis before epic). Never auto-advances — hands off to the team review gate. Optional: if skipped, the epic step does this shaping inline. Use when the user says "analyse the idea", "start with analysis", or "author the analysis".'
4
4
  ---
5
5
 
@@ -8,10 +8,10 @@ description: 'Optional front state 1 of the gated SDLC. With the analyst, pressu
8
8
  **Goal:** Produce a human-authored, AI-assisted `analysis.md` — the analyst's discovery brief that
9
9
  shapes the feature **before** the epic — assign its stable `EP-<slug>` ID, and initialise the per-epic
10
10
  state machine in `.sdlc/`. This is a **front state**: human-authored with AI assist and **never
11
- auto-advances**. When the analysis is drafted, control passes to `sdlc-review-gate`.
11
+ auto-advances**. When the analysis is drafted, control passes to `yad-review-gate`.
12
12
 
13
13
  This step is **optional**. When it runs, it is the entry point: it assigns the ID and seeds the
14
- **10-step** chain (`analysis` before `epic`). When it is **skipped**, `sdlc-author-epic` does the same
14
+ **10-step** chain (`analysis` before `epic`). When it is **skipped**, `yad-epic` does the same
15
15
  analyst shaping inline and seeds the **8-step** chain — no behaviour change for teams that skip it.
16
16
 
17
17
  This skill enforces the build plan's core rules: all state lives in files; IDs are generated by the
@@ -28,7 +28,7 @@ engine (never typed by hand); front steps are locked to `human_approve`.
28
28
  ### Step 1 — Get the idea
29
29
  Ask the user for a one-line feature idea if not provided. If `.sdlc/state.json` already exists for the
30
30
  target epic, analysis was already seeded (or the epic is past it) — stop and point the user at
31
- `sdlc-status`. The entry point seeds state exactly once.
31
+ `yad-status`. The entry point seeds state exactly once.
32
32
 
33
33
  ### Step 2 — Shape the idea (assist: analyst)
34
34
  Adopt the **analyst** lens (`bmad-agent-analyst`, Mary) to pressure-test the idea in depth: who is the
@@ -43,7 +43,7 @@ connected repo** (the epic's `repos` are not chosen yet), load the lightweight c
43
43
 
44
44
  - **Greenfield-safe:** if `repos.json` is absent or empty, note "no repos connected" and proceed.
45
45
  - **Staleness:** if a repo's current HEAD (`git -C <path> rev-parse HEAD`) ≠ its registry `syncedHead`,
46
- warn and suggest `sdlc repo refresh <repo>` (a human decision — flag and stop, never auto-refresh);
46
+ warn and suggest `yad repo refresh <repo>` (a human decision — flag and stop, never auto-refresh);
47
47
  stamp `code-context: stale` in the frontmatter.
48
48
  - **Traceability:** record which maps you loaded in the analysis frontmatter `code-context:` field.
49
49
 
@@ -122,15 +122,15 @@ Notes:
122
122
 
123
123
  ### Step 7 — Stop at the gate (do NOT advance)
124
124
  Report: epic ID, the path to `analysis.md`, and that the next action is **review** via
125
- `sdlc-review-gate` (base rule: owner + 1 reviewer). **Never mark the analysis-review step approved
125
+ `yad-review-gate` (base rule: owner + 1 reviewer). **Never mark the analysis-review step approved
126
126
  here** — only real reviewers do that through the gate. Front states do not auto-advance. When the
127
- analysis gate passes, control moves to `sdlc-author-epic`, which reads `analysis.md` as input. When the
128
- hub has a platform, the gate opens a review PR on the hub (via `sdlc-hub-bridge`) and
129
- `sdlc-review-gate action: sync` pulls platform approvals/comments into the ledger; otherwise the review
127
+ analysis gate passes, control moves to `yad-epic`, which reads `analysis.md` as input. When the
128
+ hub has a platform, the gate opens a review PR on the hub (via `yad-hub-bridge`) and
129
+ `yad-review-gate action: sync` pulls platform approvals/comments into the ledger; otherwise the review
130
130
  is recorded file-only.
131
131
 
132
132
  ## Reference
133
133
  - State schema, the two chain shapes, and the authoring-branch procedure:
134
- `../sdlc-author-epic/references/state-schema.md`.
135
- - The epic step that consumes this analysis: `../sdlc-author-epic/SKILL.md`.
136
- - Connecting code repos + the code-context the brain reads: `../sdlc-connect-repos/SKILL.md`.
134
+ `../yad-epic/references/state-schema.md`.
135
+ - The epic step that consumes this analysis: `../yad-epic/SKILL.md`.
136
+ - Connecting code repos + the code-context the brain reads: `../yad-connect-repos/SKILL.md`.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: sdlc-author-architecture
2
+ name: yad-architecture
3
3
  description: 'Front state 3 of the gated SDLC. With the architect, author architecture.md and the locked contract.md (the shared cross-repo surface), then hash-lock the contract surface into .sdlc/contract-lock.json. Reads epic.md as input. Never auto-advances — hands off to the team review gate (which escalates on the contract risk tag). Use when the user says "author the architecture" or after the epic gate passes.'
4
4
  ---
5
5
 
@@ -8,7 +8,7 @@ description: 'Front state 3 of the gated SDLC. With the architect, author archit
8
8
  **Goal:** Produce a human-authored, AI-assisted `architecture.md` and the **locked** `contract.md`
9
9
  for an approved epic, then record a hash-lock of the contract surface so a later contract-check can
10
10
  detect drift. This is a **front state**: human-authored with AI assist, **never auto-advances**.
11
- When both artifacts are drafted, control passes to `sdlc-review-gate`, which **escalates** this review
11
+ When both artifacts are drafted, control passes to `yad-review-gate`, which **escalates** this review
12
12
  by default (the architecture step carries `risk_tags: ["contract"]`).
13
13
 
14
14
  This skill enforces the build plan's core rules: all state lives in files; the contract holds only the
@@ -25,11 +25,11 @@ shared cross-repo surface at charter altitude; front steps stay locked to `human
25
25
  ### Step 1 — Resolve the epic and check the gate
26
26
  Resolve the `EP-<slug>` (ask if not provided). Read `{project-root}/epics/EP-<slug>/.sdlc/state.json`.
27
27
  Only proceed when `currentStep == "architecture"` and that step's `status == "in_progress"` (the epic
28
- review must already have passed). If not, stop and point the user at `sdlc-status` / the gate.
28
+ review must already have passed). If not, stop and point the user at `yad-status` / the gate.
29
29
 
30
30
  ### Step 1b — Open the authoring branch
31
31
  Open the architecture authoring branch `architecture/EP-<slug>` per the shared procedure
32
- (`../sdlc-author-epic/references/state-schema.md` → "Authoring branches"): git-safe (skip with a note
32
+ (`../yad-epic/references/state-schema.md` → "Authoring branches"): git-safe (skip with a note
33
33
  if `{project-root}` is not a git work tree), check out the branch if it exists, else create it from the
34
34
  hub's default branch. Author and commit `architecture.md` / `contract.md` / `contract-lock.json` on it.
35
35
  This is **distinct** from the bridge's `review/…` branch.
@@ -44,17 +44,17 @@ Read the registry `{project-root}/.sdlc/repos.json` (`config.yaml` `code_context
44
44
  **and**, because this phase locks the contract, the full pack `.../pack.md` when you need depth on the
45
45
  existing **endpoints, events, and data models**. This is the context that stops the architecture from
46
46
  re-defining or contradicting what is already built. (`pack.md` is **not committed** — if it is absent
47
- locally, regenerate it with `sdlc repo refresh <repo>`; the committed `code-map.md`
47
+ locally, regenerate it with `yad repo refresh <repo>`; the committed `code-map.md`
48
48
  is always present.)
49
49
 
50
50
  - **Greenfield-safe:** if `repos.json` is absent/empty, note "no repos connected" and proceed — design
51
51
  from scratch as before.
52
52
  - **Staleness:** if a repo's current HEAD ≠ its registry `syncedHead`, warn and suggest
53
- `sdlc repo refresh <repo>` (a human decision — flag and stop, never auto-refresh); stamp
53
+ `yad repo refresh <repo>` (a human decision — flag and stop, never auto-refresh); stamp
54
54
  `code-context: stale` in the frontmatter.
55
55
  - **Traceability:** record the loaded maps in the `code-context:` frontmatter of both `architecture.md`
56
56
  and `contract.md`.
57
- - For an area not in the code-map, do a live on-demand read (`sdlc-connect-repos`
57
+ - For an area not in the code-map, do a live on-demand read (`yad-connect-repos`
58
58
  `references/code-context.md`).
59
59
 
60
60
  ### Step 3 — Author the architecture (assist: architect)
@@ -167,14 +167,14 @@ real reviewers approve, through the gate.
167
167
 
168
168
  ### Step 7 — Stop at the gate (do NOT advance)
169
169
  Report: the paths to `architecture.md`, `contract.md`, and `contract-lock.json`; the contract hash;
170
- and that the next action is **review** via `sdlc-review-gate`. Note that this review **escalates**
170
+ and that the next action is **review** via `yad-review-gate`. Note that this review **escalates**
171
171
  (risk tag `contract`): it needs owner + 1 reviewer **plus a domain owner for each touched repo**.
172
172
  **Never record approval here.** Front states do not auto-advance. When the hub has a platform, the gate
173
- opens a review PR on the hub (via `sdlc-hub-bridge`, labelled per touched repo) and
174
- `sdlc-review-gate action: sync` pulls platform approvals/comments into the ledger; a contract re-lock
173
+ opens a review PR on the hub (via `yad-hub-bridge`, labelled per touched repo) and
174
+ `yad-review-gate action: sync` pulls platform approvals/comments into the ledger; a contract re-lock
175
175
  invalidates prior platform approvals too. Otherwise the review is recorded file-only.
176
176
 
177
177
  ## Reference
178
178
  - Contract surface, altitude rule, and hashing recipe: `references/contract-format.md`.
179
- - State schema and field meanings: `../sdlc-author-epic/references/state-schema.md`.
180
- - Connecting code repos + the code-context cross-checked here: `../sdlc-connect-repos/SKILL.md`.
179
+ - State schema and field meanings: `../yad-epic/references/state-schema.md`.
180
+ - Connecting code repos + the code-context cross-checked here: `../yad-connect-repos/SKILL.md`.
@@ -59,7 +59,7 @@ awk '/CONTRACT-SURFACE:BEGIN/{f=1;next} /CONTRACT-SURFACE:END/{f=0} f' \
59
59
 
60
60
  ## Interaction with the review gate
61
61
 
62
- - The `architecture-review` step carries `risk_tags: ["contract"]`, so `sdlc-review-gate` **escalates**
62
+ - The `architecture-review` step carries `risk_tags: ["contract"]`, so `yad-review-gate` **escalates**
63
63
  it: owner + 1 reviewer **plus** one `domain-owner` approval per repo in the epic's `repos`.
64
64
  - **Staleness:** if the surface block is edited after approvals are recorded, the recomputed hash will
65
65
  not match the lock — approvals are stale and the gate drops back to `comment`. Re-lock (Step 5 of the
@@ -1,6 +1,6 @@
1
1
  ---
2
- name: sdlc-backfill
3
- description: 'Build-half Step G of the gated SDLC — backfill: generate specs for already-built features in an existing repo so new work does not break them. Confirm Repomix (the one true CLI subprocess: npx repomix), pack ONE feature at a time (compress + git logs, secret-scan), feed it to AI with a "describe what exists, do not invent" prompt, and write a DRAFT spec marked unverified. Require human approval (reuse sdlc-review-gate) before the spec counts as real. Boundary is auto-proposed from the project convention and human-confirmed. A change is blocked only until the features IT touches have approved specs. Use when the user says "backfill specs", "document an existing feature", or "spec the legacy code".'
2
+ name: yad-backfill
3
+ description: 'Build-half Step G of the gated SDLC — backfill: generate specs for already-built features in an existing repo so new work does not break them. Confirm Repomix (the one true CLI subprocess: npx repomix), pack ONE feature at a time (compress + git logs, secret-scan), feed it to AI with a "describe what exists, do not invent" prompt, and write a DRAFT spec marked unverified. Require human approval (reuse yad-review-gate) before the spec counts as real. Boundary is auto-proposed from the project convention and human-confirmed. A change is blocked only until the features IT touches have approved specs. Use when the user says "backfill specs", "document an existing feature", or "spec the legacy code".'
4
4
  ---
5
5
 
6
6
  # SDLC — Backfill (existing-code specs)
@@ -65,7 +65,7 @@ behaviour.
65
65
 
66
66
  ### Step 4 — `approve` (human approval — reuse the gate)
67
67
  A human reads the draft against the real code and approves it with the same `human_approve` discipline
68
- as `sdlc-review-gate` (owner + 1 reviewer). On approval set the frontmatter `verified: true` and record
68
+ as `yad-review-gate` (owner + 1 reviewer). On approval set the frontmatter `verified: true` and record
69
69
  the approver(s) + date. Only a `verified: true` backfill spec counts as real.
70
70
 
71
71
  ### Step 5 — `gate` (block changes per touched feature)
@@ -87,5 +87,5 @@ auto-advances; a human owns the approval.
87
87
 
88
88
  ## Reference
89
89
  - The "describe what exists" prompt, the spec shape, and the gate: `references/backfill.md`.
90
- - The human approval discipline reused: `../sdlc-review-gate/SKILL.md`.
90
+ - The human approval discipline reused: `../yad-review-gate/SKILL.md`.
91
91
  - Repomix flags: `RESEARCH-NOTES.md` §3.
@@ -45,7 +45,7 @@ generated: <YYYY-MM-DD>
45
45
  ---
46
46
  ```
47
47
 
48
- `verified: false` until a human approves (the `sdlc-review-gate` discipline: owner + 1 reviewer). On
48
+ `verified: false` until a human approves (the `yad-review-gate` discipline: owner + 1 reviewer). On
49
49
  approval, set `verified: true` and record the approver(s) + date. Only a `verified: true` backfill spec
50
50
  counts as real.
51
51
 
@@ -62,5 +62,5 @@ A change is blocked **only until the features it touches** have approved specs
62
62
  - For each `src/<feature>/` the diff touches, if `specs/backfill/<feature>/spec.md` exists it must be
63
63
  `verified: true`; otherwise **FAIL** (run backfill + approve for that feature first).
64
64
  - A feature with **no** `specs/backfill/<feature>/` is not this gate's concern (it is either
65
- forward-spec'd via `sdlc-spec`, or not yet being backfilled).
65
+ forward-spec'd via `yad-spec`, or not yet being backfilled).
66
66
  - Fails closed on an unresolvable base ref, like the other gates.
@@ -33,7 +33,7 @@ while IFS= read -r f; do
33
33
  echo "PASS [backfill]: ${f} has an approved (verified) backfill spec."
34
34
  else
35
35
  echo "FAIL [backfill]: ${f} is being backfilled but its spec is not yet human-approved (verified: true)."
36
- echo " -> run sdlc-backfill approve for ${spec} before changing this feature."
36
+ echo " -> run yad-backfill approve for ${spec} before changing this feature."
37
37
  rc=1
38
38
  fi
39
39
  done <<EOF
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: sdlc-checks
2
+ name: yad-checks
3
3
  description: 'Build-half Step C of the gated SDLC — the production-safety check gates. Wire and run the CI gates on a code repo: spec-link (every change links a real story/spec via its Task trailer), contract-check (a diff that changes the contract surface without a Contract-Change + an updated, re-locked contract FAILS and routes back to the architecture gate), build/test/lint, and verified-commits (no unverified commits from unverified users — platform-Verified signature + roster-allowlisted author, on the hub and every repo). The gates are CI-agnostic bash, invoked by GitHub Actions and GitLab CI. Use when the user says "wire the check gates", "run the gates", "require signed commits", or "set up CI checks" for a repo.'
4
4
  ---
5
5
 
@@ -9,7 +9,7 @@ description: 'Build-half Step C of the gated SDLC — the production-safety chec
9
9
  in CI on every PR/MR and must pass before merge (build plan §C). Each is a small, separate check:
10
10
 
11
11
  1. **spec-link** — the change links a real story/spec: its commits carry a `Task: <story>-<task>`
12
- trailer (the convention `sdlc-implement` writes) whose `<story>` resolves to `specs/<story>/link.md`.
12
+ trailer (the convention `yad-implement` writes) whose `<story>` resolves to `specs/<story>/link.md`.
13
13
  No unlinked code reaches merge.
14
14
  2. **contract-check** — if the diff changes the **contract surface** (the repo's quoted slice under
15
15
  `specs/<story>/contracts/`) without a `Contract-Change: yes` trailer **and** an updated, re-locked
@@ -36,15 +36,15 @@ and GitLab CI. This step is **by hand** in Phase 3 — run the gates with the sk
36
36
  - Canonical gate sources live in this skill's `templates/` (the source of truth that gets installed
37
37
  into each code repo):
38
38
  - `templates/checks/{spec-link,contract-check,build-test-lint,verified-commits}.sh`
39
- - `templates/github/sdlc-verified-commits.yml` + `templates/gitlab/sdlc-verified-commits.gitlab-ci.yml`
40
- → the standalone hub-side verified-commits CI (installed by `sdlc check --fix` with the hub wiring)
41
- - `templates/github/sdlc-checks.yml` → installs to `.github/workflows/sdlc-checks.yml` (marked `# sdlc-managed: sdlc-checks`)
42
- - `templates/gitlab/sdlc-checks.gitlab-ci.yml` → includable fragment, installs to `.gitlab/ci/sdlc-checks.yml`
39
+ - `templates/github/yad-verified-commits.yml` + `templates/gitlab/yad-verified-commits.gitlab-ci.yml`
40
+ → the standalone hub-side verified-commits CI (installed by `yad check --fix` with the hub wiring)
41
+ - `templates/github/yad-checks.yml` → installs to `.github/workflows/yad-checks.yml` (marked `# yad-managed: yad-checks`)
42
+ - `templates/gitlab/yad-checks.gitlab-ci.yml` → includable fragment, installs to `.gitlab/ci/yad-checks.yml`
43
43
  - `templates/gitlab/gitlab-ci.include-root.yml` → minimal root written only when no root `.gitlab-ci.yml` exists
44
44
  - `templates/gitlab/.gitlab-ci.yml` → legacy standalone root (greenfield single-file option)
45
45
  - The gates depend on the conventions from earlier steps: the `Task:`/`Contract-Change:` commit
46
- trailers (`sdlc-implement`), the `specs/<story>/link.md` + `contracts/` slice (`sdlc-spec`), and the
47
- locked `contract.md` (`sdlc-author-architecture`).
46
+ trailers (`yad-implement`), the `specs/<story>/link.md` + `contracts/` slice (`yad-spec`), and the
47
+ locked `contract.md` (`yad-architecture`).
48
48
 
49
49
  ## Inputs
50
50
 
@@ -67,22 +67,22 @@ Copy from this skill's `templates/`:
67
67
  there first; the principle is **additive: never edit a foreign CI file**.
68
68
 
69
69
  **GitHub** (detect by any `.github/workflows/*.y*ml`): our gates live in their own
70
- `.github/workflows/sdlc-checks.yml`, which GitHub runs independently of every other workflow, so
70
+ `.github/workflows/yad-checks.yml`, which GitHub runs independently of every other workflow, so
71
71
  "merge" reduces to "do not collide on the path".
72
- - No file at our path → copy `templates/github/sdlc-checks.yml` verbatim.
73
- - A file at our path whose **first line is `# sdlc-managed: sdlc-checks`** → it is ours; refresh it
72
+ - No file at our path → copy `templates/github/yad-checks.yml` verbatim.
73
+ - A file at our path whose **first line is `# yad-managed: yad-checks`** → it is ours; refresh it
74
74
  (no-op if unchanged).
75
75
  - A **foreign** file occupies that path/name → write to a non-colliding filename
76
- (`sdlc-checks.gen.yml`) and ensure its `name:` does not clash. Never merge jobs into a foreign
76
+ (`yad-checks.gen.yml`) and ensure its `name:` does not clash. Never merge jobs into a foreign
77
77
  workflow; never edit one.
78
78
 
79
79
  **GitLab** (detect by a root `.gitlab-ci.yml` and/or `.gitlab/ci/*.yml`): install the includable
80
- fragment `templates/gitlab/sdlc-checks.gitlab-ci.yml` → `<repo>/.gitlab/ci/sdlc-checks.yml` (its jobs
80
+ fragment `templates/gitlab/yad-checks.gitlab-ci.yml` → `<repo>/.gitlab/ci/yad-checks.yml` (its jobs
81
81
  carry `needs: []` and no `stage:`, so a foreign root `stages:` cannot break or reorder them).
82
82
  - No root `.gitlab-ci.yml` → write `templates/gitlab/gitlab-ci.include-root.yml` to
83
83
  `<repo>/.gitlab-ci.yml` (a minimal root that only `include:`s our fragment).
84
84
  - Root exists → read its top-level `include:`. Add the `include:` key if absent; append
85
- `- local: '.gitlab/ci/sdlc-checks.yml'` if the key exists but the entry is missing; **no-op** if it
85
+ `- local: '.gitlab/ci/yad-checks.yml'` if the key exists but the entry is missing; **no-op** if it
86
86
  is already listed. Touch nothing else in the root.
87
87
  - If the existing YAML cannot be parsed safely → **STOP** and print the exact include snippet for the
88
88
  human to paste (graceful degradation — never guess-edit a pipeline you cannot parse).
@@ -92,8 +92,8 @@ Copy from this skill's `templates/`:
92
92
  - Ensure `<repo>/package.json` defines `lint`, `build`, `test` scripts (see `references/check-gates.md`
93
93
  for the canonical scripts). **Only ADD a missing script; never overwrite an existing one.**
94
94
 
95
- Re-running `wire` is **idempotent** — markers (`# sdlc-managed: sdlc-checks`,
96
- `# sdlc-managed-include: sdlc-checks`) and the include-entry check make a second run a no-op.
95
+ Re-running `wire` is **idempotent** — markers (`# yad-managed: yad-checks`,
96
+ `# yad-managed-include: yad-checks`) and the include-entry check make a second run a no-op.
97
97
  Commit the wiring on the repo's default branch (it is shared infrastructure, not a task diff).
98
98
 
99
99
  **The hub is wired the same way.** `repo: hub` wires the hub repo itself (platform from `.sdlc/hub.json`)
@@ -116,9 +116,9 @@ human engineer review (Step E) still own the merge. This skill never edits the e
116
116
 
117
117
  - **Run standalone** (the Phase 3 default): **stop** here. A clean pass does not advance anything; a
118
118
  human takes the next step.
119
- - **Run by the orchestrator** (`sdlc-run`, Phase 4): this skill still just reports PASS/FAIL — the
119
+ - **Run by the orchestrator** (`yad-run`, Phase 4): this skill still just reports PASS/FAIL — the
120
120
  *advance decision* is the orchestrator's, read from the `checks` step's `automation` dial. On a clean
121
- pass with `checks` earned to `machine_advance`, `sdlc-run` advances to `engineer-review` on its own;
121
+ pass with `checks` earned to `machine_advance`, `yad-run` advances to `engineer-review` on its own;
122
122
  on any FAIL it halts and pulls in a human (build plan §B). **What the gates check is unchanged** —
123
123
  only who decides to proceed after a clean pass.
124
124
 
@@ -134,5 +134,5 @@ human engineer review (Step E) still own the merge. This skill never edits the e
134
134
 
135
135
  ## Reference
136
136
  - Gate definitions, the canonical scripts, CI wiring, and the convention map: `references/check-gates.md`.
137
- - Commit-trailer conventions the gates read: `../sdlc-implement/references/implement-conventions.md`.
138
- - Contract surface + hash recipe: `../sdlc-author-architecture/references/contract-format.md`.
137
+ - Commit-trailer conventions the gates read: `../yad-implement/references/implement-conventions.md`.
138
+ - Contract surface + hash recipe: `../yad-architecture/references/contract-format.md`.