learn-from-source
Extract distinct atomic insights from a single source and connect them into the existing wiki graph.
Procedure
0. (Optional) NotebookLM pre-processing
If library_slug is provided AND Phase 2+ is active:
- Read the source for any
source_urlin frontmatter. - If a URL exists and isn't already in the library, invoke notebooklm-add-source to add it. (NotebookLM auto-transcribes & summarizes.)
- Optionally, invoke notebooklm-query on
library_slugwith"What other sources in this library cover similar themes? Return source titles."— use the response to seed outbound<a class="wikilink wikilink-broken" href="#">wikilinks</a>in step 4. - Tag the resulting wiki nodes
#source/notebooklmAND#library/{library_slug}in addition to the regular tags.
If library_slug is omitted, or NotebookLM is in Phase 1 (architecture-only), skip step 0 entirely — the synthesis still works.
1. Read the source
- Open
source_path. If it's plain notes, parse as-is. If a transcript, extract claims & frameworks (skip filler). - Identify metadata if present in frontmatter (
source_url,author,date_consumed).
2. Extract atomic insights
One insight = one wiki node. Don't conflate.
For each distinct insight:
- 1 sentence claim (what's the insight?)
- 1–3 sentences of context (why does it matter? when does it apply?)
- Originating source citation (back-link to the raw file).
Aim for 1–8 insights per source. Fewer is fine; more usually means you're not splitting properly.
3. Resolve to existing nodes (avoid duplication)
For each candidate insight:
- Search
Wiki/Learnings/,Wiki/Concepts/, andWiki/Notes/for an existing node covering this idea. - If found: update the existing node — append the new source to
sources:frontmatter and add a "Consolidated from" line if helpful. Don't create a duplicate. - If not found: create a new node at
Wiki/Learnings/{slug}.mdusing the wiki-node template:node_kind: concepttags: [learning, ...]— pick tags from _System/TagTaxonomy.mdsources: ["<a class="wikilink wikilink-broken" href="#">Raw/Learnings/{type}/{file}</a>"]links: [...]— outbound wikilinks to relevant brands, projects, concepts, people (see step 4)confidence: medium(default for single-source insights — bump tohighafter 2+ corroborating sources)
4. Connect to the graph
For each new or updated learning, identify outbound wikilinks:
- Brand-relevant? Link to
<a class="wikilink wikilink-broken" href="#">Brands/{slug}/BrandContext</a>or<a class="wikilink wikilink-broken" href="#">Brands/{slug}/voice-profile</a>etc. Look atContext/Brands.mdfor the active roster. - Project-relevant? Link to
<a class="wikilink wikilink-broken" href="#">Departments/Projects/{slug}/_Project</a>. - Decision-pending? If the insight is decision-relevant, also surface to Departments/Decisions/ as a follow-up note.
- Existing concept hub? Link to
<a class="wikilink wikilink-broken" href="#">Wiki/Concepts/{topic}</a>. - Person-relevant? Link to
<a class="wikilink wikilink-broken" href="#">Wiki/People/{slug}</a>.
If 3+ learnings have piled up under the same #topic/X tag and no hub node exists yet, create Wiki/Concepts/{topic}.md as an index of those learnings (the "monthly cluster" practice from Departments/Personal/Development.md).
5. Tag using the canonical taxonomy
- Pull tags from _System/TagTaxonomy.md. Don't invent tags ad-hoc — that fragments the graph.
- If a needed tag doesn't exist, propose it (write to a
## Proposedsection in TagTaxonomy.md and ask Adam to confirm at next checkpoint).
6. Append Log entry
Via log-operation:
- agent: invoking agent
- skill:
learn-from-source - input:
{source_path}({source_type}) - output: list of
Wiki/Learnings/{slug}.mdpaths created or updated - artifacts: each new/updated wiki node as a
<a class="wikilink wikilink-broken" href="#">wikilink</a> - notes: count of insights extracted; flag any orphans (a learning without outbound links is suspect — fix in step 4 or note why).
Atomicity rule
One claim per node. If a podcast covers delegation, hiring, and meeting structure → that's three nodes, three slugs, three sets of outbound links. The graph value comes from atomicity.
Failure modes
- Source is too thin (e.g., a 1-sentence highlight) — don't force 3 insights; create one or none. Quality > quantity.
- All insights duplicate existing nodes — that's a good outcome. Just update sources / boost confidence on the existing nodes; don't create new ones.
- Tag drift — if you find yourself writing
#leadershipand there's already#topic/leadership, normalize to the existing tag and propose the alternate as an alias in TagTaxonomy.md. - Orphan after step 4 — a learning that links to nothing is a smell. Either find at least one connection, or note why it's standalone (e.g., a foundational concept that predates other nodes).
Hard rules
- Never copy long quotations into wiki nodes — paraphrase and cite. Wiki nodes are yours; raw text stays in
Raw/Learnings/. - Never delete the raw source file after synthesizing — the wiki node back-links to it.
- Never create a wiki node without at least one tag or one outbound wikilink (orphan prevention).