Skip to content
/

research-kit (nguyenvanduocit)

research-kit-nguyenvanduocit · nguyenvanduocit/research-kit · ★ 19 · last commit 2026-03-17

Adapts the spec-kit SDD workflow for systematic 10-phase AI-guided research with source provenance tracking and BibTeX citations.

Best whenAI research is only defensible when every claim cites a locally-downloaded source file at a specific line number — never a URL directly.
Skip ifCiting URLs directly without downloading source, Single-shot research queries without phase structure
vs seeds
spec-kit's command-per-phase pattern an…
Primitive shape 18 total
Commands 11 Skills 1 Subagents 6
00

Summary

research-kit (nguyenvanduocit) — Summary

research-kit is a Spec-Kit fork that adapts the Specification-Driven Development (SDD) workflow for systematic research rather than software development. Created by nguyenvanduocit, it provides a research CLI tool (Python, pyproject.toml entry point) that bootstraps research projects with 11 slash commands (/research.define, /research.methodology, /research.execute, etc.), 6 agent persona markdown files, 1 Claude Code SKILL.md orchestrator, and 11 bash scripts. The 10-phase workflow (Principles → Define → Refine → Methodology → Validate → Tasks → Execute → Analyze → Synthesize → Publish) maps SDD's spec lifecycle onto an academic/market research lifecycle. The fork explicitly adopts GitHub branches as research topic containers (each topic lives on its own numbered branch like 5-ai-healthcare-trends). 19 stars, 30 contributors, last pushed March 2026.

differs_from_seeds: Closest to spec-kit (seed) — forks its command-based SDD workflow structure and mirrors the pattern of 11 slash commands with matching phases. The key delta: research-kit replaces spec-kit's code-development phases (requirements → design → tasks → implement) with research-specific phases (define → methodology → execute → analyze → synthesize → publish), adds citation management (BibTeX), source download scripts (download-source.sh), and a Python CLI (research init) instead of spec-kit's Python CLI for project scaffolding. Unlike spec-kit's 18 hooks, research-kit has zero Claude Code hooks — commands are the only activation surface.

01

Overview

research-kit (nguyenvanduocit) — Overview

Origin

Created by nguyenvanduocit (GitHub: nguyenvanduocit/research-kit). A fork of the spec-kit repository by GitHub. MIT license. 19 stars, 30 contributors, last pushed March 2026. Version 1.0.20.

The README states explicitly:

"Research Kit is a fork of Spec Kit by GitHub, originally built as a personal project to adapt the Specification-Driven Development (SDD) workflow for systematic research."

Philosophy

The project's manifesto is a direct application of structured prompting theory:

"AI agents perform significantly better when guided by multiple structured phases and template constraints. Instead of asking an AI to 'do research' in a single open-ended prompt, Research Kit breaks the process into 10 distinct phases, each with its own template, quality standards, and output expectations. This structured approach: Reduces hallucination by constraining AI output to specific, well-defined templates at each phase; Improves consistency by enforcing the same methodology across different research topics; Enables quality control by making each phase reviewable before proceeding to the next."

Key Differences from Spec-Kit (upstream)

Documented in docs/the-fork.md:

  • Research phases replace development phases
  • BibTeX citation management added
  • Source download scripts added (download-source.sh — downloads and embeds source URLs)
  • research.define creates a numbered git branch + directory
  • Multiple research types: academic, market/business, technical, general

Who It's For

Researchers, business analysts, technical writers, consultants, students, product managers — anyone needing "defensible conclusions backed by documented sources and transparent methodology."

02

Architecture

research-kit (nguyenvanduocit) — Architecture

Distribution

  • Type: cli-tool (Python) + command-pack
  • Install: pip install research-cli or uv run research init <project-name>
  • Runtime: Python 3.11+, uv
  • License: MIT

Directory Structure

