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):
bashPLUGIN_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: readscripts.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, elsenpm test.pytest.ini/conftest.py→pytestgo.modwith*_test.gofiles →go test ./...Cargo.toml→cargo testGemfile+spec/→bundle exec rspec- Nothing reliable → write
unknownrather than guessing.
Step 3: Discover the current Codex default
Run the shared Codex preflight before asking for configuration:
bashbash "${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):
- Audit focus — balanced / security-first / performance-first / quality-first (default: balanced)
- Audit depth — mini (5 dimensions, faster) / full (9 dimensions) (default: mini)
- Model policy — track latest (default; currently resolves to
{default_model}, never goes stale) / pin{default_model}(fixed until the user edits.cc-suite.md) - Reasoning effort — offer the levels from the selected per-model
reasoning_effortslist (default:highwhen 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
bashbash "${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
bashbash "${PLUGIN_ROOT}/scripts/bridge_skills.sh"
Step 8: Mirror the project MCP surface
bashbash "${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
bashbash "${PLUGIN_ROOT}/scripts/mcp_claude.sh"
Step 10: Final status
bashbash "${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


