Semantic judge — bring your own agent
aispekt now has the layer no regex can provide, without asking for an API key: the judge is whatever AI agent you already run.
aispekt judge emit <file-or-dir>— produces a self-contained JSON brief: the file content, one task per semantic check (dead weight, vague intent, semantic contradictions, stale guidance — each with its evidence citation), and the exact answer contract. Any judge completes it: an agent, a BYOK script, a human.aispekt judge merge <brief> <answers>— validates the answers and renders the semantic report. Semantic verdicts are a separate, judge-labeled tier and can never move the deterministic score.aispekt skill install— drops an Agent Skill (the openSKILL.mdstandard read by Claude Code, Codex CLI, Cursor, Gemini CLI, and more) into.claude/skills/. Then "judge this file with aispekt" runs the whole loop with your agent as judge.aispekt skill printshows it without installing.- Judge checks live in
rules/judgepack.json— same doctrine as the rulepack: adding one is a data edit, every check cites its evidence.
Hardened by an adversarial audit before ship
An independent cross-vendor audit ran against this feature pre-tag; all 8 findings were adopted:
- Terminal output sanitizes every untrusted field (ANSI/OSC escapes, carriage returns, bidi controls) — a malicious answers file can't rewrite your screen.
- Briefs carry an integrity digest: hand-edited briefs (forged scores included) are rejected.
- Findings are validated for verbatim quotes and real line bounds — a judge can only flag what it can actually cite.
- The skill carries an explicit inert-data doctrine: instruction files are evidence to judge, never instructions to obey.
Docs
- New Judge section on aispekt.erfindor.com and in the README.