research-kit/
├── src/research_cli/             # Python CLI source
├── templates/
│   ├── commands/                 # 11 slash command md files
│   │   ├── analyze.md
│   │   ├── define.md
│   │   ├── execute.md
│   │   ├── methodology.md
│   │   ├── principles.md
│   │   ├── publish.md
│   │   ├── quality.md
│   │   ├── refine.md
│   │   ├── synthesize.md
│   │   ├── tasks.md
│   │   ├── validate.md
│   │   └── research/             # research orchestrator command
│   ├── skills/
│   │   └── research/SKILL.md     # SRD orchestrator skill
│   ├── agents/                   # 6 agent persona md files
│   │   ├── agent-research-assistant.md
│   │   ├── agent-research-reviewer.md
│   │   ├── agent-literature-specialist.md
│   │   ├── agent-analysis-expert.md
│   │   ├── agent-data-collector.md
│   │   └── agent-academic-writer.md
│   ├── bash/                     # Bash scripts deployed to research projects
│   ├── research-definition-template.md
│   ├── methodology-template.md
│   ├── analysis-template.md
│   ├── synthesis-template.md
│   ├── tasks-template.md
│   ├── execution-template.md
│   ├── literature-review-template.md
│   ├── presentation-template.md
│   ├── checklist-template.md
│   └── references.bib            # BibTeX template
├── scripts/bash/                 # Core deployment scripts
│   ├── check-prerequisites.sh
│   ├── common.sh
│   ├── create-new-research.sh
│   ├── download-source.sh
│   ├── quality-gate.sh
│   ├── setup-analysis.sh
│   ├── setup-execution.sh
│   ├── setup-methodology.sh
│   ├── setup-publish.sh
│   ├── setup-synthesis.sh
│   └── update-agent-context.sh
├── pyproject.toml                # Python package config
├── CLAUDE.md                     # Agent context
└── AGENTS.md                     # Multi-agent guidance

Generated Research Project Structure

After research init <project-name>:

my-research/
├── .claude/commands/research/    # 11 slash commands installed
├── .claude/skills/research/      # SRD orchestrator skill
├── .claude/agents/               # 6 specialized agents
├── scripts/bash/                 # Bash helper scripts
├── research/                     # Research topics (numbered branches)
│   └── 1-ai-healthcare-trends/
│       ├── definition.md
│       ├── methodology.md
│       ├── tasks.md
│       ├── execution.md
│       ├── analysis.md
│       ├── synthesis.md
│       └── publications/
├── sources/                      # Downloaded sources
│   ├── web/                      # Web articles (download-source.sh output)
│   └── papers/                   # Academic papers
├── data/                         # Collected datasets
└── references.bib                # BibTeX citations

Target AI Tools

  • Claude Code (primary — .claude/commands/, .claude/skills/)
  • Codex CLI (alternative install path)
03

Components

research-kit (nguyenvanduocit) — Components

CLI Tool

Binary Entry Point Purpose
research research_cli:main (Python) Initialize research projects, detect AI agent, deploy templates

Subcommands:

  • research init <name> — creates research project with templates + commands
  • research init <name> --ai claude — Claude Code–specific install
  • research init <name> --ai codex — Codex CLI–specific install
  • research check — validates prerequisites

Slash Commands (11 — in templates/commands/)

Command Phase Purpose
/research.principles 1 Establish quality standards and ethical guidelines
/research.define 2 Define research question, create branch, create definition.md
/research.refine 3 (optional) Clarify ambiguities, sharpen focus
/research.methodology 4 Design research approach, create methodology.md
/research.validate 5 (optional) Review feasibility, identify issues
/research.tasks 6 Break down into executable activities, create tasks.md
/research.execute 7 Conduct research, download sources, create execution.md
/research.analyze 8 Process data, create analysis.md
/research.synthesize 9 Draw conclusions, create synthesis.md
/research.publish 10 Create publication outputs, populate publications/
research (orchestrator) Meta Auto-detect state, suggest next command

Skill (1 — templates/skills/research/SKILL.md)

SRD orchestrator skill — detects current research state by scanning for artifact files, presents state, suggests next command.

Agent Personas (6 — in templates/agents/)

Agent Role
agent-research-assistant.md Full SRD workflow orchestrator
agent-research-reviewer.md Quality assurance specialist
agent-literature-specialist.md Literature review expert
agent-analysis-expert.md Data analysis specialist
agent-data-collector.md Data collection specialist
agent-academic-writer.md Academic writing specialist

Bash Scripts (11 — in scripts/bash/)

