Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/ws-spec-to-pr/STEP-DISPATCH.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Fill 4–8 `*` bullets from that analysis. Do **not** copy a canned list from a
| 1 | Complexity gate → if simple: stub plan; `node {skillsRoot}/ws-spec-to-pr/scripts/plan_index.cjs build --plan "{us-dir}/step-01-{slug}.plan.md" --spec "{us-dir}/step-00-{slug}.spec.md" --output "{us-dir}/plan.index.json"`; run Step 3 sequential stub below; `update_state finish --status skipped --reason interview-not-required` (step 2) and `--reason dag-disabled` (step 3); advance to 4. Else `dispatch-agent` `ws-plan-write`; same `plan_index.cjs build`; then `python {skillsRoot}/ws-spec-to-pr/scripts/check_memory_conflict.py {us-dir}/step-01-{slug}.plan.md --json` (exit 0 → proceed, including missing MEMORY.md consult-skipped; exit 2 → record trap titles and `force_interview`; exit 1 → HS-5 STOP for a missing plan file). | `step-01-{slug}.plan.md` + `plan.index.json` |
| 2 | Conditional: skip if eligible **and** `force_interview` is not true ([`gates.md`](../ws-shared/gates.md)); `finish --status skipped --reason interview-not-required`. Else `dispatch-agent` `ws-plan-interview`; 2c End auto-confirms 2e. After refined plan: rebuild `plan_index.cjs build --plan "{us-dir}/step-02-{slug}.plan.refined.md" --spec "{us-dir}/step-00-{slug}.spec.md" --output "{us-dir}/plan.index.json" --draft "{us-dir}/step-01-{slug}.plan.md"`. | `step-02-{slug}.plan.refined.md` (or skip) |
| 3 | When `defaults.enableDag` is `false` (default): do **not** `dispatch-agent`. Run `node {skillsRoot}/ws-spec-to-pr/scripts/write_sequential_dag.cjs --slug {slug} --workflow-id {workflow-id} --plan "{planOfRecord}" --exec-out "{us-dir}/step-03-{slug}.plan.exec.md" --dag-out "{us-dir}/step-03-{slug}.exec.dag.json"` (`{planOfRecord}` = refined plan if present, else step-01); `update_state finish --status skipped --reason dag-disabled`. When `defaults.enableDag` is `true`: `dispatch-agent` `ws-plan-to-tasks` (evaluates `dagThresholds`; sequential stub or parallel DAG). | `step-03-{slug}.plan.exec.md` + `step-03-{slug}.exec.dag.json` |
| 4 | **Pre-advance guard (before first dispatch):** unless `--skip-gates` / `skipQualityGates` is active (omit and log `gate-bypass | pre-advance` per [`gates.md`](../ws-shared/gates.md) § Quality gate bypass), run `node {skillsRoot}/ws-spec-to-pr/scripts/validate_state.cjs {plansDir}/{slug}/{workflow-id}.state.md --pre-advance 4` — exit ≠ 0 → **HS-5** STOP; name missing files; do not edit product paths; do not `dispatch-agent`. Bypass does **not** weaken autoMode ≠ skip planning. Then pre-implement check: `python {skillsRoot}/ws-spec-to-pr/scripts/check_memory_conflict.py {targetPlan} --json` (`{targetPlan}` = plan of record; exit 0 proceed including MEMORY consult-skipped; exit 2 pass DO NOT / INSTEAD DO into subagent; exit 1 HS-5). `dispatch-agent` `ws-implement-tasks` mode build; inject AC slices via `node {skillsRoot}/ws-spec-to-pr/scripts/plan_index.cjs read --index "{us-dir}/plan.index.json" --ac AC{n}` (do not re-read superseded step-01). Verify `memory_consult` proof; branch-direct default | verification |
| 4 | **Pre-advance guard (before first dispatch):** unless `--skip-gates` / `skipQualityGates` is active (omit and log `gate-bypass | pre-advance` per [`gates.md`](../ws-shared/gates.md) § Quality gate bypass), run `node {skillsRoot}/ws-spec-to-pr/scripts/validate_state.cjs {plansDir}/{slug}/{workflow-id}.state.md --pre-advance 4` — exit ≠ 0 → **HS-5** STOP; name missing files; do not edit product paths; do not `dispatch-agent`. Bypass does **not** weaken autoMode ≠ skip planning. Then pre-implement check: `python {skillsRoot}/ws-spec-to-pr/scripts/check_memory_conflict.py {targetPlan} --json` (`{targetPlan}` = plan of record; exit 0 proceed including MEMORY consult-skipped; exit 2 pass DO NOT / INSTEAD DO into subagent; exit 1 HS-5). `dispatch-agent` `ws-implement-tasks` mode build (skill owns Fix-Entire-Defect-Class: repo-wide sibling sweep + exemptions; orch confirms the sweep ran before verify); inject AC slices via `node {skillsRoot}/ws-spec-to-pr/scripts/plan_index.cjs read --index "{us-dir}/plan.index.json" --ac AC{n}` (do not re-read superseded step-01). Verify `memory_consult` proof; branch-direct default | verification |
| 5 | `dispatch-agent` `ws-plan-verify` **quick-score default** vs refined spec ‖ spec; full matrix if score `< minVerifyScore` or `--strict`; **Regression Sabotage Check** when required (missing required → fail-closed below the Advance bar (`knownDefect` caps at 8)); **below-bar gate** (`scoreAndRefine` until ≥ `minVerifyScore`); then **Reach-10 offer** when conditions in [`gates.md`](../ws-shared/gates.md) hold; then **G2-code after Step 5 before Step 6** (skip if empty) | `step-05-{slug}.plan.report.md` |
| 6 | Fail-closed dirty preflight; `dispatch-agent` `ws-code-review` (`git diff {base}...HEAD`). When `defaults.reviewJury.size` is 2 or 3, dispatch that many independent reviews against the same commit, then for each juror run `node {skillsRoot}/ws-code-review/scripts/write_review_round.cjs … --jury-out {us-dir}/.runtime/step-06-{slug}.juror-{N}.json`, then `node {skillsRoot}/ws-spec-to-pr/scripts/merge_review_jury.cjs --review … --output {us-dir}/step-06-{slug}.jury.json --canonical-review-out {us-dir}/step-06-{slug}.review.md`. Union never drops Warning/Critical; identical findings collapse. Size 1 matches today. When `defaults.contextHygiene.backgroundVerboseSteps` is true, orch **may** use non-blocking `dispatch-agent` for Steps 6/7 if the host supports it; otherwise log `background-unsupported` and run blocking (no HS-5). Critical/Warning → **fix → re-review** via `ws-implement-tasks` (max 3; not a separate step); then G2-code of review fixes if dirty; soft model tip for stronger review LLM | `step-06-{slug}.review.md` (+ optional `.fix.report.md`) |
| 7 | Machine probe first: `node {skillsRoot}/ws-testing/scripts/probe_test_surface.cjs --json`. Auto-skip **only** when `skipTesting` (`finish --reason testing-disabled`) or probe `hasTestSurface` is false and unit aliases are green (`finish --reason no-test-surface`). Agent judgment cannot skip. Else `dispatch-agent` `ws-testing`. Inside Step 7, optional **mutation** substep runs only when `verification.mutationTest` is set and `defaults.skipMutationTesting` is false; skip (log) otherwise. When mutation skipped/unset, **regression sabotage** via `run_sabotage.py`. Mutation score &lt; `verification.mutationThreshold` (default 80) or runner non-zero → Step 7 **fail-closed** (no Advance to 8); hand off to `ws-implement-tasks` fix mode. FSM stays 0–9 (no new step). | `step-07-{slug}.testing.*` |
Expand Down
43 changes: 30 additions & 13 deletions .agents/specs/index.PRD
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Provide agent- and IDE-neutral workflow skills, orchestrators, and utility skill
- [x] Runtime audit suggestions for performance, correctness, and reusable tooling (`spec: 0028-audit-performance-correctness-and-reusable-scripts.spec.md`)
- [x] `ws-fix-pr` proactive same-category discovery before resolve (`spec: 0038-fix-pr-proactive-class-sweep.spec.md`)
- [x] Harness spec-run benchmark with snapshot compare (`spec: 0041-harness-spec-benchmark.spec.md`)
- [ ] Regroup packaged skill ids as `ws-{family}-{verb}` (`spec: 0037-skill-family-naming.spec.md`)
- [~] Regroup packaged skill ids as `ws-{family}-{verb}` (`spec: 0037-skill-family-naming.spec.md`) — active workflow `skill-family-naming-20260902T215014Z` steps 0–6, uncommitted plan artifacts
- [x] Specify-time closure pack for score-10 spec delivery (`spec: 0040-specify-closure-pack.spec.md`)
- [ ] Unique Node runtime for all workflow-skills helper scripts (`spec: 0042-unique-skill-script-runtime.spec.md`)
- [x] ~~Cooperative session leases~~ **retired 0.3.38** — historical spec only (`spec: 0043-workflow-session-leases.spec.md`; use worktrees for parallel work)
Expand All @@ -104,12 +104,16 @@ Provide agent- and IDE-neutral workflow skills, orchestrators, and utility skill
- [x] Optional chronological spec filename prefixes and ws-spec-organizer (`spec: 0053-spec-prefix-ordering.spec.md`)
- [x] ws-doctor --json stdout contract and self-describing ESM entrypoint (`spec: 0055-ws-doctor-json-esm.spec.md`)
- [x] Agent-agnostic host detection, subagent fallback, and interactive gate execution (`spec: 0056-host-agent-environment-adapter.spec.md`)
- [ ] Revamped Modern Technical Website for Workflow Skills (`spec: modern-website-revamp.spec.md`)
- [ ] Installer Multi-Host Global Targets and Symlink Strategy (`spec: installer-multi-host-global-targets.spec.md`)
- [x] Revamped Modern Technical Website for Workflow Skills (`spec: modern-website-revamp.spec.md`) — PR #268 MERGED
- [x] Installer Multi-Host Global Targets and Symlink Strategy (`spec: installer-multi-host-global-targets.spec.md`) — PR #269 MERGED
- [x] Active host tool capability binding with auto-gate hard bypass (`spec: 0059-host-capability-binding-v2.spec.md`)
- [ ] Download tracker images and attachments during fetch-to-spec (GitHub and Azure DevOps parity) (`spec: 0060-provider-fetch-visual-attachments.spec.md`)
- [ ] ws-spec-to-pr: orquestrador implementou sem plano/refino — autoMode não deve pular Steps 1–3 (`spec: 0062-us-275.spec.md`)
- [ ] ws-megabrain: senior product-manager router with specialist personas (`spec: 0063-ws-megabrain.spec.md`)
- [x] Download tracker images and attachments during fetch-to-spec (GitHub and Azure DevOps parity) (`spec: 0060-provider-fetch-visual-attachments.spec.md`) — PR #271 MERGED
- [x] ws-spec-to-pr: orquestrador implementou sem plano/refino — autoMode não deve pular Steps 1–3 (`spec: 0062-us-275.spec.md`) — PR #276 MERGED
- [x] ws-megabrain: senior product-manager router with specialist personas (`spec: 0063-ws-megabrain.spec.md`) — PR #277 MERGED
- [x] Parametrized min verify score (`spec: 0046-parametrized-min-verify-score.spec.md`) — `defaults.minVerifyScore` live in config + scripts
- [x] Hand off ws-spec-memo runtime ops to spec-memo ws-memo (`spec: 0048-us-243.spec.md`) — PR #244 MERGED
- [x] Remove retired ws-patterns references from hub templates/seeds (`spec: 0052-us-250.spec.md`) — PR #251 MERGED
- [x] Prune retired skill ids on update + hybrid harness fallback (`spec: 0061-us-272.spec.md`) — PR #273 MERGED



