From outline-skills
Operate Outline knowledge base - manage documents, collections, search, users, groups, comments, attachments, shares, stars, revisions, events, views, and file operations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/outline-skills:outline-skillsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when the user asks to operate an Outline knowledge base via API/CLI.
Use this skill when the user asks to operate an Outline knowledge base via API/CLI.
Outline documents support rich, structured content — not just plain paragraphs. When creating or updating documents, actively choose formatting that fits the task: headings, bullet/numbered lists, task lists, tables, quotes, code fences, callouts, links, attachments, and Mermaid diagrams when helpful.
For math, use dollar-sign delimiters so Outline renders it correctly: $x^2 + y^2$ for inline math and $$\int_0^1 x^2\,dx$$ for display math. Avoid LaTeX-style \(...\) and \[...\] delimiters because they may remain plain text in Outline.
Prefer readable structure over large walls of text. For example:
$...$ or $$...$$ for math expressionsTrigger this skill when requests involve:
Before running commands:
document-id, collection-id, etc.).delete, archive, revoke), confirm scope with user if ambiguous.After running commands:
pip install outline-kb-cliol_api_...outline-cli--api-key, --base-url, --timeout.outline-skills/config.json~/.outline-skills/config.jsonParameter Order: Global parameters (--api-key, --base-url, --timeout) MUST be placed BEFORE the subcommand:
# ✓ Correct
outline-cli --api-key "..." --base-url "..." collections list
# ✗ Wrong
outline-cli collections list --api-key "..." --base-url "..."
Output mode: By default, outline-cli prints compact, agent-friendly JSON summaries rather than the complete raw Outline API response. The summary preserves practical fields like IDs, names, URLs, counts, pagination, and bounded text previews while omitting noisy nested fields such as policies and collaboration tokens. Use --raw when you need exact API JSON, and use --max-text-chars to control summary previews:
outline-cli auth info # compact identity/team summary
outline-cli search "deployment guide" --limit 5
outline-cli documents info --id "document-id" --max-text-chars 1000
outline-cli documents info --id "document-id" --max-text-chars 0 # metadata only
outline-cli auth info --raw # complete API response
--raw and --max-text-chars may be placed after the nested command, as shown above. API errors and config warnings are written to stderr, so stdout stays valid JSON on successful commands.
Base URL Format: The base URL usually include the /api suffix:
# ✓ Correct
https://app.getoutline.com/api
https://outline.example.com/api
# ✗ Wrong
https://app.getoutline.com
https://outline.example.com
Large Content Input: Prefer file-backed inputs for longer Markdown/comment bodies instead of very large shell arguments:
outline-cli documents create --title "Title" --collection-id "collection-id" --text-file ./doc.md
outline-cli documents update --id "document-id" --text-file ./doc.md
outline-cli comments create --document-id "document-id" --data-file ./comment.md
outline-cli comments update --id "comment-id" --data-file ./comment.md
Local Markdown with images/assets: Use the higher-level documents create-from-file workflow instead of plain documents create --text-file when the Markdown contains local image references. It preflights assets, uploads each unique local file as an Outline attachment, rewrites Markdown links, and rolls back temporary resources on upload/update failures.
Recommended safe sequence:
outline-cli documents create-from-file --file ./report.md --collection-id "collection-id" --dry-run
outline-cli documents create-from-file --file ./report.md --collection-id "collection-id" --title "Report" --save-rewritten ./report.outline.md
If the user asks for real testing, create/use an empty test collection first so existing Outline content is not polluted.
export OUTLINE_API_KEY="ol_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export OUTLINE_BASE_URL="https://app.getoutline.com/api" # Must include /api suffix
{
"api_key": "ol_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"base_url": "https://app.getoutline.com/api",
"timeout": 30
}
outline-cli documents create --title "Title" --text "Content" --collection-id "collection-id"
outline-cli documents create --title "Title" --text-file "./doc.md" --collection-id "collection-id"
outline-cli documents info --id "document-id"
outline-cli documents list --collection-id "collection-id"
outline-cli documents update --id "document-id" --title "New Title"
outline-cli documents update --id "document-id" --text-file "./doc.md"
outline-cli documents archive --id "document-id"
outline-cli documents restore --id "document-id"
outline-cli documents delete --id "document-id"
outline-cli documents move --id "document-id" --collection-id "collection-id"
outline-cli documents duplicate --id "document-id"
outline-cli documents templatize --id "document-id"
outline-cli documents export --id "document-id"
outline-cli documents import --file "./doc.md" # local file; Markdown/text is imported directly, other files use Outline import flow (supported formats depend on server)
outline-cli documents create-from-file --file "./report.md" --collection-id "collection-id" # local Markdown with local images/assets
outline-cli documents create-from-file --file "./report.md" --collection-id "collection-id" --dry-run
outline-cli documents create-from-file --file "./report.md" --collection-id "collection-id" --upload-local-links --save-rewritten "./report.outline.md"
outline-cli documents drafts --collection-id "collection-id"
outline-cli documents archived --limit 25 --offset 0
outline-cli documents deleted --limit 25 --offset 0
outline-cli documents viewed --limit 25 --offset 0
outline-cli documents empty-trash
outline-cli documents unpublish --id "document-id"
outline-cli documents add-user --id "document-id" --user-id "user-id"
outline-cli documents remove-user --id "document-id" --user-id "user-id"
outline-cli documents memberships --id "document-id"
outline-cli documents users --id "document-id"
outline-cli documents add-group --id "document-id" --group-id "group-id"
outline-cli documents remove-group --id "document-id" --group-id "group-id"
outline-cli documents group-memberships --id "document-id"
outline-cli collections list
outline-cli collections info --id "collection-id"
outline-cli collections create --name "Collection Name"
outline-cli collections update --id "collection-id" --name "New Name"
outline-cli collections delete --id "collection-id"
outline-cli collections documents --id "collection-id"
outline-cli collections add-user --id "collection-id" --user-id "user-id"
outline-cli collections remove-user --id "collection-id" --user-id "user-id"
outline-cli collections memberships --id "collection-id"
outline-cli collections add-group --id "collection-id" --group-id "group-id"
outline-cli collections remove-group --id "collection-id" --group-id "group-id"
outline-cli collections group-memberships --id "collection-id"
outline-cli collections export --id "collection-id" --format "markdown"
outline-cli collections export-all --format "markdown"
Sharing workflow for collections:
collections add-user.user-id, so first find the user with users list --query, usually by email or name.admin is usually the right default.auth info shows the API key already belongs to the same person the user wants to share with, no extra sharing is needed.outline-cli search "query"
outline-cli search "query" --titles-only
outline-cli search "query" --collection-id "collection-id" --limit 10
outline-cli auth info # Get current user and team information
Returns:
Use cases:
outline-cli users list --limit 25
outline-cli users info --id "user-id"
outline-cli users invite --email "[email protected]" --name "New User"
outline-cli users update --id "user-id" --name "Updated Name"
outline-cli users update-role --id "user-id" --role member
outline-cli users suspend --id "user-id"
outline-cli users activate --id "user-id"
outline-cli users delete --id "user-id"
outline-cli groups list
outline-cli groups info --id "group-id"
outline-cli groups create --name "Group Name"
outline-cli groups update --id "group-id" --name "New Name"
outline-cli groups delete --id "group-id"
outline-cli groups add-user --id "group-id" --user-id "user-id"
outline-cli groups remove-user --id "group-id" --user-id "user-id"
outline-cli groups memberships --id "group-id"
Comment Features:
outline-cli comments create accepts Markdown text through Outline's text field, so common formatting like paragraphs, lists, bold, italics, and inline code renders as rich text in Outline commentscomments create replies are auto-split into numbered threaded comments like [1/3], [2/3], [3/3]Comment Operations:
outline-cli comments list --document-id "document-id"
outline-cli comments create --document-id "document-id" --data "Comment text"
outline-cli comments create --document-id "document-id" --data-file "./comment.md"
outline-cli comments create --document-id "document-id" --data "Reply text" --parent-id "parent-comment-id"
outline-cli comments update --id "comment-id" --data "Updated comment"
outline-cli comments update --id "comment-id" --data-file "./comment.md"
outline-cli comments delete --id "comment-id"
outline-cli comments resolve --id "comment-id"
outline-cli comments unresolve --id "comment-id"
outline-cli comments add-reaction --id "comment-id" --emoji "👍"
outline-cli comments remove-reaction --id "comment-id" --emoji "👍"
When to use comment features:
resolve to mark discussions/issues as completedunresolve to reopen discussions that need more attention--parent-id to reply to specific comments and create threaded discussionscomments create is the preferred path for rich-text replies from Markdown input--limit and --offset for paginationIMPORTANT - Comment Threading Limitation:
parentCommentId, you MUST use that comment's parent as your --parent-id, NOT the comment itself--parent-id A's ID, NOT B's IDAttachment Operations:
outline-cli attachments create --name "file.pdf" --document-id "document-id" --content-type "application/pdf" --size 1024
outline-cli attachments upload --file "./figure.png" --document-id "document-id"
outline-cli attachments redirect --id "attachment-id"
outline-cli attachments delete --id "attachment-id"
Local Markdown publishing details:
documents create-from-file supports inline Markdown images (), reference-style images, and HTML <img src="path.png"> outside fenced/indented code blocks.data: URLs are left unchanged.--asset-root to restrict the allowed tree, or --allow-outside-assets only when intentionally uploading files outside it.--upload-local-links to upload local non-image links such as PDFs.outline-cli shares create --document-id "document-id"
outline-cli shares list --document-id "document-id"
outline-cli shares info --id "share-id"
outline-cli shares revoke --id "share-id"
outline-cli shares update --id "share-id" --published
outline-cli stars create --document-id "document-id"
outline-cli stars list
outline-cli stars delete --id "star-id"
outline-cli stars update --id "star-id" --index 0
outline-cli revisions list --document-id "document-id"
outline-cli revisions info --id "revision-id"
outline-cli events list --limit 25
outline-cli events list --document-id "document-id"
outline-cli file-operations list --type export
outline-cli file-operations info --id "file-operation-id"
outline-cli file-operations redirect --id "file-operation-id"
outline-cli file-operations delete --id "file-operation-id"
outline-cli views create --document-id "document-id"
outline-cli views list --document-id "document-id" --limit 25
outline-cli docs / outline-cli doc -> outline-cli documentsoutline-cli colls / outline-cli coll -> outline-cli collections401 Unauthorized:
ol_api_403 Forbidden:
404 Not Found:
collections list, users list):
/api suffixhttps://outline.example.com/api (not https://outline.example.com)The CLI prints a Hint: line for common API errors. Follow it first — for example, a 404 hint that mentions /api usually means OUTLINE_BASE_URL is missing the /api suffix, while a resource-specific 404 usually means the ID is wrong or inaccessible to the API-key user.
429 Rate Limited:
--limit for list/search commands.5xx Server Error:
Connection errors:
OUTLINE_BASE_URL is set correctlyConfig warnings:
.outline-skills/config.json or ~/.outline-skills/config.json files produce Warning: messages on stderr and are ignored.400 Bad Request - "Comment must be less than 1000 characters":
Comment not rendering Markdown as expected:
comments create sends Markdown through Outline's text field and supports common formatting, but comments use a smaller rich-text schema than documents.--data-file and let the CLI's Markdown-aware splitter preserve block boundaries.user-id.pip install --upgrade outline-kb-cli
chmod 600 ~/.outline-skills/config.json
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.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Generates daily or weekly digests of activity from connected sources (chat, email, docs, tasks, CRM), highlighting action items, decisions, mentions, and project updates.
npx claudepluginhub visualdust/outline-skills --plugin outline-skills