Script Purpose
create-new-research.sh Creates numbered research branch + directory
download-source.sh Downloads web content with URL embedding
setup-methodology.sh Creates methodology directory structure
setup-execution.sh Prepares execution environment
setup-analysis.sh Sets up analysis directory
setup-synthesis.sh Sets up synthesis output
setup-publish.sh Prepares publication directory
quality-gate.sh Runs quality checks
update-agent-context.sh Updates agent CLAUDE.md context files
check-prerequisites.sh Validates required tools
common.sh Shared utilities

Templates (10+)

research-definition-template.md, methodology-template.md, analysis-template.md, synthesis-template.md, tasks-template.md, execution-template.md, literature-review-template.md, presentation-template.md, checklist-template.md, references.bib

05

Prompts

research-kit (nguyenvanduocit) — Prompts

Excerpt 1 — /research.define Command

From templates/commands/define.md:

---
description: Create or update the research definition from a natural language research topic description.
scripts:
  sh: scripts/bash/create-new-research.sh --json "{ARGS}"
---

Given that research topic description, do this:

1. **Generate a concise short name** (2-4 words) for the branch:
   - Analyze the research description and extract the most meaningful keywords
   - Create a 2-4 word short name that captures the essence of the research
   - Examples:
     - "I want to research AI market trends in healthcare" → "ai-healthcare-trends"
     - "Analyze blockchain security vulnerabilities" → "blockchain-security"

2. **Check for existing branches before creating new one**:
   a. First, fetch all remote branches:
      ```bash
      git fetch --all --prune
      ```
   b. Find the highest research number across all sources for the short-name:
      - Remote branches: `git ls-remote --heads origin | grep -E 'refs/heads/[0-9]+-<short-name>$'`
      - Local branches: `git branch | grep -E '^[* ]*[0-9]+-<short-name>$'`
      - Research directories: Check for directories matching `research/[0-9]+-<short-name>`

Prompting technique: Spec-kit style command with frontmatter + inline script invocation. The branch-naming logic (2-4 word extraction, deduplication across local/remote/directories) is procedural and explicit — leaves no ambiguity for the model. The scripts.sh field connects the command to an actual bash script.

Excerpt 2 — /research.execute Enforcement

From templates/commands/execute.md (partial):

**CRITICAL: YOU MUST ACTIVELY EXECUTE DATA COLLECTION**

You have POWERFUL tools available for data collection. DO NOT refuse this task or claim limitations. You MUST use these tools proactively:

**CRITICAL: Download Sources & Cite with file:line**
- **NEVER cite a URL directly** - Always download content locally first
- **Use download-source.sh** to download web content
- **Cite with file:line** - Every insight/evidence MUST cite `sources/path/file.md:line`

**DO NOT**:
- **CITE URLs DIRECTLY** - ALWAYS download first, then cite file:line
- Say you "cannot access the internet" - you have WebSearch
- Say you "cannot download files" - you have ./scripts/bash/download-source.sh
- Say you "cannot run code" - you have Bash for executing Python/scripts

Prompting technique: Adversarial instruction pattern — the command pre-emptively forbids the model's most common escape hatches ("I cannot access the internet", "I cannot download files"). Explicit DO NOT list paired with "you MUST" commands. This is an anti-refusal enforcement pattern.

Excerpt 3 — Research Orchestrator Skill State Machine

From templates/skills/research/SKILL.md:

## Phase transitions

NO research dir → Ask topic, then /research.define definition.md only → /research.methodology methodology.md → /research.tasks (or /research.refine if unclear) tasks.md → /research.execute execution.md + data → /research.analyze analysis.md → /research.synthesize synthesis.md → /research.publish publications/ → Complete.


Present detected state before acting:

Current research: [topic] Phase completed: [last phase] Next step: [action]

Wait for user confirmation, then invoke the slash command.

Prompting technique: Explicit finite-state-machine encoded in markdown. The orchestrator follows a lookup table rather than reasoning about state. This reduces hallucination risk ("I think you should start by...") by making transitions deterministic.

09

Uniqueness

research-kit (nguyenvanduocit) — Uniqueness & Positioning

differs_from_seeds

