scientific-similarity-checker — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited scientific-similarity-checker (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A multi-source literature search and academic integrity tool that analyzes a scientific article against global databases to surface similar work and flag potential misconduct.
Before searching anything, extract as much metadata as possible from the input. The input may be:
pdftotext or similarExtract these fields (mark each as found or inferred or missing):
title: (full title)
authors: (list: Last FM, Last FM, ...)
year: (publication or submission year)
journal: (journal/conference/preprint server name)
doi: (if present)
pmid: (if present)
abstract: (full abstract text)
keywords: (author-provided or extracted from abstract)
institution: (author affiliations if visible)
funding: (funding sources if visible)
corresponding: (corresponding author email/name)For the abstract, if not explicitly labeled, look for the structured paragraph immediately after author affiliations. Keywords may appear at the end of the abstract or in a separate section.
If the DOI is present, use it immediately to do a Crossref lookup (Phase 2a) — this often resolves all metadata at once.
Run these searches. The order matters: start with exact lookups, then broaden.
If a DOI is found:
GET https://api.crossref.org/works/{DOI}If a PMID is found:
GET https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id={PMID}&retmode=jsonThese anchor the article definitively and may reveal if it is already published.
Run 3 separate queries, collect top 10 results each:
"{short_title}"[ti] (use first 8-10 significant words){first_author_last}[au] AND {year-2}:{year+1}[dp]{keyword1}[tiab] AND {keyword2}[tiab] AND {keyword3}[tiab]See references/api-endpoints.md for full PubMed syntax reference.
Run 3 queries:
GET https://api.openalex.org/works?search={url_encoded_title}&per_page=10
First resolve author: GET https://api.openalex.org/authors?search={first_author_name}&per_page=5 Then: GET https://api.openalex.org/works?filter=author.id:{author_id}&per_page=20&sort=publication_year:desc
GET https://api.openalex.org/works?filter=primary_location.source.display_name.search:{journal_name}&search={keyword1}+{keyword2}&per_page=10
GET https://api.semanticscholar.org/graph/v1/paper/search?query={encoded_title}&limit=10&fields=title,authors,year,abstract,externalIds,citationCount,venue
GET https://api.semanticscholar.org/graph/v1/author/search?query={author_name}&limit=5&fields=name,papers Then fetch the author's recent papers.
GET https://export.arxiv.org/api/query?search_query=ti:{title_words}+AND+au:{first_author}&max_results=10Also search by abstract keywords:
GET https://export.arxiv.org/api/query?search_query=abs:{keyword1}+AND+abs:{keyword2}&max_results=10Use web_search tool for:
"{title}" IEEE — catches IEEE Xplore papers"{title}" site:scholar.google.com{first_author} {keyword1} {keyword2} {year} preprint"{title}" filetype:pdfIEEE has no free API; web search is the reliable path. Read full result pages with web_fetch when snippets suggest strong relevance.
For each retrieved article, compute a similarity profile across four dimensions.
Compare the input abstract against each retrieved abstract using textual overlap reasoning:
Thresholds:
Compare keywords, MeSH terms, and subject matter:
Count authors in common:
Note if the same group has published in:
Apply these tiered warning rules. Issue warnings prominently in the report.
Trigger when ANY of the following:
Always produce a structured report AND write it to a file (see Phase 6). Use this exact template:
# Scientific Similarity Analysis Report
## 📄 Article Analyzed
- **Title**: [extracted title]
- **Authors**: [list]
- **Year / Venue**: [year] | [journal/conference]
- **DOI**: [if found] | **PMID**: [if found]
- **Status**: [Published / Preprint / Unpublished manuscript]
---
## 🔍 Search Coverage
| Database | Queries Run | Results Found |
|---|---|---|
| PubMed | 3 | N |
| OpenAlex | 3 | N |
| Semantic Scholar | 2 | N |
| arXiv | 2 | N |
| IEEE/Web | 2 | N |
| Crossref (DOI) | 1 | N |
| **Total unique articles reviewed** | | **N** |
---
## ⚠️ Misconduct Assessment
[Insert RED FLAG / AMBER WARNING / GREEN / INFORMATIONAL badges here with explanations]
If no flags: "✅ No similarity patterns consistent with academic misconduct were detected."
---
## 📚 Similar Articles by Category
### By Content (Abstract / Methodology Overlap)
[List top 5, highest similarity first]
- **[Title]** — [Authors] — [Journal, Year] — [DOI/link]
- Similarity: [High/Moderate/Low] | [Brief note on what overlaps]
### By Topic / Keywords
[List top 5-8 thematically related papers]
### By Authors (Other Work from Same Team)
[List recent papers by the same first/last author]
### By Journal / Venue
[List recent papers from same journal on related topics]
---
## 🧭 Research Landscape Summary
[2-3 sentences: Where does this paper sit in the literature? Is it consistent with a research
program? Any unusual patterns in the publication record?]
---
## 🔗 Recommended Follow-Up
- [Any specific papers or authors worth deeper investigation]
- [Suggested searches the user could run manually]
- [Links to databases for manual review if needed]After composing the report, always save it as a file in the user's current working directory (do not just print it to chat).
Build a slug from the first author's last name + year + 4-word title stub, lowercased, ASCII-only, spaces/punctuation replaced with -. Example: smith-2024-deep-learning-glioma-similarity.md.
If metadata is missing, fall back to similarity-report-YYYYMMDD-HHMM.md using the current timestamp.
Write the full report template (the block above, with all sections filled in) to <slug>.md in the current directory. Use the write / file-creation tool available in the host; do not require /mnt/user-data/outputs/ — that path is specific to the Claude.ai web sandbox and will not exist for local CLI users.
If the user asks for HTML (phrases like "as html", "html report", "open in browser"), also produce <slug>.html. Use the first method that works:
pandoc <slug>.md -o <slug>.html --standalone --metadata title="Similarity Report" python3 -c "import markdown,sys; html=markdown.markdown(open('<slug>.md').read(), extensions=['tables','fenced_code']); print('<!DOCTYPE html><html><head><meta charset=\"utf-8\"><title>Similarity Report</title><style>body{font-family:system-ui,sans-serif;max-width:900px;margin:2em auto;padding:0 1em;line-height:1.5}table{border-collapse:collapse}td,th{border:1px solid #ccc;padding:6px 10px}code{background:#f4f4f4;padding:2px 4px}</style></head><body>'+html+'</body></html>')" > <slug>.htmlInstall with pip install --break-system-packages markdown if missing.
<pre> block insidea minimal HTML skeleton.
In the chat reply, output:
<slug>.md")Do not dump the full report contents into chat after writing the file — just point at it. The user opens the file when they want to read it.
Very common topic (thousands of papers): Prioritize recency (last 5 years) and exact phrase matches in title. Note that high volume is expected — focus on near-identical abstracts only.
No abstract visible: Work from title and keywords. State clearly that abstract-level similarity could not be assessed and recommend manual review of full text.
Preprint without authors: Search by title only. Flag that author-level analysis was not possible.
Non-English article: Detect the language, search in that language on PubMed (use [la] tag) and OpenAlex, and note that cross-language duplicate detection is limited.
Image input only (photo of paper): Extract as much text as possible visually. If abstract is partially cut off, note it and work with what's available.
User wants only research tool mode (no misconduct check): Skip Phase 4 entirely and focus on delivering a comprehensive related-work landscape for the topic.
in PubMed, OpenAlex, and Semantic Scholar)
can judge
references/api-endpoints.md — Full API endpoint reference for all databases with parametersreferences/misconduct-taxonomy.md — Detailed taxonomy of publication misconduct types,definitions, and authoritative sources (COPE, ORI, Retraction Watch)
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.