You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`--critique-agent` selects a framing variant tuned for each platform (claude, codex, cursor). The schema and exit codes are identical across all variants.
@@ -142,7 +142,7 @@ When an agent graph is ingested alongside a heuristic graph, `graph.contradictio
142
142
The per-skill validation ledger is an append-only `.skillcheck-history.json` file stored next to the SKILL.md. Each `--history` run appends one record: timestamp, skillcheck version, a 16-character content hash, which modes ran, which agents were used, and diagnostic counts. No message text, skill body content, or user identifiers are stored. Committing the ledger to git is safe.
143
143
144
144
```bash
145
-
skillcheck SKILL.md --history # run validation and append a record
145
+
skillcheck SKILL.md --history # run validation and append a record
146
146
skillcheck SKILL.md --show-history
147
147
skillcheck SKILL.md --show-history --format json
148
148
```
@@ -156,7 +156,7 @@ History ledger: SKILL.md
156
156
Schema version: 1
157
157
Total runs: 1
158
158
159
-
Run 1 2026-04-25T04:21:03Z FAIL exit=3
159
+
Run 1 2026-04-25T04:21:03Z FAIL exit=3
160
160
version=0.2.0 hash=0f4592dcb53cf2b5
161
161
modes=[symbolic, critique(claude), graph(claude)]
162
162
errors=5 warnings=36 info=4
@@ -192,9 +192,9 @@ Text output (default), excerpt from a run against the Anthropic skills corpus:
192
192
193
193
```
194
194
✔ PASS skills/claude-api/SKILL.md
195
-
line 2 ⚠ warning frontmatter.name.reserved-word Name contains the term 'claude' which may collide with platform-reserved namespaces. Verify with the target agent's documentation.
195
+
line 2 ⚠ warning frontmatter.name.reserved-word Name contains the term 'claude' which may collide with platform-reserved namespaces. Verify with the target agent's documentation.
196
196
name: claude-api
197
-
line 4 · info frontmatter.field.ecosystem Field 'license' is ecosystem-common but not in the agentskills.io spec. Add it to skillcheck.toml under [frontmatter] extension_fields if intentional.
197
+
line 4 · info frontmatter.field.ecosystem Field 'license' is ecosystem-common but not in the agentskills.io spec. Add it to skillcheck.toml under [frontmatter] extension_fields if intentional.
"message": "Name contains the term 'claude' which may collide with platform-reserved namespaces. Verify with the target agent's documentation.",
219
-
"line": 2,
220
-
"context": "name: claude-api"
221
-
}
222
-
]
223
-
}
224
-
]
206
+
"version": "1.2.0",
207
+
"files_checked": 18,
208
+
"files_passed": 18,
209
+
"files_failed": 0,
210
+
"results": [
211
+
{
212
+
"path": "skills/claude-api/SKILL.md",
213
+
"valid": false,
214
+
"diagnostics": [
215
+
{
216
+
"rule": "frontmatter.name.reserved-word",
217
+
"severity": "warning",
218
+
"message": "Name contains the term 'claude' which may collide with platform-reserved namespaces. Verify with the target agent's documentation.",
219
+
"line": 2,
220
+
"context": "name: claude-api"
221
+
}
222
+
]
223
+
}
224
+
]
225
225
}
226
226
```
227
227
@@ -358,35 +358,6 @@ Agent critique and graph modes validate the agent's JSON response against the ex
358
358
359
359
Directory-name matching compares against the immediate parent directory. Use `--skip-dirname-check` in CI environments that clone to temp paths.
360
360
361
-
## Testing
362
-
363
-
```bash
364
-
pip install -e ".[dev]"
365
-
python3 -m pytest tests/ -q
366
-
```
367
-
368
-
683 tests cover all rule modules, CLI exit codes, graph analyzers, divergence detection, critique parsing, history round-trips, and the full self-host pipeline against `skills/skillcheck/SKILL.md`. Fixtures are in `tests/fixtures/`; every rule has at least one positive and one negative test case. `tests/test_readme_test_count_claim.py` asserts this count matches `pytest --collect-only`, so any future suite change has to update the number in the same commit or CI fails.
369
-
370
-
## Maintainer Notes
371
-
372
-
After editing `skills/skillcheck/SKILL.md`, regenerate the self-host test fixtures so the integration suite stays pinned to the current graph:
373
-
374
-
```bash
375
-
make regen-self-host-fixtures
376
-
```
377
-
378
-
This runs `scripts/regen_self_host_fixtures.py`, which extracts a fresh heuristic graph and writes it to `tests/fixtures/self_host/graph_clean.json`.
379
-
380
-
To summarize a batch of skillcheck JSON outputs across many repos (the layout the field-test runs use, with one directory per repo, one subdirectory per skill, and `01-symbolic.json` / `02-strict-vscode.json` / `03-graph-analyze.json` / `04-graph-extracted.json` / `08-critique-report.json` / `09-graph-agent-report.json` / `10-full-pipeline.json` per skill), run:
It writes `summary.csv` and `findings.md` next to the batch directory. The script is intended for benchmark and field-test workflows; it is not part of the CLI surface and is not exposed as a console script.
387
-
388
-
To add a new rule: implement `def check_something(skill: ParsedSkill) -> list[Diagnostic]` in the appropriate module under `src/skillcheck/rules/`, register it in `src/skillcheck/rules/__init__.py`, add at least one positive and one negative fixture, and add a row to the Rules table above. Full conventions are in [`.github/CLAUDE.md`](.github/CLAUDE.md).
389
-
390
361
## Contributing
391
362
392
363
See [CONTRIBUTING.md](CONTRIBUTING.md) for testing, maintainer workflows, and rule-authoring conventions.
0 commit comments