name: bookstrap-research-path description: Execute research workflow orchestration - processes pending research tasks sequentially invoke: skill category: orchestration
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
blockedwith reason - 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
/bookstrap-plan-research- Generate research tasks to feed this orchestrator
After
/bookstrap-status- Check updated corpus state/bookstrap-query- Verify specific knowledge is now available/bookstrap-plan-write- Generate writing tasks grounded in research/bookstrap-write- Begin writing with full knowledge coverage
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
TaskListto find pending research tasks - Invokes
researcheragent skill for each task - Uses
researcher_methods.pyfor verification - Updates tasks using
TaskUpdate - Reports progress to user
The orchestrator does NOT run research itself - it coordinates the researcher agent.