Ground a source-dependent claim
$ARGUMENTS supplies both inputs. Stop and ask if either is missing.
Target: exact repo-relative ingest path or canonical source URL.
Claim needed: source-side proposition or question. Do not include target
prose or a target-specific transfer argument.
This skill may reuse or append verbatim quotes and is the only procedure
that writes an ingest's Quotes section. It never edits the target artifact,
never changes any other part of an ingest, and never interprets a paraphrase
stored in an ingest as source support.
Composition contract
This skill owns source resolution and retained source evidence, not target-side
interpretation. Its direct callers include cp-skill-write,
cp-skill-write-multistage, and
assess-a-claim-bearing-artifact-against-external-literature.md. It may invoke
cp-skill-ingest for a canonical URL with no ingest and may return the
conditional re-ingest.md route. Target, Claim needed, the three result
literals, ingest-creation authority, and Quotes ownership are shared interfaces.
Before changing one, inspect these composition siblings under the instruction
collection's edit-time rule.
Procedure
- Read the source collection and ingest type contracts.
- Resolve one ingest. For a URL with no ingest, invoke
cp-skill-ingest on the
exact URL and use its validated result. Stop on ambiguity.
- Read the complete
## Quotes section. Judge the requested source-side
proposition directly against its retained Source extract (verbatim)
values. Ignore the ingest's Summary, Connections Found, Extractable Value,
and Limitations as support.
- If the retained quotes are sufficient, return the ingest path and
quotes sufficient without mutation.
- If they are insufficient, continue. Do not infer the answer from an ingest
paraphrase or analysis.
- Derive
kb/sources/.snapshots/<slug>.md from
kb/sources/<slug>.ingest.md. Require that exact file to exist, require its
exact-byte SHA-256 to equal the ingest's snapshot_sha256, and require its
frontmatter source to equal the ingest's canonical source. Do not search
for a differently named checksum match. If any check fails, stop with the
literal re-ingest route:
- source checkout:
Read and execute kb/instructions/re-ingest.md with Target: <ingest-path>.
- installed project:
Read and execute kb/commonplace/instructions/re-ingest.md with Target: <ingest-path>.
- Read enough of the primary snapshot to determine the source-side
proposition and its bounds. Stop if the source does not establish it or the
request depends on a secondary resource.
- Choose the smallest sound retained form:
If one or a few bounded excerpts let a later reviewer judge the
proposition without missing material context, construct one or more
adjacent quote items in this exact shape:
- **Source extract (verbatim):** <exact supporting content>
- **Source location:** <human-resolvable locator for that extract>
Repeat the complete pair when support is non-contiguous. Line wrapping is
not non-contiguity: verbatim matching normalizes whitespace. Copy the
snapshot's text exactly and retain only the minimum passages needed for a
sound check.
If sound checking depends on broad or distributed context that should not
be retained as a bounded set of quotes, do not append a substitute
paraphrase or an oversized extract. Return snapshot required and tell
the writer to include the exact marker (snapshot required) in the ingest
link text. The source claim must pass semantic/grounding-alignment while
the verified snapshot is present.
- For the bounded-quotes route, append the items yourself:
- Retain the ingest's complete incumbent bytes. Construct a candidate by
splicing only within the
## Quotes section, using the incumbent file's
newline convention: when the section body is exactly
No source quotes have been retained yet., replace only that sentence;
otherwise insert the new items after all incumbent items and before the
next level-two heading, adding only the separator newlines valid adjacent
items need. Preserve every incumbent item and every byte outside the
section. Do not merge, deduplicate, reorder, or reword anything.
- Recheck the paired paths, source identity, and checksum against the
current bytes, write the candidate once, then run
commonplace-validate kb/sources/<slug>.ingest.md. The validator resolves
each Source extract (verbatim) against the name-paired snapshot and
fails on one that does not occur; that check, not your own reading, is
the verification — an agent checking text it just transcribed confirms
its own copy. Earlier grounding runs produced false extracts by silently
repairing capture artifacts (line-break hyphenation, an inline footnote
marker, a LaTeX arrow); quote the snapshot's bytes as they are.
- Re-read the result and require the intended splice plus exact
preservation of all other bytes. If any post-write check or validation
fails, restore the retained incumbent bytes exactly, verify that
restoration, and report failure rather than leaving an invalid or partial
append. A
source quote failure is about the item, not the splice: fix
the extract against the snapshot, never rewrite the file around it.
A populated Quotes section conflicts failure identifies stale prose
outside Quotes. Restore the incumbent and report that non-quote prose must
be repaired before grounding is retried; this skill must not repair it.
- Return the ingest path and exactly one route:
quotes sufficient, quotes added, or snapshot required. For quotes added, also return the appended
quote texts. If validation warned that a populated Quotes section coexists
with (snapshot required), repeat that warning so the caller verifies that
the marker still belongs to a claim needing broader snapshot context. For
snapshot required, repeat the exact link-text marker and the requirement
to run semantic/grounding-alignment before the source claim lands.
Semantic uniqueness is not required. Similar, overlapping, or disputed exact
passages are never merged, rewritten, or deleted by this procedure.
1---2name: cp-skill-ground3description: Ground one source-side claim by retaining minimum verbatim quotes or requiring the pinned snapshot. Use when a note needs source support or retained quotes; choose this skill, not cp-skill-ingest, for quote retention.4---56# Ground a source-dependent claim78`$ARGUMENTS` supplies both inputs. Stop and ask if either is missing.910**Target:** exact repo-relative ingest path or canonical source URL.1112**Claim needed:** source-side proposition or question. Do not include target13prose or a target-specific transfer argument.1415This skill may reuse or append verbatim quotes and is the only procedure16that writes an ingest's Quotes section. It never edits the target artifact,17never changes any other part of an ingest, and never interprets a paraphrase18stored in an ingest as source support.1920## Composition contract2122This skill owns source resolution and retained source evidence, not target-side23interpretation. Its direct callers include `cp-skill-write`,24`cp-skill-write-multistage`, and25`assess-a-claim-bearing-artifact-against-external-literature.md`. It may invoke26`cp-skill-ingest` for a canonical URL with no ingest and may return the27conditional `re-ingest.md` route. `Target`, `Claim needed`, the three result28literals, ingest-creation authority, and Quotes ownership are shared interfaces.29Before changing one, inspect these composition siblings under the instruction30collection's edit-time rule.3132## Procedure33341. Read the source collection and ingest type contracts.352. Resolve one ingest. For a URL with no ingest, invoke `cp-skill-ingest` on the36 exact URL and use its validated result. Stop on ambiguity.373. Read the complete `## Quotes` section. Judge the requested source-side38 proposition directly against its retained `Source extract (verbatim)`39 values. Ignore the ingest's Summary, Connections Found, Extractable Value,40 and Limitations as support.41 - If the retained quotes are sufficient, return the ingest path and42 `quotes sufficient` without mutation.43 - If they are insufficient, continue. Do not infer the answer from an ingest44 paraphrase or analysis.454. Derive `kb/sources/.snapshots/<slug>.md` from46 `kb/sources/<slug>.ingest.md`. Require that exact file to exist, require its47 exact-byte SHA-256 to equal the ingest's `snapshot_sha256`, and require its48 frontmatter `source` to equal the ingest's canonical `source`. Do not search49 for a differently named checksum match. If any check fails, stop with the50 literal re-ingest route:51 - source checkout: `Read and execute kb/instructions/re-ingest.md with Target: <ingest-path>.`52 - installed project: `Read and execute kb/commonplace/instructions/re-ingest.md with Target: <ingest-path>.`535. Read enough of the primary snapshot to determine the source-side54 proposition and its bounds. Stop if the source does not establish it or the55 request depends on a secondary resource.566. Choose the smallest sound retained form:57 - If one or a few bounded excerpts let a later reviewer judge the58 proposition without missing material context, construct one or more59 adjacent quote items in this exact shape:6061 ```markdown62 - **Source extract (verbatim):** <exact supporting content>63 - **Source location:** <human-resolvable locator for that extract>64 ```6566 Repeat the complete pair when support is non-contiguous. Line wrapping is67 not non-contiguity: verbatim matching normalizes whitespace. Copy the68 snapshot's text exactly and retain only the minimum passages needed for a69 sound check.70 - If sound checking depends on broad or distributed context that should not71 be retained as a bounded set of quotes, do not append a substitute72 paraphrase or an oversized extract. Return `snapshot required` and tell73 the writer to include the exact marker `(snapshot required)` in the ingest74 link text. The source claim must pass `semantic/grounding-alignment` while75 the verified snapshot is present.767. For the bounded-quotes route, append the items yourself:77 - Retain the ingest's complete incumbent bytes. Construct a candidate by78 splicing only within the `## Quotes` section, using the incumbent file's79 newline convention: when the section body is exactly80 `No source quotes have been retained yet.`, replace only that sentence;81 otherwise insert the new items after all incumbent items and before the82 next level-two heading, adding only the separator newlines valid adjacent83 items need. Preserve every incumbent item and every byte outside the84 section. Do not merge, deduplicate, reorder, or reword anything.85 - Recheck the paired paths, source identity, and checksum against the86 current bytes, write the candidate once, then run87 `commonplace-validate kb/sources/<slug>.ingest.md`. The validator resolves88 each `Source extract (verbatim)` against the name-paired snapshot and89 fails on one that does not occur; that check, not your own reading, is90 the verification — an agent checking text it just transcribed confirms91 its own copy. Earlier grounding runs produced false extracts by silently92 repairing capture artifacts (line-break hyphenation, an inline footnote93 marker, a LaTeX arrow); quote the snapshot's bytes as they are.94 - Re-read the result and require the intended splice plus exact95 preservation of all other bytes. If any post-write check or validation96 fails, restore the retained incumbent bytes exactly, verify that97 restoration, and report failure rather than leaving an invalid or partial98 append. A `source quote` failure is about the item, not the splice: fix99 the extract against the snapshot, never rewrite the file around it.100 A `populated Quotes section conflicts` failure identifies stale prose101 outside Quotes. Restore the incumbent and report that non-quote prose must102 be repaired before grounding is retried; this skill must not repair it.1038. Return the ingest path and exactly one route: `quotes sufficient`, `quotes104 added`, or `snapshot required`. For `quotes added`, also return the appended105 quote texts. If validation warned that a populated Quotes section coexists106 with `(snapshot required)`, repeat that warning so the caller verifies that107 the marker still belongs to a claim needing broader snapshot context. For108 `snapshot required`, repeat the exact link-text marker and the requirement109 to run `semantic/grounding-alignment` before the source claim lands.110111Semantic uniqueness is not required. Similar, overlapping, or disputed exact112passages are never merged, rewritten, or deleted by this procedure.