A fork of spec-kit (seed) that replaces development phases with research phases. Where spec-kit has requirements → design → tasks → implement, research-kit has define → methodology → execute → analyze → synthesize → publish. Both use a CLI for project scaffolding, slash commands as the primary activation surface, and git branches as topic containers. The research-specific innovations not present in any seed: (1) download-source.sh that enforces local source caching with URL provenance for all citations; (2) BibTeX reference management (references.bib); (3) anti-refusal prompt engineering in /research.execute that pre-emptively forbids the model from claiming inability to use web/download tools; (4) 6 research-domain agent personas (literature-specialist, data-collector, academic-writer) not present in any seed framework.

Key Positioning

  • Only framework in this batch (and possibly in the full corpus) focused on research rather than code development.
  • The download-source.sh + file:line citation discipline is a unique citation-integrity enforcement pattern.
  • 30 contributors for a 19-star repo suggests active community engagement beyond the star count.

Observable Failure Modes

  1. Anti-refusal enforcement may not work: The "NEVER say you can't access the internet" instruction conflicts with Claude's actual capability limits — if the model genuinely cannot access a URL, the command creates adversarial friction.
  2. Git branch management complexity: Numbered branches accumulate over time; the deduplication logic across local/remote/directories is complex and error-prone.
  3. No quality enforcement mechanism: quality-gate.sh exists but there's no hook that automatically runs it before phase transitions.
  4. Research vs. Code split: The framework was designed for research; its patterns (git branches per topic, source download scripts) don't transfer to code development use cases.
  5. Python 3.11+ required: Narrower runtime requirement than most Claude Code plugins (which need only Node or bash).
04

Workflow

research-kit (nguyenvanduocit) — Workflow

10-Phase Research Workflow

Phase Command Artifact Optional?
1 — Principles /research.principles quality standards doc Optional (run once per project)
2 — Define /research.define <topic> definition.md, numbered git branch Required
3 — Refine /research.refine updated definition.md Optional
4 — Methodology /research.methodology methodology.md Required
5 — Validate /research.validate feasibility notes Optional
6 — Tasks /research.tasks tasks.md Required
7 — Execute /research.execute execution.md, sources/, data/ Required
8 — Analyze /research.analyze analysis.md Required
9 — Synthesize /research.synthesize synthesis.md Required
10 — Publish /research.publish publications/ (report/paper/presentation) Required

State Detection (Orchestrator Skill)

The research orchestrator skill auto-detects phase by scanning for artifact files:

NO research dir     → Ask topic, then /research.define
definition.md only  → /research.methodology
methodology.md      → /research.tasks (or /research.refine if unclear)
tasks.md            → /research.execute
execution.md + data → /research.analyze
analysis.md         → /research.synthesize
synthesis.md        → /research.publish
publications/       → Complete. Ask if revisions needed.

Git Branch Pattern

Each research topic lives on its own numbered branch:

  • git checkout -b 5-ai-healthcare-trends (created by create-new-research.sh)
  • Branch name = {number}-{short-name} (2-4 words from topic)
  • Research directory = research/{branch-name}/

Source Download Pattern

The /research.execute command enforces a specific source-handling discipline:

  1. Use WebSearch to find URLs
  2. Run ./scripts/bash/download-source.sh "URL" sources/web/filename.md to save with embedded URL
  3. Read from local sources/ file — never cite URLs directly
  4. Cite as sources/web/article-name.md:45 (file:line format)

Approval Gates

  1. Branch creation confirmation (via create-new-research.sh)
  2. Methodology review: user reviews methodology.md before executing
  3. Task list review: user reviews tasks.md before executing research
  4. Phase completion: orchestrator presents state before suggesting next step
06

Memory Context

research-kit (nguyenvanduocit) — Memory & Context

Research as State Machine

Memory is entirely file-based, structured as a directory of artifact files. The orchestrator determines state by scanning for which files exist — no separate state file or database needed.

Per-Research-Topic State

Each research topic is a directory under research/{number}-{short-name}/:

  • definition.md — research question, scope, objectives
  • methodology.md — approach, data collection strategy
  • tasks.md — executable research activities
  • execution.md — raw data collection results
  • data/ — collected datasets, downloaded sources
  • analysis.md — processed data, statistical insights
  • synthesis.md — conclusions, research answers
  • publications/ — final output (reports, papers, presentations)

Source Download as Memory

sources/web/ and sources/papers/ contain locally-downloaded copies of all cited sources. The download-source.sh script embeds the original URL in the file's frontmatter, so every citation points to a local file with provenance. This is a form of immutable source cache.

