Agent Skills / research set

ResearchHow do I find out what I do not know, and what may I conclude?

Six skills over the research chain — scoping the question, building the corpus, grading each source, synthesising a claim ledger, and writing it up with the hedges preserved exactly as the sources stated them.

6skills
7routes
11playbooks
16reference
38static rules
1,070listing chars

01What is loaded, and when it is paid for

A skill arrives in three stages and each costs something different. Almost every design rule in this repository follows from that asymmetry rather than from taste.

what the engine is holding, and when 1 · LISTING every skill, every turn 6 names + descriptions 1,070 characters selection happens here, and on nothing else 2 · SKILL.MD one skill, once chosen ≤ 155 lines each 6 fixed sections contracts are copied in, not referenced 3 · DEFERRED only when the situation calls 11 playbooks · 16 reference budgeted / unbudgeted judgement stays; what rots is dated
Cost is not uniform across the three. Stage 1 is paid on every turn for every installed skill, which is why a description is budgeted to 200 characters and why boundaries are kept out of it. Stage 3 is paid only by the run that needs it, which is where anything long or perishable belongs.

02The 6 skills

Each owns one kind of work and states it in its own Owns section. The tags under it are the facets recorded in research-registry/capabilities.yaml, which is also what the fixtures route against.

research-route route

Which phases a question needs and in what order, and the single budget they share. It dispatches and produces no findings of its own.

  • classify
  • depth-tier
  • chain-selection
  • budget
  • assembly
research-scope doc-write

The brief everything downstream serves — what is being asked, what an answer would look like, what would falsify it, and when to stop looking. Nothing is retrieved here.

  • question-design
  • answer-shape
  • decomposition
  • evidence-bar
  • stopping-rule
  • prior
  • falsification
research-source retrieve

The corpus and everything known about where it came from. This is the only skill that reaches the open web, which is what makes provenance checkable at all downstream.

  • search-strategy
  • channels
  • disconfirming-queries
  • primary-chasing
  • dedupe
  • provenance
  • search-log
research-appraise doc-write

What each source is worth, for a specific claim. It recommends confidence and never assigns it — a label set here becomes an unremovable floor downstream.

  • tiering
  • method-appraisal
  • interests
  • currency
  • red-flags
  • include-exclude
research-synthesize doc-write

The claim ledger and the answer it supports. On any chain that includes it, this is the only skill that assigns a confidence label.

  • claim-ledger
  • extraction
  • contradiction-diagnosis
  • weighing
  • confidence
research-report doc-write

The deliverable, and nothing that is not already in the ledger. No new claims enter at write-up time.

  • structure
  • drafting
  • citation
  • qualification
  • verification

03Where a skill stops

Boundaries live in one file and never in a description. A description that named its neighbours would spend listing budget advertising them, and adding a skill would mean editing every other one — so the cost of an addition would stop being O(1).

SkillDoes not doGoes to
research-routea request whose phase is already obvious that phase directly
research-routea question answerable from what is already known answering it
research-scoperetrieving anything research-source
research-scopedeciding what a retrieved source is worth research-appraise
research-sourcegrading what was retrieved research-appraise
research-sourcedeciding what to look for research-scope
research-appraiseassigning the confidence label research-synthesize
research-appraisefinding more sources to fill a gap research-source
research-synthesizewriting the deliverable research-report
research-synthesizere-grading a source research-appraise
research-reportreaching a conclusion the ledger does not carry research-synthesize
research-reportfilling a gap the draft exposes research-source

04Chains that recur

A chain of names expresses linear work only. Where a stage repeats until a condition holds, the entry carries the condition, the judge, and a hard cycle limit — without all three, “until it looks right” has no stopping rule and the loop ends when somebody gets tired.

