Skip to content
Back to skills

Review Corrections

ASecurity

Triage pending correction candidates (captured by the recall Stop hook) into memory — promote the worthy, drop the noise, surface the contested. Closes the correction→memory loop.

  • 11 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 2, 2026
ai-agentspythongobashgit

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add cyb213/Lab-Zero --skill review-corrections --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Review Corrections?

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

Security grade badge for Review Corrections
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cyb213-review-corrections/badge)](https://www.skillsdirectory.com/skills/cyb213-review-corrections)

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: review-corrections
description: Triage pending correction candidates (captured by the recall Stop hook) into memory — promote the worthy, drop the noise, surface the contested. Closes the correction→memory loop.
---

# Review Corrections

The recall **Stop hook** flags messages that look like corrections or standing preferences
and appends them to `memory/recall-misses.jsonl`. The detector is deliberately **NOISY** (it
also flags praise like "nice", and bare "stop"/"don't") — so **your judgment is the filter**,
not the regex. This ceremony reads the pending candidates and, per candidate, **promotes** the
worthy ones into memory, **drops** clear noise, and **surfaces** the contested ones for the
user to rule on. Then it advances a review high-water-mark so nothing is re-reviewed.

Run it when the session-start nudge says corrections are pending, or whenever the user asks.

## 1. Read the pending candidates

```
bash scripts/recall.sh misses --json
```

Each entry: `{ts, event:"miss", last_user, transcript_path}`. "Pending" = captured since the
last review — the reader filters by the high-water-mark automatically. If the list is empty,
say so and stop. (`bash scripts/recall.sh misses` with no flag gives a human-readable list.)

## 2. Judge each candidate — promote / drop / surface

Read each `last_user` and decide:

- **PROMOTE** — a real, durable lesson: a correction of a mistake worth not repeating, or a
  standing preference ("from now on…", "I prefer…", "always/never…"). Distill it into a crisp,
  general rule — the *lesson*, not the verbatim complaint.
- **DROP** — noise the detector over-caught: praise ("nice", "good job"), a bare "stop"/"don't"
  with no durable content, a one-off that won't recur, or something already in memory. Do
  nothing — advancing the high-water-mark (step 4) excludes it from future reviews.
- **SURFACE** — genuinely ambiguous, or a judgment call the user owns (a preference you're not
  sure is durable, or one that contradicts existing memory). List it for the user; do **not**
  promote it unilaterally.

When torn between PROMOTE and DROP, prefer **SURFACE** — never auto-write a memory you're unsure
about. That is how memory gets polluted.

## 3. Promote — ONE pipeline, destination derived at runtime

First resolve the workspace's memory target. **NEVER hard-code a path** — deriving it keeps the
write inside THIS workspace's own namespace (the isolation rule):

```
.venv/bin/python scripts/recall_lib.py --json     # read auto_memory_dir + auto_memory_key
```

- **Native memory** (`auto_memory_dir` is non-null AND that directory exists — e.g. Claude
  Code): write the lesson as a new memory file in that directory, following the workspace's
  existing memory-file convention (read an existing file + its `MEMORY.md` to match the format —
  typically frontmatter `name`/`description`/`metadata`, then the lesson, linking related
  memories with `[[name]]`), and add a one-line pointer to that directory's `MEMORY.md` index.
  This is context-loaded every session AND recall-indexed — the strongest surfacing.

- **Portable fallback** (no native namespace — Codex / plain clone): index-heal once, then
  append. The config is personal-not-machinery, so a clone may not yet index `LEARNED.md`:

  ```
  bash scripts/recall.sh misses --ensure-glob       # idempotent: adds memory/LEARNED.md to index_globs
  ```

  Append a dated, structured entry to `memory/LEARNED.md` (create it if absent):

  ```
  ## <ISO-ts> — <short lesson title>
  <the distilled lesson, in plain language>
  Source: correction at <ts>
  ```

`memory/LEARNED.md` is gitignored (personal) — never commit it.

## 4. Advance the review high-water-mark

Advance the mark to the `ts` of the newest candidate for which you (and every older pending
candidate) reached a **promote-or-drop** decision — both count as "decided". Anything you
**surfaced**, and everything after it, stays pending:

```
bash scripts/recall.sh misses --mark <ts-of-last-decided-candidate>
```

Use the last *decided* ts, **never** wall-clock "now". A single watermark can't skip a hole —
so if you surface a candidate in the middle of the list, advance only up to the one just before
it, and leave the rest pending. An interrupted or partial pass must leave the remainder pending
(no-recycle must not become no-review).

## 5. Reindex + report

If you promoted anything via the **portable** path, reindex so it's searchable (native promotes
are picked up by the auto-memory indexing automatically):

```
bash scripts/recall.sh reindex
```

Then give the user a short tally: N promoted (with titles), N dropped, N surfaced — and list the
surfaced ones for a ruling.

## Worked example

Pending (`bash scripts/recall.sh misses --json`):

1. `[2026-06-10T08:00:00Z]` "no, use Celsius not Fahrenheit for everything"
2. `[2026-06-10T09:30:00Z]` "nice, that's perfect"
3. `[2026-06-11T14:00:00Z]` "from now on always run the tests before saying done"
4. `[2026-06-12T10:00:00Z]` "hmm, maybe we should prefer pnpm over npm?"

Decisions:

1. **PROMOTE** — durable unit preference → "Always use Celsius; never convert to Fahrenheit."
2. **DROP** — praise, no lesson.
3. **PROMOTE** — standing process rule → "Run the test suite and confirm it's green before reporting a task done."
4. **SURFACE** — tentative ("maybe?"); the user's call.

#1–#3 are decided; #4 is surfaced and is the newest, so advance the mark through **#3's** ts and
leave #4 pending:

```
bash scripts/recall.sh misses --mark 2026-06-11T14:00:00Z
```

Report: *"2 promoted (Celsius units; tests-before-done), 1 dropped (praise), 1 surfaced — you
floated preferring pnpm; want that as a standing rule?"*

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.