--- name: manage-thinking-topics description: Manage the incubation loop topic lifecycle — seed new questions, review status, crystallize converged conclusions, and retire stale topics automation: manual allowed-tools: Read, Write, Edit, Grep, Glob, Bash user-invocable: true argument-hint: "[seed|review|crystallize|retire] [topic-slug]" --- # Manage Thinking Topics Human-in-the-loop manager for the incubation loop topic registry. Handles the full lifecycle: seeding new questions into analysis, reviewing current status, graduating converged conclusions to permanent notes, and retiring topics no longer worth pursuing. **Companion skill:** `.claude/skills/incubation-loop/SKILL.md` — the analytical engine that processes active topics. ## State Dependencies | Source | Location | Read | Write | Description | |--------|----------|------|-------|-------------| | Thinking Registry | `Brain/05-Meta/Thinking/THINKING-REGISTRY.md` | ✓ | ✓ | Master list of all topics + status | | Topic Files | `Brain/05-Meta/Thinking/[topic-slug].md` | ✓ | ✓ | Per-topic reasoning journal | | Permanent Notes | `Brain/02-Permanent/` | | ✓ | Atomic crystallized conclusions (graph-integrated, future-reasoning substrate) | | Synthesis Reports | `Brain/05-Meta/Reports/` | | ✓ | Terminal crystallized conclusions (decision-input snapshots, excluded from LBS index) | | AI Extracted Notes | `Brain/AI Extracted Notes/` | | ✓ | Alternative destination for crystallized notes | ## Modes Invoke with one of four modes. If no mode is provided, default to `review`. --- ## Mode: review **Purpose:** Show the full topic landscape at a glance - what's active, what needs crystallization, what's done. ### Step 1: Read Registry ```bash date '+%Y-%m-%d' ``` Read `Brain/05-Meta/Thinking/THINKING-REGISTRY.md`. ### Step 2: For Each Active Topic - Load Summary For each topic with `status: active`, read its thinking file. Extract: - `run_count` - how many iterations completed - `last_run` - date of last iteration - Current leading hypothesis + confidence score - Next move in rotation (run_count mod 6) - Any open questions flagged ### Step 3: For Each Converged Topic - Load Summary For each topic with `status: converged`, read its thinking file. Extract: - The converged conclusion (Current Best Answer from last run) - Confidence score at convergence - Run count at convergence ### Step 4: Present Status Report Output a structured report: ``` ## Thinking Topics: Status Review [DATE] ### Active Topics (N) | Topic | Runs | Last Run | Leading Hypothesis | Confidence | Next Move | |-------|------|----------|-------------------|------------|-----------| ### Converged — Ready for Crystallization (N) | Topic | Runs | Conclusion Summary | Confidence | |-------|------|-------------------|------------| ### Crystallized — Done (N) | Topic | Permanent Note | Crystallized | |-------|---------------|-------------| ### Summary - [N] topics in active analysis - [N] topics ready for crystallization (action needed) - [N] topics fully crystallized - Next incubation-loop run: processes all active topics ``` If there are converged topics, highlight: **"[N] topics ready for crystallization — run `/manage-thinking-topics crystallize [slug]` to graduate each one."** --- ## Mode: seed **Purpose:** Add a new question to the incubation loop. **Argument:** topic slug (e.g., `agent-memory-architecture`) ### Step 1: Gather Requirements If the topic slug is not provided, ask for it. Then gather: 1. **Central question** - The exact question being analyzed. Precise framing matters - vague questions stay vague. 2. **Why it matters** - 1-2 sentences on stakes or relevance. 3. **Initial hypotheses** - At least 2 competing hypotheses with rough initial confidence percentages (must sum to ~100%). 4. **Known evidence** - Any notes or sources already known to be relevant (optional). 5. **Constraints/assumptions** - What's taken as given? What's out of scope? (optional) ### Step 2: Validate Slug Check that `Brain/05-Meta/Thinking/[topic-slug].md` does NOT already exist. If it does, warn and stop. Check that the slug is not already in the registry. If it is, warn and stop. ### Step 3: Create Topic File ```bash date '+%Y-%m-%d' ``` Create `Brain/05-Meta/Thinking/[topic-slug].md`: ```markdown --- created: YYYY-MM-DD updated: YYYY-MM-DD created_by: claude-sonnet-4-6 updated_by: claude-sonnet-4-6 agent_version: 01.25 topic: "[exact question being analyzed]" run_count: 0 last_run: null status: active --- # Thinking: [Topic Title] ## Central Question [The exact question. Precise framing matters - ambiguous questions stay ambiguous.] ## Why This Question Matters [1-2 sentences on stakes or relevance] ## Initial Hypotheses | Hypothesis | Initial Confidence | Basis | |-----------|-------------------|-------| | H1: [statement] | X% | [prior knowledge or intuition] | | H2: [statement] | X% | [prior knowledge or intuition] | ## Known Evidence (Pre-Run) [Any notes or sources already known to be relevant, or "None identified yet."] ## Constraints and Assumptions [What are you taking as given? What's out of scope?] --- *Analytical runs will be appended below by the incubation loop* ``` ### Step 4: Add to Registry Read `Brain/05-Meta/Thinking/THINKING-REGISTRY.md`. Add a row to the **Active Topics** table: ``` | [topic-slug] | [central question] | active | 0 | null | ``` Update `updated` and `updated_by` in frontmatter. ### Step 5: Confirm Report: - Topic file created at `Brain/05-Meta/Thinking/[topic-slug].md` - Registry updated - topic is now active - First incubation-loop run will apply: **ACH Audit** (move 0) - Estimated convergence: 4-6 runs (~4-6 days at daily schedule) --- ## Mode: crystallize **Purpose:** Graduate a converged topic — either as an **atomic permanent note** (Brain/02-Permanent/, graph-integrated) or as a **terminal synthesis report** (Brain/05-Meta/Reports/, excluded from semantic indexing). Choose based on whether the conclusion is generative (future reasoning will reuse it) or terminal (snapshot of what was concluded). **Argument:** topic slug of a converged topic **If no slug is provided:** read the registry, present the converged topics (with one-line conclusions), and ask which to crystallize before proceeding. If prior session context points at a specific topic or pair (e.g., a just-completed analysis that named them), recommend it as the first option. Accept common misspellings of the mode name (e.g., "crystalize"). ### Step 1: Load Converged Topic Read `Brain/05-Meta/Thinking/[topic-slug].md`. Verify `status: converged`. If not converged, warn and stop. **Extraction strategy (prefer the canonical block, fall back gracefully):** 1. **First, look for `## Final Synthesis`** - a canonical block appended when the loop transitions a topic to converged. If present, this is the authoritative source. Extract from it: - Conclusion (the substantive answer) - Confidence and leading hypothesis - Key evidence (already curated) - Remaining uncertainty - Related topics (if any) 2. **If no Final Synthesis block exists** (legacy topics from before the standardized format), read only the *last 200 lines* of the file rather than the full thinking journal (some are 5,000+ lines). Extract: - The central question (from frontmatter) - The most recent "Current Best Answer" section - The most recent "Updated Hypotheses" table for confidence scores - Any "Open Questions" flagged in the final run 3. Read the full file only if the last 200 lines do not contain a "Current Best Answer" or equivalent conclusion. ### Step 2: Search for Existing Notes ```bash python3 resources/local-brain-search/search.py "[central question keywords]" --limit 5 --mode spreading 2>/dev/null ``` Check if a permanent note already exists covering this conclusion. If so, note the overlap and ask whether to update it or create a new note. ### Step 3: Choose Destination Before drafting, decide the destination based on the nature of the conclusion: | Signal | Destination | |---|---| | Conclusion is **one atomic insight** that future reasoning will cite | `Brain/02-Permanent/` (permanent note) | | Conclusion has **multiple co-equal findings** that belong together (e.g., a four-stage architecture, a stratified framework) | `Brain/05-Meta/Reports/` (synthesis report) | | Conclusion is a **snapshot of a moment** (geopolitical assessment, project-stack analysis) — decision-input, not future-reasoning substrate | `Brain/05-Meta/Reports/` (synthesis report) | | Conclusion captures a **generative principle** that will be reasoned FROM in other contexts | `Brain/02-Permanent/` (permanent note) | | Topic is **transitory** — relevant for current decisions, unlikely to be revisited | `Brain/05-Meta/Reports/` (synthesis report) | **[APPROVAL GATE]** Propose the destination and ask the user to confirm or override: > "Recommend: **[destination]** because **[reason]**. Confirm, or override to **[other destination]**?" Synthesis reports do not participate in connection-finder or semantic search (the `Reports/` folder is excluded from LBS indexing). They are visible in Obsidian and can link OUT to permanent notes via `[[wiki-links]]`, but permanent notes should rarely link IN to reports. ### Step 4: Draft Content Adapt the draft to the chosen destination: **If permanent note (Brain/02-Permanent/):** - Written in the user's voice, not as a report - Leads with the conclusion, not the process - Cites the key evidence that drove the conclusion - Notes remaining uncertainty or caveats - Atomic — one main insight, ~50-100 lines **If synthesis report (Brain/05-Meta/Reports/):** - Long-form is appropriate — can be 200-600+ lines - Lead with executive summary, then layered detail - Multiple findings organized by section (each finding need not be atomic) - Cite full evidence base with sources/URLs where applicable - Wiki-link OUT to relevant permanent notes; reports are terminal Propose the draft to the user for review before writing. **[APPROVAL GATE]** Present the draft. Ask: "Write this to `[chosen destination path]`? (Yes / revise the draft / skip crystallization)" ### Step 5: Write to Destination On approval, write the file with proper frontmatter: ```yaml --- created: YYYY-MM-DD updated: YYYY-MM-DD created_by: claude-sonnet-4-6 updated_by: claude-sonnet-4-6 agent_version: 01.25 provenance: ai-inferred --- ``` **Provenance (mandatory):** Crystallized conclusions are agent-synthesized, so default `provenance: ai-inferred`. Per CLAUDE.md's guarded boundary, this only becomes `endorsed` or `originated` through an explicit endorsement act by the user at the **[APPROVAL GATE]** above - never set it automatically. If the user states the conclusion is his own thinking, set `provenance: endorsed` (or `originated` if it is purely his idea the loop merely formalized). For synthesis reports, kebab-case the filename; add a date suffix if the report is a dated snapshot (e.g., `trinity-production-architecture-2026-05-26.md`). ### Step 6: Update Topic File Edit `Brain/05-Meta/Thinking/[topic-slug].md`: - Set `status: crystallized` - Update `updated` and `updated_by` - Append a final note (adapt to destination): ```markdown --- **CRYSTALLIZED [DATE]** → [[Destination Note or Report Name]] *Conclusion graduated to [permanent knowledge base | synthesis reports]. Thinking file archived.* ``` ### Step 7: Update Registry In `Brain/05-Meta/Thinking/THINKING-REGISTRY.md`: - Remove the row from **Converged** table - Add a row to **Crystallized** table: ``` | [topic-slug] | [[Destination Note or Report Name]] | YYYY-MM-DD | ``` If the existing Crystallized table column header is still "Permanent Note", update it to "Destination" so it accommodates both atomic notes and synthesis reports. Update `updated` and `updated_by` in frontmatter. ### Step 8: Confirm Report: - File written at `[full destination path]` - Topic marked crystallized - Registry updated --- ## Mode: retire **Purpose:** Remove a topic from active analysis without crystallizing it (topic no longer relevant, question was wrong, superseded by new evidence). **Argument:** topic slug ### Step 1: Load Topic Read `Brain/05-Meta/Thinking/[topic-slug].md`. Show: - Current status - Run count - Current leading hypothesis and confidence ### Step 2: Confirm Retirement **[APPROVAL GATE]** Ask: > "Retiring '[topic-slug]' will stop it from being processed by the incubation loop. The thinking file will be kept for reference but marked retired. Reason for retiring? (or type 'cancel')" Capture the reason. ### Step 3: Update Topic File Edit `Brain/05-Meta/Thinking/[topic-slug].md`: - Set `status: retired` - Update `updated` and `updated_by` - Append: ```markdown --- **RETIRED [DATE]** *Reason: [reason given]* *Topic removed from active analysis. Thinking file kept for reference.* ``` ### Step 4: Update Registry In `Brain/05-Meta/Thinking/THINKING-REGISTRY.md`: - Remove the row from whichever table it was in (Active or Converged) - Do NOT add to Crystallized table (it wasn't graduated) Optionally add a **Retired** section if one doesn't exist: ```markdown ## Retired | Topic Slug | Reason | Retired On | |------------|--------|------------| ``` Update `updated` and `updated_by` in frontmatter. ### Step 5: Confirm Report: - Topic marked retired in `Brain/05-Meta/Thinking/[topic-slug].md` - Removed from registry active/converged table - Thinking file preserved at full path for future reference --- ## Move Rotation Reference When seeding or reviewing, the next analytical move is determined by `run_count mod 6`: | run_count % 6 | Move | |--------------|------| | 0 | ACH Audit — eliminate weak hypotheses | | 1 | Bayesian Update — explicit confidence tracking | | 2 | Steelman Opposition — dialectical challenge | | 3 | Cross-Domain Bridge — consilience from another field | | 4 | Implication Check — falsificationism | | 5 | Assumption Audit — find load-bearing shaky premises | --- ## Convergence Criteria (Reference) A topic converges when ALL: - `run_count >= 4` - Same hypothesis has led for 3+ consecutive runs - Confidence delta between last two runs < 5 percentage points - No major open questions flagged in last run The incubation-loop skill checks this automatically after each run. --- ## Error Handling | Error | Recovery | |-------|----------| | Registry missing | Stop; inform user to seed registry via incubation-loop skill | | Topic file missing for registry entry | Log warning; continue with other topics | | Slug already exists (seed mode) | Stop; show existing file path | | Topic not converged (crystallize mode) | Stop with current run count and status | | KB search returns empty | Skip search step; note in output | --- ## Self-Improvement After completing this skill's primary task, consider tactical improvements: - [ ] **Review execution**: Were there friction points, unclear steps, or inefficiencies? - [ ] **Identify improvements**: Could step ordering, prompts to the user, or output formatting be clearer? - [ ] **Scope check**: Only execution changes — NOT changes to the incubation-loop analytical framework itself - [ ] **Apply improvement** (if identified): - [ ] Edit this SKILL.md with the specific improvement - [ ] Keep changes minimal and focused - [ ] **Version control**: - [ ] `git add .claude/skills/manage-thinking-topics/SKILL.md` - [ ] `git commit -m "refactor(manage-thinking-topics): "`