turboflow
CLAUDE.md3 starsChanged 32 days agoMITView on GitHub
Turbocharge: Claude Code Plugin Blueprint A Claude Code plugin that replaces ad-hoc agents, scattered skills, and custom commands with a single opinionated engineering pipeline. Also serves as a reference implementation for building Claude Code plugins. This is a plugin for Claude Code — not a standalone app. It consists of: - 10 skills (SKILL.md files that define slash commands) - 6 agents (markdown agent definitions dispatched by skills) - 1 workflow (workflows/review-swarm.js, launched by /turbocharge:review when the user opts in).…
1 other project uses a version of this.
Adopted by
Most recently taken up by
- nicodiansk/turbochargeword for word, first seen Oct 13, 2026
Other versions1 project uses a version of this.
Word for word · 1
- nicodiansk/turbocharge★ 3100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this CLAUDE.md into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 97
Every skill MUST have:
- Distinctive: line 105
Sonnet minimum, never Haiku: Every agent (builders, reviewers, researchers, planners) runs Sonnet or higher.
- Very specific: line 117
No agent file pins Opus. Apart from the planner inheriting an Opus session, Opus appears in one place: build retries a stuck builder lane …
- Distinctive: line 143
Use semver: patch for fixes, minor for new skills/features, major for breaking changes
- Very specific: line 173
Run the evals: TC_EVAL_LABEL=<version> scripts/eval.sh <cap> (WSL2, Linux, or macOS with the git wrapper), commit …
- Very specific: line 175
Update CHANGELOG.md with the new entry
- Very specific: line 176
Commit + push to nicodiansk/turbocharge.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
Project Context
Turbocharge: Claude Code Plugin Blueprint
A Claude Code plugin that replaces ad-hoc agents, scattered skills, and custom commands with a single opinionated engineering pipeline. Also serves as a reference implementation for building Claude Code plugins.
What This Project Is
This is a plugin for Claude Code — not a standalone app. It consists of:
- 10 skills (SKILL.md files that define slash commands)
- 6 agents (markdown agent definitions dispatched by skills)
- 1 workflow (
workflows/review-swarm.js, launched by/turbocharge:reviewwhen the user opts in). The directory copy leaves it out (Publishing Flow step 5) - 2 hooks (SessionStart bootstrap + ATLAS pre-load; builder exit gate on SubagentStop and PreToolUse/SubagentHandback). Repo installs only: the directory copy ships no hooks since 3.5.8 (Publishing Flow step 5)
- A marketplace manifest for distribution
Architecture
Plugin Structure:
skills/ → SKILL.md files (user-invocable slash commands)
agents/ → Agent definitions (dispatched by skills, not invocable directly)
hooks/ → hooks.json + content files (lifecycle automation)
workflows/ → workflow scripts (launched by skills)
.claude-plugin/ → plugin.json manifest + icon.png (plugin icon)The Pipeline
brainstorm → story → plan → build → review → ship
| |
debug wrapDistribution
Source repo: nicodiansk/turbocharge (this repo — single source of truth)
Install: claude plugin marketplace add nicodiansk/turbocharge
claude plugin install turbocharge@turbocharge
Update: claude plugin update turbocharge@turbocharge
Local dev: claude --plugin-dir /path/to/turbocharge
Directory: claude.ai plugin directory listing "Turbocharge" (ours; submitted 2026-06-23,
published 2026-09-24). Managed at claude.ai/directory/manage; tracks the trimmed `release`
branch since 3.4.1 (Publishing Flow step 5).
Each new version is scanned, then needs "Publish update" (a reviewer makes it live).
Install id: turbocharge-nicodiansk@anthropic-plugin-directory (Claude Code's
built-in marketplace; check the live version with `claude plugin list --available --json`)Name history: 3.0.0 renamed the plugin to turboflow because another author's plugin named
turbocharge is listed in the directory (turbocharge-aguerlain-lr). What 3.0.0 missed: our own listing
already existed, and the directory tells same-named plugins apart by appending the publisher
(turbocharge-nicodiansk). 3.2.0 restored turbocharge so the listing's users keep /turbocharge:. Never
start a new directory submission. Never rename the plugin name: it sets every user's command namespace.
Domain Terms
| Term | Definition |
| Skill | A SKILL.md file in skills/<name>/ — becomes /turbocharge:<name> |
| Agent | A markdown file in agents/ — dispatched by skills via the Agent tool |
| Hook | Shell command executed at lifecycle events: SessionStart (bootstrap), and SubagentStop plus PreToolUse on SubagentHandback (builder exit gate, one script on two events). Repo installs only: the directory copy ships no hooks since 3.5.8 |
| Marketplace | GitHub repo with .claude-plugin/marketplace.json that indexes plugins — lives at the root of this repo (nicodiansk/turbocharge) as of v2.3.0; previously a sibling turbocharge-marketplace repo (deleted 2026-04-13) |
| Lane | A group of plan tasks that owns a disjoint set of files (plan's ## Lanes table). /turbocharge:build runs each lane inline in the main session or with one Sonnet builder, overlaps lanes with no After dependency, commits by pathspec, and runs the full suite once at the join |
| Iron Law | An enforced constraint (not a suggestion) baked into skill definitions |
| Red Flag | Anti-rationalization table that catches Claude skipping process steps |
| Review Focus | A plan section listing up to 5 inputs or failure modes the spec implies but never names, each pinned by a test in the task that owns the code ((pinned: Task N)). Reviewers check the pins |
| Eval case | A directory under evals/<family>/<case>/ (prompt.md, case.yaml + fixture.sh, graders/*.md) run by claude plugin eval through scripts/eval.sh, with and without the plugin. WITH / W/OUT / Δ per family land in evals/summary/<version>.md and README Measured |
| Verifier | Read-only Sonnet agent (agents/verifier.md) that tries to refute one review finding or PR comment. In reviews an uncertain verdict counts as refuted |
| Review swarm | Review's workflow (workflows/review-swarm.js): five lens reviewers, dedupe, a verifier per finding, a 25-agent cap. It runs only on the user's opt-in (typed /turbocharge:review or an explicit ask), because the Workflow tool requires one; otherwise review dispatches the single code-reviewer. Left out of the directory copy since 3.5.3, where review always runs one code-reviewer |
| PR triage | ship given a PR's review comments in a file or pasted: verifies each comment through the verifier, fixes valid ones and commits locally, drafts replies, never pushes or posts, never edits a nit. 3.5.0 removed --watch on a wrong guess about the directory's credential hold (the cause was a line in the debug skill, fixed in 3.5.7); watching a PR is Claude Code's /autofix-pr |
| ATLAS.md | Semantic domain map generated by /turbocharge:atlas in user projects (Where to Look, Entry Points, Module Map, Key Symbols, Integration Points, Conventions & Gotchas). Where to Look table pre-loaded by SessionStart hook (remaining sections available via Read on demand); injected into dispatch prompts for planner, researcher, and code-reviewer agents; nudged by SessionStart when absent; staleness detected via <!-- atlas-hash:XXXX --> footer. The pre-load, the nudge and the staleness check are repo installs only: the directory copy has no hooks. This plugin repo intentionally does NOT ship one — CLAUDE.md + README cover the same ground for a plugin blueprint. |
Development Conventions
File Types
| File | Format | Purpose |
skills/<name>/SKILL.md | Markdown with YAML frontmatter | Skill definition (prompt template) |
agents/<name>.md | Plain markdown | Agent system prompt |
hooks/hooks.json | JSON | Hook registration (lifecycle → command mapping) |
hooks/*.md | Markdown | Hook content (injected into context) |
hooks/*.sh | Bash | Hook scripts: session-start.sh, builder-exit-gate.sh (read-only; disclosed in README "What the hooks do"). Repo installs only: the directory copy ships no hooks since 3.5.8 |
workflows/<name>.js | Plain JS for the Claude Code workflow runtime | export const meta literal first; launched by a skill through the Workflow tool; tested by t_review_swarm.sh |
evals/<family>/<case>/ | Eval case (prompt.md, case.yaml, fixture.sh, graders/*.md) | Behavioral evals run by scripts/eval.sh under WSL2, Linux or macOS (native Windows has no sandbox for Bash-granted runs; macOS needs the git wrapper in Testing Locally) |
.claude-plugin/plugin.json | JSON | Plugin manifest (name, version, author) |
.claude-plugin/icon.png | Square PNG, 512–2048 px, < 2 MB | Plugin icon, guarded by t_plugin_icon.sh. The directory fixed its listing icon at first submission, so changing this file doesn't change the listing; ask Anthropic via the portal's Get help |
Skill Anatomy
Every skill MUST have:
- YAML frontmatter with
name,description - Clear instructions Claude can follow without ambiguity
- A "Red Flags" section for anti-rationalization (build, review, debug at minimum)
- Chain-forward: suggest the next skill in the pipeline
Agent Models
Sonnet minimum, never Haiku. Every agent (builders, reviewers, researchers,
planners) runs Sonnet or higher. Turn count beats token price: a cheaper model
that loops on misunderstandings costs more than one that gets it right the first
time. Do not set model: haiku on any agent.
The planner is the one deliberate model: inherit: it rides the orchestrator's
session model so architectural planning gets your strongest available model
(Opus when you orchestrate on Opus, Sonnet otherwise) — never below the Sonnet
floor in normal use, and portable to setups without Opus access. Every other
agent hard-pins model: sonnet, the verifier included, and the review swarm's lens
agents set model: 'sonnet' in the script.
No agent file pins Opus. Apart from the planner inheriting an Opus session,
Opus appears in one place: build retries a stuck builder lane once with
model: opus on the Agent call. Design or destructive questions go to the user,
never to an Opus retry.
Release Naming
Name releases by what they do, not after the source of inspiration. Never put
competitor/plugin codenames (e.g. another plugin's brand) in commit messages,
branch names, CHANGELOG entries, or PR titles/bodies. Continue the project's own
lineage instead (e.g. "Lean Builder v3" → "Lean review pipeline"). Two exceptions:
the pre-existing setup skill's conflict-detection list, which names competing
plugins functionally to warn about conflicts, and NOTICE, which must name the
project whose license it carries.
Third-Party Material
Text or code copied or adapted from another project keeps that project's license
notice. NOTICE (shipped in both copies) holds the MIT notice for the parts of
debug, ship and plan adapted from another plugin, and lists each file; add a
file there when you copy or adapt more. Guarded by t_notice.sh.
Versioning
- Version lives only in
.claude-plugin/plugin.json;marketplace.jsoncarries none (plugin.json wins over the marketplace entry, and the docs say to set it in one place). Guarded byt_version_lockstep.sh - Bump it every release — the claude.ai directory expects a new version for each update
- Use semver: patch for fixes, minor for new skills/features, major for breaking changes
Testing Locally
# Load plugin from local directory
claude --plugin-dir .
# Validate plugin structure
./scripts/validate.sh
# Behavioral evals (WSL2, Linux or macOS): WITH / W/OUT / Δ per family. Runs use the logged-in
# account: on a Max/Pro login they draw plan usage, not API billing. <max-cost-usd> caps the
# CLI's list-price estimate, i.e. how much usage a run may take
scripts/eval.sh <max-cost-usd> [--runs 1]On macOS, cases that use git need a wrapper first on PATH: the eval sandbox denies stat on the real git
binaries, so bare git falls to the broken /usr/bin/git stub (dogfood D15). Exec by full path still works:
mkdir -p ~/.cache/tc-eval-git
printf '#!/bin/sh\nexec /opt/homebrew/bin/git "$@"\n' > ~/.cache/tc-eval-git/git && chmod +x ~/.cache/tc-eval-git/git
PATH="$HOME/.cache/tc-eval-git:$PATH" scripts/eval.sh <max-cost-usd>Publishing Flow
Single-repo as of v2.3.0. No cross-repo sync.
- Run the evals:
TC_EVAL_LABEL=<version> scripts/eval.sh <cap>(WSL2, Linux, or macOS with the git wrapper), commitevals/summary/<version>.md, and refresh README Measured from it - Bump
versionin.claude-plugin/plugin.json(the only place it lives) - Update
CHANGELOG.mdwith the new entry - Commit + push to
nicodiansk/turbocharge. Users pick it up viaclaude plugin update turbocharge@turbocharge. - Directory: the listing tracks a
releasebranch, so merges tomasterdon't create directory versions.- The portal switched from
mastertoreleasewith 3.4.1. Change the tracked branch on its Settings tab only when no publish request is waiting, because changing it cancels a waiting publish request. - To send a release to the directory:
bash scripts/release.sh vX.Y.Z --push(repo scripts are mode 644;core.filemodeis off). It builds a trimmed commit from the tag's plugin files (.claude-plugin/,agents/,hooks/,skills/,templates/,workflows/, README, LICENSE, NOTICE) and fast-forwardsreleaseto it; dev files (this CLAUDE.md, CHANGELOG,.github/,scripts/,evals/,images/,examples/) never reach the directory, whose scan flags them. A new top-level path must be added toSHIPPEDinscripts/release.shor toDEV_ONLYint_release_tree.sh. The webhook scansrelease, and once it passes you click Publish update. - The directory copy differs from the tag in four ways. Every shipped markdown file goes through
scripts/directory-filter.sh, which drops<!-- repo-only -->…<!-- /repo-only -->blocks and un-comments<!-- directory-only…-->blocks (hidden on GitHub). The wholehooks/directory and the review workflow are left out (DIRECTORY_DROP: the directory copy ships no hooks, and review runs one code-reviewer). The manifests drop2 hooksand1 workflow. Ship is user-only (DIRECTORY_USER_ONLY: release.sh putsdisable-model-invocation: truein its frontmatter), as in 2.8.1 and 3.3.0; repo installs keep the ship Claude can start (t_ship_menu.sh). - In skills and agents, use repo-only blocks around text that holds only for repo installs, and reword shared text so it's true in both copies. Avoid directory-only blocks there: repo installs read the raw file, so Claude would see the directory's alternative text as a comment.
- Why: the scan holds a version for review when shipped text names a bundled image or font (UNREAD_ASSET_REFERENCED:
icon.pngin a file tree was enough), or reads as fetching code and running it (RUNTIME_FETCH_EXEC: cleared in 3.4.2 by moving the repo-marketplace install, CI note, project layout and./scripts/…commands into repo-only blocks). Its policy also held 3.4.2 for "Update adds hooks" (the exit gate's two events, new since 2.8.1), which leaving the gate out cleared. "Uses a credential from the user's machine" (MCP_FORWARDS_CREDENTIAL_ENV) held 3.4.0 to 3.5.6. The card shows only.claude-plugin/plugin.json; the report behind it (theListPluginSubmissionVersionsresponse the Versions tab loads) names the pair inparams:credential_atskills/debug/condition-based-waiting.md,env"pass sometimes," (the scan reads a password-store command such aspassstarting a segment after a parenthesis as a secret being read),sender_athooks/session-start.sh,pairingread+strong. The same rule matchedscripts/validate.shfrom 2.8.1 to 3.3.0 without the read+strong pairing, which didn't hold, and it names only the first match in path order. 3.5.0 to 3.5.6 changed other things on guesses (ship'sgh apitriage, the workflow's wording and then the workflow itself, the hook'sCLAUDE.local.mdread, ship user-only), and the hold stayed; 3.5.7 rewords the line, which cleared that hold: the scan passed on 2026-10-19. Read the report'sparamsbefore changing anything for a hold. 3.5.4 was a test commit onreleaseonly (the live 2.8.1's tree with the version changed): the directory refused to fetch it ("Files in the repository the scanner won't accept"), though none of the listed kinds of file was in it, so nothing was scanned. A version held by policy is "not with Anthropic for review" (the portal); a Publish click records a request for the reviewer, and under this listing's setting a reviewer publishes every version, passing ones included. 3.5.7 then waited for a reviewer and was refused in 2026-11, first with LOCAL_CODE_NOT_CHECKED ("didn't confirm that it read the whole plugin") and then with LOCAL_CODE_HOOK_COMMAND: "The directory accepts command hooks only from Verified organizations … Remove every hook of type command, then push a new commit. Hooks of type prompt can stay." SessionStart takes only command and mcp_tool hooks, so the bootstrap can't become a prompt hook: the directory copy ships no hooks since 3.5.8. "Verified organization" is undocumented: Anthropic chooses them, there's no way to ask yet, and nothing ties it to a Team plan. release.shrefuses a tree whose text names a bundled asset, pipes a download into a shell, keeps a marker, names a left-out file (by its name without the extension), reads as a password-store command, holds ahooks.jsonor a hook of typecommand, counts hooks, or still says1 workflow(t_release_tree.sh,t_directory_copy.sh). The CHANGELOG stays on GitHub; the README links to it by URL.- Merges to
masterreach repo-marketplace installs (turbocharge@turbocharge) right away. - The live directory version shows in
claude plugin list --available --jsonunderturbocharge-nicodiansk.
- The portal switched from
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

