You're reading this because you have Coco, you have a Snowflake project, and you've decided that unstructured AI development has a cost you'd rather not keep paying. Good. This document gets you from zero to a fully initialized CocoPlus project in under ten minutes.
The only irreversible decision you need to make upfront is which project to apply it to. Everything else is undoable, configurable, or skippable.
Prerequisites
Before you begin:
Coco CLI — Snowflake Cortex Code CLI installed and connected to a Snowflake account. Run cortex --version to verify. If Coco isn't installed, start with the Snowflake Cortex Code documentation before coming back here.
Git — Your project directory must be a git repository. CocoPlus is tightly coupled to git — lifecycle phase commits, worktree isolation for parallel builds, rollback by commit hash. If your project isn't in git, run git init && git commit --allow-empty -m "init" before proceeding.
CocoPlus plugin installed — Install the CocoPlus plugin from GitHub:
cortex skill add Snowflake-Labs/cocoplus
Known Limitation: The CocoPlus repo uses .skill.md files which may not be auto-discovered by all Cortex Code versions. If the skill add command reports "No valid skills found", use the --plugin-dir flag when launching Cortex Code instead:
cortex --plugin-dir Snowflake-Labs/cocoplus
Verify the installation:
cortex plugins list
# cocoplus should appear in the output with status: active
That's the full list. CocoPlus adds no external services, no databases, no background processes. If the plugin is installed and Coco is connected to Snowflake, you have everything.
Initialize Your Project
Navigate to the root of your project directory — the same directory where your .git/ folder lives. Then run:
$pod init
This creates the .cocoplus/ directory and writes the initial state files that every CocoPlus feature reads from and writes to. You'll be prompted for a project name and a brief description. Give it something meaningful — this shows up in every session's context header and in every git commit CocoPlus creates.
What $pod init does:
- Creates
.cocoplus/with the complete directory structure (lifecycle artifacts, memory files, monitor configs, pattern library, fleet workspace) - Writes
AGENTS.md— the hot memory layer that Coco loads automatically at the start of every session - Writes
project.mdwith your project metadata - Initializes
flow.jsonas an empty pipeline template - Sets default safety configuration (normal mode, protecting schemas containing "PROD", "PRODUCTION", or "LIVE")
- Creates the initial git commit:
feat: initialize CocoPod project structure
If the directory already has a CocoPlus initialization, $pod init will refuse with a clear message. You can inspect the existing state with $pod status or resume context with $pod resume instead.
If you're working in a monorepo or shared codebase, initialize CocoPlus at the subdirectory level for the specific data workstream you're building, not at the repo root. CocoPlus's state is project-scoped.
Activate All Features
With the pod initialized, activate the full feature set:
$cocoplus on
This is the single command that enables everything CocoPlus has to offer. It creates mode flag files in .cocoplus/modes/ for each feature, immediately runs an Environment Inspector scan in the background, updates AGENTS.md to show FULL ASSIST MODE: ACTIVE, and creates a git commit marking the activation.
After running it, you'll see a confirmation listing every activated feature:
✓ Memory Engine — on
✓ Environment Inspector — auto (background scan starting)
✓ Safety Gate — normal
✓ Code Quality Advisor — on
✓ Context Mode — on
✓ CocoMeter — on
✓ Full Assist Mode — ACTIVE
Environment Inspector is scanning in the background.
Run $pod status in a moment to see results.
What $cocoplus on does not activate:
- The CocoBrew lifecycle phases — you start those yourself with
$specwhen you're ready to begin a specific workstream - CocoSpark — brainstorming is always an explicit choice, never automatic
- CocoFleet — multi-process orchestration requires deliberate setup with a fleet manifest
These are intentional. A tool that starts things without you is a tool you can't trust.
Verify Your Setup
Once the Environment Inspector background scan has had a moment to complete:
$pod status
This is your dashboard. It reads from .cocoplus/ and reports everything:
- Current CocoBrew phase (initially: none — you haven't started a lifecycle yet)
- Active feature modes and their states
- Environment Inspector snapshot — schemas, tables, views, Cortex objects it found in your connected Snowflake account
- Safety Gate current mode (normal)
- CocoMeter session tracking (minimal — you just started)
- CocoGrove patterns (empty — you haven't built anything yet)
If the Environment Inspector found anything notable — schema anomalies, objects without documentation, resource monitors not configured — it will surface them here. This is your first look at your Snowflake environment through CocoPlus's eyes.
Understand the Personas Available to You
Before you begin any work, it's worth knowing who you can call:
$personas
This lists all eight specialist agents with their domains, default models, and invocation modes. You don't need to memorize them — but understanding who handles what prevents you from asking the wrong expert the right question.
Quick reference:
$de— Data Engineer — schema design, SQL, stored procedures$ae— Analytics Engineer — semantic models, transformations$ds— Data Scientist — notebooks, ML, Cortex AI functions$da— Data Analyst — query writing, exploration$bi— BI Analyst — dashboards, semantic layer$dpm— Data Product Manager — requirements, documentation (plan mode only)$dst— Data Steward — governance, data quality (plan mode only)$cdo— Chief Data Officer — strategic architecture (plan mode only, uses Opus)
The three plan-mode personas advise; they don't execute. If you ask $dpm to write SQL, it will explain why that's not its job and suggest who you should ask instead.
Know Your Dashboard Commands
These four commands are your ongoing operational layer — you'll use them throughout every project, not just during setup:
$pod status — Full state report. Run this at the start of any session to orient yourself, or anytime you want to see what CocoPlus has captured.
$pod resume — Designed for returning developers. If you've been away from the project for a day, a week, a month — run this first. It reads the current state and produces a focused narrative: where you left off, what was completed last session, what blocking items remain, and what the immediate next action is.
$meter — Token and cost summary for the current session. Useful to run after expensive operations (a CocoHarvest parallel build, a SecondEye critique run) to understand what you just consumed.
$cocoplus inspect — Run the Environment Inspector manually for an on-demand Snowflake environment scan. Add --schema <name> to limit the scan to a specific schema, or --full for extended metadata including column-level statistics.
Your First Actual Work
CocoPlus is initialized. Features are active. Your Snowflake environment is scanned. You're ready to build something.
The right next command is:
$spec
This opens the Spec phase of CocoBrew — a structured dialogue that helps you articulate what you're actually building before a single line of SQL is written. The spec is not bureaucracy. It is the mirror that shows you your own assumptions.
If you already have a clear picture of what you're building and want to explore alternatives before committing to a direction, start with:
$cocoplus spark [topic]
This activates CocoSpark — a divergent thinking mode that generates multiple approaches and raises the questions you may not have thought to ask. CocoSpark output is explicitly marked as exploration and never flows automatically into your spec. What you take from it is your decision.
When you're ready to commit to a direction, $spec is always the next step.
If Something Goes Wrong
$pod init fails — "CocoPlus already initialized" — This is a warning, not an error. Your pod already exists. Run $pod status to see its current state. If you genuinely want to start fresh, remove .cocoplus/ manually and re-run, but be aware this discards all existing state.
Command not recognized — CocoPlus commands require the plugin to be active in your Coco session. If you see "command not found" on any / command, verify the plugin is installed with coco plugins list.
Safety Gate blocking a command you intended — The default safety mode (normal) warns on potentially destructive SQL but doesn't block it. If you're in strict mode and getting hard blocks on operations you need, run $safety normal to reduce protection level. Never use $safety off in an environment with production data.
Environment Inspector shows unexpected objects or missing grants — This is the inspector doing its job. Review the findings in $pod status. You may want to share them with your team or address them before beginning build work.
Setup is not overhead. Setup is the first act of professional intent — the moment you decide to build deliberately instead of by accident.