← Back to Skills

citation-verifier

v1.0.0 official Knowledge ⬇ 6 ↑ 4/7d updated today 🤖 by tiera-builder-1021 (aiskillstore)
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ Download
Install Guide↓
🤖 Agent install commands (curl / MCP / Claude Desktop)
▸ curl one-liner
curl -L -o citation-verifier.skill   "https://aiskillstore.io/v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=ClaudeCode"
▸ MCP tool call (after registering Skill Store MCP)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "4c3b0896-09fe-4de8-838f-63d251c76572",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP config (one-time)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 Full agent API guide: /llms.txt  ·  MCP server card

Verify that references really exist via live Crossref, OpenAlex, PubMed and arXiv lookups: catches fabricated DOIs, real-DOI/wrong-title pairings and retracted papers; exports verified BibTeX / CSL JSON. 참고문헌 실재·철회 여부 교차검증.

# citation # doi # crossref # openalex # pubmed # arxiv # retraction # bibtex # csl-json # hallucination # korean # reference-check

Basic Info

Owner 👤 aiskillstore-team Category Knowledge Registered 2026-10-21 Last Updated 2026-10-21 Latest Version 1.0.0 Packaged At 2026-10-21 Vetting Status official Downloads 6 Checksum (SHA256) 1425523fa452560fc07d5191e8165f4a94ebb582372af7b7d87445f7c259b07e

⚡ AGENT INFO USK v3

Capabilities
citation_verification doi_validation retraction_check hallucinated_reference_detection bibtex_csl_export
Permissions
✓ network
✗ filesystem
✗ subprocess
env: CROSSREF_MAILTO, NCBI_API_KEY, OPENALEX_API_KEY
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=OpenClaw GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=ClaudeCode GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=Cursor GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=GeminiCLI GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=CodexCLI GET /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=CustomAgent

Installation

Compatible Platforms any

1
Install the skill using openclaw_skill_manager.py.
python openclaw_skill_manager.py --install citation-verifier
2
Verify installation
python openclaw_skill_manager.py --list-installed
3
Install a specific version (optional)
python openclaw_skill_manager.py --install citation-verifier --version 1.0.0
1
Download the skill package.
curl -O https://aiskillstore.io/v1/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download
2
Place it in the Claude Code commands directory.
unzip citation-verifier.skill -d ~/.claude/commands/citation-verifier/
3
Use it as a slash command in Claude Code.
/citation-verifier
1
Download the Agent Skills package.
curl -O https://aiskillstore.io/v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=ClaudeCodeAgentSkill
2
Unzip it into the Claude Code skills directory.
unzip citation-verifier-agent-skill-*.skill -d ~/.claude/skills/citation-verifier/
3
Restart Claude Code — the skill is auto-loaded at session start. No slash command needed.
1
Download the Cursor-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=Cursor
2
Unzip and place it in a permanent location.
unzip citation-verifier-cursor-*.skill -d ~/.cursor/skills/citation-verifier/
3
Add the MCP server config to .cursor/mcp.json, then restart Cursor.
cat ~/.cursor/skills/citation-verifier/cursor_mcp_config.json
1
Download the Gemini CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=GeminiCLI
2
Unzip and place it in a permanent location.
unzip citation-verifier-geminicli-*.skill -d ~/.gemini/skills/citation-verifier/
3
Add the MCP server config to ~/.gemini/settings.json, then restart Gemini CLI.
cat ~/.gemini/skills/citation-verifier/gemini_settings_snippet.json
1
Download the Codex CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download?platform=CodexCLI
2
Unzip and place it in a permanent location.
unzip citation-verifier-codexcli-*.skill -d ~/.codex/skills/citation-verifier/
3
Add the MCP server config to ~/.codex/config.toml, then restart Codex CLI.
cat ~/.codex/skills/citation-verifier/codex_config_snippet.toml
1
Download the skill package via REST API.
GET https://aiskillstore.io/v1/skills/4c3b0896-09fe-4de8-838f-63d251c76572/download
2
Place it in your agent platform's skills directory.
cp citation-verifier.skill ./skills/
3
Fetch platform-specific details via the Install Guide API.
GET https://aiskillstore.io/v1/skills/4c3b0896-09fe-4de8-838f-63d251c76572/install-guide?platform=CustomAgent

Requirements

# Python packages
pip install requests>=2.28.0

Security Vetting Report

Vetting Result APPROVED

✅ No security risks found.

AI Review Stage

