Skip to content

Repository files navigation

research — research infrastructure with a verifiable evidence chain

validate License: MIT Tests Source skills

A research skill for Claude Code where every citation is checked against its source before it can be used, and confidence status is computed by an offline deterministic validator — never asserted by the model. Nine source-expert skills (web, GitHub, Reddit, blog, news, academic, official-source, social, and a planner) collect evidence only; a mandatory verify station confirms each quote actually exists at its URL and actually supports the claim in context; a validator recomputes confirmed / probable / contested / insufficient from structure and fails the run if a finding's written status doesn't match.

Why this exists

Generic "research" skills for Claude Code are a saturated category — the largest has 300K+ installs. A survey of 16 of them (research workflows, tool wrappers, GitHub/Reddit-specific skills) found the same gap in every one: none of them re-check a citation against its source. They ask the model to cite a URL and trust it did. This skill's whole design is built around not trusting that step.

What makes it different

  • Two-check verification, not a citation format. Every quote is checked mechanically (does this text exist at the URL or its archive) and semantically (does it, in context, actually support the claim). A claim that overstates its evidence gets narrowed to what the evidence supports and re-verified — never silently accepted, never just discarded.
  • Independence is counted by voice, not by URL. A project's README, a commit, and its release notes are one project speaking, not three sources. Ten outlets relaying one press release are one source, not ten. A confidence score is only as honest as its independence count.
  • Status is computed, never chosen. scripts/validate_run.py is the same offline validator every run passes through — it recomputes each finding's status from the evidence and fails the build if what's written doesn't match.
  • Self-interest is capped. A vendor's own claim about its own product — however authoritative the source — cannot reach confirmed without a second, unaffiliated source.
flowchart LR
    P["research-planner\nsub-questions, budget,\nstopping condition"]
    subgraph Collect["Source-expert skills"]
        direction TB
        W[web-research]
        G[github-research]
        R[reddit-research]
        O[+ blog / news / academic /\nofficial-source / social]
    end
    V["source-verify\nmechanical + semantic check\nshrink → re-verify"]
    S["synthesis\nfindings.jsonl"]
    D["scripts/validate_run.py\noffline, deterministic\nconfirmed / probable /\ncontested / insufficient"]
    Rep["report\nrendered, never hand-written"]

    P --> Collect
    Collect -->|evidence.jsonl, pending| V
    V -->|verified / rejected / unreachable| S
    S --> D
    D -->|pass| Rep
Loading

Install

In Claude Code:

/plugin marketplace add ali-demirbas/research
/plugin install research@research

Or clone and add as a local plugin — persists across sessions (written to settings.json's extraKnownMarketplaces as a directory source), unlike --plugin-dir which only applies for the current invocation:

git clone https://github.com/ali-demirbas/research.git
claude plugin marketplace add ./research
claude plugin install research@research

Or install individual source skills with the skills CLI:

npx skills add ali-demirbas/research --all

Each source skill triggers independently — say "search the web for X" and only web-research loads; say "check GitHub for X" and only github-research loads. The full pipeline (planner → collection → verify → validator → report) is its own skill for when you want a cited, confidence-scored answer rather than a raw search.

Usage

You say What happens
"search the web for X" web-research collects evidence records only — no conclusions
"search GitHub for X" / "check the issues on X" github-research, depth ladder from README to actual implementation to issues/releases
"what are people saying about X on Reddit" reddit-research, community-signal evidence with measured engagement
"research X" / "deep research on Y" Full pipeline: plan → collect → verify → validate → cited report with confidence status
"is this still true?" (on a prior run) update-research — re-verifies old evidence too, outputs only the delta

Architecture

The full rule set — 13 locked architecture decisions, the evidence and finding schemas, the confidence ladder, and the audit trail of every contract/validator gap three rounds of external review found and closed — is in ARCHITECTURE.md. 78 tests cover the pipeline: 70 in tests/test_validate_run.py for the validator (including confidence-inflation bugs that were reproduced with a real failing case before being fixed) and 8 in tests/test_render_report.py for the renderer.

License

MIT © 2026 Ali Demirbaş

About

Research skill for Claude Code with a verifiable evidence chain — every citation is checked against its source, confidence status computed by a deterministic validator, never asserted by the model

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages