/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 entities registry-first (a vector score is a floor for prose, never a gate for named things), then run the read-the-top-hit
Claude Code
$ npx -y skills add garrytan/gbrain --skill brain-ingest-gate --agent claude-code
Codex
$ npx skills add garrytan/gbrain --skill brain-ingest-gate -a codex -y
Cursor
$ npx skills add garrytan/gbrain --skill brain-ingest-gate -a cursor -y
Gemini CLI
$ npx skills add garrytan/gbrain --skill brain-ingest-gate -a gemini-cli -y
GitHub Copilot
$ npx skills add garrytan/gbrain --skill brain-ingest-gate -a github-copilot -y
OpenCode
$ npx skills add garrytan/gbrain --skill brain-ingest-gate -a opencode -y
Windsurf
$ npx skills add garrytan/gbrain --skill brain-ingest-gate -a windsurf -y
SKILL.md
brain-ingest-gate.SKILL.mdname: brain-ingest-gate
version: 1.0.0
description: >
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
entities registry-first (a vector score is a floor for prose, never a gate
for named things), then run the read-the-top-hit dedup decision tree
(clear-dup / plausible-dup / clear). Owns dedup; delegates enrichment to the
shipped ingestion skills. Routing convention, not an operation-boundary
enforcement.
triggers:
- "move this to brain"
- "migrate to brain"
- "copy these files into the brain"
- "is this already in the brain"
- "check for duplicates before writing"
- "dedup before saving"
- "raw copy to brain"
mutating: true
writes_pages: true
writes_to:
- people/
- companies/
- concepts/
- projects/
upstream: brain-ingest-gate@fc834ee
# Brain-first applies in its purest form here: the entire gate IS a
# brain-first lookup performed at write time (entity card, alias-expanded
# search, read the top hit) before anything external or new is written.
brain_first: true
Brain Ingest Gate — Resolve and Dedup Before Anything Enters the Brain
> **Convention:** see [conventions/brain-first.md](../conventions/brain-first.md) — > the lookup chain (`gbrain entity` → `search` → `query` → `get`) is the same > chain this gate runs before every write. > > **Convention:** see [_brain-filing-rules.md](../_brain-filing-rules.md) — > when the gate's verdict is "write", the primary subject picks the directory. > > **Convention:** `skills/conventions/quality.md` owns the cross-cutting page > rules (citations, Iron Law back-linking, notability) — every page the gate > lets through follows them. Gate-specific delta: the gate only decides > write/link/skip; the admitting skill applies the quality rules on write.
The Rule
**No content enters the brain without passing this gate. A raw `cp` or `mv` into the brain repo is a bug.**
One insight, one place. If it already exists, link to it — don't clone it. Before any new page is written (file migration, bulk import, manual `gbrain put`, subagent output), two checks run in order:
1. **Named-Entity Resolution Gate** — is this about a named thing that already has a page under its chosen name? 2. **Dedup Gate** — does the brain already state this insight somewhere?
**Scope honesty:** this gate is a routing convention — the harness resolves it into context when an ingest-shaped intent matches, and a well-behaved agent follows it. Nothing in the gbrain runtime mechanically blocks an unenriched or duplicate write if the skill never loads.
Why gbrain needs this gate
The native pipeline does NOT do semantic dedup for you:
- **`gbrain import` / `gbrain sync` skip only matching frontmatter IDs.**
Identical content under a different slug or ID indexes twice — every duplicate becomes a second search hit competing with the canonical page.
- **`gbrain capture`'s dedup is a 24-hour exact content-hash** — it catches
re-captures of identical bytes, not the same insight reworded.
- **The `remember` verb dedupes facts, not pages.**
Semantic dedup and named-entity resolution are this skill's job, in full.
When This Gate Fires
1. **File migration** — moving files already in the workspace into the brain repo ("move this to brain"). 2. **Bulk imports** — batch moves of any kind into brain directories, BEFORE `gbrain sync` or `gbrain import` indexes them. For batches, also read [conventions/test-before-bulk.md](../conventions/test-before-bulk.md): gate 3-5 items and inspect the decisions before running the rest. 3. **Manual writes** — `gbrain put` or `gbrain capture` of rich content, or direct file writes into the brain repo. 4. **Subagent output** — background agents writing notes or pages into the brain.
What This Gate Owns vs Delegates
This skill is a **gate**, not a pipeline. It owns the pre-write checks below. Everything downstream of a "write" verdict is delegated to shipped skills — do not restate their steps here or inline:
| Concern | Delegate to | |---|---| | Routing new external content (meetings, articles, media) | [ingest](../ingest/SKILL.md) | | Entity detection + notability on inbound content | [signal-detector](../signal-detector/SKILL.md) | | Creating/updating person + company pages, tiered effort, backlinks | [enrich](../enrich/SKILL.md) | | Concept pages, tiering, cluster synthesis | [concept-synthesis](../concept-synthesis/SKILL.md) | | Back-link enforcement (Iron Law) | [conventions/quality.md](../conventions/quality.md) | | Which directory the page lands in | [_brain-filing-rules.md](../_brain-filing-rules.md) |
Named-Entity Resolution Gate (runs FIRST)
**Fires whenever the content is about a NAMED project, place, company, person, or anything someone "wants to build / found / make."**
Vector similarity alone cannot be trusted to catch named-entity dupes: a page stored under its chosen NAME will not embed close to the generic English phrase someone happens to describe it with. The classic failure: a search for a descriptive phrase scores the canonical named page below the prose floor, so a duplicate stub gets written on top of a years-old page. Stored by named meaning; retrieval attempted by literal generic phrase.
The rules
1. **Resolve registry-first, not by the generic phrase.** gbrain's native registry is the entity surface:
gbrain entity "<name>" # zero-LLM card: page, aka list, near-miss suggestions
A card hit means the page exists — STOP, link, don't clone. On a miss (or for concept-shaped nouns), fall through to `gbrain query "<name>" --limit 3`. If the brain also keeps an explicit index of named initiatives (e.g. a page under `concepts/`), read it before concluding anything is new.
2. **Expand through aliases before searching.** Named pages should carry an `aliases:` frontmatter list (generic label + ch
Read more
name: brain-ingest-gate version: 1.0.0 description: > 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 entities registry-first (a vector score is a floor for prose, never a gate for named things), then run the read-the-top-hit dedup decision tree (clear-dup / plausible-dup / clear). Owns dedup; delegates enrichment to the shipped ingestion skills. Routing convention, not an operation-boundary enforcement. triggers: - "move this to brain" - "migrate to brain" - "copy these files into the brain" - "is this already in the brain" - "check for duplicates before writing" - "dedup before saving" - "raw copy to brain" mutating: true writes_pages: true writes_to: - people/ - companies/ - concepts/ - projects/ upstream: brain-ingest-gate@fc834ee # Brain-first applies in its purest form here: the entire gate IS a # brain-first lookup performed at write time (entity card, alias-expanded # search, read the top hit) before anything external or new is written. brain_first: true
Brain Ingest Gate — Resolve and Dedup Before Anything Enters the Brain
> **Convention:** see [conventions/brain-first.md](../conventions/brain-first.md) — > the lookup chain (`gbrain entity` → `search` → `query` → `get`) is the same > chain this gate runs before every write. > > **Convention:** see [_brain-filing-rules.md](../_brain-filing-rules.md) — > when the gate's verdict is "write", the primary subject picks the directory. > > **Convention:** `skills/conventions/quality.md` owns the cross-cutting page > rules (citations, Iron Law back-linking, notability) — every page the gate > lets through follows them. Gate-specific delta: the gate only decides > write/link/skip; the admitting skill applies the quality rules on write.
The Rule
**No content enters the brain without passing this gate. A raw `cp` or `mv` into the brain repo is a bug.**
One insight, one place. If it already exists, link to it — don't clone it. Before any new page is written (file migration, bulk import, manual `gbrain put`, subagent output), two checks run in order:
1. **Named-Entity Resolution Gate** — is this about a named thing that already has a page under its chosen name? 2. **Dedup Gate** — does the brain already state this insight somewhere?
**Scope honesty:** this gate is a routing convention — the harness resolves it into context when an ingest-shaped intent matches, and a well-behaved agent follows it. Nothing in the gbrain runtime mechanically blocks an unenriched or duplicate write if the skill never loads.
Why gbrain needs this gate
The native pipeline does NOT do semantic dedup for you:
- **`gbrain import` / `gbrain sync` skip only matching frontmatter IDs.**
Identical content under a different slug or ID indexes twice — every duplicate becomes a second search hit competing with the canonical page.
- **`gbrain capture`'s dedup is a 24-hour exact content-hash** — it catches
re-captures of identical bytes, not the same insight reworded.
- **The `remember` verb dedupes facts, not pages.**
Semantic dedup and named-entity resolution are this skill's job, in full.
When This Gate Fires
1. **File migration** — moving files already in the workspace into the brain repo ("move this to brain"). 2. **Bulk imports** — batch moves of any kind into brain directories, BEFORE `gbrain sync` or `gbrain import` indexes them. For batches, also read [conventions/test-before-bulk.md](../conventions/test-before-bulk.md): gate 3-5 items and inspect the decisions before running the rest. 3. **Manual writes** — `gbrain put` or `gbrain capture` of rich content, or direct file writes into the brain repo. 4. **Subagent output** — background agents writing notes or pages into the brain.
What This Gate Owns vs Delegates
This skill is a **gate**, not a pipeline. It owns the pre-write checks below. Everything downstream of a "write" verdict is delegated to shipped skills — do not restate their steps here or inline:
| Concern | Delegate to | |---|---| | Routing new external content (meetings, articles, media) | [ingest](../ingest/SKILL.md) | | Entity detection + notability on inbound content | [signal-detector](../signal-detector/SKILL.md) | | Creating/updating person + company pages, tiered effort, backlinks | [enrich](../enrich/SKILL.md) | | Concept pages, tiering, cluster synthesis | [concept-synthesis](../concept-synthesis/SKILL.md) | | Back-link enforcement (Iron Law) | [conventions/quality.md](../conventions/quality.md) | | Which directory the page lands in | [_brain-filing-rules.md](../_brain-filing-rules.md) |
Named-Entity Resolution Gate (runs FIRST)
**Fires whenever the content is about a NAMED project, place, company, person, or anything someone "wants to build / found / make."**
Vector similarity alone cannot be trusted to catch named-entity dupes: a page stored under its chosen NAME will not embed close to the generic English phrase someone happens to describe it with. The classic failure: a search for a descriptive phrase scores the canonical named page below the prose floor, so a duplicate stub gets written on top of a years-old page. Stored by named meaning; retrieval attempted by literal generic phrase.
The rules
1. **Resolve registry-first, not by the generic phrase.** gbrain's native registry is the entity surface:
gbrain entity "<name>" # zero-LLM card: page, aka list, near-miss suggestions
A card hit means the page exists — STOP, link, don't clone. On a miss (or for concept-shaped nouns), fall through to `gbrain query "<name>" --limit 3`. If the brain also keeps an explicit index of named initiatives (e.g. a page under `concepts/`), read it before concluding anything is new.
2. **Expand through aliases before searching.** Named pages should carry an `aliases:` frontmatter list (generic label + ch
Other skills on gbrain.
More skills from other plugins.
agent-cost-report
Believable agent cost report for any period, default the last 7 full days PT, not counting today. Measured tokens from Claude…
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…
mempalace
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
mempalace
Install, configure, and operate MemPalace, including a private local palace, a shared-brain hub, or a client joining an existing…
Questions about brain-ingest-gate.
- Which coding agents can use brain-ingest-gate?
- brain-ingest-gate 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.

