schliff 6.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. schliff-6.0.1/LICENSE +21 -0
  2. schliff-6.0.1/PKG-INFO +367 -0
  3. schliff-6.0.1/README.md +341 -0
  4. schliff-6.0.1/pyproject.toml +55 -0
  5. schliff-6.0.1/schliff.egg-info/PKG-INFO +367 -0
  6. schliff-6.0.1/schliff.egg-info/SOURCES.txt +71 -0
  7. schliff-6.0.1/schliff.egg-info/dependency_links.txt +1 -0
  8. schliff-6.0.1/schliff.egg-info/entry_points.txt +2 -0
  9. schliff-6.0.1/schliff.egg-info/top_level.txt +1 -0
  10. schliff-6.0.1/setup.cfg +4 -0
  11. schliff-6.0.1/skills/__init__.py +0 -0
  12. schliff-6.0.1/skills/schliff/SKILL.md +297 -0
  13. schliff-6.0.1/skills/schliff/__init__.py +0 -0
  14. schliff-6.0.1/skills/schliff/eval-suite.json +832 -0
  15. schliff-6.0.1/skills/schliff/hooks/hooks.json +15 -0
  16. schliff-6.0.1/skills/schliff/hooks/session-injector.js +204 -0
  17. schliff-6.0.1/skills/schliff/references/improvement-protocol.md +776 -0
  18. schliff-6.0.1/skills/schliff/references/metrics-catalog.md +185 -0
  19. schliff-6.0.1/skills/schliff/references/skill-patterns.md +110 -0
  20. schliff-6.0.1/skills/schliff/references/state-management.md +54 -0
  21. schliff-6.0.1/skills/schliff/scripts/__init__.py +0 -0
  22. schliff-6.0.1/skills/schliff/scripts/achievements.py +286 -0
  23. schliff-6.0.1/skills/schliff/scripts/analyze-skill.sh +287 -0
  24. schliff-6.0.1/skills/schliff/scripts/auto-improve.py +648 -0
  25. schliff-6.0.1/skills/schliff/scripts/cli.py +143 -0
  26. schliff-6.0.1/skills/schliff/scripts/dashboard.py +313 -0
  27. schliff-6.0.1/skills/schliff/scripts/doctor.py +275 -0
  28. schliff-6.0.1/skills/schliff/scripts/episodic-store.py +5 -0
  29. schliff-6.0.1/skills/schliff/scripts/episodic_store.py +536 -0
  30. schliff-6.0.1/skills/schliff/scripts/generate-report.py +538 -0
  31. schliff-6.0.1/skills/schliff/scripts/init-skill.py +799 -0
  32. schliff-6.0.1/skills/schliff/scripts/meta-report.py +5 -0
  33. schliff-6.0.1/skills/schliff/scripts/meta_report.py +480 -0
  34. schliff-6.0.1/skills/schliff/scripts/nlp.py +91 -0
  35. schliff-6.0.1/skills/schliff/scripts/parallel-runner.py +5 -0
  36. schliff-6.0.1/skills/schliff/scripts/parallel_runner.py +456 -0
  37. schliff-6.0.1/skills/schliff/scripts/progress.py +827 -0
  38. schliff-6.0.1/skills/schliff/scripts/run-eval.sh +521 -0
  39. schliff-6.0.1/skills/schliff/scripts/runtime-evaluator.py +256 -0
  40. schliff-6.0.1/skills/schliff/scripts/score-skill.py +180 -0
  41. schliff-6.0.1/skills/schliff/scripts/score_skill.py +11 -0
  42. schliff-6.0.1/skills/schliff/scripts/scoring/__init__.py +23 -0
  43. schliff-6.0.1/skills/schliff/scripts/scoring/clarity.py +179 -0
  44. schliff-6.0.1/skills/schliff/scripts/scoring/coherence.py +76 -0
  45. schliff-6.0.1/skills/schliff/scripts/scoring/composability.py +142 -0
  46. schliff-6.0.1/skills/schliff/scripts/scoring/composite.py +178 -0
  47. schliff-6.0.1/skills/schliff/scripts/scoring/diff.py +97 -0
  48. schliff-6.0.1/skills/schliff/scripts/scoring/edges.py +117 -0
  49. schliff-6.0.1/skills/schliff/scripts/scoring/efficiency.py +149 -0
  50. schliff-6.0.1/skills/schliff/scripts/scoring/patterns.py +195 -0
  51. schliff-6.0.1/skills/schliff/scripts/scoring/quality.py +137 -0
  52. schliff-6.0.1/skills/schliff/scripts/scoring/runtime.py +124 -0
  53. schliff-6.0.1/skills/schliff/scripts/scoring/structure.py +145 -0
  54. schliff-6.0.1/skills/schliff/scripts/scoring/triggers.py +153 -0
  55. schliff-6.0.1/skills/schliff/scripts/shared.py +286 -0
  56. schliff-6.0.1/skills/schliff/scripts/skill-mesh.py +5 -0
  57. schliff-6.0.1/skills/schliff/scripts/skill_mesh.py +858 -0
  58. schliff-6.0.1/skills/schliff/scripts/terminal_art.py +214 -0
  59. schliff-6.0.1/skills/schliff/scripts/test-integration.sh +1765 -0
  60. schliff-6.0.1/skills/schliff/scripts/test-self.sh +168 -0
  61. schliff-6.0.1/skills/schliff/scripts/text-gradient.py +5 -0
  62. schliff-6.0.1/skills/schliff/scripts/text_gradient.py +1043 -0
  63. schliff-6.0.1/skills/schliff/templates/eval-suite-template.json +109 -0
  64. schliff-6.0.1/skills/schliff/tests/proof/bad-eval-suite.json +60 -0
  65. schliff-6.0.1/skills/schliff/tests/proof/bad-skill.md +10 -0
  66. schliff-6.0.1/skills/schliff/tests/proof/test-proof.sh +222 -0
  67. schliff-6.0.1/skills/schliff/tests/unit/conftest.py +17 -0
  68. schliff-6.0.1/skills/schliff/tests/unit/test_edge_cases.py +357 -0
  69. schliff-6.0.1/skills/schliff/tests/unit/test_golden.py +274 -0
  70. schliff-6.0.1/skills/schliff/tests/unit/test_patterns.py +513 -0
  71. schliff-6.0.1/skills/schliff/tests/unit/test_scoring.py +1051 -0
  72. schliff-6.0.1/skills/schliff/tests/unit/test_shared.py +279 -0
  73. schliff-6.0.1/skills/schliff/tests/unit/test_stress.py +816 -0
