Skip to content

/reflect

Per-project self-improvement - reads the .harness ledger and feedback memories, then proposes gated rule/threshold/ADR changes so the project stops repeating mistakes. Run periodically.

From plugin
agent-starter
778 skills5 hooks
Install
$ npx -y skills add sneg55/agent-starter --skill reflect --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/reflect

Context preview

The summary Claude sees to decide when to auto-load this skill.

Per-project self-improvement - reads the .harness ledger and feedback memories, then proposes gated rule/threshold/ADR changes so the project stops repeating mistakes. Run periodically.

SKILL.md

reflect.SKILL.md
name: reflect
description: Per-project self-improvement - reads the .harness ledger and feedback memories, then proposes gated rule/threshold/ADR changes so the project stops repeating mistakes. Run periodically.
user_invocable: true
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
  - Glob
  - Grep

Reflect: Per-Project Self-Improvement

You are performing a reflection - turning the signal this project has captured into durable improvements. Nothing is applied without the developer's approval.

Phase 1 - Orient (gather signal)

  • Run the stats script over the ledger:

`~/.claude/hooks/harness-ledger-stats.sh --ledger .harness/ledger.jsonl --min-recurr 3` If that path doesn't exist, the hooks aren't installed at `~/.claude/hooks/` - run the copy from wherever this project keeps them. If the script prints all zeros there is no ledger yet (no signal captured) - stop; there is nothing to reflect on.

  • Read the current project rules in `CLAUDE.md` so you improve them rather than duplicate.
  • Read recent `feedback`-type memory files - these are the developer's explicit

corrections and are the highest-value signal. Locate the memory directory first (it sits next to `MEMORY.md`; `find . -name MEMORY.md` if unsure), then `grep -l 'type: feedback' <memory-dir>/*.md`.

  • Read the most recent `.harness/reflections/*.md` report (if any) to recall the last

metric snapshot and what was already changed.

Phase 2 - Cluster

From the stats output and feedback memories, identify recurring problems:

  • Each `recurring <rule> <prefix> <count>` line is a friction cluster - the same check

keeps firing in the same area.

  • Group related feedback corrections by theme.
  • Ignore one-off events; focus on what repeats.

Phase 3 - Propose (one candidate per cluster)

For each cluster, draft exactly one proposed change, choosing the fitting type:

| Type | When | Where it lands | |------|------|----------------| | **Project rule** | a convention would stop the repeat | append to `CLAUDE.md` project-specific section | | **Threshold change** | a guardrail is too strict/loose | a diff to `.claude/settings.json` or the hook - **shown, never auto-applied** | | **Lint rule** | the mistake is mechanically catchable | a diff to `eslint.config.mjs` / `biome.jsonc` | | **ADR / knowledge** | durable "why" worth keeping | a new memory file or `docs/adr/` note |

Present all proposals together as a numbered list with the concrete change for each.

Phase 4 - Gate & Record

  • Ask the developer to approve, edit, or reject each proposal (like `/remember`).
  • Apply only the approved ones, then commit them (use `/commit`).
  • Create `.harness/reflections/` if needed (`mkdir -p .harness/reflections`), then write a

reflection report to `.harness/reflections/YYYY-MM-DD.md` containing:

  • the full stats output (the **metric snapshot**, so the next reflection can compare),
  • the clusters you found,
  • which proposals were approved / rejected and why.

The report is committed; the raw `.harness/ledger.jsonl` stays gitignored. Signal is private; wisdom is shared.

Measuring success

The headline metric is `recurring_events` from the stats output. Compare it to the value in the previous reflection report. If a rule you promoted last time worked, the cluster it targeted should have shrunk. Note the trend explicitly in the new report.

Read more
Ships withagent-starter

Skills, hooks, templates, and engineering guides for bootstrapping AI-agent-friendly projects, with a per-project self-improvement loop.

Get the whole plugin, auto-invoked
Stats
77
Stars
4
Forks
Active
Maintenance
Shell
Language
MIT
License
2d ago
Last commit
5mo ago
Created

Repo: sneg55/agent-starter

Other skills on agent-starter.