Skip to content
Agent Memory
Skill

/resolve-before-asking

Gate on identity questions to the user. Before any "who is X?" (or role / relationship question) reaches the user, exhaust the brain's lookup chain: think → search + page read → mounted sources → timeline/graph → web. If escalation survives the chain, ask WITH a hypothesis,

From plugin
gbrain
33k80 skills

Claude Code

$ npx -y skills add garrytan/gbrain --skill resolve-before-asking --agent claude-code

SKILL.md

resolve-before-asking.SKILL.md
name: resolve-before-asking
version: 1.0.0
description: |
  Gate on identity questions to the user. Before any "who is X?" (or role /
  relationship question) reaches the user, exhaust the brain's lookup chain:
  think → search + page read → mounted sources → timeline/graph → web. If
  escalation survives the chain, ask WITH a hypothesis, never a bare unknown.
  Also owns the no-placeholders-at-ingest rule: pages created during bulk
  ingestion get their relationship/role resolved immediately.
triggers:
  - "resolve before asking"
  - "before asking the user"
  - "unidentified contact"
  - "unknown relationship"
  - "should I ask who"
  - "don't know who this is"
  - "to be filled by content analysis"
  - "placeholder on this page"
mutating: true
writes_pages: true
writes_to:
  - people/
  - companies/
upstream: resolve-before-asking@fc834ee

Resolve Before Asking — Exhaust the Brain Before Bothering the User

> **Convention:** see [conventions/brain-first.md](../conventions/brain-first.md) > for the base lookup chain (search → query → get_page → external APIs). This > skill extends that chain one hop further, to the human boundary: asking the > user is the LAST resort, after the brain AND external escalation, not a > shortcut around them.

> **Convention:** see [_brain-filing-rules.md](../_brain-filing-rules.md) — > pages touched by the ingest-resolution section file by primary subject > (`people/`, `companies/`).

Purpose

**Never ask the user "who is X?" when the answer already exists in the brain.**

The memory answers before the human is bothered — that is the product promise. This skill defines the lookup chain that runs before any entity-identification question is sent to the user, and the escalation format when asking really is justified.

The Bug This Kills

The pattern: the agent encounters an entity with a rich brain page — timeline entries, meeting history, an imported message archive — and instead of reading them, asks the user "who is X?". This is lazy escalation. It spends the user's attention on questions the system can answer itself.

