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.