schliff-6.0.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Zandereins (Franz Paul)
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
schliff-6.0.1/PKG-INFO ADDED
@@ -0,0 +1,367 @@
1
+ Metadata-Version: 2.4
2
+ Name: schliff
3
+ Version: 6.0.1
4
+ Summary: Autonomous skill improvement and measurement framework for Claude Code
5
+ Author: Franz Paul
6
+ License: MIT
7
+ Project-URL: Repository, https://github.com/Zandereins/schliff
8
+ Project-URL: Issues, https://github.com/Zandereins/schliff/issues
9
+ Project-URL: Changelog, https://github.com/Zandereins/schliff/blob/main/CHANGELOG.md
10
+ Keywords: claude-code,skills,scoring,evaluation,autonomous-improvement
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Quality Assurance
21
+ Classifier: Topic :: Software Development :: Testing
22
+ Requires-Python: >=3.9
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Dynamic: license-file
26
+
27
+ # Schliff
28
+
29
+ The finishing cut for Claude Code skills.
30
+
31
+ <p align="center">
32
+ <img src="demo/schliff-demo.gif?v=2" alt="Schliff improving a skill from 56.9 to 99.9" width="720">
33
+ </p>
34
+
35
+ ```
36
+ Baseline: █████░░░░░░░░░░░░░░░ 54.0/100 [D]
37
+ After 18x: ████████████████████ 98.3/100 [S]
38
+
39
+ What changed:
40
+ Structure 70 → 100 Added description, examples, concrete commands
41
+ Efficiency 35 → 93 Removed hedging language, improved density
42
+ Composability 30 → 90 Added scope, error behavior, dependencies
43
+ Clarity 90 → 100 Resolved vague references
44
+ ```
45
+
46
+ > You wrote a skill. It worked. Three weeks later, triggers misfire, edge cases slip through, instructions contradict themselves. Schliff measures the damage (deterministic scoring, no LLM needed) and fixes it autonomously (Claude Code applies patches, measures delta, reverts regressions).
47
+
48
+ [![GitHub stars](https://img.shields.io/github/stars/Zandereins/schliff?style=flat-square)](https://github.com/Zandereins/schliff)
49
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
50
+ [![Tests](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Zandereins/130bb61237b5b9b1536718e6a2296d4a/raw/schliff-tests.json)](.github/workflows/test.yml)
51
+ [![Structural Score](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Zandereins/130bb61237b5b9b1536718e6a2296d4a/raw/schliff-score.json)](skills/schliff/scripts/score-skill.py)
52
+ [![v6.0.0](https://img.shields.io/badge/Version-6.0.0-F59E0B)](CHANGELOG.md)
53
+ [![Claude Code Skill](https://img.shields.io/badge/Claude_Code-Skill-8A2BE2)](https://docs.anthropic.com/en/docs/claude-code/skills)
54
+
55
+ ---
56
+
57
+ ## Try It — Demo in 3 minutes
58
+
59
+ > **Note:** Schliff commands (`/schliff:*`) run inside [Claude Code](https://docs.anthropic.com/en/docs/claude-code), not in a regular terminal. Claude's intelligence decides which patches to apply — the scorer is deterministic, the improvement loop uses the LLM.
60
+
61
+ ```bash
62
+ # 1. Install once (terminal, ~1 min)
63
+ git clone https://github.com/Zandereins/schliff.git && bash schliff/install.sh
64
+
65
+ # 2. Score the included demo skill (Claude Code, ~10 sec)
66
+ /schliff:init demo/bad-skill/SKILL.md
67
+
68
+ # 3. Watch it improve the demo skill (Claude Code, ~2 min)
69
+ /schliff:auto
70
+ ```
71
+
72
+ **What you'll see on the demo skill:** 18 autonomous iterations. Each one: patch → measure → keep or revert. Score climbs from 54 [D] to 98 [S]. Stops when ROI plateaus. Real-world skills take longer and may not reach [S] — complex skills plateau around [A] to [S] depending on their eval suite coverage.
73
+
74
+ **Prerequisites:** Python 3.9+, Bash, Git, jq
75
+
76
+ Already have skills? Run `/schliff:doctor` to scan all installed skills and show health grades + token costs.
77
+
78
+ ---
79
+
80
+ ## What Schliff Fixes
81
+
82
+ Real improvements from the included demo skill:
83
+
84
+ | Problem | What Schliff does | Result |
85
+ |---------|-------------------|--------|
86
+ | Triggers misfire | Keyword matching + negative boundaries | **0% → 89%** accuracy |
87
+ | Missing structure | Added examples, edge cases, frontmatter | **75 → 100**/100 |
88
+ | Vague instructions | Replaced hedging with concrete commands | **35 → 93**/100 |
89
+ | No scope boundaries | Added handoff declarations + "do NOT use" | **40 → 100**/100 |
90
+
91
+ Automated. No human intervention. Stops when ROI plateaus.
92
+
93
+ ---
94
+
95
+ ## This Is For You If
96
+
97
+ - **Skill Creator** — Run `/schliff:init` on your v1 skill to get a baseline + eval suite
98
+ - **Skill Maintainer** — Run `/schliff:auto` to grind any skill from [C] to [S] overnight
99
+ - **Fleet Manager (10+ skills)** — Run `/schliff:doctor` to scan everything, detect conflicts + token costs
100
+ - **Quality Gate** — Run `/schliff:eval` before shipping, or use the [GitHub Action](#github-action) in CI
101
+
102
+ ---
103
+
104
+ ## Why It Works
105
+
106
+ **Autonomous** — Runs unattended. Applies patches, measures delta, reverts regressions, stops when ROI drops. No prompts, no babysitting.
107
+
108
+ **Deterministic scoring** — The 7-dimension scorer is pure Python, no LLM. Same input, same output. The improvement loop (`/schliff:auto`) runs inside Claude Code — Claude decides which patches to apply, but 60-70% of fixes follow deterministic rules (frontmatter, noise removal, TODO cleanup).
109
+
110
+ **Empirical** — 7 scoring dimensions (structure, triggers, quality, edges, efficiency, composability, clarity) + optional runtime validation against actual Claude behavior.
111
+
112
+ **Learns** — Episodic memory remembers which strategies worked across sessions. Predicts success before trying. Your 50th skill improves faster than your 1st.
113
+
114
+ **Scales** — MinHash + LSH mesh analysis detects trigger conflicts across 50+ skills in O(n). Doctor command shows health grades for your entire skill collection.
115
+
116
+ ---
117
+
118
+ ## Autoresearch for Claude Code
119
+
120
+ Inspired by [Karpathy's autoresearch](https://github.com/karpathy/autoresearch) (50K+ stars) — Schliff applies the same autonomous improvement loop to Claude Code skills:
121
+
122
+ | | Karpathy's autoresearch | Schliff |
123
+ |---|---|---|
124
+ | **Target** | ML training scripts | Claude Code SKILL.md files |
125
+ | **Metric** | 1 (val_bpb) | 7 dimensions |
126
+ | **Patches** | 100% LLM | 60-70% deterministic |
127
+ | **Memory** | None | Cross-session episodic store |
128
+ | **Fleet** | 1 file | 50+ skills (Doctor + Mesh) |
129
+
130
+ Both run overnight. Both stop when ROI plateaus. Both improve unattended.
131
+
132
+ ---
133
+
134
+ ## Commands
135
+
136
+ ### Core
137
+
138
+ | Command | What It Does |
139
+ |---------|--------------|
140
+ | `/schliff` | Full autonomous loop with GOAL + METRIC |
141
+ | `/schliff:doctor` | Scan ALL installed skills, show health summary |
142
+ | `/schliff:auto` | Self-driving auto-improve (deterministic patches, no prompts) |
143
+ | `/schliff:init` | Bootstrap eval suite + baseline from any SKILL.md |
144
+ | `/schliff:report` | Generate shareable markdown report with badge |
145
+
146
+ ### Analyze & Debug
147
+
148
+ | Command | What It Does |
149
+ |---------|--------------|
150
+ | `/schliff:analyze` | One-shot gap analysis with ranked recommendations |
151
+ | `/schliff:bench` | Establish quality baseline for a skill |
152
+ | `/schliff:eval` | Run eval suite assertions |
153
+ | `/schliff:mesh` | Detect trigger conflicts across all installed skills |
154
+ | `/schliff:triage` | Cluster failures, auto-generate fixes |
155
+ | `/schliff:log-failure` | Log a skill failure for later triage |
156
+ | `/schliff:update` | Update Schliff to latest version |
157
+
158
+ ---
159
+
160
+ <details>
161
+ <summary><b>How It Scores</b> — 7 dimensions + optional runtime</summary>
162
+
163
+ Two modes, one decision:
164
+
165
+ **Structural Score** (default) — Instant, zero LLM cost. Pure Python analysis of file organization, trigger keywords, eval coverage, edge cases, efficiency, composability. No API calls needed. Use `schliff score SKILL.md` from any terminal or `/schliff:bench` in Claude Code.
166
+
167
+ **Runtime Score** (`--runtime`) — Invokes Claude with test prompts, validates actual behavior against assertions. Requires Claude CLI. Use before shipping to production.
168
+
169
+ **Improvement Loop** (`/schliff:auto`) — Runs **inside Claude Code**. Claude reads the scorer output, picks the highest-impact fix, patches the SKILL.md, re-scores, keeps or reverts. This is where the LLM intelligence lives. The scorer is the ruler; Claude is the craftsman.
170
+
171
+ | Dimension | Weight | What It Measures |
172
+ |-----------|--------|-----------------|
173
+ | Structure | 15% | Frontmatter, headers, examples, progressive disclosure |
174
+ | Trigger Accuracy | 20% | TF-IDF keyword overlap against eval suite prompts |
175
+ | Eval Coverage | 20% | Assertion breadth and eval suite coverage |
176
+ | Edge Coverage | 15% | Edge case definitions in eval suite |
177
+ | Token Efficiency | 10% | Information density, signal-to-noise ratio |
178
+ | Composability | 10% | Scope boundaries, handoff declarations |
179
+ | Clarity | 5% | Contradiction detection, vague references, ambiguity |
180
+ | Runtime *(opt-in)* | 10% | Actual Claude behavior against assertions |
181
+
182
+ Grades: **S** (>=95), **A** (>=85), **B** (>=75), **C** (>=65), **D** (>=50), **E** (>=35), **F** (<35).
183
+
184
+ Full scoring methodology: [docs/SCORING.md](docs/SCORING.md)
185
+
186
+ </details>
187
+
188
+ <details>
189
+ <summary><b>Dashboard</b> — Health overview for any skill</summary>
190
+
191
+ ```
192
+ ======================================================================
193
+ Schliff Health Dashboard: schliff
194
+ ======================================================================
195
+
196
+ Structural Score: ███████████████████░ 95.4/100 [S]
197
+ [7/8 dimensions, 90% coverage]
198
+
199
+ Dimensions:
200
+ structure ██████████ 100/100
201
+ triggers █████████░ 95/100
202
+ quality █████████░ 91/100
203
+ edges ██████████ 100/100
204
+ efficiency ████████░░ 84/100
205
+ composability ██████████ 100/100
206
+ clarity ██████████ 100/100
207
+ ======================================================================
208
+ ```
209
+ </details>
210
+
211
+ <details>
212
+ <summary><b>Auto-Improve</b> — Autonomous grinding with EMA-based stopping</summary>
213
+
214
+ ```
215
+ Scoring baseline...
216
+ Baseline: 95.4/100 (7 dims)
217
+
218
+ --- Iteration 1 ---
219
+ Stopping: composite >= 98 (95.4)
220
+
221
+ Schliff Auto-Improve Complete
222
+ ──────────────────────────────────────────────────
223
+ Score: 95 → 95.4/100 ███████████████████░ (+0.0) [S]
224
+ Iters: 0 | Kept: 0 | Time: 1s
225
+ Stop: composite >= 98 (95.4)
226
+ (Already near-optimal — consider runtime eval for further gains)
227
+ ```
228
+ </details>
229
+
230
+ <details>
231
+ <summary><b>Doctor</b> — Scan all installed skills at once</summary>
232
+
233
+ ```
234
+ ======================================================================
235
+ Schliff Doctor — Skill Health Check
236
+ ======================================================================
237
+
238
+ 1 skills scanned | 1 healthy | 4 mesh issues
239
+
240
+ Skill Score Grade Dims Issues Action
241
+ --------------------------------------------------------------------
242
+ schliff 90 [A] 7/8 0 Healthy
243
+
244
+ Mesh Health: 68/100 (4 cross-skill issues)
245
+ Run /schliff:mesh for details.
246
+
247
+ NOTE: Scores are STRUCTURAL — they measure file organization,
248
+ not runtime effectiveness. Use --runtime for validated scoring.
249
+ ======================================================================
250
+ ```
251
+ </details>
252
+
253
+ <details>
254
+ <summary><b>What's New in v6.0</b></summary>
255
+
256
+ | Feature | Description |
257
+ |---------|-------------|
258
+ | Rebrand to Schliff | "The finishing cut" — German for polish/grind |
259
+ | Clarity as Default | 7th dimension always active (contradictions, vague refs, ambiguity) |
260
+ | Token Cost Estimation | Doctor shows per-skill token cost + fleet total |
261
+ | GitHub Action | `Zandereins/schliff@v6` — CI quality gate with PR comments |
262
+ | pip CLI | `schliff score SKILL.md` — works without Claude Code |
263
+ | Actionable Doctor | Copy-paste commands with full skill paths |
264
+ | Trigger Confidence | Small eval suites (<8 triggers) capped at score 60 |
265
+ | Context-aware Contradictions | "run tests" vs "run tests in production" distinguished |
266
+ | Anti-gaming | Empty headers, repetitive markers, binary composability fixed |
267
+ | 443 Tests (unit + integration + proof) | +70 stress tests, +28 edge cases, +76 patterns, +20 golden files |
268
+ | 40 Security Fixes | Shell injection, prompt injection, ReDoS, supply chain |
269
+
270
+ </details>
271
+
272
+ ---
273
+
274
+ ## Quality & Security
275
+
276
+ Schliff scores itself — 7 dimensions, same engine, no exceptions.
277
+
278
+ | Metric | Value | What This Means |
279
+ |--------|-------|-----------------|
280
+ | Structural Score | **95.4 / 100** [S] | Production-ready. 10 composability sub-checks, all passing. |
281
+ | Tests | **443 passing** | 318 unit + 99 integration + 20 self + 6 proof. Every scorer rule tested. |
282
+ | Security | **40 fixes** | Shell injection, prompt injection, ReDoS, supply chain. |
283
+ | Dimensions | **7 + runtime** | Transparent, rule-based, explainable scoring. |
284
+ | Journey | v1.0 (62.5) → v6.0 (95.4) | 7 major versions. Continuous improvement, no regressions. |
285
+
286
+ [Scoring methodology](docs/SCORING.md) | [Security details](CHANGELOG.md)
287
+
288
+ ---
289
+
290
+ ## GitHub Action
291
+
292
+ Score skills in CI. Block PRs that regress. The Codecov for SKILL.md files.
293
+
294
+ ```yaml
295
+ - uses: Zandereins/schliff@v6
296
+ with:
297
+ skill-path: '.claude/skills/my-skill/SKILL.md'
298
+ minimum-score: '75' # blocks PR if below
299
+ comment-on-pr: 'true' # posts score table on PR
300
+ ```
301
+
302
+ ---
303
+
304
+ ## CLI
305
+
306
+ Score any skill without Claude Code:
307
+
308
+ ```bash
309
+ pip install schliff
310
+
311
+ schliff score path/to/SKILL.md # score a skill
312
+ schliff score path/to/SKILL.md --json # JSON output
313
+ schliff doctor # scan all installed skills
314
+ ```
315
+
316
+ ---
317
+
318
+ ## Ecosystem
319
+
320
+ `skill-creator` builds a v1 skill. Schliff grinds it to production quality.
321
+
322
+ ```
323
+ skill-creator → v1 SKILL.md → /schliff:auto → autonomous grinding → ship
324
+ ```
325
+
326
+ - **[skill-creator](https://github.com/anthropics/courses/tree/master/claude-code/09-skill-creator)** — generate the first draft
327
+ - **[autoresearch](https://github.com/uditgoenka/autoresearch)** — generalized autonomous research for Claude Code
328
+
329
+ ---
330
+
331
+ ## Badge
332
+
333
+ Score your skill and add this to your README:
334
+
335
+ ```markdown
336
+ [![Schliff: 95 [S]](https://img.shields.io/badge/Schliff-95%2F100_%5BS%5D-brightgreen)](https://github.com/Zandereins/schliff)
337
+ ```
338
+
339
+ [![Schliff: 95 [S]](https://img.shields.io/badge/Schliff-95%2F100_%5BS%5D-brightgreen)](https://github.com/Zandereins/schliff)
340
+
341
+ ---
342
+
343
+ ## Contributing
344
+
345
+ Found a bug in the scorer? Add a test case to `eval-suite.json` and open an issue.
346
+ Want to improve scoring logic? Edit `score-skill.py`, run `bash test-integration.sh`, and PR the diff.
347
+
348
+ ---
349
+
350
+ ## Next Steps
351
+
352
+ 1. [Try the 3-minute demo](#try-it--3-minutes-zero-config) — see a skill go from [D] to [S]
353
+ 2. Run `/schliff:doctor` on your own skills — instant health check
354
+ 3. Add the [GitHub Action](#github-action) to your CI — quality gate for every PR
355
+ 4. [Read the scoring methodology](docs/SCORING.md) — understand what each dimension measures
356
+
357
+ Questions? [Open an issue](https://github.com/Zandereins/schliff/issues) — we respond fast.
358
+
359
+ ---
360
+
361
+ ## License
362
+
363
+ MIT — do whatever you want.
364
+
365
+ ---
366
+
367
+ *Built by [Franz Paul](https://github.com/Zandereins) with Claude Code.*