Deliberate deep-dive capture for a completed skill session that deserves more than the automatic one-line row every T1/T2 skill already logs at its own close — asks three extraction questions (what surprised you, what was wrong, what was missing), turns real answers into specific, falsifiable pattern statements, and logs the session to /context/skill-sessions.md in the same format so meta-synthesis reads one consistent log either way. Trigger on: "capture what we learned", "log this session",...
Installs into .claude/skills of the current project.
Are you the author of Meta Learn?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/stefanoskarakasis-meta-learn)
---
name: meta-learn
version: 3.1.0
description: >
Deliberate deep-dive capture for a completed skill session that deserves
more than the automatic one-line row every T1/T2 skill already logs at its
own close — asks three extraction questions (what surprised you, what was
wrong, what was missing), turns real answers into specific, falsifiable
pattern statements, and logs the session to /context/skill-sessions.md in
the same format so meta-synthesis reads one consistent log either way.
Trigger on: "capture what we learned", "log this session", "save the
learnings", "what did we learn", or any request to encode deeper insights
from a completed skill session.
metadata:
author: Stefanos Karakasis
context: context-agnostic
quality_gate: true
last_updated: 2026-08-22
---
# meta-learn
The deliberate, on-demand deep-dive into a completed skill session — for
when the automatic one-line Learning Close every T1/T2 skill already writes
isn't enough. Asks what the session actually taught the user — not what the
skill's output said, but what surprised them, what they disagreed with, or
what was missing. Turns real answers into a specific, falsifiable statement
and logs it to the same file, in the same format, every T1/T2 skill's own
Learning Close writes to — so `meta-synthesis` reads one consistent log
regardless of which produced any given row.
## Trigger
- **When:** The user wants a deeper capture of a completed skill session
than the automatic one-line row every T1/T2 skill already logs at its own
close (see that skill's Learning Close step). Use this for a session that
deserves real reflection — something surprised the user, a recommendation
felt wrong, or important context was missing — and a structured
three-question interview is worth the extra few minutes.
- **Not for:** Auditing a `SKILL.md`'s structure → use `meta-review`.
Checking whether a skill's output itself is correct → use `meta-verify`.
Detecting patterns across multiple sessions or proposing guardrails → use
`meta-synthesis`, which reads what this skill logs.
- **Example prompts:**
- "Capture what we learned from that retro"
- "Log this session"
- "What surprised you about that positioning run?"
- "Save the learnings before we close"
## Inputs
- **Args:** The completed session's skill name and a short description of
its output. `n.v.t.` if invoked immediately after a skill session in the
same conversation — infer both from context.
- **Defaults:** If the skill name isn't obvious, ask for it before proceeding.
- **Context keys:** `/context/skill-sessions.md` — appended to, created if
it doesn't exist yet.
## Pre-flight
- This skill is context-agnostic. Do not load `/foundation/brain.md` and do
not let prior company context shape what counts as a pattern — extraction
comes from the user's answers alone.
- If there's no completed session to close out (skill hasn't produced output
yet), stop and say so — this isn't a mid-session check-in.
## Steps
### Step 1: Confirm the Session Closed
Confirm which skill just ran and what it produced, in one line:
> "Closing out [skill-name] — produced [one-line description of output].
> Three quick questions before we log this."
### Step 2: Ask the Three Extraction Questions
Ask all three in one message. Wait for complete answers before proceeding.
> "1. **What surprised you?** Something unexpected the skill surfaced that
> you hadn't considered.
>
> 2. **What was wrong or off?** Any recommendation you pushed back on or
> felt missed the mark. Be specific: what, and why?
>
> 3. **What was missing?** Context the skill didn't have, a question it
> didn't ask, an output it should have produced but didn't."
If all three come back as "nothing," skip to Step 5 — log a clean close, no
pattern extraction needed.
### Step 3: Make Each Answer Falsifiable
For any answer with real content, restate it as a specific, testable
statement — not a vague impression.
- ❌ Vague: "communication could be better"
- ✅ Falsifiable: "when the launch timeline slips more than 10 days, the
brief didn't flag which stakeholders needed to be renotified"
If an answer can't be sharpened into something falsifiable, it isn't a
pattern yet — note it as a loose observation rather than forcing it into a
false-precision statement.
### Step 4: Show What Will Be Logged
Before writing, show the user the exact log entry:
````
🔁 SESSION LEARNING
Skill: [name]
Date: [date]
Pattern: [falsifiable statement, or "none — clean session"]
Source: [surprised / wrong / missing]
Log this? (yes / edit / skip)
````
Never log a pattern without this confirmation. A clean close (no pattern)
logs automatically without this gate — there's nothing to approve.
### Step 5: Append to the Session Log
Append one entry to `/context/skill-sessions.md`, in the format defined in
`product-marketing-context/.claude-plugin/skill-sessions-format.md`
(Type A — execution session):
````yaml
type: execution
skill: [name]
session_date: [YYYY-MM-DD]
pattern: [falsifiable statement, or "none"]
source: [surprised / wrong / missing / n.v.t.]
````
This is the only file this skill writes to. `meta-synthesis` is what reads
across many of these rows later to find what repeats — this skill's only
job is making sure each individual row is worth reading.
## Outputs
- **Files written:** `/context/skill-sessions.md` — one appended row per
session, per Step 5.
- **Chat output format:** The three questions (Step 2), the falsifiable
restatement if applicable (Step 3), and the logged-entry confirmation
(Step 4).
- **External side effects:** n.v.t.
## Verification
- The session log entry exists in `/context/skill-sessions.md` with today's
date and the correct skill name.
- If a pattern was captured, it's stated as a specific, falsifiable claim —
not a vague impression.
- Nothing was written without the Step 4 confirmation, except a clean close
with no pattern.
## Do Not Use For
- **meta-review** — auditing a `SKILL.md`'s own structure against the spec
- **meta-verify** — checking whether a skill's output itself is correct
before it goes out
- **meta-synthesis** — detecting patterns across 2+ logged sessions and
proposing guardrails; this skill only produces the raw log rows
meta-synthesis later reads
## Operating Rules
- **Extract from the user's real answer, not from the skill's own output.**
The skill already said what it produced. This is about what the user
noticed that it didn't say.
- **Falsifiable or nothing.** A pattern statement that can't be proven wrong
isn't useful to `meta-synthesis` later — sharpen it or log it as a loose
observation, don't force false precision.
- **Never force a pattern.** If the user says "nothing surprised me," accept
that and log a clean close. Don't manufacture insight to seem thorough.
- **One log, one format.** Every session appends to
`/context/skill-sessions.md` in the same YAML shape — `meta-synthesis`
depends on consistent structure to scan across sessions.
- **Nothing writes without the confirmation gate**, except the automatic
clean-close log entry when there's genuinely nothing to approve.
- **This skill doesn't decide what's a repeating pattern.** That's
`meta-synthesis`'s job, reading across many logged sessions. This skill's
job ends at logging one session well.
## Quality Gate
| Check | Standard | Pass = |
|---|---|---|
| All three questions asked | Surprised / wrong / missing, in one message | Yes |
| Pattern is falsifiable | Specific claim, not a vague impression | Yes or n.v.t. (clean close) |
| Confirmation shown before write | Exact log entry shown, user confirmed | Yes or n.v.t. (clean close) |
| Log entry appended | `/context/skill-sessions.md` has the new row | Yes |
| Clean closes handled | "Nothing" answers don't force a fake pattern | Yes |