Agent skill plus Python CLI for interacting with Outline knowledge bases through the Outline API.
SaferSkills independently audited outline-skills (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Use outline-cli for Outline tasks. Start with the requested operation; do not run authentication checks or load setup instructions unless needed.
Create native, readable Outline content rather than walls of text or ASCII substitutes. Actively choose headings, bullet/numbered lists, task lists, tables, quotes, code fences, callouts, attachments, and Mermaid diagrams to suit the material. Use tables for comparisons, code fences for commands, and diagrams for flows.
When referencing another document within the same Outline workspace, proactively try a document mention instead of a plain Markdown link:
@[Document title](mention://document/target-document-uuid)Resolve the actual target UUID through search/info; do not guess it. Existing --text / --text-file inputs can create this document-icon chip. Ordinary [title](/doc/id) links are not the same node.
Markdown reads serialize document mentions as ordinary links. A full Markdown read-edit-write is therefore lossy: re-express intended references with mention syntax, and do not assume all original rich-text nodes are preserved.
Use $x^2 + y^2$ for inline math and dollar-delimited blocks for display math:
$$
\int_0^1 x^2\,dx
$$Avoid \(...\) and \[...\], which may remain plain text. For diagrams, use a mermaid code fence rather than ASCII art.
--titles-only changes search semantics, not just output.--fields for complete values from original API paths, without unrelated objects. Paths apply across lists; filtering is local, not server-side.--raw for inspecting complete API responses.outline-cli search "topic" --limit 5 --max-text-chars 200
outline-cli documents info --id "document-id" --text-only
outline-cli documents info --id "document-id" --fields data.id,data.title,data.revisionDefault output is compact JSON. Use --max-text-chars 0 for no previews, documents info --full-text for full-body JSON, or --text-only for exact Markdown. See output controls for field paths, warnings, and constraints.
Put global connection flags (--api-key, --base-url, --timeout) before the subcommand. Output options may follow the nested command. Errors/warnings go to stderr.
Resolve required IDs from API results. For long document/comment bodies, use files:
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.mdDo not publish or share unless requested. Confirm ambiguous destructive actions. Never expose credentials. Report useful IDs/URLs and the result, not the whole response. Live write tests belong in an empty test collection.
outline-cli <command> <subcommand> --help for exact flags.create-from-file --dry-run before uploading.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.