peec-learn — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited peec-learn (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.
Turn project-local Peec outputs into cross-project patterns. Each run does two things:
This is the memory layer beneath peec-report: that skill persists learnings for the project, this skill promotes them across projects.
For write mode:
project_id — Peec project the artifact came fromsource_skill — which skill produced the artifact (peec-agent, peec-cluster, peec-outreach, peec-content-intel, peec-report)artifact_path or artifact_content — the file or inline content to extract frommax_patterns — default 3For read mode:
query — what the caller wants to recall (e.g. "editorial outreach DACH high citation rate")project_id — narrow to patterns originally written for this projectsource_skill — narrow to patterns originally written by this skillk — default 5Write mode: JSON list of {pattern_id, title, tags, summary} for each persisted pattern, plus a one-line confirmation ("added 3 patterns · skipped 1 dupe").
Read mode: ranked list of {pattern_id, title, summary, provenance: {project_id, source_skill, date}, score}. Empty list is a valid result — say so plainly.
Neither mode produces dashboards.
Write:
peec-report emits learnings.jsonpeec-outreach batch closes (week-end ritual)peec-cluster ships a zone map (zones become reusable taxonomy patterns)peec-agent logs a decision whose 4-week metric came in (attribution is known)peec-content-intel ships a brief that later won its prompt (write the retrospective pattern, not the brief itself)Read:
peec-agent Phase 1 (state read) — recall patterns tagged with the current gap typepeec-outreach — recall domain-class patterns with high historical citation gainpeec-cluster — recall zone-shape patterns that worked in adjacent projectsDo not use when:
list_chats output) — needs to be interpreted first<project>/growth_loop/patterns.md and flag the skip in the outputRead(artifact_path)
# or accept inline artifact_contentSupported artifact shapes:
decisions_log.md entry (single decision block)learnings.json (winners / losers / surprises)brief.md with a later-known outcome (prompt visibility moved from X → Y)outreach_log.md row with status=citation_live and a measured liftzones.md with ≥4 weeks of tag-level visibility dataAsk: what would transfer to another project? Good patterns are:
Anti-patterns (reject):
Target: 1–3 patterns per artifact. If you can only find 1, persist 1. Zero is a valid result.
mcp__skillmind__recall(query=<pattern_title>, k=5)If any hit has ≥0.85 semantic similarity to the new candidate:
mcp__skillmind__update_memory (don't re-add)contradicts:<existing_pattern_id>mcp__skillmind__add_pattern(
title="<≤80 chars, causal phrasing>",
body="<structured pattern, schema below>",
tags=["peec", "<source_skill>", "<gap_type>", "<funnel_stage>", "<market>"]
)Required tags every pattern carries:
peec (project family)source:<skill-name> (which skill observed it)project:<slug> (anonymized if needed)date:<YYYY-MM-DD> (observation date)gap:taxonomy / funnel:decision / channel:reddit / lever:editorial / ...)Return the list of persisted patterns. If a pattern was skipped as a duplicate, say which existing pattern it merged into.
mcp__skillmind__recall(
query=<query>,
k=<k, default 5>,
filter_tags=[<optional narrowing tags>]
)Drop hits whose project: tag matches project_id if the caller wants cross-project priors only (supplied via a exclude_own=true flag). Default: include own project's patterns.
Score = semantic_similarity × recency_decay × evidence_weight
recency_decay = 0.5 ^ (months_since / 6) — a 6-month-old pattern is worth halfevidence_weight = 1.0 for single-project patterns, 1.5 for patterns with ≥2 projects of evidence (consolidated)Return top-k as structured list. The caller (usually peec-agent) uses them as priors in its Decision Framework.
## <causal title — ≤80 chars>
**Claim:** <one sentence, causal, falsifiable>
**Evidence:**
- <project, date>: <observation with a number>
- <project, date>: <observation with a number>
- ...
**Transfer conditions:**
- Works when: <market / funnel stage / offer type>
- Does NOT transfer when: <named conditions>
**Counter-evidence (if any):**
- <project, date>: <what contradicted it>
**Related patterns:** <pattern_id>, <pattern_id>## Editorial citations on DACH micro-publications gain 3× faster than Reddit
**Claim:** For DACH service-business projects, editorial-pitch-wins at t3n / OMR /
fachportal-niveau produce citation lift inside 10–14 days; reddit-thread-answers
typically need 3–6 weeks to surface in LLM training signal — if they surface at all.
**Evidence:**
- project:antonioblago, 2026-04: 2 editorial wins → 5 citations in 10d, 1 subreddit
answer → 0 citations in 30d
- project:paroc, 2026-03: 1 t3n contribution → 4 citations in 8d
**Transfer conditions:**
- Works when: DACH market, B2B service offer, target domain DR 40–60
- Does NOT transfer when: consumer B2C (reddit is faster there)
**Counter-evidence:** none yet.
**Related patterns:** `pat_b12a` (reddit threads need authoritative first-5-sentences)Tags: peec, source:peec-outreach, project:antonioblago, project:paroc, date:2026-04-22, gap:citation, channel:editorial, market:dach, funnel:decision.
| Step | Tool |
|---|---|
| Persist a pattern | mcp__skillmind__add_pattern |
| Update an existing pattern | mcp__skillmind__update_memory |
| Recall patterns by query | mcp__skillmind__recall |
| List all peec-tagged patterns | mcp__skillmind__list_patterns (filter tag=peec) |
| Merge near-duplicates | mcp__skillmind__consolidate |
| Export to obsidian for backup | mcp__skillmind__export_obsidian |
peec-agent Phase 1 → read mode with query=<current gap type> to load priors before decidingpeec-report Phase 7 → write mode for each entry in learnings.json.winners[] and .losers[] with source_skill="peec-report"peec-outreach Phase 7 (post 4-week measurement) → write mode for each status=citation_live + measured lift rowpeec-cluster Phase 7 (after zone tags exist 4+ weeks) → write mode for zones whose tag:zone:* visibility moved >10ppWrite mode is complete when:
Read mode is complete when:
<project>/growth_loop/patterns.md and flag the skip; never fabricate persistence~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.