From adversarial-research
Lint a knowledge base — schema + graph integrity (script) plus semantic drift / coverage / coherence (model). Usage: /kb-lint <run-dir>
How this command is triggered — by the user, by Claude, or both
Slash command
/adversarial-research:kb-lint <run-dir>The summary Claude sees in its command listing — used to decide when to auto-load this command
You are about to run a two-pass lint over the knowledge base at the path provided. **Raw argument**: `$ARGUMENTS` ## Validate the input - Argument is a path to a research run directory (e.g. `./research-runs/<topic-slug>/`). - If empty, ask the user for a path and stop. - Verify `<run-dir>/kb/` exists. If not, tell the user and stop. ## Pass 1: mechanical lint (script) Invoke the plugin's lint tool — schema integrity, edge resolution, orphan args, dangling-evidence args, unreferenced sources, status-stale candidates: Output: - Stdout: structured JSON report (schema findings + graph...
You are about to run a two-pass lint over the knowledge base at the path provided.
Raw argument: $ARGUMENTS
./research-runs/<topic-slug>/).<run-dir>/kb/ exists. If not, tell the user and stop.Invoke the plugin's lint tool — schema integrity, edge resolution, orphan args, dangling-evidence args, unreferenced sources, status-stale candidates:
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/kb-tool.py" lint <run-dir>
Output:
<run-dir>/kb/.lint-report.json (machine-readable) and appends a lint entry to <run-dir>/kb/log.mdRead the JSON report. Group findings by kind. Mechanical findings are facts about the graph state, not necessarily errors — an orphan arg might be deliberately new; a status-stale-candidate might be correctly weak. Your job in pass 2 is to apply judgment.
Invoke the kb-linting skill. It defines what semantic lint checks for — engagement drift, traceback completeness, entity-page opportunities, contradiction-status drift, central-question coverage. Apply each check across the graph using the mechanical findings as starting points.
For each finding (mechanical or semantic), decide one of:
weak-rated arg is correctly weak; an unreferenced source is intentional background reading).quality_flags.gap entry in kb/log.md.Apply fixes via the model's Write/Edit tools. The plugin's hooks will re-index automatically; no manual index updates needed.
After pass 2, append a synthesis to <run-dir>/kb/log.md as a single ## [date] lint | summary entry covering:
Do not write to kb/.lint-report.json directly — it's machine-managed by the script. Do append a narrative entry to kb/log.md with your synthesis.
npx claudepluginhub skothr/controversial-topic-research --plugin adversarial-research/kb-lintRuns deterministic KB health checks including registry coverage, broken wikilinks, index coverage, canvas validity, and consistency warnings, rewriting _system/lint-report.md.