with one click
skill-ops
Skill ops hub: snapshot/rollback + usage health + invocations.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Skill ops hub: snapshot/rollback + usage health + invocations.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Gate for deciding whether to adopt an external pattern (skill/agent/rule/plugin/MCP/prompt) into your system. Triggers: '/integration-intake [name]', 'should I integrate this', 'is this worth adopting', or sharing a GitHub repo link and asking what to do with it.
This skill should be used when the user types /collab-audit or requests AI collaboration diagnosis. Analyzes conversation history, artifacts, and work patterns to generate a 14-section AI Collaboration Audit. Behavioral analysis and feedback are bundled by design — separating them causes users to skip one, defeating the purpose. Saves to ~/.claude/collab-audits/YYYY-MM-DD.md. Compare mode: /collab-audit compare (diffs latest 2 audits). Triggers: '/collab-audit', '/collab-audit compare', 'AI 협업 진단해줘', '협업 진단', '행동 패턴 분석', '나 어떤 사람이야', 'AI collaboration audit', 'work pattern analysis', 'compare audits'. Requires minimum 2 sessions or 100+ messages. Do NOT use self-report surveys — observation-only.
Use this skill when the user wants to audit the memory and documents Claude Code loads into context — CLAUDE.md (user global + project + nested), MEMORY.md, @imports, .claude/skills, .claude/agents, .claude/commands, installed plugins — and detect three kinds of issues: outdated claims, mutually contradictory statements, and risky-or-ambiguous wording. Produces a prioritized improvement list at `.drift-reports/`. Zero config. Trigger phrases: "doc drift", "memory drift", "memory audit", "context drift", "docs audit", "문서 점검", "문서 감사", "메모리 감사", "메모리 점검", "outdated 문서", "문서 충돌". NOT for: exhaustive content audit of an entire area (→ full-audit) · harness maturity scoring (→ check-harness) · single-file verification (→ verification). doc-drift only covers drift (contradiction/staleness/risky wording) in already-loaded context.
Audits whether a verification (eval/metric/experiment/holdout) actually secures independent external ground truth, or whether the designer, the model, and the scorer are just confirming each other in a circle — via an 8-pattern taxonomy. Read-only. Use before trusting any 'how we'll know it worked' — A/B tests, holdouts, scores, validation — especially when a result feels too clean or self-confirming. 한국어: '이 검증 순환논리 아닌지 봐줘', '이 평가 편파적이야?', '이 벤치마크 셀프체크야?'.
Exhaustive audit of an entire area (codebase, docs, memory, skills, DB, config). Triggers: '/full-audit', 'audit everything', 'full audit', 'find every gap'.
Agent Discipline Engine — lock the goal, run PLAN→DO→VERIFY→FINALIZE→OUTPUT loop, detect success masquerading. Triggers: '/goal-lock', '/goal-lock quick', 'goal lock', 'task harness'.
| name | skill-ops |
| user_invocable | true |
| description | Skill ops hub: snapshot/rollback + usage health + invocations. |
| not_for | ["Creating/editing skills — this only manages existing skills, it doesn't author new ones","Deep quality scoring/audit of a skill's content — this tracks usage, not quality"] |
| see_also | [] |
Skill/agent ops hub — 3 modes: snapshot, usage, frequency. Merges skill-versioning + skill-health-report.
Snapshot integrity + invocation log completeness — if a snapshot doesn't match the original, rollback is meaningless. Without logs, usage analysis is impossible.
~/.claude/.harness/snapshots/ — if broken: report permission issue + provide manual mkdir command.~/.claude/skills/*/SKILL.md or ~/.claude/agents/*.md — if broken: ask for the skill name directly.invocations/YYYY-MM.jsonl — if broken: state "no logs"./skill-ops (snapshot default)/skill-ops health/skill-ops invocations~/.claude/skills/ or ~/.claude/agents/ (project code → git handles it)invocations/ directory itself doesn't exist → report "no logs"| Mode | Role | Trigger |
|---|---|---|
| snapshot | Pre-change snapshot + regression-detection restore command | /skill-ops (default) |
| health | Usage/Dead/Unused/Discard report | /skill-ops health |
| invocations | Per-skill frequency rollup from session JSONL | /skill-ops invocations |
~/.claude/skills/<name>/SKILL.md or ~/.claude/agents/<name>.md[READ] {TARGET_FILE} → record line count (ORIGINAL_LINES)TIMESTAMP=$(date +%Y-%m-%d-%H%M%S)
SKILL_SNAP_DIR=~/.claude/.harness/snapshots/{skill-name}
mkdir -p ${SKILL_SNAP_DIR}/${TIMESTAMP}
[WRITE] snapshot → [READ] re-verify → compare line count⚠️ Snapshot verification failed + end with PARTIALls -d ~/.claude/.harness/snapshots/{skill-name}/*/ | sort | head -$((COUNT-5)) | xargs rm -rf
harness_score + date from the latest ~/.claude/.harness/scores/*.json fileRollback: cp ~/.claude/.harness/snapshots/{skill-name}/{TIMESTAMP}/SKILL.md {TARGET_FILE}
List: ls ~/.claude/.harness/snapshots/{skill-name}/
invocations/ directory existsPer-skill rollup from JSONL over the last 30 days (default):
skills[] → invocation countdiscarded[] → Discard If trigger countlast_seen → last invocation date~/.claude/.harness/snapshots/{skill}/ = cumulative edit count for that skill. High edit frequency is a stability-watch signal| Status | Criterion | Label |
|---|---|---|
| Active | ≥ threshold (2x/30d) within range | 🟢 |
| Low | ≥1x, below threshold | 🟡 |
| Unused | 0x, under 90 days | 🔴 |
| Dead | 0x, 90+ days | 💀 |
| Discarded | Discard If triggered only | ⚪ |
| Unknown | No logs | ❓ |
Unused + no recent edits is a retire-candidate signal.
Skill-bank alignment signal: a skill bank that has drifted out of alignment with your current goals or workflow can underperform having no skill bank at all. Treat Unused and clearly-misaligned skills as a stronger retire-candidate signal than either alone.
Retirement-judge audit gate: before wiring Health mode's Dead/Unused/Discard classifications into any automated delete/archive pipeline, validate the classifier itself — deliberately include a few known-good (still-needed) skills in the candidate pool and check whether the classifier still flags them (false positives). A high false-positive rate means the retirement mechanism looks like it's working but silently isn't. Until that validation exists, this mode stays report-only — deletion is always the user's call (Invariant 5).
📊 Skill Health — {YYYY-MM-DD}
🟢 Active {N} | 🟡 Low {N} | 🔴 Unused {N} | 💀 Dead {N}
[Full status table]
[💀 Dead — recommend immediate review]
[⚪ Discard ratio >30% warning]
Save: ~/.claude/.harness/reports/skill-health-{date}.md
Aggregate Skill tool calls from session JSONL to measure per-skill monthly invocation frequency.
D:/Python313/python.exe, fallback to python/python3~/.claude/.harness/invocations/YYYY-MM.jsonOutput:
📊 Skill Invocation Report (YYYY-MM)
Top 5: [most invoked]
Zero-invocation: [never-invoked list — SHARPEN candidates]
Trigger:
/skill-ops qualityor/skill-ops --quality
Calculate a per-skill quality score (S_Q) and identify the bottom quartile as optimization targets.
⚠️ Boundary: S_Q is an operational signal for "keep vs. retire this skill" — not a quality oracle. It measures usage plus a handful of structural checklist items, not whether the skill's content is actually good. Don't read a low S_Q as "this skill is badly written" — it may simply be under-used. Deep content-quality review of a skill's actual reasoning/instructions is a separate activity outside this skill's scope (see
not_forabove).
~/.claude/skills/*/SKILL.md + SKILLS_INVENTORY.md📊 Skill Quality Report (YYYY-MM-DD)
S_Q ≥ 7: {N} (STRONG)
S_Q 4-6: {N} (ADEQUATE)
S_Q < 4: {N} (OPTIMIZE) ← bottom quartile
[OPTIMIZE target table: skill name | structure | usage | S_Q | 1-line improvement direction]
Save: ~/.claude/.harness/reports/skill-quality-{date}.md
| Does | Does NOT |
|---|---|
| [READ] Read the original snapshot target file | Directly modify skill/agent files |
| [WRITE] Save timestamped snapshot file | Execute automatic restoration (proposal only) |
| [BASH] Delete old snapshots (beyond 5) | Upload to external storage/cloud |
| [READ] Check prior Score Store score | Run a quality audit itself |
| [READ] Parse invocations JSONL (tool_use only) | Read session prompt text |
| [WRITE] health report / invocations JSON | Judge skill quality or decide deletion |
| [BASH] Scan session JSONL for frequency rollup | Access project code or databases |
Targets only
~/.claude/global skills/agents. Project code version control is git's job.
| Risky Action | Reversibility | Applied Layers |
|---|---|---|
Delete old snapshots (rm -rf) | medium | L1+L3 |
| Roll back a skill file (Write overwrite) | medium | L1+L3 |
| Failure Type | Detection | Recovery |
|---|---|---|
tool_failure | Write/Read failure | State "snapshot save failed". Never proceed with comparison without a snapshot |
logic_inconsistency | Score DELTA ≤ -5 but content actually improved | State "possible false positive" + ask user to re-review |
missing_data | Target file missing / invocations log missing | Discard that mode + state the reason |
input_error | Target skill unclear | Default to full-list scan. If specific target intended, ask 1 clarifying question |
cp command. Execution is the user's job. Violation → unintended file overwrite.WORKING / PARTIAL / BROKEN.| Rationalization | Rebuttal |
|---|---|
| "Skipping the re-verify after Write is fine if it succeeded" | Violates Invariant 2. A silent Write failure means rollback is attempted without a real snapshot |
| "Auto-restore would be more convenient" | Violates Invariant 3. If the user restores without understanding the regression cause, the root cause remains |
| "Snapshots older than 90 days can just stay" | Slows Glob traversal + wastes space. 90-day cleanup happens via session-checkpoint guidance, after user approval |
| "Skills at 0 usage can be auto-deleted" | Violates Invariant 5. Could be emergency-only, seasonal, or recently added. User decides |
| "Months with no logs can just be treated as 0 invocations" | Violates Invariant 6. Must be treated as Unknown |
| "High Discard If ratio → recommend immediate retirement" | Related to Invariant 7. The safeguard may simply be working correctly. Propose re-review only |