Expand Down Expand Up @@ -175,7 +179,7 @@ Provide agent- and IDE-neutral workflow skills, orchestrators, and utility skill
| 43 | `audit-performance-correctness-and-reusable-scripts` | `[x]` done | Phase 4 | Runtime audit suggestions for perf/correctness/reusable tooling |
| 44 | `fix-pr-proactive-class-sweep` | `[x]` done | Phase 4 | Proactive same-defect-class sweep in cooperative fix |
| 45 | `harness-spec-benchmark` | `[x]` done | Phase 4 | Upstream harness fixture benchmark + snapshot compare |
| 46 | `skill-family-naming` | `[ ]` todo | Phase 4 | Regroup skill ids as `ws-{family}-{verb}` (spec family first) |
| 46 | `skill-family-naming` | `[~]` partial | Phase 4 | Regroup skill ids as `ws-{family}-{verb}` (spec family first) — workflow active steps 0–6 |
| 47 | `specify-closure-pack` | `[x]` done | Phase 4 | Specify-time closure pack for score-10 delivery |
| 48 | `unique-skill-script-runtime` | `[ ]` todo | Phase 4 | Node-only runtime for all packaged helper scripts |

Expand All @@ -190,14 +194,18 @@ Provide agent- and IDE-neutral workflow skills, orchestrators, and utility skill
| 57 | `close-implementation-before-pr` | `[x]` done | Phase 4 | Close implementation (`status: completed`) before push/PR; `shipStatus` tracks shipping |
| 58 | `ws-doctor-json-esm` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | ws-doctor --json stdout contract and self-describing ESM entrypoint |
| 59 | `host-agent-environment-adapter` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Agent-agnostic host detection, subagent fallback, and interactive gate execution |
| 60 | `modern-website-revamp` | `[ ]` todo | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Revamped Modern Technical Website for Workflow Skills |
| 61 | `installer-multi-host-global-targets` | `[ ]` todo | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Installer Multi-Host Global Targets and Symlink Strategy |
| 60 | `modern-website-revamp` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Revamped Modern Technical Website for Workflow Skills (PR #268) |
| 61 | `installer-multi-host-global-targets` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Installer Multi-Host Global Targets and Symlink Strategy (PR #269) |
| 62 | `host-capability-binding-v2` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Active host tool capability binding with auto-gate hard bypass |
| 63 | `provider-fetch-visual-attachments` | `[ ]` todo | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Download tracker images and attachments during fetch-to-spec (GitHub and Azure DevOps parity) |
| 64 | `us-275` | `[ ]` todo | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | ws-spec-to-pr: orquestrador implementou sem plano/refino — autoMode não deve pular Steps 1–3 |
| 65 | `ws-megabrain` | `[ ]` todo | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | ws-megabrain: senior product-manager router with specialist personas |
| 63 | `provider-fetch-visual-attachments` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Download tracker images and attachments during fetch-to-spec (GitHub and Azure DevOps parity) (PR #271) |
| 64 | `us-275` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | ws-spec-to-pr: orquestrador implementou sem plano/refino — autoMode não deve pular Steps 1–3 (PR #276) |
| 65 | `ws-megabrain` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | ws-megabrain: senior product-manager router with specialist personas (PR #277) |
| 66 | `parametrized-min-verify-score` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Parametrized min verify score (`defaults.minVerifyScore`, default 9) |
| 67 | `us-243` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Hand off ws-spec-memo runtime ops to spec-memo ws-memo (PR #244) |
| 68 | `us-250` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Remove retired ws-patterns references from hub templates/seeds (PR #251) |
| 69 | `us-272` | `[x]` done | Phase 4: Runtime diagnostics, audit, timing, and bootstrap | Prune retired skill ids on update + hybrid harness fallback (PR #273) |

Open Next-spec: `hermes-spec-to-pr-enhancements` (partial), `skill-family-naming`, `unique-skill-script-runtime`. Other new work goes to Inbox, then promote, `modern-website-revamp`, `installer-multi-host-global-targets`, `provider-fetch-visual-attachments`, `us-275`, `ws-megabrain`.
Open Next-spec: `hermes-spec-to-pr-enhancements` (partial), `skill-family-naming` (partial, active workflow). Only true todo left: `unique-skill-script-runtime`.

## 9. Inbox

Expand Down Expand Up @@ -263,6 +271,15 @@ Open Next-spec: `hermes-spec-to-pr-enhancements` (partial), `skill-family-naming
| 2026-08-28 | `spec-prefix-ordering` | Optional chronological spec filename prefixes and ws-spec-organizer | [PR #256](https://github.com/jpolvora/workflow-skills/pull/256) |
| 2026-09-03 | `host-agent-environment-adapter` | Agent-agnostic host detection, subagent fallback, and interactive gate execution | [PR #266](https://github.com/jpolvora/workflow-skills/pull/266) |
| 2026-09-03 | `host-capability-binding-v2` | Active host tool capability binding with auto-gate hard bypass | [PR #270](https://github.com/jpolvora/workflow-skills/pull/270) |
| 2026-09-03 | `modern-website-revamp` | Revamped Modern Technical Website for Workflow Skills | [PR #268](https://github.com/jpolvora/workflow-skills/pull/268) |
| 2026-09-03 | `installer-multi-host-global-targets` | Installer Multi-Host Global Targets and Symlink Strategy | [PR #269](https://github.com/jpolvora/workflow-skills/pull/269) |
| 2026-09-03 | `provider-fetch-visual-attachments` | Download tracker images and attachments during fetch-to-spec (GitHub + ADO parity) | [PR #271](https://github.com/jpolvora/workflow-skills/pull/271) |
| 2026-09-03 | `us-272` | Prune retired skill ids on update + hybrid harness fallback | [PR #273](https://github.com/jpolvora/workflow-skills/pull/273) |
| 2026-09-04 | `us-275` | ws-spec-to-pr autoMode must not skip planning Steps 1–3 | [PR #276](https://github.com/jpolvora/workflow-skills/pull/276) |
| 2026-08-26 | `us-243` | Hand off ws-spec-memo runtime ops to spec-memo ws-memo | [PR #244](https://github.com/jpolvora/workflow-skills/pull/244) |
| 2026-08-27 | `us-250` | Remove retired ws-patterns references from hub templates/seeds | [PR #251](https://github.com/jpolvora/workflow-skills/pull/251) |
| 2026-08-25 | `parametrized-min-verify-score` | Parametrized min verify score (`defaults.minVerifyScore`, default 9) | Implemented (config + `workflow_state.cjs` + `merge_verify_review.cjs` + `classify.cjs`) |
| 2026-09-05 | `ws-megabrain` | ws-megabrain vibe-coding skill + 3 fix-pr rounds (precedence, autoMode fallback, changelog, ref coverage) | [PR #277](https://github.com/jpolvora/workflow-skills/pull/277) |

## 11. Maintenance checklist

Expand Down
6 changes: 3 additions & 3 deletions bin/skill-integrity.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"paths": "sorted relative paths ascending (posix `/`)",
"skills": "sorted skill ids ascending"
},
"fullPackageDigest": "6dfbf9758c944f67ef4cf434f348362e566623e75c7afeb7d2ccf27391986526",
"fullPackageDigest": "5c0645b6c81b9b2ff21eaac5b8cf9c033d33d7945fe1479f27d5ac2804247bd9",
"hub": {
"files": {
"ac-ledger.schema.json": "a55c7e99dbe89a23d295658924f4f3e062f104a06e39f53c890206d041d50538",
Expand Down Expand Up @@ -485,10 +485,10 @@
"scripts/validate_state.py": "337aa2d349b2a04b244025b85c8a5fe14bb21a40a77396b7c8434417eeb4092b",
"scripts/write_sequential_dag.cjs": "32f83f2cb95d85520a11015bff562a7efd18d97844fafe9ee3cb3c69681a679c",
"SKILL.md": "093cee709af76b0f6942f10bd75def8d79ad68c170e7d5a32ffd15c6f9733ceb",
"STEP-DISPATCH.md": "e1f0d69396be1fb07abe853ba9fc390f65e06495c3fbe843dc9319a64229693b",
"STEP-DISPATCH.md": "b5bdd5456de644ad0d2699a401c33693e6c1c2f2e8766ef6a8e297456142604c",
"ws-spec-to-pr-run-test.md": "d23e3a2e6ee392bd598539b3ee89d709656142e49f8290b7400b9d25278d94ea"
},
"skillDigest": "eeb7a802fc3cdc0951b125a5ba2fe914164240380e2163645b310c6947ebd195"
"skillDigest": "6af8ffb2be3aaeb6fdc5d3191eca35955d2652768562b8b36128c84ca87949b4"
},
"ws-spec-to-pr-lite": {
"files": {
Expand Down