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.
- schliff-6.0.1/LICENSE +21 -0
- schliff-6.0.1/PKG-INFO +367 -0
- schliff-6.0.1/README.md +341 -0
- schliff-6.0.1/pyproject.toml +55 -0
- schliff-6.0.1/schliff.egg-info/PKG-INFO +367 -0
- schliff-6.0.1/schliff.egg-info/SOURCES.txt +71 -0
- schliff-6.0.1/schliff.egg-info/dependency_links.txt +1 -0
- schliff-6.0.1/schliff.egg-info/entry_points.txt +2 -0
- schliff-6.0.1/schliff.egg-info/top_level.txt +1 -0
- schliff-6.0.1/setup.cfg +4 -0
- schliff-6.0.1/skills/__init__.py +0 -0
- schliff-6.0.1/skills/schliff/SKILL.md +297 -0
- schliff-6.0.1/skills/schliff/__init__.py +0 -0
- schliff-6.0.1/skills/schliff/eval-suite.json +832 -0
- schliff-6.0.1/skills/schliff/hooks/hooks.json +15 -0
- schliff-6.0.1/skills/schliff/hooks/session-injector.js +204 -0
- schliff-6.0.1/skills/schliff/references/improvement-protocol.md +776 -0
- schliff-6.0.1/skills/schliff/references/metrics-catalog.md +185 -0
- schliff-6.0.1/skills/schliff/references/skill-patterns.md +110 -0
- schliff-6.0.1/skills/schliff/references/state-management.md +54 -0
- schliff-6.0.1/skills/schliff/scripts/__init__.py +0 -0
- schliff-6.0.1/skills/schliff/scripts/achievements.py +286 -0
- schliff-6.0.1/skills/schliff/scripts/analyze-skill.sh +287 -0
- schliff-6.0.1/skills/schliff/scripts/auto-improve.py +648 -0
- schliff-6.0.1/skills/schliff/scripts/cli.py +143 -0
- schliff-6.0.1/skills/schliff/scripts/dashboard.py +313 -0
- schliff-6.0.1/skills/schliff/scripts/doctor.py +275 -0
- schliff-6.0.1/skills/schliff/scripts/episodic-store.py +5 -0
- schliff-6.0.1/skills/schliff/scripts/episodic_store.py +536 -0
- schliff-6.0.1/skills/schliff/scripts/generate-report.py +538 -0
- schliff-6.0.1/skills/schliff/scripts/init-skill.py +799 -0
- schliff-6.0.1/skills/schliff/scripts/meta-report.py +5 -0
- schliff-6.0.1/skills/schliff/scripts/meta_report.py +480 -0
- schliff-6.0.1/skills/schliff/scripts/nlp.py +91 -0
- schliff-6.0.1/skills/schliff/scripts/parallel-runner.py +5 -0
- schliff-6.0.1/skills/schliff/scripts/parallel_runner.py +456 -0
- schliff-6.0.1/skills/schliff/scripts/progress.py +827 -0
- schliff-6.0.1/skills/schliff/scripts/run-eval.sh +521 -0
- schliff-6.0.1/skills/schliff/scripts/runtime-evaluator.py +256 -0
- schliff-6.0.1/skills/schliff/scripts/score-skill.py +180 -0
- schliff-6.0.1/skills/schliff/scripts/score_skill.py +11 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/__init__.py +23 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/clarity.py +179 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/coherence.py +76 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/composability.py +142 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/composite.py +178 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/diff.py +97 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/edges.py +117 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/efficiency.py +149 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/patterns.py +195 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/quality.py +137 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/runtime.py +124 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/structure.py +145 -0
- schliff-6.0.1/skills/schliff/scripts/scoring/triggers.py +153 -0
- schliff-6.0.1/skills/schliff/scripts/shared.py +286 -0
- schliff-6.0.1/skills/schliff/scripts/skill-mesh.py +5 -0
- schliff-6.0.1/skills/schliff/scripts/skill_mesh.py +858 -0
- schliff-6.0.1/skills/schliff/scripts/terminal_art.py +214 -0
- schliff-6.0.1/skills/schliff/scripts/test-integration.sh +1765 -0
- schliff-6.0.1/skills/schliff/scripts/test-self.sh +168 -0
- schliff-6.0.1/skills/schliff/scripts/text-gradient.py +5 -0
- schliff-6.0.1/skills/schliff/scripts/text_gradient.py +1043 -0
- schliff-6.0.1/skills/schliff/templates/eval-suite-template.json +109 -0
- schliff-6.0.1/skills/schliff/tests/proof/bad-eval-suite.json +60 -0
- schliff-6.0.1/skills/schliff/tests/proof/bad-skill.md +10 -0
- schliff-6.0.1/skills/schliff/tests/proof/test-proof.sh +222 -0
- schliff-6.0.1/skills/schliff/tests/unit/conftest.py +17 -0
- schliff-6.0.1/skills/schliff/tests/unit/test_edge_cases.py +357 -0
- schliff-6.0.1/skills/schliff/tests/unit/test_golden.py +274 -0
- schliff-6.0.1/skills/schliff/tests/unit/test_patterns.py +513 -0
- schliff-6.0.1/skills/schliff/tests/unit/test_scoring.py +1051 -0
- schliff-6.0.1/skills/schliff/tests/unit/test_shared.py +279 -0
- 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
|
+
[](https://github.com/Zandereins/schliff)
|
|
49
|
+
[](LICENSE)
|
|
50
|
+
[](.github/workflows/test.yml)
|
|
51
|
+
[](skills/schliff/scripts/score-skill.py)
|
|
52
|
+
[](CHANGELOG.md)
|
|
53
|
+
[](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.*
|