RoutePatternWhenChainCondition
deeplinear contested, consequential, and the answer must survive challengeresearch-scope → research-source → research-appraise → research-synthesize → research-report gate · the brief carries both round caps before any retrieval is dispatched
standardlinear a real question with a decision behind itresearch-scope → research-source → research-appraise → research-synthesize —
quicklinear a settled fact that still needs a sourceresearch-source → research-appraise → research-report gate · the report says no synthesis pass ran, and caps confidence accordingly
vetlinear somebody handed you a claim and you need to know if it holdsresearch-source → research-appraise → research-report —
frame-onlyreport-only nobody can say what the question is yetresearch-scope stops at · the brief: question, answer shape, sub-questions, bar, stopping rule, prior, falsification. Nothing is retrieved
corpus-onlyreport-only gather the material, judgement comes laterresearch-source stops at · the manifest and the search log. Nothing is graded
fill-the-gaploop synthesis found a claim nothing supportsresearch-source → research-appraise oracle · every load-bearing claim reaches its evidence bar, or is recorded as unsupported

05The mechanism this set has and its siblings do not

Eight sets share one validator and one contract shape. Each declares exactly one signature mechanism, and that declaration is the whole difference — which is what keeps 8 copies of the same rules from becoming 8 dialects.

reach · _research/REACH.md

A source is only evidence for what it can actually reach. Every claim carries how far the sourcing got — whether the primary was opened, whether a disconfirming search was run — so a conclusion built entirely from secondary coverage says so on its face.

  • primary
  • one-hop
  • chain
  • blocked
  • no-primary

Owed by 5 of 6

  • research-scope
  • research-source
  • research-appraise
  • research-synthesize
  • research-report

A rule states the mechanism inside every skill through a delivered block. A skill that owes it must also name its own half in its own words — a rule stated everywhere and owned nowhere is a ritual.

06What counts as done

Reporting completion without meeting this is reporting a wish. The vocabulary is fixed in research-registry/harness.yaml and defined in _research/CONTRACT.md; the validator checks the contract actually defines every word it declares.

AxisVocabulary
Evidence gradesP1 P2 P3 P4 P5
Residual classesBLOCKED OUT-OF-SCOPE DEFERRED UNSUPPORTED
StatusesDONE PARTIAL BLOCKED
Sizing tiersquick standard deep
Route patternslinear loop report-only
Reachprimary one-hop chain blocked no-primary
The completion sweep is never omitted. Before reporting, both halves run and both results are stated: every marker this run introduced appears in the handoff with a class, and every claim made is a claim at its floor. While either pair disagrees, the status is not DONE.

07Permission classes

A class is declared once in the registry and the validator checks each SKILL.md front matter matches it exactly. Where a CLI does not enforce tool grants, the Never lines are discipline and nothing more — that limit is stated rather than papered over.

ClassToolsWritesSkills
routeRead, Grep, Glob, Skill no 1
retrieveRead, Grep, Glob, WebSearch, WebFetch, Write yes 1
doc-writeRead, Grep, Glob, Write, Edit yes 4

08Budgets, and the rules that decide them

Every threshold is declared in one place and read from there by research-tools/validate.py. A number written twice is a number that drifts. Raising a limit is the last resort — merging, deleting, compressing and relocating come first.

Declared limits

skill_md_lines155
description_chars200
playbook_lines300
playbooks_per_skill8
shared_file_lines136
shared_lines_total780
skills_max8
routes_max12
route_stages_max6
repo_md_lines_total5000

Measured now

skills6 / 8
routes7 / 12
shared contract lines741 / 780
repository markdown3,469 / 5,000
static rules38

Adding a rule means adding a deliberate violation and watching it fail. A check only ever seen passing may be checking nothing.

09Installing it

Each research-* directory is symlinked individually, so a skills directory keeps whatever else it already carries and a name already taken by a real directory is skipped rather than overwritten.

make link                       # into ~/.claude/skills
make link CLAUDE_DIR=.claude/skills

make check                      # the rules, then proof the rules still fire
make render                     # after editing a delivered block
make hooks                      # run the rules on every commit