| 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 through POST /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
gbrain capture "..." --json
Defaults
- Slug:
inbox/YYYY-MM-DD-<hash8> (stable for same content; the daemon's 24h dedup catches re-captures).
- Type:
note (override with --type idea etc.).
- Frontmatter stamps:
captured_via: capture-cli, captured_at: <ISO>.
- Title: first non-empty line of the body, capped at 80 chars.
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. capture is the human-facing wrapper.
- Don't try to bulk-import dozens of files by looping over
gbrain capture.
That's what gbrain sync (or gbrain 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 PATH if you already have a fully-formatted markdown file.
- Don't pass secrets as inline content. Inline args land in shell
history. Use
--file or --stdin instead.
When NOT to use this skill
- Bulk ingestion of many files →
skills/media-ingest/SKILL.md or gbrain sync instead
- 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.