Skills-first · Claude Code

Plain-language wants in.
Verified commits out.

Four skills-first plugins turn requests into measurable goal contracts, rich HTML artifacts, autonomous metric optimization, cleaner human-sounding prose, and one-goal-at-a-time commits kept only after local checks pass. The workflow is the “proactive loops” pattern from Anthropic’s official loops guidance, shipped as installable skills.

4marketplace plugins
0servers or build step
6workflow skills
the factory loop
# 1 · capture a want — define-goal does recon, then writes a contract
> I want first paint under 1.2s on the pricing page
define-goal ▸ recon (3 read-only agents) ▸ contract ▸ contract review
✓ queued docs/goals/014-fast-pricing-fcp.md · type: feature

# 2 · optional rich handoff — separate plugin, same marketplace
> make a stakeholder-ready implementation plan
html-artifactspricing-fcp-plan.html · timeline · data flow · risks

# 3 · work one ready goal — or --count 3 / --unlimited for a batch
> /dispatch
dispatch6/8 done ████████████████░░░░
working goal 014 · ready 1 · blocked 0
✓ goal 014 verified locally → committed to staging
How it works

From a sentence to a verified commit — on a loop.

The marketplace pairs flywheel's factory chain with three focused sidecar plugins — html-artifacts, autoresearch, and human-writing. flywheel explores fuzzy ideas into designs, captures wants as contracts, queues them in the repo, works ready goals one at a time (one per run by default; batch flags available), and keeps each commit only after TDD-backed local checks pass.

01 · ideate

Explore

A fuzzy idea → a user-approved design through open dialogue. Hands the design to define-goal; never writes goals or code.

02 · define-goal

Capture

Plain-language want → a measurable contract, grounded by recon and red-teamed before it queues into docs/goals/.

03 · the queue

Queue

Goal files + index.yaml live in the repo. Status lives only in the index, so a goal is never worked twice.

04 · dispatch

Work

Works ready goals one at a time on the current branch — no worktrees, no PRs. One foreground implementer, backed by TDD and fresh review — then the orchestrator re-reviews the diff with its own independent reviewer.

05 · gate

Verify

Each goal's commit is kept only after an independent review and a local build+test gate pass; a failure rolls it back. CI is a non-blocking post-push check.

The toolkit

Four plugins, each kept focused.

Install flywheel for the goal queue and autonomous execution. Install html-artifacts for browser-file deliverables, autoresearch for autonomous metric optimization, and human-writing to strip AI-writing tells. In Claude Code they're namespaced by plugin.

ideate

The front door for fuzzy ideas: an open design dialogue — context first, decomposition before detail, 2–3 approaches with a recommendation — ending in a user-approved design handed to define-goal. Never writes goals or code.

/ideate

define-goal

Turns a plain-language want — or a whole document of them — into a measurable goal contract, grounded by recon (Sonnet gather agents, session-model synthesis) and a concise brief. Red-teams every queued contract before it lands, then stamps the implementer model last — opus by default for features and bugs, sonnet for mechanical work. Produces goals only; never implements.

/define-goal

html-artifacts

Separate plugin for self-contained browser artifacts: rich plans, specs, PR reviews, diagrams, research explainers, decks, prototypes, and one-off editors with export/copy round trips.

html-artifacts:html-artifacts

dispatch

The factory orchestrator. Works ready goals one at a time — the next goal, an exact goal (/dispatch 087), or a sequential batch (--count 3, --unlimited) — commits straight to your branch, and keeps only what passes an independent second-view review plus the local build+test gate. Orchestrates only.

/dispatch

goals-status

A read-only glance at the queue: every in-progress, blocked, and not-started goal with its title and brief, grouped in that order — completed goals hidden. Blocked goals show their reason; a goal waiting on a dependency shows what it waits on. Never changes the queue.

/goals-status

loop-architect

Designs the loop contract — prompt + verification + stop conditions — asking only the calibration needed so an unattended run converges and stops. Includes usage-limit proofing: scheduling that survives the account’s 5-hour/weekly limit windows.

loop-architect

factory-doctor

One-pass preflight for a repo + machine: software, a clean working tree, the working branch, the verify commands, queue state, and loop health — stale claims, underspecified goals, usage-limit exposure. Auto-fixes everything local.

/factory-doctor

autoresearch

Separate plugin for an autonomous optimization loop: try a hypothesis, measure it, keep improvements and revert regressions, with MAD-based confidence scoring and file-based logs any session can resume.

autoresearch

human-writing

Separate plugin that edits AI-sounding text into human prose: strips inflated significance, promotional language, em-dash and rule-of-three overuse, AI vocabulary, and chatbot artifacts. Based on Wikipedia's "Signs of AI writing".

human-writing
The work queue

Goals live in the repo, not on a board.

No issue-body size limits, no per-repo label bootstrap — versioned with the code. The branch you're on is the integration surface.

docs/goals/ layout
# status lives ONLY in index.yaml — goal files are immutable contracts
docs/goals/
├── index.yaml        # config + queue state
├── 001-faster-checkout.md
├── 002-fix-auth-redirect.md
└── done/            # archived completed goals
index.yaml · config block
config:
  base: staging         # the branch goals are committed to
  model: inherit        # code-agent default — a goal's own model: wins
  skills: [test-driven-development]  # repo-wide mandates
  verify:                # local build+test gate (ordered)
    - npm run build
    - npm test
  budget:                # optional external brake
    max_iterations: 20

Invariants that keep it safe

Decided from real production runs, encoded so an unattended loop advances the queue without corrupting it.

single sourceStatus lives only in index.yaml; dual-writing frontmatter drifts.
claim protocolFlip one entry to in_progress before working it, so a goal is never picked up twice.
direct-to-branchThe implementer commits straight to the checked-out branch — no worktrees, no goal/<id> branches.
blocked ≠ lostA blocked goal keeps a reason and is surfaced under needs-you, never re-dispatched into livelock.
local gateOne goal per run; the commit is kept only after TDD-backed verification and the verify build+test gate pass, else rolled back.
Get started

Install from the pragmatic-growth marketplace.

One marketplace, four plugins.

add the marketplace & install
/plugin marketplace add pragmaticgrowth/flywheel
/plugin install flywheel@pragmatic-growth
/plugin install html-artifacts@pragmatic-growth
/plugin install autoresearch@pragmatic-growth
/plugin install human-writing@pragmatic-growth
later, pull updates
/plugin marketplace update pragmatic-growth
then — capture your first goal, preflight, and run the factory
/factory-doctor              # preflight the repo + machine
/define-goal I want the API p95 latency under 200ms
/dispatch                    # work one ready goal
/goals-status                # see what's still open