/cortex-broadcast
llm-wiki style broadcast ingest — conversational update of related existing pages when a Raw has been distilled. Use when the user says "broadcast", "跑 broadcast", "compound this into the vault", "merge pending-merge", "process broadcast queue", or when cortex-distill invokes
Claude Code
$ npx -y skills add XBlueSky/cortexes --skill cortex-broadcast --agent claude-code
Codex
$ npx skills add XBlueSky/cortexes --skill cortex-broadcast -a codex -y
Cursor
$ npx skills add XBlueSky/cortexes --skill cortex-broadcast -a cursor -y
Gemini CLI
$ npx skills add XBlueSky/cortexes --skill cortex-broadcast -a gemini-cli -y
GitHub Copilot
$ npx skills add XBlueSky/cortexes --skill cortex-broadcast -a github-copilot -y
OpenCode
$ npx skills add XBlueSky/cortexes --skill cortex-broadcast -a opencode -y
Windsurf
$ npx skills add XBlueSky/cortexes --skill cortex-broadcast -a windsurf -y
SKILL.md
cortex-broadcast.SKILL.mdname: cortex-broadcast
description: >
llm-wiki style broadcast ingest — conversational update of related existing
pages when a Raw has been distilled. Use when the user says "broadcast",
"跑 broadcast", "compound this into the vault", "merge pending-merge",
"process broadcast queue", or when cortex-distill invokes broadcast inline
after Step 8 commit (automatic dispatch for every new / pending-merge Raw).
Cortex Broadcast — Compounding Ingest
Propagate insights from a distilled Raw into related existing Notes/Projects pages through conversational per-page edits.
Resolve Vault Path and Config
Read `~/.cortex/config.json`:
jq -r '.vault_path' ~/.cortex/config.json
jq -r '.broadcast.target_top_n // 5' ~/.cortex/config.json
jq -r '.broadcast.target_min_score // 0.40' ~/.cortex/config.json
If the config file doesn't exist, tell the user to run `/cortexes:genesis` first.
Step 1: Resolve Arguments
The command supports three invocations:
| Form | Action | |------|--------| | `/cortexes:broadcast` (no args) | Pop the first (oldest) Raw from the eligible queue | | `/cortexes:broadcast <raw-path>` | Use the specified Raw (relative or absolute path) | | `/cortexes:broadcast --list` | Print the eligible queue and exit |
Step 2: Build Eligible Queue
A Raw is eligible iff its marker meets **all** of:
- Contains `<!-- distilled: YYYY-MM-DD → ... -->` (Phase 1 processed).
- Outcome is `new` or `pending-merge` (the marker content after `→` is
either a path like `Notes/X.md` / `Projects/Y/Z.md`, **or** starts with `pending-merge:`; anything else — `(skip: routine)`, `(no insight)`, or the pre-Phase-1 legacy `(no extractable content)` — is ineligible).
- Does not already contain any of: `| broadcast:`, `| merged:`,
`| no-broadcast:`.
Build the list via:
cortex-vec broadcast-queue --root <vault>/Raw
This applies the three criteria above against each Raw's authoritative marker (header marker, or last non-empty line) and returns the result FIFO by path. Do **NOT** `grep` the marker string — a meta-session's body quotes it many times, which fools a substring scan. To inspect one file, use `cortex-vec raw-state <file>`.
Step 3: Handle `--list`
If the user invoked `--list`, print each queued Raw with:
- Relative path from vault
- Outcome (extract from marker: `new` if target is a path; `pending-merge`
if marker contains `pending-merge:`)
- Original target (for `pending-merge` Raws; `—` for `new`)
Format:
Eligible queue (N Raws):
1. Raw/2026/04/17/141013_session_acme-notify.md
outcome: pending-merge → Projects/acme-notify/oauth flow chart.md (0.48)
2. Raw/2026/04/17/163941_session_acme-sdk.md
outcome: new → Projects/acme-sdk/build-flag-semantics.md
Run /cortexes:broadcast to process the first, or /cortexes:broadcast <path> for a specific one.Exit after listing.
Step 4: Select Raw and Read Content
If no args: pick the first entry from the queue. If `<raw-path>` arg: `cortex-vec raw-state <raw-path>` must print exactly `new` or `pending-merge` (a `(broadcast-resolved)` suffix or any other state is ineligible); abort with a clear error if not.
NEVER Read the full Raw file. Its original text arrives through bounded pages, as in cortex-distill Step 2. Read, in order:
1. **The marker.** A bounded `Read` of the marker's lines only: the last few lines (`offset` near `wc -l <raw>`), or the region before the first `### User` for a header marker. Parse the outcome and (for pending-merge) the original target path and score. Step 9.1 edits this line; the Edit tool needs the file Read first. 2. **The frontmatter.** A bounded `Read` of the Raw's frontmatter only (`limit` at its closing `---`), for the `repo:` Steps 5 and 9 need. 3. **Insight passages.**
- **Inline mode** (dispatched by cortex-distill Step 9): the passages
distill paged in this session are already in context. Work from them. Distill has completed its plan, so a passage you still need comes from a plan opened as below.
- **Standalone mode**, or inline needing more: open a plan and play
find-first.
cortex-vec distill-plan start <raw> # note plan_id
cortex-vec raw-map <raw> --plan-id <id> --find "★ Insight" --find-only
cortex-vec raw-span <raw> --plan-id <id> --span-id <N>A `★ Insight` hit lands on the callout's first span only: read the following span ids (N+1, …) until the callout's closing rule. Other anchors: a symbol, path or error string from the distilled target page (outcome `new`) or the pending-merge target's title. Page the map from the top (`raw-map --cursor`) only when no anchor hits. `ANOTHER_PLAN_ACTIVE` means an in-flight distill owns the ledger: ask the user, never `clear` it. On `BUDGET_EXHAUSTED`, stop reading and work from what you have.
This plan is opened only for its bounded pages and budget ledger: never `seal` or `complete` it (those verify a distill outcome). Clear it when broadcast ends — Step 9.3, `quit` at Step 7, or `abort` in Step 8:
cortex-vec distill-plan clear --plan-id <id>
Step 5: Find Candidate Pages
Pick the **most content-ful insight passage** read in Step 4 — the densest `★ Insight` callout, the clearest analysis paragraph naming specific referents (symbols, file paths, bug mechanisms), or (legacy Raws) the longest Discovery/Decision bullet — trimmed to roughly one paragraph. This is the same heuristic as cortex-distill Step 3.2.
Run, with the passage single-quoted (inside double quotes the backticks Raw text carries run as command substitution; write an apostrophe as `'\''`):
cortex-vec search '<passage text>' --n <target_top_n>
If the Raw's frontmatter has `repo:`, also pass `--repo <name>` when the query topic looks repo-specific. Omit otherwise.
`--repo` narrows the `Projects/` partition only; cross-repo `Notes/` always appear in results regard
Read more
name: cortex-broadcast description: > llm-wiki style broadcast ingest — conversational update of related existing pages when a Raw has been distilled. Use when the user says "broadcast", "跑 broadcast", "compound this into the vault", "merge pending-merge", "process broadcast queue", or when cortex-distill invokes broadcast inline after Step 8 commit (automatic dispatch for every new / pending-merge Raw).
Cortex Broadcast — Compounding Ingest
Propagate insights from a distilled Raw into related existing Notes/Projects pages through conversational per-page edits.
Resolve Vault Path and Config
Read `~/.cortex/config.json`:
jq -r '.vault_path' ~/.cortex/config.json jq -r '.broadcast.target_top_n // 5' ~/.cortex/config.json jq -r '.broadcast.target_min_score // 0.40' ~/.cortex/config.json
If the config file doesn't exist, tell the user to run `/cortexes:genesis` first.
Step 1: Resolve Arguments
The command supports three invocations:
| Form | Action | |------|--------| | `/cortexes:broadcast` (no args) | Pop the first (oldest) Raw from the eligible queue | | `/cortexes:broadcast <raw-path>` | Use the specified Raw (relative or absolute path) | | `/cortexes:broadcast --list` | Print the eligible queue and exit |
Step 2: Build Eligible Queue
A Raw is eligible iff its marker meets **all** of:
- Contains `<!-- distilled: YYYY-MM-DD → ... -->` (Phase 1 processed).
- Outcome is `new` or `pending-merge` (the marker content after `→` is
either a path like `Notes/X.md` / `Projects/Y/Z.md`, **or** starts with `pending-merge:`; anything else — `(skip: routine)`, `(no insight)`, or the pre-Phase-1 legacy `(no extractable content)` — is ineligible).
- Does not already contain any of: `| broadcast:`, `| merged:`,
`| no-broadcast:`.
Build the list via:
cortex-vec broadcast-queue --root <vault>/Raw
This applies the three criteria above against each Raw's authoritative marker (header marker, or last non-empty line) and returns the result FIFO by path. Do **NOT** `grep` the marker string — a meta-session's body quotes it many times, which fools a substring scan. To inspect one file, use `cortex-vec raw-state <file>`.
Step 3: Handle `--list`
If the user invoked `--list`, print each queued Raw with:
- Relative path from vault
- Outcome (extract from marker: `new` if target is a path; `pending-merge`
if marker contains `pending-merge:`)
- Original target (for `pending-merge` Raws; `—` for `new`)
Format:
Eligible queue (N Raws):
1. Raw/2026/04/17/141013_session_acme-notify.md
outcome: pending-merge → Projects/acme-notify/oauth flow chart.md (0.48)
2. Raw/2026/04/17/163941_session_acme-sdk.md
outcome: new → Projects/acme-sdk/build-flag-semantics.md
Run /cortexes:broadcast to process the first, or /cortexes:broadcast <path> for a specific one.Exit after listing.
Step 4: Select Raw and Read Content
If no args: pick the first entry from the queue. If `<raw-path>` arg: `cortex-vec raw-state <raw-path>` must print exactly `new` or `pending-merge` (a `(broadcast-resolved)` suffix or any other state is ineligible); abort with a clear error if not.
NEVER Read the full Raw file. Its original text arrives through bounded pages, as in cortex-distill Step 2. Read, in order:
1. **The marker.** A bounded `Read` of the marker's lines only: the last few lines (`offset` near `wc -l <raw>`), or the region before the first `### User` for a header marker. Parse the outcome and (for pending-merge) the original target path and score. Step 9.1 edits this line; the Edit tool needs the file Read first. 2. **The frontmatter.** A bounded `Read` of the Raw's frontmatter only (`limit` at its closing `---`), for the `repo:` Steps 5 and 9 need. 3. **Insight passages.**
- **Inline mode** (dispatched by cortex-distill Step 9): the passages
distill paged in this session are already in context. Work from them. Distill has completed its plan, so a passage you still need comes from a plan opened as below.
- **Standalone mode**, or inline needing more: open a plan and play
find-first.
cortex-vec distill-plan start <raw> # note plan_id
cortex-vec raw-map <raw> --plan-id <id> --find "★ Insight" --find-only
cortex-vec raw-span <raw> --plan-id <id> --span-id <N>A `★ Insight` hit lands on the callout's first span only: read the following span ids (N+1, …) until the callout's closing rule. Other anchors: a symbol, path or error string from the distilled target page (outcome `new`) or the pending-merge target's title. Page the map from the top (`raw-map --cursor`) only when no anchor hits. `ANOTHER_PLAN_ACTIVE` means an in-flight distill owns the ledger: ask the user, never `clear` it. On `BUDGET_EXHAUSTED`, stop reading and work from what you have.
This plan is opened only for its bounded pages and budget ledger: never `seal` or `complete` it (those verify a distill outcome). Clear it when broadcast ends — Step 9.3, `quit` at Step 7, or `abort` in Step 8:
cortex-vec distill-plan clear --plan-id <id>
Step 5: Find Candidate Pages
Pick the **most content-ful insight passage** read in Step 4 — the densest `★ Insight` callout, the clearest analysis paragraph naming specific referents (symbols, file paths, bug mechanisms), or (legacy Raws) the longest Discovery/Decision bullet — trimmed to roughly one paragraph. This is the same heuristic as cortex-distill Step 3.2.
Run, with the passage single-quoted (inside double quotes the backticks Raw text carries run as command substitution; write an apostrophe as `'\''`):
cortex-vec search '<passage text>' --n <target_top_n>
If the Raw's frontmatter has `repo:`, also pass `--repo <name>` when the query topic looks repo-specific. Omit otherwise.
`--repo` narrows the `Projects/` partition only; cross-repo `Notes/` always appear in results regard
Personal knowledge vault plugin for Claude Code — session recording, memory distillation, and hybrid semantic + BM25 retrieval.
Other skills on cortexes.
More skills from other plugins.
i-have-adhd
Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…
distilly
Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…
Questions about cortex-broadcast.
- Which coding agents can use cortex-broadcast?
- cortex-broadcast 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.

