[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6N0TBMB2PPEDJPW979DEG64":3,"skill-same:01M6N0TBMB2PPEDJPW979DEG64":81},{"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":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":80},"01M6N0TBMB2PPEDJPW979DEG64","signal-detector",null,"Opt-in ambient signal capture. After explicit enablement, applies on\nsubstantive inbound messages to detect original thinking and entity mentions.\nUse an authorized sub-agent where supported; otherwise detect inline.\nAim to never block the main response.","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\u002Fskills\u002Fsignal-detector\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"signal","detector","signal detector","link","opt","sub-agent","inline","enablement","true","people","detect","search","get","message","query","main","thinking","never","use","page","messages","2026-11-10 10:12:30",false,"---\nname: signal-detector\nversion: 1.1.0\ndescription: |\n  Opt-in ambient signal capture. After explicit enablement, applies on\n  substantive inbound messages to detect original thinking and entity mentions.\n  Use an authorized sub-agent where supported; otherwise detect inline.\n  Aim to never block the main response.\ntriggers:\n  - every substantive inbound message after automatic-capture opt-in\ntools:\n  - search\n  - query\n  - get_page\n  - put_page\n  - add_link\n  - add_timeline_entry\nmutating: true\nwrites_pages: true\nwrites_to:\n  - people\u002F\n  - companies\u002F\n  - concepts\u002F\n---\n\n# Signal Detector — Ambient Brain Capture\n\nAfter the user enables automatic capture, apply this lightweight pass to\nsubstantive inbound messages within their chosen scope. It watches for:\n\n1. **Original thinking** — the user's ideas, observations, theses, frameworks\n2. **Entity mentions** — people, companies, media references\n\nOriginal thinking is AT LEAST as valuable as entity extraction. Ideas are the\nintellectual capital. Entities are bookkeeping. Both compound over time.\n\n## Contract\n\nThis skill guarantees:\n- Applies only after explicit automatic-capture opt-in (skips: no recorded\n  choice, capture off, chat-only requests, and purely operational messages)\n- Spawns as a sub-agent where the harness supports it; otherwise runs the\n  detection inline before composing the reply. Never blocking the response\n  is the intent, not a runtime contract\n- Checks the user's stored capture choice before writing and honors narrower\n  per-message instructions; a first-fire announcement is not consent\n- Captures ideas with the user's EXACT phrasing (no paraphrasing)\n- Detects entity mentions and creates\u002Fenriches brain pages\n- Logs a one-line summary of what was captured\n- Back-links all entity mentions (Iron Law)\n- Citations on every fact written\n\nAmbient routing is a harness convention that a well-behaved agent\nfollows, not a mechanical guarantee; nothing in the gbrain runtime blocks\na reply if the skill never loads. On harnesses without per-message ambient\nrouting (Claude Code, Codex), apply this skill as an agent convention or\nwire it via a prompt-submit hook. When the operator has enabled\n`memory.auto_writeback` (off by default; `gbrain config set\nmemory.auto_writeback salient`), the MCP server's initialize instructions\nand the managed bootstrap instruction blocks carry the ambient-writeback\ncontract to the agent, and on Claude Code a Stop-hook extraction backstop\ncatches turns the convention missed. That is still a convention on the\nagent side — server-delivered instructions plus a backstop, not a\nmechanical guarantee.\n\n> **Convention:** See `skills\u002Fconventions\u002Fquality.md` for Iron Law back-linking.\n\nEvery time this skill creates or updates a brain page that mentions a person or company:\n1. Check if that person\u002Fcompany has a brain page\n2. If yes → add a back-link FROM their page TO the page you just created\u002Fupdated\n3. Format: `- **YYYY-MM-DD** | Referenced in [page title](path) — brief context`\n4. An unlinked mention is a broken brain.\n\n## Enablement before capture\n\nAutomatic capture is off by default. Before writing, establish an explicit\nuser choice for this brain and capture scope. A stored opt-in or an explicitly\nenabled `memory.auto_writeback` mode can supply that choice; `off`, a missing or\nunreadable choice cannot. Reading this skill, installing GBrain, an available\nAPI key, silence, or an announcement that capture is on does not authorize it.\n\nIf the user asks to enable capture, explain what will be retained and record\nthe accepted choice. Honor an existing choice without asking again. A request\nto remember one fact authorizes that fact, not future ambient capture.\nDelegation and paid enrichment are separate capabilities: capture opt-in alone\ndoes not authorize spawning workers or making paid provider calls.\n\nAfter activation, confirm the chosen scope once and explain how to turn it off.\nDo not capture the current turn while awaiting a required answer.\n\n## Per-User Storage Policy\n\nIf the user turns capture off, record the requested setting and stop capture:\nno content pages, links, or timeline entries. A chat-only instruction suppresses\ncapture for that message without changing the standing setting; do not save\nthe chat-only content as a preference. Re-enable only on request. Explicit\nremembering and relevant recall remain available when capture is off.\n\n## Phases\n\n### Phase 1: Idea\u002FObservation Detection (PRIMARY)\n\nWhen the user expresses a novel thought, observation, thesis, or framework:\n- If it's the user's **original thinking** (they generated it) → create\u002Fupdate `originals\u002F{slug}`\n- If it's a **world concept** they're referencing → create\u002Fupdate `concepts\u002F{slug}`\n- If it's a **product or business idea** → create\u002Fupdate `ideas\u002F{slug}`\n\n**Capture exact phrasing.** The user's language IS the insight. Don't paraphrase.\n\n**Cross-linking (MANDATORY):** Every original MUST link to related people, companies,\nmeetings, and concepts. An original without cross-links is a dead original.\n\n### Phase 2: Entity Detection (SECONDARY)\n\n1. Extract entity mentions (people, companies, media titles)\n2. For each entity:\n   - `gbrain search \"name\"` — does a page exist?\n   - If NO page → check notability. If notable, save the supplied information with provenance.\n   - If page exists but THIN → enrich only within separately authorized capabilities and spending\n   - If page exists and RICH → no action\n3. For new FACTS with specific dates → call `gbrain timeline-add \u003Cslug> \u003Cdate> \"\u003Csummary>\"`\n\n**Auto-link (v0.10.1):** When you write\u002Fupdate an originals or ideas page that\nreferences a person or company, the auto-link post-hook on `put_page`\nautomatically creates the link from the new page to that entity. You don't\nneed to call `gbrain link` manually. Timeline entries still need explicit calls.\n\n### Phase 3: Signal Logging\n\nAlways log a one-line summary:\n- `Signals: 0 ideas, 0 entities, 0 facts (skipped: operational)`\n- `Signals: 0 ideas, 0 entities, 0 facts (skipped: capture off)`\n- `Signals: 1 idea (captured → originals\u002Fx), 2 entities (enriched → people\u002Fy, companies\u002Fz)`\n\nThis makes the ambient capture loop debuggable.\n\n## Output Format\n\nAfter opt-in, report observed writes and their provenance. Keep the signal log\nbrief and verify captured content with an actual readback. Without opt-in,\nperform no capture writes; a skipped-capture diagnostic is not a reason to\ninterrupt every response or ask for enablement repeatedly.\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- No automatic-capture opt-in on record: do nothing. An API key, silence or a first-fire announcement is not consent.\n- A capture write returns `write_pending` (exit 10) or `revision_conflict`: never block the main reply; poll the receipt or re-read and merge on the next turn.\n- Paid enrichment of a thin page needs its own authorization; on `no_pricing` or a cost-cap refusal, skip enrichment and leave the page thin.\n\n## Anti-Patterns\n\n- Blocking the main response to wait for signal detection to complete\n- Paraphrasing the user's original thinking instead of capturing exact phrasing\n- Creating pages for non-notable entities (one-off mentions)\n- Skipping back-links after creating\u002Fupdating pages\n- Running on purely operational messages (\"ok\", \"thanks\", \"do it\")\n- Capturing without explicit opt-in, after capture was disabled, or on a chat-only turn\n- Treating a first-fire announcement, one explicit memory, or an API key as standing authorization\n- Starting paid enrichment or delegation just because capture is enabled\n\n## Tools Used\n\n- `search` — check if entity page exists\n- `query` — semantic search for related context\n- `get_page` — load existing entity pages\n- `put_page` — create\u002Fupdate brain pages\n- `add_link` — cross-reference entities\n- `add_timeline_entry` — record events on entity timelines\n","# Signal Detector — Ambient Brain Capture\n\nAfter the user enables automatic capture, apply this lightweight pass to\nsubstantive inbound messages within their chosen scope. It watches for:\n\n1. **Original thinking** — the user's ideas, observations, theses, frameworks\n2. **Entity mentions** — people, companies, media references\n\nOriginal thinking is AT LEAST as valuable as entity extraction. Ideas are the\nintellectual capital. Entities are bookkeeping. Both compound over time.\n\n## Contract\n\nThis skill guarantees:\n- Applies only after explicit automatic-capture opt-in (skips: no recorded\n  choice, capture off, chat-only requests, and purely operational messages)\n- Spawns as a sub-agent where the harness supports it; otherwise runs the\n  detection inline before composing the reply. Never blocking the response\n  is the intent, not a runtime contract\n- Checks the user's stored capture choice before writing and honors narrower\n  per-message instructions; a first-fire announcement is not consent\n- Captures ideas with the user's EXACT phrasing (no paraphrasing)\n- Detects entity mentions and creates\u002Fenriches brain pages\n- Logs a one-line summary of what was captured\n- Back-links all entity mentions (Iron Law)\n- Citations on every fact written\n\nAmbient routing is a harness convention that a well-behaved agent\nfollows, not a mechanical guarantee; nothing in the gbrain runtime blocks\na reply if the skill never loads. On harnesses without per-message ambient\nrouting (Claude Code, Codex), apply this skill as an agent convention or\nwire it via a prompt-submit hook. When the operator has enabled\n`memory.auto_writeback` (off by default; `gbrain config set\nmemory.auto_writeback salient`), the MCP server's initialize instructions\nand the managed bootstrap instruction blocks carry the ambient-writeback\ncontract to the agent, and on Claude Code a Stop-hook extraction backstop\ncatches turns the convention missed. That is still a convention on the\nagent side — server-delivered instructions plus a backstop, not a\nmechanical guarantee.\n\n> **Convention:** See `skills\u002Fconventions\u002Fquality.md` for Iron Law back-linking.\n\nEvery time this skill creates or updates a brain page that mentions a person or company:\n1. Check if that person\u002Fcompany has a brain page\n2. If yes → add a back-link FROM their page TO the page you just created\u002Fupdated\n3. Format: `- **YYYY-MM-DD** | Referenced in [page title](path) — brief context`\n4. An unlinked mention is a broken brain.\n\n## Enablement before capture\n\nAutomatic capture is off by default. Before writing, establish an explicit\nuser choice for this brain and capture scope. A stored opt-in or an explicitly\nenabled `memory.auto_writeback` mode can supply that choice; `off`, a missing or\nunreadable choice cannot. Reading this skill, installing GBrain, an available\nAPI key, silence, or an announcement that capture is on does not authorize it.\n\nIf the user asks to enable capture, explain what will be retained and record\nthe accepted choice. Honor an existing choice without asking again. A request\nto remember one fact authorizes that fact, not future ambient capture.\nDelegation and paid enrichment are separate capabilities: capture opt-in alone\ndoes not authorize spawning workers or making paid provider calls.\n\nAfter activation, confirm the chosen scope once and explain how to turn it off.\nDo not capture the current turn while awaiting a required answer.\n\n## Per-User Storage Policy\n\nIf the user turns capture off, record the requested setting and stop capture:\nno content pages, links, or timeline entries. A chat-only instruction suppresses\ncapture for that message without changing the standing setting; do not save\nthe chat-only content as a preference. Re-enable only on request. Explicit\nremembering and relevant recall remain available when capture is off.\n\n## Phases\n\n### Phase 1: Idea\u002FObservation Detection (PRIMARY)\n\nWhen the user expresses a novel thought, observation, thesis, or framework:\n- If it's the user's **original thinking** (they generated it) → create\u002Fupdate `originals\u002F{slug}`\n- If it's a **world concept** they're referencing → create\u002Fupdate `concepts\u002F{slug}`\n- If it's a **product or business idea** → create\u002Fupdate `ideas\u002F{slug}`\n\n**Capture exact phrasing.** The user's language IS the insight. Don't paraphrase.\n\n**Cross-linking (MANDATORY):** Every original MUST link to related people, companies,\nmeetings, and concepts. An original without cross-links is a dead original.\n\n### Phase 2: Entity Detection (SECONDARY)\n\n1. Extract entity mentions (people, companies, media titles)\n2. For each entity:\n   - `gbrain search \"name\"` — does a page exist?\n   - If NO page → check notability. If notable, save the supplied information with provenance.\n   - If page exists but THIN → enrich only within separately authorized capabilities and spending\n   - If page exists and RICH → no action\n3. For new FACTS with specific dates → call `gbrain timeline-add \u003Cslug> \u003Cdate> \"\u003Csummary>\"`\n\n**Auto-link (v0.10.1):** When you write\u002Fupdate an originals or ideas page that\nreferences a person or company, the auto-link post-hook on `put_page`\nautomatically creates the link from the new page to that entity. You don't\nneed to call `gbrain link` manually. Timeline entries still need explicit calls.\n\n### Phase 3: Signal Logging\n\nAlways log a one-line summary:\n- `Signals: 0 ideas, 0 entities, 0 facts (skipped: operational)`\n- `Signals: 0 ideas, 0 entities, 0 facts (skipped: capture off)`\n- `Signals: 1 idea (captured → originals\u002Fx), 2 entities (enriched → people\u002Fy, companies\u002Fz)`\n\nThis makes the ambient capture loop debuggable.\n\n## Output Format\n\nAfter opt-in, report observed writes and their provenance. Keep the signal log\nbrief and verify captured content with an actual readback. Without opt-in,\nperform no capture writes; a skipped-capture diagnostic is not a reason to\ninterrupt every response or ask for enablement repeatedly.\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- No automatic-capture opt-in on record: do nothing. An API key, silence or a first-fire announcement is not consent.\n- A capture write returns `write_pending` (exit 10) or `revision_conflict`: never block the main reply; poll the receipt or re-read and merge on the next turn.\n- Paid enrichment of a thin page needs its own authorization; on `no_pricing` or a cost-cap refusal, skip enrichment and leave the page thin.\n\n## Anti-Patterns\n\n- Blocking the main response to wait for signal detection to complete\n- Paraphrasing the user's original thinking instead of capturing exact phrasing\n- Creating pages for non-notable entities (one-off mentions)\n- Skipping back-links after creating\u002Fupdating pages\n- Running on purely operational messages (\"ok\", \"thanks\", \"do it\")\n- Capturing without explicit opt-in, after capture was disabled, or on a chat-only turn\n- Treating a first-fire announcement, one explicit memory, or an API key as standing authorization\n- Starting paid enrichment or delegation just because capture is enabled\n\n## Tools Used\n\n- `search` — check if entity page exists\n- `query` — semantic search for related context\n- `get_page` — load existing entity pages\n- `put_page` — create\u002Fupdate brain pages\n- `add_link` — cross-reference entities\n- `add_timeline_entry` — record events on entity timelines\n",{"name":5,"tools":45,"version":50,"mutating":51,"triggers":52,"writes_to":54,"description":58,"writes_pages":51},[30,33,46,47,48,49],"get_page","put_page","add_link","add_timeline_entry","1.1.0",true,[53],"every substantive inbound message after automatic-capture opt-in",[55,56,57],"people\u002F","companies\u002F","concepts\u002F","Opt-in ambient signal capture. After explicit enablement, applies on\nsubstantive inbound messages to detect original thinking and entity mentions.\nUse an authorized sub-agent where supported; otherwise detect inline.\nAim to never block the main response.\n","master","074ec301549ded4930f04d2c3b22d709a6c095cc","skills\u002Fsignal-detector",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":69,"prompt":79,"zipAvailable":51},[70,73,76],{"tool":71,"command":72},"npx","npx skills add garrytan\u002Fgbrain --skill signal-detector",{"tool":74,"command":75},"bunx","bunx skills add garrytan\u002Fgbrain --skill signal-detector",{"tool":77,"command":78},"pnpm","pnpm dlx skills add garrytan\u002Fgbrain --skill signal-detector","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Fskills\u002Fsignal-detector\u002FSKILL.md",[],[82,92,98,119,146,160],{"skillNo":83,"name":84,"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":85,"categories":86,"keywords":87,"publishedAt":40},"01M6N109FNGH1PK49T734PZXGB","query-helper","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fquery-helper\u002FSKILL.md",[],[88,89,33,30,38,90,91],"query helper","helper","find","false",{"skillNo":93,"name":94,"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":95,"categories":96,"keywords":97,"publishedAt":40},"01M6N108A23GW6NGQEQ0E7GV0A","broken","https:\u002F\u002Fgithub.com\u002Fgarrytan\u002Fgbrain\u002Fblob\u002Fmaster\u002Ftest\u002Ffixtures\u002Fskill-catalog\u002Fskills\u002Fbroken\u002FSKILL.md",[],[94],{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"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",[],[105,106,107,27,108,38,109,110,111,112,33,113,28,114,115,116,117,118,30],"brain ops","brain","ops","attribution","read","write","up","look","pages","with","enrich","web","path","source",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":130,"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",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[131,132,133,134,135,30,136,137,138,33,91,139,140,141,142,143,144,145],"meeting","prep","meeting prep","me","prepare","brief","open","build","loops","about","you","briefing","threads","for","Meet",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"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",[],[153,154,155,30,156,91,157,158,159],"inbox zero","ZeRO","inbox","clear","replies","my","triage",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"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",[],[167,168,169,113,106,170,171,110,172,27,30,173],"deal memo","deal","memo","draft","investment","history","founder"]