global/skills/_internal/research/SKILL.md
Conduct structured research on any topic: web search, codebase analysis, and document synthesis into organized reports. Use when investigating technologies, analyzing alternatives, gathering reference materials, fact-checking claims, or producing technical documentation from research. Use this skill whenever the user asks to research, investigate, compare, or survey a topic.
npx skillsauth add kcenon/claude-config researchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Conduct structured research on any topic and produce organized reference documents.
/research "WebSocket vs SSE for real-time updates"
/research "OAuth 2.0 PKCE flow" --depth deep --output docs/reference/oauth-pkce.md
/research "error handling patterns" --sources code
/research "DICOM SR TID 1500" --output docs/reference/dicom-sr-tid-1500.md --integrate
/research "React Server Components" --lang ko
/research "gRPC vs REST performance" --template plain
<topic> (required): Research topic. Accepts any natural language query.
[--depth <level>] (default: standard):
shallow — Quick overview. 1-2 web searches, scan codebase. 3-5 sources. Short report.standard — Balanced investigation. 3-5 web searches, pattern analysis. 5-10 sources.deep — Thorough investigation. 8-12 web searches, full codebase analysis. 10-20 sources.[--output <path>] (default: none — output to conversation):
.md file.[--sources <type>] (default: both):
web — Web search and external documentation only.code — Codebase analysis only (grep, glob, read).both — Combine web and codebase sources.[--lang <code>] (default: auto-detect, fallback en):
en, ko, ja, zh.--output directory.[--template <mode>] (default: auto):
auto — Detect conventions from existing docs in output directory.plain — Force generic English markdown (no frontmatter adaptation).[--integrate]:
docs/.index/ or .index/ to exist.--depth:| Depth | Web Searches | Codebase Scope | Target Sources | Report Sections |
|-------|-------------|----------------|----------------|-----------------|
| shallow | 1-2 queries | Related files scan | 3-5 | 4-5 sections |
| standard | 3-5 queries | Pattern/usage analysis | 5-10 | 6-8 sections |
| deep | 8-12 queries | Full architecture analysis | 10-20 | 8+ sections |
--output is specified)Sample up to 3 existing .md files in the output directory:
# Find existing markdown files in the output directory
OUTDIR=$(dirname "$OUTPUT_PATH")
SAMPLES=$(find "$OUTDIR" -maxdepth 1 -name "*.md" -type f | head -3)
Detect from samples:
| Item | Detection Method | Fallback |
|------|-----------------|----------|
| Language | Character ratio analysis (Korean > 30% → ko, etc.) | en (or --lang) |
| Frontmatter | Check first lines for --- YAML block | No frontmatter |
| Frontmatter schema | Extract YAML keys (e.g., doc_id, doc_version, approval) | Skip |
| Section pattern | Check heading style (## 1. Title vs ## Title) | Numbered sections |
| Markers | Scan for > **SSOT**:, > **Cross-reference**: patterns | Skip |
| File naming | Check sibling files (kebab-case, snake_case, etc.) | kebab-case |
| Citation style | Check last section for reference format | Numbered list |
Store detected conventions as the output profile for Phase 3.
Override rules:
--lang always overrides detected language.--template plain skips all context detection.--integrate is specified)# Search for document index system
INDEX_DIR=""
if [ -d "docs/.index" ]; then INDEX_DIR="docs/.index"
elif [ -d ".index" ]; then INDEX_DIR=".index"
fi
If found:
manifest.yaml to understand existing document registry.bundles.yaml to identify related bundles.router.yaml to check existing keyword routes.If not found and --integrate was specified:
/doc-index to create one."Before creating a new document:
Execute in parallel where possible using the Agent tool for independent searches.
--sources includes web)Formulate search queries based on core research questions.
Execute WebSearch for each query.
For promising results, use WebFetch to extract detailed content.
Record for each source:
--sources includes code)Use Grep and Glob to find topic-related code, configuration, and documentation.
Use Read to examine relevant files.
Record:
If an index system was detected (Phase 0-C):
If no index system:
docs/, reference/, README.md for related content.See reference/source-evaluation.md for confidence scoring criteria.
✅ (supported), ⚠️ (partial/conditional), ❌ (not supported).--sources includes code)| Condition | Template |
|-----------|----------|
| --template plain | Generic English markdown (Template A) |
| --template auto + context detected | Adapted template matching existing docs (Template B) |
| --template auto + no context | Generic English markdown (Template A) |
| No --output (conversation) | Generic English markdown (Template A) |
See reference/output-templates.md for complete template definitions.
--lang or detected).--output specified: write file using Write tool.
--output: output the full report in the conversation.--integrate is specified)Requires index system detected in Phase 0-C.
If integration fails, warn the user and suggest running /doc-index for full regeneration.
After research output is saved with --output:
/research "<topic>" --output docs/reference/topic.md # Generate
/doc-review docs/reference/topic.md # Validate
/doc-index # Re-index (alternative to --integrate)
| Workflow | Usage |
|----------|-------|
| Pre-implementation | /research → /issue-create → /issue-work |
| Documentation | /research → /doc-update → /doc-review → /doc-index |
| Security investigation | /research → /security-audit |
| Performance investigation | /research → /performance-review |
| Architecture design | /research → /harness |
| API design | /research → /api-design guidance |
See _policy.md for common rules.
| Item | Rule |
|------|------|
| Default language | English. Auto-detect from output directory. --lang overrides. |
| Source attribution | Every factual claim must cite at least one source. |
| Cross-validation | Claims must have 2+ independent sources. Single-source claims marked. |
| Date awareness | Web searches include current year for time-sensitive topics. |
| Bias prevention | Never rely on a single source. Present multiple perspectives. |
| Existing doc preservation | Confirm before overwriting existing files. |
| Technical terms | Keep in English regardless of output language. |
| Frontmatter keys | Keep in English regardless of output language. |
| Citation originals | Preserve original language of source titles and authors. |
--output)A complete research report rendered in the conversation using the generic template.
--output specified)A .md file matching the detected document conventions of the output directory.
## Research Summary
| Item | Value |
|------|-------|
| Topic | <topic> |
| Depth | shallow / standard / deep |
| Sources | N web, M codebase |
| Output | conversation / <file-path> |
| Language | en / ko / ... |
| Template | plain / adapted |
| Integrated | yes / no / skipped |
| Condition | Action |
|-----------|--------|
| Empty topic | Error: "Topic is required" |
| --output directory does not exist | Error: "Output directory not found: <path>" |
| --integrate without index system | Warn and skip integration |
| --sources web but WebSearch unavailable | Warn, fall back to --sources code |
| Condition | Action |
|-----------|--------|
| WebSearch returns no results | Try alternative queries. If all fail, report and continue with available sources. |
| WebFetch fails for a URL | Skip URL, note in report as "[Inaccessible]". Continue with other sources. |
| Insufficient sources found | Warn in report summary. Lower confidence ratings. |
| Output file already exists | Ask user: overwrite / rename / cancel |
| Index integration fails | Warn and suggest /doc-index |
Before finalizing the report, verify:
--sources code)--reanchor-interval N (default 5, 0 disables) controls how often the Core invariants block from global/skills/_internal/_shared/invariants.md is emitted between research rounds.
Loop bind point: between shallow/standard/deep round iterations. For deep-depth runs (5+ rounds with many WebFetch outputs), this keeps the English-only and citation-required rules adjacent to the latest round's findings instead of buried behind accumulated source content.
development
Generate and validate the bidirectional traceability matrix linking requirements, design, code, tests, risk records, and standard clauses. Consumes docs/.index/{manifest,bundles,graph,router}.yaml plus an optional compliance/ directory and produces docs/.index/traceability.yaml (machine-readable) and docs/.index/traceability.md (human-readable). Read-mostly: writes only the two trace artifacts and never mutates source documents. Opt-in — no-op when docs/.index/graph.yaml is absent so non-regulated repos are unaffected.
development
Maintain a SOUP (Software Of Unknown Provenance) register for every third-party software item the project depends on. Discovers candidates from lockfiles (package-lock.json, go.sum, Cargo.lock, requirements.txt, pyproject.toml, pom.xml, packages.lock.json), enriches with human-supplied risk class and verification refs, validates against a license allow-list and the requirements catalogue, and emits a per-supplier report. Outputs docs/.index/soup.yaml plus docs/.index/soup.md. Subcommands: discover | enrich | validate | list | report. Bidirectional linking with traceability via the soup_ids[] field on requirement rows. Opt-in: no-op when no lockfile is detected and docs/.index/soup.yaml is absent. Atomic writes (*.tmp + rename); idempotent (records sorted by id). Implements IEC 62304 sections 5.3.3 (SOUP requirements) and 8.1.1 (configuration items).
devops
Parse sonarcloud[bot] PR comments, classify findings, codify whitelisted auto-fixes, escalate the rest.
testing
Manage Hazard and Risk records for projects on the regulated-industry track. Maintains a single normalized risk file (docs/.index/risk-file.yaml) holding hazard identification, initial and residual risk estimates, control measures with verification links, and bidirectional Risk<->Requirement linking via the requirements[] field. Subcommands: add | edit | evaluate | validate | list. Output is consumed by the traceability skill (matrix risk_ids[] field) and the evidence-pack skill (risk_file kind). Opt-in: no-op when docs/.index/manifest.yaml is absent so non-regulated repos are unaffected. Atomic writes via *.tmp + rename; idempotent for diffability. Implements ISO 14971 sections 5-9 operationally.