Skip to main content

init

Initialize cc-suite for the current project — sets up the AGENTS.md bridge, registers Codex, Claude, and Antigravity MCP surfaces, and generates a .cc-suite.md config. Skill counterpart to /cc-suite:init.

Source facts

Repository
xiaolai/cc-suite
Last source activity
September 30, 2026 at 18:13
Detected SKILL.md language
English
Stars
56
Forks
20

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
2 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
init
description
Initialize cc-suite for the current project — sets up the AGENTS.md bridge, registers Codex, Claude, and Antigravity MCP surfaces, and generates a .cc-suite.md config. Skill counterpart to /cc-suite:init.
version
0.3.2
# Init Bootstrap cc-suite in the current project. ## When to Use - Setting up a project for the first time - Re-initializing after cloning a repo that already has `AGENTS.md` - Walks through the same setup flow as `/cc-suite:init` — useful when the agent should drive the steps in conversation rather than via a slash command ## Workflow ### Step 0: Resolve the plugin root `CLAUDE_PLUGIN_ROOT` is set by Claude Code only — in a Codex or Antigravity session it is unset. Resolve the root from the bridged skills symlink (it points at `<plugin-root>/skills/cc-suite`): ```bash PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(dirname "$(dirname "$(readlink -f .claude/skills/cc-suite 2>/dev/null)")")}" [ -d "${PLUGIN_ROOT}/scripts" ] || echo "! cannot resolve the cc-suite plugin root — ask the user to type /cc-suite:bridge-skills in Claude Code first, or export CLAUDE_PLUGIN_ROOT" ``` Every command below uses `${PLUGIN_ROOT}`. Stop if it could not be resolved. ### Step 1: Check for existing config ```bash [ -f .cc-suite.md ] && echo "exists" || echo "missing" ``` If it exists, read it and ask the user: - **Show** — display the file and stop - **Regenerate** — replace with a fresh config (proceed through questions) - **Cancel** — keep as-is and stop ### Step 2: Detect project stack Run these checks to build the stack description: ```bash [ -f package.json ] && echo "node" [ -f requirements.txt ] || [ -f pyproject.toml ] && echo "python" [ -f go.mod ] && echo "go" [ -f Cargo.toml ] && echo "rust" [ -f Gemfile ] && echo "ruby" [ -f pom.xml ] || [ -f build.gradle ] && echo "java" ls *.csproj *.sln 2>/dev/null && echo "dotnet" [ -f jest.config.js ] || [ -f vitest.config.ts ] && echo "jest/vitest" [ -f pytest.ini ] || [ -f conftest.py ] && echo "pytest" [ -d src ] && echo "src/" [ -d lib ] && echo "lib/" [ -d app ] && echo "app/" ``` Detect the test command from what the project declares — a framework marker alone does not establish the command: - `package.json`: read `scripts.test`. Missing or the npm placeholder (`Error: no test specified`) → **unknown**. Otherwise pick the runner from the lockfile: `pnpm-lock.yaml` → `pnpm test`, `yarn.lock` → `yarn test`, `bun.lock*` → `bun run test`, else `npm test`. - `pytest.ini` / `conftest.py` → `pytest` - `go.mod` with `*_test.go` files → `go test ./...` - `Cargo.toml` → `cargo test` - `Gemfile` + `spec/` → `bundle exec rspec` - Nothing reliable → write `unknown` rather than guessing. ### Step 3: Discover the current Codex default Run the shared Codex preflight before asking for configuration: ```bash bash "${PLUGIN_ROOT}/scripts/codex-preflight.sh" ``` Use `default_model` and the per-model `reasoning_efforts` (from the `models_detail` entry matching `default_model`; top-level `reasoning_efforts` for older preflight output) to phrase the questions in Step 4. The preflight dynamically prefers the latest available general-purpose model and deprioritizes review-only entries, so they are never the default while a general model exists. Do not write the resolved `default_model` slug into the config unless the user explicitly pins it in Step 4 — the config records a policy (`latest`, or a deliberate pin), not a snapshot. If the preflight cannot discover models, skip the model question and write `latest`. ### Step 4: Ask customization questions (conversational) Ask the user four questions in sequence (three when preflight failed — skip the model policy question and write `latest`): 1. **Audit focus** — balanced / security-first / performance-first / quality-first (default: balanced) 2. **Audit depth** — mini (5 dimensions, faster) / full (9 dimensions) (default: mini) 3. **Model policy** — track latest (default; currently resolves to `{default_model}`, never goes stale) / pin `{default_model}` (fixed until the user edits `.cc-suite.md`) 4. **Reasoning effort** — offer the levels from the selected per-model `reasoning_efforts` list (default: `high` when available, otherwise the highest offered; fall back to high / medium / low when preflight failed or the list is empty) ### Step 5: Generate .cc-suite.md Write `.cc-suite.md` to the project root: ````markdown # CC-Suite Configuration Project-specific settings for cc-suite commands. Generated by `/cc-suite:init`. Edit freely — all fields are optional. ## Project - **Stack**: {detected stack} - **Test command**: {detected test command or "unknown"} - **Source directories**: {detected dirs} ## Defaults These override the built-in defaults for all commands in this project. Remove a line to fall back to the built-in default. `latest` is a policy, not a model name: Codex-delegating commands resolve it to the newest general-purpose Codex model via preflight. Replace it with a concrete slug (any entry from the preflight model list) only to pin — pins stop tracking the catalog. - **Default model**: {"latest", or the pinned slug if the user chose to pin} - **Default effort**: {chosen effort} - **Default audit type**: {chosen audit type} - **Default sandbox**: workspace-write ## Audit Focus {chosen focus} Additional instructions appended to every audit's developer-instructions: ```text {focus-specific instructions} ``` ## Skip Patterns Files and directories to always skip during audits (glob patterns): ```text node_modules/ dist/ build/ coverage/ *.min.js *.bundle.js *.lock vendor/ .git/ ``` ## Project-Specific Instructions Custom instructions appended to Codex's developer-instructions for every command. ```text {stack-derived instructions from Step 2 detection, e.g. "This is a {detected stack} project. Follow existing patterns in {detected dirs}." Leave empty when nothing was detected.} ``` ```` Focus-specific instructions: - **balanced**: "Give equal attention to all audit dimensions." - **security-first**: "Prioritize security findings. Flag any auth bypass, injection, data exposure, or cryptographic weakness as Critical regardless of other severity heuristics." - **performance-first**: "Prioritize performance findings. Flag N+1 queries, O(n²) algorithms, memory leaks, and blocking I/O as High regardless of other severity heuristics." - **quality-first**: "Prioritize code quality findings. Flag untested critical paths, high cyclomatic complexity, and DRY violations as High regardless of other severity heuristics." ### Step 6: Bridge init ```bash bash "${PLUGIN_ROOT}/scripts/init.sh" ``` Creates `AGENTS.md`, `CLAUDE.md` (`@AGENTS.md`), Codex scaffolding, the `.agents/skills` bridge, and the `.gitignore` block. (The generated `.agents/mcp_config.json` projection is written later, by `bridge_mcp.sh` in Step 8.) Antigravity CLI (`agy`) reads `AGENTS.md` natively and uses `.agents/` workspace assets. It does not create new Gemini-era project scaffolding. Skips each artifact if already correct. ### Step 7: Expose skills ```bash bash "${PLUGIN_ROOT}/scripts/bridge_skills.sh" ``` ### Step 8: Mirror the project MCP surface ```bash bash "${PLUGIN_ROOT}/scripts/prune_codex_mcp.sh" bash "${PLUGIN_ROOT}/scripts/bridge_mcp.sh" ``` `prune_codex_mcp.sh` removes the dead `codex-cli` entry an older cc-suite (≤2.0.1) wrote into `.mcp.json` — it pointed at `codex mcp-server`, which Codex CLI no longer has. No-op when there is nothing to remove. cc-suite registers no replacement: Claude→Codex delegation runs `codex exec` through the CLI runner. The bridge writes the Codex projection and the generated agy workspace MCP projection. It also registers the pinned `claude-code` server for agy → Claude. ### Step 9: Register claude-code MCP server ```bash bash "${PLUGIN_ROOT}/scripts/mcp_claude.sh" ``` ### Step 10: Final status ```bash bash "${PLUGIN_ROOT}/scripts/status.sh" ``` Report: ``` cc-suite initialized Bridge artifacts: {status summary} Claude → Codex: codex exec via the CLI runner (no MCP registration) ✓ Codex → Claude: .codex/config.toml has claude-code registered ✓ agy → Claude: .agents/mcp_config.json has claude-code when the projection is available ✓ Project config: .cc-suite.md written ({focus}, {depth}, effort={effort}) Next steps: Edit AGENTS.md to add project-specific conventions Run /cc-suite:audit-fix to test the full cycle Type /cc-suite:diagnose in Claude Code (or use the diagnose skill here) to verify health at any time Commit AGENTS.md, .cc-suite.md, .mcp.json to share with your team ``` ## Example Invocations <example> Context: A brand-new project needs cc-suite set up from inside the conversation. user: "Set cc-suite up for this project and walk me through the choices." assistant: "I'll run the init skill — it detects the stack, asks the setup questions, then bootstraps AGENTS.md and the MCP registrations." </example> <example> Context: The repo already carries an AGENTS.md written for another tool. user: "There's already an AGENTS.md here from Codex — can cc-suite still work?" assistant: "I'll use init, which detects the existing AGENTS.md and adds the cc-suite bridge artifacts around it rather than overwriting it." </example>
View on GitHub