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.
- package/CHANGELOG.md +25 -0
- package/README.md +137 -134
- package/bin/{sdlc.mjs → yad.mjs} +18 -17
- package/cli/commit.mjs +3 -3
- package/cli/epic-state.mjs +2 -2
- package/cli/gate.mjs +8 -8
- package/cli/lib.mjs +1 -1
- package/cli/manifest.mjs +77 -36
- package/cli/openpr.mjs +3 -3
- package/cli/plan.mjs +88 -1
- package/cli/platform.mjs +2 -2
- package/cli/reconcile.mjs +18 -10
- package/cli/repo.mjs +5 -5
- package/cli/setup.mjs +7 -7
- package/docs/index.html +1227 -0
- package/package.json +10 -7
- package/skills/sdlc/config.yaml +24 -24
- package/skills/sdlc/install.sh +2 -2
- package/skills/sdlc/module-help.csv +16 -16
- package/skills/{sdlc-author-analysis → yad-analysis}/SKILL.md +12 -12
- package/skills/{sdlc-author-architecture → yad-architecture}/SKILL.md +12 -12
- package/skills/{sdlc-author-architecture → yad-architecture}/references/contract-format.md +1 -1
- package/skills/{sdlc-backfill → yad-backfill}/SKILL.md +4 -4
- package/skills/{sdlc-backfill → yad-backfill}/references/backfill.md +2 -2
- package/skills/{sdlc-backfill → yad-backfill}/templates/checks/backfill-check.sh +1 -1
- package/skills/{sdlc-checks → yad-checks}/SKILL.md +20 -20
- package/skills/{sdlc-checks → yad-checks}/references/check-gates.md +21 -21
- package/skills/{sdlc-checks → yad-checks}/templates/checks/contract-check.sh +2 -2
- package/skills/{sdlc-checks → yad-checks}/templates/checks/verified-commits.sh +2 -2
- package/skills/{sdlc-checks/templates/github/sdlc-checks.yml → yad-checks/templates/github/yad-checks.yml} +3 -3
- package/skills/{sdlc-checks/templates/github/sdlc-verified-commits.yml → yad-checks/templates/github/yad-verified-commits.yml} +4 -4
- package/skills/{sdlc-checks → yad-checks}/templates/gitlab/gitlab-ci.include-root.yml +3 -3
- package/skills/{sdlc-checks/templates/gitlab/sdlc-checks.gitlab-ci.yml → yad-checks/templates/gitlab/yad-checks.gitlab-ci.yml} +7 -7
- package/skills/{sdlc-checks/templates/gitlab/sdlc-verified-commits.gitlab-ci.yml → yad-checks/templates/gitlab/yad-verified-commits.gitlab-ci.yml} +4 -4
- package/skills/{sdlc-connect-repos → yad-connect-repos}/SKILL.md +7 -7
- package/skills/{sdlc-connect-repos → yad-connect-repos}/references/code-context.md +6 -6
- package/skills/{sdlc-connect-repos → yad-connect-repos}/references/hub-config.md +3 -3
- package/skills/{sdlc-author-epic → yad-epic}/SKILL.md +13 -13
- package/skills/{sdlc-author-epic → yad-epic}/references/state-schema.md +13 -13
- package/skills/{sdlc-hub-bridge → yad-hub-bridge}/SKILL.md +24 -24
- package/skills/{sdlc-hub-bridge → yad-hub-bridge}/references/bridge.md +11 -11
- package/skills/{sdlc-hub-bridge → yad-hub-bridge}/references/login-roster.md +2 -2
- package/skills/{sdlc-hub-bridge → yad-hub-bridge}/templates/checks/hub-route.sh +3 -3
- package/skills/{sdlc-hub-bridge/templates/github/sdlc-gate-sync.yml → yad-hub-bridge/templates/github/yad-gate-sync.yml} +10 -10
- package/skills/{sdlc-hub-bridge → yad-hub-bridge}/templates/gitlab/gitlab-ci.include-root.yml +3 -3
- 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
- package/skills/{sdlc-implement → yad-implement}/SKILL.md +14 -14
- package/skills/{sdlc-implement → yad-implement}/references/implement-conventions.md +4 -4
- package/skills/{sdlc-pr-template → yad-pr-template}/SKILL.md +11 -11
- package/skills/{sdlc-pr-template → yad-pr-template}/references/risk-routing.md +5 -5
- package/skills/{sdlc-pr-template → yad-pr-template}/templates/checks/risk-route.sh +2 -2
- package/skills/{sdlc-pr-template → yad-pr-template}/templates/github/pull_request_template.md +1 -1
- package/skills/{sdlc-pr-template → yad-pr-template}/templates/gitlab/merge_request_templates/Default.md +1 -1
- package/skills/{sdlc-pr-template → yad-pr-template}/templates/hub/github/pull_request_template.md +4 -4
- package/skills/{sdlc-pr-template → yad-pr-template}/templates/hub/gitlab/merge_request_templates/Default.md +4 -4
- package/skills/{sdlc-review-comments → yad-review-comments}/SKILL.md +6 -6
- package/skills/{sdlc-review-comments → yad-review-comments}/references/comment-conventions.md +6 -6
- package/skills/{sdlc-review-comments → yad-review-comments}/templates/github/REVIEW_COMMENTS.md +2 -2
- package/skills/{sdlc-review-comments → yad-review-comments}/templates/gitlab/REVIEW_COMMENTS.md +2 -2
- package/skills/{sdlc-review-gate → yad-review-gate}/SKILL.md +13 -13
- package/skills/{sdlc-review-gate → yad-review-gate}/references/gating.md +3 -3
- package/skills/{sdlc-run → yad-run}/SKILL.md +12 -12
- package/skills/{sdlc-run → yad-run}/references/run-loop.md +10 -10
- package/skills/{sdlc-ship → yad-ship}/SKILL.md +8 -8
- package/skills/{sdlc-ship → yad-ship}/references/ship-and-record.md +3 -3
- package/skills/{sdlc-ship → yad-ship}/templates/.coderabbit.yaml +1 -1
- package/skills/{sdlc-spec → yad-spec}/SKILL.md +11 -11
- package/skills/{sdlc-spec → yad-spec}/references/spec-handoff.md +2 -2
- package/skills/{sdlc-status → yad-status}/SKILL.md +6 -6
- package/skills/{sdlc-author-stories → yad-stories}/SKILL.md +10 -10
- package/skills/{sdlc-author-stories → yad-stories}/references/story-schema.md +1 -1
- package/skills/{sdlc-author-ui → yad-ui}/SKILL.md +9 -9
- /package/skills/{sdlc-checks → yad-checks}/templates/checks/build-test-lint.sh +0 -0
- /package/skills/{sdlc-checks → yad-checks}/templates/checks/spec-link.sh +0 -0
- /package/skills/{sdlc-checks → yad-checks}/templates/gitlab/.gitlab-ci.yml +0 -0
- /package/skills/{sdlc-connect-repos → yad-connect-repos}/references/repos-registry.md +0 -0
- /package/skills/{sdlc-implement → yad-implement}/templates/.gitmessage +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: 'Read-only view of an SDLC epic: prints the current step, each step''s dials (assistance/automation) and status, and which approvals are still required at the active gate. For stories in the build half it also prints each back-half step''s automation dial, status, and trust record (runs / % approved-unchanged / whether it clears the threshold to be earned), plus the system-wide kill-switch state — so the team can see WHY a step is automated and reverse it with evidence. Surfaces the Phase 5 instrumentation signals: per-step "earned but manual" (nudge cost) and, across multiple epics, a fleet roll-up (scale of read). Use when the user says "
|
|
2
|
+
name: yad-status
|
|
3
|
+
description: 'Read-only view of an SDLC epic: prints the current step, each step''s dials (assistance/automation) and status, and which approvals are still required at the active gate. For stories in the build half it also prints each back-half step''s automation dial, status, and trust record (runs / % approved-unchanged / whether it clears the threshold to be earned), plus the system-wide kill-switch state — so the team can see WHY a step is automated and reverse it with evidence. Surfaces the Phase 5 instrumentation signals: per-step "earned but manual" (nudge cost) and, across multiple epics, a fleet roll-up (scale of read). Use when the user says "yad status", "where is epic EP-...", "what is blocking the gate", "show the trust record", or "fleet status".'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# SDLC — Status (read-only)
|
|
@@ -35,7 +35,7 @@ Print, in this order:
|
|
|
35
35
|
`currentStep` with `→`. The full front-state chain is `[analysis → analysis-review →] epic →
|
|
36
36
|
epic-review → architecture → architecture-review → ui-design → ui-design-review → stories →
|
|
37
37
|
stories-review` (then `ready-for-build`); the bracketed `analysis` prefix is present only when
|
|
38
|
-
`
|
|
38
|
+
`yad-analysis` seeded it. Always render exactly the steps present in `steps[]`.
|
|
39
39
|
3. **Active gate** — for the `currentStep` (if it is a `review+approve` step), compute and show:
|
|
40
40
|
- the reviewer rule in force — **base** (`owner + 1 reviewer`), **escalated** (list the required
|
|
41
41
|
domains), or **per-repo** for `stories-review` (list each repo needing sign-off),
|
|
@@ -43,7 +43,7 @@ Print, in this order:
|
|
|
43
43
|
- approvals **still required** to pass the gate (name the missing domains/repos).
|
|
44
44
|
Do not advance — just state whether the gate would pass right now.
|
|
45
45
|
|
|
46
|
-
Apply the same predicate `
|
|
46
|
+
Apply the same predicate `yad-review-gate` uses (restated here so this skill is
|
|
47
47
|
self-contained). From the `approved` records in `approvals.json` for the current step:
|
|
48
48
|
- `owners` = records with `role == "owner"`; `reviewers` = distinct `role == "reviewer"`;
|
|
49
49
|
`domainOwners` = `role == "domain-owner"`, grouped by `domain`.
|
|
@@ -77,7 +77,7 @@ Print, in this order:
|
|
|
77
77
|
`⚠ earned but manual — could be machine_advance`. This is the *nudge cost* the Phase 5 trigger
|
|
78
78
|
watches: automation that is proven safe but still hand-started. It is a read-only observation, not a
|
|
79
79
|
recommendation to flip — earning the evidence and flipping the dial stay deliberate human acts
|
|
80
|
-
(`
|
|
80
|
+
(`yad-run action: set-dial`). See `docs/phase-5-build-plan.md` §"What to instrument now".
|
|
81
81
|
|
|
82
82
|
9. **Fleet roll-up (overview only).** When the user asked for an overview, or more than one epic exists
|
|
83
83
|
under `{project-root}/epics/`, print a one-line-per-epic roll-up across the fleet: each epic's
|
|
@@ -89,4 +89,4 @@ Print, in this order:
|
|
|
89
89
|
|
|
90
90
|
### Hard rule
|
|
91
91
|
This skill is strictly read-only. If the user wants to comment, approve, or advance, point them to
|
|
92
|
-
`
|
|
92
|
+
`yad-review-gate`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: yad-stories
|
|
3
3
|
description: 'Front state 7 of the gated SDLC. With the pm, break the approved epic into user stories, each tagged with the repos that must implement it. Assigns zero-padded EP-<slug>-S0N IDs and writes one file per story under stories/. Reads epic + architecture + contract + UI as input. Never auto-advances — hands off to the team review gate (per-repo reviewer routing). Use when the user says "author the stories" or after the UI gate passes.'
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -8,7 +8,7 @@ description: 'Front state 7 of the gated SDLC. With the pm, break the approved e
|
|
|
8
8
|
**Goal:** Break an approved epic into human-authored, AI-assisted user stories, each with a stable
|
|
9
9
|
`EP-<slug>-S0N` ID and a `repos` tag listing which repos must implement it. This is a **front state**:
|
|
10
10
|
human-authored with AI assist, **never auto-advances**. When the stories are drafted, control passes
|
|
11
|
-
to `
|
|
11
|
+
to `yad-review-gate`, which routes **per-repo reviewers** (each repo's engineer reviews the stories
|
|
12
12
|
touching their repo).
|
|
13
13
|
|
|
14
14
|
There is **no `sm` agent** (Phase 0 Deviation 1): the `pm` lens breaks down the epic; the `pm` or
|
|
@@ -26,11 +26,11 @@ There is **no `sm` agent** (Phase 0 Deviation 1): the `pm` lens breaks down the
|
|
|
26
26
|
### Step 1 — Resolve the epic and check the gate
|
|
27
27
|
Resolve the `EP-<slug>` (ask if not provided). Read `.sdlc/state.json`. Only proceed when
|
|
28
28
|
`currentStep == "stories"` and that step's `status == "in_progress"` (the UI review must already have
|
|
29
|
-
passed). If not, stop and point the user at `
|
|
29
|
+
passed). If not, stop and point the user at `yad-status` / the gate.
|
|
30
30
|
|
|
31
31
|
### Step 1b — Open the authoring branch
|
|
32
32
|
Open the stories authoring branch `stories/EP-<slug>` per the shared procedure
|
|
33
|
-
(`../
|
|
33
|
+
(`../yad-epic/references/state-schema.md` → "Authoring branches"): git-safe (skip with a note
|
|
34
34
|
if `{project-root}` is not a git work tree), check out the branch if it exists, else create it from the
|
|
35
35
|
hub's default branch. Author and commit the story files under `stories/` on it. This is **distinct**
|
|
36
36
|
from the bridge's `review/…` branch.
|
|
@@ -48,7 +48,7 @@ Phase 3 build (Spec Kit per repo) accurate anchors instead of invented ones.
|
|
|
48
48
|
|
|
49
49
|
- **Greenfield-safe:** if `repos.json` is absent/empty, note "no repos connected" and proceed.
|
|
50
50
|
- **Staleness:** if a repo's current HEAD ≠ its registry `syncedHead`, warn and suggest
|
|
51
|
-
`
|
|
51
|
+
`yad repo refresh <repo>` (a human decision — flag and stop, never auto-refresh); stamp
|
|
52
52
|
`code-context: stale` in the story frontmatter.
|
|
53
53
|
- **Traceability:** record the loaded maps in each story's `code-context:` frontmatter field.
|
|
54
54
|
|
|
@@ -96,14 +96,14 @@ In `state.json`: set `stories.status: "done"`, set `stories-review.status: "in_r
|
|
|
96
96
|
|
|
97
97
|
### Step 7 — Stop at the gate (do NOT advance)
|
|
98
98
|
Report: the story IDs created, the repos each touches, and that the next action is **review** via
|
|
99
|
-
`
|
|
99
|
+
`yad-review-gate`. Note that this review routes **per-repo reviewers**: owner + 1 reviewer **plus**, for
|
|
100
100
|
each repo appearing in any story's `repos`, a `domain-owner` approval for that repo. **Never record
|
|
101
101
|
approval here.** Front states do not auto-advance. When the hub has a platform, the gate opens a review
|
|
102
|
-
PR on the hub (via `
|
|
103
|
-
`
|
|
102
|
+
PR on the hub (via `yad-hub-bridge`, with a `domain:<repo>` label per touched repo) and
|
|
103
|
+
`yad-review-gate action: sync` pulls platform approvals/comments into the ledger; otherwise the review
|
|
104
104
|
is recorded file-only.
|
|
105
105
|
|
|
106
106
|
## Reference
|
|
107
107
|
- Story frontmatter and body template: `references/story-schema.md`.
|
|
108
|
-
- State schema and field meanings: `../
|
|
109
|
-
- Connecting code repos + the code-context the brain reads: `../
|
|
108
|
+
- State schema and field meanings: `../yad-epic/references/state-schema.md`.
|
|
109
|
+
- Connecting code repos + the code-context the brain reads: `../yad-connect-repos/SKILL.md`.
|
|
@@ -40,7 +40,7 @@ As a <role>, I want <capability>, so that <outcome>.
|
|
|
40
40
|
|
|
41
41
|
## Per-repo review routing (the stories gate)
|
|
42
42
|
|
|
43
|
-
`
|
|
43
|
+
`yad-review-gate` treats each repo's engineer as the `domain-owner` for the stories touching that repo.
|
|
44
44
|
The gate passes only when, in addition to the base rule (owner + 1 reviewer), **every repo appearing in
|
|
45
45
|
any story's `repos`** has at least one `domain-owner` approval scoped to that repo (`domain` = repo
|
|
46
46
|
name). The gate's `approved.md` lists which repos still lack sign-off.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: yad-ui
|
|
3
3
|
description: 'Front state 5 of the gated SDLC. With the ux-designer, author ui-design.md and DESIGN.md for an approved architecture, driving Impeccable as harness slash-commands (document/extract/craft) when installed, or authoring directly when not. Reads epic + architecture as input. Never auto-advances — hands off to the team review gate. Use when the user says "author the UI design" or after the architecture gate passes.'
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@ description: 'Front state 5 of the gated SDLC. With the ux-designer, author ui-d
|
|
|
7
7
|
|
|
8
8
|
**Goal:** Produce a human-authored, AI-assisted `ui-design.md` and `DESIGN.md` for an approved
|
|
9
9
|
architecture. This is a **front state**: human-authored with AI assist, **never auto-advances**. When
|
|
10
|
-
the UI is drafted, control passes to `
|
|
10
|
+
the UI is drafted, control passes to `yad-review-gate` (base rule: owner + 1 reviewer).
|
|
11
11
|
|
|
12
12
|
UI work is shaped by **Impeccable**, invoked as **harness slash-commands** (not a subprocess CLI) per
|
|
13
13
|
the Phase 0 deviation. If Impeccable is not installed, the `ux-designer` lens authors the same outputs
|
|
@@ -25,11 +25,11 @@ directly — the workflow does not block on the tool.
|
|
|
25
25
|
### Step 1 — Resolve the epic and check the gate
|
|
26
26
|
Resolve the `EP-<slug>` (ask if not provided). Read `.sdlc/state.json`. Only proceed when
|
|
27
27
|
`currentStep == "ui-design"` and that step's `status == "in_progress"` (the architecture review must
|
|
28
|
-
already have passed). If not, stop and point the user at `
|
|
28
|
+
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 UI authoring branch `ui-design/EP-<slug>` per the shared procedure
|
|
32
|
-
(`../
|
|
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 `ui-design.md` / `DESIGN.md` on it. This is **distinct** from
|
|
35
35
|
the bridge's `review/…` branch.
|
|
@@ -47,7 +47,7 @@ Impeccable is absent, the code-map is the brain's view of what UI/components alr
|
|
|
47
47
|
|
|
48
48
|
- **Greenfield-safe:** if `repos.json` is absent/empty, note "no repos connected" and proceed.
|
|
49
49
|
- **Staleness:** if a repo's current HEAD ≠ its registry `syncedHead`, warn and suggest
|
|
50
|
-
`
|
|
50
|
+
`yad repo refresh <repo>` (a human decision — flag and stop, never auto-refresh); stamp
|
|
51
51
|
`code-context: stale` in the frontmatter.
|
|
52
52
|
- **Traceability:** record the loaded maps in the `ui-design.md` `code-context:` frontmatter field.
|
|
53
53
|
|
|
@@ -102,12 +102,12 @@ In `state.json`: set `ui-design.status: "done"`, set `ui-design-review.status: "
|
|
|
102
102
|
|
|
103
103
|
### Step 6 — Stop at the gate (do NOT advance)
|
|
104
104
|
Report: the paths to `ui-design.md` and `DESIGN.md`, whether Impeccable was used, and that the next
|
|
105
|
-
action is **review** via `
|
|
105
|
+
action is **review** via `yad-review-gate` (base rule: owner + 1 reviewer). **Never record approval
|
|
106
106
|
here.** Front states do not auto-advance. When the hub has a platform, the gate opens a review PR on the
|
|
107
|
-
hub (via `
|
|
107
|
+
hub (via `yad-hub-bridge`) and `yad-review-gate action: sync` pulls platform approvals/comments into
|
|
108
108
|
the ledger; otherwise the review is recorded file-only.
|
|
109
109
|
|
|
110
110
|
## Reference
|
|
111
111
|
- Impeccable commands and the slash-command-vs-CLI deviation: `RESEARCH-NOTES.md` §4 + Deviation 3.
|
|
112
|
-
- State schema and field meanings: `../
|
|
113
|
-
- Connecting code repos + the code-context the brain reads: `../
|
|
112
|
+
- State schema and field meanings: `../yad-epic/references/state-schema.md`.
|
|
113
|
+
- Connecting code repos + the code-context the brain reads: `../yad-connect-repos/SKILL.md`.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|