User Guide
A hands-on guide for a researcher meetinghonest-scholar for the first time. It walks
you from install to a signed finding to a submitted paper, using one running
example throughout. It is practical: every step is a command you type and a file
you fill in.
For the why behind the design, read README.md and the specs
under docs/design/; this guide is the how.
1. What Honest Scholar is (and the two rules it runs on)
honest-scholar helps you keep research honest — especially now that AI is in the
loop. It is a Claude Code plugin for the scientific side of research — idea →
literature → hypothesis → test → publish-decision → paper → (optional) thesis. It
delegates the engineering (design, plans, code) to the bound engineering
backend via the engineering-delegation contract; honest-scholar calls out to that
backend for all of that rather than reimplementing it.
To be clear up front: Honest Scholar does not certify that your work is honest —
there is no seal of honesty. It gives you the mechanics to do honest work and to
disclose truthfully what you and the AI each did; readers judge the result.
Honesty here is mechanical, not a slogan. Everything you do sits under two rules.
They are not decoration — they change how the skills behave at every step:
- Agency — you decide and sign off. The skills draft, keep the accounts, and advise like a colleague. They never make a material scientific decision for you: whether a hypothesis is confirmed or refuted, whether a result is real, whether a paper is worth publishing, whether a thesis is defensible. Each of those is recorded in the artifact with a named human sign-off + date. You cannot “run” Honest Scholar to produce a paper — you drive it. In practice: expect the skill to stop at every judgement point and ask you. So the science is honestly yours.
-
Understanding — the
defendskill verifies and teaches. Before any material decision, thedefendskill probes whether you can actually defend the claim, the cited work, and the method — Socratically, one question at a time. When it finds a gap it teaches (source-grounded), then re-asks. It never grades the substance of your novel claim; it makes sure you understand what you are signing. In practice: expect to be asked “why this method?” and “what would falsify this?” before you sign anything. So “I understand my own paper” is true, not assumed.
2. Install
honest-scholar is distributed as a Claude Code plugin; its repo is its own marketplace.
.claude/settings.json:
"ref": "v0.1.0" inside the marketplace source; omit it to
track the plugin’s main. Skills are
invoked by name (research-init, hypothesis-testing, …) in your Claude Code
session.
3. First-time setup: research-init
Onboard your repo once with research-init.
It has two modes, both landing the repo in the same layout:
init— a greenfield repo with no research artifacts yet.adopt— an existing repo that already has reference PDFs, a bibliography, dataset files or download scripts, and prior results scattered around.adoptrunsinit, then inventories those assets and proposes how to map them in — you confirm every material call (licenses, dataset tiers, which old result maps to which hypothesis). This is the payoff for a sprawling, unsystematic folder.
research-init does not commit — it
leaves the scaffolding staged for you to review. It is idempotent: re-running
fills gaps, never overwrites. After onboarding, you register individual items
with the capability skills’ own verbs, not with research-init.
4. The core loop — a worked walkthrough
Running example: a project studying whether a learned data-augmentation policy improves out-of-distribution accuracy for an image classifier. We will take one hypothesis from raw idea to a signed verdict, then roll it into a paper.4a. Explore hypotheses (propose)
hypothesis-exploration runs an
idea pipeline into the paper’s backlog.md. Its verbs form a small state machine:
park → generate → rank → promote | drop.
own). A hypothesis
must be a falsifiable sentence, not a topic: “a learned augmentation policy
raises OOD top-1 accuracy by ≥2 points at equal in-distribution accuracy.” rank
advises; it never auto-selects. drop records a reason and retires the row — it
never deletes it (file-drawer discipline). This skill only proposes; you
promote.
4b. Test one hypothesis (dispose)
promote hands the claim to
hypothesis-testing, the resolve skill.
Its governing rule is science before engineering: you settle how you would
confirm or refute the claim before any code is designed. It drives four staged
documents, in order, under docs/research/<paper>/hypotheses/<slug>/:
hypothesis.md— the claim, why it matters, what confirming vs. refuting looks like. No method yet.strategy.md— the science. The decisive comparison and decision rule; at least one rival explanation plus a test that separates it; the rigor-kit choices (confirmatory-vs-exploratory tag, power/MDE, severity, TOST bounds if the claim is a null). It callsliterature positionfor an adversarial “would a reviewer say this is already known?” check, and declares the datasets it needs.defendfires here on the strategy — expect to defend your assumptions and falsifiers before moving on.design.md/plan.md— the engineering, delegated to the bound engineering backend (itsdesign→plancapabilities). Honest Scholar stores the results here but does not design experiments or write code itself. Executing the plan produces the runs.findings.md— the verdict:confirmed | refuted | inconclusive, tied to the strategy’s decision rule. Results are cited as backend run-refs, never hand-typed numbers. Before you sign, thedefendguardrail fires: it surfaces any gap; you may override, but the override is logged.
signed-off-by +
signed-off-date are set. And refuted is done, not failed: learning the
claim is false is successful science.
4c. Where literature and datasets plug in
-
literaturehas two modes over one citation-graph engine (OpenAlex + Semantic Scholar).scoutlooks outward (mines who-cited-whom for leads → ranked backlog rows with provenance);positionlooks inward (defends a committed claim → an adversarial precedent verdict at hypothesis level, a full related-works synthesis with a PRISMA-style audit log and baseline list at paper level). A--levelparameter tunes depth. It keeps thereferences.json+triage.ymlregistry; it proposes and surfaces, never adjudicates novelty. -
datasetmanages the data your strategy declares: verbsinit / register / fetch / verify / mirror / auditoverdatasets.yml. Each dataset gets a storage tier (A committed / B auto-retrievable / C gated), a SHA-256 fingerprint (authoritative; a mismatch is a hard fail), and a Gebru datasheet. You confirm tier and license — the skill proposes.
4d. How runs become evidence — the experiment-backend contract
Honest Scholar defines a contract; your repo supplies the implementation (bound in.honest-scholar/config.yml, named per paper in papers.md). The contract has four
capabilities:
Because every number resolves to an exact
id+version+sha256, results are
reproducible and staleness is honest. You never hand-copy a number: findings.md
cites run-refs, and tables writes the figures. is-current reports staleness;
you decide whether to re-run.
5. Papers: from candidate to publish decision
The paper level mirrors the hypothesis level one step up.-
paper-explorationproposes candidate papers intoportfolio-backlog.md— via generation lenses (mechanism-transfer, limitation-driven, result-driven) and optionallyliterature scout --level paper. Same verbs (park/generate/rank/promote/drop), same firewall.promoteregisters the paper inpapers.md(assigning itspaper-idand experiment-backend binding) and hands it to synthesis. -
paper-synthesisdevelops the committed paper through staged docs: pitch → positioning → outline/plan → decision → sections.positioning.md(vialiterature position --level paper) gives the taxonomy, concept matrix, PRISMA log, and baseline list. Section prose is assembled from a claim→evidence ledger (ledger.md) where each row is a Toulmin sextet (claim / grounds / warrant / backing / qualifier / rebuttal) and grounds cite run-refs. Thedecision.mdpublish/no-go verdict is a material, human-signed decision, gated by an examination over positioning + cited-work + claims. A no-go reads as done, not failed.
5a. Honest AI use — disclose & cite
When the paper is finalized you can add a truthful AI-use disclosure — a short statement of what you and the AI each did — plus a citation tohonest-scholar. The
template, how-to-cite, and an optional badge live in
../DISCLOSURE.md.
You should not have to remember this: after the publish decision is signed off,
paper-synthesis proactively proposes the
disclosure and citation, drafted from your provenance record (who signed off
which decisions, which run-refs back which results) — so it is evidence-based, not
boilerplate. It is opt-in and author-owned: you review, edit, adopt, or decline.
Plainly: every published paper that carries the disclosure points other researchers
to the tool. But Honest Scholar only supports honest disclosure — it does not
certify that your research is honest, and there is no seal of honesty. The statement
says what was done and links the record; readers judge.
6. Thesis (optional)
Only for a doctoral thesis-by-publication — a plain portfolio repo omits this level entirely.thesis is one skill with two modes:
framing(occasional) — set the aims and the narrative through-line, and map which portfolio papers compose the thesis (docs/research/thesis/aims.md).synthesis— assemble the kappa (the Nordic framing chapter that binds the papers; introduces no new findings) and clear the defensibility gate.
defend runs a full mock viva across all three targets, and you must
acknowledge each surfaced gap in writing (per-gap sign-off, not one blanket
override). Done = every aim covered by ≥1 paper and the kappa states a
coherent through-line. Never a paper count.
7. Cross-cutting: progress and defend
-
progressis read-only reporting.status <level> [id]rolls up state;dashboardregeneratesdocs/research/dashboard.mdas a pure projection of each artifact’s status frontmatter (never hand-edit it).Roll-up is semantic, not arithmetic: it surfaces coverage and blockers, never a percentage. A single refuted load-bearing hypothesis blocks its paper — an average would hide that. A refuted hypothesis reads as done/green. There are no scores, ever — that is a hard design invariant, not a missing feature. -
defendis the Socratic tutor-examiner. It is self-invoked on demand (examine me on this claim / cited work / method) and fires automatically as a guardrail before every material sign-off. It probes, teaches on a gap, and re-probes; it targetsclaim | cited-work | methodology. It offers author-selectable mentor personas — sounding board, critical examiner (default), directive editor, opt-in devil’s advocate — chosen by you or suggested by the stage, never inferred from your personality. It teaches established knowledge freely but never supplies the answer key to your novel claim.
8. API keys & credentials
Some services the tooling reaches key-gate their useful rate limits. Providing a key is optional — everything degrades gracefully without one — but it removes the throttling that otherwise stalls citation-graph work.
Honest Scholar keeps keys in a CLI-managed JSON store at
.honest-scholar/keys.json — never a .env — and reads them with
os.environ > store > unset precedence, so an environment variable always
wins (CI / secrets injection is unaffected) and an unset key just degrades the
service. Manage the store with the keys command group:
keys list/check and doctor report only presence and source, never a
value.
Honesty caveat — plaintext at rest. The store is not encrypted. Gitignore (.honest-scholar/keys.jsonis ignored) and0600file permissions limit exposure, but anyone who can read the file reads the keys. Treat it as convenience storage, not a secret vault. OS-keychain backing behind the samekeysinterface is a planned follow-up (issue #49).
9. Everyday tips
- What Honest Scholar will NOT do. It will not make a material decision for you (confirm/refute, publish/no-go, defensible), will not write your paper unattended, will not hand-copy result numbers, and will not produce a productivity score. Every judgement point stops and asks.
- Trust the firewall. If a skill refuses to test a claim it also generated, or refuses to adjudicate its own decision, that is by design — use the paired skill.
- Commits are attributed. Commits made via Honest Scholar skills carry a discovery
trailer, so provenance of an automated change is visible in
git log. Honest Scholar never auto-commitsresearch-initscaffolding — you review and commit. - Evidence is run-refs, not numbers. If a number can’t be traced to a run-ref, it doesn’t go in a findings doc or a paper section.
- Follow-ups become issues. Deferred checks and known gaps become
self-contained GitHub issues, not
TODOs buried in a doc. - Where the reasoning lives. Specs (the what) in
docs/design/; decision log with rejected alternatives (the why) indecisions/; verified source digests (the evidence) inresources/references/; fillable staged-doc skeletons inresources/templates/.
The shortest possible path:
research-init → hypothesis-exploration promote → hypothesis-testing (strategy, examined → delegate design/plan →
sign findings) → paper-exploration promote → paper-synthesis (positioning →
sign decision → sections) → progress dashboard. You drive every arrow; Honest Scholar
keeps the accounts and makes sure you can defend each signature.