Help us improve
Share bugs, ideas, or general feedback.
From ideas-funnel
Processes unprocessed items in Raw/ and Raw/Inbox/<domain>/ — breaks each into Source, Concept, and Entity pages; updates index.md, log.md, and .manifest.json; emits wiki/concept-density-threshold signal when a concept crosses the ≥3-unrelated-sources bar. Extends the existing vault ingest skill with multi-domain dispatch and the v2 frontmatter schema (timeline, confidence, decay_class, state, provenance). Trigger phrases: "ingest", "process raw items", "process inbox", "/ideas-funnel:ingest".
npx claudepluginhub cosmicdreams/claude-plugins --plugin ideas-funnelHow this skill is triggered — by the user, by Claude, or both
Slash command
/ideas-funnel:ingestThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Used by:** `ideas-funnel:ingest` agent (spawned by orchestrator on `batch_complete` or `manual-ingest` signals) + human for manual runs.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Designs test strategies and plans with testing pyramid. Covers APIs, frontend, data pipelines, infrastructure; outputs plans including coverage targets, examples, and gaps.
Share bugs, ideas, or general feedback.
Used by: ideas-funnel:ingest agent (spawned by orchestrator on batch_complete or manual-ingest signals) + human for manual runs.
Process unprocessed items in Raw/ and Raw/Inbox/<domain>/ into the wiki.
Read these before starting:
~/Vaults/Neurons/wiki-schema.md — page types, frontmatter conventions, cross-reference rules, v2 extension.~/Vaults/Neurons/CRITICAL_FACTS.md — operator identity.~/Vaults/Neurons/index.md — what Concepts and Entities already exist. Always prefer updating existing pages over creating new ones.~/Vaults/Neurons/_meta/taxonomy.md — controlled tag vocabulary.If invoked via the orchestrator, a specific --domain <slug> is passed. Work only in that domain's inbox.
If invoked manually with no domain, scan all domains plus root Raw/ daily notes.
VAULT=~/Vaults/Neurons
CONFIG=~/.config/ideas-funnel/domains
# Active domains (YAML files with active: true — or active field missing, default true)
ACTIVE_DOMAINS=$(for f in "$CONFIG"/*.yaml; do
grep -q '^active: false' "$f" 2>/dev/null || basename "$f" .yaml
done)
For each domain in scope, list Raw/Inbox/<domain>/*.md. Also list Raw/*.md (daily notes, domain-less).
An item is unprocessed if:
Raw/.manifest.json as an ingested entry, ORstatus: ingested.Skip empty files. Skip README.md placeholders.
Daily notes (named YYYY-MM-DD.md at the root of Raw/) may contain multiple items — process each separately. Raw/Inbox/<domain>/*.md items are single-source per file.
For each distinct article, link, or idea:
For items that are primarily a URL with little commentary:
obsidian:defuddle for articles).Parallelism: when an item contains multiple URLs, fetch them in parallel in one message.
Unreachable URL → note [unreachable] in the Source page and continue.
Path: Sources/<date>-<slug>.md
---
type: source
title: "Title"
summary: "2-sentence what-and-why"
date: YYYY-MM-DD
origin: {URL or "daily-note" or "ideas-funnel"}
domain: [<slug>] # domain this source belongs to; inferred from Raw/Inbox/<domain>/
tags: [from _meta/taxonomy.md]
status: ingested # legacy field, preserved for compatibility
provenance:
origin: extracted
source_ids: [<raw-file-path>]
created_at: YYYY-MM-DD
created_by: ingest@<domain>
timeline:
- event_at: YYYY-MM-DD
learned_at: YYYY-MM-DD
claim: "original capture"
agent: ingest@<domain>
timeline_truncated: false
confidence: 1.0
confirmation_count: 0
decay_class: <from domain config>
last_confirmed: YYYY-MM-DD
last_touched: YYYY-MM-DD
state: fresh
hardened: false
backlink_density: 0
---
# Title
2–5 sentence summary of what this source says and why it matters.
## Key Points
- Bullet points of the essential information.
## Connections
- [[Concepts/ConceptName]] — one line on how this source relates.
- [[Entities/EntityName]] — one line on relevance.
## Original Source
{URL or "Clipped from daily note {date}"}
Domains/<Label>/ (NOT shared Concepts/)v2 rule: the ingest agent NEVER writes to vault-shared Concepts/ or Entities/. If a concept is domain-specific, write to Domains/<Label>/<Name>.md. The Refinery promotes it to Concepts/ when it crosses the ≥3-unrelated-sources threshold.
For each concept identified:
Concepts/<Name>.md — if it exists (from the pre-v2 corpus or Refinery-promoted), link to it from the Source page; do not modify it.Domains/<Label>/<Name>.md — if it exists, update it.Domains/<Label>/<Name>.md.Frontmatter: use the full v2 schema. Set type: concept, domain: [<slug>], provenance.origin: extracted (if lifted directly) or ai-generated (if synthesized across sources).
Write to Domains/<Label>/Entities/<Name>.md for domain-specific entities. Vault-shared Entities/ is Refinery-write-only.
If the item describes something Chris could test, create Next-Experiments/<date>-<slug>.md following the existing format. This file type exists in the vault already.
After writing all pages for the batch, count for each concept:
If ≥3 unrelated sources reference a concept, emit the signal (to the orchestrator) via a single stdout line:
wiki/concept-density-threshold <concept-name> <sources_count>
The orchestrator will spawn the Refinery. Do not write to Concepts/ yourself.
Append entries for every new page:
## Sources- [[Path/Page|Display]] — one-line summaryAppend one line per batch:
## [YYYY-MM-DD] ingest | domain: <slug> | sources: N | concepts: X new, Y updated | entities: Z new, W updated
For each processed file, add an entry:
{
"entries": {
"Raw/Inbox/ai-workflows/2026-04-14-article.md": {
"hash": "sha256:...",
"ingested_at": "2026-04-14T17:00:00Z",
"wiki_pages": ["Sources/2026-04-14-slug.md", "Domains/AI-Workflows/Concept-Name.md"],
"domain": "ai-workflows"
}
}
}
Use shasum -a 256 <file> for the hash. Atomic update: write to a .manifest.json.tmp, then mv.
mkdir -p "$VAULT/Archive/Raw/<domain>"
mv -f "$RAW_FILE" "$VAULT/Archive/Raw/<domain>/"
For daily notes with multiple items, archive only after ALL items are processed.
ingest: domain=<slug> processed N items
Created: X sources, Y concepts (domain-scoped), Z entities (domain-scoped)
Updated: A concepts, B entities
Signals emitted: K concept-density-threshold
Domains/AI-Workflows/MCP.md (concept), Domains/AI-Workflows/Entities/Anthropic.md (entity), and creates ONE Source page — not one monolith._meta/taxonomy.md before inventing new ones.Concepts/ or Entities/ or Bridges/ or Conflicts/. Those are Refinery-only.