| name | peec-start |
| description | Single-entry slash command for the Peec AI growth loop. Detects whether the current working directory has a setup_state.json, what state it's in (missing / fresh / stale / very stale / brownfield-importable), and hands off to the right skill — /peec-setup (full or import or audit) or /peec-agent. Use when the user says "/peec-start", "what should I do for Peec", "is my setup done", or any opening question about a Peec AI project where the next move is unclear. |
| user-invocable | true |
Start Peec
Role
The single entry point for any Peec AI growth-loop session. Reads state, decides which skill is responsible for the next move, hands off. No content production, no analysis — pure dispatch.
Input
None. The skill resolves everything from <cwd>/growth_loop/setup_state.json and (if missing) live Peec calls.
Output
A 4–8 line decision block, then exactly one skill invocation as the next step. Nothing more.
When to use
- Opening a Peec growth session and unsure where to start
- Periodic ritual ("what's the move this week?")
- After onboarding a new project that already has data in Peec
- When a hook injects
=== PEEC PROJECT DETECTED === context
Do not use when:
- The user already named a specific skill (
/peec-agent, /peec-content-intel, etc.) — call that directly
- The user is mid-execution of another skill — don't interrupt
Pipeline
1. Read local state
Read <project>/growth_loop/setup_state.json
<project> = $CLAUDE_PROJECT_DIR env var if set, else cwd. Walk up at most 2 parents looking for growth_loop/setup_state.json (mirrors hooks/peec-detect.py behavior).
2. Branch — no state file
If file missing, run a single parallel Peec read:
mcp__peec-ai__list_projects
mcp__peec-ai__list_brands(project_id) # only after project resolved
mcp__peec-ai__list_prompts(project_id, limit=5)
mcp__peec-ai__list_topics(project_id)
Then:
| Live Peec content | Decision |
|---|
| Empty (≤2 brands AND ≤4 prompts AND ≤0 topics) | Hand off to /peec-setup (mode = full, greenfield) |
| Populated (≥3 brands OR ≥5 prompts OR ≥1 topic) | Hand off to /peec-setup (mode = import, brownfield — see _shared/SETUP_STATE.md §import mode) |
| Peec MCP unreachable / no projects | STOP. Output: "No Peec MCP connection. Add it via claude mcp add peec-ai --transport streamable-http https://api.peec.ai/mcp then retry." |
3. Branch — state file present
Compute age_days = now - completed_at.
User-intent split: if the user opened with an observational phrase ("wo stehe ich?", "wie ist mein status?", "checkup", "was ist der stand?", "show me the picture") → route to /peec-checkup regardless of age. The agent path is for deciding the next move; checkup is for seeing the picture. They are complementary.
Otherwise (action-oriented intent — "was als nächstes?", "what's next", default /peec-start with no qualifier):
| Age | Decision |
|---|
| < 7 days, no actions logged | Hand off to /peec-checkup — too little data for /peec-agent decisions, but checkup still surfaces setup health + early signals. |
| 7–30 days | Hand off to /peec-agent (which itself orchestrates /peec-checkup first) |
| 30–90 days | Hand off to /peec-agent; mention "consider /peec-setup audit if cluster recommendations look thin" |
| > 90 days | Hand off to /peec-setup (mode = audit). Do not skip straight to growth-agent on stale taxonomy. |
If phases_completed is missing one of {competitors, prompts, topics, tags}, override the above and hand off to /peec-setup partial:<missing-phase> first.
4. Output schema
# Start Peec — <YYYY-MM-DD>
State: <found|missing|brownfield>
Project: <domain> (peec_project_id=<id>)
Locale: country=<XX> · language=<xx>
Setup age: <N days> (<fresh|stale|very stale|n/a>)
Phases: <list> · missing: <list>
Decision: <one sentence with the chosen skill + scope>
Why: <one sentence — which signal in the state caused this branch>
Next: <invoking the chosen skill now>
Then immediately invoke that skill. Do not wait for confirmation unless the chosen branch is destructive (/peec-setup in full mode on a populated Peec project — that always confirms once).
Why this skill exists
Three frictions kept biting:
- New users open a Peec project, don't know which of 7 skills to call first.
- The hook (
hooks/peec-detect.py) needs a manual counterpart for users who turned hooks off.
- The orchestrator (
/peec-agent) refuses to run without a setup state — so first-timers hit a dead end.
peec-start fixes all three by being the single safe entry point that always picks a defensible next step.
Relationship to other skills
/peec-start
│
├── no state, Peec empty → /peec-setup (full)
├── no state, Peec populated → /peec-setup (import)
├── state present, < 90 days → /peec-agent
├── state present, > 90 days → /peec-setup (audit)
└── state has missing phases → /peec-setup (partial:<phase>)
Never produces deliverables itself. Never bypasses the _shared/SETUP_STATE.md protocol — uses the same age thresholds and the same import-mode trigger as Phase 0 of peec-setup, so the dispatcher and the orchestrator agree on what "fresh" means.
Guardrails
- Never call
mcp__peec-ai__create_* or mcp__peec-ai__delete_*. Dispatch only.
- Never write
setup_state.json. Only /peec-setup writes it.
- Never silently default
target_country / prompt_language. If state is missing both AND user hasn't said, ASK once before handoff.
- Never invoke more than one downstream skill per
/peec-start run.