Help us improve
Share bugs, ideas, or general feedback.
From aria-knowledge
Decomposes a connected doc (Notion, Google Doc, Confluence, etc.) into multiple intake-backlog entries for audit routing. Use when extracting insights, decisions, or questions from a single page.
npx claudepluginhub mikeprasad/aria-knowledge --plugin aria-knowledgeHow this skill is triggered — by the user, by Claude, or both
Slash command
/aria-knowledge:extract-doc <doc-url-or-id> [tags]<doc-url-or-id> [tags]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pull knowledge-worthy items from a single connected `~~docs` source (Notion page, Google Doc, Confluence page, Box doc, Egnyte file) into `intake/insights-backlog.md`. Unlike `/intake doc` (which captures the doc itself as one structured artifact for later reaction), `/extract-doc` **decomposes** the doc into N intake entries — one per insight, decision, or question worth surfacing at audit.
Bulk imports knowledge from files, directories, or URLs into structured backlogs, or captures a single document with a 5-section template (claims, worth-keeping, contested, action, reaction).
Ingests content from Confluence, Google Docs, GitHub repos, remote URLs, or local files (DOCX, PDF, etc.) into Second Brain vault. Converts to Markdown via docling, runs graphify extraction, persists entities.
Batch extracts structured work items (requirements, user stories, tasks, bugs) from existing documents like specs, PRDs, and meeting notes into meta/work/ with business-context annotations.
Share bugs, ideas, or general feedback.
Pull knowledge-worthy items from a single connected ~~docs source (Notion page, Google Doc, Confluence page, Box doc, Egnyte file) into intake/insights-backlog.md. Unlike /intake doc (which captures the doc itself as one structured artifact for later reaction), /extract-doc decomposes the doc into N intake entries — one per insight, decision, or question worth surfacing at audit.
Canonical resolution: This is the Claude Code variant. When both plugin-claude-code and plugin-claude-cowork are loaded in the same session (most common in Claude Desktop), bare /extract-doc resolves to this skill — aria-knowledge (Code) is the canonical owner of all 24 dual-port skills per ADR-094 §Part 1. The Cowork variant is namespaced-only: /aria-cowork:extract-doc.
Before Step 0: Check that the Bash tool is available in this session. If Bash is NOT available (you are running in Claude Cowork or another non-Code runtime), surface the following notification and wait for explicit user confirmation:
⚠️ Runtime mismatch — you invoked aria-knowledge's
/extract-docfrom a non-Code runtime.This skill requires connected ~~docs MCPs (Notion, Google Docs, Confluence, Box, Egnyte), which are typically only present in Cowork. The Cowork-native variant has working MCP access. Use
/aria-cowork:extract-doc.Use
/aria-cowork:extract-docinstead? (y/n)
Wait for an explicit reply:
y / yes — Use the Skill tool to invoke aria-cowork:extract-doc with the same arguments the user provided to this invocation. Do not proceed with this skill's steps; the cowork variant takes over and runs to completion. This is the default-yes path — auto-redirect is the helpful action.n / no — Proceed with this (aria-knowledge) variant anyway despite the runtime mismatch. The user has explicitly opted in.This gate applies even when mode = auto per ADR-094 §Part 3. Auto mode's "implicit-yes on all gates" rule is suspended for the runtime-mismatch check — auto trusts that the user invoked the correct variant, and this gate enforces that precondition. All other auto-mode gates remain bypassed. The friction cost is now low: on y, the auto-redirect runs the correct variant with the original args.
If Bash is available, proceed to Step 0.
Read ~/.claude/aria-knowledge.local.md and extract knowledge_folder. If the file doesn't exist, stop: "aria-knowledge is not configured. Run /setup to get started."
Verify {knowledge_folder}/intake/insights-backlog.md exists. If not, stop: "Insights backlog not found. Run /setup to repair the knowledge folder structure."
Check Claude's available tool list for ~~docs MCPs:
~~docs (notion, atlassian, box, egnyte, google docs): if connected, available for doc fetch.If NO ~~docs MCP is connected, output the standard fallback notice and stop:
No required MCPs connected for
/extract-doc. Connect one of: Notion, Atlassian (Confluence), Box, Egnyte, or Google Docs (when available) via Claude Code's MCP config (or Cowork Settings → Connectors). See CONNECTORS.md. Skipping this run.
Per ADR-015.
The user provides one of:
https://www.notion.so/<workspace>/<title>-<id> or notion.so/<id>https://<org>.atlassian.net/wiki/spaces/<space>/pages/<id>/<title>https://docs.google.com/document/d/<doc-id>/... (if google docs MCP wired; placeholder URL in v2.18.0 .mcp.json)https://app.box.com/file/<file-id>https://<org>.egnyte.com/...Optionally followed by tags (e.g., engineering postmortem, cs onboarding).
Source-type detection:
| Input shape | Routes to |
|---|---|
Contains notion.so or www.notion.so | ~~docs (notion) |
Contains atlassian.net/wiki | ~~docs (atlassian) |
Contains docs.google.com/document | ~~docs (google docs) |
Contains app.box.com/file | ~~docs (box) |
Contains egnyte.com | ~~docs (egnyte) |
| Ambiguous | Ask user which ~~docs MCP holds the doc |
If the detected-source's MCP is not connected, output a specific fallback notice:
This doc looks like a [Notion / Confluence / etc.] page but the [vendor] MCP is not connected. Connect [vendor] via your MCP config and retry, or paste the doc URL of a different format. Skipping this run.
Call the connected MCP's page/doc-fetch tool with the resolved ID:
notion.fetch or pages.retrieve + blocks.children.list for body.confluence.pages.get (or equivalent) — request body in storage/representation that preserves headings + lists.documents.get — extract text content + structure.Gather:
Limit: if the doc is >20KB of extracted text, fetch the first 20KB + note the truncation in the entry metadata. The user can re-invoke with a section anchor (#heading) for the tail.
Read the doc body and identify knowledge-worthy items — discrete propositions worth surfacing at next /audit-knowledge. Each candidate should be a single self-contained claim, decision, lesson, or question.
For each candidate, classify into one of the standard intake categories:
| Category | Use when |
|---|---|
insight | Observation about how something works, or a learning |
decision | A choice that was made + rationale |
extraction | A pattern, recipe, or how-to worth promoting later |
idea | A "we should consider X" proposition |
reference | A useful URL or external resource named in the doc |
Quality bar: skip items that are project-status updates, ephemeral context, or items already obviously in the knowledge folder. Default to fewer-but-stronger — extracting 3 strong items beats 12 weak ones.
For each extracted item, append a new entry to {knowledge_folder}/intake/insights-backlog.md (or decisions-backlog.md / extraction-backlog.md per category; ideas go to intake/ideas/<date>-<slug>.md per v2.11.0 per-file convention).
Standard intake entry format (mirrors /extract skill output):
## <one-line claim or title>
- **Source:** [<doc-title>](<doc-url>) ([<vendor>])
- **Date captured:** <YYYY-MM-DD>
- **Project tags:** <from input args + auto-detected from doc workspace>
- **Original context:** <2-3 sentence excerpt from the doc giving the surrounding context>
<the insight itself, 1-3 sentences, in the user's voice as inferred from the doc>
For idea candidates (per v2.11.0 per-file convention), write {knowledge_folder}/intake/ideas/{date}-{slug}.md:
---
date: <YYYY-MM-DD>
project: <tag>
type: <category>
title: <slug-shaped title>
source: <doc-url>
---
**Proposal:** <the idea>
**Motivation:** <why this matters per the doc context>
**Source:** [<doc-title>](<doc-url>) via /extract-doc
Report to user:
Extracted <N> items from <doc-title> (<vendor>):
| Category | Count | Routed to |
|---|---|---|
| insight | <n> | intake/insights-backlog.md |
| decision | <n> | intake/decisions-backlog.md |
| extraction | <n> | intake/extraction-backlog.md |
| idea | <n> | intake/ideas/<date>-*.md |
| reference | <n> | intake/insights-backlog.md (will route to references/ at audit) |
Next: review at next /audit-knowledge run. The standard disposition vocabulary (Accept → tracker / roadmap / todo / adr / plan / bundle / rule / Defer / Reject) applies.
intake/*-backlog.md until /audit-knowledge routes them./clip-thread./intake with a directory or glob of doc URLs.insights-backlog.md / decisions-backlog.md / extraction-backlog.md / intake/ideas/*.md files in the shared knowledge folder./audit-knowledge — extracted items follow the same disposition vocabulary as any other intake entry. The Source: field is preserved through routing./intake doc mode (v2.17.0+): /intake doc captures ONE structured artifact per doc with user-fillable reaction section; /extract-doc decomposes a doc into MULTIPLE intake entries for audit routing. Use /intake doc when you want to react to a doc as a whole; use /extract-doc when the doc contains many discrete items worth surfacing separately.