agentleFS
nicodiansknicodiansk/turboflow/.claude/CLAUDE.md

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

  • Other versions1 project uses a version of this.

    Word for word · 1

    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.

  • In this repository10 other files it gives its agents.

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
  1. Distinctive:

    Every skill MUST have:

    line 97
  2. Distinctive:

    Sonnet minimum, never Haiku: Every agent (builders, reviewers, researchers, planners) runs Sonnet or higher.

    line 105
  3. Very specific:

    No agent file pins Opus. Apart from the planner inheriting an Opus session, Opus appears in one place: build retries a stuck builder lane …

    line 117
  4. Distinctive:

    Use semver: patch for fixes, minor for new skills/features, major for breaking changes

    line 143
  5. Very specific:

    Run the evals: TC_EVAL_LABEL=<version> scripts/eval.sh <cap> (WSL2, Linux, or macOS with the git wrapper), commit …

    line 173
  6. Very specific:

    Update CHANGELOG.md with the new entry

    line 175
  7. Very specific:

    Commit + push to nicodiansk/turbocharge.

    line 176

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
CLAUDE.md

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:review when 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            wrap

Distribution

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

TermDefinition
SkillA SKILL.md file in skills/<name>/ — becomes /turbocharge:<name>
AgentA markdown file in agents/ — dispatched by skills via the Agent tool
HookShell 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
MarketplaceGitHub 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)
LaneA 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 LawAn enforced constraint (not a suggestion) baked into skill definitions
Red FlagAnti-rationalization table that catches Claude skipping process steps
Review FocusA 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 caseA 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
VerifierRead-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 swarmReview'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 triageship 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.mdSemantic 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

FileFormatPurpose
skills/<name>/SKILL.mdMarkdown with YAML frontmatterSkill definition (prompt template)
agents/<name>.mdPlain markdownAgent system prompt
hooks/hooks.jsonJSONHook registration (lifecycle → command mapping)
hooks/*.mdMarkdownHook content (injected into context)
hooks/*.shBashHook 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>.jsPlain JS for the Claude Code workflow runtimeexport 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.jsonJSONPlugin manifest (name, version, author)
.claude-plugin/icon.pngSquare PNG, 512–2048 px, < 2 MBPlugin 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:

  1. YAML frontmatter with name, description
  2. Clear instructions Claude can follow without ambiguity
  3. A "Red Flags" section for anti-rationalization (build, review, debug at minimum)
  4. 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.json carries none (plugin.json wins over the marketplace entry, and the docs say to set it in one place). Guarded by t_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.

  1. Run the evals: TC_EVAL_LABEL=<version> scripts/eval.sh <cap> (WSL2, Linux, or macOS with the git wrapper), commit evals/summary/<version>.md, and refresh README Measured from it
  2. Bump version in .claude-plugin/plugin.json (the only place it lives)
  3. Update CHANGELOG.md with the new entry
  4. Commit + push to nicodiansk/turbocharge. Users pick it up via claude plugin update turbocharge@turbocharge.
  5. Directory: the listing tracks a release branch, so merges to master don't create directory versions.
    • The portal switched from master to release with 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.filemode is off). It builds a trimmed commit from the tag's plugin files (.claude-plugin/, agents/, hooks/, skills/, templates/, workflows/, README, LICENSE, NOTICE) and fast-forwards release to 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 to SHIPPED in scripts/release.sh or to DEV_ONLY in t_release_tree.sh. The webhook scans release, 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 whole hooks/ directory and the review workflow are left out (DIRECTORY_DROP: the directory copy ships no hooks, and review runs one code-reviewer). The manifests drop 2 hooks and 1 workflow. Ship is user-only (DIRECTORY_USER_ONLY: release.sh puts disable-model-invocation: true in 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.png in 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 (the ListPluginSubmissionVersions response the Versions tab loads) names the pair in params: credential_at skills/debug/condition-based-waiting.md, env "pass sometimes," (the scan reads a password-store command such as pass starting a segment after a parenthesis as a secret being read), sender_at hooks/session-start.sh, pairing read+strong. The same rule matched scripts/validate.sh from 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's gh api triage, the workflow's wording and then the workflow itself, the hook's CLAUDE.local.md read, 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's params before changing anything for a hold. 3.5.4 was a test commit on release only (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.sh refuses 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 a hooks.json or a hook of type command, counts hooks, or still says 1 workflow (t_release_tree.sh, t_directory_copy.sh). The CHANGELOG stays on GitHub; the README links to it by URL.
    • Merges to master reach repo-marketplace installs (turbocharge@turbocharge) right away.
    • The live directory version shows in claude plugin list --available --json under turbocharge-nicodiansk.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.