Help us improve
Share bugs, ideas, or general feedback.
From aria-knowledge
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).
npx claudepluginhub mikeprasad/aria-knowledge --plugin aria-knowledgeHow this skill is triggered — by the user, by Claude, or both
Slash command
/aria-knowledge:intake [doc <url-or-title>] | <path|directory|glob|url> [path2] [path3][doc <url-or-title>] | <path|directory|glob|url> [path2] [path3]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
Two modes:
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.
Harvests knowledge from external sources like sibling repos, local directories, files, or web URLs into the project's KB system with provenance tracking.
Pulls external context into your second brain from Linear, repositories, or any content (PDFs, images, code, text). Useful for importing project tickets, codebases, or arbitrary data.
Share bugs, ideas, or general feedback.
Two modes:
/intake doc) — Capture a single doc as a structured intake entry at intake/docs/{YYYY-MM-DD}-{slug}.md with a 5-section body: what the doc claims / worth keeping / contested or unclear / action implied / my reaction. For when you're reading something and want a thoughtful capture rather than a bulk scan.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 /intake 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:intake.
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
/intakefrom a non-Code runtime.This variant scans local files/directories/globs via Bash + WebFetch, which Cowork can't access the same way. For the Cowork-native variant (file scan reads from attached folder; doc mode uses ~~docs MCPs; supports pasted content), use
/aria-cowork:intake.Use
/aria-cowork:intakeinstead? (y/n)
Wait for an explicit reply:
y / yes — Use the Skill tool to invoke aria-cowork:intake 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."
Use {knowledge_folder} as the base path for all file operations in subsequent steps.
Mode detection: If the first argument matches doc (case-insensitive), this is a doc-mode capture. Set mode = doc; the remaining arguments (if any) are the source URL, file path, or title. Jump to "Doc Mode Steps" below. Otherwise set mode = bulk and proceed to Step 1.
Doc mode runs steps D1 → D6 to completion and exits. Do not run any bulk-mode step (Step 1 onward) in doc mode.
The source can be a URL, file path, or just a title (when capturing notes on a doc you read elsewhere).
doc contain a URL: use as source_url; attempt WebFetch in D2 to extract title/author/contentdoc contain a file path: use as source_path; Read in D2doc are plain text (no URL/path detected): treat as source_title; no content fetch — user fills body manually in D3doc: prompt: "What doc are you capturing? Paste a URL, file path, or title."Capture the following for D3:
source_title (from page title, file frontmatter, or user-provided string)source_url (if URL; else omit)source_author (if discoverable; else omit per #28a-5)captured_at (current ISO 8601 timestamp)read_at (defaults to captured_at — D4 preview lets user adjust if they read the doc earlier)${CLAUDE_PLUGIN_ROOT}/template/intake/intake-doc.md to load the body template.source_title: lowercase, hyphenated, alphanumeric only, max ~60 chars. Example: "The Bitter Lesson" → the-bitter-lesson. If source_title is empty, use doc-{HHMMSS} as fallback.{knowledge_folder}/intake/docs/{YYYY-MM-DD}-{slug}.md. If file already exists at that path, append -2, -3, etc. to slug until unique.source_url if absent; omit source_author if absent. Always populate captured_at, read_at, type: intake-doc.index.md tags to prefer canonical names; new tags are fine but flag them).semantic-hints: free-form phrases that match how a future query might reach this doc (per the convention in template/README.md).{Your reaction — 1-3 sentences. This section is yours, not the doc's.}) for the user to fill, since "reaction" is the user's voice not Claude'sShow the populated entry before writing. Format:
## Doc Intake Preview
**Target:** {knowledge_folder}/intake/docs/{YYYY-MM-DD}-{slug}.md
[full populated entry: frontmatter + body]
---
Save to intake/docs/?
- `yes` — write the file as shown
- `edit {section}` — revise a specific section (claims / keeping / contested / action / reaction / tags / hints / title / slug)
- `skip` — abort, write nothing
Wait for explicit response. Allow multiple edit directives in sequence (re-show preview after each revision).
On yes, write the entry to {knowledge_folder}/intake/docs/{YYYY-MM-DD}-{slug}.md. Create the intake/docs/ subfolder if it doesn't exist (this is the first doc-mode capture).
## Doc Intake Complete
- **Source:** {source_title or source_url or "untitled"}
- **Path:** {knowledge_folder}/intake/docs/{YYYY-MM-DD}-{slug}.md
- **Tags:** {tag list}
Entry staged in intake/docs/ for next /audit-knowledge to review and promote.
Exit after report. Doc mode runs D1 → D6 only; bulk-mode steps (Step 1 onward) are not executed.
The user provides one or more sources as arguments. Each source can be:
./docs/architecture.md, ss/CLAUDE.md).md files recursively (e.g., ./docs/, ss/)ss/**/*.md, ./notes/*.txt)https://docs.example.com/api)For each source:
Limits:
If no argument is provided, ask: "What would you like to intake? Provide a file path, directory, glob pattern, or URL."
For each source file or URL:
For directories, process files in alphabetical order.
For multi-file sources (directory or glob), issue Read calls for all files in a single parallel tool-use block. Content scanning in Step 3 runs in the main thread after reads complete. Exception: URL sources are fetched individually via WebFetch since each request is a network operation.
Review each source for the same five categories as /extract:
Be selective — not every paragraph is knowledge. Focus on content that would help future sessions: patterns, decisions, constraints, and non-obvious information. Skip boilerplate, auto-generated content, and implementation details that are better found by reading the code directly.
Issue Read calls for the three backlog files AND {knowledge_folder} scan targets in a single parallel tool-use block. Dedup comparison runs in the main thread after reads complete.
For each finding, check against:
{knowledge_folder}/intake/insights-backlog.md{knowledge_folder}/intake/decisions-backlog.md{knowledge_folder}/intake/extraction-backlog.md{knowledge_folder}/Skip anything already captured. Note skipped items in the preview.
Present all findings grouped by category before staging anything:
## Intake Preview
**Sources scanned:** N files from [path/URL summary]
**Findings:** N items (N insights, N decisions, N feedback, N project, N references)
**Skipped:** N duplicates
### Insights (N)
1. [brief description] — from [source file]
2. [brief description] — from [source file]
### Decisions (N)
1. [brief description] — from [source file]
### Feedback / Conventions (N)
1. [brief description] — from [source file]
### Project Context (N)
1. [brief description] — from [source file]
### References (N)
1. [brief description] — from [source file]
Stage all to backlogs? (all / numbers to exclude / none)
Based on user response:
Route each approved item to the appropriate backlog file using the same format as /extract:
{knowledge_folder}/intake/insights-backlog.md### YYYY-MM-DD — [project or "intake"] — Imported from [source filename]
- Insight bullet 1
- Insight bullet 2
{knowledge_folder}/intake/decisions-backlog.md### YYYY-MM-DD — [project or "intake"] — Imported from [source filename]
**Decision:** What was decided
**Why:** Rationale (if documented in source)
**Alternatives considered:** (if documented in source, otherwise omit)
{knowledge_folder}/intake/extraction-backlog.md### YYYY-MM-DD — [type: feedback|project|reference] — Imported from [source filename]
**Content:** What was captured
**Source:** [file path or URL]
## Intake Complete
- **Sources:** N files scanned
- **Insights:** N staged
- **Decisions:** N staged
- **Feedback:** N staged
- **Project context:** N staged
- **References:** N staged
- **Skipped:** N duplicates, N excluded by user
Knowledge staged in backlogs for next /audit-knowledge to review and promote.
/extract, intake operates on content the user may not have reviewed. Show findings first. Applies to both bulk mode (Step 5 preview) and doc mode (Step D4 preview).source_url, source_title, source_author (when known) in frontmatter.ss/, cs/, df/), tag the entries with that project. Otherwise use "intake" or "cross". Same rule for both modes.intake/docs/ is created on first doc-mode capture, not bootstrapped on /setup. Doesn't exist until needed.{date}-{slug}.md already exists, append -2, -3, etc. Don't overwrite. The audit process will dedup if the captures are about the same doc.