brain-ingest-gate
Pre-write quality gate for content entering the brain. No raw copies: a bare cp/mv into the brain repo is a bug. Before any new page lands, resolve named…
Reusable pattern for presenting the user with explicit choices and gating execution until they respond. Used by other skills when a decision point requires human input before proceeding. Platform-agnostic — works on Telegram (inline buttons), Discord, CLI, or any agent with a
$ npx -y skills add garrytan/gbrain --skill ask-user --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ask-userContext preview
The summary Claude sees to decide when to auto-load this skill.
Reusable pattern for presenting the user with explicit choices and gating execution until they respond. Used by other skills when a decision point requires human input before proceeding. Platform-agnostic — works on Telegram (inline buttons), Discord, CLI, or any agent with a
name: ask-user version: 1.0.0 description: | Reusable pattern for presenting the user with explicit choices and gating execution until they respond. Used by other skills when a decision point requires human input before proceeding. Platform-agnostic — works on Telegram (inline buttons), Discord, CLI, or any agent with a message tool. triggers: - "present options" - "ask before proceeding" - "choice gate" - "user decision"
no preemptive action, no default-and-proceed.
A **formalized pattern** for presenting users with 2-4 options and **stopping execution** until they respond. This is the canonical way to gate on user input in any GBrain-powered agent.
This is NOT a traditional async/await. In an LLM agent, "gating" means: 1. Present the choices (buttons or numbered options) 2. Explicitly stop the current turn (do not proceed) 3. The user's response triggers the next turn 4. Read the response and branch accordingly
Present choices as a clear question with numbered or labeled options:
🔀 **How should I handle this?** [context about the decision — 1-3 lines max] 1. **Option A** — short description 2. **Option B** — short description 3. **Option C** — short description 4. **Skip** — do nothing for now
If the platform supports interactive buttons, use them:
{
"message": "🔀 **How should I handle this?**\n\n<context>",
"buttons": [
{ "label": "Option A — description", "value": "option_a" },
{ "label": "Option B — description", "value": "option_b" },
{ "label": "Skip", "value": "skip" }
]
}Some OpenClaw agents have a built-in `clarify` tool that presents choices natively:
clarify(
question: "How should I handle this?",
choices: [
"Option A — description",
"Option B — description",
"Option C — description",
"Skip for now"
]
)After presenting choices, **you MUST stop your turn.** Do not:
Instead:
When the user responds:
1. **Read the response** — button click, number, or text 2. **Acknowledge briefly** — "Got it, going with Option A." 3. **Branch and execute** the chosen path 4. If unclear, ask again
Users sometimes type instead of clicking. Handle gracefully:
Signal the decision type:
1-3 lines maximum. The user should understand the decision in under 5 seconds.
Format: `Action verb — brief qualifier`
📋 **Phase 2: Google Contacts** I can import your Google Contacts to seed the people/ directory. This creates a brain page for each real contact (~200 pages). 1. **Import via ClawVisor** — secure credential gateway 2. **Import via direct OAuth** — simpler, agent holds tokens 3. **Import from Google Takeout export** — offline, from file 4. **Skip** — move to the next phase
🔀 **Where should this go?** Meeting notes from call with Jane Smith. She already has a page at people/jane-smith.md and there's a deal page at deals/acme-corp.md. 1. **Merge into Jane's page** — add to her timeline 2. **Add to Acme deal page** — this was primarily a deal discussion 3. **New meeting page** — standalone at meetings/2026-01-15-jane-acme.md 4. **Skip** — don't file this
⚠️ **About to delete 847 stale cache files (2.3 GB)** These haven't been accessed in 90+ days. They can be
Give the agent you already use a memory you control. GBrain stores explicit facts with their sources, supports corrections and withdrawal, and makes the same memory available across your agents.
Repo: garrytan/gbrain
Pre-write quality gate for content entering the brain. No raw copies: a bare cp/mv into the brain repo is a bug. Before any new page lands, resolve named…
When you report a brain page to the user — created, edited, committed, or relayed from a subagent — a working link is part of the deliverable, in the SAME…
Brain knowledge base operations. The core read/write cycle: brain-first lookup, read-enrich-write loop, source attribution, ambient enrichment, back-linking.…
Deduplicate and synthesize raw concept stubs into a tiered intellectual map (T1 Canon to T4 Riff), tracing idea evolution across sources over time. Transforms…
Token-hygiene audit of the always-loaded context stack — CLAUDE.md, AGENTS.md, auto-memory MEMORY.md, and the bootstrap-rendered identity files (SOUL.md,…
When the user corrects a factual error, root-cause it immediately. Don't just note the correction — trace the error to its source, fix the source, and prevent…