Peec start
Production-tested Claude Code skills for Peec AI brand-visibility tracking in LLM search (ChatGPT, Perplexity, Gemini, Google AI Overviews). Includes ai-visibility-setup (9-phase project configuration) and peec-content-intel (content gap analysis + brief generation).
npx -y skills add AntonioBlago/peec-ai-skills --skill peec-startAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
5.7 KB, as published. Nobody here has run it
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_*ormcp__peec-ai__delete_*. Dispatch only. - Never write
setup_state.json. Only/peec-setupwrites 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-startrun.