Skip to content
Development
Hook

Hooks

What cc-fleet runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.

From plugin
cc-fleet
1893 skills2 hooks

Claude Code

> /plugin marketplace add ethanhq/cc-fleet
> /plugin install cc-fleet@ethanhq

What fires, and when

SessionStart

Fires once when a session begins, and again after a context compaction. It is where a plugin sets up its environment, or restores state the compaction dropped.

  • Matchesstartupnode "${CLAUDE_PLUGIN_ROOT}/hooks/check-cc-fleet.js"

PreToolUse

  • MatchesAgentsh "${CLAUDE_PLUGIN_ROOT}/hooks/teammate-guard.sh"
Read hooks/hooks.json

Where it lives

  • hooks/check-cc-fleet.jsRunsGitHub
    Read the script
    #!/usr/bin/env node
    // cc-fleet plugin · SessionStart binary check.
    //
    // This plugin ships ONLY the skill (+ this hook). The
    // native `cc-fleet` Go binary is installed SEPARATELY onto PATH — a plugin
    // can't compile or reliably ship a native binary (no install-time hook; the
    // plugin root path is ephemeral and would break the apiKeyHelper pin baked
    // into provider profiles).
    //
    // If the binary is missing, the skill can still route a request but every CLI
    // call it makes will fail, so we nudge once at session start.
    //
    // Contract: SessionStart hooks must NEVER block the session — we always exit 0.
    //   - binary present  -> print nothing (no context noise)
    //   - binary missing  -> one-line install hint on stdout (Claude Code folds it
    //                        into the session context and shows the user)
    //
    // Node ships with Claude Code, so this runs on every platform; on win32 the
    // PATH probe honors PATHEXT (cc-fleet.exe / .cmd / …).
    "use strict";
    
    const fs = require("fs");
    const path = require("path");
    
    function onPath() {
      const dirs = (process.env.PATH || "").split(path.delimiter).filter(Boolean);
      const win = process.platform === "win32";
      // On Windows a bare name resolves through PATHEXT; elsewhere it's the file
      // itself (an executable bit is not required for "is it findable").
      const exts = win
        ? (process.env.PATHEXT || ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean)
        : [""];
      for (const dir of dirs) {
        for (const ext of exts) {
          const candidate = path.join(dir, "cc-fleet" + ext);
          try {
            if (fs.statSync(candidate).isFile()) return true;
          } catch {
            // not here — keep looking
          }
        }
      }
      return false;
    }
    
    if (!onPath()) {
      console.log(
        "cc-fleet binary not found on PATH — the cc-fleet skills need it for provider subagents/workflows and provider teammates (teammates: terminal claude inside tmux or iTerm2). Install: go install github.com/ethanhq/cc-fleet/cmd/cc-fleet@latest  (or grab a release / see https://github.com/ethanhq/cc-fleet#install)."
      );
    }
    process.exit(0);
    
  • hooks/teammate-guard.shRunsGitHub
    Read the script
    #!/bin/sh
    # cc-fleet PreToolUse(Agent) guard: fail-CLOSED for ccf-* teammate types, no-op for everything else.
    input=$(cat)
    case "$input" in
      *'"subagent_type":"ccf-'*|*'"subagent_type": "ccf-'*) ;;
      *) exit 0 ;;
    esac
    ccf=$(command -v cc-fleet 2>/dev/null)
    if [ -z "$ccf" ]; then
      echo "cc-fleet: TEAMMATE_SETUP_REQUIRED(cc_fleet_not_on_path): provider teammate blocked — install cc-fleet or use a native agent type." >&2
      exit 2
    fi
    out=$(printf '%s' "$input" | "$ccf" teammate guard --protocol 1 2>/dev/null); rc=$?
    if [ "$rc" -eq 0 ]; then
      [ -n "$out" ] && printf '%s\n' "$out"
      exit 0
    fi
    echo "cc-fleet: teammate guard unavailable (exit $rc) — provider teammate blocked. Update cc-fleet and the plugin together (cc-fleet update; /plugin update)." >&2
    exit 2
    

Read the script before you install anything that runs on your machine. This is the one part of a plugin that acts without being asked.

@ethanhq
Ships withcc-fleet

🚢 Run Claude Code's ⚙️ Dynamic Workflows, 👥 Agent Teams & ⚡ Subagents on any third-party model — DeepSeek · GLM · Kimi · Qwen … or your Codex subscription. No Anthropic subscription needed. | 🚢 让 Claude Code 的 ⚙️ Dynamic Workflow、👥 Agent Team、⚡ Subagent 用上任意第三方模型 — DeepSeek · GLM · Kimi · Qwen…… 或你的 Codex 订阅,无需 Claude 订阅

Stars on GitHub

Momentum

stars in total
189
Star history of ethanhq/cc-fleet on GitHub, a chart by star-history.com

More plugins that ship hooks.

superpowers

superpowers

A development methodology for coding agents that makes the agent brainstorm before building, follow plans, run parallel work and finish branches in a disciplined way. You get fewer skipped steps and more consistent results from your coding assistant.

15 skills1 hook311k
@obra@obra
Install Plugin
ponytail

ponytail

A Claude Code plugin with skills for auditing a whole repo, reviewing a change, listing deferred shortcut comments, and showing measured savings and a quick command reference.

6 skills10 hooks188k
@dietrichgebert@dietrichgebert
Install Plugin
agent-skills

agent-skills

Walks a software change from a written spec through design, testing, code review, CI/CD, and release, applying the matching engineering skill at each stage. Useful for developers using Claude Code on full development workflows.

25 skills+3112k
@addyosmani@addyosmani
Install Plugin
planning-with-files

planning-with-files

Persistent file-based planning for AI coding agents on long-running, multi-step tasks. It keeps task_plan.md, findings.md and progress.md on disk, so work can resume after /clear or context compaction.

6 skills+228k
@othmanadi@othmanadi
Install Plugin
gsd-core

gsd-core

A spec-driven development workflow for Claude Code that guides a project through planning, phases, milestone audits and fixes. Includes skills to generate tests from UAT criteria and to audit completed work.

72 skills+311k
@open-gsd@open-gsd
Install Plugin
superpowers-zh

superpowers-zh

Chinese-language skill pack for Claude Code that adds workflow guidance for brainstorming, TDD, debugging, and code review, plus Chinese conventions for commits, documentation, and domestic Git platforms like Gitee and Coding.net.

21 skills1 hook8.5k
@jnmetacode@jnmetacode
Install Plugin
socraticode

socraticode

Gives Claude Code semantic search, dependency graph and architecture context over a codebase, so an AI assistant can explore and understand a project's code. Includes skills for indexing a project and managing its file watching.

2 skills+33.4k
@giancarloerra@giancarloerra
Install Plugin
cocoindex-code

cocoindex-code

A lightweight code search engine that uses AST-based semantic search with local embeddings and incremental indexing. It helps Claude Code users find code faster and more efficiently.

1 skill1 MCP+13k
@cocoindex-io@cocoindex-io
Install Plugin

Questions about the hooks in cc-fleet.

Which coding agents can use the hooks in cc-fleet?
The hooks in cc-fleet install in Claude Code and Cursor: each runs Claude Code hooks from .claude/settings.json, so copy the hooks there.