anthropic-grade-optimizer
Audits and optimizes Claude-directing artifacts (CLAUDE.md, SKILL.md, subagent, hook, MCP config, system or user prompt, workflow, api_config) against 189 cited Anthropic rules across 11 dimensions, calibrated per model (Opus 4.7, Sonnet 4.6, Opus 4.6, Haiku 4.5). Every finding ships with verbatim quote and source URL; authorial voice is preserved.
- License 许可
- MIT
- 最近更新
- 2026-11-06
- Stars
- ★ 20
- Forks
- 8
01 前言 Front Matter
- name
- anthropic-grade-optimizer
- description
- Audits and optimizes Claude-directing artifacts (CLAUDE.md, SKILL.md, subagent, hook, MCP config, system or user prompt, workflow, api_config) against 189 cited Anthropic rules across 11 dimensions, calibrated per model (Opus 4.7, Sonnet 4.6, Opus 4.6, Haiku 4.5). Every finding ships with verbatim quote and source URL; authorial voice is preserved.
- when_to_use
- Operator asks to audit, optimize, review, lint, score, refactor, or "make Anthropic-grade" any prompt, CLAUDE.md, SKILL.md, subagent, hook, MCP config, api_config, or workflow. Also triggers on model migration ("good for Opus 4.7?", "optimize for Haiku"), compliance review, or fixing adherence/verbosity/hallucination drift in a Claude artifact.
02 资源文件 71
- 参考文档.github/workflows/ci.yml1.2 KB
- 其他.gitignore664 B
- 资产文件assets/snippets/avoid-excessive-markdown.md1.9 KB
- 资产文件assets/snippets/avoid-overengineering.md1.8 KB
- 资产文件assets/snippets/cleanup-temp-files.md1.2 KB
- 资产文件assets/snippets/code-review-coverage.md2.3 KB
- 资产文件assets/snippets/concise-output.md1.2 KB
- 资产文件assets/snippets/default-to-action.md1.2 KB
- 资产文件assets/snippets/do-not-act-before-instructions.md1.2 KB
- 资产文件assets/snippets/frontend-aesthetics.md1.5 KB
- 资产文件assets/snippets/general-purpose-solution.md1.7 KB
- 资产文件assets/snippets/index.yaml4.7 KB
- 资产文件assets/snippets/investigate-before-answering.md1.4 KB
- 资产文件assets/snippets/latex-opt-out.md1.2 KB
- 资产文件assets/snippets/model-self-knowledge.md1.1 KB
- 资产文件assets/snippets/multi-window-context.md1.5 KB
- 资产文件assets/snippets/pick-and-commit.md1.3 KB
- 资产文件assets/snippets/reversibility-safety.md1.6 KB
- 资产文件assets/snippets/steer-thinking.md1.3 KB
- 资产文件assets/snippets/subagent-spawning-4-7.md1.3 KB
- 资产文件assets/snippets/use-parallel-tool-calls.md1.5 KB
- 参考文档CHANGELOG.md3.7 KB
- 参考文档CONTRIBUTING.md3.6 KB
- 参考文档evals/fixtures/adversarial-minimal-claude-md.md76 B
- 参考文档evals/fixtures/adversarial-minimal-skill.md276 B
- 参考文档evals/fixtures/adversarial-minimal-subagent.md241 B
- 参考文档evals/fixtures/bad-claude-md.md3.6 KB
- 参考文档evals/fixtures/bad-hook.json492 B
- 参考文档evals/fixtures/bad-mcp.json279 B
- 参考文档evals/fixtures/bad-skill.md558 B
- 参考文档evals/fixtures/bad-subagent.md402 B
- 参考文档evals/fixtures/cross-bad-skill.md620 B
- 参考文档evals/fixtures/cross-bad-subagent.md216 B
- 参考文档evals/fixtures/good-claude-md.md851 B
- 参考文档evals/fixtures/good-hook.json538 B
- 参考文档evals/fixtures/good-mcp.json368 B
- 参考文档evals/fixtures/good-skill.md1.4 KB
- 参考文档evals/fixtures/good-subagent.md1.2 KB
- 参考文档evals/ground-truth.yaml4.2 KB
- 参考文档evals/README.md1.9 KB
- 参考文档evals/results/CALIBRATION_REPORT.md2.2 KB
- 参考文档evals/results/EVAL_MATRIX.md1.2 KB
- 参考文档evals/SELF-AUDIT.md7.7 KB
- 参考文档evals/STRANGE-LOOP-RESULTS.md5.3 KB
- 许可证LICENSE1.1 KB
- 参考文档README.md8.5 KB
- 参考文档references/anti-patterns.md6.2 KB
- 参考文档references/gaps.md7.8 KB
- 参考文档references/heuristics.md3.9 KB
- 参考文档references/modulation-matrix.yaml6.7 KB
- 参考文档references/pass2-protocol.md7.4 KB
- 参考文档references/quotes-canonical.md6.2 KB
- 参考文档references/rubric-by-type.yaml21.6 KB
- 参考文档references/rules-anthropic.yaml106.2 KB
- 参考文档references/rules-master.yaml4.8 KB
- 脚本scripts/check_model_currency.py4.2 KB
- 脚本scripts/classify_artifact.py5.3 KB
- 脚本scripts/lib_ux.py17.9 KB
- 脚本scripts/optimize.py22.0 KB
- 脚本scripts/pass1_mechanical.py67.7 KB
- 脚本scripts/pass2_executor.py10.5 KB
- 脚本scripts/run_eval_suite.py7.8 KB
- 脚本scripts/run.py17.3 KB
- 脚本scripts/score_calculator.py3.8 KB
- 参考文档SECURITY.md1.5 KB
- 脚本tests/__init__.py—
- 脚本tests/calibration.py8.4 KB
- 脚本tests/test_orchestrator.py3.5 KB
- 脚本tests/test_pass1_detectors.py3.3 KB
- 脚本tests/test_rule_schema.py3.2 KB
- 其他VERSION6 B
03 SKILL.md 正文
Anthropic-Grade Optimizer
Audits any Claude-directing artifact against the official Anthropic doctrine, calibrates findings by target model, and proposes surgical optimizations that preserve authorial voice. Every finding cites a verbatim source URL; the skill ships with cited rules only.
Contents
- Hierarchy of authority
- Honest scope
- Quick start (and worked examples)
- The Three Laws
- Artifact types (9)
- Target-model modulation
- The 11 dimensions
- Severity → triage
- Emphasis conflict (D9, type-aware)
- Detection methods
- Operating modes
- Adaptive modes (auto-trigger)
- Output format (concise default)
- Workflow (10 steps)
- Scope discipline (positive framing)
- Edge cases
- Self-audit: Open Questions
- References (10 files)
- Assets (canonical snippets)
- Scripts (6 entry points)
- Validation (eval suite + strange-loop)
Hierarchy of authority
Anthropic doctrine is the sole source of scoring rules. Optional interpretive lenses inform how to reason about findings (what to preserve, when to defer, how to phrase recommendations) — they stay outside the rubric. On collision, Anthropic always wins.
Honest scope
189 unique cited rules across 11 dimensions, each with a verbatim quote and
source URL. Read references/rules-anthropic.yaml § meta.total_unique_rules
for the canonical count — every other counter in the skill must read from
there to prevent drift. Rules with deterministic detection (regex,
code-check) are audited automatically by scripts/pass1_mechanical.py. Rules
with qualitative criteria (llm-judge, heuristic) are audited by following
references/pass2-protocol.md. Coverage gaps and known limitations live in
references/gaps.md and must appear in the coverage_caveat block of every
report.
Pass-1 deterministic coverage in v1.2: ~52 rules (~28% of 189). Pass-2
covers the remaining ~137 qualitative rules. Hybrid detection is supported via
the requires_pass2_grade flag on findings.
Quick start
Canonical entry point (default):
python scripts/run.py <artifact_path> --target opus-4-7 --mode audit
The orchestrator chains classify → pass 1 → score → emit, and surfaces Pass 2 prompts for the LLM. This is the single right answer for ~95% of audits.
Manual flow is for one specific case: an operator forcing fine-grained control over a single phase (re-running pass 1 only, scoring an external findings file, debugging the classifier). Do not use it as a parallel path — the orchestrator is the contract.
- Ingest — receive the artifact path or content, target model
(default
opus-4-7), mode (defaultaudit). - Classify — Run
scripts/classify_artifact.pyto detect artifact type and load the rule subset fromreferences/rubric-by-type.yaml. - Audit — Pass 1 mechanical via
scripts/pass1_mechanical.py. Pass 2 qualitative reasoning followingreferences/pass2-protocol.mdagainstreferences/rules-anthropic.yaml. - Diagnose — Classify each finding as 🔴 must-fix, 🟡 should-fix, 🟢 may-fix, ❓ open-question, or ⚪ preserve (authorial voice).
- Optimize (when mode = optimize or full) — Produce surgical diffs
per
references/pass2-protocol.md§ Diff Generation. Each diff citessource_url+verbatim_quote. When a rule has a canonical snippet, emit a verbatim patch fromassets/snippets/rather than paraphrasing. - Validate (when mode = full) — Re-score post-diff; abort when a hard rule is introduced or voice drift exceeds 10%.
- Emit — Concise report (summary + scorecard + diff). Verbose mode adds reasoning trail, preservation log, and open questions.
Worked example 1 — auditing a SKILL.md for Opus 4.7
<example>
Operator request: "audit this skill for Opus 4.7"
Artifact: ~/.claude/skills/pdf-tools/SKILL.md (240 lines)
Step 1 — Classify: type=skill, has_frontmatter=true, body_lines=235.
Step 2 — Load rubric: 24 D-SKILL rules + 17 D-CLAR + 10 D-STRUCT + 8 D-EXAMPLE +
5 D-EVAL + safety. Suppress AR-CC-S09 doctrine-conflict? No (skill body).
Step 3 — Pass 1 fires: AR-CC-S20 (lib mentioned without pip install), AR-CC-S22
(3 script refs unframed), AR-CLAR-006 (7 negatives, 1 positive alt).
Step 4 — Triage: 1 🔴 (AR-CC-S20), 2 🟢 (S22, CLAR-006).
Step 5 — Optimize emits snippet patches: none (no rule with canonical snippet
fires). Inline diff for AR-CC-S20 adds "Install required package: pip install pypdf".
Step 6 — Validate: post-diff score 92 (was 78). Voice drift 4% — under 10% gate.
Step 7 — Emit concise report.
</example>
Worked example 2 — strange-loop self-audit
<example>
Operator request: "run the skill on its own SKILL.md"
Artifact: anthropic-grade-optimizer/SKILL.md
Step 3 — Pass 1 fires: AR-CC-S14 (name contains "anthropic" reserved word) and possibly AR-CC-S21 (TOC) and AR-CC-S22 (script framing). Step 4 — AR-CC-S14: see § Self-audit: Open Questions below for the operator's documented decision (semantic-justification exception). Step 5 — No-op for the AR-CC-S14 finding (declared exception). Step 7 — Concise report flags the open question and links to the §. </example>
Worked example 3 — auditing an api_config snippet
<example>
Operator request: "is this Python snippet safe for Opus 4.7?"
Artifact: a client.messages.create(...) call with temperature=0.7,
effort='low', last message role=assistant.
Type: api_config. Target: claude-opus-4-7.
Step 3 — Pass 1 fires: AR-MODEL-002 prefill (HARD, last role=assistant);
AP-15 sampling param temperature (HARD); AR-REASON-017 effort=low
on opus-4-7 with coding signal (severity_amplification → HARD);
AR-MODEL-021..025 emitted as one Open Question with 5 options
(collapsed via open_question=True).
Step 4 — Triage: 3 🔴 (002, AP-15, REASON-017), 1 ❓ (021..025).
Step 5 — Optimize emits inline diffs for AR-MODEL-002 / AP-15 (remove sampling
params, move continuation to user message per AR-MODEL-024 if that
pattern is the operator's choice).
</example>
The Three Laws
These three laws encode the discipline that separates Anthropic-grade from "looks rigorous":
- Cite or stay silent. Every 🔴 / 🟡 finding carries a
source_url. When a source is absent, the finding is downgraded toEXTERNAL_ENRICHMENTor dropped — Anthropic-grade ships only cited rules. - Artifact type comes first. Apply the rule subset for the detected
type. Firing a SKILL.md rule against a CLAUDE.md is a false positive — see
references/rubric-by-type.yaml§false_positive_rules. - Voice drift trumps score. Raising the score by diluting the
operator's voice is a regression in disguise. Optimizations with
voice_drift > 10%abort; with--push-ceilingthe gate tightens to 5%.
Artifact types (9)
Detection happens on filename plus content; each type loads a tailored rule
subset from references/rubric-by-type.yaml:
| Type | Path signal | Primary dimensions |
|---|---|---|
claude_md |
CLAUDE.md, CLAUDE.local.md |
D-CC (memory), D-CLAR, D-STRUCT |
skill |
SKILL.md in skills/<name>/ |
D-CC (skill), D-CLAR, D-STRUCT |
slash_command |
.claude/commands/<name>.md (legacy) |
D-CC (skill subset) |
subagent |
.claude/agents/<name>.md |
D-CC (subagent), D-AGENT, D-CLAR |
hook_config |
settings.json hooks key |
D-CC (hooks) |
mcp_config |
.mcp.json, .claude.json |
D-CC (mcp) |
system_prompt / user_prompt |
inline / API artifact | D-CLAR, D-STRUCT, D-EXAMPLE, D-REASON, D-CONTEXT, D-MODEL, D-TOOL, D-VISION |
api_config |
Python/JSON snippet with client.messages.create or model="claude-..." |
D-MODEL, D-REASON, D-CONTEXT (cache), D-TOOL, D-VISION |
workflow |
YAML pipeline | D-AGENT, D-EVAL |
Target-model modulation
Each model has a profile cell in references/modulation-matrix.yaml. Critical
anti-patterns flagged automatically:
- Opus 4.7 — rejects
temperature/top_p/top_k(HTTP 400), rejects manualthinking:{enabled,budget_tokens}(400), rejects prefill on the last assistant turn (400). Interprets prompts literally — state scope explicitly. ALL-CAPS imperatives over-suppress output. Effort levels are strict; pairxhighwith coding/agentic. Tool use decreases by default; raise effort or prompt explicitly when more tool use is wanted. - Opus 4.6 / Sonnet 4.6 — rejects prefill (400). Adaptive thinking is recommended.
- Haiku 4.5 — adaptive thinking unsupported,
effortparameter unsupported, 200k-token context. Needs maximum explicitness; few-shot is more critical (5+ examples).
When a target model lacks a profile (e.g., a new release), inherit from the
closest sibling and stamp the report with confidence: low. Fallback rules
live in references/modulation-matrix.yaml.
The 11 dimensions
| Dim | Focus | Weight |
|---|---|---|
| D-CLAR | Clarity, directness, positive framing | 16% |
| D-STRUCT | XML tags, hierarchy, formatting | 11% |
| D-EXAMPLE | Few-shot 3-5 examples in <example> |
8% |
| D-REASON | CoT, adaptive thinking, self-check | 12% |
| D-CONTEXT | Doc placement, grounding, cache | 10% |
| D-MODEL | Model-specific calibration | 10% |
| D-AGENT | Stop conditions, ground truth, delegation | 8% |
| D-EVAL | Verification embedded in prompt | 7% |
| D-TOOL | Tool definitions, schemas, parallel | 6% |
| D-VISION | Image placement, coords, formats | 4% |
| D-CC | Claude Code ecosystem (memory/skill/agent/hook/MCP) | 8% |
Severity → triage
| Severity | Score impact | Triage |
|---|---|---|
hard / critical / never |
-10 to -20 | 🔴 must-fix |
soft / high |
-5 to -8 | 🟡 should-fix |
medium |
-3 to -5 | 🟡 should-fix |
low / warning |
-1 to -2 | 🟢 may-fix |
| (5+ migration options, group fix) | n/a | ❓ open-question |
| (authorial voice signal) | n/a | ⚪ preserve |
Emphasis conflict (D9, type-aware)
Two Anthropic sources disagree about ALL-CAPS / IMPORTANT / YOU MUST:
code.claude.com/docs/en/best-practicesendorses emphasis to tune adherence.github.com/anthropics/skills/skill-creatorflags ALL-CAPS as yellow, preferring an explanation of the underlying reason.
Resolution applies by artifact type:
| Artifact type | Emphasis verdict |
|---|---|
claude_md, system_prompt, user_prompt |
Endorsed (suppress yellow-flag finding) |
skill, subagent body |
Yellow flag (raise finding, explain WHY) |
tool_description |
Neutral (no doctrine) |
When AR-CC-S09 fires on a claude_md, suppress it as a false positive
(anti-pattern AP-10).
Detection methods
Prefer determinism (cheapest instrument that solves):
- regex / code-check →
scripts/pass1_mechanical.py - heuristic (line counts, structural shape) →
scripts/pass1_mechanical.py - hybrid (regex emits candidate, LLM grades substance) → Pass 1 emits
with
requires_pass2_grade=true; Pass 2 finalizes - llm-judge → reason directly with the artifact text loaded; cite the rule + verbatim quote
Reach for llm-judge only when no script can decide.
Operating modes
audit(default) — read-only report, no diffs proposed.optimize— generate diffs without validating.full— audit → optimize → validate → emit. Loops up to three passes when score < 85.--push-ceiling— applies may-fix (🟢) findings; tightens voice_drift to 5%.--fast— top-5 findings only; single pass.--no-exceptions— disables operator-declared exceptions (see § Self-audit). Reports the strict raw score instead of the active score. The orchestrator always shows both side by side when an exception is in effect, so this flag is for downstream tooling that needs the unadjusted number.
Adaptive modes (auto-trigger)
| Trigger | Mode | Effect |
|---|---|---|
| Artifact > 800 lines | STRATIFIED-AUDIT | Map blocks → triage → deep-audit top-K (default K=5) |
| Initial score ≥ 85 + zero 🔴 | AFFIRMATION | Short report; surface 🟢 only with --push-ceiling |
| Artifact < 50 tokens + minimal markers | HIGH-UNCERTAINTY | Ask "intentional brevity or unfinished?" before expanding |
| Target model lacks profile | FALLBACK-MODEL | Inherit sibling, mark INFERRED, reduce D-MODEL weight 10% → 5% |
Output format (concise default)
ANTHROPIC-GRADE OPTIMIZER REPORT
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Artifact: <path>
Type: <type> | Target: <model> | Mode: <mode> | Rules: v1.2 (189)
SCORE: <0-100> (<grade>)
D-CLAR: <n>% D-STRUCT: <n>% D-EXAMPLE: <n>%
D-REASON: <n>% D-CONTEXT: <n>% D-MODEL: <n>%
D-AGENT: <n>% D-EVAL: <n>% D-TOOL: <n>%
D-VISION: <n>% D-CC: <n>%
FINDINGS: <count_red> 🔴 / <count_yellow> 🟡 / <count_green> 🟢 / <count_q> ❓ / <count_preserve> ⚪
🔴 Must-fix
[F-001] <rule_id> — <one-line statement>
Location: <line range>
Source: <source_url>
Quote: "<verbatim>"
🟡 Should-fix
...
❓ Open questions (operator decides)
[Q-001] <rule_id> — <options summary>
DIFF (mode ≠ audit):
<unified diff with rule citations>
SNIPPET PATCHES (when applicable):
<verbatim insertions from assets/snippets/ with source_url>
COVERAGE CAVEAT:
Doctrine dissected on 2026-05-02. 189 cited rules. Gaps in references/gaps.md.
<if model is INFERRED>: Target model profile inherited; confidence: low.
Verbose adds: per-finding reasoning trail, preservation log (what stayed and why), and explicit open questions for authorial decisions.
Workflow
- Run
python scripts/classify_artifact.py <path>→{type, line_count, signals}. - Read
references/rubric-by-type.yamlfor the type's rule_ids. - Run
python scripts/pass1_mechanical.py <path> --type <type> --target-model <model>→ deterministic findings (including hybrid candidates). - For each rule with
detection_method=llm-judgein the type's subset, read the relevant section, reason about adherence, cite the rule'sverbatim_quote, and append the finding to the bundle. - Apply D9 emphasis-conflict resolution by artifact type
(see
references/rubric-by-type.yaml§false_positive_rules). - Run
python scripts/score_calculator.py <findings.json>→{score, per_dimension, voice_drift_estimate}. - Triage findings (🔴/🟡/🟢/❓/⚪).
- When mode ≠
audit, runpython scripts/optimize.py <path> --findings <json> --type <type>to produce surgical diffs and snippet patches (each cited). - When mode =
full, simulate post-diff, re-score, validate gate. - Emit report (concise default; verbose with
--verbose).
Scope discipline (positive framing)
This skill audits prompts and Claude-directing artifacts. Its responsibilities:
- Audits: cited findings only, with
verbatim_quote+source_url. - Proposes diffs: surgical, one rule per diff, voice-preserving.
- Stays in source language: preserves the artifact's authorial voice.
- Defers to operator: the operator stays in the editor's seat — diffs
apply only with
--applyto an<path>.optimized.<ext>sibling, never overwriting the original.
Out-of-scope (sibling tools handle these):
- Evaluating Claude's responses — that work belongs to eval pipelines.
- Auditing application code that consumes the Claude API beyond the prompts and artifacts themselves.
- Inventing rules without a source URL — every finding ships cited.
Edge cases
When a rule could fire but no verbatim source quote can be found, hold the
finding back. Add it to the report's coverage_caveat block as a candidate
for the next dissection round. Anthropic-grade means cited or silent.
When two rules conflict and no documented resolution exists (see
references/gaps.md for the 10 known conflicts), surface both findings and
elevate the decision to the open questions block — the operator decides.
Self-audit: Open Questions
The skill audits itself on every release via the canonical entry point:
python scripts/run.py SKILL.md --target opus-4-7 --mode audit
Declared exceptions (operator-justified, registered in scripts/run.py § DECLARED_EXCEPTIONS):
- AR-CC-S14 — reserved word "anthropic" in name. The doctrine quote
"Cannot contain reserved words: 'anthropic', 'claude'." applies to skill
names. The operator decision is to keep the name
anthropic-grade-optimizerbecause it is the most precise descriptor of the skill's purpose. A rename todoctrine-grade-optimizerwould lose the explicit doctrinal anchor and degrade trigger reliability for operators searching by domain. The Pass-1 detector continues to flag it on every run; the orchestrator splits the report intoactive score(exception applied) andraw score(--no-exceptions) so consumers retain full information. D-CC dimension shows the residual penalty transparently — voice fidelity over hidden adjustment.
The full self-audit run, including findings, both scores, and dimension
breakdown, is committed at evals/SELF-AUDIT.md and re-runs on every release.
References (10 files in references/)
rules-anthropic.yaml— 189 rules withsource_url+verbatim_quote+detection_method(v1.2). The canonical SSOT for rule count and content.rules-master.yaml— index by dimension (points into rules-anthropic.yaml).modulation-matrix.yaml— 4 models × ~10 cells, each{value, source_url, confidence}.rubric-by-type.yaml— rule subsets per artifact type, with false-positive suppression matrix and 3 documented doctrinal conflicts.quotes-canonical.md— verbatim citations for report output.heuristics.md— H1-H12 operational shortcuts.anti-patterns.md— AP-1 to AP-15 with detection method.gaps.md— known doctrinal gaps (declare in every report).pass2-protocol.md— qualitative auditing workflow (llm-judge rules).
Assets (canonical snippets)
assets/snippets/— 18 canonical snippets (16 rule-bound + 2 advisory). Every snippet is byte-by-byte verbatim from the live Anthropic doc, with a header table declaringtriggers_rule,applies_to,model_specific,source_url,insertion_pattern, andvoice_drift. Snippets cover high-leverage rules: AR-MODEL-018 (code-review coverage), AR-MODEL-011 (investigate before answering), AR-MODEL-007/AR-AGENT-009 (parallel tool calls), AR-CLAR-011 (action vs research posture, two snippets), and 12 more.assets/snippets/index.yaml—rule_id → snippetmap consumed byscripts/optimize.py. Type-aware suppression prevents AP-9 false patches (e.g., subagent files never receive subagent-orchestration snippets).
Scripts (6 entry points in scripts/)
run.py— orchestrator; runs classify → pass 1 → score → emit. Single entry point for most workflows.classify_artifact.py <path>— returns{type, line_count, language, has_frontmatter, signals}.pass1_mechanical.py <path> --type <type> --target-model <model>— emits findings array (regex + code-check + hybrid candidates).score_calculator.py <findings.json>— emits{score, per_dimension, voice_drift_estimate}.optimize.py <path> --findings <json> --type <type> [--apply]— emits diffs and snippet patches; with--applywrites to<path>.optimized.<ext>(preserving the original).run_eval_suite.py— replaysevals/fixtures/ground-truth suite.
All scripts use forward slashes and read paths via the CLAUDE_SKILL_DIR
env var, defaulting to the parent of the script directory (per AR-CC-S06).
On Windows, scripts force UTF-8 stdout to render the triage glyphs
(🔴/🟡/🟢/❓/⚪) without cp1252 crashes.
Validation (eval suite + strange-loop)
The skill validates itself via evals/. The fixture set covers good /
bad / adversarial-minimal cases for every artifact type, plus cross-type
fixtures that exercise the false-positive suppression matrix. Ground-truth
scores live in evals/ground-truth.yaml; scripts/run_eval_suite.py
replays them. The strange-loop self-audit
(evals/SELF-AUDIT.md) re-runs the skill against its own SKILL.md on every
release and commits the result for transparency.