- 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