peec-agent — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited peec-agent (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
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.
Pick the single next move for a Peec AI project. One decision, one skill handoff, one measurable 4-week target. Nothing else.
project_id — resolve via mcp__peec-ai__list_projects if unknownfocus — force a specific gap type (taxonomy|cluster|content|citation|learning)One markdown document matching the schema in §5, plus one appended entry in <project>/growth_loop/decisions_log.md. Nothing else is produced.
Do not use when:
peec-setup first ┌─────────────────────────────────────────────────┐
│ │
│ 1. UNDERSTAND │
│ peec-setup (prompts + taxonomy) │
│ peec-content-intel (demand signals) │
│ ↓ │
│ 2. ANALYZE │
│ peec-cluster (zones) │
│ peec-content-intel (source intel) │
│ ↓ │
│ 3. DECIDE │
│ → THIS SKILL: one zone + one action │
│ ↓ │
│ 4. EXECUTE │
│ content-write (new content) │
│ peec-outreach (external citations) │
│ ↓ │
│ 5. LEARN │
│ peec-report │
│ ↓ │
└───────→ feedback into step 1 ────────────────────┘One full cycle: 1 week for active projects, 4 weeks for maintenance.
Per _shared/SETUP_STATE.md, this skill refuses to run without a completed setup. Before anything else:
Read <project>/growth_loop/setup_state.json
If file missing OR completed_at missing OR phases_completed lacks
{competitors, prompts, topics, tags}:
STOP. Output exactly:
"No Peec setup state found at <project>/growth_loop/setup_state.json.
Run /peec-setup first."
Do not bootstrap setup yourself — that is peec-setup's job.
If completed_at older than 90 days: WARN once, continue.
Use peec_project_id from state — do not call list_projects again.The orchestrator does not duplicate diagnostic logic. It always invokes /peec-checkup as its first substantive step and uses the resulting report as the input for gap detection in §2. This guarantees:
# Step 1a — orchestrate the read-only diagnostic
Invoke /peec-checkup
inputs:
project_id = setup_state.peec_project_id
date_range = last 28 days (auto-shrink if project younger)
top_n = 8
output: <project>/checkups/YYYY-MM-DD_checkup.md (skill writes this)
# Step 1b — read auxiliary history that checkup doesn't cover
Read: <project>/growth_loop/*_learnings.json (may not exist)
Read: <project>/growth_loop/decisions_log.md (may not exist)
Read: <project>/outreach/*_outreach_log.md (may not exist)
# Step 1c — cross-project priors (optional, if SkillMind MCP is available)
mcp__skillmind__recall(query="<likely gap type>", k=5, filter_tags=["peec"])If /peec-checkup reports days_with_data < 7: STOP at Tier 1 below — do not force action. If no history exists: say so plainly ("first run — deciding from checkup + structural data only, next cycle will be sharper") and continue. If SkillMind is not installed, skip the recall step — patterns are a bonus prior, not a requirement.
Inputs come from the §1 checkup report — read its sections in this order:
| Tier | Gap | Signal (from checkup) | Handoff |
|---|---|---|---|
| 1 | Data | days_with_data < 7 in checkup §0 | STOP. Wait, do not force action. |
| 2 | Setup quality | checkup §1 Setup Health < 80% OR any P0 finding | peec-setup (audit or partial:<phase>) |
| 3 | Taxonomy mass | <20 active prompts OR any funnel stage <2 prompts (checkup §0) | peec-setup partial:prompts |
| 4 | Cluster | 20+ prompts, no strategic zone:* tags (checkup §0 tags list) | peec-cluster |
| 5 | Content | Zones exist, but a losing hero prompt (checkup §2) has no own asset | content-write (external) or peec-content-intel for the brief |
| 6 | Citation | Hero content exists, source diversity < 5 (checkup §2) OR editorial/ugc actions queued | peec-outreach |
| 7 | Learning | Loop has been running 4+ weeks, no growth_loop/*_report.md files | peec-report |
Rule: Exactly one tier per cycle. If two tiers look tied, pick the lower number. Parallel work across tiers means the tiers weren't ranked properly — fix the ranking.
Override rule: if checkup §3 ranks a #1 improvement that maps to a higher-tier handoff than the gap detection picked, prefer the checkup's #1 — its leverage scoring (impact × actionability × strategic_fit) already accounts for the same axes. Log the override in §6.
The decision names one skill, one scope, one 4-week metric with a concrete number. No "and also", no "optionally". If the measurable change wouldn't happen in 4 weeks, the metric is wrong — rewrite it.
Invoke the target skill with parameters pre-filled. Do not recommend — execute. The user can override at any point, but default is execution.
Append to <project>/growth_loop/decisions_log.md using the schema in §6. Every next run reads this file first — the log IS the memory.
# Growth Agent — <project name> (<YYYY-MM-DD>)
## Decision
<One sentence. One verb. One object. One deadline.>
## Why this, now
<3–5 sentences. Causal chain: signal → implication → therefore this action.>
## How
Run <skill-name> with:
<param>: <value>
<param>: <value>
## Measurable in 4 weeks
<Specific metric + number. "Visibility on prompt pr_xxx: 0% → ≥15%."
If this doesn't move, the decision was wrong.>
## Not doing now (explicit skip)
- <option>: skipped because <reason>
- <option>: skipped because <reason>
## Next checkpoint
<YYYY-MM-DD> — re-run agent, measure the metric above.## <YYYY-MM-DD> — <skill-name>
Checkup ref: <path to YYYY-MM-DD_checkup.md> # always present from this version on
Signal: <what in the checkup triggered this>
Tier picked: <1–7> · Override of detected tier? <no | yes: detected=N, override=M>
Decision: <one sentence>
Params: <key=value, key=value>
Executed: ✓ | ✗ <reason>
Output: <one line on what came out>
Checkpoint: <YYYY-MM-DD> — metric: <name + target>| Intent | Skill |
|---|---|
| Setup / taxonomy / competitors | @peec-setup |
| Strategic zones from flat prompt set | @peec-cluster |
| Source / demand research for a prompt | @peec-content-intel |
| New article (handled outside this repo) | @content-write |
| External citations & outreach | @peec-outreach |
| Weekly / monthly loop close | @peec-report |
# Growth Agent — Antonio Blago (2026-04-19)
## Decision
Build the content zone "KI-SEO Retainer Decision" by 2026-04-26 with one hero article.
## Why this, now
47 Peec prompts are active, but the Decision stage is covered by only 3 weak prompts,
2 of which sit at 0% visibility. The Retainer is the main revenue product — Decision
must be the strongest zone, is currently the weakest. No other tier resolves this gap.
## How
Run content-write with:
project_id: or_bf5b4228-7344-4f71-b231-c4396a7775f6
focus_keyword: "KI-SEO Retainer"
page_type: blog
language: de # from setup_state.prompt_language
target_country: DE # from setup_state.target_country
## Measurable in 4 weeks
Visibility on pr_a38381d4: 0% → ≥15%. Aggregate visibility of zone
"KI-SEO Retainer Decision": → >10%.
## Not doing now (explicit skip)
- New Awareness cluster ("Was ist GEO?") — 4 prompts already cover it, smaller gap.
- Citation outreach — no substance to pitch until hero content is live.
## Next checkpoint
2026-05-17 — measure visibility trend for pr_a38381d4 + zone tag.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.