Markdown
A Claude Code plugin for Obsidian — Karpathy's LLM Wiki shipped as a four-layer, hook-enforced agent stack with multi-agent orchestration.
npx -y skills add odere-pro/claude-wiki-pages-plugin --skill markdownAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Query the wiki and render the answer as portable, GitHub-flavored markdown saved under vault/output/. Trigger when the user asks to "export X as markdown", "produce a markdown brief", "save the answer to the output folder", "give me a plain markdown version of …", or invokes /claude-wiki-pages:markdown directly. Reuses the query reading contract, then strips Obsidian-only syntax so the file is usable outside the vault.
SKILL.md
6.1 KB, as published. Nobody here has run it
LLM Wiki — Markdown export
Run a query against vault/wiki/, render the answer as portable markdown,
and write it to vault/output/<slug>.md. The result is plain
GitHub-flavored markdown — no [[wikilinks]], no Dataview blocks, no
Obsidian callouts — suitable for pasting into a PR body, an email, or a
non-Obsidian doc tool.
This skill is the publish-side counterpart to /claude-wiki-pages:query.
Query stays in the conversation; markdown lands on disk.
When to invoke
- The user explicitly asks to export, save, or render an answer as markdown ("export this as markdown", "save to the output folder").
- The user invokes
/claude-wiki-pages:markdowndirectly. - An agent (
claude-wiki-pages-analyst-agentCompile mode) chains this skill as a step.
Do NOT invoke when the user just wants an answer in the chat — use
/claude-wiki-pages:query for that.
Do NOT invoke for synthesis notes (cross-topic analyses live under
wiki/_synthesis/) — use /claude-wiki-pages:synthesize.
Reading contract
Same order and scope as /claude-wiki-pages:query:
vault/CLAUDE.md— the schema. Read first.vault/wiki/index.md— the top-level catalog.vault/wiki/<topic>/<topic>.md— per-folder MOCs (folder notes; legacy_index.mdwhere still present).vault/wiki/<topic>/*.md— candidate typed pages, plus pages reached by following[[wikilinks]](one hop) when the answer needs them.vault/wiki/_synthesis/*.md— prior syntheses, if relevant.vault/wiki/_sources/*.md— source summaries, when provenance matters.
Rendering contract
Convert wiki-flavored markdown to portable markdown:
- Wikilinks — replace
[[Page Title]]with[Page Title](../wiki/<path>/<slug>.md)(relative path fromvault/output/) when the target page resolves. If the target does not resolve, drop the link syntax and keep the plain text — never emit a dangling[[link]]. - Callouts — convert
> [!note] Titleand similar to a regular blockquote with the title bolded (> **Title**on the first line, then> body…on the next). - Dataview blocks — strip fenced
```dataviewblocks entirely. - Block IDs — strip Obsidian
^block-idmarkers. - Embeds —
![[image.png]]becomeswhen the asset exists; otherwise drop the embed. - Preserve — headings, ordered/unordered lists, tables, fenced code blocks, inline code, regular markdown links.
## Sourcesgrounding ledger — KEEP. When the query answer carries the tail## Sourcessection (the numbered grounding ledger from the query answer contract), the portable export keeps it. Its wikilinks are flattened like every other wikilink per this rendering contract ([[Page]]→[Page](../wiki/<path>/<slug>.md)); the raw source paths stay as plain paths. The ledger is part of the auditable answer, not Obsidian-only syntax.
Keep the source query, citations, and confidence visible in the output so the reader can audit the claims.
Writing contract
Exactly one new file:
vault/output/<slug>.md
<slug> is kebab-case of the question, truncated to 60 characters, or the
explicit name the user supplied.
The file MUST carry this frontmatter:
---
generated_by: markdown
source_query: "<original question, single line>"
generated_at: <YYYY-MM-DD>
sources:
- "[[Source Page A]]"
- "[[Source Page B]]"
---
Body shape:
# <Title derived from the question>
<direct answer in 1–3 paragraphs, with inline links to wiki pages where they resolve>
## Supporting pages
- [Page A](../wiki/<topic>/page-a.md) — one-line why this page matters
- [Page B](../wiki/<topic>/page-b.md) — …
## Caveats
- contradictions, low-confidence claims, gaps
## Sources
1. [Page A](../wiki/<topic>/page-a.md) — raw/<path-to-underlying-source>.md
2. [Page B](../wiki/<topic>/page-b.md) — raw/<path>.md, raw/<other-path>.md
---
*Generated by `/claude-wiki-pages:markdown` on <YYYY-MM-DD>. Sources: [[Source Page A]], [[Source Page B]].*
Plus one log append to vault/wiki/log.md:
## [YYYY-MM-DD] markdown | <question summary> → output/<slug>.md
If the target file exists, ask the user before overwriting.
This skill MUST NOT:
- Mutate any wiki page or any file under
vault/raw/. - Write outside
vault/output/(except the single log append). - Fabricate citations. Every page named in
sources:must exist; every resolved link in the body must point to a real file undervault/wiki/. - Emit
[[wikilinks]]in the rendered body. Wikilinks are allowed only in thesources:frontmatter list (for provenance) and in the trailing attribution line.
Workflow
- Schema. Read
vault/CLAUDE.md. - Query. Apply the
queryreading contract; gather the evidence and the candidate citations. - Resolve. For every wikilink target the answer would cite, locate
the actual file path under
vault/wiki/and compute the relative path fromvault/output/. - Render. Build the portable-markdown body per the rendering contract. Strip Obsidian-only syntax.
- Slug. Derive
<slug>from the user's question (or accept an explicit--name). Confirm overwrite if the file already exists. - Write. Create
vault/output/<slug>.mdwith the required frontmatter and body. - Log. Append the markdown entry to
vault/wiki/log.md.
Completion signal
Print, on separate lines:
Wrote: vault/output/<slug>.md
Logged: markdown | <truncated question>
If the user supplied an explicit --name, echo that name in the log entry
in place of the truncated question.