Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill should be used when the user asks to "reflect on skills from memory", "audit marketplace skills against memory", "从记忆中检查 skills 的问题", "反思并修改 skill", "apply memory feedback to skills", or wants to turn accumulated memory feedback about this marketplace's skills into concrete skill fixes. Reads the project's persistent memory, re-verifies each known skill problem against current code, then fixes the skill or corrects the stale memory.
.claude/skills/fradser-reflect-skills-from-memory/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 1419% | 0% |
| case-07 | ✓→✗ | ▼ Worse | 15% | 0% |
Turn accumulated memory feedback about a Claude Code plugin marketplace's skills into concrete, verified fixes. Memory records hard-won lessons ("L3 rules get skipped", "git plugin still has no commit hook") but memory is a point-in-time snapshot — it drifts from the code. This skill closes the loop: recall the feedback, re-verify it against the live skills, then fix whichever is wrong — the skill, or the memory.
Run this in a plugin marketplace repo (e.g. dotclaude) whose feedback lives in the per-project memory directory.
Trigger on requests to reflect on / audit / reconcile this marketplace's skills against remembered feedback, or to apply outstanding memory feedback to skill files.
Resolve the per-project memory directory. Claude Code encodes it by replacing every / in the project path with -:
bashMEM="$HOME/.claude/projects/$(pwd | sed 's/\//-/g')/memory" ls "$MEM"/MEMORY.md "$MEM"/*.md
Read MEMORY.md first (the index), then read every feedback_*.md memory — these carry the actionable problems. Also read project_*.md memories that name a specific plugin (they often record version-pinned fixes and "re-verify after upgrade" cues).
From the feedback memories, build a list of concrete, checkable claims about skills. Each candidate needs: the claim, the target skill/file it implicates, and how to verify it. Skip memories that are pure preference (e.g. "reply in Chinese") with no skill artifact.
Recurring problem classes encoded in this project's memory (treat as a standing checklist):
skill-l2-l3-enforcement-pattern): mandatory rules that live onlyin references/*.md or in soft prose (## Pre-operation Checks, Note:, warn user) get skipped. They must be a CRITICAL: block in the SKILL.md body (L2).
git-commit-hook-added): a plugin.json may lack a neededhook. Verify by inspecting the live hooks field, not by trusting the remembered version.
project_gitflow_plugin and siblings): hardcodedmodel names, branch-landing assumptions, or version numbers drift.
For each candidate, verify against the live files before changing anything. Memory carries a "may be outdated" warning for a reason, and self-audits in this project have caught the auditor's own just-written bugs (feedback_self_audit_caught_my_bugs, verification-requirement-before-reporting). Concretely:
hooks key, checkthe model string / version).
WRONG (fix the memory instead), or NOT-APPLICABLE (note and move on).
When the change touches Claude Code's own API surface (hook schemas, frontmatter fields, tool names), confirm current behavior with the claude-code-guide agent before editing (use-claude-code-guide-agent) — do not edit from remembered API shape.
Apply the minimal change that resolves the verified problem, matching surrounding style:
CRITICAL: block in the SKILL.md body; keep the L3reference as the detail pointer, not the sole home of the rule.
plus a detailed Phase 0), note in both that they must change together.
After editing a plugin's skill, bump its version in the plugin's plugin.json and sync the matching entry in .claude-plugin/marketplace.json — these must stay equal (verify every plugin.json version against marketplace.json before reporting). For README plugin-list drift after add/remove/rename, defer to the project's /utils:update-readme.
When verification shows the memory is stale or wrong, correct the memory file instead of the skill: update the version/date/claim, and keep the MEMORY.md index line in sync. If a memory's name: slug changes, the filename-based MEMORY.md link still resolves, but check for [[slug]] wikilinks that now dangle. Memory files live outside the git repo and need no commit.
Validate touched plugins with the project's optimizer (/plugin-optimizer:optimize-plugin or python3 plugin-optimizer/scripts/validate-plugin.py <plugin-path>). When the fix is a hook or other guard script, test BOTH the should-act and should-pass paths before reporting (feedback_self_audit_caught_my_bugs). Then report, per candidate: claim → verdict (STILL-BROKEN / ALREADY-FIXED / WRONG / NOT-APPLICABLE) → action taken (skill edit with file path, or memory correction). State what was verified and how.
a skill or assert a fix based solely on memory contents.
git add / git commit / git status / git diff for committing.When the user asks to commit the skill fixes, invoke the /git:commit skill via the Skill tool — it handles staging and message generation.
extra comments, or abstractions the file does not already use.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | fail→pass | 9,225 | 2,444 | -74% | 1 | 1 | 0% | 1,535 | 1,722 | +12% | 0 | 0 | — |
case-05 | pass→pass | 8,353 | 5,773 | -31% | 1 | 1 | 0% | 1,299 | 2,397 | +85% | 0 | 0 | — |
case-01 | fail→fail | 6,433 | 6,174 | -4% | 1 | 1 | 0% | 546 | 1,745 | +220% | 0 | 0 | — |
case-02 | fail→fail | 3,707 | 6,675 | +80% | 1 | 1 | 0% | 196 | 1,781 | +809% | 0 | 0 | — |
case-03 | fail→fail | 3,628 | 5,358 | +48% | 1 | 1 | 0% | 230 | 1,677 | +629% | 0 | 0 | — |
case-04 | pass→pass | 12,373 | 4,255 | -66% | 1 | 1 | 0% | 2,389 | 2,072 | -13% | 0 | 0 | — |
case-06 | pass→pass | 10,537 | 5,211 | -51% | 1 | 1 | 0% | 1,654 | 2,235 | +35% | 0 | 0 | — |
case-07 | pass→fail | 9,438 | 3,480 | -63% | 1 | 1 | 0% | 1,667 | 1,912 | +15% | 0 | 0 | — |
case-08 | pass→pass | 11,200 | 7,134 | -36% | 1 | 1 | 0% | 1,759 | 2,495 | +42% | 0 | 0 | — |
case-09 | fail→fail | 8,623 | 2,630 | -70% | 1 | 1 | 0% | 1,315 | 1,899 | +44% | 0 | 0 | — |
case-14 | pass→pass | 3,531 | 2,013 | -43% | 1 | 1 | 0% | 520 | 1,781 | +242% | 0 | 0 | — |
case-10 | fail→fail | 5,655 | 2,498 | -56% | 1 | 1 | 0% | 813 | 1,835 | +126% | 0 | 0 | — |
case-11 | fail→fail | 7,683 | 3,543 | -54% | 1 | 1 | 0% | 1,154 | 1,963 | +70% | 0 | 0 | — |
case-12 | fail→pass | 6,290 | 4,511 | -28% | 1 | 1 | 0% | 990 | 2,207 | +123% | 0 | 0 | — |
case-13 | pass→fail | 9,988 | 5,993 | -40% | 1 | 1 | 0% | 1,686 | 1,776 | +5% | 0 | 0 | — |
case-16 | fail→fail | 9,556 | 4,263 | -55% | 1 | 1 | 0% | 1,445 | 2,248 | +56% | 0 | 0 | — |
case-17 | fail→pass | 8,527 | 2,771 | -68% | 1 | 1 | 0% | 1,390 | 1,794 | +29% | 0 | 0 | — |
case-18 | pass→pass | 5,126 | 4,773 | -7% | 1 | 1 | 0% | 769 | 2,241 | +191% | 0 | 0 | — |
case-19 | pass→pass | 7,821 | 3,303 | -58% | 1 | 1 | 0% | 1,272 | 1,930 | +52% | 0 | 0 | — |
case-20 | fail→pass | 1,913 | 21,760 | +1037% | 1 | 1 | 0% | 305 | 4,634 | +1419% | 0 | 0 | — |
case-21 | pass→fail | 12,385 | 6,102 | -51% | 1 | 1 | 0% | 2,280 | 1,638 | -28% | 0 | 0 | — |
case-22 | fail→fail | 5,006 | 3,694 | -26% | 1 | 1 | 0% | 162 | 1,602 | +889% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +5 percentage points is the difference between those two pass rates over the 16 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.