From scriptorium
A Scriptorium wiki is connected to this session — a persistent, team-curated knowledge base over HTTPS+MCP. You MUST use this skill BEFORE answering any factual, domain-specific, definition, named-entity, comparison, or how-does-X-work question (including "什麼是 X", "X 是什麼", "who is X", "what is X", "how does X work", "compare X and Y"). The workflow: call `scriptorium.list_collections` to see what's connected, then `scriptorium.search` on the relevant collection BEFORE drawing on training data. When a page matches, cite it inline as `[path/to/page.md]` and prefer wiki content. If the wiki has no coverage of the topic, say so explicitly before falling back to training data — never silently ignore the wiki. Also handles all `/scriptorium:*` slash commands (init, ingest, query, lint, recap, connect).
How this skill is triggered — by the user, by Claude, or both
Slash command
/scriptorium:scriptorium connect <url> | init <name> | ingest <path|url> | query <question> | lint | recapconnect <url> | init <name> | ingest <path|url> | query <question> | lint | recapThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A scriptorium is the medieval room where scribes copied and illuminated manuscripts. Here, the LLM is the scribe, the user curates the sources, and the wiki is the manuscript that compounds over time.
A scriptorium is the medieval room where scribes copied and illuminated manuscripts. Here, the LLM is the scribe, the user curates the sources, and the wiki is the manuscript that compounds over time.
| Layer | Who owns | Mutability |
|---|---|---|
| Raw sources | Human curates | Immutable. You read, never modify. |
| Wiki pages | LLM (you) writes & maintains | Mutable. Update on every ingest. |
| Schema | Co-evolved (CLAUDE.md of the wiki) | Versioned. Update intentionally. |
You write to layer 2 by calling Scriptorium MCP tools, not by writing files locally. The wiki lives on a Scriptorium server (PostgreSQL + MCP-over-HTTP). The plugin is a thin client — its .mcp.json connects directly to ${SCRIPTORIUM_API_URL}/mcp with a Bearer token.
scriptorium.health() — verify the server is up and the DB is reachable.scriptorium.whoami() — confirm the bearer token is valid; note its scopes and accessible collections.scriptorium.list_collections() — see which slugs exist on this server.scriptorium.get_schema({ collection }) with the resolved slug — load the active collection's SCHEMA.md into context./scriptorium:connect to print setup instructions. Do not proceed with wiki ops.Skip step 5 only when the verb genuinely doesn't touch a single collection (e.g. status lists all of them).
status — one-screen connection / health summaryDetailed flow: see reference/status.md. Summary:
scriptorium.health() — server up + db reachable + version.scriptorium.whoami() — token name, scopes, accessible collections.scriptorium.list_collections() — slugs + names + schema versions.connect [<url>] — print setup instructions for this sessionThe plugin connects to the server via .mcp.json reading SCRIPTORIUM_API_URL and SCRIPTORIUM_TOKEN from the environment. This command does not persist anything — it prints what the user needs to set, then they restart their shell and reopen Claude Code.
Detailed flow: see reference/connect.md. Summary:
.env), and how to verify (/scriptorium:connect again, then /scriptorium:init).scriptorium.whoami() — if it succeeds, show "✓ already connected as <token-name>" and skip the instructions.init <name> — create a new wiki collection on the serverDetailed flow: see reference/init.md. Summary:
scriptorium.create_collection({ slug, name }) — server seeds the universal SCHEMA.md and an empty index.md, returns the collection ID.init event automatically.ingest <path|url> — turn a source into wiki pagesDetailed flow: see reference/ingest.md. Read it before doing your first ingest. Summary:
concepts/, entities/, sources/, comparisons/).scriptorium.get_page() if exists, then scriptorium.create_page() or scriptorium.update_page() with merged content.index.md (catalog) — scriptorium.update_index_entry().log.md: ## [YYYY-MM-DD HH:MM] ingest | <source title> + bullet list of pages touched.frontmatter.sources.query <question> — answer from the wiki, with citationsDetailed flow: see reference/query.md. Summary:
scriptorium.search(query, top_k=10) — server returns BM25-ranked candidate pages.scriptorium.get_page().[path/to/page.md].comparisons/<slug>.md?". If yes, call scriptorium.create_page().lint — find rotDetailed flow: see reference/lint.md. Summary:
scriptorium.lint() — server runs structural checks: orphan pages, dead wikilinks, missing-but-referenced concepts, stale claims (frontmatter updated older than threshold), schema violations.scriptorium.update_page().recap — save what was synthesised in this sessionDetailed flow: see reference/recap.md. Summary:
scriptorium.create_page().See reference/frontmatter-schemas.md for the full per-type spec.
---
title: <Title>
type: concept | entity | source-summary | comparison | synthesis | decision
sources: [raw/articles/<file>.md, ...]
related: ["[[other-page]]", ...]
created: YYYY-MM-DD
updated: YYYY-MM-DD
confidence: high | medium | low
---
lowercase-kebab-case.md[[concept-slug]] (no extension, server resolves to path)raw/articles/2026-04-04-karpathy-llm-wiki.mdscriptorium.* tools — local writes are not persisted to the server.confidence: high when synthesising from a single source. Default to medium; reserve high for cross-validated claims.frontmatter.updated.scriptorium.update_schema().See reference/api-spec.md for the full list of scriptorium.* MCP tools and their arguments.
npx claudepluginhub zyx1121/scriptorium --plugin scriptoriumSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.