Skip to content
Back to skills

Peec Learn

ASecurity

Cross-project pattern layer for the Peec AI growth loop. After any Peec skill completes (or after peec-report closes a cycle), extract 1–3 concrete patterns from the output and persist them to SkillMind via mcp__skillmind__add_pattern / remember. On the next orchestrator run, recall matching patterns and pass them in as priors — so lessons learned on project A inform decisions on project B. Use when a Peec skill has produced an artifact (brief, zone map, outreach log, decision, learnings.json...

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 26, 2026
datagorails

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add AntonioBlago/peec-ai-skills --skill peec-learn --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Peec Learn?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Peec Learn
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/antonioblago-peec-learn/badge)](https://www.skillsdirectory.com/skills/antonioblago-peec-learn)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: peec-learn
description: Cross-project pattern layer for the Peec AI growth loop. After any Peec skill completes (or after peec-report closes a cycle), extract 1–3 concrete patterns from the output and persist them to SkillMind via mcp__skillmind__add_pattern / remember. On the next orchestrator run, recall matching patterns and pass them in as priors — so lessons learned on project A inform decisions on project B. Use when a Peec skill has produced an artifact (brief, zone map, outreach log, decision, learnings.json) worth remembering.
user-invocable: true
---

# SkillMind Learner

## Role
Turn project-local Peec outputs into cross-project patterns. Each run does two things:

1. **Write** — extract 1–3 patterns from a just-produced artifact (decision, brief, zone map, outreach log, learnings.json) and store them in SkillMind with tags so they can be retrieved later.
2. **Read** — on request, recall patterns matching a project / skill / gap type and hand them back as priors for the next orchestrator cycle.

This is the memory layer beneath `peec-report`: that skill persists learnings *for the project*, this skill promotes them *across projects*.

## Input

For **write** mode:
- `project_id` — Peec project the artifact came from
- `source_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 from
- optional `max_patterns` — default 3

For **read** mode:
- `query` — what the caller wants to recall (e.g. `"editorial outreach DACH high citation rate"`)
- optional `project_id` — narrow to patterns originally written for this project
- optional `source_skill` — narrow to patterns originally written by this skill
- optional `k` — default 5

## Output

Write 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.

## When to use

**Write:**
- Right after `peec-report` emits `learnings.json`
- After a `peec-outreach` batch closes (week-end ritual)
- After `peec-cluster` ships a zone map (zones become reusable taxonomy patterns)
- After `peec-agent` logs a decision whose 4-week metric came in (attribution is known)
- After `peec-content-intel` ships a brief that later won its prompt (write the *retrospective* pattern, not the brief itself)

**Read:**
- At the top of `peec-agent` Phase 1 (state read) — recall patterns tagged with the current gap type
- At the start of `peec-outreach` — recall domain-class patterns with high historical citation gain
- At the start of `peec-cluster` — recall zone-shape patterns that worked in adjacent projects

Do not use when:
- The artifact is <24h old and no outcome is measured yet (you'd persist speculation, not a pattern)
- The artifact is a raw data dump (`list_chats` output) — needs to be interpreted first
- SkillMind MCP is unavailable — fall back to appending a line to `<project>/growth_loop/patterns.md` and flag the skip in the output

---

## Pipeline — write mode

### 1. Read artifact

```
Read(artifact_path)
# or accept inline artifact_content
```

Supported 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 lift
- `zones.md` with ≥4 weeks of tag-level visibility data

### 2. Extract candidate patterns

Ask: what would transfer to another project? Good patterns are:
- **Causal** — "<input pattern> → <measurable outcome>", not "<thing happened>"
- **Transferable** — not tied to a single brand / client
- **Falsifiable** — someone else applying this could confirm or refute it

Anti-patterns (reject):
- Project-specific trivia ("antonioblago.de's homepage")
- Restatements of Peec docs ("get_actions has a scope parameter")
- Generic SEO wisdom ("write good content")

Target: 1–3 patterns per artifact. If you can only find 1, persist 1. Zero is a valid result.

### 3. Check for duplicates

```
mcp__skillmind__recall(query=<pattern_title>, k=5)
```

If any hit has ≥0.85 semantic similarity to the new candidate:
- Same claim + stronger evidence → `mcp__skillmind__update_memory` (don't re-add)
- Same claim + weaker evidence → skip
- Contradicting claim → persist anyway, tag `contradicts:<existing_pattern_id>`

### 4. Persist

```
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)
- ≥1 semantic tag (`gap:taxonomy` / `funnel:decision` / `channel:reddit` / `lever:editorial` / ...)

### 5. Confirm

Return the list of persisted patterns. If a pattern was skipped as a duplicate, say which existing pattern it merged into.

---

## Pipeline — read mode

### 1. Query

```
mcp__skillmind__recall(
  query=<query>,
  k=<k, default 5>,
  filter_tags=[<optional narrowing tags>]
)
```

### 2. Filter by provenance (optional)

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.

### 3. Rank

Score = `semantic_similarity × recency_decay × evidence_weight`

- `recency_decay` = `0.5 ^ (months_since / 6)` — a 6-month-old pattern is worth half
- `evidence_weight` = `1.0` for single-project patterns, `1.5` for patterns with ≥2 projects of evidence (consolidated)

### 4. Return

Return top-k as structured list. The caller (usually `peec-agent`) uses them as priors in its Decision Framework.

---

## Pattern schema

```markdown
## <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>
```

## Example pattern (concrete)

```markdown
## 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`.

---

## Quick reference

| 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` |

---

## Handoff points (where other skills call this one)

- `peec-agent` Phase 1 → **read mode** with `query=<current gap type>` to load priors before deciding
- `peec-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 row
- `peec-cluster` Phase 7 (after zone tags exist 4+ weeks) → **write mode** for zones whose `tag:zone:*` visibility moved >10pp

---

## Done criteria (self-check before returning)

Write mode is complete when:

1. 0–3 patterns persisted (zero is valid — don't force-fill)
2. Every persisted pattern has all required tags (peec, source, project, date, ≥1 semantic)
3. Duplicates are either skipped or consolidated, never silently doubled
4. Evidence references a measured number — no pattern is persisted on vibes

Read mode is complete when:

1. Top-k returned with scores (semantic × recency × evidence)
2. Empty result is announced plainly ("no matching patterns") — do not fabricate
3. Each result carries provenance (project + source_skill + date)

---

## Guardrails (do not do these)

- Do not persist patterns from artifacts without a measured outcome — a brief that hasn't won its prompt yet is speculation, not a pattern
- Do not persist generic SEO advice — only claims grounded in a specific Peec-measured observation
- Do not persist more than 3 patterns per artifact — if a run produces 10 "learnings," most are noise
- Do not silently merge contradicting patterns — contradictions are information; tag them and keep both
- Do not recall without provenance — every returned pattern must say which project + skill + date it came from, or the caller can't judge transfer fit
- Do not run in write mode on <24h-old artifacts — measurement window hasn't closed
- Do not run if SkillMind MCP is unavailable — fall back to appending to `<project>/growth_loop/patterns.md` and flag the skip; never fabricate persistence

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.