name: signal-detector version: 1.0.0 description: | Always-on ambient signal capture. Applies on every substantive inbound message to detect original thinking and entity mentions. Spawn as a cheap sub-agent where the harness supports it; otherwise run detection inline. Aim to never block the main response. triggers:
- every inbound message (always-on) tools:
- search
- query
- get_page
- put_page
- add_link
- add_timeline_entry mutating: true writes_pages: true writes_to:
- people/
- companies/
- concepts/
Signal Detector — Ambient Brain Capture
Lightweight capture pass applied to every substantive inbound message. It watches for TWO things with EQUAL priority:
- Original thinking — the user's ideas, observations, theses, frameworks
- Entity mentions — people, companies, media references
Original thinking is AT LEAST as valuable as entity extraction. Ideas are the intellectual capital. Entities are bookkeeping. Both compound over time.
Contract
This skill guarantees:
- Applies on every substantive message where the harness supports ambient routing (skips: purely operational messages, users who turned capture off)
- Spawns as a sub-agent where the harness supports it; otherwise runs the detection inline before composing the reply. Never blocking the response is the intent, not a runtime contract
- Announces itself on first fire and honors the per-user off switch
- Captures ideas with the user's EXACT phrasing (no paraphrasing)
- Detects entity mentions and creates/enriches brain pages
- Logs a one-line summary of what was captured
- Back-links all entity mentions (Iron Law)
- Citations on every fact written
Always-on is a harness-routing convention that a well-behaved agent follows, not a mechanical guarantee; nothing in the gbrain runtime blocks a reply if the skill never loads. On harnesses without per-message ambient routing (Claude Code, Codex), apply this skill as an agent convention or wire it via a prompt-submit hook.
Convention: See
skills/conventions/quality.mdfor Iron Law back-linking.
Every time this skill creates or updates a brain page that mentions a person or company:
- Check if that person/company has a brain page
- If yes → add a back-link FROM their page TO the page you just created/updated
- Format:
- **YYYY-MM-DD** | Referenced in [page title](path) — brief context - An unlinked mention is a broken brain.
First-Fire Consent
Ambient capture persists the user's words into the brain, so the user must know it is on. The FIRST time this skill captures anything for a user, announce it in the visible reply: ambient signal capture is on, it stores ideas and entity mentions as brain pages, and saying "turn off signal capture" disables it. Record that the announcement happened (a preference note in the brain works) so it fires once, not every message. Asking once and recording the answer is equally valid; either way the preference is stored, never re-asked per message.
Per-User Storage Policy
Ambient capture is a DEFAULT, not a mandate. If the user turns it off (or asks for chat-only handling of a specific message), record the preference and stop firing: no pages, no links, no timeline entries. Re-enable on request. Users who turned capture off sit on the skip list alongside purely operational messages.
Phases
Phase 1: Idea/Observation Detection (PRIMARY)
When the user expresses a novel thought, observation, thesis, or framework:
- If it's the user's original thinking (they generated it) → create/update
originals/{slug} - If it's a world concept they're referencing → create/update
concepts/{slug} - If it's a product or business idea → create/update
ideas/{slug}
Capture exact phrasing. The user's language IS the insight. Don't paraphrase.
Cross-linking (MANDATORY): Every original MUST link to related people, companies, meetings, and concepts. An original without cross-links is a dead original.
Phase 2: Entity Detection (SECONDARY)
- Extract entity mentions (people, companies, media titles)
- For each entity:
gbrain search "name"— does a page exist?- If NO page → check notability. If notable, create page with enrichment.
- If page exists but THIN → trigger enrich
- If page exists and RICH → no action
- For new FACTS with specific dates → call
gbrain timeline-add <slug> <date> "<summary>"
Auto-link (v0.10.1): When you write/update an originals or ideas page that
references a person or company, the auto-link post-hook on put_page
automatically creates the link from the new page to that entity. You don't
need to call gbrain link manually. Timeline entries still need explicit calls.
Phase 3: Signal Logging
Always log a one-line summary:
Signals: 0 ideas, 0 entities, 0 facts (skipped: operational)Signals: 0 ideas, 0 entities, 0 facts (skipped: capture off)Signals: 1 idea (captured → originals/x), 2 entities (enriched → people/y, companies/z)
This makes the ambient capture loop debuggable.
Output Format
Runs in the background, but not fully silent at first: until the user has seen the first-fire consent announcement, surface the one-line signal log in the visible reply so early captures are never invisible. After that the skill runs quietly; the output is brain pages created/updated and the signal log line.
Anti-Patterns
- Blocking the main response to wait for signal detection to complete
- Paraphrasing the user's original thinking instead of capturing exact phrasing
- Creating pages for non-notable entities (one-off mentions)
- Skipping back-links after creating/updating pages
- Running on purely operational messages ("ok", "thanks", "do it")
- Capturing after the user turned signal capture off (storage policy is a default, not a mandate)
- Staying fully silent on early captures (surface the signal log until the first-fire consent announcement has happened)
Tools Used
search— check if entity page existsquery— semantic search for related contextget_page— load existing entity pagesput_page— create/update brain pagesadd_link— cross-reference entitiesadd_timeline_entry— record events on entity timelines