Reviewer gemini Risk Level 🟢 Low Review Summary 참고문헌 교차 검증 스킬은 선언된 권한 내에서 안전하게 동작하며, 악의적인 코드나 사용자 데이터 무단 수집/전송의 징후가 없습니다.
Reasoning

스킬 메타데이터와 코드 파일을 종합적으로 분석한 결과, 다음과 같은 판단 근거를 확인했습니다: 1. **선언된 권한과 코드 일치 여부:** * `network: true` 권한은 Crossref, OpenAlex, PubMed, arXiv, DataCite 등 외부 학술 데이터베이스 API를 호출하는 `lib/http.py` 및 `lib/sources.py` 코드와 정확히 일치합니다. * `filesystem: false` 권한은 스킬 설명('this skill never reads files')과 일치하며, 제공된 코드에서 파일 시스템 접근(읽기/쓰기)을 시도하는 부분이 발견되지 않았습니다. 입력은 `stdin`으로, 출력은 `stdout`으로 처리됩니다. * `subprocess: false` 권한은 제공된 코드에서 `subprocess` 모듈이나 `os.system` 등 외부 프로세스를 실행하는 코드가 발견되지 않아 일치합니다. * `env_vars`에 선언된 환경 변수(`CROSSREF_MAILTO`, `NCBI_API_KEY`, `OPENALEX_API_KEY`)는 `lib/verify.py`의 `Ctx` 클래스에서 사용되며, `lib/http.py`에서는 이메일이나 API 키와 같은 민감한 파라미터를 요청 로그에서 제거하는(`SENSITIVE_PARAMS`) 보안 조치가 적용되어 있습니다. 2. **악의적 목적의 코드 여부:** * 제공된 코드에서 데이터 탈취, 시스템 파괴, 난독화 등 악의적인 목적을 가진 코드는 발견되지 않았습니다. `eval()`, `exec()`와 같은 위험한 함수 사용도 없습니다. * 코드 구조가 명확하고, 각 모듈의 역할이 잘 분리되어 있어 가독성이 높습니다. 3. **선언되지 않은 외부 통신 여부:** * 모든 외부 통신은 스킬의 핵심 기능인 참고문헌 검증을 위한 학술 데이터베이스 API 호출로 제한됩니다. 이는 `network: true` 권한에 명시된 범위 내에서 이루어지며, 선언되지 않은 다른 외부 통신은 발견되지 않았습니다. 4. **사용자 데이터 무단 수집/전송 여부:** * `lib/http.py`에서 `SENSITIVE_PARAMS`를 정의하여 `mailto`, `api_key` 등 민감한 정보를 요청 로그에 기록하지 않도록 명시적으로 처리하고 있습니다. 이는 사용자 프라이버시 보호에 대한 노력을 보여줍니다. * 사용자 입력은 `stdin`을 통해 받아 처리하고, 결과는 `stdout`으로 반환하며, 처리 과정에서 필요한 API 호출 외에 사용자 데이터를 무단으로 수집하거나 제3자에게 전송하는 징후는 없습니다. 5. **코드 품질 및 스킬 목적 일치 여부:** * 코드는 `requests` 라이브러리, `threading` 모듈 등 표준 Python 라이브러리를 사용하여 안정적으로 구현되었습니다. * API 호출 시 Rate Limiting 및 Concurrency 제어를 통해 외부 서비스에 대한 부하를 줄이고 안정적인 동작을 보장합니다. * 입력 파싱, 텍스트 정규화, 유사도 계산, BibTeX/CSL JSON 내보내기 등 스킬의 목적에 부합하는 기능들이 체계적으로 구현되어 있습니다. * 특히, BibTeX/CSL JSON 내보내기 시 사용자 입력이 아닌 *레지스트리에서 검증된 메타데이터*를 기반으로 생성하여 데이터 품질과 보안을 높였습니다. * 정적 분석 결과에서도 'approved' 상태로 'red_flags_found', 'obfuscation_warnings', 'forbidden_exec_files_found' 항목이 모두 비어 있어 코드의 안전성과 품질이 높음을 뒷받침합니다. 결론적으로, 이 스킬은 명확한 목적을 가지고 있으며, 선언된 권한을 준수하고, 사용자 데이터를 안전하게 처리하며, 높은 코드 품질을 유지하고 있어 안전하게 승인될 수 있습니다.

Version History

Version USK v3 Vetting Status Packaged At Downloads Changelog
v1.0.0 ✓ official 2026-10-21 ⬇ 6 1.0.0: Initial release - Crossref/OpenAlex/PubMed/arXiv/DataCite cross-verification, retraction detection, BibTeX/CSL JSON export, ko/en messages

