Skip to content

epic: migrate qualifying skills to Claude Code dynamic workflows #2174

Description

@laurigates

Tracking issue for the dynamic-workflow migration. Plan merged in #2162: docs/plans/dynamic-workflow-migration.md.

What was decided

47 candidate skills were evaluated by a 16-agent dynamic workflow (fan-out triage → per-group harness design → three adversarial lenses → synthesis). 18 were nominated; 21 refutations were raised; 6 were demoted by majority refutation.

Of 47, five ship a harness. The separating criterion:

The fan-out width must already be enumerable by something other than the model.

Every mover reads its N from a deterministic source that already exists. Every rejection either invented its N, or duplicated a bound a shell script already enforces — .claude/rules/offload-to-deterministic-substrate.md run backwards.

Two of the blog post's six shapes — tournament and loop-until-done — have no fit in this repo. That is recorded as a finding, not a gap to close later.

Sequencing

Groundwork gates everything. Nothing ships a .js before #2163.

#2163 (convention) ──┬──> #2164 (guard)
                     ├──> #2165 (fork conflict) ──> #2170 (test-analyze)
                     ├──> #2167 (verify-before-filing) <── #2166 (file-wave.sh)
                     ├──> #2168 (configure-all)
                     ├──> #2171 (blueprint-story-audit)
                     └──> #2172 (Tier B) ──> #2169 (evaluate-plugin-batch)

#2173 (Tier C) — independent, no .js, landable any time

Groundwork

Tier A — ship the harness

Tier B — batch-only templates

Tier C — schema/prose only, no .js

What is deliberately not here

35 of 47 skills stay as they are, and the plan's §"Rejected, and why" is as load-bearing as its recommendations. Before proposing a harness for anything not listed above, read that section — six designs were killed there, including:

  • code-review — 1 agent today → up to 69, on the flagship many-times-daily skill. context: fork already isolates the file set, and its "self-preference" check re-reads file:line against current source, which loop-integrity.md classifies as already-independent.
  • workflow-checkpoint-refactor — its ceiling would live in JS locals that silently reset on every --continue, defeating the exact runaway the ceiling exists to prevent.
  • evaluate-improve — the proposed tournament reproduces sorted[0]; grade_deterministic.py already resolved the ranking.
  • blueprint-autopilot — the design calls recordManifest() as plain JS, but the workflow API has no filesystem, and blueprint-autorun.sh already performs that write.

Also out of scope by decision: no new skill in workflow-orchestration-plugin for the authoring convention. It is about a page, and belongs in the paths:-scoped rule rather than costing listing tokens in every session.

Commit scoping

Each shipped .js is feat(<plugin>): … (minor bump on the published plugin). The rule, the CLAUDE.md row, and the guard script are chore / ci. Per .claude/rules/docs-currency.md, each template lands in the same commit as its SKILL.md framing section — a .js with no framing is exactly the "script to run verbatim" the source blog post warns against.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions