Skip to content

kvasanova/loomwork

v0.4.2

SDD lifecycle glue for superpowers + compound-engineering: status-frontmatter convention, drift audit, pre-merge close-out, and strategy/close-out hook gates. One loom, one status surface.

loomwork

One loom, one status surface. SDD lifecycle glue for running superpowers and compound-engineering in one repo without the conflict: a status-frontmatter convention, a drift audit, a pre-merge close-out procedure, and hook gates that enforce both.

Why

superpowers is an execution engine with no roadmap anchor, no solved-problem knowledge base, and no document-review pass. compound-engineering has those, but a looser execution pipeline. Installed together they collide: two brainstorm→plan pipelines, two status surfaces that drift apart. loomwork is the integration doctrine as a plugin:

  • One status-tracking surface. Spec frontmatter + acceptance checkboxes are the only "what's built" tracker. No second tool buys a sync engine — only a second source of truth that drifts.
  • Cherry-pick, don't merge. From compound-engineering take exactly: ce-strategySTRATEGY.md (roadmap anchor), ce-compounddocs/solutions/ (knowledge base), ce-doc-review (adversarial design review). Don't run ce-brainstorm → ce-plan → ce-work — superpowers is the execution engine.
  • Plans freeze, specs live. A merged plan gets a DONE banner and stops changing; the spec stays current as the code evolves.

Full doctrine: references/PLAYBOOK.md.

Install

Claude Code

/plugin marketplace add kvasanova/toolshed
/plugin install loomwork

Requires the superpowers and compound-engineering plugins (loomwork checks and tells you how to install them). Then, in each repo:

/loomwork:init

Codex

codex plugin marketplace add kvasanova/toolshed
codex plugin add loomwork@toolshed

Then, in each repo:

$loomwork:init

Codex skips plugin-bundled hooks until you review and trust them through /hooks.

Initialization scaffolds the docs layout, Cursor hook mirrors, and a memory-file block. If the repo has no strategy file, it points you at ce-strategy — that file belongs to ce-strategy, so loomwork never seeds it. Idempotent. Non-default paths: create .loomwork.json (keys specsDir, plansDir, strategyFile) before running init. Fresh repositories receive AGENTS.md; repositories with an existing CLAUDE.md remain supported and keep using it.

Re-run /loomwork:init after every plugin update. Cursor reads hooks from the workspace .cursor/, not from the plugin, so already-initialized repos keep running whatever hook scripts were copied in at init time. Re-running refreshes the scripts and migrates stale .cursor/hooks.json entries in place.

Cursor hooks invoke the scripts as bash .cursor/hooks/loomwork-*.sh. On Windows that needs bash on PATH (Git Bash or MSYS) — without the explicit bash, Cursor may open the .sh in an editor tab instead of running it.

What ships

PieceWhat it does
loomwork:audit skillDrift linter: closed issues on draft specs, merged PRs on unbannered plans, missing/stale verified dates. Exit 0/1/2. Not a CI gate by design.
loomwork:close-out skillPre-merge procedure: freeze the plan, verify + update the spec, and decide whether the ship changed the strategy (a yes routes to ce-strategy; close-out itself never writes STRATEGY.md) — on the feature branch, same PR.
loomwork:split-agents-md skillManual-only: splits one oversized agent guidance file into a tool-agnostic AGENTS.md plus thin host files (CLAUDE.md and friends) that import or reference it, with no duplicated prose. Moves any marker-guarded block into AGENTS.md so init keeps finding exactly one.
loomwork:model-assignment skillManual-only: appends a ## Model Assignment table to a plan, pinning a model alias per subagent-driven-development role. Run in the executing session so approved aliases are ones actually available. No effect under executing-plans, which dispatches no subagents.
Hook gates (Claude Code + Codex)Inject STRATEGY.md when brainstorming/writing-plans starts — or, when the repo has no strategy file, a one-sentence nudge to run ce-strategy; inject the close-out reminder when finishing-a-development-branch starts. Codex observes explicit $superpowers:... prompts through UserPromptSubmit.
Cursor hook templatesSame gates for Cursor (written into .cursor/ by init — Cursor reads hooks from the workspace, so the plugin is the installer, not the runtime). Covers slash-command invocations a Skill-only hook misses.
/loomwork:initIdempotent scaffolder + dependency preflight.

Compatibility

Pinned upstream skill names this plugin references: brainstorming, writing-plans, finishing-a-development-branch (superpowers); ce-strategy, ce-compound, ce-doc-review (compound-engineering). Re-checked on upstream majors. A renamed upstream skill makes a gate silently stop firing — if a gate goes quiet after an upstream update, check these names first.

Support posture

No SLA. This plugin exists because its author runs it on their own repos; breakage from upstream majors is fixed when it bites those repos, not on report. Issues may go unanswered. Price that in before adopting.