capture
skills/capture/SKILL.md
name: capture description: Save any thought or content into the brain via one CLI command. The single human-facing entrypoint that replaces "put_page vs commit-then-sync vs autopilot-wait" with one command that just works. triggers:
- "capture this"
- "save this thought"
- "remember this"
- "ingest this into my brain"
- "drop this in the inbox"
- "save to brain" writes_pages:
- "inbox/*"
capture — the single ingestion entrypoint
When the user wants to save a thought, an article snippet, a transcript
fragment, or any text into their brain, run gbrain capture. Don't reach
for gbrain put or commit-then-sync — capture is the front door and it
handles both local and thin-client installs the same way.
Contract
- Input: the content to save (inline arg,
--file PATH, or--stdin). - Output: a page in the brain DB AND a markdown file on disk under
<sync.repo_path>/<slug>.md. Receipt printed to stdout. - Side effect: the page becomes immediately queryable via
gbrain query,gbrain search, or any MCP-bound agent. - Idempotency: same content → same
inbox/YYYY-MM-DD-<hash8>slug. The daemon's 24h content-hash dedup catches re-captures. - Trust: all captures via this skill are local-CLI trust (
remote: false). Untrusted webhook ingestion goes throughPOST /ingest, not this verb.
When to invoke
- "Capture this thought" / "save this" / "drop this into my brain" / "remember this"
- The user pastes content and asks to keep it
- After a meeting summary, a research note, or any synthesis that should land as a brain page
What it does
gbrain capture resolves to a put_page call (local) or a remote MCP call
(thin-client). Either way the page lands in the DB AND on disk in one move
via the v0.38 write-through plumbing. The default slug is
inbox/YYYY-MM-DD-<hash8> so captures cluster in a predictable triage
location.
How to use
gbrain capture "the thought I want to remember"
gbrain capture --file ./notes/today.md
echo "from a pipe" | gbrain capture --stdin
gbrain capture "..." --slug daily/2026-05-21
gbrain capture "..." --type idea --source voice-whisper
gbrain capture "..." --quiet # script-friendly: prints just the slug
gbrain capture "..." --json # structured output for agents
Defaults
- Slug:
inbox/YYYY-MM-DD-<hash8>(stable for same content; the daemon's 24h dedup catches re-captures). - Type:
note(override with--type ideaetc.). - Frontmatter stamps:
captured_via: capture-cli,captured_at: <ISO>. - Title: first non-empty line of the body, capped at 80 chars (truncation appends
…).
Output Format
Default prints a 5-line receipt:
captured:
slug: inbox/2026-05-21-abcdef12
status: created_or_updated
content_hash: f3a7b9c0d1e2f3a4…
file: /Users/you/brain/inbox/2026-05-21-abcdef12.md
captured_at: 2026-05-21T04:15:00.000Z
--quiet prints only the slug (use for SLUG=$(gbrain capture "..." --quiet)).
--json prints structured output for downstream tools.
Anti-Patterns
- Don't reach for
gbrain put. That's the old per-page primitive that doesn't know about default slug generation, content-type heuristics, or the receipt block.captureis the human-facing wrapper. - Don't try to bulk-import dozens of files by looping over
gbrain capture. That's whatgbrain sync(orgbrain import) is for. Capture is for single thoughts, single notes, single transcripts. - Don't pre-format the content yourself with frontmatter if you don't need to.
Capture wraps plain prose in sensible frontmatter (type + title +
captured_via + captured_at). The body becomes
# Title\n\n<your prose>. Pass--file PATHif you already have a fully-formatted markdown file. - Don't pass secrets as inline content. Inline args land in shell
history. Use
--fileor--stdininstead.
When NOT to use this skill
- Bulk ingestion of many files →
skills/media-ingest/SKILL.mdorgbrain syncinstead - Article/link with author + publication metadata →
skills/idea-ingest/SKILL.md(it knows to build the people page) - Meeting transcripts →
skills/meeting-ingestion/SKILL.md(attendee enrichment)
This skill is for the simple "I have a thought, save it" case. Specialized ingestion paths handle their own slugging + cross-referencing.