/outline
Conventions and efficient workflows for Outline knowledge bases via mcp-outline tools. Use when creating, editing, restructuring, or diagramming Outline documents — covers Outline markdown quirks (mermaidjs code fences), document and collection structure, string-match editing,
$ npx -y skills add Vortiago/mcp-outline --skill outline --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/outline
Context preview
The summary Claude sees to decide when to auto-load this skill.
Conventions and efficient workflows for Outline knowledge bases via mcp-outline tools. Use when creating, editing, restructuring, or diagramming Outline documents — covers Outline markdown quirks (mermaidjs code fences), document and collection structure, string-match editing,
SKILL.md
outline.SKILL.mdname: outline
description: Conventions and efficient workflows for Outline knowledge bases via mcp-outline tools. Use when creating, editing, restructuring, or diagramming Outline documents — covers Outline markdown quirks (mermaidjs code fences), document and collection structure, string-match editing, staged rewrites, batch operations, and search status filters.
Working with Outline
Markdown
- **Mermaid diagrams need ` ```mermaidjs ` fences, NOT ` ```mermaid `**
— the wrong fence silently renders as a plain code block.
- Otherwise standard markdown. Use ATX headings (`#`–`######`); they
power the TOC and section tools.
Structure
- Collections contain documents; documents nest via
`parent_document_id`. Browse: `list_collections`, `get_collection_structure`.
- Lifecycle: draft → published → archived → trash (30-day recovery
via `restore_document`; `delete_document(permanent=True)` is unrecoverable).
- `create_document(template=True)` / `update_document(template=True)`
adds to the "New from template" picker.
- Titles are not unique; resolve to IDs with
`get_document_id_from_title` or `search_documents`. Check `get_document_backlinks` before restructuring or deleting.
Search defaults to published only
Drafts and archived docs are invisible to `search_documents` and `list_recently_updated_documents` unless widened: `status_filter=["draft", "published", "archived"]`.
Reading large documents
1. `get_document_toc` — headings with 0-based line numbers. 2. `read_document_section(heading=...)` — case-insensitive substring; accepts headings as the TOC prints them (e.g. `"## Background"`). 3. `search_document_content(query=...)` — grep within the document: matching lines with line numbers and context. Use it to locate text for `edit_document` old_strings or `read_document` offsets. 4. `read_document(offset=N, limit=M)` — TOC/grep line numbers are valid offsets.
Full `read_document` only for small documents.
Editing
- Default to `edit_document`: each `old_string` must match exactly
once (add surrounding context to disambiguate); edits apply sequentially, all-or-nothing. Batch all edits for one document into a single call.
- `update_document` only for full replacement, title changes, or
`append=True` (sends just the chunk).
Staged rewrites
edit_document(id, edits=[...], save=False) # stage, repeat as needed
edit_document(id, edits=[...], save=True) # final batch + push all
edit_document(id, edits=[], save=True) # or: flush only
One API write total. Staged changes are server-memory only — flush before ending; a restart discards them. Read tools show staged text with an "unsaved changes" notice; `export_document` bypasses staging and returns the last saved content.
Many documents
Use `batch_create_documents`, `batch_update_documents`, `batch_move_documents`, `batch_archive_documents`, `batch_delete_documents` (10–50 per call; per-document results) instead of loops.
Missing tools
Deployments may be read-only, delete-disabled, or scope-filtered. Use what's listed; if an editing tool is absent, say so.
Exploration
For broad search-and-summarize, delegate to the `outline-explorer` agent (bundled with this plugin).
Read more
name: outline description: Conventions and efficient workflows for Outline knowledge bases via mcp-outline tools. Use when creating, editing, restructuring, or diagramming Outline documents — covers Outline markdown quirks (mermaidjs code fences), document and collection structure, string-match editing, staged rewrites, batch operations, and search status filters.
Working with Outline
Markdown
- **Mermaid diagrams need ` ```mermaidjs ` fences, NOT ` ```mermaid `**
— the wrong fence silently renders as a plain code block.
- Otherwise standard markdown. Use ATX headings (`#`–`######`); they
power the TOC and section tools.
Structure
- Collections contain documents; documents nest via
`parent_document_id`. Browse: `list_collections`, `get_collection_structure`.
- Lifecycle: draft → published → archived → trash (30-day recovery
via `restore_document`; `delete_document(permanent=True)` is unrecoverable).
- `create_document(template=True)` / `update_document(template=True)`
adds to the "New from template" picker.
- Titles are not unique; resolve to IDs with
`get_document_id_from_title` or `search_documents`. Check `get_document_backlinks` before restructuring or deleting.
Search defaults to published only
Drafts and archived docs are invisible to `search_documents` and `list_recently_updated_documents` unless widened: `status_filter=["draft", "published", "archived"]`.
Reading large documents
1. `get_document_toc` — headings with 0-based line numbers. 2. `read_document_section(heading=...)` — case-insensitive substring; accepts headings as the TOC prints them (e.g. `"## Background"`). 3. `search_document_content(query=...)` — grep within the document: matching lines with line numbers and context. Use it to locate text for `edit_document` old_strings or `read_document` offsets. 4. `read_document(offset=N, limit=M)` — TOC/grep line numbers are valid offsets.
Full `read_document` only for small documents.
Editing
- Default to `edit_document`: each `old_string` must match exactly
once (add surrounding context to disambiguate); edits apply sequentially, all-or-nothing. Batch all edits for one document into a single call.
- `update_document` only for full replacement, title changes, or
`append=True` (sends just the chunk).
Staged rewrites
edit_document(id, edits=[...], save=False) # stage, repeat as needed edit_document(id, edits=[...], save=True) # final batch + push all edit_document(id, edits=[], save=True) # or: flush only
One API write total. Staged changes are server-memory only — flush before ending; a restart discards them. Read tools show staged text with an "unsaved changes" notice; `export_document` bypasses staging and returns the last saved content.
Many documents
Use `batch_create_documents`, `batch_update_documents`, `batch_move_documents`, `batch_archive_documents`, `batch_delete_documents` (10–50 per call; per-document results) instead of loops.
Missing tools
Deployments may be read-only, delete-disabled, or scope-filtered. Use what's listed; if an editing tool is absent, say so.
Exploration
For broad search-and-summarize, delegate to the `outline-explorer` agent (bundled with this plugin).
## 📢 Official Outline MCP Server Available Outline now ships an official MCP server — we recommend using it. Read the docs. A Model Context Protocol server for interacting with Outline document management.