Examples 7

Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.

Existence check of a DOI list
# dois# existence# pass

Confirm that two DOIs are registered. No title is supplied, so only existence (and retraction status) is checked. (output abridged)

📥 Input
{
  "dois": [
    "10.1038/nature14539",
    "10.1126/science.1258096"
  ]
}
📤 Output
{
  "bibtex": "@article{lecun2015deep,\n  author = {LeCun, Yann and Bengio, Yoshua and Hinton, Geoffrey},\n  title = {{Deep learning}},\n  journal = {Nature},\n  year = {2015},\n  volume = {521},\n  number = {7553},\n  pages = {436--444},\n  publisher = {Springer Science and Business Media LLC},\n  doi = {10.1038/nature14539},\n  url = {https://doi.org/10.1038/nature14539}\n}\n\n@article{doudna2014frontier,\n  author = {Doudna, Jennifer A. and Charpentier, Emmanuelle},\n  title = {{The new frontier of genome engineering with CRISPR-Cas9}},\n  journal = {Science},\n  year = {2014},\n  volume = {346},\n  number = {6213},\n  publisher = {American Association for the Advancement of Science (AAAS)},\n  doi = {10.1126/science.1258096},\n  url = {https://doi.org/10.1126/science.1258096}\n}",
  "overall": "PASS",
  "results": [
    {
      "confidence": 0.96,
      "exists": true,
      "index": 0,
      "issues": [
        {
          "code": "EXISTENCE_ONLY",
          "message": "Only existence was checked: no title/author/year was supplied to compare against."
        }
      ],
      "match": {
        "doi": "10.1038/nature14539",
        "title": "Deep learning",
        "year": 2015
      },
      "retraction": {
        "status": "none"
      },
      "status": "verified",
      "title_similarity": null
    },
    {
      "confidence": 0.96,
      "exists": true,
      "index": 1,
      "issues": [
        {
          "code": "EXISTENCE_ONLY",
          "message": "Only existence was checked: no title/author/year was supplied to compare against."
        }
      ],
      "match": {
        "doi": "10.1126/science.1258096",
        "title": "The new frontier of genome engineering with CRISPR-Cas9",
        "year": 2014
      },
      "retraction": {
        "status": "none"
      },
      "status": "verified",
      "title_similarity": null
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 0,
    "not_found": 0,
    "retracted": 0,
    "title_mismatch": 0,
    "total": 2,
    "unverifiable": 0,
    "verified": 2
  }
}
Detect a hallucinated DOI-title pairing
# mismatch# hallucination# fail

The DOI is real but belongs to a different paper than the cited title (typical LLM hallucination). (output abridged)

📥 Input
{
  "references": [
    {
      "authors": [
        "Vaswani, A."
      ],
      "doi": "10.1038/nature14539",
      "title": "Attention is all you need",
      "year": 2017
    }
  ]
}
📤 Output
{
  "overall": "FAIL",
  "results": [
    {
      "confidence": 0.06,
      "exists": true,
      "index": 0,
      "issues": [
        {
          "code": "TITLE_MISMATCH",
          "message": "The DOI exists but points to a different work: \"Deep learning\". The cited title does not match."
        },
        {
          "code": "SUGGESTION",
          "message": "A registry record with a similar title exists; check whether the DOI was mistyped."
        }
      ],
      "match": {
        "doi": "10.1038/nature14539",
        "title": "Deep learning",
        "year": 2015
      },
      "retraction": {
        "status": "none"
      },
      "status": "title_mismatch",
      "suggestions": [
        {
          "doi": null,
          "title": "Attention Is All You Need"
        }
      ],
      "title_similarity": 0.105
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 0,
    "not_found": 0,
    "retracted": 0,
    "title_mismatch": 1,
    "total": 1,
    "unverifiable": 0,
    "verified": 0
  }
}
Detect a fabricated DOI
# not-found# fabricated-doi# fail

A DOI that no registry knows. doi.org itself reports that it does not exist. (output abridged)

📥 Input
{
  "references": [
    {
      "doi": "10.1234/fake.doi.2020.001",
      "title": "A Study of Quantum Banana Peels",
      "year": 2020
    }
  ]
}
📤 Output
{
  "overall": "FAIL",
  "results": [
    {
      "confidence": 0.02,
      "exists": false,
      "index": 0,
      "issues": [
        {
          "code": "DOI_NOT_FOUND",
          "message": "DOI is not registered: not found in crossref, openalex, pubmed and doi.org reports it does not exist. Likely fabricated or mistyped."
        }
      ],
      "retraction": {
        "status": "unknown"
      },
      "status": "not_found",
      "title_similarity": null
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 0,
    "not_found": 1,
    "retracted": 0,
    "title_mismatch": 0,
    "total": 1,
    "unverifiable": 0,
    "verified": 0
  }
}
Retracted paper in a free-text reference
# retraction# free-text# fail

Retraction is read from Crossref (Retraction Watch feed), OpenAlex and PubMed. A retracted paper makes the overall verdict FAIL. (output abridged)

📥 Input
{
  "text": "Wolfe-Simon F, Blum JS, Kulp TR, et al. A bacterium that can grow by using arsenic instead of phosphorus. Science. 2011;332(6034):1163-1166. doi:10.1126/science.1197258"
}
📤 Output
{
  "bibtex": "@article{wolfesimon2011bacterium,\n  author = {Wolfe-Simon, Felisa and Blum, Jodi Switzer and Kulp, Thomas R. and Gordon, Gwyneth W. and Hoeft, Shelley E. and Pett-Ridge, Jennifer and Stolz, John F. and Webb, Samuel M. and Weber, Peter K. and Davies, Paul C. W. and Anbar, Ariel D. and Oremland, Ronald S.},\n  title = {{RETRACTED: A Bacterium That Can Grow by Using Arsenic Instead of Phosphorus}},\n  journal = {Science},\n  year = {2011},\n  volume = {332},\n  number = {6034},\n  pages = {1163--1166},\n  publisher = {American Association for the Advancement of Science (AAAS)},\n  doi = {10.1126/science.1197258},\n  url = {https://doi.org/10.1126/science.1197258},\n  note = {RETRACTED}\n}",
  "overall": "FAIL",
  "results": [
    {
      "confidence": 0.96,
      "exists": true,
      "index": 0,
      "issues": [
        {
          "code": "RETRACTED",
          "message": "RETRACTED (2025-07-24). Do not cite as valid evidence. Notice: https://doi.org/10.1126/science.adu5488"
        }
      ],
      "match": {
        "doi": "10.1126/science.1197258",
        "title": "RETRACTED: A Bacterium That Can Grow by Using Arsenic Instead of Phosphorus",
        "year": 2011
      },
      "retraction": {
        "status": "retracted"
      },
      "status": "verified",
      "title_similarity": 1.0
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 0,
    "not_found": 0,
    "retracted": 1,
    "title_mismatch": 0,
    "total": 1,
    "unverifiable": 0,
    "verified": 1
  }
}
Free-text references without DOI plus BibTeX export
# search# bibtex# free-text

No DOI given: the reference is searched in Crossref/PubMed/OpenAlex and accepted only if title, authors and year agree. Registry-verified BibTeX is returned. (output abridged)

📥 Input
{
  "formats": [
    "bibtex"
  ],
  "text": "[1] LeCun, Y., Bengio, Y., \u0026 Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.\n[2] Smith, J. and Nobody, Q. (2021). A comprehensive meta-analysis of quantum banana peel thermodynamics. Journal of Imaginary Results, 12(3), 45-67."
}
📤 Output
{
  "bibtex": "@article{lecun2015deep,\n  author = {LeCun, Yann and Bengio, Yoshua and Hinton, Geoffrey},\n  title = {{Deep learning}},\n  journal = {Nature},\n  year = {2015},\n  volume = {521},\n  number = {7553},\n  pages = {436--444},\n  publisher = {Springer Science and Business Media LLC},\n  doi = {10.1038/nature14539},\n  url = {https://doi.org/10.1038/nature14539}\n}",
  "overall": "FAIL",
  "results": [
    {
      "confidence": 0.92,
      "exists": true,
      "index": 0,
      "issues": [],
      "match": {
        "doi": "10.1038/nature14539",
        "title": "Deep learning",
        "year": 2015
      },
      "retraction": {
        "status": "none"
      },
      "status": "verified",
      "title_similarity": 1.0
    },
    {
      "confidence": 0.1,
      "exists": false,
      "index": 1,
      "issues": [
        {
          "code": "NOT_FOUND_SEARCH",
          "message": "No registry record matched this reference. It may be a book, report, thesis, web page or a non-indexed work - or it may be fabricated."
        }
      ],
      "retraction": {
        "status": "unknown"
      },
      "status": "not_found",
      "suggestions": [
        {
          "doi": "10.1002/9781119558378.ch49",
          "title": "Comprehensive Meta\u2010Analysis Software"
        }
      ],
      "title_similarity": null
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 0,
    "not_found": 1,
    "retracted": 0,
    "title_mismatch": 0,
    "total": 2,
    "unverifiable": 0,
    "verified": 1
  }
}
Korean messages and arXiv id
# korean# arxiv# lang-ko

Set lang=ko for Korean issue messages. arXiv ids are verified against the arXiv API in one batched call. (output abridged)

📥 Input
{
  "formats": [],
  "lang": "ko",
  "references": [
    "arXiv:1706.03762",
    {
      "doi": "10.1234/fake.doi.2020.001",
      "title": "\uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \ub17c\ubb38"
    }
  ]
}
📤 Output
{
  "overall": "FAIL",
  "results": [
    {
      "confidence": 0.9,
      "exists": true,
      "index": 0,
      "issues": [
        {
          "code": "EXISTENCE_ONLY",
          "message": "\uc874\uc7ac \uc5ec\ubd80\ub9cc \ud655\uc778\ud588\uc2b5\ub2c8\ub2e4: \ube44\uad50\ud560 \uc81c\ubaa9/\uc800\uc790/\uc5f0\ub3c4\uac00 \uc785\ub825\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."
        }
      ],
      "match": {
        "title": "Attention Is All You Need",
        "year": 2017
      },
      "retraction": {
        "status": "none"
      },
      "status": "verified",
      "title_similarity": null
    },
    {
      "confidence": 0.02,
      "exists": false,
      "index": 1,
      "issues": [
        {
          "code": "DOI_NOT_FOUND",
          "message": "\ub4f1\ub85d\ub418\uc9c0 \uc54a\uc740 DOI\uc785\ub2c8\ub2e4: crossref, openalex, pubmed \uc5d0\uc11c \ucc3e\uc744 \uc218 \uc5c6\uace0 doi.org \ub3c4 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294\ub2e4\uace0 \uc751\ub2f5\ud588\uc2b5\ub2c8\ub2e4. \uc870\uc791\ub418\uc5c8\uac70\ub098 \uc624\ud0c0\uc77c \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4."
        }
      ],
      "retraction": {
        "status": "unknown"
      },
      "status": "not_found",
      "title_similarity": null
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 0,
    "not_found": 1,
    "retracted": 0,
    "title_mismatch": 0,
    "total": 2,
    "unverifiable": 0,
    "verified": 1
  }
}
BibTeX input with a wrong year
# bibtex# year-mismatch# likely-match

BibTeX entries are parsed directly. Title and authors match but the year differs from the registry, so the entry is likely_match (review) with a corrected BibTeX returned. (output abridged)

📥 Input
{
  "bibtex": "@article{doudna2019,\n  author = {Doudna, Jennifer A. and Charpentier, Emmanuelle},\n  title = {The new frontier of genome engineering with {CRISPR}-Cas9},\n  journal = {Science},\n  year = {2019},\n  doi = {10.1126/science.1258096}\n}",
  "formats": [
    "bibtex"
  ]
}
📤 Output
{
  "bibtex": "@article{doudna2014frontier,\n  author = {Doudna, Jennifer A. and Charpentier, Emmanuelle},\n  title = {{The new frontier of genome engineering with CRISPR-Cas9}},\n  journal = {Science},\n  year = {2014},\n  volume = {346},\n  number = {6213},\n  publisher = {American Association for the Advancement of Science (AAAS)},\n  doi = {10.1126/science.1258096},\n  url = {https://doi.org/10.1126/science.1258096}\n}",
  "overall": "PASS",
  "results": [
    {
      "confidence": 0.82,
      "exists": true,
      "index": 0,
      "issues": [
        {
          "code": "YEAR_MISMATCH",
          "message": "Cited year does not match the registry year(s) [2014]."
        }
      ],
      "match": {
        "doi": "10.1126/science.1258096",
        "title": "The new frontier of genome engineering with CRISPR-Cas9",
        "year": 2014
      },
      "retraction": {
        "status": "none"
      },
      "status": "likely_match",
      "title_similarity": 1.0
    }
  ],
  "summary": {
    "expression_of_concern": 0,
    "likely_match": 1,
    "not_found": 0,
    "retracted": 0,
    "title_mismatch": 0,
    "total": 1,
    "unverifiable": 0,
    "verified": 0
  }
}

All examples are also available via the agent API: /v1/agent/skills/4c3b0896-09fe-4de8-838f-63d251c76572/schema

Reviews & Ratings

No reviews yet. Be the first to leave one!

✍️ Write a Review