plugins/origin/skills/capture/SKILL.md
Save a memory to Origin in flow. Active capture verb — use proactively when the user states a preference, makes a decision, corrects you, or shares a durable fact. Invoked as `/capture <content>`.
npx skillsauth add davepoon/buildwithclaude captureInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Capture a single memory in the moment. Active verb: agent captures the moment of insight, like a photograph.
Call the origin MCP server's capture tool with the user's content as a
complete, self-contained statement. Attach topic from cwd or the
conversation — don't make the user type it.
capture(content="<args, written as a full sentence with WHY>",
memory_type="<picked from the 6 types>",
entity="<primary entity name, if any>",
space=<inferred>)
memory_type — agent picks one of 6The daemon classifies when a local model or API key is configured. In local memory mode it does not, so the agent picks the type from the content itself. Use this mapping:
| Type | Use for |
|---|---|
| identity | Durable facts about the user (role, company, language preference) |
| preference | "I prefer X because Y" — a habit, a correction, a stylistic choice |
| decision | "Going with A over B because C" — a specific choice with rationale |
| lesson | Root cause found, workaround discovered, technical insight earned |
| gotcha | Sharp edge, surprising behavior, a thing to watch out for |
| fact | Durable info about people, projects, tools — anchor to entity when possible |
If two types fit, pick the one closest to why the memory matters. A
decision also implies a preference, but decision is more specific.
entity — extract the anchorPick the single most important named thing in the content: a person,
project, tool, place. Use the exact name. Example: "Alice prefers TDD
because…" → entity="Alice". If the content has no named anchor,
omit entity.
topic / space inference~/Repos/origin/... → "origin").space when scope is known; if uncertain, run list_spaces
later (post-PR-C) or omit.The MCP capture tool takes a single primary entity. For additional
entities or relations, use the dedicated MCP tools. If the content
names more than one entity, capture the memory first, then for each
additional entity:
create_entity(name="<entity>", entity_type="<person|project|tool|place>")
For a relation between two entities:
create_relation(from_entity="<a>", to_entity="<b>", relation_type="<verb>")
Skip these calls when the daemon has an LLM — its post-ingest enrichment covers extraction.
One capture = one idea. "Prefers TDD" and "Uses pytest" are two captures, not one.
/handoff (multi-item batch)./recall.After capture returns, check response.triggered_revisions and response.auto_superseded.
If auto_superseded is non-empty, the daemon already resolved the contradiction. Surface it as informational:
Note: auto-superseded mem_X. Origin replaced a prior protected memory because
trust=high and similarity > 0.9. No action needed.
No accept/dismiss call required. The revision was applied automatically.
If triggered_revisions is non-empty (and auto_superseded is empty), render an inline block to the user:
Stored mem_new.
This capture topic-matches a protected memory now flagged for revision:
- mem_target_abc
Action: accept (replace original content) | dismiss (drop the revision) | leave (decide later)
Inline verb map:
accept_revision(target_source_id="mem_target_abc")dismiss_revision(target_source_id="mem_target_abc")/briefBoth fields can technically be non-empty in a single response (multiple protected matches), but in practice only one fires per capture: auto_superseded fires when trust=full and similarity > 0.9, triggered_revisions fires otherwise.
If neither field is non-empty, the capture stored cleanly with no conflicts.
development
Show drill-me learning progress — topics studied, cards due for review, weakest concepts, and what to study next. Use when the user asks what's due, how their learning is going, or for their drill-me status.
development
Teach the user a topic as an adaptive tutor — retrieval practice, spaced repetition with decay, and persistent memory in ~/.drill-me/. Use when the user wants to learn or be drilled on something, says "drill me on X", "teach me X", or wants to study a topic, a codebase, or a document.
development
Turn any codebase into evidence-grounded Markdown docs plus a machine-readable index.json. Every claim cites its source; never invents deployment steps.
tools
Assesses the current state of the startup project and recommends what to focus on next. Use when there is a need or a question from the user to understand what the next steps are or what to focus on next.