[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GTPECVCDYC7HBE77C0YQK1":3,"skill-same:01M6GTPECVCDYC7HBE77C0YQK1":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6GTPECVCDYC7HBE77C0YQK1","schliff",null,"Deterministic skill linter and scoring engine for Claude Code — the Ruff for SKILL.md files. 7-dimension structural scoring (structure, triggers, quality, edges, efficiency, composability, clarity) with anti-gaming detection, ~32% rule-based patches, and cross-session episodic memory. An autoresearch loop that measures first, then fixes — not the other way around. Use for linting, scoring, and autonomously improving any Claude Code skill: trigger accuracy, output quality, edge coverage, token efficiency, composability, or custom metrics. Works with community, custom, project-local, or global skills. Trigger phrases: \"make this skill better\", \"optimize my skill\", \"iterate on this skill overnight\", \"improve [metric] from X to Y\", \"audit skill\", \"review my skill\", \"harden skill\", \"benchmark skill\", \"lint my skill\", \"score my skill\", or paste SKILL.md for auto-analysis. Also use when user shares skill without explicit instructions. Do NOT use for brand-new skills from scratch — use skill-creator first, then come to Schliff. Do NOT use for SQL query tuning. Do NOT use for prompt template authoring.","Zandereins\u002Fschliff","Zandereins","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F71465649?v=4","01M6GTNBEJ2EV5QPBW1XC980KE","zaneins ","01M6GTNBM5WEF5RJFZFWXCPQC5",18,"MIT","https:\u002F\u002Fgithub.com\u002FZandereins\u002Fschliff\u002Fblob\u002Fmain\u002Fskills\u002Fschliff\u002Ftests\u002Ffixtures\u002Fself-skill-baseline\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"scoring","paste","episodic memory","triggers","authoring","project","local","code skill","structure","edge","do","files","auto","use","prompt","brand","clarity","loop","improve","2026-11-10 10:12:30",false,"---\nname: schliff\ndescription: >\n  Deterministic skill linter and scoring engine for Claude Code — the Ruff for\n  SKILL.md files. 7-dimension structural scoring (structure, triggers, quality,\n  edges, efficiency, composability, clarity) with anti-gaming detection, ~32%\n  rule-based patches, and cross-session episodic memory. An autoresearch loop\n  that measures first, then fixes — not the other way around. Use for linting,\n  scoring, and autonomously improving any Claude Code skill: trigger accuracy,\n  output quality, edge coverage, token efficiency, composability, or custom\n  metrics. Works with community, custom, project-local, or global skills.\n  Trigger phrases: \"make this skill better\", \"optimize my skill\", \"iterate on\n  this skill overnight\", \"improve [metric] from X to Y\", \"audit skill\",\n  \"review my skill\", \"harden skill\", \"benchmark skill\", \"lint my skill\",\n  \"score my skill\", or paste SKILL.md for auto-analysis. Also use when user\n  shares skill without explicit instructions. Do NOT use for brand-new skills\n  from scratch — use skill-creator first, then come to Schliff. Do NOT use for\n  SQL query tuning. Do NOT use for prompt template authoring.\n---\n\n# Schliff — Skill Measurement & Iteration Framework\n\nConstraint + clear metric + disciplined iteration = compounding gains. The composite score measures structural quality (file organization, keyword coverage, eval suite breadth) — not runtime effectiveness. Use `--runtime` to validate actual behavior.\n\n## Quick Start (Only 2 Inputs Required)\n\n```bash\n\u002Fschliff\nTarget: path\u002Fto\u002FSKILL.md\nGoal: Make the skill trigger correctly for deployment scenarios\n```\n\nDefaults: Metric=composite_score, Verify=score-skill.py, Iterations=30.\n\n## Core Loop (NEVER Pauses)\n\n```\nINPUT: Skill path + GOAL + PRIMARY METRIC + VERIFY method + time budget\nSETUP: Read ALL files → Analyze → Generate eval suite → Baseline (#0)\nLOOP (N iterations, continues until goal met or budget exhausted):\n  Exp N: Review skill + results + git history\n  → Pick ONE atomic change (based on gaps + history)\n  → Edit SKILL.md or references\n  → Commit: \"schliff exp-N: [description]\"\n  → Run VERIFY, compute PRIMARY METRIC\n  → Improved? Keep. Worse? Revert. Error? Fix or skip.\n  → Append to history\u002F with diffs\n  CONSTRAINT: Fixed iterations prevent infinite loops; autonomous mode =\n  NO prompts between iterations, just continuous improvement.\n```\n\n## When to Use\n\n- **Skill not triggering** → Run `\u002Fschliff` on trigger-accuracy metric\n- **Wrong\u002Fincomplete outputs** → Set goal, metric = binary eval pass rate\n- **Harden for edge cases** → Focus on edge-coverage metric\n- **Skill too verbose** → Optimize token-efficiency metric\n- **Don't know what's wrong** → Run `\u002Fschliff:analyze` for auto-discovery\n- **Any custom goal** → Define GOAL, pick\u002Fcreate METRIC, set VERIFY command\n\nDo NOT use for creating new skills from scratch — use skill-creator first. Do NOT use for SQL query tuning or prompt template authoring.\n\n## Interface: GOAL + METRIC + VERIFY\n\n```bash\n\u002Fschliff\nTarget: .claude\u002Fskills\u002Fmy-skill\u002FSKILL.md\nGoal: Fix skill to handle deployment scenarios correctly\nMetric: Binary eval pass rate %\nVerify: bash scripts\u002Frun-eval.sh\nTime budget: 2 hours\nIterations: 30\n```\n\n**Regression guards** — prevent one dimension from regressing while improving another:\n\n```bash\n\u002Fschliff\nTarget: .claude\u002Fskills\u002Fdeploy\u002FSKILL.md\nGoal: Maximize trigger accuracy\nMetric: Trigger pass rate\nVerify: python3 scripts\u002Fscore-skill.py SKILL.md --json\nConstraint: efficiency >= 80, composability >= 90\n```\n\n## Quality Dimensions (Configurable via `--weights`)\n\n| Dimension | Metric | How | Limitation |\n|-----------|--------|-----|------------|\n| **Structure** | Frontmatter lint score | `score-skill.py` | File quality, not instruction correctness |\n| **Trigger accuracy** | Keyword overlap | TF-IDF heuristic | Does not predict actual triggering |\n| **Output quality** | Eval assertion breadth | Test cases | Does not verify runtime output |\n| **Edge coverage** | Edge-case definitions | Edge test suite | Does not verify runtime handling |\n| **Token efficiency** | Signal\u002Fnoise density | `score-skill.py` | Cannot assess content usefulness |\n| **Composability** | Scope boundaries | Static analysis | Cannot verify multi-skill interaction |\n| **Clarity** *(default)* | Contradiction + ambiguity | `score-skill.py` (`--no-clarity` to opt out) | Pattern-based, not semantic |\n\nSee `references\u002Fmetrics-catalog.md` for rubrics.\n\n## Custom Metrics\n\nDefine any metric via a shell command returning a number:\n\n```bash\nMetric: \"Time to first correct output (ms)\"\nVerify: time bash scripts\u002Frun-eval.sh | grep \"passed\"\n```\n\nValidate custom metrics by running once before the loop, for example by checking the return code.\n\n## Subcommands\n\n| Command | Purpose |\n|---------|---------|\n| `\u002Fschliff:init` | Bootstrap eval-suite + baseline |\n| `\u002Fschliff` | Autonomous loop with GOAL + METRIC |\n| `\u002Fschliff:auto` | Self-driving auto-improve: deterministic patches in a loop |\n| `\u002Fschliff:analyze` | Skill analysis, gaps, anti-patterns, baseline |\n| `\u002Fschliff:bench` | Single evaluation run, current score |\n| `\u002Fschliff:eval` | Run eval suite, show results |\n| `\u002Fschliff:report` | Generate improvement summary + diffs |\n| `\u002Fschliff:mesh` | Scan skills for trigger overlap, broken handoffs, scope collisions |\n| `\u002Fschliff:triage` | Cluster logged failures, auto-generate fixes |\n| `\u002Fschliff:log-failure` | Log a skill failure for later triage |\n\n## Before the Loop (Setup Phase)\n\n1. Read ALL files — SKILL.md + references + related skills.\n2. Parse GOAL + METRIC + VERIFY from input. Use defaults if unspecified.\n3. Run baseline — Execute VERIFY, record initial metric as exp #0.\n4. Generate eval suite if none exists. Use SKILL.md examples as seeds.\n5. Validate eval suite — Run once, verify assertions parse correctly.\n6. Show gap analysis with estimated iterations. Start NEVER-PAUSE mode on confirm.\n\n## Autonomous Loop (Eight-Phase Protocol)\n\nPer `references\u002Fimprovement-protocol.md`. Immutable rules:\n\n1. ONE change per experiment. Run `git diff` to verify scope, because atomic edits isolate causation.\n2. Run VERIFY, check number, keep or discard. This prevents subjective drift.\n3. Revert on regression: `git revert HEAD`. This ensures safe experimentation.\n4. Re-read ALL files before each change. This prevents contradictions.\n5. Descriptive commits: `schliff exp-7: add deployment edge cases`.\n6. Stuck (5+ discards): re-read files, review history, try the opposite. This avoids local optima.\n7. Never modify VERIFY during loop. Metric is fixed; skill is the variable.\n8. Log everything to `history\u002F` — diffs, metrics, keep\u002Fdiscard status.\n9. **Plateau guard:** Every 5 iterations, compare composite against 5-back. Delta \u003C 1.0 → switch strategy or stop.\n\n## Cross-Session Learning\n\nRead `history\u002Fresults.jsonl` at loop start. Parse keep\u002Fdiscard per strategy, compute success rates, prioritize high-ROI strategies. \u003C 1 point over 5 iterations triggers stop suggestion. Visualize with `scripts\u002Fprogress.py`.\n\n## Multi-File Skills\n\nRead full skill tree before each change. Extract sections to `references\u002F` when SKILL.md exceeds 400 lines. Verify cross-file references after each edit. For agents: treat system prompt as SKILL.md, tool definitions as references.\n\n## Discovery Mode (Auto-Gap Analysis)\n\nRun `\u002Fschliff:analyze` without a GOAL:\n\n1. Run all 7 dimension scorers.\n2. Identify weakest dimension and failure patterns.\n3. Cluster eval failures for systemic issues (e.g., \"all false negatives share short prompts\").\n4. Propose ranked improvements with estimated iteration cost.\n5. Suggest GOAL + METRIC + VERIFY. User confirms or overrides.\n\nUse when user says \"my skill needs work\" without specifying what, e.g., `\u002Fschliff:analyze path\u002Fto\u002FSKILL.md`.\n\n## Parallel Experimentation\n\nCreate 3 candidates on separate `git worktree` branches, run VERIFY on all, keep highest improvement. Use when stuck (5+ discards) or gap > 15 points. Fallback to sequential if worktree unavailable.\n\n## Noisy Metrics\n\nWhen metrics fluctuate (>5%): run VERIFY 3x, use median, keep only if improvement > 2x noise floor. Revert to best checkpoint if composite dropped > 2 points despite individual keeps.\n\n## Cost Tracking\n\n`run-eval.sh --log` records duration, tokens, delta, status per run. ROI = `delta \u002F iterations_spent`. Stop when last 5 iterations gained \u003C 0.5 points. Cross-session ROI via `progress.py --json`.\n\n## Self-Evolving Eval Suites\n\nEvery 10 iterations: classify tests as mastered\u002Fblocked\u002Fflaky via `classify_eval_health()`. Reduce mastered test weight. Log mutations to `history\u002F`. Run eval evolution BETWEEN sessions (preserves Rule 7).\n\n## Improvement Strategies (Dynamic)\n\nSelect based on gap analysis. Pick first dimension with gap > 10 points:\n\n1. Fix structural issues — Run `python3 scripts\u002Fscore-skill.py SKILL.md --json`.\n2. Expand triggers — Add synonyms, edge cases, negative boundaries.\n3. Add input\u002Foutput examples — Write 3+ concrete before\u002Fafter pairs.\n4. Add edge-case handling — Test with malformed input, missing context, empty files.\n5. Optimize density — Remove redundancy, compress verbose phrasing.\n6. Extract references — Move deep content to `references\u002F`.\n7. Verify composability — Check handoff points, run with adjacent skills.\n\nSee `references\u002Fmetrics-catalog.md` for patterns per dimension.\n\n## Example Session\n\n```bash\nGoal: Trigger accuracy from 60% to 90%\nVerify: bash scripts\u002Frun-eval.sh | grep \"PASS\" | wc -l\n\nExp 1: Add synonyms to description → 65% → Keep\nExp 2: Add negative trigger examples → 70% → Keep\nExp 3: Compress verbose setup section → 68% → Discard (revert)\nExp 4: Add edge case for partial audit → 75% → Keep\n```\n\nParse `history\u002Fresults.jsonl` between sessions. Compare keep rates to prioritize high-ROI changes next session.\n\n## Lineage\n\n`\u002Fskill-creator` → v1 → `\u002Fschliff` → autonomous grinding → merge. Roll back via `git log --oneline history\u002F`. For crashing skills: use `systematic-debugging` instead, then return to Schliff.\n\n## Requirements\n\nRequires Python >= 3.9, Git >= 2.0, jq >= 1.6, Bash >= 4.0. Standard library only. All `\u002Fschliff:*` commands are namespaced. Deterministic scorer, safe to re-run. If scoring fails, returns structured error.\n\n## Files\n\nRun `ls -R` in skill directory. Run `python3 scripts\u002Fscore-skill.py SKILL.md --json` for scores. Key files:\n\n- `scripts\u002Finit-skill.py` — Bootstrap eval-suite (`--json --dry-run`)\n- `scripts\u002Fgenerate-report.py` — Shareable improvement report\n- `scripts\u002Fscore-skill.py` — Dimension scores incl. runtime (`--diff --clarity --weights`)\n- `scripts\u002Ftext-gradient.py` — Invert scorer issues into fix list (`--json --top N --apply --dry-run`)\n- `scripts\u002Fauto-improve.py` — Autonomous loop (`--max-iterations N --dry-run --resume`)\n- `scripts\u002Fskill-mesh.py` — Multi-skill conflict detection (`--incremental`)\n- `scripts\u002Fmeta-report.py` — Strategy predictor + auto-calibration\n- `scripts\u002Fepisodic-store.py` — Cross-session memory (`--store --recall --synthesize`)\n- `scripts\u002Fparallel-runner.py` — Worktree parallel experimentation (`--strategies --auto`)\n- `scripts\u002Fruntime-evaluator.py` — Invoke Claude with test prompts, check output\n- `scripts\u002Fanalyze-skill.sh` — Legacy linter (score-skill.py has this built-in)\n- `scripts\u002Frun-eval.sh` — Run eval suite (`--runtime` auto-enabled if claude CLI available)\n- `scripts\u002Fprogress.py` — Convergence charts + strategy analysis (`--emit-meta`)\n- `hooks\u002Fsession-injector.js` — SessionStart hook: surfaces untriaged failures\n- `references\u002Fimprovement-protocol.md` — Full 9-phase loop spec\n- `references\u002Fmetrics-catalog.md` — Scoring rubrics + custom metrics\n- `templates\u002Feval-suite-template.json` — Eval skeleton for new skills\n","# Schliff — Skill Measurement & Iteration Framework\n\nConstraint + clear metric + disciplined iteration = compounding gains. The composite score measures structural quality (file organization, keyword coverage, eval suite breadth) — not runtime effectiveness. Use `--runtime` to validate actual behavior.\n\n## Quick Start (Only 2 Inputs Required)\n\n```bash\n\u002Fschliff\nTarget: path\u002Fto\u002FSKILL.md\nGoal: Make the skill trigger correctly for deployment scenarios\n```\n\nDefaults: Metric=composite_score, Verify=score-skill.py, Iterations=30.\n\n## Core Loop (NEVER Pauses)\n\n```\nINPUT: Skill path + GOAL + PRIMARY METRIC + VERIFY method + time budget\nSETUP: Read ALL files → Analyze → Generate eval suite → Baseline (#0)\nLOOP (N iterations, continues until goal met or budget exhausted):\n  Exp N: Review skill + results + git history\n  → Pick ONE atomic change (based on gaps + history)\n  → Edit SKILL.md or references\n  → Commit: \"schliff exp-N: [description]\"\n  → Run VERIFY, compute PRIMARY METRIC\n  → Improved? Keep. Worse? Revert. Error? Fix or skip.\n  → Append to history\u002F with diffs\n  CONSTRAINT: Fixed iterations prevent infinite loops; autonomous mode =\n  NO prompts between iterations, just continuous improvement.\n```\n\n## When to Use\n\n- **Skill not triggering** → Run `\u002Fschliff` on trigger-accuracy metric\n- **Wrong\u002Fincomplete outputs** → Set goal, metric = binary eval pass rate\n- **Harden for edge cases** → Focus on edge-coverage metric\n- **Skill too verbose** → Optimize token-efficiency metric\n- **Don't know what's wrong** → Run `\u002Fschliff:analyze` for auto-discovery\n- **Any custom goal** → Define GOAL, pick\u002Fcreate METRIC, set VERIFY command\n\nDo NOT use for creating new skills from scratch — use skill-creator first. Do NOT use for SQL query tuning or prompt template authoring.\n\n## Interface: GOAL + METRIC + VERIFY\n\n```bash\n\u002Fschliff\nTarget: .claude\u002Fskills\u002Fmy-skill\u002FSKILL.md\nGoal: Fix skill to handle deployment scenarios correctly\nMetric: Binary eval pass rate %\nVerify: bash scripts\u002Frun-eval.sh\nTime budget: 2 hours\nIterations: 30\n```\n\n**Regression guards** — prevent one dimension from regressing while improving another:\n\n```bash\n\u002Fschliff\nTarget: .claude\u002Fskills\u002Fdeploy\u002FSKILL.md\nGoal: Maximize trigger accuracy\nMetric: Trigger pass rate\nVerify: python3 scripts\u002Fscore-skill.py SKILL.md --json\nConstraint: efficiency >= 80, composability >= 90\n```\n\n## Quality Dimensions (Configurable via `--weights`)\n\n| Dimension | Metric | How | Limitation |\n|-----------|--------|-----|------------|\n| **Structure** | Frontmatter lint score | `score-skill.py` | File quality, not instruction correctness |\n| **Trigger accuracy** | Keyword overlap | TF-IDF heuristic | Does not predict actual triggering |\n| **Output quality** | Eval assertion breadth | Test cases | Does not verify runtime output |\n| **Edge coverage** | Edge-case definitions | Edge test suite | Does not verify runtime handling |\n| **Token efficiency** | Signal\u002Fnoise density | `score-skill.py` | Cannot assess content usefulness |\n| **Composability** | Scope boundaries | Static analysis | Cannot verify multi-skill interaction |\n| **Clarity** *(default)* | Contradiction + ambiguity | `score-skill.py` (`--no-clarity` to opt out) | Pattern-based, not semantic |\n\nSee `references\u002Fmetrics-catalog.md` for rubrics.\n\n## Custom Metrics\n\nDefine any metric via a shell command returning a number:\n\n```bash\nMetric: \"Time to first correct output (ms)\"\nVerify: time bash scripts\u002Frun-eval.sh | grep \"passed\"\n```\n\nValidate custom metrics by running once before the loop, for example by checking the return code.\n\n## Subcommands\n\n| Command | Purpose |\n|---------|---------|\n| `\u002Fschliff:init` | Bootstrap eval-suite + baseline |\n| `\u002Fschliff` | Autonomous loop with GOAL + METRIC |\n| `\u002Fschliff:auto` | Self-driving auto-improve: deterministic patches in a loop |\n| `\u002Fschliff:analyze` | Skill analysis, gaps, anti-patterns, baseline |\n| `\u002Fschliff:bench` | Single evaluation run, current score |\n| `\u002Fschliff:eval` | Run eval suite, show results |\n| `\u002Fschliff:report` | Generate improvement summary + diffs |\n| `\u002Fschliff:mesh` | Scan skills for trigger overlap, broken handoffs, scope collisions |\n| `\u002Fschliff:triage` | Cluster logged failures, auto-generate fixes |\n| `\u002Fschliff:log-failure` | Log a skill failure for later triage |\n\n## Before the Loop (Setup Phase)\n\n1. Read ALL files — SKILL.md + references + related skills.\n2. Parse GOAL + METRIC + VERIFY from input. Use defaults if unspecified.\n3. Run baseline — Execute VERIFY, record initial metric as exp #0.\n4. Generate eval suite if none exists. Use SKILL.md examples as seeds.\n5. Validate eval suite — Run once, verify assertions parse correctly.\n6. Show gap analysis with estimated iterations. Start NEVER-PAUSE mode on confirm.\n\n## Autonomous Loop (Eight-Phase Protocol)\n\nPer `references\u002Fimprovement-protocol.md`. Immutable rules:\n\n1. ONE change per experiment. Run `git diff` to verify scope, because atomic edits isolate causation.\n2. Run VERIFY, check number, keep or discard. This prevents subjective drift.\n3. Revert on regression: `git revert HEAD`. This ensures safe experimentation.\n4. Re-read ALL files before each change. This prevents contradictions.\n5. Descriptive commits: `schliff exp-7: add deployment edge cases`.\n6. Stuck (5+ discards): re-read files, review history, try the opposite. This avoids local optima.\n7. Never modify VERIFY during loop. Metric is fixed; skill is the variable.\n8. Log everything to `history\u002F` — diffs, metrics, keep\u002Fdiscard status.\n9. **Plateau guard:** Every 5 iterations, compare composite against 5-back. Delta \u003C 1.0 → switch strategy or stop.\n\n## Cross-Session Learning\n\nRead `history\u002Fresults.jsonl` at loop start. Parse keep\u002Fdiscard per strategy, compute success rates, prioritize high-ROI strategies. \u003C 1 point over 5 iterations triggers stop suggestion. Visualize with `scripts\u002Fprogress.py`.\n\n## Multi-File Skills\n\nRead full skill tree before each change. Extract sections to `references\u002F` when SKILL.md exceeds 400 lines. Verify cross-file references after each edit. For agents: treat system prompt as SKILL.md, tool definitions as references.\n\n## Discovery Mode (Auto-Gap Analysis)\n\nRun `\u002Fschliff:analyze` without a GOAL:\n\n1. Run all 7 dimension scorers.\n2. Identify weakest dimension and failure patterns.\n3. Cluster eval failures for systemic issues (e.g., \"all false negatives share short prompts\").\n4. Propose ranked improvements with estimated iteration cost.\n5. Suggest GOAL + METRIC + VERIFY. User confirms or overrides.\n\nUse when user says \"my skill needs work\" without specifying what, e.g., `\u002Fschliff:analyze path\u002Fto\u002FSKILL.md`.\n\n## Parallel Experimentation\n\nCreate 3 candidates on separate `git worktree` branches, run VERIFY on all, keep highest improvement. Use when stuck (5+ discards) or gap > 15 points. Fallback to sequential if worktree unavailable.\n\n## Noisy Metrics\n\nWhen metrics fluctuate (>5%): run VERIFY 3x, use median, keep only if improvement > 2x noise floor. Revert to best checkpoint if composite dropped > 2 points despite individual keeps.\n\n## Cost Tracking\n\n`run-eval.sh --log` records duration, tokens, delta, status per run. ROI = `delta \u002F iterations_spent`. Stop when last 5 iterations gained \u003C 0.5 points. Cross-session ROI via `progress.py --json`.\n\n## Self-Evolving Eval Suites\n\nEvery 10 iterations: classify tests as mastered\u002Fblocked\u002Fflaky via `classify_eval_health()`. Reduce mastered test weight. Log mutations to `history\u002F`. Run eval evolution BETWEEN sessions (preserves Rule 7).\n\n## Improvement Strategies (Dynamic)\n\nSelect based on gap analysis. Pick first dimension with gap > 10 points:\n\n1. Fix structural issues — Run `python3 scripts\u002Fscore-skill.py SKILL.md --json`.\n2. Expand triggers — Add synonyms, edge cases, negative boundaries.\n3. Add input\u002Foutput examples — Write 3+ concrete before\u002Fafter pairs.\n4. Add edge-case handling — Test with malformed input, missing context, empty files.\n5. Optimize density — Remove redundancy, compress verbose phrasing.\n6. Extract references — Move deep content to `references\u002F`.\n7. Verify composability — Check handoff points, run with adjacent skills.\n\nSee `references\u002Fmetrics-catalog.md` for patterns per dimension.\n\n## Example Session\n\n```bash\nGoal: Trigger accuracy from 60% to 90%\nVerify: bash scripts\u002Frun-eval.sh | grep \"PASS\" | wc -l\n\nExp 1: Add synonyms to description → 65% → Keep\nExp 2: Add negative trigger examples → 70% → Keep\nExp 3: Compress verbose setup section → 68% → Discard (revert)\nExp 4: Add edge case for partial audit → 75% → Keep\n```\n\nParse `history\u002Fresults.jsonl` between sessions. Compare keep rates to prioritize high-ROI changes next session.\n\n## Lineage\n\n`\u002Fskill-creator` → v1 → `\u002Fschliff` → autonomous grinding → merge. Roll back via `git log --oneline history\u002F`. For crashing skills: use `systematic-debugging` instead, then return to Schliff.\n\n## Requirements\n\nRequires Python >= 3.9, Git >= 2.0, jq >= 1.6, Bash >= 4.0. Standard library only. All `\u002Fschliff:*` commands are namespaced. Deterministic scorer, safe to re-run. If scoring fails, returns structured error.\n\n## Files\n\nRun `ls -R` in skill directory. Run `python3 scripts\u002Fscore-skill.py SKILL.md --json` for scores. Key files:\n\n- `scripts\u002Finit-skill.py` — Bootstrap eval-suite (`--json --dry-run`)\n- `scripts\u002Fgenerate-report.py` — Shareable improvement report\n- `scripts\u002Fscore-skill.py` — Dimension scores incl. runtime (`--diff --clarity --weights`)\n- `scripts\u002Ftext-gradient.py` — Invert scorer issues into fix list (`--json --top N --apply --dry-run`)\n- `scripts\u002Fauto-improve.py` — Autonomous loop (`--max-iterations N --dry-run --resume`)\n- `scripts\u002Fskill-mesh.py` — Multi-skill conflict detection (`--incremental`)\n- `scripts\u002Fmeta-report.py` — Strategy predictor + auto-calibration\n- `scripts\u002Fepisodic-store.py` — Cross-session memory (`--store --recall --synthesize`)\n- `scripts\u002Fparallel-runner.py` — Worktree parallel experimentation (`--strategies --auto`)\n- `scripts\u002Fruntime-evaluator.py` — Invoke Claude with test prompts, check output\n- `scripts\u002Fanalyze-skill.sh` — Legacy linter (score-skill.py has this built-in)\n- `scripts\u002Frun-eval.sh` — Run eval suite (`--runtime` auto-enabled if claude CLI available)\n- `scripts\u002Fprogress.py` — Convergence charts + strategy analysis (`--emit-meta`)\n- `hooks\u002Fsession-injector.js` — SessionStart hook: surfaces untriaged failures\n- `references\u002Fimprovement-protocol.md` — Full 9-phase loop spec\n- `references\u002Fmetrics-catalog.md` — Scoring rubrics + custom metrics\n- `templates\u002Feval-suite-template.json` — Eval skeleton for new skills\n",{"name":5,"description":7},"main","32fc4fc8414ac6b7ebfd748ae70c628a81f9e8c2","skills\u002Fschliff\u002Ftests\u002Ffixtures\u002Fself-skill-baseline",0,"https:\u002F\u002Fgithub.com\u002FZandereins\u002Fschliff","https:\u002F\u002Fpypi.org\u002Fproject\u002Fschliff\u002F","https:\u002F\u002Fgithub.com\u002FZandereins","M365 Consultant, AI Enthusiast, Agentic Engineering, Workflow Automation","2026-11-13 04:20:36",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add Zandereins\u002Fschliff --skill schliff",{"tool":68,"command":69},"bunx","bunx skills add Zandereins\u002Fschliff --skill schliff",{"tool":71,"command":72},"pnpm","pnpm dlx skills add Zandereins\u002Fschliff --skill schliff","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FZandereins\u002Fschliff\u002Fblob\u002Fmain\u002Fskills\u002Fschliff\u002Ftests\u002Ffixtures\u002Fself-skill-baseline\u002FSKILL.md",true,[76],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"eval-suite.json","REFERENCE","参考文档",39973,"https:\u002F\u002Fgithub.com\u002FZandereins\u002Fschliff\u002Fblob\u002Fmain\u002Fskills\u002Fschliff\u002Ftests\u002Ffixtures\u002Fself-skill-baseline\u002Feval-suite.json",[83,107],{"skillNo":84,"name":5,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":92,"publishedAt":48},"01M6GTNK4DSWBRJARF8HTC3C8R","Deterministic linter and scorer for instruction files — SKILL.md, AGENTS.md, CLAUDE.md. No model in the loop: the same bytes score the same everywhere. Use for linting, scoring, auditing or CI-gating an instruction file, and for checking whether the commands a file promises actually resolve in the repo. Trigger phrases: \"lint my skill\", \"score my skill\", \"audit skill\", \"review my skill\", \"harden skill\", \"make this skill better\", \"optimize my skill\", \"improve [metric] from X to Y\", \"benchmark skill\", \"check my AGENTS.md\", \"is my AGENTS.md lying\", or paste a SKILL.md for auto-analysis. Also use when a user shares an instruction file without explicit instructions. Do NOT use for authoring a file from scratch — use a skill-creator first, then schliff. Do NOT use for application-code linting, SQL tuning, or runtime behaviour testing.","https:\u002F\u002Fgithub.com\u002FZandereins\u002Fschliff\u002Fblob\u002Fmain\u002Fskills\u002Fschliff\u002FSKILL.md",[88,91],{"categoryNo":89,"categoryName":90,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[5,93,94,95,29,96,97,40,98,41,99,46,47,100,101,102,103,104,105,106],"model","which","linting","promises","optimize","uv","linter","Bash","analysis","ci","my skill","code","review","testing",{"skillNo":108,"name":109,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":115,"publishedAt":48},"01M6GTNE8VD6MDPQK533JTE78K","deploy-helper","https:\u002F\u002Fgithub.com\u002FZandereins\u002Fschliff\u002Fblob\u002Fmain\u002Fdemo\u002Fbad-skill\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[116,117,118],"deploy helper","deploy","helper"]