4 min read
learn-from-projects
Generated source view for the actual executable
productivity/learn-from-projectsskill. 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
- 2026-07-15 | Generated a browseable source page from the actual executable skill file. Source: skills/productivity/learn-from-projects/SKILL.md