learn-from-projects

Generated source view for the actual executable productivity/learn-from-projects skill. The durable routing article is Agent Operations Skills. Source: skills/productivity/learn-from-projects/SKILL.md

Runtime Source

Field Value
Category productivity
Origin personal
Slug learn-from-projects
Source slug learn-from-projects
Family Agent Operations Skills
Source skills/productivity/learn-from-projects/SKILL.md

Bundled Resources

No bundled resource files.

Description

Mine recent agent transcripts across ALL of Kevin's projects (not just the wiki) into candidate wiki learnings, behind a candidate→codify promotion gate. Use when Kevin says "harvest learnings", "what have I learned", "mine my sessions", "cross-project learnings", "pour learnings into the brain", or when the cross-project-learning automation runs. Turns the second brain into a system that compounds from every repo, every agent.

Skill Source

---
name: learn-from-projects
description: Mine recent agent transcripts across ALL of Kevin's projects (not just the wiki) into candidate wiki learnings, behind a candidate→codify promotion gate. Use when Kevin says "harvest learnings", "what have I learned", "mine my sessions", "cross-project learnings", "pour learnings into the brain", or when the cross-project-learning automation runs. Turns the second brain into a system that compounds from every repo, every agent.
origin: personal
source_slug: learn-from-projects
---

# learn-from-projects

The brain must compound from **every** project Kevin works in, not just the wiki. Agent
transcripts already land per-project under `~/.cursor/projects/<encoded>/agent-transcripts/`.
This skill mines them into **candidate** wiki pages, then a review gate promotes the good ones
into durable knowledge. Procedural-memory principle: **candidates are suggestions; codified
pages are law** — never silently rewrite the brain's own rules from raw transcript noise.

## Pipeline

```
harvest (collect) → extract (this skill) → wiki/inbox/learnings/ (candidates) → review → codify (law)
```

1. **Collect** — `npm run harvest:learnings` (or `--days N`). Writes a ranked digest to
   `outputs/learnings/<date>-digest.md`: projects by recent activity + transcript paths.
2. **Extract** — for the top-ranked projects in the digest (start with 2-3 — test-before-bulk):
   - Read a sample of recent `*.jsonl` transcripts (newest first). Each line is a chat event.
   - Mine for **durable, reusable** signal only:
     - **Patterns / conventions** that recurred (→ candidate for `wiki/concepts/` or a rule)
     - **Decisions** with rationale (→ `wiki/decisions/`)
     - **Skill gaps** — a workflow done by hand 2+ times across sessions/projects (→ a new skill; this is the no-one-off-work rule applied across projects)
     - **Tool/pattern discoveries** worth a tool page or SKILL-RESOLVER ranking change
     - **Postmortems** — a bug + fix + lesson (→ `wiki/postmortems/`)
   - Ignore one-off task chatter, secrets, and anything project-private Kevin wouldn't want compiled.
3. **Stage** — write each candidate to `wiki/inbox/learnings/<slug>.md` with frontmatter
   `status: candidate`, `source_project:`, `evidence:` (transcript refs), `proposed_target:`
   (where it should be codified). One candidate per file. Cite specifics; no vague "the agent did X".
4. **Gate (review → codify)** — present the candidates to Kevin. On approval, MOVE each to its
   `proposed_target` (concepts/decisions/skills/postmortems/tool page), set `status: codified`,
   wire `[[backlinks]]`, update `wiki/_index.md` + `wiki/log.md`, and `qmd update && qmd embed`.
   Discard the rest. Never auto-promote across the gate without review.

## Candidate file shape

```markdown
---
title: <concise learning title>
type: candidate
status: candidate
created: YYYY-MM-DD
source_project: <repo/label from the digest>
evidence: ["~/.cursor/projects/<enc>/agent-transcripts/<uuid>/...jsonl"]
proposed_target: concepts/<slug>.md | skills/<slug> | decisions/<slug>.md | postmortems/<slug>.md
tags: [learning, candidate]
---

# <title>

> One-line: what this is and why it's worth keeping.

What recurred / what was decided / what the gap is — with concrete evidence. What to do about it
(the codified form). [Source: <project>, transcript <date>]
```

## Rules

- **Test before bulk** — mine 2-3 projects, show Kevin the candidate sample, then widen.
- **Cross-project > single-project** — a pattern seen in 2+ projects is higher-signal than one session.
- **No secrets** — never copy keys/tokens/private data into candidates (env var *names* only).
- **Dedup against the brain** — `qmd search` each candidate; if the wiki already covers it, update that page instead of creating a candidate.
- **The gate is mandatory** — candidates land in `wiki/inbox/learnings/`; only Kevin-approved ones get codified. This protects the brain from transcript noise.

## Related

- `scripts/harvest-learnings.ts` — the collection half (`npm run harvest:learnings`)
- `automations/cross-project-learning.md` — runs this on a cadence
- `skill-audit` skill — the Cursor-only, skill-focused predecessor (this generalizes it to all projects + all knowledge types)
- `signal-detector.mdc` — ambient per-message capture (this is the batched, cross-project version)
- `wiki/concepts/brain-agent-loop.md` — the read/write compounding loop this feeds

Timeline

1 page links here