/ideate
Generates high-quality research ideas through a 5-phase pipeline, grounded in the wiki knowledge base and external search.
Phase 1 scans the research landscape (wiki + WebSearch + S2), Phase 2 runs a dual-model brainstorm (Claude + Review LLM independently),
Phase 3 applies a first-pass filter (feasibility + quick novelty check), Phase 4 performs deep validation (calls /novelty + /review),
Phase 5 writes to the wiki (ideas/ + graph edges), including eliminated ideas (failure reasons recorded as anti-repetition memory).
Inputs
direction (optional): research direction, keywords, or specific problem description. If omitted, automatically selects the most valuable direction from open_questions.md.
--max-ideas N (optional, default 3): maximum number of ideas to write to the wiki
--skip-validation: skip Phase 4 deep validation (fast mode: Phase 1–3 + Phase 5 only)
--auto: fully automatic mode, no pause for user confirmation (used when called by /research)
Outputs
wiki/ideas/{slug}.md — one page per idea (status: proposed), covering both top ideas and eliminated ideas
wiki/graph/edges.jsonl — new idea → claim/gap relationship edges
wiki/graph/context_brief.md — rebuilt compressed context
wiki/graph/open_questions.md — rebuilt knowledge gap map
- IDEA_REPORT (printed to terminal) — pipeline execution summary, ranked results, novelty scores
Wiki Interaction
Reads
wiki/graph/context_brief.md — global context
wiki/graph/open_questions.md — knowledge gaps, drives idea direction
wiki/ideas/*.md — existing ideas, especially status=failed ideas and their failure_reason (banlist)
wiki/claims/*.md — current claims status, identifies weakly_supported and challenged claims
wiki/papers/*.md — existing paper methods and results
wiki/concepts/*.md — technical concepts, find cross-domain combination opportunities
wiki/topics/*.md — research direction maps, SOTA and open problems
wiki/experiments/*.md — existing experiment results, avoid duplication
Writes
wiki/ideas/{slug}.md — create new idea pages
wiki/graph/edges.jsonl — add idea → claim/gap relationship edges (addresses_gap, inspired_by)
wiki/graph/context_brief.md — rebuild
wiki/graph/open_questions.md — rebuild
wiki/log.md — append operation log
Graph edges created
addresses_gap: idea → claim/topic (knowledge gap the idea targets)
inspired_by: idea → paper/concept (source of inspiration for the idea)
Workflow
Pre-conditions:
- Confirm working directory is the wiki project root (directory containing
wiki/, raw/, tools/).
- Check wiki maturity:
python3 tools/research_wiki.py maturity wiki/ --json
Adjust subsequent behavior based on maturity level:
- cold: expand Phase 1 external search (WebSearch queries from 5 to 8, S2/DeepXiv limit from 20 to 30),
skip wiki internal context loading (empty, no value), annotate "cold-start mode: heavier external search"
- warm: standard behavior (current default)
- hot: reduce Phase 1 external search (WebSearch queries from 5 to 2, S2/DeepXiv limit from 20 to 10),
raise Phase 3 gap_alignment_bonus from +2 to +3, prioritize resolving weak claims already in the wiki
- Snapshot wiki state (for the Growth Report at the end):
Save the JSON returned by maturity to memory variable
maturity_before
Phase 1: Landscape Scan
Goal: build a comprehensive view of the target domain, including existing work, knowledge gaps, and recent advances.
Load wiki internal context:
- Read
wiki/graph/context_brief.md (global compressed context)
- Read
wiki/graph/open_questions.md (knowledge gap list)
- Read all
wiki/ideas/*.md, extract:
- status=failed ideas → banlist (with failure_reason)
- status=proposed/in_progress ideas → active list (avoid duplication)
- Read
wiki/claims/*.md, find claims with status=weakly_supported or challenged → weak claims list
- If
direction is specified, filter to the relevant subset
External search (run in parallel using Agent tool):
- WebSearch: search for recent 6-month papers and advances in the target direction (3–5 queries)
- Semantic Scholar:
python3 tools/fetch_s2.py search "<direction-keywords>" --limit 20
Fetch details for the top 5 highly-cited papers
- DeepXiv semantic search:
python3 tools/fetch_deepxiv.py search "<direction-keywords>" --mode hybrid --limit 20
Fetch TLDR and keywords for top 5 most relevant results:python3 tools/fetch_deepxiv.py brief <arxiv_id>
Semantic search supplements S2 keyword search for conceptually related papers that keyword search may miss.
- DeepXiv trending papers:
python3 tools/fetch_deepxiv.py trending --days 14
Trending papers indicate community focus areas, useful for discovering trend-driven gaps.
- arXiv latest:
site:arxiv.org <direction> 2025 2026
- If DeepXiv is unavailable: skip DeepXiv search and trending, rely on S2 + WebSearch only (fallback to original behavior).
Compile landscape report (internal use, not written to wiki):
- Current SOTA methods and performance
- Known open problems / unresolved challenges
- Recent trends and hot topics
- Knowledge gaps in the wiki (from gap_map)
- Prohibited directions (from banlist)
Phase 2: Dual-Model Brainstorm
Goal: generate ideas independently with Claude and Review LLM, exploiting the diversity that comes from different model perspectives.
Follow shared-references/cross-model-review.md: Claude and Review LLM generate independently without seeing each other's output.
Claude generates 6–10 ideas:
- Input: landscape report + wiki gaps + weak claims + banlist
- Strategies:
- Cross-domain combination (method from Topic A + problem from Topic B)
- Fill gaps in the gap_map
- Strengthen weakly_supported claims
- Alternative hypotheses that challenge challenged claims
- Known limitations of SOTA → improvement directions
- Each idea includes: title, hypothesis (1–2 sentences), approach sketch (3–5 sentences), target claims, estimated feasibility (high/medium/low)
Review LLM independently generates 4–6 ideas (run in parallel):
mcp__llm-review__chat:
system: "You are a creative ML researcher brainstorming research ideas.
Generate novel, concrete, and feasible ideas based on the given context.
For each idea, provide: title, hypothesis (1-2 sentences),
approach sketch (3-5 sentences), and feasibility assessment."
message: |
## Research Landscape
{landscape report from Phase 1 — gaps, SOTA, trends}
## Knowledge Gaps
{gap_map entries}
## Banlist (DO NOT revisit these)
{failed ideas with failure_reason}
## Active Ideas (avoid duplicating)
{proposed/in_progress ideas}
Generate 4-6 novel research ideas that address the gaps above.
Focus on ideas that are: (1) genuinely novel, (2) feasible within 3-6 months,
(3) directly address a knowledge gap.
Merge and deduplicate:
- Combine Claude's and Review LLM's ideas (10–16 candidates)
- Remove highly similar ideas (merge ideas with the same core method, keep the more specific version)
- Remove ideas that overlap with the banlist
- Remove ideas that heavily duplicate the active list
- Output: 8–12 candidate ideas
Phase 3: First-Pass Filter
Goal: quickly eliminate ideas that are clearly infeasible or insufficiently novel.
Apply the following checks to each candidate idea:
Feasibility check:
- Are GPU/compute requirements within reasonable range? (reference experiment setups already in the wiki)
- Data availability (public datasets vs. private data)
- Implementation complexity (achievable within 3–6 months?)
- Label as feasibility: high/medium/low
Quick novelty screening (2–3 WebSearch queries per idea):
"<idea-core-method>" + "<task>" exact-match search
<component-1> + <component-2> component-combination search
- If a highly similar published work is found → eliminate or flag
Wiki alignment check:
- Does the idea address a known gap in the gap_map? (+score)
- Does the idea target a weakly_supported claim? (+score)
- Does the idea build on existing wiki knowledge? (+score)
Filter decision:
- Eliminate if: feasibility=low AND quick novelty screening found similar published work
- Eliminate if: highly correlated with a failure_reason in the banlist
- Retain if: feasibility >= medium AND not eliminated
- Output: 4–6 surviving ideas (ranked)
Phase 4: Deep Validation
(Skip if --skip-validation is set; proceed directly to Phase 5.)
Apply deep validation to the top 3 ideas from Phase 3:
Call /novelty (one at a time):
For each top idea:
Skill: novelty
Args: "<idea-title-and-hypothesis>"
Record novelty score (1–5) and recommendations
Call /review (for top 2 ideas):
Skill: review
Args: "<idea-full-description>" --difficulty hard --focus method
Record review score (1–10) and weaknesses
Composite ranking:
- Final score = novelty_score × 2 + review_score + gap_alignment_bonus
- gap_alignment_bonus: +2 if the idea directly targets a gap_map entry
- If novelty_score <= 2 → downgrade to "modify needed"
- If review_score <= 4 → downgrade to "major issues"
If --auto is not set: display ranked results in terminal, wait for user confirmation or adjustment
Phase 5: Write to Wiki
Write the validated ideas to the wiki (including eliminated ideas, with their elimination reasons recorded).
Write top ideas (status: proposed):
For the top --max-ideas ideas:
# generate slug
python3 tools/research_wiki.py slug "<idea-title>"
Create wiki/ideas/{slug}.md following the CLAUDE.md ideas template exactly (all fields required; lint.py enforces status and priority):
---
title: "<idea title>"
slug: "<idea-slug>"
status: proposed
origin: "ideate: <short description of the driving gap / weak claim / paper>"
origin_gaps: [] # [[claim-slug]] list — claims or topics this idea targets
tags: [] # 2-5 topic tags (inherit from target claims / direction)
domain: "" # NLP / CV / ML Systems / Robotics (inherit from direction)
priority: 3 # 1-5 — see Priority computation below
pilot_result: "" # empty until /exp-eval fills it
failure_reason: "" # empty for proposed ideas
linked_experiments: [] # empty until /exp-design creates experiments
date_proposed: YYYY-MM-DD
date_resolved: "" # empty until validated/failed
---
Priority computation (maps Phase 4 signals into the 1-5 scale):
- If
--skip-validation: default priority = 3
- Otherwise start from
novelty_score (1-5 from /novelty)
+1 if gap_alignment_bonus > 0 (directly targets a gap_map entry)
-1 if review_score <= 4 (major issues downgrade)
- Clamp to
[1, 5]
Body sections (exactly match the CLAUDE.md template — do not rename):
## Motivation
Which gap / weakly_supported claim / paper limitation drives this idea. Reference wiki pages via `[[slug]]`.
## Hypothesis
1-2 sentences stating the testable proposition.
## Approach sketch
3-5 sentences on the proposed method. Reference `[[paper-slug]]` or `[[concept-slug]]` for any component borrowed from existing work.
## Expected outcome
What success looks like (metric / claim status change), plus the Phase 4 novelty & review summary:
- Novelty score: N/5 — <one-line reason from /novelty>
- Review score: M/10 — <one-line summary from /review>
## Risks
Feasibility rating (high/medium/low) + top 2-3 risks. Include the main weaknesses surfaced by /review.
## Pilot results
(empty — filled by /exp-eval after running the experiment)
## Lessons learned
(empty — filled by /exp-eval after the idea reaches a terminal status)
Write eliminated ideas (status: failed):
For ideas eliminated in Phase 3/4, also create wiki/ideas/{slug}.md using the same template above, with these overrides:
status: failed
priority: 1 (eliminated ideas never block higher-priority work)
date_resolved: YYYY-MM-DD (today)
failure_reason: "[filter] <specific elimination reason>" — the [filter] prefix distinguishes ideate-stage eliminations from post-experiment failures (which /exp-eval tags differently). Examples: "[filter] highly similar published work exists: <paper-title>", "[filter] insufficient feasibility: GPU requirements too high"
- Body
## Motivation and ## Hypothesis should still be filled (so future banlist matching has content); ## Approach sketch may be brief; ## Expected outcome and ## Risks can note why the idea was eliminated
- These failed ideas become the banlist for future ideate runs
Add graph edges:
# for each idea
python3 tools/research_wiki.py add-edge wiki/ \
--from "ideas/{slug}" --to "claims/{target-claim}" \
--type addresses_gap --evidence "Generated by ideate"
python3 tools/research_wiki.py add-edge wiki/ \
--from "ideas/{slug}" --to "papers/{source-paper}" \
--type inspired_by --evidence "Inspired by method in {paper-title}"
Rebuild derived data:
python3 tools/research_wiki.py rebuild-context-brief wiki/
python3 tools/research_wiki.py rebuild-open-questions wiki/
Append log:
python3 tools/research_wiki.py log wiki/ \
"ideate | {N} ideas proposed, {M} ideas filtered out | direction: {direction}"
Print IDEA_REPORT to terminal:
# Idea Generation Report
## Pipeline Summary
- Direction: {direction}
- Phase 1: Scanned {N} external papers, {M} wiki gaps identified
- Phase 2: Generated {X} candidates (Claude: {a}, Review LLM: {b})
- Phase 3: {Y} survived initial filter (from {X})
- Phase 4: Deep validation on top {Z}
- Phase 5: {K} ideas written to wiki
## Top Ideas (ranked)
| Rank | Idea | Novelty | Review | Gap Align | Status |
|------|------|---------|--------|-----------|--------|
| 1 | [[slug]] | 4/5 | 7/10 | +2 | proposed |
| 2 | [[slug]] | 3/5 | 6/10 | +0 | proposed |
## Filtered Out
| Idea | Reason | Status |
|------|--------|--------|
| [[slug]] | Similar published work exists | failed |
| [[slug]] | GPU requirements too high | failed |
## Suggested Next Steps
- Run `/exp-design {top-idea-slug}` to design experiments
- Run `/novelty` on any idea before investing time
## Wiki Growth
| Metric | Before | After | Delta |
|--------|--------|-------|-------|
| Papers | {before} | {after} | +{delta} |
| Claims | {before} | {after} | +{delta} |
| Ideas | {before} | {after} | +{delta} |
| Edges | {before} | {after} | +{delta} |
| Maturity | {before_level} | {after_level} | {unchanged/upgraded} |
(Only rows with delta != 0 are shown. Data is computed by comparing `maturity_before` from the pre-condition step against a fresh `maturity --json` call here.)
Constraints
- Auto-switch to cold-start mode when wiki is cold: expand external search (WebSearch 8 queries, S2/DeepXiv limit 30), do not block execution
- Every idea must have wiki grounding: each idea must reference at least 2 wiki pages (paper/concept/claim)
- Banlist must be loaded: Phase 1 must read failed ideas' failure_reason; Phase 2/3 must check for overlap
- Review LLM independence: in Phase 2, Review LLM does not see Claude's idea list (cross-model-review.md)
- Eliminated ideas are also written to wiki: status=failed + failure_reason, as anti-repetition memory
- No fabrication: all ideas must be derived from existing wiki knowledge or external search results; do not invent non-existent papers or methods
- Slug uniqueness: check whether the same slug already exists in wiki/ideas/ before creating
- Graph edges via tools/research_wiki.py: do not manually edit edges.jsonl
Error Handling
- Wiki is empty: proceed with external search (Phase 1 sources B/C/D), but skip wiki internal context; prompt user to build the knowledge base first
- WebSearch unavailable: skip external search, generate ideas from wiki internal knowledge only (degraded mode, noted in report)
- Semantic Scholar API unavailable: skip S2 search, rely on DeepXiv + WebSearch for compensation
- DeepXiv API unavailable: skip DeepXiv search and trending, fall back to S2 + WebSearch (original behavior)
- Review LLM unavailable: Phase 2 uses Claude only (no dual-model diversity, noted in report)
- /novelty fails: if novelty fails for a single idea in Phase 4, mark "novelty unverified" and continue
- /review fails: if review fails in Phase 4, mark "unreviewed" and continue; recommend user manually runs /review
- Slug conflict: if the same slug already exists in wiki/ideas/, append a numeric suffix (e.g.
sparse-lora-v2)
- All ideas eliminated: still write to wiki (status: failed); report recommends user broaden the search direction or /ingest more papers
Dependencies
Tools(via Bash)
python3 tools/research_wiki.py maturity wiki/ --json — check wiki maturity + Growth Report
python3 tools/research_wiki.py slug "<title>" — generate slug
python3 tools/research_wiki.py add-edge wiki/ ... — add graph edge
python3 tools/research_wiki.py rebuild-context-brief wiki/ — rebuild query_pack
python3 tools/research_wiki.py rebuild-open-questions wiki/ — rebuild gap_map
python3 tools/research_wiki.py log wiki/ "<message>" — append log
python3 tools/fetch_s2.py search "<query>" --limit 20 — Semantic Scholar search
python3 tools/fetch_deepxiv.py search "<query>" --mode hybrid --limit 20 — DeepXiv semantic search
python3 tools/fetch_deepxiv.py brief <arxiv_id> — fetch paper TLDR
python3 tools/fetch_deepxiv.py trending --days 14 — trending paper trends
Skills(via Skill tool)
/novelty — Phase 4 deep novelty validation
/review — Phase 4 cross-model review
MCP Servers
mcp__llm-review__chat — Phase 2 Review LLM independent brainstorm
Claude Code Native
WebSearch — Phase 1 external search, Phase 3 quick novelty screening
Agent tool — Phase 1 parallel search, Phase 2 parallel brainstorm
Shared References
.claude/skills/shared-references/cross-model-review.md — Phase 2 Review LLM independence principle
1---2name: ideate3description: Ideate4---56# /ideate78> Generates high-quality research ideas through a 5-phase pipeline, grounded in the wiki knowledge base and external search.9> Phase 1 scans the research landscape (wiki + WebSearch + S2), Phase 2 runs a dual-model brainstorm (Claude + Review LLM independently),10> Phase 3 applies a first-pass filter (feasibility + quick novelty check), Phase 4 performs deep validation (calls /novelty + /review),11> Phase 5 writes to the wiki (ideas/ + graph edges), including eliminated ideas (failure reasons recorded as anti-repetition memory).1213## Inputs1415- `direction` (optional): research direction, keywords, or specific problem description. If omitted, automatically selects the most valuable direction from open_questions.md.16- `--max-ideas N` (optional, default 3): maximum number of ideas to write to the wiki17- `--skip-validation`: skip Phase 4 deep validation (fast mode: Phase 1–3 + Phase 5 only)18- `--auto`: fully automatic mode, no pause for user confirmation (used when called by /research)1920## Outputs2122- `wiki/ideas/{slug}.md` — one page per idea (status: proposed), covering both top ideas and eliminated ideas23- `wiki/graph/edges.jsonl` — new idea → claim/gap relationship edges24- `wiki/graph/context_brief.md` — rebuilt compressed context25- `wiki/graph/open_questions.md` — rebuilt knowledge gap map26- **IDEA_REPORT** (printed to terminal) — pipeline execution summary, ranked results, novelty scores2728## Wiki Interaction2930### Reads31- `wiki/graph/context_brief.md` — global context32- `wiki/graph/open_questions.md` — knowledge gaps, drives idea direction33- `wiki/ideas/*.md` — existing ideas, especially status=failed ideas and their failure_reason (banlist)34- `wiki/claims/*.md` — current claims status, identifies weakly_supported and challenged claims35- `wiki/papers/*.md` — existing paper methods and results36- `wiki/concepts/*.md` — technical concepts, find cross-domain combination opportunities37- `wiki/topics/*.md` — research direction maps, SOTA and open problems38- `wiki/experiments/*.md` — existing experiment results, avoid duplication3940### Writes41- `wiki/ideas/{slug}.md` — create new idea pages42- `wiki/graph/edges.jsonl` — add idea → claim/gap relationship edges (addresses_gap, inspired_by)43- `wiki/graph/context_brief.md` — rebuild44- `wiki/graph/open_questions.md` — rebuild45- `wiki/log.md` — append operation log4647### Graph edges created48- `addresses_gap`: idea → claim/topic (knowledge gap the idea targets)49- `inspired_by`: idea → paper/concept (source of inspiration for the idea)5051## Workflow5253**Pre-conditions**:541. Confirm working directory is the wiki project root (directory containing `wiki/`, `raw/`, `tools/`).552. **Check wiki maturity**:56 ```bash57 python3 tools/research_wiki.py maturity wiki/ --json58 ```59 Adjust subsequent behavior based on maturity level:60 - **cold**: expand Phase 1 external search (WebSearch queries from 5 to 8, S2/DeepXiv limit from 20 to 30),61 skip wiki internal context loading (empty, no value), annotate "cold-start mode: heavier external search"62 - **warm**: standard behavior (current default)63 - **hot**: reduce Phase 1 external search (WebSearch queries from 5 to 2, S2/DeepXiv limit from 20 to 10),64 raise Phase 3 gap_alignment_bonus from +2 to +3, prioritize resolving weak claims already in the wiki653. **Snapshot wiki state** (for the Growth Report at the end):66 Save the JSON returned by maturity to memory variable `maturity_before`6768### Phase 1: Landscape Scan6970Goal: build a comprehensive view of the target domain, including existing work, knowledge gaps, and recent advances.71721. **Load wiki internal context**:73 - Read `wiki/graph/context_brief.md` (global compressed context)74 - Read `wiki/graph/open_questions.md` (knowledge gap list)75 - Read all `wiki/ideas/*.md`, extract:76 - status=failed ideas → **banlist** (with failure_reason)77 - status=proposed/in_progress ideas → **active list** (avoid duplication)78 - Read `wiki/claims/*.md`, find claims with status=weakly_supported or challenged → **weak claims list**79 - If `direction` is specified, filter to the relevant subset80812. **External search** (run in parallel using Agent tool):82 - **WebSearch**: search for recent 6-month papers and advances in the target direction (3–5 queries)83 - **Semantic Scholar**:84 ```bash85 python3 tools/fetch_s2.py search "<direction-keywords>" --limit 2086 ```87 Fetch details for the top 5 highly-cited papers88 - **DeepXiv semantic search**:89 ```bash90 python3 tools/fetch_deepxiv.py search "<direction-keywords>" --mode hybrid --limit 2091 ```92 Fetch TLDR and keywords for top 5 most relevant results:93 ```bash94 python3 tools/fetch_deepxiv.py brief <arxiv_id>95 ```96 Semantic search supplements S2 keyword search for conceptually related papers that keyword search may miss.97 - **DeepXiv trending papers**:98 ```bash99 python3 tools/fetch_deepxiv.py trending --days 14100 ```101 Trending papers indicate community focus areas, useful for discovering trend-driven gaps.102 - **arXiv latest**: `site:arxiv.org <direction> 2025 2026`103 - **If DeepXiv is unavailable**: skip DeepXiv search and trending, rely on S2 + WebSearch only (fallback to original behavior).1041053. **Compile landscape report** (internal use, not written to wiki):106 - Current SOTA methods and performance107 - Known open problems / unresolved challenges108 - Recent trends and hot topics109 - Knowledge gaps in the wiki (from gap_map)110 - Prohibited directions (from banlist)111112### Phase 2: Dual-Model Brainstorm113114Goal: generate ideas independently with Claude and Review LLM, exploiting the diversity that comes from different model perspectives.115116**Follow `shared-references/cross-model-review.md`**: Claude and Review LLM generate independently without seeing each other's output.1171181. **Claude generates 6–10 ideas**:119 - Input: landscape report + wiki gaps + weak claims + banlist120 - Strategies:121 - Cross-domain combination (method from Topic A + problem from Topic B)122 - Fill gaps in the gap_map123 - Strengthen weakly_supported claims124 - Alternative hypotheses that challenge challenged claims125 - Known limitations of SOTA → improvement directions126 - Each idea includes: title, hypothesis (1–2 sentences), approach sketch (3–5 sentences), target claims, estimated feasibility (high/medium/low)1271282. **Review LLM independently generates 4–6 ideas** (run in parallel):129 ```130 mcp__llm-review__chat:131 system: "You are a creative ML researcher brainstorming research ideas.132 Generate novel, concrete, and feasible ideas based on the given context.133 For each idea, provide: title, hypothesis (1-2 sentences),134 approach sketch (3-5 sentences), and feasibility assessment."135 message: |136 ## Research Landscape137 {landscape report from Phase 1 — gaps, SOTA, trends}138139 ## Knowledge Gaps140 {gap_map entries}141142 ## Banlist (DO NOT revisit these)143 {failed ideas with failure_reason}144145 ## Active Ideas (avoid duplicating)146 {proposed/in_progress ideas}147148 Generate 4-6 novel research ideas that address the gaps above.149 Focus on ideas that are: (1) genuinely novel, (2) feasible within 3-6 months,150 (3) directly address a knowledge gap.151 ```1521533. **Merge and deduplicate**:154 - Combine Claude's and Review LLM's ideas (10–16 candidates)155 - Remove highly similar ideas (merge ideas with the same core method, keep the more specific version)156 - Remove ideas that overlap with the banlist157 - Remove ideas that heavily duplicate the active list158 - Output: 8–12 candidate ideas159160### Phase 3: First-Pass Filter161162Goal: quickly eliminate ideas that are clearly infeasible or insufficiently novel.163164Apply the following checks to each candidate idea:1651661. **Feasibility check**:167 - Are GPU/compute requirements within reasonable range? (reference experiment setups already in the wiki)168 - Data availability (public datasets vs. private data)169 - Implementation complexity (achievable within 3–6 months?)170 - Label as feasibility: high/medium/low1711722. **Quick novelty screening** (2–3 WebSearch queries per idea):173 - `"<idea-core-method>" + "<task>"` exact-match search174 - `<component-1> + <component-2>` component-combination search175 - If a highly similar published work is found → eliminate or flag1761773. **Wiki alignment check**:178 - Does the idea address a known gap in the gap_map? (+score)179 - Does the idea target a weakly_supported claim? (+score)180 - Does the idea build on existing wiki knowledge? (+score)1811824. **Filter decision**:183 - Eliminate if: feasibility=low AND quick novelty screening found similar published work184 - Eliminate if: highly correlated with a failure_reason in the banlist185 - Retain if: feasibility >= medium AND not eliminated186 - Output: 4–6 surviving ideas (ranked)187188### Phase 4: Deep Validation189190(Skip if `--skip-validation` is set; proceed directly to Phase 5.)191192Apply deep validation to the top 3 ideas from Phase 3:1931941. **Call /novelty** (one at a time):195 ```196 For each top idea:197 Skill: novelty198 Args: "<idea-title-and-hypothesis>"199 ```200 Record novelty score (1–5) and recommendations2012022. **Call /review** (for top 2 ideas):203 ```204 Skill: review205 Args: "<idea-full-description>" --difficulty hard --focus method206 ```207 Record review score (1–10) and weaknesses2082093. **Composite ranking**:210 - Final score = novelty_score × 2 + review_score + gap_alignment_bonus211 - gap_alignment_bonus: +2 if the idea directly targets a gap_map entry212 - If novelty_score <= 2 → downgrade to "modify needed"213 - If review_score <= 4 → downgrade to "major issues"2142154. **If `--auto` is not set**: display ranked results in terminal, wait for user confirmation or adjustment216217### Phase 5: Write to Wiki218219Write the validated ideas to the wiki (including eliminated ideas, with their elimination reasons recorded).2202211. **Write top ideas** (status: proposed):222 For the top `--max-ideas` ideas:223 ```bash224 # generate slug225 python3 tools/research_wiki.py slug "<idea-title>"226 ```227 Create `wiki/ideas/{slug}.md` **following the CLAUDE.md ideas template exactly** (all fields required; `lint.py` enforces `status` and `priority`):228 ```yaml229 ---230 title: "<idea title>"231 slug: "<idea-slug>"232 status: proposed233 origin: "ideate: <short description of the driving gap / weak claim / paper>"234 origin_gaps: [] # [[claim-slug]] list — claims or topics this idea targets235 tags: [] # 2-5 topic tags (inherit from target claims / direction)236 domain: "" # NLP / CV / ML Systems / Robotics (inherit from direction)237 priority: 3 # 1-5 — see Priority computation below238 pilot_result: "" # empty until /exp-eval fills it239 failure_reason: "" # empty for proposed ideas240 linked_experiments: [] # empty until /exp-design creates experiments241 date_proposed: YYYY-MM-DD242 date_resolved: "" # empty until validated/failed243 ---244 ```245246 **Priority computation** (maps Phase 4 signals into the 1-5 scale):247 - If `--skip-validation`: default `priority = 3`248 - Otherwise start from `novelty_score` (1-5 from /novelty)249 - `+1` if `gap_alignment_bonus > 0` (directly targets a gap_map entry)250 - `-1` if `review_score <= 4` (major issues downgrade)251 - Clamp to `[1, 5]`252253 **Body sections** (exactly match the CLAUDE.md template — do not rename):254 ```markdown255 ## Motivation256 Which gap / weakly_supported claim / paper limitation drives this idea. Reference wiki pages via `[[slug]]`.257258 ## Hypothesis259 1-2 sentences stating the testable proposition.260261 ## Approach sketch262 3-5 sentences on the proposed method. Reference `[[paper-slug]]` or `[[concept-slug]]` for any component borrowed from existing work.263264 ## Expected outcome265 What success looks like (metric / claim status change), plus the Phase 4 novelty & review summary:266 - Novelty score: N/5 — <one-line reason from /novelty>267 - Review score: M/10 — <one-line summary from /review>268269 ## Risks270 Feasibility rating (high/medium/low) + top 2-3 risks. Include the main weaknesses surfaced by /review.271272 ## Pilot results273 (empty — filled by /exp-eval after running the experiment)274275 ## Lessons learned276 (empty — filled by /exp-eval after the idea reaches a terminal status)277 ```2782792. **Write eliminated ideas** (status: failed):280 For ideas eliminated in Phase 3/4, also create `wiki/ideas/{slug}.md` using the **same template above**, with these overrides:281 - `status: failed`282 - `priority: 1` (eliminated ideas never block higher-priority work)283 - `date_resolved: YYYY-MM-DD` (today)284 - `failure_reason: "[filter] <specific elimination reason>"` — the `[filter]` prefix distinguishes ideate-stage eliminations from post-experiment failures (which /exp-eval tags differently). Examples: `"[filter] highly similar published work exists: <paper-title>"`, `"[filter] insufficient feasibility: GPU requirements too high"`285 - Body `## Motivation` and `## Hypothesis` should still be filled (so future banlist matching has content); `## Approach sketch` may be brief; `## Expected outcome` and `## Risks` can note why the idea was eliminated286 - These failed ideas become the banlist for future ideate runs2872883. **Add graph edges**:289 ```bash290 # for each idea291 python3 tools/research_wiki.py add-edge wiki/ \292 --from "ideas/{slug}" --to "claims/{target-claim}" \293 --type addresses_gap --evidence "Generated by ideate"294295 python3 tools/research_wiki.py add-edge wiki/ \296 --from "ideas/{slug}" --to "papers/{source-paper}" \297 --type inspired_by --evidence "Inspired by method in {paper-title}"298 ```2993004. **Rebuild derived data**:301 ```bash302 python3 tools/research_wiki.py rebuild-context-brief wiki/303 python3 tools/research_wiki.py rebuild-open-questions wiki/304 ```3053065. **Append log**:307 ```bash308 python3 tools/research_wiki.py log wiki/ \309 "ideate | {N} ideas proposed, {M} ideas filtered out | direction: {direction}"310 ```3113126. **Print IDEA_REPORT to terminal**:313 ```markdown314 # Idea Generation Report315316 ## Pipeline Summary317 - Direction: {direction}318 - Phase 1: Scanned {N} external papers, {M} wiki gaps identified319 - Phase 2: Generated {X} candidates (Claude: {a}, Review LLM: {b})320 - Phase 3: {Y} survived initial filter (from {X})321 - Phase 4: Deep validation on top {Z}322 - Phase 5: {K} ideas written to wiki323324 ## Top Ideas (ranked)325326 | Rank | Idea | Novelty | Review | Gap Align | Status |327 |------|------|---------|--------|-----------|--------|328 | 1 | [[slug]] | 4/5 | 7/10 | +2 | proposed |329 | 2 | [[slug]] | 3/5 | 6/10 | +0 | proposed |330331 ## Filtered Out332 | Idea | Reason | Status |333 |------|--------|--------|334 | [[slug]] | Similar published work exists | failed |335 | [[slug]] | GPU requirements too high | failed |336337 ## Suggested Next Steps338 - Run `/exp-design {top-idea-slug}` to design experiments339 - Run `/novelty` on any idea before investing time340341 ## Wiki Growth342 | Metric | Before | After | Delta |343 |--------|--------|-------|-------|344 | Papers | {before} | {after} | +{delta} |345 | Claims | {before} | {after} | +{delta} |346 | Ideas | {before} | {after} | +{delta} |347 | Edges | {before} | {after} | +{delta} |348 | Maturity | {before_level} | {after_level} | {unchanged/upgraded} |349 (Only rows with delta != 0 are shown. Data is computed by comparing `maturity_before` from the pre-condition step against a fresh `maturity --json` call here.)350 ```351352## Constraints353354- **Auto-switch to cold-start mode when wiki is cold**: expand external search (WebSearch 8 queries, S2/DeepXiv limit 30), do not block execution355- **Every idea must have wiki grounding**: each idea must reference at least 2 wiki pages (paper/concept/claim)356- **Banlist must be loaded**: Phase 1 must read failed ideas' failure_reason; Phase 2/3 must check for overlap357- **Review LLM independence**: in Phase 2, Review LLM does not see Claude's idea list (cross-model-review.md)358- **Eliminated ideas are also written to wiki**: status=failed + failure_reason, as anti-repetition memory359- **No fabrication**: all ideas must be derived from existing wiki knowledge or external search results; do not invent non-existent papers or methods360- **Slug uniqueness**: check whether the same slug already exists in wiki/ideas/ before creating361- **Graph edges via tools/research_wiki.py**: do not manually edit edges.jsonl362363## Error Handling364365- **Wiki is empty**: proceed with external search (Phase 1 sources B/C/D), but skip wiki internal context; prompt user to build the knowledge base first366- **WebSearch unavailable**: skip external search, generate ideas from wiki internal knowledge only (degraded mode, noted in report)367- **Semantic Scholar API unavailable**: skip S2 search, rely on DeepXiv + WebSearch for compensation368- **DeepXiv API unavailable**: skip DeepXiv search and trending, fall back to S2 + WebSearch (original behavior)369- **Review LLM unavailable**: Phase 2 uses Claude only (no dual-model diversity, noted in report)370- **/novelty fails**: if novelty fails for a single idea in Phase 4, mark "novelty unverified" and continue371- **/review fails**: if review fails in Phase 4, mark "unreviewed" and continue; recommend user manually runs /review372- **Slug conflict**: if the same slug already exists in wiki/ideas/, append a numeric suffix (e.g. `sparse-lora-v2`)373- **All ideas eliminated**: still write to wiki (status: failed); report recommends user broaden the search direction or /ingest more papers374375## Dependencies376377### Tools(via Bash)378- `python3 tools/research_wiki.py maturity wiki/ --json` — check wiki maturity + Growth Report379- `python3 tools/research_wiki.py slug "<title>"` — generate slug380- `python3 tools/research_wiki.py add-edge wiki/ ...` — add graph edge381- `python3 tools/research_wiki.py rebuild-context-brief wiki/` — rebuild query_pack382- `python3 tools/research_wiki.py rebuild-open-questions wiki/` — rebuild gap_map383- `python3 tools/research_wiki.py log wiki/ "<message>"` — append log384- `python3 tools/fetch_s2.py search "<query>" --limit 20` — Semantic Scholar search385- `python3 tools/fetch_deepxiv.py search "<query>" --mode hybrid --limit 20` — DeepXiv semantic search386- `python3 tools/fetch_deepxiv.py brief <arxiv_id>` — fetch paper TLDR387- `python3 tools/fetch_deepxiv.py trending --days 14` — trending paper trends388389### Skills(via Skill tool)390- `/novelty` — Phase 4 deep novelty validation391- `/review` — Phase 4 cross-model review392393### MCP Servers394- `mcp__llm-review__chat` — Phase 2 Review LLM independent brainstorm395396### Claude Code Native397- `WebSearch` — Phase 1 external search, Phase 3 quick novelty screening398- `Agent` tool — Phase 1 parallel search, Phase 2 parallel brainstorm399400### Shared References401- `.claude/skills/shared-references/cross-model-review.md` — Phase 2 Review LLM independence principle