diff --git a/docs/plans/2026-06-03-001-feat-idea-lineage-skill-plan.md b/docs/plans/2026-06-03-001-feat-idea-lineage-skill-plan.md new file mode 100644 index 000000000..a144b90e1 --- /dev/null +++ b/docs/plans/2026-06-03-001-feat-idea-lineage-skill-plan.md @@ -0,0 +1,211 @@ +--- +title: "feat: Add idea-lineage thinking skill" +type: feat +status: completed +date: 2026-06-03 +--- + +# feat: Add idea-lineage thinking skill + +## Summary + +Add an `idea-lineage` thinking skill that traces how one idea has evolved through a user's brain: first mention, best articulation, related concepts, reversals, contradictions, abandoned branches, and the current live version. The contribution should start as a read-only skill with routing and conformance coverage, not as a new CLI or MCP operation. + +## Problem Frame + +GBrain already has two adjacent capabilities that are easy to conflate with this feature: + +- `skills/concept-synthesis/SKILL.md` is a mutating, batch-oriented concept map builder. It deduplicates many concept stubs, tiers them, writes concept pages, and creates an intellectual universe. +- `find_trajectory` and `gbrain eval trajectory` are structured entity trajectories over typed facts and events. They work best for questions like metric history, founder consistency, role/status changes, and event timelines. + +`idea-lineage` should occupy the narrow space between them: a query-time, single-idea, citation-backed synthesis of conceptual evolution. It should help a user ask "how has my thinking about this idea changed?" without running a global concept-synthesis job or forcing the idea into an entity/metric trajectory model. + +## Requirements + +**Behavior** + +- R1. The skill accepts a single idea, topic, concept phrase, or nearby concept page and produces a focused lineage for that idea only. +- R2. The output identifies first mention, best articulation, related concepts, reversals, contradictions, abandoned branches, and current live version when evidence supports each category. +- R3. Every lineage claim is grounded in existing brain evidence: page links, dates, verbatim snippets, timeline entries, takes, contradiction findings, or trajectory points when applicable. +- R4. The skill distinguishes evidence strength. Missing or weak evidence should be reported as a gap, not filled with plausible narrative. +- R5. The default workflow is read-only and does not write or mutate brain pages. + +**Routing** + +- R6. Routing should prefer `idea-lineage` for single-idea evolution requests such as "how has my thinking about X changed?". +- R7. Routing should keep broad corpus/map requests on `concept-synthesis`. +- R8. Routing should keep structured entity metric/status questions on `find_trajectory`, `gbrain eval trajectory`, or `gbrain think` trajectory injection. + +**Privacy and portability** + +- R9. The skill and fixtures must use public, generic examples only. +- R10. The plan and implementation must avoid private fork names, real people, real companies, funds, or host-specific filesystem paths in public artifacts. + +## Scope Boundaries + +### In Scope + +- A new bundled skill under `skills/idea-lineage/`. +- Resolver, manifest, and plugin-bundle wiring. +- Routing fixtures that prove the new intent is reachable and does not swallow `concept-synthesis` or trajectory-shaped prompts. +- Documentation inside the skill body that explains when to use `search`, `query`, `get_page`, `list_pages`, `takes_search`, `find_contradictions`, and optionally `find_trajectory`. +- Focused conformance, resolver, and routing verification. + +### Deferred to Follow-Up Work + +- A first-class `idea_lineage` MCP operation. +- A `gbrain idea lineage ` CLI. +- Persisting lineage reports back into the brain. +- New database tables, schema-pack fields, or concept lineage graph primitives. +- Automated contradiction-probe reruns. The skill should read cached contradiction findings if available, not trigger expensive probes. + +### Outside This Contribution + +- Replacing `concept-synthesis`. +- Changing the facts/takes epistemology model. +- Changing `find_trajectory`'s entity-slug contract. +- Implementing the broader taxonomy redesign tracked by issue #1668. + +## Key Technical Decisions + +- **Start as a markdown skill:** GBrain's architecture treats skills as fat markdown workflows. This feature can be useful by orchestrating existing read operations, so a CLI/MCP surface would add contract weight before the behavior is proven. +- **Make the skill non-mutating by default:** The user intent is investigative. Writing lineage pages should remain a later explicit mode after routing and output quality are established. +- **Use evidence buckets rather than a single narrative pass:** The output should force the agent to separately evaluate first mention, articulation, current version, reversals, contradictions, and abandoned branches. That reduces the risk of smoothing over conflict. +- **Keep `find_trajectory` as an optional side-channel:** It is valuable when an idea query resolves to an entity attribute or status history, but `idea-lineage` should not depend on typed facts being present. +- **Avoid the existing "trace idea evolution" trigger phrase:** That phrase already routes to `concept-synthesis`; adding it to the new skill would create avoidable resolver ambiguity. + +## High-Level Technical Design + +```mermaid +flowchart TB + A["User asks about one idea"] --> B{"Intent shape"} + B -->|"whole corpus / map"| C["concept-synthesis"] + B -->|"entity metric / status over time"| D["trajectory surfaces"] + B -->|"single conceptual idea"| E["idea-lineage skill"] + E --> F["Resolve idea candidates"] + F --> G["Gather evidence via search/query/pages/takes"] + G --> H["Classify lineage moments"] + H --> I["Synthesize cited answer with confidence gaps"] +``` + +## Implementation Units + +### U1. Add the `idea-lineage` Skill + +- **Goal:** Create the read-only skill contract and workflow. +- **Requirements:** R1, R2, R3, R4, R5, R9, R10 +- **Dependencies:** None +- **Files:** + - `skills/idea-lineage/SKILL.md` + - `test/skills-conformance.test.ts` +- **Approach:** Create a new skill with required frontmatter and conformance sections. The skill should define its workflow in phases: clarify the target idea, resolve likely concept/page anchors, collect evidence, classify lineage moments, produce a cited synthesis, and state gaps. Frontmatter should set `mutating: false` and list read operations only. +- **Patterns to follow:** + - `skills/strategic-reading/SKILL.md` for a read-only thinking-skill shape with related-skill boundaries. + - `skills/query/SKILL.md` for search/query/get-page guidance. + - `skills/concept-synthesis/SKILL.md` for contrast, not for behavior reuse. +- **Test scenarios:** + - A new `SKILL.md` with frontmatter, `## Contract`, `## Output Format`, and `## Anti-Patterns` passes conformance. + - The frontmatter declares a unique `name: idea-lineage`. + - The skill body references only portable, synthetic examples. +- **Verification:** `bun test test/skills-conformance.test.ts` passes. + +### U2. Wire Resolver, Manifest, and Bundle Metadata + +- **Goal:** Make the skill discoverable by bundled skill users and resolvable by agents. +- **Requirements:** R6, R7, R8, R9, R10 +- **Dependencies:** U1 +- **Files:** + - `skills/RESOLVER.md` + - `skills/manifest.json` + - `openclaw.plugin.json` + - `test/resolver.test.ts` + - `test/skillpack-reference.test.ts` +- **Approach:** Add `idea-lineage` to the skill manifest and plugin skill list. Add a resolver row in the thinking or uncategorized section with narrow user phrases such as "how has my thinking about", "trace the lineage of this idea", "what is my current version of", and "show reversals in my thinking about". Keep broad concept-map phrases routed to `concept-synthesis`. +- **Patterns to follow:** + - `skills/RESOLVER.md` rows for `strategic-reading`, `concept-synthesis`, and `perplexity-research`. + - Existing sorted `openclaw.plugin.json` skill list. +- **Test scenarios:** + - Every quoted resolver trigger fuzzy-matches a frontmatter trigger in `skills/idea-lineage/SKILL.md`. + - `idea-lineage` is listed in `skills/manifest.json`. + - `idea-lineage` is listed in `openclaw.plugin.json` if the contribution ships as part of the bundled OpenClaw skillpack. + - Existing skills remain reachable. +- **Verification:** `bun test test/resolver.test.ts` passes. + +### U3. Add Routing Eval Fixtures + +- **Goal:** Prove the new routing boundary against adjacent skills. +- **Requirements:** R6, R7, R8 +- **Dependencies:** U1, U2 +- **Files:** + - `skills/idea-lineage/routing-eval.jsonl` + - `skills/concept-synthesis/routing-eval.jsonl` + - `src/core/routing-eval.ts` +- **Approach:** Add positive fixtures for single-idea lineage prompts and negative or ambiguity-declared fixtures around adjacent surfaces. The fixture text should paraphrase triggers rather than copy them exactly, because the routing fixture linter rejects tautological trigger copies. +- **Test scenarios:** + - "Show how my thinking about founder-led sales changed over time" routes to `idea-lineage`. + - "What is my current version of the compounding trust idea?" routes to `idea-lineage`. + - "Synthesize my concepts into a tiered intellectual map" stays on `concept-synthesis`. + - "How has acme-example MRR trended since January?" does not route to `idea-lineage`. + - Negative fixtures avoid false positives for generic "publish this report" or "what is this concept?" prompts. +- **Verification:** `gbrain routing-eval --json` reports no new misses, false positives, or unapproved ambiguity for the added fixtures. + +### U4. Add Output Contract and Citation Discipline + +- **Goal:** Make the skill's user-facing answer shape predictable and reviewable. +- **Requirements:** R2, R3, R4, R5 +- **Dependencies:** U1 +- **Files:** + - `skills/idea-lineage/SKILL.md` + - `skills/conventions/quality.md` + - `skills/brain-ops/SKILL.md` +- **Approach:** Define the output format directly in the skill body. The recommended shape should include a compact current answer, evidence timeline, lineage buckets, contradictions/reversals, abandoned branches, related concepts, and confidence gaps. Require page/date/snippet evidence for each non-gap claim. Preserve quote fidelity and avoid hallucinated dates. +- **Patterns to follow:** + - `skills/conventions/quality.md` for citation and quote-fidelity expectations. + - `skills/brain-ops/SKILL.md` for source attribution and source-id formatting. + - `docs/takes-vs-facts.md` for not conflating holder-attributed takes with the brain owner's facts. +- **Test scenarios:** + - Test expectation: none beyond conformance for the markdown-only contract; routing and conformance tests cover the machine-checkable surface. +- **Verification:** Manual review confirms the skill body tells the agent how to cite, label gaps, and separate facts/takes/trajectory evidence. + +### U5. Refresh Generated Documentation If Required + +- **Goal:** Keep generated LLM-facing docs consistent if the test suite requires it. +- **Requirements:** R9, R10 +- **Dependencies:** U1, U2, U3 +- **Files:** + - `llms.txt` + - `llms-full.txt` + - `test/build-llms.test.ts` +- **Approach:** Run the build-llms test after adding the skill. If it fails because committed docs are stale, regenerate with the existing generator and include the generated diff. If it passes without regeneration, leave these files unchanged. +- **Patterns to follow:** + - `package.json` script `build:llms`. + - `test/build-llms.test.ts` failure message. +- **Test scenarios:** + - Committed `llms.txt` and `llms-full.txt` match generator output. + - `llms-full.txt` remains within the size budget. +- **Verification:** `bun test test/build-llms.test.ts` passes. + +## Acceptance Examples + +- AE1. When the user asks "How has my thinking about founder-led sales changed over time?", the agent routes to `idea-lineage`, searches for evidence, and returns a cited lineage rather than running `concept-synthesis`. +- AE2. When the user asks "Run concept synthesis across my notes", the agent routes to `concept-synthesis`, not `idea-lineage`. +- AE3. When the user asks "How did acme-example's MRR trend?", the agent uses trajectory surfaces rather than `idea-lineage`. +- AE4. When the evidence does not support an "abandoned branch" claim, the output includes a gap instead of inventing one. + +## Risks & Dependencies + +- **Resolver overlap risk:** `concept-synthesis` already uses "trace idea evolution". Mitigate by avoiding that exact trigger and adding routing fixtures around the boundary. +- **Narrative overreach risk:** The feature invites story-making. Mitigate by requiring dates, snippets, links, and explicit gaps for unsupported categories. +- **Privacy risk:** Skill examples can easily drift into real-brain language. Use synthetic examples only and rely on existing privacy checks. +- **Generated-doc churn risk:** Adding a bundled skill may require `llms.txt` and `llms-full.txt` regeneration. Treat generated-doc changes as mechanical and separate from the skill design during review. +- **Future taxonomy dependency:** Issue #1668 may eventually change concept filing and identity. This plan avoids new schema assumptions so the contribution remains compatible with the current repo. + +## Sources & Research + +- `skills/concept-synthesis/SKILL.md` defines the existing batch, mutating, concept-map surface. +- `skills/RESOLVER.md` and `skills/manifest.json` define current skill reachability and bundle metadata. +- `docs/architecture/lens-packs.md` shows that atoms and concepts are already part of the lens-pack/dream-cycle substrate. +- `docs/proposals/temporal-contradiction-probe.md` and `docs/takes-vs-facts.md` define the temporal and epistemic boundaries this skill must not blur. +- `src/core/operations.ts`, `src/core/trajectory.ts`, `src/commands/eval-trajectory.ts`, and `test/operations-find-trajectory.test.ts` define the current `find_trajectory` contract. +- Pull requests #1131, #1296, and #1364 provide the recent trajectory, think-routing, and lens-pack context. +- Issue #1668 is related future taxonomy work, but not a prerequisite for this contribution. diff --git a/llms-full.txt b/llms-full.txt index 495e33721..b19d484d5 100644 --- a/llms-full.txt +++ b/llms-full.txt @@ -1373,6 +1373,7 @@ These apply to ALL brain-writing skills: | "enrich this article", "enrich brain pages", "batch enrich", "make brain pages useful" | `skills/article-enrichment/SKILL.md` | | "strategic reading", "read this through the lens of", "apply this to my problem", "what can I learn from this about", "extract a playbook from" | `skills/strategic-reading/SKILL.md` | | "concept synthesis", "synthesize my concepts", "find patterns across my notes", "build my intellectual map", "trace idea evolution" | `skills/concept-synthesis/SKILL.md` | +| "idea lineage", "trace the lineage of this idea", "how my thinking about", "how has my thinking about", "what is my current version of", "show reversals in my thinking about", "where did this idea come from" | `skills/idea-lineage/SKILL.md` | | "perplexity research", "what's new about", "current state of", "web research", "what changed about" | `skills/perplexity-research/SKILL.md` | | "crawl my archive", "find gold in my archive", "archive crawler", "scan my dropbox for", "mine my old files for" | `skills/archive-crawler/SKILL.md` | | "verify this academic claim", "check this study", "academic verify", "validate citation", "is this study real" | `skills/academic-verify/SKILL.md` | diff --git a/openclaw.plugin.json b/openclaw.plugin.json index c8545f043..8e7dc8868 100644 --- a/openclaw.plugin.json +++ b/openclaw.plugin.json @@ -47,6 +47,7 @@ "skills/enrich", "skills/functional-area-resolver", "skills/idea-ingest", + "skills/idea-lineage", "skills/ingest", "skills/maintain", "skills/media-ingest", diff --git a/skills/RESOLVER.md b/skills/RESOLVER.md index fc2965732..d77ef776a 100644 --- a/skills/RESOLVER.md +++ b/skills/RESOLVER.md @@ -125,6 +125,7 @@ These apply to ALL brain-writing skills: | "enrich this article", "enrich brain pages", "batch enrich", "make brain pages useful" | `skills/article-enrichment/SKILL.md` | | "strategic reading", "read this through the lens of", "apply this to my problem", "what can I learn from this about", "extract a playbook from" | `skills/strategic-reading/SKILL.md` | | "concept synthesis", "synthesize my concepts", "find patterns across my notes", "build my intellectual map", "trace idea evolution" | `skills/concept-synthesis/SKILL.md` | +| "idea lineage", "trace the lineage of this idea", "how my thinking about", "how has my thinking about", "what is my current version of", "show reversals in my thinking about", "where did this idea come from" | `skills/idea-lineage/SKILL.md` | | "perplexity research", "what's new about", "current state of", "web research", "what changed about" | `skills/perplexity-research/SKILL.md` | | "crawl my archive", "find gold in my archive", "archive crawler", "scan my dropbox for", "mine my old files for" | `skills/archive-crawler/SKILL.md` | | "verify this academic claim", "check this study", "academic verify", "validate citation", "is this study real" | `skills/academic-verify/SKILL.md` | @@ -132,4 +133,3 @@ These apply to ALL brain-writing skills: | "voice note", "ingest this voice memo", "transcribe and file", "voice note ingest", "save this audio note" | `skills/voice-note-ingest/SKILL.md` | | "add a page type", "add a type to my schema", "schema author", "schema mutate", "schema pack add", "my brain has untyped pages", "propose new types from my corpus", "backfill page types", "evolve my schema", "researcher type", "make X an expert type" (dispatcher for: gbrain schema active/list/show/validate/graph/lint/stats/explain/use/downgrade/reload/init/fork/edit/diff/add-type/remove-type/update-type/add-alias/remove-alias/add-prefix/remove-prefix/add-link-type/remove-link-type/set-extractable/set-expert-routing/detect/suggest/review-candidates/review-orphans/sync) | `skills/schema-author/SKILL.md` | | "unify my types", "migrate to gbrain-base-v2", "94 types to 14", "apply canonical taxonomy", "clean up my page types", "pack upgrade", "shrink type proliferation", "consolidate page types", "retype pages to canonical" (dispatcher for: gbrain onboard --check, gbrain onboard --check --explain, gbrain jobs submit unify-types, gbrain pages restore) | `skills/schema-unify/SKILL.md` | - diff --git a/skills/concept-synthesis/routing-eval.jsonl b/skills/concept-synthesis/routing-eval.jsonl index 133782c9f..0227b241d 100644 --- a/skills/concept-synthesis/routing-eval.jsonl +++ b/skills/concept-synthesis/routing-eval.jsonl @@ -5,3 +5,4 @@ {"intent":"Find patterns across my notes and group them into clusters","expected_skill":"concept-synthesis"} {"intent":"Build my intellectual map — what's canon vs riff","expected_skill":"concept-synthesis"} {"intent":"Trace idea evolution across years of my reflections","expected_skill":"concept-synthesis"} +{"intent":"Trace idea evolution across years of my reflections and cluster the themes","expected_skill":"concept-synthesis"} diff --git a/skills/idea-lineage/SKILL.md b/skills/idea-lineage/SKILL.md new file mode 100644 index 000000000..a8f2a9d2d --- /dev/null +++ b/skills/idea-lineage/SKILL.md @@ -0,0 +1,222 @@ +--- +name: idea-lineage +version: 0.1.0 +description: | + Trace one idea's evolution through the brain: first mention, best + articulation, related concepts, reversals, contradictions, abandoned + branches, and the current live version. Use for single-idea conceptual + lineage, not broad concept-map synthesis or structured entity metrics. +triggers: + - "idea lineage" + - "trace the lineage of this idea" + - "how my thinking about" + - "how has my thinking about" + - "current version of this idea" + - "what is my current version of" + - "show reversals in my thinking about" + - "where did this idea come from" +tools: + - search + - query + - get_page + - list_pages + - takes_search + - find_contradictions + - find_trajectory +mutating: false +--- + +# idea-lineage - Single-Idea Evolution Through the Brain + +> **Convention:** see [conventions/quality.md](../conventions/quality.md) for +> citation rules, quote fidelity, and source-backed claims. +> +> **Boundary:** see [docs/takes-vs-facts.md](../../docs/takes-vs-facts.md) for +> the distinction between holder-attributed takes and the brain owner's hot +> facts. Do not collapse those layers when summarizing lineage. + +## What this solves + +Users often want to understand how one idea changed across time: when it first +appeared, when it became sharp, what it displaced, what it contradicted, and +what version is alive now. That is different from building a whole concept map +and different from charting an entity's metric trajectory. + +Use this skill when the user asks about one idea, topic, phrase, or concept +page and wants its evolution through the brain. + +Canonical examples: + +- "Run idea lineage on founder-led sales." +- "How has my thinking about compounding trust changed?" +- "What is my current version of this idea?" +- "Where did this idea come from, and what did I abandon along the way?" + +## What this is not + +- Not `concept-synthesis`: that skill deduplicates many concept stubs, tiers + them, writes concept pages, and builds a broad intellectual map. +- Not `find_trajectory`: that operation charts typed facts or event rows for + an entity, such as MRR, role, location, or status over time. +- Not a contradiction-probe runner: this skill may read cached contradiction + findings when available, but it does not launch expensive probes. +- Not a writing mode by default: do not write a lineage page unless the user + explicitly asks for a saved artifact after seeing the read-only answer. + +## Contract + +This skill guarantees: + +- A single-idea scope is preserved. Broad corpus or "map my concepts" prompts + route to `skills/concept-synthesis/SKILL.md` instead. +- Every lineage claim cites existing brain evidence: page slug, source id when + present, date, and short quote or snippet. +- Missing evidence is labeled as a gap, not patched with plausible narrative. +- Contradictions, reversals, and abandoned branches are separated from normal + temporal evolution. +- The default mode is read-only and does not mutate brain pages. + +## Phases + +### Phase 1: Resolve the idea target + +1. Restate the idea in one sentence. +2. Search for exact phrase variants with `search`. +3. Run one semantic `query` for the natural-language version. +4. Check `list_pages` for concept pages when the idea has an obvious concept + slug or title. +5. If results point to an entity/metric/status trajectory rather than a concept, + hand off to `find_trajectory` or the normal query/think trajectory path. + +If multiple distinct ideas share the same phrase, ask the user to choose the +intended one before synthesizing. + +### Phase 2: Gather evidence + +Collect enough evidence to support or reject each output bucket: + +- Search chunks with dates and source slugs. +- Full pages via `get_page` for the top relevant concept, note, transcript, + meeting, article, or project pages. +- Related concept pages through backlinks, `related` frontmatter, or repeated + co-occurrence in search results. +- Takes via `takes_search` when the idea appears as a belief, bet, hunch, or + attributed claim. +- Cached contradiction findings via `find_contradictions` when the user asks + about inconsistency or the search results show obvious conflict. +- `find_trajectory` only when the evidence is entity/attribute-shaped, such as + a role/status/metric evolution that is relevant to the idea's story. + +Prefer fewer high-quality sources over a long unsorted pile. Read full pages +when snippets imply a lineage milestone. + +### Phase 3: Classify lineage moments + +Classify evidence into these buckets: + +1. **First mention** - earliest dated evidence where the idea appears. +2. **Best articulation** - the clearest or most complete expression, not + necessarily the newest. +3. **Current live version** - the most recent high-authority version that still + appears active. +4. **Reversals** - places where the user's stance changed direction. +5. **Contradictions** - claims that cannot both be true at the same time or + under the same assumptions. Distinguish these from legitimate temporal + supersession. +6. **Abandoned branches** - promising variants that appear and then disappear, + lose support, or are explicitly rejected. +7. **Related concepts** - nearby ideas that shaped or inherited part of the + original idea. + +When a bucket has no evidence, write "No clear evidence found" with a brief note +about what was checked. + +### Phase 4: Synthesize the lineage + +Write the answer in the output format below. Keep the synthesis proportional to +the evidence. Do not overfit a smooth evolution if the evidence is sparse, +messy, or contradictory. + +### Phase 5: Suggest optional next action + +If useful, offer one concrete follow-up: + +- Save the lineage as a brain page. +- Run broad `concept-synthesis` if the user actually wants the whole concept + map refreshed. +- Run or inspect trajectory data if the idea turned out to depend on structured + entity facts. +- Run a contradiction probe only when stale cached findings are insufficient + and the user explicitly wants that heavier pass. + +## Output Format + +Use this shape for normal answers: + +```markdown +## Current Live Version +[1-3 sentences. Include confidence: high / medium / low.] + +## Lineage +- First mention: [date] - [claim] ([source-id:slug], "short quote") +- Best articulation: [date] - [claim] ([source-id:slug], "short quote") +- Turning point: [date] - [what changed] ([source-id:slug]) + +## Reversals and Contradictions +- Reversal: [what changed, with before/after evidence] +- Contradiction: [what conflicts, or "No clear evidence found"] + +## Abandoned Branches +- [branch] - [why it appears abandoned, with evidence] + +## Related Concepts +- [concept slug or title] - [relationship] + +## Evidence Gaps +- [bucket or claim] - [what was checked and what is missing] +``` + +For short answers, collapse sections, but keep the same distinctions. Always +cite the source for each non-gap claim. + +## Quality Rules + +- Quote exact text when naming first mention or best articulation. +- Include dates when the source has dates. If no date is available, say + "undated" rather than guessing. +- Treat the user's direct statements as highest authority for the user's own + current view. +- Treat holder-attributed takes as beliefs by that holder, not automatically + as facts about the world or the brain owner. +- Mark confidence low when evidence comes from a single weak snippet, an + undated page, or a fuzzy semantic match. +- Preserve source ids in citations when search or page payloads include them. + +## Anti-Patterns + +- Running `concept-synthesis` for a single-idea question. +- Presenting an entity's MRR, ARR, role, or status trajectory as conceptual + lineage without explaining the distinction. +- Treating normal temporal evolution as contradiction. +- Inventing abandoned branches because the story would be more interesting. +- Saving or rewriting brain pages without explicit user instruction. +- Using real names, companies, funds, or fork-specific examples in bundled + fixtures or documentation. + +## Related Skills and Operations + +- `skills/concept-synthesis/SKILL.md` - broad mutating concept-map synthesis. +- `skills/query/SKILL.md` - general brain search and cited answers. +- `skills/brain-ops/SKILL.md` - source attribution and brain-first behavior. +- `find_trajectory` - structured typed-fact and event timelines for entities. +- `find_contradictions` - cached suspected contradiction findings. + +## Tools Used + +- `search` - keyword search for exact phrase variants and dated mentions. +- `query` - semantic search for conceptual matches. +- `get_page` - full context for candidate source pages. +- `list_pages` - concept-page discovery and scoped page enumeration. +- `takes_search` - holder-attributed beliefs, bets, hunches, and facts. +- `find_contradictions` - cached contradiction findings when relevant. +- `find_trajectory` - optional structured entity trajectory side-channel. diff --git a/skills/idea-lineage/routing-eval.jsonl b/skills/idea-lineage/routing-eval.jsonl new file mode 100644 index 000000000..474c6f90c --- /dev/null +++ b/skills/idea-lineage/routing-eval.jsonl @@ -0,0 +1,10 @@ +// Routing eval fixtures for skills/idea-lineage. Positive cases exercise +// single-idea conceptual lineage. Negative cases protect adjacent +// concept-synthesis and trajectory surfaces. +{"intent":"Run idea lineage on founder-led sales and show the earliest version","expected_skill":"idea-lineage"} +{"intent":"Show how my thinking about compounding trust changed over time","expected_skill":"idea-lineage"} +{"intent":"What is my current version of the invisible college idea?","expected_skill":"idea-lineage"} +{"intent":"Where did this idea come from in my notes, and what did I abandon?","expected_skill":"idea-lineage"} +{"intent":"Show reversals in my thinking about founder-led sales","expected_skill":"idea-lineage"} +{"intent":"How has acme-example MRR trended since January?","expected_skill":null} +{"intent":"Build my intellectual map across all my recurring frameworks","expected_skill":"concept-synthesis"} diff --git a/skills/manifest.json b/skills/manifest.json index 24af12dbc..a2d894482 100644 --- a/skills/manifest.json +++ b/skills/manifest.json @@ -194,6 +194,11 @@ "path": "concept-synthesis/SKILL.md", "description": "Deduplicate and synthesize raw concept stubs into a tiered intellectual map (T1 Canon to T4 Riff), tracing idea evolution across sources over time." }, + { + "name": "idea-lineage", + "path": "idea-lineage/SKILL.md", + "description": "Trace one idea's evolution through the brain: first mention, best articulation, reversals, contradictions, abandoned branches, related concepts, and current live version." + }, { "name": "perplexity-research", "path": "perplexity-research/SKILL.md",