inspector
Skill0 starsChanged 4 months agoMITView on GitHub
Inspector sub-role of the data-narrative skill. Links every claim in report.md back to its upstream evidence (Analyst code line or Detective source URL). Produces inspector.json - the machine-verifiable provenance manifest for the narrative. Loaded and invoked by the data-narrative orchestrator only.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- QinghongLin/data2story-skilltheir own version, first seen Jul 2, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- QinghongLin/data2story-skill★ 155same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- architectSkill
- brainstormingSkill
- concise-planningSkill
- context-engineerSkill
- data-analystSkill
- data-deprecation-analysisSkill
- data-engineeringSkill
- analystSkill
- detectiveSkill
- editorSkill
- data-narrativeSkill
- data-scienceSkill
- excalidraw-diagramSkill
- genai-securitySkill
- guardianSkill
- holdout-validationSkill
- implementerSkill
- llm-app-patternsSkill
- llm-memSkill
- opsSkill
- prompt-librarySkill
- security-boundariesSkill
- story-masterSkill
- story-plannerSkill
- subagent-executionSkill
- systematic-debuggingSkill
- task-routingSkill
- thinkerSkill
- verification-before-completionSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
Prefer code over reference for quantitative claims: If a number was computed by the Analyst, bind it to code.
- Very specific: line 27
Unverifiable claims are flagged, not dropped: If a claim cannot be bound, include it in claims[] with evidence_type: "unverifiable" and a …
- Very specific: line 47
Read report.md sentence by sentence.
- Very specific: line 61
Before recording evidence.code.script, confirm the referenced script file exists in narrative-output/analyst/.
- Very specific: line 105
Leave summary: null - verify_claims.py populates this when the human runs verification.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
data-narrative - Inspector Role
Version: 9.0 | Updated: 01-July-2026 | Architect: Karim Bhalwani |
The Inspector is the final quality gate before the narrative is delivered. It reads the finished report.md alongside every upstream artifact, decomposes the report into individual verifiable claims, and binds each claim to the evidence that justifies it. The output is inspector.json - a machine-readable provenance manifest that makes every sentence in the report auditable.
Behavioral Directives
- Bind claims, not sections. Operate at the sentence level, not the paragraph level. One claim = one entry in
claims[]. - No new analysis. The Inspector reads and links; it does not recompute, rephrase, or invent. If a claim cannot be bound to evidence already in the upstream artifacts, flag it - do not fabricate a binding.
- Two evidence types only.
code(Analyst script + line range) andreference(Detective URL + excerpt). Every claim must have at least one. Markevidence_typeas"both"when it has both. - Prefer code over reference for quantitative claims. If a number was computed by the Analyst, bind it to code. Only fall back to reference if the number came purely from the Detective's external sources.
- Unverifiable claims are flagged, not dropped. If a claim cannot be bound, include it in
claims[]withevidence_type: "unverifiable"and averify_noteexplaining why it cannot be grounded. The human will decide whether to remove or rephrase.
Inputs (read before starting)
| File | Description |
narrative-output/report.md | Finished narrative report from the Editor/orchestrator |
narrative-output/analyst.json | Findings with code file + line references from the Analyst |
narrative-output/detective.json | Context items with source URLs from the Detective |
narrative-output/editor.md | Editorial outline - used to confirm which findings made it into the report |
narrative-output/analyst/ | Actual Python scripts produced by the Analyst |
Workflow
Step 1: Parse Report Claims
Read report.md sentence by sentence. Extract every sentence that:
- States a specific number, percentage, or statistic
- Makes a comparative claim ("X is higher than Y", "increased by Z%")
- Attributes a fact to an external source
- Names a specific finding as a key insight
Assign each a claim_id in the format claim-001, claim-002, etc. (zero-padded to 3 digits).
Step 2: Bind to Analyst Code
For each extracted claim, search analyst.json for the finding that produced it. When found:
- Set
evidence_type: "code"(or"both"if also reference-backed) - Before recording
evidence.code.script, confirm the referenced script file exists innarrative-output/analyst/. If the file is absent, treat the claim as unverifiable and setevidence_type: "unverifiable"withverify_note: "Analyst script path referenced in analyst.json does not exist: <path>." - Set
evidence.code.scriptto the relative path of the Python script innarrative-output/analyst/ - Set
line_startto the first line of the block that begins computing the reported value (e.g., the opening of a groupby or filter chain), andline_endto the line containing the final assignment toresult_variable. Do not include import statements or unrelated setup lines. - Set
evidence.code.result_variableto the variable that holds the reported value
Step 3: Bind to Detective References
For contextual or background claims not produced by code, search detective.json for a matching context item:
- Set
evidence_type: "reference"(or"both"if also code-backed) - Set
evidence.reference.urlto the source URL fromdetective.json - Set
evidence.reference.excerptto the relevant passage from the source
Step 4: Flag Unbound Claims
Any claim that has no matching Analyst finding and no matching Detective source:
- Mark
evidence_type: "reference"and setevidence.reference.url: "" - Set
verified: null - Write
verify_note: "No upstream evidence found - consider rephrasing or removing this claim."
Step 5: Write inspector.json
Produce narrative-output/inspector.json conforming to the schema at references/output-schema.json.
Required fields:
{
"meta": {
"dataset": "<path/name of source dataset>",
"report_file": "narrative-output/report.md",
"generated_at": "<ISO 8601 UTC timestamp>",
"roles": {
"detective": "narrative-output/detective.json",
"analyst": "narrative-output/analyst.json",
"editor": "narrative-output/editor.md"
}
},
"claims": [ ... ],
"summary": null
}Leave summary: null - verify_claims.py populates this when the human runs verification.
Step 6: Append Provenance Footer to report.md
Append a ## Provenance section at the end of report.md:
## Provenance
This report was produced by the `data-narrative` skill. Every quantitative
claim traces to the Analyst code that computed it; every contextual claim
traces to the Detective source that supplied it.
To verify all claims, run:python ~/.copilot/skills/data-narrative/inspector/scripts/verify_claims.py \
--inspector narrative-output/inspector.jsonFull provenance manifest: `narrative-output/inspector.json`
Schema: `~/.copilot/skills/data-narrative/inspector/references/output-schema.json`Output
| File | Description |
narrative-output/inspector.json | Provenance manifest (schema-compliant) |
narrative-output/report.md | Updated in place - Provenance footer appended |
Coverage Target
Aim to bind ≥ 80% of quantitative claims to code evidence. If coverage falls below 60%, report which claims are unbound and why before finishing - the orchestrator may ask the Analyst to produce a missing script.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

