Build and maintain a company knowledge base as a wiki of interlinked markdown notes in the workspace — a private, compounding Wikipedia. Use when the user wants to start or organize a knowledge base / wiki, ingest sources (URLs, documents, pasted notes) into it, ask questions answered from it, or audit (lint) it. Defines the wiki layout (SCHEMA / index / log / raw / pages), the frontmatter contract, [[wikilink]] conventions, and a deterministic lint script that catches broken links, orphan pages, index drift, and frontmatter problems.
78
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
You maintain a compounding knowledge base: a wiki of interlinked markdown
notes that lives in the workspace. Unlike a chat that forgets, the wiki is
written once and kept correct — every new source is folded into existing
pages and cross-referenced, so the knowledge graph gets denser over time. The
files are plain markdown with [[wikilinks]], so the user can also open them
in Obsidian or any editor.
The wiki lives under wiki/ in the workspace (use an existing root such as
knowledge-base/ if one is already there). Structure:
wiki/
├── SCHEMA.md # the domain, conventions, and tag taxonomy — defined once
├── index.md # catalog of every page, grouped by type, each with a one-line summary
├── log.md # append-only action log (newest entries at the bottom)
├── raw/ # captured sources, IMMUTABLE — you read these, never edit them
│ ├── articles/
│ ├── docs/
│ └── transcripts/
└── pages/ # the wiki pages (one entity/concept/comparison/query each)Page filenames are lowercase, hyphenated slugs, no spaces: acme-robotics.md,
atlas-robot.md. A [[Display Name]] link resolves to the page whose slug
equals the slugified display name, so [[Acme Robotics]] and [[acme-robotics]]
both point at pages/acme-robotics.md.
When the user asks how to read or browse what you've built, tell them: it's
plain markdown they can open in any editor, and the pages are Obsidian-native
by design — they can open the wiki/ folder as an Obsidian vault to get graph
view, backlinks, and clickable [[wikilinks]] for free. (The files live in the
workspace, so point the vault at the workspace wiki/ folder.)
---
title: Acme Robotics
created: 2026-06-05 # YYYY-MM-DD
updated: 2026-06-05 # YYYY-MM-DD — bump on every edit
type: entity # entity | concept | comparison | query | summary
tags: [companies, robotics] # every tag MUST appear in SCHEMA.md's taxonomy
sources: [raw/articles/acme-launch.md] # the raw/ files this page draws on
# optional:
confidence: high # high | medium | low
contested: true # set when the page records a genuine contradiction
contradictions: [other-slug]
---[[slug]] (or [[slug|alias]]) for every cross-reference. Link the
first mention of any entity/concept that has (or should have) its own page.[[index]] where it helps navigation.raw/ file the page draws on in sources:.Before creating or editing anything, read the lay of the land so you don't duplicate pages or drift from the schema:
file_read wiki/SCHEMA.md — the domain + conventions + tag taxonomy.file_read wiki/index.md — what pages already exist.file_read wiki/log.md — recent activity (skim the tail).If wiki/ does not exist yet, go to Init.
wiki/ with raw/ and pages/ subfolders.SCHEMA.md: a one-paragraph description of the domain, the naming +
linking conventions (summarize this skill), and a tag taxonomy of
10–20 lowercase tags under a ## Tag taxonomy heading, one per - bullet.
If the domain is unclear, ask the user one question to scope it.index.md (an # Index heading) and log.md (# Log).A source is anything worth remembering. The wiki is source-agnostic — use
whatever surface fits: a URL (fetch it with web_fetch), a chat-attached
file (PDFs, Word, and spreadsheets are extracted to text), pasted notes,
or something you found with web_search. The steps are the same regardless.
raw/ (e.g. raw/articles/<slug>.md)
with a tiny header (source_url when there is one, ingested date). Fetch a
URL with web_fetch first. Never edit a file in raw/ afterward —
corrections go on the wiki pages, not the source.file_search the name and scan
index.md. Update the existing page rather than creating a duplicate.[[links]], and the new
raw/ path appended to sources:. Bump updated:.index.md (add new pages under their type, with a one-line
summary) and append to log.md (- 2026-06-05 — ingested <source>; added/updated <pages>).file_search for relevant pages; file_read the best matches.[[links]]. If the wiki can't
answer it, say so (and offer to ingest a source that would).type: query page under pages/
and add it to the index + log.skill_run({ skill: "knowledge-base", script: "lint", args: { root: "wiki" } })It returns JSON: clean, totalIssues, counts, and per-check arrays.
clean / totalIssues count only the blocking checks below; fix every
blocking issue with file_write / file_patch and re-run until clean is
true.
Blocking (gate clean):
index.md.SCHEMA.md's taxonomy first, or retag the page.Advisory (reported but do NOT gate clean — act on them with judgment):
updated if it still holds.When a new source contradicts an existing page, do NOT silently overwrite:
check the dates, keep both positions with their sources if the contradiction is
real, set contested: true and contradictions: [other-slug] in frontmatter,
and call it out to the user for review.
raw/. It is the immutable source layer.index.md and log.md — they are the wiki's navigation and history.6c5d85e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.