Wiki Narrate — Cited Narrative Readouts
Use this skill only for a topic-based Markdown readout. Do not add tag or page-list
selection, prior-query input, voice aliases, HTML, PDF, slides, renderer handoffs, or
new compiled knowledge pages.
Command Contract
/wiki-narrate <topic> [--voice briefing|plain-language|lecturer] [--save]
- Require a non-empty .
- The default voice is .
- Voice names are canonical and case-sensitive. Unsupported values must return an
error listing , , and without searching or
writing.
- is the only persistence switch.
- For a missing topic, malformed option, or unsupported voice, return a short usage
or validation error and do not search, write, append a log event, or change .
Retrieval
- Resolve configuration with the Config Resolution Protocol, including an inline
vault override, then read the target vault's when it exists.
Load before drafting citations.
- Read and first. Select candidates by frontmatter and summary
before reading bodies.
- When configured, use QMD before ; if QMD is absent, unconfigured, or fails,
continue with the index and path. Treat QMD output as candidate guidance, not
evidence: establish each claim from the allowed vault page itself.
- Honor filtered-mode phrases such as "public only", "user-facing", "no internal
content", "as a user would see it", and "exclude internal". Skip pages tagged
or in that mode: never read, cite, or expose
them.
- Exclude , , , , , ,
, and from candidates.
- Read matching sections before full pages, and read full pages only when a factual
claim cannot otherwise be established. Preserve relevant lifecycle and freshness
annotations; do not upgrade a page's trust.
Claim Ledger and Citation Audit
Draft a ledger before prose. Each item contains a claim, supporting
links, and one status: supported fact, inferred connection, or ambiguous conflict.
When
OBSIDIAN_LINK_FORMAT=markdown
, render the same supporting page as a standard
Markdown link; otherwise use the vault's
form.
Ensure every factual sentence has adjacent supporting citations. Mark inferred connections
; mark unresolved conflicts
. Never use web knowledge, model memory, or invented examples to close a gap. Omit unsupported claims and name the gap in Coverage. An inference or ambiguity marker supplements, rather than replaces, adjacent citations.
Drafting and Output
Read
and use exactly the requested voice skeleton. The selected
voice may change prose and ordering, but cannot change the ledger's factual boundary.
Return Markdown only, structured as:
- A title naming the topic and selected voice.
- The selected voice's sections, in its documented order.
- Adjacent citations for each factual sentence, rendered with
.
- A footer listing cited pages, the count of inferred statements, and
known evidence gaps.
If evidence is weak or contradictory, produce only the supported portion. Mark each
unresolved conflict
with citations to all conflicting pages, and list
the remaining gaps in
.
Persistence
Present the result by default. For
, create
if necessary and write
with
,
,
,
,
, and
frontmatter. Use a deterministic, filesystem-safe
derived from the
topic. Save the same completed Markdown readout that was returned in conversation.
A readout is derived output: exclude
from retrieval and must not update
or
. Do not create
or a readout file without a successful
result.
Logging and Hot Cache
After a narration attempt that reaches retrieval, append one
event to
:
- [TIMESTAMP] WIKI_NARRATE topic="<topic>" voice=<voice> result_pages=N mode=normal|filtered saved=true|false outcome=success|no_match|write_failed
- Without , append the event with after returning the readout;
do not create a readout or change .
- After a successful write, append the event with , then refresh
with the topic, voice, cited pages, inference count, evidence gaps, and
saved readout path. changes only after a successful save.
- If the readout write fails after drafting, return the completed readout in
conversation, report that saving failed, append a event with
saved=false outcome=write_failed
when remains writable, and do not update
.
- If appending fails, preserve the readout result and report the logging
failure separately. Never represent a failed log or save as successful.
Safe Failure Behavior
- No matching pages: explain that the vault lacks material for the topic. Create
no readout file even if was requested, do not change , and record a
event with when is writable.
- Weak evidence or source conflict: do not resolve it with outside knowledge.
Return only supported claims, label ambiguity where applicable, and make the gap
explicit in ; saving remains available for that successful partial
readout.
- QMD unavailable or unconfigured: state the fallback briefly in the working
update and continue safely through and ; do not fail the narration
merely because QMD is unavailable.
- Write failure: never leave a partial readout presented as saved, never update
, and never update or .