Stack-agnostic, intent-based spec-driven-development workflows for Claude Code. The same
skills work on any stack (Next.js + Supabase, React + Vite, Rails, …) because everything
stack-specific lives in a per-project stack profile (docs/stack.md) that the skills read
at runtime instead of hardcoding a framework or build command.
| Skill | Use when… |
|---|---|
/feature |
Build a new feature end-to-end (brainstorm → grill → spec → clarify → plan → tasks → analyze gate → worktree → TDD build with per-task review → /code-review gate → e2e smoke → PR). |
/improve |
Change/extend an existing feature that works as specified. Amends the spec first, then a scope-matched build with the /code-review gate (T2/T3) before PR. |
/troubleshoot |
Fix a bug you hit while manually testing. Root-cause gate (no fix before root cause) → test-first fix → /code-review gate → PR. |
/grill-me |
Stress-test a plan/design — relentless one-decision-at-a-time interview via AskUserQuestion. Used as a gate by /feature and /improve. |
e2e-smoke |
(internal) Real-browser smoke gate invoked by the three workflows. Returns PASS/FAIL/BLOCKED. |
/spec /plan /tasks /implement |
Thin entry points that defer to your spec layer (GitHub Spec-Kit if installed, plain markdown, or none). |
/analyze /checklist /tasks-to-issues |
More spec-layer entry points. /analyze = read-only cross-artifact consistency check (spec vs plan vs tasks) before coding — built into /feature (§4b) and /improve (§3b). /checklist = requirements-quality checklist ("unit tests for the English") for a risk dimension. /tasks-to-issues = export tasks.md to GitHub issues for human/distributed tracking (an alternative to the in-session build loop, not a step in it). |
/pr |
Get the current branch's work onto the right PR: checks the live PR status, rebases onto base, resolves conflicts, verifies, and pushes (--force-with-lease). Updates the open PR, or opens a new one if the branch's PR was already merged. |
/projectstatus |
Where are we / what's next? Spec-progress snapshot — reads the spec layer from the stack profile, reports per-milestone progress, flags blockers, and recommends the single next action. Read-only. |
/projecthealth |
Is it green & deployable? Operational snapshot — git working tree, open PRs + CI, and [VERIFY] quality gates always; plus DB migrations/advisors, deploys, and prod drift when the stack profile declares them. Read-only, red-first verdict. |
/writing-skills |
Author or update the skills in this repo using TDD-for-skills (RED baseline → GREEN minimal skill → REFACTOR to close loopholes). Vendored from Superpowers — see skills/writing-skills/ATTRIBUTION.md. |
Routing in one line: new feature → /feature · change a working feature → /improve · wrong/broken behavior → /troubleshoot · where are we / what's next → /projectstatus · is it green/deployable → /projecthealth.
/projectstatusand/projecthealthare the two status lenses — progress vs. operational health. Both are read-only and both read the stack profile (the spec layer and the optional Health / operations section, respectively), so the same skills work on any stack: a project with no DB/deploy/specs simply gets the always-on signals andn/afor the rest.
/improve= change correct behavior (add/extend/modify a feature that works as specified)./troubleshoot= fix incorrect behavior (wrong value, broken interaction, error — or known-bad-by-design code like a hardcoded auth bypass).
This repo is a Claude Code plugin marketplace. Add it once, then install the plugin:
# 1. Register this repo as a marketplace (use your repo's URL)
claude plugin marketplace add miroo93/dev-workflows
# …or the full URL:
# claude plugin marketplace add https://github.com/<you>/dev-workflows
# 2. Install the plugin from it
claude plugin install dev-workflows@dev-workflowsThe two
dev-workflowsare<plugin-name>@<marketplace-name>— both happen to be named the same here. Run these from inside the project where you want the skills (installs to the project), or with--scope userto make them available everywhere.
Install the prerequisites too (see below) — at minimum superpowers.
Push updates to this repo, then in each consuming project:
claude plugin marketplace update dev-workflows # pull the latest marketplace + plugin
claude plugin update dev-workflows # apply the new versionBump the version in both .claude-plugin/plugin.json and .claude-plugin/marketplace.json
when you publish a change, so update has a new version to move to. (A quick workflow: keep them
in lockstep, tag releases v0.1.1, etc.)
| Plugin / tool | Tier | Why |
|---|---|---|
superpowers |
Required | The execution layer: brainstorming, test-driven-development, systematic-debugging, subagent-driven-development, using-git-worktrees, finishing-a-development-branch, verification-before-completion. |
| A spec layer | Recommended for /feature and /improve |
Gives a durable contract + regression oracle. Plain-markdown specs work out of the box with zero extra tooling — the workflows now always write a markdown spec.md by default on any non-trivial run. GitHub Spec-Kit (specify init) is the heaviest option and remains optional: it just layers clarify/analyze machinery on top of the same markdown artifacts. |
superpowers-chrome (or any Playwright MCP) |
Optional | Browser control for reproduction + the e2e-smoke gate. Without it, the e2e gate is skipped. |
| A backend-log tool | Optional | /troubleshoot uses it for runtime/invocation bugs (e.g. supabase functions logs, vercel logs). Falls back to manual log inspection. |
The spec layer is not a prerequisite plugin. Plain-markdown specs need nothing installed. Spec-Kit is not installed via
claude plugin— it'sspecify initscaffolding you run in the project, so it never appears in theclaude plugin installlist below.
claude plugin marketplace add obra/superpowers-marketplace
claude plugin install superpowers@superpowers-marketplace
claude plugin install superpowers-chrome@superpowers-marketplace # optional- Install the plugin (above).
- Create the stack profile. Copy the template and fill it in:
(If
mkdir -p .sdd cp "$(claude plugin path dev-workflows)/templates/sdd-stack.template.md" docs/stack.md $EDITOR docs/stack.md
claude plugin pathisn't available, copy the template from this repo'stemplates/sdd-stack.template.md.) Seetemplates/examples/for worked examples — includingnextjs-supabase-vercel.stack.md. - (Optional) Configure the e2e gate. Fill the
E2E smoke gateblock indocs/stack.md, addE2E_EMAIL/E2E_PASSWORDto a gitignored.env, and add.e2e-smoke/+.envto.gitignore. Setenabled: falseto skip the browser gate.
The skills read docs/stack.md for the framework, conventions, verify commands,
frozen patterns, spec location, backend-log tool, and e2e config.
The full worked profile is in templates/examples/nextjs-supabase-vercel.stack.md. The key adaptations:
- Verify commands →
npm run lint,npm run typecheck(tsc --noEmit),npm run build,npm test. - Conventions to encode (so the code-quality reviewer enforces them): Server vs Client component boundaries, RLS as the security boundary, no service-role key in the browser,
revalidatePath/revalidateTagafter Server-Action mutations, schema changes viasupabase/migrations,NEXT_PUBLIC_*for client-exposed env only. - Binding context files → add
supabase/migrations/(schema source of truth) and yourdatabase.types.ts. - Backend-log tool →
vercel logs <deployment>+supabase functions logs, used by/troubleshootfor runtime bugs. - E2E auth mode → use
form-login(drive the real/loginform). Supabase Auth uses cookie sessions, so thetoken-injectionlocalStorage path usually doesn't apply unless you've built a custom JSON token endpoint. Setapp_url: http://localhost:3000anddev_command: npm run dev. - Spec layer → plain markdown (
docs/specs/**/spec.md) is the lowest-friction choice; runspecify initonly if you want full Spec-Kit.
Drop that file in as docs/stack.md, tweak selectors/paths to your app, and the same /feature /improve /troubleshoot skills run unchanged.
The profile replaces everything the skills would otherwise hardcode:
- Stack line + binding context files → injected as
[PROJECT CONTEXT]into every subagent prompt. - Conventions + frozen patterns → what the code-quality reviewer enforces / refuses to touch.
- Verify commands → the lint/typecheck/build/test commands run at every quality gate (
[VERIFY]). - Spec / planning layer → how
/improveand/troubleshootlocate a feature's spec, and which spec tooling/featuredrives. - Backend-log tool → the optional runtime-log branch in
/troubleshoot. - E2E smoke gate → auth mode (token-injection / form-login / none), app URL, dev command, selectors.
- These skills orchestrate Superpowers skills by name. Without
superpowers, the workflows lose their execution discipline (TDD loop, worktrees, branch finish) — install it. /code-reviewgate. All three workflows run the/code-reviewskill as a final correctness-bug + cleanup sweep over the branch diff before the PR —/feature(§7.4,high),/improve(§6.4,medium/highby tier, T2/T3 only),/troubleshoot(§5.4, scaled to blast radius). It complements (does not replace) the spec/convention-aware reviews: those check does the diff satisfy the spec and conventions;/code-reviewhunts correctness bugs and proposes reuse/simplify/efficiency cleanups. Correctness blockers are fixed and re-verified before the PR; safe cleanups are applied (--fix) or deferred to PR notes; a finding whose fix would cross the stop-class (schema/auth/secrets/frozen pattern/one-way door) is surfaced, never auto-applied. If/code-reviewisn't installed, wire in the standalone review skill your setup provides — or skip the gate (the per-task/two-stage reviews still run).skills/e2e-smoke/e2e-smoke.shsupports token-injection auth out of the box (mint a token from a JSON login endpoint, inject intolocalStorage). Form-login and public apps are driven directly by thee2e-smokeskill via Playwright MCP using only the script'sserve/teardown.- The GitHub Spec-Kit
speckit-*skills are not bundled — install Spec-Kit separately (specify init) if you want that layer. Otherwise the workflows default to plain-markdown specs (always written on non-trivial runs); Spec-Kit only adds clarify/checklist/analyze machinery on top. The/spec,/plan,/tasks,/clarify-equivalent,/analyze,/checklist,/implement, and/tasks-to-issuesentry points defer to the matchingspeckit-*command when Spec-Kit is installed, and run a hand-rolled fallback otherwise. - Two Spec-Kit commands are deliberately NOT wired into the
/feature//improveloop:speckit-implement(a competing executor — the Superpowers subagent TDD loop replaces it) andspeckit-taskstoissues(issue export for distributed teams — an alternative to the in-session loop, exposed only as the standalone/tasks-to-issues). - Autonomous by default (answer upfront, then walk away).
/featureand/improverun autonomously by default: the interactive gates (grill + clarify, plus checklist scoping) are front-loaded into one block at the start, then the agent prints a Decision Manifest (resolved decisions + a deferred-decision policy) and runs to PR without per-step pauses. It stops only for the stop-class — schema/migrations, security/auth/secrets, frozen-pattern changes, and one-way doors (hard-to-reverse / costly-to-refactor choices). Ask to "run slowly" / "stop at each step" for step-through mode, which pauses at every step instead. (/troubleshootis likewise autonomous after its mandatory diagnosis gate.) The split mirrors a hard rule: interactive steps (anything that asks you) run in the main session; non-interactive read-heavy steps (analyze, reviews) run in subagents. - Constitution = your stack profile. Spec-Kit's
clarify/plan/analyzeread/memory/constitution.md(project principles) and treat violations as CRITICAL. In dev-workflows the stack profile's Conventions and frozen patterns (docs/stack.md) play that role. If you use Spec-Kit'sanalyze, keep aconstitution.mdin sync with those frozen patterns (or skip it and the constitution checks become no-ops) — don't maintain two divergent rule sources.
MIT — see LICENSE.