About check-originality
A research-writing skill for checking drafts against supplied, open-access, and publicly searchable sources. It reports overlap and citation concerns while clearly limiting what the check can establish.
Key features
- 01Compare draft with provided sources
- 02Detect self-recycling and internal duplicates
- 03Review quotes and close paraphrases
- 04Search distinctive phrases externally
- 05Flag claims that may need citations
Use cases
- 01Check a paper before submission
- 02Review reuse of an author's prior papers
- 03Check a co-authored draft for copied text
- 04Review text after AI-assisted drafting
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ shaishavmaisuria/ research-paper-lifecycle-skills --skill check-originalityAfter installing, type/check-originalityin Claude Code to confirm it loaded.
Bundled filesreferences/detection-methods.mdscripts/overlap_check.py
Details
From the project READMECheck Originality
Multi-method originality check that catches the overlap which actually gets papers desk-rejected or retracted — before an editor's integrity scan does.
Read this honestly and tell the user: this is not iThenticate or Turnitin. It has no access to any private publisher corpus, so it cannot guarantee a passage is original against all published literature. What it does reliably is detect overlap against sources you can name or fetch, internal text recycling, and distinctive phrases that are publicly searchable. For a journal's official originality report you still need the publisher's tool — this gets your draft clean first.
When to use
- Before submission, to catch accidental copy-paste and close paraphrase.
- When reusing your own prior work (text recycling / self-plagiarism is a real violation at most venues even though it's "your" text).
- When a co-authored draft may contain a collaborator's verbatim text from elsewhere.
- After heavy AI drafting, to confirm nothing was reproduced verbatim from a source.
The detection methods (run several — that's what "catch it properly" means)
See references/detection-methods.md for the full method and thresholds.
- Source overlap — shingle (k-gram) comparison against sources the user provides or that
fetch-paperpulls (open-access only). Reports matched passages + overlap %. - Self-plagiarism / recycling — near-duplicate passages against the author's own prior papers, and internal duplication within the draft.
- Quote & paraphrase integrity — verbatim spans that lack quotation marks or a citation; paraphrases that stay too close to the source's wording.
- Distinctive-phrase external search — pull the draft's most distinctive long phrases and search the web / Semantic Scholar for verbatim matches the local check can't see.
- Common-knowledge vs needs-citation — flag factual claims presented without a citation that likely need one (hand off specifics to
verify-citations).
Process
- Gather comparison sources. Ask the user for: their own prior papers (for self-plagiarism), any suspected sources, and the paper's own cited references (fetch the open-access ones with
fetch-paper). More sources = a more meaningful check; say so. - Run source + self overlap:
It prints flagged sources (overlap %), the matched passages, internal near-duplicates, and distinctive phrases. Exit code 2 if anything is flagged.python3 scripts/overlap_check.py --draft paper.tex --against prior1.tex prior2.tex source.txt --self --distinctive 15 - External pass. Take the emitted distinctive phrases and search them (web + Semantic Scholar via
find-papers) for verbatim hits the local pass couldn't see. Record any matches. - Quote/paraphrase review. For each flagged passage, decide: is it a legitimate quote (then it needs quotation marks + citation), an over-close paraphrase (rewrite in the author's own words), or copied (remove/rewrite + cite). Self-overlap with prior work → flag as recycling and advise disclosure or rewrite.
- Report to
paper-workspace/review/originality-report.mdin the user's paper workspace: each finding with source, the overlapping text, severity, and the fix — plus the explicit scope caveat.
Output
An originality report listing, per finding: the source, the overlapping passage, overlap %, type (external copy / self-recycle / unquoted / close-paraphrase), severity, and the recommended fix. Always includes the scope/limitations note and a reminder that the publisher's own tool is still authoritative.
Guardrails
- Never claim a clean result means the paper is plagiarism-free — only that no overlap was found against the sources checked. State the limitation every time.
- Comparison sources are processed transiently; never bundle or commit third-party paper text (see
fetch-paper). Only the user's own papers and open-access sources are fetched. - Never rewrite a flagged passage to merely evade detection while keeping the copied idea uncited — the fix is proper quotation/citation or genuine rephrasing, and surfacing it to the author.
- Self-overlap with the author's own work is reported as an ethics/recycling issue, not silently passed.
Memory
Uses the shared .paper-memory/ convention (full spec: paper-memory-convention.md).
- At start: read
lessons.mdfor prior originality flags so repeat offenders (a section the author keeps recycling) are checked first. - At end: append durable findings —
date · check-originality · <scope> · finding · fix— after deduping. A passage recycled across multiple drafts isrecurring. - Create
.paper-memory/on demand; it is local-only, never uploaded.