LLM Wiki
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
Indexed knowledge bases with command-line tools for agents. An agent skill from plasma-ai/wiki.
$ npx skills add plasma-ai/wiki --skill wiki -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install plasma-ai/wiki wiki --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/plasma-ai/wiki.git skills-src && mkdir -p .claude/skills && cp -r skills-src/wiki/skills/wiki .claude/skills/wiki && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "wiki" agent skill from https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wiki into .claude/skills/wiki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wikiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add plasma-ai/wiki --skill wiki -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install plasma-ai/wiki wiki --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plasma-ai/wiki.git skills-src && mkdir -p .agents/skills && cp -r skills-src/wiki/skills/wiki .agents/skills/wiki && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "wiki" agent skill from https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wiki into .agents/skills/wiki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add plasma-ai/wiki --skill wiki -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install plasma-ai/wiki wiki --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plasma-ai/wiki.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/wiki/skills/wiki .cursor/skills/wiki && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "wiki" agent skill from https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wiki into .cursor/skills/wiki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/plasma-ai/wiki.git --path wiki/skills/wiki--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add plasma-ai/wiki --skill wiki -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install plasma-ai/wiki wiki --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plasma-ai/wiki.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/wiki/skills/wiki .gemini/skills/wiki && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "wiki" agent skill from https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wiki into .gemini/skills/wiki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install plasma-ai/wiki wikiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add plasma-ai/wiki --skill wiki -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/plasma-ai/wiki.git skills-src && mkdir -p .github/skills && cp -r skills-src/wiki/skills/wiki .github/skills/wiki && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "wiki" agent skill from https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wiki into .github/skills/wiki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add plasma-ai/wiki --skill wiki -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install plasma-ai/wiki wiki --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/plasma-ai/wiki.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/wiki/skills/wiki .opencode/skills/wiki && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "wiki" agent skill from https://github.com/plasma-ai/wiki/tree/main/wiki/skills/wiki into .opencode/skills/wiki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "wiki", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
wikiIndexed knowledge bases with command-line tools for agents. An agent skill from plasma-ai/wiki.
Wiki is an agent skill from plasma-ai/wiki. Indexed knowledge bases with command-line tools for agents.
Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Knowledge Management, covering Knowledge bases and LLM wikis. The repository describes itself as: Indexed knowledge bases with command-line tools for agents. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 0cf9a14. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pipxpipuvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pipx, pip and uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Wiki loads about 4.9k tokens when it runs. Until then it costs about 16 tokens; SKILL.md has 2,943 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from plasma-ai/wiki at commit 0cf9a14, republished under its Apache-2.0 licence (© plasma-ai). 2,943 words, ~4,948 tokens.
.claude/skills/wiki/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.A wiki is a structured, indexed knowledge base organized as a folder tree with
_index.md files. Each folder has an index that links to its children
(subfolders and pages), and a content section below a *** delimiter for
user-authored notes.
Initialize a wiki in the current project and configure integrations:
wiki init — scaffold a new wiki with a root indexwiki config — install Obsidian plugins and the git merge driverwiki trust — authorize a wiki to run its .wiki/wiki.py hookMaintain indexes as files are added and removed:
wiki lint — validate structure and flag issueswiki update — sync index links with the filesystemwiki new — create an indexed folder with an authored desc and contentBrowse structure, search across content, and read entries:
wiki map — print an indented tree overviewwiki search — rank relevant pages with SQLite FTS5wiki match — match content with regexwiki read — read a named entryInstall the CLI from PyPI if it is not already on your PATH:
pipx install plasma-wiki(pip install or uv tool install work too.)
Then run commands directly:
wiki <command> ...Run wiki --help for a list of commands, and wiki <command> --help for full
option descriptions.
A wiki is many small, independent pages, so wiki work parallelizes well and is often too large for one context. Default to sub-agents and dynamic workflows rather than authoring or auditing page by page yourself:
wiki update once to stitch the new pages into the
indexes. Update adds and repairs index link rows and frontmatter only — it
never linkifies mentions in page prose, so author [[...]] cross-links by
hand, root-relative inside the wiki..wiki/ is the tool's namespace. Every root carries a .wiki/ directory
holding settings.json — the file that declares the wiki root; wiki init
writes it and wiki update restores a missing one — plus the derived
word-counts and ranked-search caches and the staged Obsidian config. Never
author content there; the walk skips dot-directories by construction._index.md), gitignore-style globs in exclude.patterns in
.wiki/settings.json exclude whole subtrees from indexing — never walked,
scaffolded, or linted, though wiki read still serves them. The enclosing git
repository's ignore rules fence the same way, with no configuration: what the
repo ignores is not wiki content, so a stray driver output beside tracked
pages is never adopted, minted an _index.md, or linked — delete or fence
residue rather than letting update sweep it in. A wiki whose own root is
gitignored is exempt./, \, *, [, ], |, #), a leading dot,
non-printable names, and the reserved _index stem — spaces, dashes, and
unicode all pass. Stricter rules (e.g. ASCII identifiers) are opt-in per wiki
via naming.validate in .wiki/settings.json (seed it at creation with
wiki init --settings); wiki init and wiki lint enforce whatever policy
is set.wiki update writes both
stamps when a file gains frontmatter, keeps created: from then on, and
rewrites updated: on every actual write — never hand-edit them; an edit goes
undetected unless the value stops parsing under the configured format, which
wiki lint fails. created/updated default to UTC in %Y-%m-%dT%H:%M:%SZ;
set timestamp.timezone (an IANA name) and timestamp.format (a strftime
string) in .wiki/settings.json to change them — use %z rather than a
literal Z for a non-UTC zone.wiki update sets each
page's name and H1 heading to the path-joined name (e.g. core/design) so
names stay consistent with the tree structure — to rename an entry, move its
file rather than editing name:. Any index or page may carry an optional
authored title: frontmatter field, which wins its H1 (wiki update keeps
the line directly under name:, and adding frontmatter to a bare page seeds
title: from its authored H1); without one, a hand-edited heading is still
rewritten to name. Unset a title by deleting the line or setting
title: null — update removes it, and lowercase null is the only reset
spelling (~/Null/NULL render literally as the heading). Keep titles on a
single line, quote a title containing : , and prefer plain text.
wiki match --field title matches only authored titles — an unset entry has
no line to match. Setting titles.required to true in .wiki/settings.json
demands a title everywhere: update seeds a title: null placeholder on every
index and page missing one, and lint fails each placeholder until a value is
authored.category: frontmatter field; wiki update copies it into the parent index's
link label as a [category] name prefix, and wiki map --category filters by
it. Fresh frontmatter carries no category: line — unset one by deleting the
line or setting category: null (update removes the line; as with titles,
lowercase null is the only reset spelling). Keep categories on a single
line.wiki update keeps every block in
canonical order — name, title, desc, category, tags, sources,
created, updated — moving each field (with its block-scalar body) verbatim
into its slot. Custom keys are allowed: one named like com.example (word
characters, dots, dashes) keeps its relative order below the known fields,
above the timestamps; a key spelled any other way (one with spaces) stays with
the field above it.# starts a comment, and
null # comment unsets like null. wiki lint reports a block a strict
reader rejects (an unquoted : inside a value, a duplicate key, a body that
is not key: value pairs) as an invalid_yaml issue; wiki update still
repairs such a block through its line grammar, except a body that is not
key: value pairs, a mapping whose keys are not column-0 key: lines, or a
block whose repair would leave a strict reader worse off (an accepted block
rejected, or authored lines folded into a quoted value), which it leaves
untouched.[[...]]) target is read from the wiki root, one rule per spelling:
a prefix-free target ([[core/design]]) must name something inside the wiki;
a target starting with ./ or ../ (or carrying a . or .. segment
anywhere) must leave the wiki, so one spelling names an external file from
every page ([[../math/lemmas]] from a root-level page and from
nodes/verify.md alike) and moving a page never changes its links. Such a
link is live only under a folder the wiki allowlists in links.external in
.wiki/settings.json: a list of folder paths relative to the wiki root, each
climbing out of it with leading .., e.g.
{"links": {"external": ["../src", "../math"]}}; an entry is the literal
prefix of every link it admits. List the narrowest folder holding the targets,
and a folder, never a file. Under an allowlisted folder the target is live
when the file, its .md page, or the folder exists; a target inside another
wiki (a folder holding .wiki/settings.json) follows that wiki's own
settings, so a folder it indexes fails lint exactly as at home
(Link [[../math/g2]] targets a folder, not a page (use [[../math/g2/_index]])).
Link a file or the _index page, never a bare folder — stricter link checkers
reject a bare folder link too. A prefixed link that lands inside the wiki
fails lint (points inside the wiki through './' or '../'), naming the
prefix-free spelling (of the target read from the wiki root, else of the same
text read from the page's folder; the root itself is _index); so does an
absolute path to an in-wiki target
(points inside the wiki through an absolute path), which names the
prefix-free spelling when something exists there, since an absolute path
spells one machine's layout; and so does a prefixed link that misses under an
allowlisted folder while the same text read from the page's folder names
something in the wiki — the slip [[../overview]] from a nested page, meaning
the in-wiki overview.md, fails with (use [[overview]]). A prefixed link
outside every allowlisted folder fails lint whatever is on disk with
points outside every links.external folder (add '../docs' to links.external in .wiki/settings.json to allow it),
adding , or use [[overview]] when the same text read from the page's folder
names something in the wiki, or the root-relative spelling of an allowlisted
file it reaches (, or use [[../src/main.py]] for [[../../src/main.py]]
from notes/meeting.md, one .. too many). Link when the reader should open
the file; a passing mention, or anything outside every allowlisted folder,
goes in backticks. The allowlist is a lint rule alone: wiki read never
serves an external target (use wiki read --path <its root> for another wiki,
cat for a file), generated index rows never carry one, and wiki map never
shows an external folder. Obsidian cannot see outside the vault, so an
external link shows unresolved there; the bundled Wiki Root Links plugin,
which wiki init and wiki config install, makes Obsidian read the link from
the wiki root and turns a click on it into a notice (or opens a markdown
target in the sibling wiki's own registered vault), while stock Obsidian reads
it from the note's folder and a click creates the missing target at that path,
as folders outside the vault — do not click it there.
wiki match '\[\[\.\.?/' --lines lists every link opening with ./ or ../
(code samples included; the wiki lint findings are the authoritative list).wiki lint prints issues to stdout and soft notes
to stderr; exit 1 means exactly "issues found" (0 clean, 2 a command error) —
notes never gate. A script must branch on the exit code or read
wiki lint --json (one JSON document on stdout carrying every finding typed:
an explicit issue/note severity, a machine kind, and per-kind payload
fields beside the prose text), never classify findings by scraping the prose
streams: a stderr note is not a blocking issue.[[...]] in index or page prose whose
target no longer exists — inside the wiki or under a links.external folder —
draws a stderr note from wiki lint without failing the run; the note
suggests the root-relative form the author likely meant when one resolves (an
absolute spelling of an allowlisted file draws its ../ spelling, and a
target missing only by a trailing slash the same path without it). A
links.external entry naming no folder on this machine draws one note per run
(links.external entry '../src' names no folder on this machine; links into it are not checked)
and the links into it draw no notes — an environment condition, so leave them
alone. Broken links in the generated index link block — the rows wiki update
maintains — are hard issues until the next update prunes them (each removal
announced, with the cause named when the target is merely excluded rather than
deleted), as is a prose wikilink naming a folder rather than the folder's
index page — in this wiki or in another wiki a links.external folder admits:
link [[folder/_index]], never [[folder]] — a ./ or ../ prose link that
lands inside the wiki (points inside the wiki through './' or '../'), which
names the prefix-free spelling to write instead, an absolute prose link that
lands inside the wiki (points inside the wiki through an absolute path),
which names the prefix-free spelling when something exists there, and a ./
or ../ prose link outside every links.external folder
(points outside every links.external folder), which names the entry to add.wiki lint fails a desc (or an authored
link description) that lacks a trailing period; the seeded ... placeholder
only draws a soft note. Author the desc in the child page's frontmatter —
wiki update copies it onto the parent index's link line. A desc containing
: or # must be YAML-quoted — a strict reader rejects the unquoted colon
on a one-line desc or on a continuation line of one (wiki lint reports it as
invalid_yaml; under a bare desc: key an indented Key: value line nests a
mapping instead, which no strict reader shows as text and lint does not
report) and reads # as a comment (lint names it as the likely cause only
when the cut-short desc loses its period); surrounding quotes are stripped
when the value is read. Never hand-wrap a desc mid-word or onto a list-marker
start — let the block scalar carry the breaks; lint fails the wrap artifacts
(a hyphen dangle, a phantom list item).wiki update creates a missing
_index.md for every new directory with a desc: ... placeholder and
announces the batch in its condensed summary
(Created N new indexes (fill in their descs); run with --full for the
per-path New index: lines). Fill in the desc right after the update — lint
soft-notes the placeholder until you do. For a deliberate creation (an
adoption ceremony's mechanical step), prefer
wiki new <folder> --desc ... --content ...: it requires both authored inputs
— refusing blanks and placeholders outright, descs are never auto-stubbed —
and wires the folder's rows and the parent's new row in the same pass, so the
adoption lands lint-complete. The wiring is a scoped wiki update of the
parent subtree (the whole wiki for a top-level folder), so pending maintenance
in that scope — adoptions, prunes — lands in the same run.wiki update — with title: seeded from its authored H1, while a page
with no H1 gains the path-joined heading in its body, never a seeded title —
and each adoption is announced (Adopted N bare pages (frontmatter added) in
the condensed summary; --full prints the per-page lines). Until then
wiki lint names the page as a hard issue
(Bare page (no frontmatter); update will adopt it) alongside the adoption
diff.no-lint region. A page that must display
otherwise-flagged content (sample conflict markers, stale link examples) wraps
those lines in <!-- start: no-lint --> ... <!-- end: no-lint -->, which
silences the positional rules — hard issues and soft notes alike — for just
that span. Regions never affect file-level checks, and a dangling or nested
marker is itself a hard lint issue.*** delimiter and
[[wikilinks]] are load-bearing syntax; mdformat/prettier-style hooks rewrite
*** to --- and escape the brackets, demoting the generated link block to
plain text. wiki update repairs a mangled index and wiki lint names the
damage signatures (escaped wikilinks, a thematic break standing where ***
belongs), but don't rely on the repair: for mdformat add the mdformat-wiki
plugin (under pre-commit, additional_dependencies: [mdformat-wiki] on the
hook, dropping a coexisting mdformat-frontmatter — both register a
frontmatter renderer and whichever is discovered first wins), which makes wiki
faces round-trip byte-identically; for formatters with no plugin lane (e.g.
prettier) exclude the wiki root instead (wiki/ in .prettierignore)._index.md
files it normalizes the regenerated name/updated keys to ours (plus
created whenever the base index carries no real stamp — an add/add merge, a
hand-written or imported index), resolves the link block to the union of both
sides' rows — ours' layout wins, rows present only in theirs ride over with
their desc continuations, appended above the closing ***, and a row both
sides carry keeps ours' text unless only theirs changed it against the base,
so a merge never drops one side's additions, and an edit only one side made is
never lost (when both sides edit the same row, ours wins) — and three-way
merges everything authored — the remaining frontmatter fields
(title/desc/created/category/tags/sources) and the user content
below *** — which can still conflict for hand-resolution. A side missing its
*** entirely (formatter damage) can't be split into regions, so it conflicts
whole-file with a hint comment naming the repair — restore the *** on that
branch (wiki update does it), then redo the merge. Run wiki update after a
merge to re-sort the link rows and prune any carried row whose target is gone
from the merged filesystem — the H1 rides ours' link-block layout, so a
merged-in title: shows in its H1 only after that update. init/config
register the driver in local git config and write the **/_index.md glob to
.gitattributes in the working tree only — you stage and commit it yourself,
and each clone runs wiki config once to register the driver._index.mds
merge add/add with no common ancestor: the generated region resolves
automatically — including the seeded created stamps, which are wiki update
churn on both sides — but body prose authored below *** on both sides
conflicts for hand-union (empty or identical bodies merge clean). Concurrent
cohorts should leave a new directory's index body empty until after the merge
wave, then author it once. The merge driver plants a one-line HTML-comment
hint above such add/add conflict markers naming this convention — delete it as
you resolve..wiki/wiki.py hook needs explicit trust. A wiki may ship a
.wiki/wiki.py (a custom Wiki subclass) that runs code with the user's
privileges, so wiki refuses to load an untrusted hook — every command that
resolves the wiki fails, naming the hook and pointing at wiki trust. This is
a security decision for the human: surface the error and let the user run
wiki trust for a wiki they have vetted, rather than running it yourself or
working around the refusal. A hookless wiki needs no trust; trust is recorded
per resolved root in ~/.wiki/settings.json (WIKI_CONFIG_DIR overrides the
config home).© plasma-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in wiki/skills/wiki of plasma-ai/wiki.
Open the folder on GitHubat commit 0cf9a14
Wiki next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Wiki this skillplasma-ai/wiki | 104 | — | ~4.9k | Automated safety check: Pass | Apache-2.0 | |
| LLM Wikilewislulu/llm-wiki-skill | 655 | — | ~3.7k | Automated safety check: Pass | None | |
| Wiki Builderrohitg00/pro-workflow | 2.9k | — | ~1k | Automated safety check: Pass | None | |
| Arkon Editnduckmink/arkon | 1.5k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Research Wiki Builderdair-ai/dair-academy-plugins | 614 | — | ~1.3k | Automated safety check: Pass | MIT | |
| LLM Wiki Knowledge GraphEgonex-AI/Understand-Anything | 86k | — | ~1.5k | Automated safety check: Pass | MIT |
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
rohitg00/pro-workflow
Start, structure, and grow a persistent research wiki indexed in pro-workflow's SQLite knowledge base.
nduckmink/arkon
Propose or directly apply edits to Arkon wiki pages, including proposing brand new pages.
dair-ai/dair-academy-plugins
Creates and maintains configurable research wikis: scaffold a folder, add sources, compile pages and indexes, and file query answers back.
Egonex-AI/Understand-Anything
Detects a Karpathy-pattern LLM wiki and builds an interactive knowledge graph with entities, implicit relationships and topic clusters.
nduckmink/arkon
Answer questions using the Arkon knowledge base. An agent skill from nduckmink/arkon.
Categories
Indexed knowledge bases with command-line tools for agents. An agent skill from plasma-ai/wiki. Wiki is an agent skill from plasma-ai/wiki. Indexed knowledge bases with command-line tools for agents.
Wiki fits situations like: tasks that involve Knowledge bases; tasks that involve LLM wikis.
Run `npx skills add plasma-ai/wiki --skill wiki -a claude-code`. Or copy the skill folder (wiki/skills/wiki in plasma-ai/wiki) into .claude/skills/wiki in your project. Claude Code loads it when a task matches its description.
Run `npx skills add plasma-ai/wiki --skill wiki -a codex`. Or copy the skill folder (wiki/skills/wiki in plasma-ai/wiki) into .agents/skills/wiki in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add plasma-ai/wiki --skill wiki -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wiki, .gemini/skills/wiki, .github/skills/wiki and .opencode/skills/wiki in your project.
Going by SKILL.md and its folder, Wiki needs the command-line tools its instructions call (pipx, pip and uv). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use pip and uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Wiki is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Wiki: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), Wiki Builder (rohitg00/pro-workflow, 2.9k stars), Arkon Edit (nduckmink/arkon, 1.5k stars) and Research Wiki Builder (dair-ai/dair-academy-plugins, 614 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
plasma-ai (a GitHub organization) maintains it in plasma-ai/wiki, which has 104 GitHub stars. The repository was last updated on September 28, 2026.
Source: plasma-ai/wiki on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.