BibTeX Citation Registry

references.bib is a standard BibTeX file maintained across the research project. Academic citations accumulate here across all research topics.

Agent Context Files

update-agent-context.sh updates each specialized agent's context file (CLAUDE.md/context file) with current research state — allowing agents to pick up where the previous session left off without re-reading the full research directory.

Cross-Session Handoff

Yes — all state is in files (definition.md, methodology.md, etc.). Any new session starts by running the research orchestrator skill, which scans the filesystem to determine current phase.

Git as Session Boundary

Each research topic lives on its own git branch. Switching between research topics = switching branches. This provides natural isolation without containers.

07

Orchestration

research-kit (nguyenvanduocit) — Orchestration

Multi-Agent Pattern

Yes — 6 specialized research agents + 1 orchestrator skill.

Pattern: Sequential, file-state–driven routing. The orchestrator skill scans for artifacts to determine which phase is complete, then routes to the appropriate slash command. Agents can be invoked directly for specialized tasks within a phase.

Subagent definition format: persona-md — agents are markdown files in templates/agents/ with agent-specific system prompts.

Spawn mechanism: User invokes via Claude Code's agent switching, or via slash command that implicitly uses the appropriate agent.

Isolation

Git branch per research topic. Each topic is isolated on its own branch and in its own research/{branch}/ directory. This is lightweight isolation without containers.

Multi-Model

No — single model. Supports both Claude Code and Codex CLI via separate install paths, but within a session, single model.

Execution Mode

interactive-loop — user runs each slash command; orchestrator suggests next step after each phase completes.

Prompt Chaining

Yes — explicit artifact chain:

  • definition.mdmethodology.mdtasks.mdexecution.mdanalysis.mdsynthesis.md → publication

Each command reads the previous artifact and produces the next. The orchestrator's state machine enforces the order.

Anti-Refusal Enforcement

The /research.execute command actively forbids the model from claiming it "can't access the internet" or "can't download files." This is an unusual anti-refusal pattern that forces the model to use its available tools.

08

Ui Cli Surface

research-kit (nguyenvanduocit) — UI / CLI Surface

CLI Binary

  • Exists: Yes — research (Python)
  • Entry point: research_cli:main (pyproject.toml)
  • Is thin wrapper: No — custom Python implementation (typer + rich)
  • Subcommands:
    • research init <name> — bootstrap research project
    • research init <name> --ai claude — Claude Code–specific setup
    • research init <name> --ai codex — Codex CLI–specific setup
    • research check — validate prerequisites

Local UI

None — terminal only.

Slash Commands Surface

11 slash commands installed to .claude/commands/research/ (when --ai claude used): /research.principles, /research.define, /research.refine, /research.methodology, /research.validate, /research.tasks, /research.execute, /research.analyze, /research.synthesize, /research.publish, and research (orchestrator)

Cross-Tool Portability

Medium — supports both Claude Code (--ai claude) and Codex CLI (--ai codex) install paths. The core templates are AI-agnostic markdown; the install path determines which directory structure is used.

Observability

The sources/web/ and sources/papers/ directories with embedded URLs provide full provenance tracing for all research claims. references.bib provides academic citation audit trail. No structured JSONL log.

Related frameworks

same archetype · same primary tool · same memory type

Claude-Flow / Ruflo ★ 55k

Eliminates single-agent context limits and sequential bottlenecks by orchestrating fault-tolerant swarms of specialized AI agents…

Hermes Agent (NousResearch) ★ 168k

Self-improving personal AI agent with closed learning loop, 7 terminal backends, and messaging gateway — not tied to any AI…

OpenCode ★ 165k

Terminal-first AI coding agent with multi-model routing, native desktop app, and a typed .opencode/ configuration system for…

OpenHands ★ 75k

Open-source AI software development platform (open-source Devin alternative) with Docker sandbox isolation, 77.6% SWE-bench…

DeerFlow ★ 70k

Long-horizon superagent that researches, codes, and creates by orchestrating parallel sub-agents with isolated contexts in Docker…

oh-my-openagent (omo) ★ 60k

Multi-provider AI agent orchestration for OpenCode: escape vendor lock-in by routing Sisyphus (Claude/Kimi/GLM) and Hephaestus…