reflect — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited reflect (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Purpose: Analyze completed session/project — creates ~/.claude/reflection.md as input for Improve. When: At end of each significant session. Required at project end. Output: ~/.claude/reflection.md (global, not in project folder) + entries in ~/.claude/memory/episodic/hard-problems.md for hard cases.
Read before analysis:
CLAUDE.md — current Session Log and Known Issues⚠️ If CLAUDE.md doesn't exist: skip reading it; in Step 5 skip CLAUDE.md update; in reflection.md under "Правки CLAUDE.md" write: "CLAUDE.md отсутствует — /intake не запускался, Session Log не ведётся."
plan.md (if exists in CWD) — current phases and task progressRead frontmatter: active_phase, session, updated Note which tasks are - [ ] vs - [x] in the active phase.
~/.claude/skills/index.md — which skills were used~/.claude/memory/episodic/hard-problems.md — compare this session's problems with recorded ones.Same problem seen in another project = recurring pattern, flag explicitly. Recurring = new skill candidate.
git diff --name-only HEAD (git repo)**/*.{py,html,js,css,md,yaml} sorted by modification date (non-git)Windows without git:py -3 -c "import os,glob,time; files=sorted(glob.glob('**/*',recursive=True),key=os.path.getmtime,reverse=True)[:20]; [print(time.strftime('%H:%M',time.localtime(os.path.getmtime(f))),f) for f in files if os.path.isfile(f)]"Do NOT usels -lt(bash-only) orpython(may hit Microsoft Store stub on Windows).
~/.claude/reflection-*.md files (archive, by date).Find dominant axis per file: which of 5 axes has most concrete observations.
Internal note: "session accent: [axis N]" — used in Step 2.
If Step 1.5 identified an accent axis — give it twice the depth. Others: brief but don't skip.
Axis 1: Skills
✅ first try / ⚠️ needed iteration / ❌ didn't helpAxis 2: Manual Work
Axis 3: Security
Axis 4: Architecture & Decisions
Axis 5: Improvement Proposals
A case goes into ~/.claude/memory/episodic/hard-problems.md if:
Add entry using the template in ~/.claude/memory/episodic/hard-problems.md.
From Axis 1 (Skills) and Axis 4 (Architecture decisions): did anything work notably well?
Entry qualifies if ALL three:
~/.claude/memory/episodic/best-practices.mdIf qualifies → add entry using template in ~/.claude/memory/episodic/best-practices.md. If not → skip silently (don't force entries).
Trigger — write a failure file if ANY of:
One file per failure event (not per skill). If one event caused multiple ❌ — one file.
Create file: ~/.claude/memory/episodic/failures/YYYY-MM-DD-[slug].md Slug = kebab-case summary of the problem (e.g. fastapi-async-db-deadlock).
# [Problem title]
**Date:** YYYY-MM-DD
**Project:** [name]
**Tags:** [stack / type / domain]
Problem: [what we tried to do — one sentence]
Root cause: [why it failed — specific]
Failed attempts:
1. [what was tried] → [why it failed]
2. [what was tried] → [why it failed]
Final solution: [what worked, or "Unresolved"]
Preventive rule: [one actionable rule to avoid this next time]Rules:
preventive_rule must be specific. "Be more careful" → not acceptable."Always run schema validation before calling external endpoint" → acceptable.
"Unresolved" in Final solution AND verify hard-problems.md has the entry.stack / type / domain.Failures records the prevention (what to CHECK / what NOT to do). Both can exist for same case.
If no ❌ and no hard cases this session → skip silently.
Before writing new file — check if ~/.claude/reflection.md exists:
Есть непримененный reflection от [дата из заголовка].
Что делать?
1. Перезаписать (потерять старый)
2. Сначала запустить /improve, потом reflect сноваWait for answer. Don't guess.
Write ~/.claude/reflection.md strictly using the template below. Global file — not in project folder. Brevity over completeness.
Did this session reveal a new behavioral pattern not yet in ~/.claude/user-preferences.md?
Qualifies if:
If yes → add/update entry in ~/.claude/user-preferences.md + add row to Changelog. If no → skip silently.
Two files updated separately.
plan.md (if exists in CWD):
Algorithm:
active_phase: N## Phase N: ... — active- [ ] with - [x]- [ ] in this phase now closed?— active with — done in Phase N headerfind the next — pending phase → replace with — active update frontmatter: active_phase: N+1 → Say: "Phase N закрыта — запустить /strategic-review перед стартом Phase N+1?"
updated: YYYY-MM-DD (today), session: +1If plan.md not found → skip silently (project may predate this format).
CLAUDE.md (if exists in CWD):
"CLAUDE.md отсутствует — Session Log не обновлялся. При следующем проекте запустить /intake."
Phase N — [name] (X/total tasks) based on plan.md stateAfter saving all files:
"Одна строка коррекции: что самое важное улучшить или усилить?"Строка коррекции пользователя in ~/.claude/reflection.md (replace [пусто — ждёт ввода])"Запустить /improve сейчас?""да" / "давай" / "yes" → execute @~/.claude/skills/improve/SKILL.md"нет" / "потом" → say "Ок. Запустишь /improve когда будешь готов." and finishgoal — one sentence: what did we set out to do this session?stack — from project CLAUDE.md or inferred from changed filesfrictions — only skills rated ⚠️ or ❌; one entry per skill; cause = one-line root causeroot_causes — distilled one level above frictions (e.g. "frictions: wrong API schema" → root: "no schema validation step"); not copy-pasteimprovements.skills — names only of skills proposed for edit in Proposals sectionimprovements.workflows — L2-level workflow changes only (modifying skill steps/sequences)confidence — honest estimate of session data quality:0.9–1.0: everything worked, clear goals, strong data0.7–0.9: good session, minor frictions0.5–0.7: significant friction, some goals not met0.0–0.5: major issues, goals not met, data unreliable---
date: YYYY-MM-DD
session: N
project: "[name]"
goal: "[one sentence — what we tried to accomplish this session]"
stack: [tag1, tag2]
frictions:
- skill: "[name]"
type: "⚠️"
cause: "[one-line root cause]"
root_causes:
- "[distilled cause — one level above frictions, not copy-paste]"
improvements:
skills: []
workflows: []
confidence: 0.0
---
# Reflection — [Project Name]
**Дата:** [YYYY-MM-DD]
**Сессия:** [N]
---
## Скиллы
| Скилл | Оценка | Заметка |
|-------|--------|---------|
| [скилл] | ✅/⚠️/❌ | [одна строка] |
### Трения (только ⚠️ и ❌)
- [скилл]: [где неудобно] → предложение: [как исправить]
### Лишнее
- [скилл]: [почему не нужен] → предложение: [убрать/упростить]
---
## Ручная работа (кандидаты на автоматизацию)
- [действие] → потенциальный скилл: [название]
- [или "Не выявлено"]
---
## Безопасность
- Подозрительные события: [или "Не выявлено"]
- Стоп-операции: [сработали корректно / не потребовались]
---
## Архитектурные решения сессии
| Решение | Причина | ADR? |
|---------|---------|------|
| [решение] | [почему] | Да / Нет |
---
## Предложения по улучшению скиллов
### Правки существующих
- `[скилл]`: [что добавить/убрать/переформулировать]
### Новые скиллы
- `[название]`: [для чего, когда]
- [или "Не нужны"]
### Правки CLAUDE.md
- [что обновить или "Актуален"]
---
## Строка коррекции пользователя
> Одна строка — самое важное что нужно исправить или усилить.
[пусто — ждёт ввода]Before writing reflection.md: re-read ## OUTPUT template and this checklist. Fix gaps before saving.
confidence is a number (not a placeholder), no [] in required fields~/.claude/memory/episodic/hard-problems.md~/.claude/memory/episodic/best-practices.md (or explicitly skipped)~/.claude/memory/episodic/failures/ (or explicitly skipped — no ❌ and no hard cases)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.