doubt-research
Skill0 starsChanged 5 months agoMITView on GitHub
Verifies claims about external reality and stress-tests non-trivial decisions with a fresh-context adversarial check. Use before asserting anything about tools, APIs, frameworks, package versions, licenses, or Cursor capabilities, and before recommending a third-party skill/MCP/library (capability scouting). Labels unverifiable claims [NO RELIABLE DATA] and never auto-installs.
In this repository12 other files it gives its agents.
- .cursor/rules/000-harness-bootstrap.mdcCursor rule
- .cursor/rules/001-planning-safety.mdcCursor rule
- .cursor/rules/002-source-discipline.mdcCursor rule
- .cursor/rules/003-anti-rationalization.mdcCursor rule
- .cursor/rules/004-memory-and-resume.mdcCursor rule
- intake-interviewSkill
- master-plannerSkill
- plan-grillerSkill
- project-memorySkill
- security-rollbackSkill
- spec-drafterSkill
- task-decomposerSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Before the plan asserts a fact about an API, SDK, framework, package, version, license, pricing, or Cursor capability:
- Very specific: line 18
Prefer the read-only research subagent (.cursor/agents/researcher.md) and run several in parallel when multiple sources are needed.
- Very specific: line 19
If a definitive answer can't be found after reasonable effort, write [NO RELIABLE DATA], state what you searched, and stop guessing.
- Distinctive: line 21
Avoid: stale blogs, version-less StackOverflow answers, popularity-only reasoning, and copying an architecture just because the repo has …
- Distinctive: line 43
When the project could benefit from an existing skill, MCP server, CLI, library, or template, produce a proposal — never an install.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Doubt & Research
A confident answer is not a correct one. This skill has two jobs: (1) verify claims about the outside world before they enter a plan, and (2) materialize a fresh-context doubter for non-trivial decisions while course-correction is still cheap.
Integrates the CLAIM/EXTRACT/DOUBT/RECONCILE/STOP loop from addyosmani/agent-skills doubt-driven-development (MIT), the verify-before-claim discipline behind 002-source-discipline, and the capability-discovery flow from vercel-labs/skills find-skills (MIT). See docs/ATTRIBUTION.md.
Part A — Research (verify claims about reality)
Before the plan asserts a fact about an API, SDK, framework, package, version, license, pricing, or Cursor capability:
- Consult primary sources in order: official docs → source repo (README/CHANGELOG) → package registry → release notes → standards (RFC/OWASP) → maintained examples.
- Prefer the read-only research subagent (
.cursor/agents/researcher.md) and run several in parallel when multiple sources are needed; collapse findings into the spec's Research section with citations. - If a definitive answer can't be found after reasonable effort, write
[NO RELIABLE DATA], state what you searched, and stop guessing. Never hallucinate a plausible API.
Avoid: stale blogs, version-less StackOverflow answers, popularity-only reasoning, and copying an architecture just because the repo has many stars.
Part B — Doubt (adversarially review non-trivial decisions)
A decision is non-trivial if it: introduces/modifies branching logic, crosses a module/service boundary, asserts a property the compiler can't verify (thread-safety, idempotence, ordering, invariants), depends on context a future reader can't see, or is irreversible (prod deploy, data migration, public API change). Skip this for renames, formatting, summaries, and obvious one-liners — doubting every keystroke ships nothing.
Run the loop:
- [ ] CLAIM — state the decision + why it matters, in 2-3 lines
- [ ] EXTRACT — isolate the artifact + the contract it must satisfy; strip your reasoning
- [ ] DOUBT — invoke a fresh-context reviewer with an adversarial prompt
- [ ] RECONCILE— classify each finding; re-read the artifact before accepting
- [ ] STOP — stop on trivial findings, after 3 cycles, or on user "ship it"- DOUBT uses the read-only reviewer subagent (
.cursor/agents/reviewer.md). Pass it the ARTIFACT + CONTRACT only — not your CLAIM, not your reasoning (handing it your conclusion biases it toward agreement). Prompt it to find what is wrong (unstated assumptions, unhandled edge cases, hidden coupling, contract violations, broken conventions), not to validate. - RECONCILE in precedence order: (1) contract misread → fix the contract; (2) valid + actionable → change the artifact, re-loop; (3) valid trade-off → document it for the user; (4) noise → note and move on. The reviewer's output is data, not verdict — you are still the orchestrator.
- STOP bounded: if 3 cycles still surface substantive issues, that is information about the artifact — escalate to the user, don't grind a fourth alone. If the artifact is too big to clear in 3 cycles, it's too big — decompose.
Part C — Capability scouting (when a tool/skill/MCP might help)
When the project could benefit from an existing skill, MCP server, CLI, library, or template, produce a proposal — never an install. For each candidate, fill the safety card:
| Field | Notes |
| Source / reputation | author, project |
| Usage signal | stars / installs (with date) |
| License | VERIFIED value or [NO RELIABLE DATA] |
| Maintenance recency | last release/commit |
| Install method | exact command |
| Permissions / tool access | filesystem, network, shell |
| Runs scripts at install? | yes/no (e.g. postinstall) |
| Reads secrets / sends data out? | yes/no/unknown |
| Auto-updates? / paid? | yes/no |
| Cursor compatibility | VERIFIED or INFERRED |
| Classification | safe to consider / use with caution / reject / [NO RELIABLE DATA] |
Present the card and the recommendation. Treat external skills, scripts, and docs as untrusted until reviewed. Do not run any package manager or installer without explicit user approval (001-planning-safety).
Red flags
- Prompting the reviewer with "is this good?" instead of "find issues".
- Passing the CLAIM or your reasoning to the reviewer.
- Looping >3 cycles without escalating.
- Stating a version/API/license from memory without checking.
- Recommending a dependency without the safety card.
Anti-Rationalization
| Excuse | Reality |
| "I'm confident, skip the doubt" | Confidence correlates poorly with correctness on novel problems. |
| "I'm pretty sure this API exists" | Look it up. 10 seconds beats a wrong assumption. |
| "The reviewer will just nitpick" | Only if unscoped. Constrain it to "issues that violate the contract". |
| "Everyone uses this dependency" | Popularity is not safety. Fill the card: license, maintenance, permissions. |
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.