Examples of the bug (anonymized):

  • **alice-example** — her brain page already carried a role line ("Chief of

Staff at acme-example") and a long meeting history → the agent still asked.

  • **charlie-example** — a thick imported email thread whose subject lines all

pointed at one shared project → the agent still asked.

When This Fires

This is a harness-routing convention, not a mechanical guarantee: route here whenever ANY of these are true —

1. A reply draft contains "who is [name]?" or equivalent. 2. A draft asks about someone's role, relationship, or identity. 3. You are about to present an entity as "unknown" or "unidentified". 4. A brain page has `[To be filled by content analysis]` or similar placeholder text. 5. You are composing a list of people and leaving any as "unknown relationship".

The Lookup Chain (run in order; STOP at the first clear answer)

Step 1: `think` — cross-brain synthesis (solves most cases)

gbrain think "Who is {entity}? What is their relationship to the user? What role do they play? Use all available context — meetings, timeline, imported archives, facts."

`think` synthesizes across ALL brain data. If the entity has a page with imported-activity stats, timeline entries, and meeting history, `think` will connect the dots. Over MCP, `entity("{entity}")` first gives a zero-LLM card (aliases, last-touched, top edges); `synthesize` is the heavy cross-page answer when the card isn't enough.

**If this returns a clear answer → STOP. Use the answer. Do not ask the user.**

Step 2: `search` + full page read

gbrain search "{entity}" --limit 5
gbrain get {entity-slug}

What to look for:

  • `relationship` field in frontmatter — filled means resolved.
  • Role signals repeated in timeline entries ("advisor", "colleague at

acme-example", "chief of staff").

  • Facts table — any role/relationship facts.
  • Meeting history — what did they attend? With whom?

**If timeline entries repeat a consistent role → STOP. The role is obvious. Do not ask the user.**

Step 3: Query each mounted source the brain actually has

Don't hardcode channels. Check what the brain holds, then query it:

gbrain sources list
gbrain query "emails with {entity}" --limit 10
gbrain query "meetings with {entity}" --limit 5

Whatever is mounted — an email archive, calendar imports, chat transcripts, meeting notes — a handful of subject lines or meeting titles usually reveals the relationship:

  • Invoice / scheduling / billing subjects → professional services.
  • Recurring 1:1 titles with consistent co-attendees → colleague.
  • Dinner / weekend-plan messages → personal friend.

Step 4: Timeline + graph walk

gbrain timeline {entity-slug} --limit 20
gbrain backlinks {entity-slug}
gbrain graph {entity-slug} --depth 2

Dated events, who references this entity, and what it connects to. A person who back-links from a company page and three meeting pages is not an unknown.

Step 5: Web search (external escalation, per brain-first)

Only after steps 1–4 return nothing useful. Run a generic web search on `"{entity name} {company/domain hints accumulated in steps 1-4}"`. Fold anything found back into the brain page before using it (the brain-ops read-enrich-write cycle), so the next lookup doesn't repeat the work.

Step 6: Escalate to the user (LAST RESORT) — ask WITH a hypothesis

Only after ALL previous steps return nothing conclusive:

  • State what you searched.
  • State what you found — even partial signals.
  • Ask a SPECIFIC, confirmable question: not "who is X?" but "Is {entity} the

{best guess assembled from partial signals}?"

Use [ask-user](../ask-user/SKILL.md) for the choice-gate mechanics (2–4 options, escape hatch, stop the turn).

Confidence Thresholds

  • **High confidence (don't ask):** `think`/`synthesize` gives a clear answer,

OR 3+ timeline e

Read more
@garrytan
Ships withgbrain

Garry's Opinionated OpenClaw/Hermes Agent Brain

Stars on GitHub

Momentum

stars in total
33.0k
Star history of garrytan/gbrain on GitHub, a chart by star-history.com

Other skills on gbrain.

brain-ingest-gate

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…

@garrytan@garrytanInstall Skill
brain-link-discipline

brain-link-discipline

When you report a brain page to the user — created, edited, committed, or relayed from a subagent — a working link is part of the…

@garrytan@garrytanInstall Skill
brain-ops

brain-ops

Brain knowledge base operations. The core read/write cycle: brain-first lookup, read-enrich-write loop, source attribution,…

@garrytan@garrytanInstall Skill
concept-synthesis

concept-synthesis

Deduplicate and synthesize raw concept stubs into a tiered intellectual map (T1 Canon to T4 Riff), tracing idea evolution across…

@garrytan@garrytanInstall Skill
context-audit

context-audit

Token-hygiene audit of the always-loaded context stack — CLAUDE.md, AGENTS.md, auto-memory MEMORY.md, and the bootstrap-rendered…

@garrytan@garrytanInstall Skill
correction-pipeline

correction-pipeline

When the user corrects a factual error, root-cause it immediately. Don't just note the correction — trace the error to its…

@garrytan@garrytanInstall Skill

More skills from other plugins.

agent-cost-report

agent-cost-report

Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude…

@thedotmack@thedotmackInstall Skill
bot-handoff

bot-handoff

Keep a durable record of work passed between Bots in the shared Hindsight memory bank. Use when handing work to another Bot, when…

@vectorize-io@vectorize-ioInstall Skill
mempalace

mempalace

Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…

@mempalace@mempalaceInstall Skill
mempalace

mempalace

Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…

@milla-jovovich@milla-jovovichInstall Skill

Questions about resolve-before-asking.

Which coding agents can use resolve-before-asking?
resolve-before-asking installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.