Claude-skill-registry bookstrap-research-path
Execute research workflow orchestration - processes pending research tasks sequentially
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
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-research-path" ~/.claude/skills/majiayu000-claude-skill-registry-bookstrap-research-path && rm -rf "$T"
manifest:
skills/data/bookstrap-research-path/SKILL.mdsource content
Research Path Orchestrator
Execute the research workflow end-to-end, processing pending research tasks sequentially.
What It Does
This orchestrator command:
- Queries pending research tasks from the database
- Invokes the researcher agent for each task sequentially
- Verifies gap resolution after each source ingestion
- Tracks progress and handles failures
- Reports completion statistics
Usage
/bookstrap-research-path
Optional Parameters
/bookstrap-research-path --max-tasks 5 /bookstrap-research-path --priority high /bookstrap-research-path --gap-id gap_123
Workflow
1. Query Pending Research Tasks
SELECT * FROM task WHERE type = 'research' AND status = 'pending' ORDER BY priority DESC, created_at ASC LIMIT $max_tasks;
2. For Each Task
a. Mark Task In Progress
TaskUpdate: {taskId: "[task-id]", status: "in_progress"}
b. Invoke Researcher Agent
Skill: {skill: "researcher", args: "--task-id [task-id]"}
The researcher agent will:
- Search for sources
- Evaluate reliability
- Ingest content
- Extract entities
- Create relationships
- Resolve knowledge gap
c. Verify Gap Resolution
After researcher completes, verify the gap was adequately resolved:
from scripts.researcher_methods import ResearcherMethods verification_queries = [ { 'query': "SELECT * FROM source WHERE id = $source_id", 'min_results': 1, 'description': 'Source was created' }, { 'query': "SELECT * FROM chunk WHERE source = $source_id", 'min_results': 3, 'description': 'Sufficient chunks created' }, { 'query': "SELECT * FROM [character, location, event, concept] WHERE ->supports<-source.id = $source_id", 'min_results': 1, 'description': 'Entities extracted' } ] is_resolved, issues = researcher.verify_gap_resolution(gap_id, verification_queries)
d. Update Task Status
If verification passes:
TaskUpdate: {taskId: "[task-id]", status: "completed"}
If verification fails:
TaskUpdate: {taskId: "[task-id]", status: "blocked", metadata: {issues: [...]}}
3. Report Progress
After processing all tasks, report:
RESEARCH PATH COMPLETE ====================== Tasks processed: [count] Tasks completed: [count] Tasks blocked: [count] Total sources ingested: [count] Total entities extracted: [count] Knowledge gaps resolved: [count] NEXT STEPS ---------- - Run /bookstrap-status to see updated project state - Run /bookstrap-plan-write to generate writing tasks - Run /bookstrap-write to begin writing grounded in new research
Error Handling
Task Blocked
If a research task cannot be completed:
- Mark task as
with reasonblocked - Continue to next task
- Report blocked tasks at end
API Rate Limits
If search API rate limit hit:
- Wait appropriate backoff period
- Retry task
- If still failing, mark as blocked
No Sources Found
If no reliable sources found after thorough search:
- Mark task as blocked
- Suggest alternative research strategies
- Recommend manual research
Configuration
Respects settings from
bookstrap.config.json:
{ "orchestration": { "research_path": { "max_tasks_per_run": 10, "require_verification": true, "continue_on_error": true, "min_source_reliability": "medium" } } }
Example Output
Starting research path orchestration... Processing task 1 of 3: "SOE training protocols 1943" ├─ Searching for sources... ├─ Found 3 candidate sources ├─ Evaluating reliability... ├─ Ingesting: "The Secret History of SOE" (high reliability) ├─ Extracting entities... 12 entities found ├─ Creating relationships... 8 relationships created ├─ Verifying gap resolution... PASSED └─ Task completed ✓ Processing task 2 of 3: "Wireless operator equipment specifications" ├─ Searching for sources... ├─ Found 1 candidate source ├─ Evaluating reliability... ├─ Ingesting: "SOE Equipment Manual 1943" (high reliability) ├─ Extracting entities... 5 entities found ├─ Creating relationships... 3 relationships created ├─ Verifying gap resolution... PASSED └─ Task completed ✓ Processing task 3 of 3: "French resistance network structure Lyon" ├─ Searching for sources... ├─ Found 0 reliable sources ├─ Task marked as BLOCKED └─ Reason: No sources found meeting reliability threshold RESEARCH PATH COMPLETE ====================== Tasks processed: 3 Tasks completed: 2 Tasks blocked: 1 Total sources ingested: 2 Total entities extracted: 17 Knowledge gaps resolved: 2 BLOCKED TASKS ------------- - Task 3: "French resistance network structure Lyon" Reason: No sources found meeting reliability threshold Suggestion: Try more specific search terms or lower reliability threshold NEXT STEPS ---------- Run /bookstrap-plan-write to generate writing tasks using new research
Integration with Other Commands
Before
- Generate research tasks to feed this orchestrator/bookstrap-plan-research
After
- Check updated corpus state/bookstrap-status
- Verify specific knowledge is now available/bookstrap-query
- Generate writing tasks grounded in research/bookstrap-plan-write
- Begin writing with full knowledge coverage/bookstrap-write
Best Practices
- Run plan-research first to generate research tasks
- Process in batches if many tasks (use --max-tasks)
- Monitor for blocked tasks and resolve manually if needed
- Verify knowledge coverage before proceeding to writing
- Commit after completion to save research progress
Implementation Notes
This orchestrator is implemented as a skill that:
- Uses
to find pending research tasksTaskList - Invokes
agent skill for each taskresearcher - Uses
for verificationresearcher_methods.py - Updates tasks using
TaskUpdate - Reports progress to user
The orchestrator does NOT run research itself - it coordinates the researcher agent.