research-methodology
Skill1 starsChanged 55 days agoMITView on GitHub
Structures technical investigation using a canon-driven research pyramid and three research types (exploratory, descriptive, experimental). Use when investigating unfamiliar libraries/frameworks/languages, evaluating a tech stack, writing an implementation spec, or finding the root cause of a regression via history/bisection.
16 other projects use a version of this.
Adopted by
Most recently taken up by
- komluk/scaffoldingtheir own version, first seen Nov 7, 2026
- SWEStash/swe-workflow-skillstheir own version, first seen Nov 1, 2026
- irahardianto/awesome-agvtheir own version, first seen Oct 14, 2026
- poemswe/co-researchertheir own version, first seen Oct 13, 2026
- The-Focus-AI/standardstheir own version, first seen Oct 12, 2026
- HughYau/pengsida-learning-research-skillstheir own version, first seen Oct 8, 2026
Used with
Projects with it also use literature-review, context-engineering and 2 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
JDerekLomasSkillliterature-review
Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.). This skill should be used when conducting systematic literature reviews, meta-analyses, research synthesis, or comprehensive literature searches across biomedical, scientific, and technical domains. Creates professionally formatted markdown documents and PDFs with verified citations in multiple citation styles (APA, Nature, Vancouver, etc.).
Also in 3 projects that use this
mrgoonieSkillcontext-engineering
Master context engineering for AI agent systems. Use when designing agent architectures, debugging context failures, optimizing token usage, implementing memory systems, building multi-agent coordination, evaluating agent performance, or developing LLM-powered pipelines. Covers context fundamentals, degradation patterns, optimization techniques (compaction, masking, caching), compression strategies, memory architectures, multi-agent patterns, LLM-as-Judge evaluation, tool design, and project development.
Also in 3 projects that use this
CloudflareSkillsecurity-audit
Security guidance and vulnerability review for codebases, APIs, services, CLI tools, libraries, and daemons. Use for security questions, focused reviews, vulnerability research, security audits, or pen tests. Run the complete workflow only for explicit codebase audit or pen-test requests, full/comprehensive/end-to-end reviews, or requested report artifacts.
Also in 3 projects that use this
BlockSkillfrontend-design
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Also in 3 projects that use this
Other versions16 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 16
- VAMFI/claude-user-memory★ 206same name
- magnus919/agent-skills★ 172same name
- irahardianto/awesome-agv★ 157same name
- poemswe/co-researcher★ 135same name
- HughYau/pengsida-learning-research-skills★ 27same name
- komluk/scaffolding★ 16same name
- stupidZZ/skills★ 9same name
- KhaledSaeed18/dotclaude★ 5same name
- ntaffzii/Skill-Agents★ 4same name
- nic095layson/claude★ 1same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
9 rules. 0 are common, 8 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 14 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 35
Before any research, answer explicitly:
- Distinctive: line 40
No goal → research never completes correctly.
- Distinctive: line 74
Never: use experimental when the object is not yet understood.
- Distinctive: line 94
If the subject is a third-party library, framework, or platform, at least one rank 1–2 source is mandatory.
- Very specific: line 96
If a source class is unreachable in the current environment (no web access, no repository, no docs tool), write unavailable next to it in …
- Distinctive: line 133
Stop collecting: when every charter question has at least one rank 1–3 row, or is explicitly marked *unanswered*.
- Distinctive: line 141
Ask: "Does this hold within the broader domain, not just in this narrow case?"
- Distinctive: line 157
Ask: "Does this apply to the target system/component, not just the specific artifact I studied?"
- Distinctive: line 177
When the deliverable is an implementation plan (for example a plan-mode document), the research sections above go first, then the …
“Common” is measured: kept by at least 6 in 10 of the 14 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Research Methodology
When to apply
Apply whenever the task requires investigation before action: unfamiliar APIs, stack selection, implementation planning, code review, architecture decisions, or root-cause analysis of regressions.
Research is ~70–80% of software work. Code is the expression of research conclusions, not a substitute for it.
Research progress checklist
Copy this checklist into your first reply and update it as you go. A step counts as done only when its written output appears in the conversation or in the deliverable.
Research progress:
- [ ] 1 Canon: ranked source list written
- [ ] 2 Charter: goal, scope/object/subject, type + why, questions, reachable sources
- [ ] 3 Type file read (research-<type>.md); findings ledger kept while collecting
- [ ] 4 Scope filter: what was discarded/revised (or "nothing, because ...")
- [ ] 5 Object filter: what was discarded/revised (or "nothing, because ...")
- [ ] 6 Conclusions: each backed by a ledger row; open questions listed as risksGate rule: do not collect data (tool calls, file reads, web lookups, or reasoning from memory) before steps 1 and 2 are posted. Do not write conclusions before steps 4 and 5 are posted. Every task gets a charter; only its length varies (see Step 2).
Gating questions
Before any research, answer explicitly:
- Goal — What verifiable outcome must this research produce?
- Knowledge depth — How well do I already understand the object? (none / surface / working / deep)
No goal → research never completes correctly. Wrong self-assessment → wrong research type.
Three levels (define in the charter)
| Level | Definition |
| Scope | Knowledge domain under study |
| Object | Target part of the scope to understand |
| Subject | Concrete, formalizable unit studied to infer the object |
Chain: Scope → Object → Subject (general → specific). Subject-level conclusions must stay consistent with object and scope context. Adjacent subjects must not contradict each other relative to the larger levels.
Concrete examples:
| Task | Scope | Object | Subject |
| Pick a backend language for a greenfield service | Server-side runtimes | Language + ecosystem fit for this service | Go, Rust, and Kotlin, compared on the same criteria |
| Spec a feature on a known stack | Android notification delivery | Capacitor LocalNotifications pipeline in this app | notificationIdFor() and the plugin's id validation |
| Find why a regression appeared | Kotlin/Gradle build system | Dependency resolution in this Android project | The kotlin-stdlib vs kotlin-stdlib-jdk8 duplicate class in module :app |
"Information technology → software development → a library" is too abstract to guide a filter. If your levels read like that, narrow them until each one names something you could point at.
Research type selection
| Signal | Type | Detail file | Orientation |
| Near-zero knowledge of language, framework, library, or domain | Exploratory | research-exploratory.md | Forward-looking / theoretical |
| Object understood; need precise plan, spec, estimates, or acceptance criteria | Descriptive | research-descriptive.md | Forward-looking / theoretical |
| Object well understood; need causal link between past change and observed outcome | Experimental | research-experimental.md | Backward-looking / practical |
Rules:
- Exploratory + descriptive = theoretical (understand future application; no working artifact required).
- Experimental = practical (learn from historical/recorded data of a working system).
- Never use experimental when the object is not yet understood; conclusions will be wrong at a fundamental level.
- Poor exploratory work surfaces as surprises during descriptive work. Good exploratory work makes descriptive work precise.
Typical chaining: Exploratory (pick stack) → Descriptive (spec per milestone) → Experimental (root-cause after shipping).
Research pyramid — execute in order
Step 1 — Establish canon
Identify sources closest to truth. Rank every source you intend to use:
| Rank | Source class | How to reach it (default → fallback) |
| 1 | Author intent — creator of the code, docs, or spec | Changelogs, release notes, RFCs/ADRs, issue threads with maintainer replies; git log -S <symbol> / git blame on the relevant lines; maintainer talks |
| 2 | Official documentation | Documentation tool if available (for example a docs MCP such as Context7), else the official site via web fetch/search |
| 3 | Source code | Installed dependency sources (node_modules, go mod download, vendor/, site-packages), the upstream repository, the project's own code, a code graph if one exists |
| 4 | Secondary sources — blogs, tutorials, Q&A answers | Web search; always mark as rank 4 |
On doc/code conflict: resolve via author intent, never by preference.
If the subject is a third-party library, framework, or platform, at least one rank 1–2 source is mandatory. Reading only the local copy of its code is not enough to establish canon.
If a source class is unreachable in the current environment (no web access, no repository, no docs tool), write unavailable next to it in the charter. Conclusions that would depend on it are reported as unverified, not as facts.
Output: the ranked list, posted before collection starts.
Step 2 — Define interpretation rules (the charter)
Post the charter as a message before the first data-collection action. Format:
Charter
- Goal: <verifiable outcome>
- Scope / Object / Subject: <...> / <...> / <...>
- Type: <exploratory | descriptive | experimental> — because <one sentence>
- Questions: Q1 <...>; Q2 <...>; ...
- Sources: <ranked list from Step 1, with `unavailable` marks>Length rule:
- Small task (single subject, expected ≤5 sources, no third-party unknowns): the five lines above are the whole charter. Still post them.
- Anything else: full charter, and each question gets its own line so the ledger can reference it.
Most common failure: treating personal knowledge as canon and skipping this step. A charter written after collection is not a charter; it is a rationalization.
Step 3 — Execute research and record findings
- Read the detail file for the chosen type with your file-reading tool: research-exploratory.md, research-descriptive.md, or research-experimental.md. An inlined
SKILL.mddoes not include them. If files cannot be read in the current environment, say so and follow the type's steps as summarized in the selection table. - Keep a findings ledger and append to it after every batch of reads, lookups, or observations. One row per claim:
| # | Claim | Evidence (file:line / URL / version / commit) | Rank | Answers |
|---|-------|-----------------------------------------------|------|---------|
| F1 | Plugin rejects ids > Int.MAX_VALUE | LocalNotification.kt:131, @capacitor/local-notifications 8.3.1 | 3 | Q1 |
| F2 | Maintainers require signed 32-bit ids | CHANGELOG 8.0.0 "breaking: ids must be int32" | 1 | Q1 |A finding without evidence is a hypothesis; put it in a separate Open list, not in the ledger. Re-reading a source you already have a ledger row for is a signal that the ledger is incomplete: fix the row, do not re-read.
3. Stop collecting when every charter question has at least one rank 1–3 row, or is explicitly marked unanswered. Unanswered questions go to Step 6 as risks, never as guesses.
Output: the ledger (table) plus the Open list. No conclusions yet.
Step 4 — Filter by scope context
Review every ledger row against the scope. Discard or revise rows that ignore domain constraints, history, or cross-cutting principles valid at this level.
Ask: "Does this hold within the broader domain, not just in this narrow case?"
Output, always posted even when nothing changes:
Scope filter: discarded F<...> because <...>; revised F<...> to <...>.or
Scope filter: nothing discarded — <one sentence why the rows already respect the domain>.Step 5 — Filter by object context
Review surviving rows against the object. Discard or revise rows distorted by imperfect research conditions or over-generalized from the subject.
Ask: "Does this apply to the target system/component, not just the specific artifact I studied?"
Output, same format as Step 4, always posted.
Step 6 — Formalize and apply
Produce final, verifiable conclusions. Every conclusion cites the ledger rows it rests on. Every unanswered charter question appears as a risk with a proposed way to close it.
The deliverable must contain these sections in this order, regardless of where it lives (chat reply, plan document, spec file, issue comment):
## Charter
## Canonical sources
## Findings ledger
## Scope filter
## Object filter
## Conclusions <- each item: statement + ledger refs
## Next steps / Risks <- or Implementation steps + Acceptance criteria for a planWhen the deliverable is an implementation plan (for example a plan-mode document), the research sections above go first, then the implementation steps. Use the output template of the chosen type file for the type-specific content (comparison table, acceptance criteria, classification table).
Anti-patterns
| Anti-pattern | Effect |
| Collecting before the charter is posted | Charter becomes a post-hoc story; research type is chosen to fit what was found |
| "This task is small, I'll keep the charter in my head" | Steps 4–6 become unverifiable; the most common way the pyramid collapses |
| Skipping steps 4 or 5 or posting them as an empty heading | Narrow-case conclusions ship as general truths |
| Local code as the only canon for a third-party subject | Version drift and intent are invisible; fixes target symptoms |
| Findings held in memory instead of the ledger | Repeated reads of the same files; conclusions cannot be traced to evidence |
| Wrong research type | Micromanagement or endless unfocused reading |
| Fit results to a predetermined answer | Wasted effort; false confidence |
| "My knowledge is canon" | Skips interpretation rules; no external verification |
Research exists to produce repeatable, checkable outcomes, not activity for its own sake.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

