[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N044775CDEXGCT25JQ3VQW":3,"skill-same:01M6N044775CDEXGCT25JQ3VQW":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":63,"updatedAt":64,"install":65,"resources":77},"01M6N044775CDEXGCT25JQ3VQW","capture",null,"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.","garrytan\u002Fgbrain","garrytan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19957?v=4","01M6DJCCDDG53MTYYRTXAXFG17","Garry Tan","01M6MZQZCEN3RRMD33E1X9ZZR9",32847,"MIT","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fplugin\u002Fskills\u002Fcapture\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"drop","when","single","entrypoint","my","true","with","via","wait","brain","human","cli","ingest","use","command","just","page","inbox","remember","sync","commit","2026-11-10 10:12:30",false,"---\nname: capture\ndescription: 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.\ntriggers:\n  - \"capture this\"\n  - \"save this thought\"\n  - \"remember this\"\n  - \"ingest this into my brain\"\n  - \"drop this in the inbox\"\n  - \"save to brain\"\nwrites_pages: true\nwrites_to:\n  - inbox\u002F\nwhen_to_use: \"Use when the user asks: \\\"capture this\\\", \\\"save this thought\\\", \\\"remember this\\\", \\\"ingest this into my brain\\\", \\\"drop this in the inbox\\\".\"\n---\n\n# capture — the single ingestion entrypoint\n\nWhen the user wants to save a thought, an article snippet, a transcript\nfragment, or any text into their brain, run `gbrain capture`. Don't reach\nfor `gbrain put` or commit-then-sync — `capture` is the front door and it\nhandles both local and thin-client installs the same way.\n\n## Contract\n\n- **Input:** the content to save (inline arg, `--file PATH`, or `--stdin`).\n- **Output:** a page in the brain DB AND a markdown file on disk under\n  `\u003Csync.repo_path>\u002F\u003Cslug>.md`. Receipt printed to stdout.\n- **Side effect:** the page becomes immediately queryable via `gbrain query`,\n  `gbrain search`, or any MCP-bound agent.\n- **Idempotency:** same content → same `inbox\u002FYYYY-MM-DD-\u003Chash8>` slug. The\n  daemon's 24h content-hash dedup catches re-captures.\n- **Trust:** all captures via this skill are local-CLI trust (`remote: false`).\n  Untrusted webhook ingestion goes through `POST \u002Fingest`, not this verb.\n\n## When to invoke\n\n- \"Capture this thought\" \u002F \"save this\" \u002F \"drop this into my brain\" \u002F \"remember this\"\n- The user pastes content and asks to keep it\n- After a meeting summary, a research note, or any synthesis that should land as a brain page\n\n## What it does\n\n`gbrain capture` resolves to a `put_page` call (local) or a remote MCP call\n(thin-client). Either way the page lands in the DB AND on disk in one move\nvia the v0.38 write-through plumbing. The default slug is\n`inbox\u002FYYYY-MM-DD-\u003Chash8>` so captures cluster in a predictable triage\nlocation.\n\n## How to use\n\n```bash\ngbrain capture \"the thought I want to remember\"\ngbrain capture --file .\u002Fnotes\u002Ftoday.md\necho \"from a pipe\" | gbrain capture --stdin\ngbrain capture \"...\" --slug daily\u002F2026-05-21\ngbrain capture \"...\" --type idea --source voice-whisper\ngbrain capture \"...\" --quiet          # script-friendly: prints just the slug\ngbrain capture \"...\" --json           # structured output for agents\n```\n\n## Defaults\n\n- **Slug:** `inbox\u002FYYYY-MM-DD-\u003Chash8>` (stable for same content; the daemon's 24h dedup catches re-captures).\n- **Type:** `note` (override with `--type idea` etc.).\n- **Frontmatter stamps:** `captured_via: capture-cli`, `captured_at: \u003CISO>`.\n- **Title:** first non-empty line of the body, capped at 80 chars (truncation appends `…`).\n\n## Output Format\n\nDefault prints a 5-line receipt:\n\n```\ncaptured:\n  slug:          inbox\u002F2026-05-21-abcdef12\n  status:        created_or_updated\n  content_hash:  f3a7b9c0d1e2f3a4…\n  file:          \u002FUsers\u002Fyou\u002Fbrain\u002Finbox\u002F2026-05-21-abcdef12.md\n  captured_at:   2026-05-21T04:15:00.000Z\n```\n\n`--quiet` prints only the slug (use for `SLUG=$(gbrain capture \"...\" --quiet)`).\n`--json` prints structured output for downstream tools.\n\n## When it fails\n\nFollow the [agent operator protocol](..\u002Fconventions\u002Fagent-operator-protocol.md) for any gbrain error `code`, exit code, `[AGENT]` block or notice block. Specific to this skill:\n\n- Exit 10 (`write_pending`): the thought was accepted and may still commit. Tell the user it is saved and pending, and poll `gbrain write-request \u003Crequest_id>`; never capture it a second time.\n- A secret-scan or slug-fence refusal: nothing was saved. Tell the user what was refused; do not edit the content to sneak past the scanner.\n- `source_binding_required` or `insufficient_scope` over MCP: this connection cannot write the target source; tell the user which source needs a grant from the brain host's operator.\n\n## Anti-Patterns\n\n- **Don't reach for `gbrain put`.** That's the old per-page primitive that\n  doesn't know about default slug generation, content-type heuristics, or\n  the receipt block. `capture` is the human-facing wrapper.\n- **Don't try to bulk-import dozens of files by looping over `gbrain capture`.**\n  That's what `gbrain sync` (or `gbrain import`) is for. Capture is for\n  single thoughts, single notes, single transcripts.\n- **Don't pre-format the content yourself with frontmatter if you don't need to.**\n  Capture wraps plain prose in sensible frontmatter (type + title +\n  captured_via + captured_at). The body becomes `# Title\\n\\n\u003Cyour prose>`.\n  Pass `--file PATH` if you already have a fully-formatted markdown file.\n- **Don't pass secrets as inline content.** Inline args land in shell\n  history. Use `--file` or `--stdin` instead.\n\n## When NOT to use this skill\n\n- Bulk ingestion of many files → `skills\u002Fmedia-ingest\u002FSKILL.md` or `gbrain sync` instead\n- Article\u002Flink with author + publication metadata → `skills\u002Fidea-ingest\u002FSKILL.md` (it knows to build the people page)\n- Meeting transcripts → `skills\u002Fmeeting-ingestion\u002FSKILL.md` (attendee enrichment)\n\nThis skill is for the simple \"I have a thought, save it\" case. Specialized\ningestion paths handle their own slugging + cross-referencing.\n","# capture — the single ingestion entrypoint\n\nWhen the user wants to save a thought, an article snippet, a transcript\nfragment, or any text into their brain, run `gbrain capture`. Don't reach\nfor `gbrain put` or commit-then-sync — `capture` is the front door and it\nhandles both local and thin-client installs the same way.\n\n## Contract\n\n- **Input:** the content to save (inline arg, `--file PATH`, or `--stdin`).\n- **Output:** a page in the brain DB AND a markdown file on disk under\n  `\u003Csync.repo_path>\u002F\u003Cslug>.md`. Receipt printed to stdout.\n- **Side effect:** the page becomes immediately queryable via `gbrain query`,\n  `gbrain search`, or any MCP-bound agent.\n- **Idempotency:** same content → same `inbox\u002FYYYY-MM-DD-\u003Chash8>` slug. The\n  daemon's 24h content-hash dedup catches re-captures.\n- **Trust:** all captures via this skill are local-CLI trust (`remote: false`).\n  Untrusted webhook ingestion goes through `POST \u002Fingest`, not this verb.\n\n## When to invoke\n\n- \"Capture this thought\" \u002F \"save this\" \u002F \"drop this into my brain\" \u002F \"remember this\"\n- The user pastes content and asks to keep it\n- After a meeting summary, a research note, or any synthesis that should land as a brain page\n\n## What it does\n\n`gbrain capture` resolves to a `put_page` call (local) or a remote MCP call\n(thin-client). Either way the page lands in the DB AND on disk in one move\nvia the v0.38 write-through plumbing. The default slug is\n`inbox\u002FYYYY-MM-DD-\u003Chash8>` so captures cluster in a predictable triage\nlocation.\n\n## How to use\n\n```bash\ngbrain capture \"the thought I want to remember\"\ngbrain capture --file .\u002Fnotes\u002Ftoday.md\necho \"from a pipe\" | gbrain capture --stdin\ngbrain capture \"...\" --slug daily\u002F2026-05-21\ngbrain capture \"...\" --type idea --source voice-whisper\ngbrain capture \"...\" --quiet          # script-friendly: prints just the slug\ngbrain capture \"...\" --json           # structured output for agents\n```\n\n## Defaults\n\n- **Slug:** `inbox\u002FYYYY-MM-DD-\u003Chash8>` (stable for same content; the daemon's 24h dedup catches re-captures).\n- **Type:** `note` (override with `--type idea` etc.).\n- **Frontmatter stamps:** `captured_via: capture-cli`, `captured_at: \u003CISO>`.\n- **Title:** first non-empty line of the body, capped at 80 chars (truncation appends `…`).\n\n## Output Format\n\nDefault prints a 5-line receipt:\n\n```\ncaptured:\n  slug:          inbox\u002F2026-05-21-abcdef12\n  status:        created_or_updated\n  content_hash:  f3a7b9c0d1e2f3a4…\n  file:          \u002FUsers\u002Fyou\u002Fbrain\u002Finbox\u002F2026-05-21-abcdef12.md\n  captured_at:   2026-05-21T04:15:00.000Z\n```\n\n`--quiet` prints only the slug (use for `SLUG=$(gbrain capture \"...\" --quiet)`).\n`--json` prints structured output for downstream tools.\n\n## When it fails\n\nFollow the [agent operator protocol](..\u002Fconventions\u002Fagent-operator-protocol.md) for any gbrain error `code`, exit code, `[AGENT]` block or notice block. Specific to this skill:\n\n- Exit 10 (`write_pending`): the thought was accepted and may still commit. Tell the user it is saved and pending, and poll `gbrain write-request \u003Crequest_id>`; never capture it a second time.\n- A secret-scan or slug-fence refusal: nothing was saved. Tell the user what was refused; do not edit the content to sneak past the scanner.\n- `source_binding_required` or `insufficient_scope` over MCP: this connection cannot write the target source; tell the user which source needs a grant from the brain host's operator.\n\n## Anti-Patterns\n\n- **Don't reach for `gbrain put`.** That's the old per-page primitive that\n  doesn't know about default slug generation, content-type heuristics, or\n  the receipt block. `capture` is the human-facing wrapper.\n- **Don't try to bulk-import dozens of files by looping over `gbrain capture`.**\n  That's what `gbrain sync` (or `gbrain import`) is for. Capture is for\n  single thoughts, single notes, single transcripts.\n- **Don't pre-format the content yourself with frontmatter if you don't need to.**\n  Capture wraps plain prose in sensible frontmatter (type + title +\n  captured_via + captured_at). The body becomes `# Title\\n\\n\u003Cyour prose>`.\n  Pass `--file PATH` if you already have a fully-formatted markdown file.\n- **Don't pass secrets as inline content.** Inline args land in shell\n  history. Use `--file` or `--stdin` instead.\n\n## When NOT to use this skill\n\n- Bulk ingestion of many files → `skills\u002Fmedia-ingest\u002FSKILL.md` or `gbrain sync` instead\n- Article\u002Flink with author + publication metadata → `skills\u002Fidea-ingest\u002FSKILL.md` (it knows to build the people page)\n- Meeting transcripts → `skills\u002Fmeeting-ingestion\u002FSKILL.md` (attendee enrichment)\n\nThis skill is for the simple \"I have a thought, save it\" case. Specialized\ningestion paths handle their own slugging + cross-referencing.\n",{"name":5,"triggers":45,"writes_to":52,"description":7,"when_to_use":54,"writes_pages":55},[46,47,48,49,50,51],"capture this","save this thought","remember this","ingest this into my brain","drop this in the inbox","save to brain",[53],"inbox\u002F","Use when the user asks: \"capture this\", \"save this thought\", \"remember this\", \"ingest this into my brain\", \"drop this in the inbox\".",true,"master","074ec301549ded4930f04d2c3b22d709a6c095cc","plugin\u002Fskills\u002Fcapture",4902,"https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain","https:\u002F\u002Fgithub.com\u002Fgarrytan","https:\u002F\u002Fblog.garrytan.com","Writes software, dreams. ","2026-11-14 04:11:30",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":55},[67,70,73],{"tool":68,"command":69},"npx","npx skills add garrytan\u002Fgbrain --skill capture",{"tool":71,"command":72},"bunx","bunx skills add garrytan\u002Fgbrain --skill capture",{"tool":74,"command":75},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill capture","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fplugin\u002Fskills\u002Fcapture\u002FSKILL.md",[],[79,91,97,117,144,156],{"skillNo":80,"name":81,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":40},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[85,86,87,88,35,89,90],"query helper","helper","query","search","find","false",{"skillNo":92,"name":93,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":40},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[93],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":40},"01M6N105E88C5K2H03H0CC79G1","brain-ops","Read, enrich, and write brain pages with source attribution.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbrain-ops\u002FSKILL.md",[],[104,28,105,24,106,35,107,108,109,110,87,111,112,25,113,114,115,116,88],"brain ops","ops","attribution","read","write","up","look","pages","people","enrich","web","path","source",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":128,"publishedAt":40},"01M6N102GRMF22TVCNT6RK5MRD","meeting-prep","Build a briefing before you meet someone, from their recent threads, open loops and what they care about.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Fmeeting-prep\u002FSKILL.md",[123],{"categoryNo":124,"categoryName":125,"taxonomyType":126,"taxonomyTypeDesc":127},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[129,130,131,132,133,88,134,135,136,87,90,137,138,139,140,141,142,143],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","for","Meet",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":40},"01M6N1005QK7REHX5KGMNR5PF0","inbox-zero","Triage the inbox into replies, delegations and archives.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Finbox-zero\u002FSKILL.md",[],[151,152,36,88,153,90,154,23,155],"inbox zero","ZeRO","clear","replies","triage",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":40},"01M6N0ZXQ8RRRW71PNV61T57GP","deal-memo","Draft an investment memo from the deal pages and the founder history already in the brain.","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog-query\u002Fskills\u002Fdeal-memo\u002FSKILL.md",[],[163,164,165,111,28,166,167,108,168,24,88,169],"deal memo","deal","memo","draft","investment","history","founder"]