wiki · plasma-ai — Claude Code skill: what it does, how to install
Manages an indexed Markdown folder tree for project documentation and private node memory. Coordinates pages, task lists, and wikilinks through the wiki CLI.
npx skills add plasma-ai/fractal --skill wiki -a claude-codeWhat wiki does
The skill maintains two knowledge bases stored as trees of _index.md files: the shared branch wiki $WIKI_DIR and private memory $MEMORY_DIR. The bundled wiki tool includes commands for init, update, lint, map, search, and read. Omitting the mandatory --path flag causes the CLI to walk up folders or fall back to {cwd}/wiki, which silently targets the wrong directory or fails.
Files and folders require ascii snake_case naming; wiki lint rejects hyphens or spaces. Frontmatter is parsed as strict YAML, requiring quotes around descriptions containing colons or hash symbols. Running wiki update parses each page frontmatter to rewrite derived lines and top headings in _index.md.
Cross-references use root-relative [[page]] wikilinks without ./ or ../ prefixes and must not point outside the current wiki. Forward links to uncreated sibling files must be deferred to keep index builds clean.
What it helps with
- organize project documentation into nested folder trees with
_index.md - validate links and file naming conventions with
wiki lint - rebuild index tables and page headings using
wiki update - separate shared team knowledge from private node checklists
Example prompts for the agent
- Run
wiki update --path=$WIKI_DIRfollowed bywiki lint --path=$WIKI_DIR - Create an architecture note at
$WIKI_DIR/core/router.mdand link it to[[overview]] - Check the repository knowledge base size using
wiki map --stat --path=$WIKI_DIR
How to install wiki
1Skills CLI (Vercel)
npx skills add plasma-ai/fractal --skill wiki -a claude-code2Manually: put the files in place
~/.claude/skills/wiki/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/wiki/
1Skills CLI (Vercel)
npx skills add plasma-ai/fractal --skill wiki -a codex2Manually: put the files in place
.agents/skills/wiki/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add plasma-ai/fractal --skill wiki -a cursor2Manually: put the files in place
.cursor/skills/wiki/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install plasma-ai/fractal wiki2Manually: put the files in place
.github/skills/wiki/SKILL.md1Skills CLI (Vercel)
npx skills add plasma-ai/fractal --skill wiki -a gemini-cli2Platform CLI
gemini skills install https://github.com/plasma-ai/fractal --path fractal/_node/skills/wikiManually: put the files in place
.devin/skills/wiki/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add plasma-ai/fractal --skill wiki -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about wiki
How to install wiki in Claude Code?
Run npx skills add plasma-ai/fractal --skill wiki -a claude-code. The skill file is placed at ~/.claude/skills/wiki/SKILL.md.
What does the wiki skill do?
It provides a disciplined workflow for managing Markdown knowledge bases across shared project docs and private agent memory. The CLI validates wikilinks, enforces identifier naming, and rebuilds folder index files.
Why is the --path flag mandatory for wiki CLI commands?
Without --path, the CLI attempts directory resolution by walking upward or falls back to {cwd}/wiki. This can silently target the wrong wiki folder or cause execution errors when accessing $MEMORY_DIR.
Source text
SKILL.md · Apache-2.0
---
name: wiki
description: The wiki CLI and the node's two knowledge bases -- project wiki and memory.
---
# Wiki
A wiki is an indexed folder tree of `_index.md` files. A node works with two:
- **Project wiki** (`$WIKI_DIR`) -- shared across nodes; per-branch, reaching
others only through merges (use `fractal radio` for live coordination). Holds
architecture, conventions, and patterns; contribute durable project-wide
knowledge here.
- **Memory** (`$MEMORY_DIR`) -- this node's private knowledge base. See the
`memory` skill for how to maintain it.
Todo lists follow the same split: a private working checklist lives in memory; a
task list other nodes should see and track lives in the project wiki. Either way
it is living state -- current open items, pruned as they complete -- never an
append-only log.
Run `wiki --help` and `wiki <command> --help` for the CLI (init, update, lint,
map, search, read). Always pass `--path` (`$WIKI_DIR` or `$MEMORY_DIR`) -- a
bare command resolves the enclosing wiki by walking up, else `{cwd}/wiki`, which
from the node's cwd is the project wiki at best and never memory, so an omitted
`--path` silently targets the wrong wiki or errors. Run
`wiki update --path=<dir>` after adding, moving, or deleting pages;
`wiki lint --path=<dir>` validates structure.
## Editing discipline
Name pages and folders in ascii snake_case (`command_core`, not `command-core`)
-- both wikis enforce identifier-safe names (the project wiki's mirror the
source modules they document), so `wiki lint` rejects hyphens and spaces.
`wiki update` regenerates derived state: each page's entry line in `_index.md`
(name and description) is pulled from the page's own frontmatter, so fix a
`desc:` on the page and rerun update -- hand edits to an index line are
overwritten by the next update, and each page's H1 is rewritten to its name
unless an authored frontmatter `title:` supplies the heading, which update keeps
and renders as the H1 (index entry lines still show the name). `wiki lint` is
regenerate-and-compare: it prints the diff `wiki update` would apply plus any
real defects, and separates issues (must fix) from advisory notes. Work the loop
-- edit pages, `wiki update`, `wiki lint` -- until clean (clean = lint exits 0;
scripts branch on the exit code, not the prose summary); lint validates
structure, not content truth, so verify facts against your sources yourself.
Frontmatter is read as strict YAML: quote a one-line `desc:` that contains `: `
or ` #` (`desc: "Note: x."`), since the unquoted form is invalid YAML.
## Cross-linking
Cross-reference aggressively -- the links between pages are the wiki's primary
value -- but **link only to pages that already exist.** Sibling nodes build
their pages in parallel, so a page you would link to may not exist yet: defer
that forward link rather than emit a wikilink to a not-yet-created page. Stale
sibling links are an expected transient, not a failure -- `wiki lint` reports a
stale link in index or page prose as an advisory note (exit 0), so never stall
an iteration chasing them. Broken links in the generated index link block -- the
rows `wiki update` maintains -- are the exception: each is a hard issue, fixed
by repairing the target or by rerunning `wiki update`, which prunes the row. The
**parent** reconciles stale sibling links when children merge up: indexes
refresh mechanically at commit and merge, so its integration job is repairing or
pruning what lint reports, not rerunning `wiki update` -- plus refreshing any
navigation or status tables it authored (lint cannot see a stale "in flight" row
for a page that has since merged).
Wikilinks also stay inside the wiki you are writing in. A `[[...]]` link targets
another page in the same wiki; anything outside it -- source files, configs, or
the other knowledge base (project wiki vs. memory) -- is referenced in plain
text or backticks, never linked; `wiki lint` notes a wikilink that points
outside the wiki. Write in-wiki links prefix-free, from the wiki root
(`[[overview]]`, `[[core/overview]]`), never `[[./overview]]` or
`[[../overview]]` -- a `./` or `../` target reads from the page's folder and
marks a link that leaves the wiki, so lint reports one that lands inside it.
## Structure
Lay the wiki out as topical folders from the start: each domain area gets a
folder with its own `_index.md`, and pages join the folder that owns their
subsystem. A flat root is fine below ~6-8 pages; planning more, create the
folders before the pages -- the directory tree is what makes a wiki browsable,
searchable, and navigable, and it should mirror the domain the way a good module
layout mirrors a design. A shape to aim for:
```text
wiki/
_index.md
<subsystem>/
_index.md
<topic>.md
...
<subsystem>/
_index.md
<sub-area>/
_index.md
<topic>.md
...
<sub-area>/
...
<topic>.md
...
...
```
Nest deeper as areas grow: when a folder accumulates pages spanning more than
one concern, split them into sub-folders, each with its own `_index.md`. Every
index is the table of contents for its level, so structured nesting is what
keeps the wiki navigable at any size -- a reader answers "where does this live?"
by descending a few links instead of scanning one long list, and related pages
sit beside each other where cross-links suggest themselves.
A grown flat wiki shards into folders the same way after the fact: move related
pages into a subfolder and rerun `wiki update` -- indexes regenerate around the
new layout, and inbound links the move broke surface as stale-link notes to
repair. Before dumping a big tree, preflight with `wiki map --stat` (a one-line
size summary of what the same flags would print) and bound the dump with
`--depth` and `--desc-limit=<n>` -- descriptions print untruncated by default.
© plasma-ai · Apache-2.0 · plasma-ai/fractal
Similar skills
All skills for Agent setup: memory, context, orchestration →wiki by other authors comes first.