Claude-skill-registry bookstrap-plan-research
Analyze BRD and existing corpus to identify knowledge gaps, then generate prioritized research tasks for filling those gaps
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/bookstrap-plan-research" ~/.claude/skills/majiayu000-claude-skill-registry-bookstrap-plan-research && rm -rf "$T"
skills/data/bookstrap-plan-research/SKILL.md/bookstrap-plan-research - Identify Knowledge Gaps
Analyze the Book Requirements Document (BRD) against the existing research corpus to identify knowledge gaps and generate prioritized research tasks.
Purpose
Compare what the book requires (from BRD) with what knowledge currently exists in the database (from prior ingestion). Generate a prioritized list of research tasks that will fill the identified gaps before writing begins.
This command delegates the analysis work to the
corpus-analyst agent.
Input Arguments
None. This command reads from the database:
- BRD content and requirements
- Existing sources and their coverage
- Entities already extracted
- Current knowledge gaps
Processing Workflow
1. Load BRD Requirements
Query the database to retrieve the Book Requirements Document:
# Query BRD from database surreal sql --conn http://localhost:2665 \ --user root --pass root \ --ns bookstrap --db <database-name> \ --query "SELECT * FROM brd ORDER BY version DESC LIMIT 1;"
Extract key requirements:
- Planned chapters and sections
- Key concepts, characters, locations, events
- Research areas specified in BRD
- Genre-specific knowledge needs
- Target audience and depth requirements
2. Query Existing Corpus Coverage
Analyze what knowledge already exists in the database:
-- Coverage by chapter/topic SELECT chapter, count() as sources FROM section->cites->source GROUP BY chapter; -- Entity coverage SELECT name, count() as mentions FROM concept<-related_to<-source GROUP BY name; -- Existing knowledge gaps (unresolved) SELECT * FROM knowledge_gap WHERE resolved = false ORDER BY created_at; -- Source distribution by type SELECT source_type, count() as total FROM source GROUP BY source_type; -- Timeline coverage SELECT sequence, count() as events FROM event GROUP BY sequence;
3. Compare BRD Against Corpus
For each chapter/topic/concept in the BRD:
- Check if sufficient sources exist in the database
- Identify entities mentioned in BRD but missing from corpus
- Find topics with low source coverage
- Detect chronological gaps in timeline
- Flag concepts lacking supporting evidence
4. Generate Prioritized Research Tasks
Create research tasks with priorities based on:
High Priority:
- Core plot/argument elements with no sources
- Main characters/concepts missing from corpus
- Critical events lacking documentation
- Topics that block multiple writing tasks
Medium Priority:
- Supporting details with thin coverage
- Secondary characters/locations needing depth
- Background context for credibility
- Genre-specific atmosphere/accuracy needs
Low Priority:
- Optional enrichment details
- Tangential background information
- Nice-to-have but not essential
5. Store Tasks in Database
For each research task, create a database record:
CREATE knowledge_gap SET question = $research_question, context = $why_needed, priority = $priority_level, chapter_blocking = $chapters_affected, resolved = false, created_at = time::now() ;
6. Delegate to Corpus Analyst
Invoke the
corpus-analyst agent to perform the detailed gap analysis:
# Load corpus-analyst agent with context # Agent will: # 1. Read BRD from database # 2. Execute coverage queries # 3. Perform gap analysis # 4. Generate prioritized research tasks # 5. Store tasks in database # 6. Generate report
The corpus-analyst agent has read-only database access and uses the
corpus-analysis and surrealdb skills.
Output Format
Report generated research tasks to the user:
KNOWLEDGE GAP ANALYSIS ====================== BRD: <Book Title> Corpus: <N> sources, <M> entities COVERAGE ANALYSIS ----------------- High Coverage: ✓ Chapter 1: Introduction (8 sources, 15 entities) ✓ Concept: SOE Training (12 sources) Medium Coverage: ~ Chapter 3: Lyon Operation (3 sources, 8 entities) ~ Location: Lyon Safehouse (2 sources) Low/No Coverage: ✗ Chapter 5: Wireless Protocols (0 sources) ✗ Event: Gestapo Raid 1943 (0 sources) ✗ Character: Marie Dubois (mentioned in BRD, not in corpus) RESEARCH TASKS GENERATED: 12 ============================= HIGH PRIORITY (4 tasks) ----------------------- 1. SOE wireless operator training protocols 1942-1943 Why: Core to protagonist's role, zero sources Blocks: Chapters 2, 4, 6 2. Lyon Resistance network structure and key figures Why: Primary setting, only 2 tangential sources Blocks: Chapters 3, 5, 7 3. Gestapo counter-intelligence methods in Lyon 1943 Why: Antagonist strategy, no documentation Blocks: Chapters 5, 8 4. Daily life details in occupied Lyon (food, curfews, rationing) Why: Atmosphere and authenticity, minimal coverage Blocks: Chapters 3, 4, 5, 7 MEDIUM PRIORITY (5 tasks) ------------------------- 5. SOE Beaulieu training facility layout and procedures 6. Wireless set types used by F Section agents 7. Lyon geography and landmarks 1943 8. French Resistance communication codes 9. Black market operations in wartime Lyon LOW PRIORITY (3 tasks) ---------------------- 10. Fashion and clothing styles 1943 France 11. Popular culture and entertainment during occupation 12. Weather patterns in Lyon region NEXT STEPS ---------- Run /bookstrap-research to execute these tasks autonomously. Use /bookstrap-status to monitor progress.
Statistics to Track
Calculate and report:
- Total chapters planned vs. covered
- Entities in BRD vs. entities in corpus
- Source count per major topic
- Percentage of BRD requirements met
- Number of high/medium/low priority gaps
- Estimated research tasks needed
Implementation Notes
Agent Delegation
This command is a thin wrapper that:
- Verifies database connection
- Checks that BRD exists
- Invokes the
agentcorpus-analyst - Displays the agent's output
The actual analysis logic lives in the
corpus-analyst agent to keep concerns separated.
Gap Detection Strategies
The corpus-analyst uses multiple approaches:
- Keyword matching: BRD entities vs. database entities
- Semantic search: BRD concepts vs. source embeddings
- Graph analysis: Required relationships missing from graph
- Timeline gaps: Chronological holes in event sequence
- Citation density: Sections with claims but no sources
Idempotency
Re-running
/bookstrap-plan-research should:
- Update existing gaps if BRD changed
- Add new gaps if corpus changed
- Not duplicate existing unresolved gaps
- Re-prioritize based on current state
Configuration
Gap detection thresholds can be configured in
bookstrap.config.json:
{ "gap_detection": { "min_sources_per_chapter": 5, "min_sources_per_concept": 2, "high_priority_threshold": 0, "medium_priority_threshold": 2 } }
Error Handling
| Error | Recovery |
|---|---|
| BRD not found | Abort with message to run first |
| Database connection failed | Abort with message to start SurrealDB |
| No corpus exists | Warning that all BRD requirements are gaps, generate exhaustive research plan |
| Corpus-analyst agent error | Display error, suggest re-running or checking logs |
Pre-requisites
Before running
/bookstrap-plan-research:
- BRD created:
must have been run/bookstrap-init - SurrealDB running: Database must be accessible
- Schema initialized: Database schema loaded
- Initial corpus ingested (optional):
provides baseline, but can run on empty corpus/bookstrap-ingest
Related Commands
- Create BRD/bookstrap-init
- Load initial corpus/bookstrap-ingest
- Execute research tasks generated by this command/bookstrap-research
- View gap resolution progress/bookstrap-status
- Generate writing tasks after gaps filled/bookstrap-plan-write
Supporting Agents
| Agent | Role |
|---|---|
| Performs gap analysis, generates research tasks |
Supporting Skills
| Skill | Purpose |
|---|---|
| Gap detection strategies and coverage analysis |
| Database query patterns for coverage analysis |
Example Usage
# After initial ingestion, identify what's missing /bookstrap-plan-research # Re-run after additional ingestion to update gap list /bookstrap-ingest ./more-sources/ /bookstrap-plan-research # Check gaps before starting to write /bookstrap-plan-research /bookstrap-status
Integration with Research Loop
This command is part of the research cycle:
init → ingest → plan-research → research ↑ │ └──────────────┘ (iterate until gaps resolved)
Once gaps are identified,
/bookstrap-research executes the tasks autonomously. If new gaps are discovered during writing, re-run this command to generate new research tasks.