Build Evidence Map
Turn one contested question into a portable decision artifact that shows what
supports the current position, what pushes against it, and what remains unknown.
Do not use a graph to decorate an answer that has not been sourced.
For a simple factual claim or a general fact-checking request, use a verification
workflow such as doublecheck instead. Use this skill when the relationships
between evidence, intermediate claims, trade-offs, and missing facts matter.
Workflow
Frame one decision. Write one falsifiable question and one provisional
position. Narrow the question until a reader can identify what action or
belief the map is testing.
Collect bounded source regions. Prefer direct observations and primary
sources. Record the URL or absolute local path, publisher, publication date,
retrieval date, section/page/line/timestamp locator, and a short checkable
excerpt. Read references/evidence-ladder.md
when source quality is disputed.
Atomize the reasoning. Create only four node types:
position: the single current verdict;
claim: an intermediate proposition;
evidence: a faithful statement of one source region;
unknown: a specific missing fact that could change the verdict.
Type every edge. Use supports, contradicts, qualifies, or
missing. Add a plain-language note explaining why the source node bears on
the target. Topical similarity is not support. Different scope, date, or
population is not automatically a contradiction.
Preserve counterevidence. Do not delete contrary evidence because the
provisional verdict survives it. Represent scope differences with
qualifies edges.
Express uncertainty structurally. Do not invent confidence percentages.
Add an unknown, narrow the position, or qualify a claim.
Write UTF-8 JSON with a .doubt.json suffix. Follow
references/map-schema.md. Keep IDs short,
stable, and semantic.
Validate fail-closed. Resolve
scripts/validate.mjs relative to this SKILL.md, then run it with Node.js
18 or newer:
node <skill-directory>/scripts/validate.mjs decision.doubt.json
The bundled validator uses only Node.js built-ins and does not require npm or
network access. Fix every finding before reporting success. Only say the map
is valid when the command exits 0 and prints VALID followed by a
64-character receipt. A file hash, node count, JSON parse, or manual schema
review is not a Doubt receipt. If deterministic validation cannot run, report
that block instead of inventing success.
Render the validated map only when the user has already installed
doubt-ai@0.8.0; do not install or execute a remote package implicitly:
doubt map decision.doubt.json --out decision.html
Verify source snapshots only with explicit network permission. The
following command retrieves each recorded HTTP(S) source and fails closed if
an excerpt cannot be matched:
doubt verify decision.doubt.json \
--out decision.verified.doubt.json
Never run this command implicitly. Local file verification does not use the
network. Do not write a verification object by hand or hide a mismatch.
Inspect the deliverable. Confirm that the question, verdict,
counterevidence, unknowns, edge notes, and exact source regions remain
readable. Treat JSON as the canonical editable artifact; HTML is a
shareable view.
Quality gates
A finished map must satisfy all of these:
- exactly one
position has incoming reasoning;
- every evidence node names one source and participates in an edge;
- every source is used and has dates, a bounded locator, and a substantive
excerpt;
- every non-position node has a directed path to the position;
- the reasoning graph has no duplicate edges or directed cycles;
- contrary or qualifying evidence is present when the source set contains it;
- each decision-changing gap is an explicit
unknown node;
- every edge note explains support, contradiction, qualification, or absence;
- the verdict is no broader than the evidence.
Deliver the result
Report:
- the current position in one sentence;
- the strongest counterevidence or qualification;
- the most important unresolved unknown;
- paths to the canonical JSON and any rendered HTML;
- whether deterministic validation and explicit source verification ran.
Never describe a structurally valid map as proven true. Validation establishes
traceability and graph integrity; source quality and inference quality still
require human review.
1---2name: build-evidence-map3description: Build an auditable evidence map for a contested technical choice, research synthesis, proposal review, or consequential decision. Use when Copilot must preserve supporting, contradicting, qualifying, and missing evidence with exact source regions instead of collapsing disagreement into prose.4---5
6# Build Evidence Map
7
8Turn one contested question into a portable decision artifact that shows what
9supports the current position, what pushes against it, and what remains unknown.
10Do not use a graph to decorate an answer that has not been sourced.
11
12For a simple factual claim or a general fact-checking request, use a verification
13workflow such as `doublecheck` instead. Use this skill when the relationships
14between evidence, intermediate claims, trade-offs, and missing facts matter.
15
16## Workflow
17
181. **Frame one decision.** Write one falsifiable question and one provisional
19 position. Narrow the question until a reader can identify what action or
20 belief the map is testing.
212. **Collect bounded source regions.** Prefer direct observations and primary
22 sources. Record the URL or absolute local path, publisher, publication date,
23 retrieval date, section/page/line/timestamp locator, and a short checkable
24 excerpt. Read [references/evidence-ladder.md](references/evidence-ladder.md)
25 when source quality is disputed.
263. **Atomize the reasoning.** Create only four node types:
27 - `position`: the single current verdict;
28 - `claim`: an intermediate proposition;
29 - `evidence`: a faithful statement of one source region;
30 - `unknown`: a specific missing fact that could change the verdict.
314. **Type every edge.** Use `supports`, `contradicts`, `qualifies`, or
32 `missing`. Add a plain-language note explaining why the source node bears on
33 the target. Topical similarity is not support. Different scope, date, or
34 population is not automatically a contradiction.
355. **Preserve counterevidence.** Do not delete contrary evidence because the
36 provisional verdict survives it. Represent scope differences with
37 `qualifies` edges.
386. **Express uncertainty structurally.** Do not invent confidence percentages.
39 Add an `unknown`, narrow the position, or qualify a claim.
407. **Write UTF-8 JSON** with a `.doubt.json` suffix. Follow
41 [references/map-schema.md](references/map-schema.md). Keep IDs short,
42 stable, and semantic.
438. **Validate fail-closed.** Resolve
44 `scripts/validate.mjs` relative to this `SKILL.md`, then run it with Node.js
45 18 or newer:
46
47 ```bash
48 node <skill-directory>/scripts/validate.mjs decision.doubt.json
49 ```
50
51 The bundled validator uses only Node.js built-ins and does not require npm or
52 network access. Fix every finding before reporting success. Only say the map
53 is valid when the command exits `0` and prints `VALID` followed by a
54 64-character receipt. A file hash, node count, JSON parse, or manual schema
55 review is not a Doubt receipt. If deterministic validation cannot run, report
56 that block instead of inventing success.
57
58 Render the validated map only when the user has already installed
59 `doubt-ai@0.8.0`; do not install or execute a remote package implicitly:
60
61 ```bash
62 doubt map decision.doubt.json --out decision.html
63 ```
649. **Verify source snapshots only with explicit network permission.** The
65 following command retrieves each recorded HTTP(S) source and fails closed if
66 an excerpt cannot be matched:
67
68 ```bash
69 doubt verify decision.doubt.json \
70 --out decision.verified.doubt.json
71 ```
72
73 Never run this command implicitly. Local file verification does not use the
74 network. Do not write a `verification` object by hand or hide a mismatch.
7510. **Inspect the deliverable.** Confirm that the question, verdict,
76 counterevidence, unknowns, edge notes, and exact source regions remain
77 readable. Treat JSON as the canonical editable artifact; HTML is a
78 shareable view.
79
80## Quality gates
81
82A finished map must satisfy all of these:
83
84- exactly one `position` has incoming reasoning;
85- every evidence node names one source and participates in an edge;
86- every source is used and has dates, a bounded locator, and a substantive
87 excerpt;
88- every non-position node has a directed path to the position;
89- the reasoning graph has no duplicate edges or directed cycles;
90- contrary or qualifying evidence is present when the source set contains it;
91- each decision-changing gap is an explicit `unknown` node;
92- every edge note explains support, contradiction, qualification, or absence;
93- the verdict is no broader than the evidence.
94
95## Deliver the result
96
97Report:
98
99- the current position in one sentence;
100- the strongest counterevidence or qualification;
101- the most important unresolved unknown;
102- paths to the canonical JSON and any rendered HTML;
103- whether deterministic validation and explicit source verification ran.
104
105Never describe a structurally valid map as proven true. Validation establishes
106traceability and graph integrity; source quality and inference quality still
107require human review.