Skip to content
Back to skills

Reflect

ASecurity

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.

  • 76 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added August 30, 2026
ai-agentsbashgit

Security analysis

A100/100

Scanned August 30, 2026

npx -y skills add sneg55/agent-starter --skill reflect --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Reflect?

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

Security grade badge for Reflect
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sneg55-reflect/badge)](https://www.skillsdirectory.com/skills/sneg55-reflect)

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: 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.

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.