peec-start — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited peec-start (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
None. The skill resolves everything from <cwd>/growth_loop/setup_state.json and (if missing) live Peec calls.
A 4–8 line decision block, then exactly one skill invocation as the next step. Nothing more.
=== PEEC PROJECT DETECTED === contextDo not use when:
/peec-agent, /peec-content-intel, etc.) — call that directlyRead <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).
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." |
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.
# 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).
Three frictions kept biting:
hooks/peec-detect.py) needs a manual counterpart for users who turned hooks off./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.
/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.
mcp__peec-ai__create_* or mcp__peec-ai__delete_*. Dispatch only.setup_state.json. Only /peec-setup writes it.target_country / prompt_language. If state is missing both AND user hasn't said, ASK once before handoff./peec-start run.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.