Skip to content
Back to skills

Thoughtbox Research

ASecurity

Structured research using Thoughtbox IRCoT (Interleaved Retrieval and Chain-of-Thought). Triggers on: "research", "investigate", "explore", "literature review", "what do we know about".

  • 64 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 6, 2026
ai-agentsjavascriptjavabashnodeapi

Works with

  • api

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add Kastalien-Research/thoughtbox --skill thoughtbox-research --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Thoughtbox Research?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Thoughtbox Research
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kastalien-research-thoughtbox-research-thoughtbox/badge)](https://www.skillsdirectory.com/skills/kastalien-research-thoughtbox-research-thoughtbox)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: thoughtbox:research
description: >
  Structured research using Thoughtbox IRCoT (Interleaved Retrieval and
  Chain-of-Thought). Triggers on: "research", "investigate", "explore",
  "literature review", "what do we know about".
argument-hint: "[research question or topic]"
user-invocable: true
allowed-tools: Read, Glob, Grep, Bash, ToolSearch, WebFetch, WebSearch
---

Research this topic using Thoughtbox IRCoT: $ARGUMENTS

## Protocol References

- Cipher notation for long sessions: `thoughtbox://cipher`
- IRCoT pattern background: `thoughtbox://interleaved/research`

## Phase 1: Setup

Create a Thoughtbox session and assess available tools.

```javascript
// thoughtbox_execute
async () => {
  await tb.thought({
    thought: "Research question: $ARGUMENTS. Available search tools: [list from ToolSearch]. Strategy: breadth-first scan, then depth on promising leads.",
    thoughtType: "context_snapshot",
    nextThoughtNeeded: true,
    thoughtNumber: 1,
    totalThoughts: 30,
    sessionTitle: "Research: $ARGUMENTS",
    sessionTags: ["research"],
    contextData: {
      toolsAvailable: [],
      constraints: ["primary sources preferred"]
    }
  });
}
```

Steps:
1. Use ToolSearch to discover available search tools (Exa, WebSearch, WebFetch, Grep, Read).
2. Record thought 1 as `context_snapshot`: state the research question, available tools, constraints.
3. If no search tools are available, note the limitation and rely on codebase/knowledge graph only.

## Phase 2: IRCoT Loop (Think, Search, Integrate, Repeat)

Run this cycle until the question is answered or no productive search avenues remain.

### 2a: Reason

Record a `reasoning` thought: what do I need to find out next? What gaps remain?

```javascript
// thoughtbox_execute
async () => {
  await tb.thought({
    thought: "Gap: I know X but not Y. Next search: [specific query]. Rationale: [why this fills the gap].",
    thoughtType: "reasoning",
    nextThoughtNeeded: true,
    thoughtNumber: N,
    totalThoughts: 30
  });
}
```

### 2b: Search

Use the best available tool for the current sub-question:
- **Exa / WebSearch**: external knowledge, recent publications, API docs
- **Grep / Glob / Read**: codebase evidence, local files, prior research
- **Knowledge graph**: `tb.knowledge.searchEntities()` for prior Thoughtbox findings

### 2c: Integrate

Record findings as a `reasoning` thought with evidence references. Include source URLs or file paths.

```javascript
// thoughtbox_execute
async () => {
  await tb.thought({
    thought: "Finding: [what was learned]. Source: [url/path]. Confidence: [high/medium/low]. Implication: [how this changes understanding].",
    thoughtType: "reasoning",
    nextThoughtNeeded: true,
    thoughtNumber: N,
    totalThoughts: 30
  });
}
```

### 2d: Synthesis Checkpoint (every 10-15 thoughts)

Consolidate findings so far. Identify contradictions, gaps, and next priorities.

```javascript
// thoughtbox_execute
async () => {
  await tb.thought({
    thought: "Synthesis at thought N: [summary of key findings]. Contradictions: [if any]. Remaining gaps: [list]. Priority for next cycle: [specific question].",
    thoughtType: "synthesis",
    nextThoughtNeeded: true,
    thoughtNumber: N,
    totalThoughts: 30
  });
}
```

### Loop Exit Criteria

Stop the IRCoT loop when ANY of these hold:
- The research question is answered with sufficient evidence
- No more productive search avenues exist
- Thought budget (totalThoughts) is exhausted

## Phase 3: Knowledge Persistence

Bridge findings into the Thoughtbox knowledge graph for future retrieval.

For each key finding:

```javascript
// thoughtbox_execute
async () => {
  const entity = await tb.knowledge.createEntity({
    name: "Finding: [concise label]",
    entityType: "Insight",
    observations: [
      "[key claim]. Source: [url/path]. Confidence: [level]."
    ]
  });

  // Link related findings
  await tb.knowledge.createRelation({
    from: entity.id,
    to: relatedEntityId,
    relationType: "BUILDS_ON"
  });
}
```

Relation types to use:
- `BUILDS_ON` — finding extends or deepens another
- `CONTRADICTS` — finding conflicts with another
- `RELATES_TO` — thematic connection without causal link
- `SUPPORTS` — finding provides evidence for another

Add observations with source attribution to every entity.

## Phase 4: Delivery

### 4a: Conclusion

Record a final thought closing the session.

```javascript
// thoughtbox_execute
async () => {
  await tb.thought({
    thought: "Conclusion: [answer to original question]. Key evidence: [top 3 sources]. Confidence: [overall level]. Open questions: [if any].",
    thoughtType: "conclusion",
    nextThoughtNeeded: false,
    thoughtNumber: N,
    totalThoughts: N
  });
}
```

### 4b: Export

Present findings to the user as structured markdown:
- **Question**: the original research question
- **Answer**: concise answer (2-3 sentences)
- **Evidence**: numbered list of key findings with sources
- **Confidence**: overall assessment with reasoning
- **Open Questions**: what remains unanswered

### 4c: Extract Learnings

If the session produced reusable insights, extract them.

```javascript
// thoughtbox_execute
async () => {
  const analysis = await tb.session.analyze();
  if (analysis.insightDensity > 0.3) {
    await tb.session.extractLearnings();
  }
}
```

## Anti-Patterns

- **Searching without reasoning first** — always record what you expect to find before searching.
- **Recording every intermediate step** — only record findings that change understanding.
- **Skipping synthesis checkpoints** — drift compounds; synthesize every 10-15 thoughts.
- **Orphan knowledge** — every entity needs at least one relation. Isolated nodes are unfindable.
- **Premature conclusion** — do not conclude until you have checked for contradictory evidence.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.