{"id":50938499,"url":"https://github.com/reactome/reactome-curator-workflows","last_synced_at":"2026-06-17T11:32:30.090Z","repository":{"id":351805493,"uuid":"1211486189","full_name":"reactome/reactome-curator-workflows","owner":"reactome","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-28T16:05:08.000Z","size":16818,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-11T12:41:51.741Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reactome.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-15T12:48:45.000Z","updated_at":"2026-05-28T16:05:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/reactome/reactome-curator-workflows","commit_stats":null,"previous_names":["reactome/reactome-curator-workflows"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/reactome/reactome-curator-workflows","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-curator-workflows","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-curator-workflows/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-curator-workflows/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-curator-workflows/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reactome","download_url":"https://codeload.github.com/reactome/reactome-curator-workflows/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactome%2Freactome-curator-workflows/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34447264,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-17T11:32:28.984Z","updated_at":"2026-06-17T11:32:30.067Z","avatar_url":"https://github.com/reactome.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# reactome-curator-workflows\n\nShared Claude Code workflow skills for Reactome curation and release operations.\n\n## What This Is\n\nThis repository contains Claude Code skills — markdown-based instruction files that\nClaude Code reads directly. Any curator with Claude Code installed can clone this repo\nand immediately run any skill. No build process, no configuration beyond cloning.\n\nSkills are added incrementally as we identify and vet repeatable workflows.\nSee `CLAUDE.md` for full project context.\n\n---\n\n## Documentation\n\nFull setup and usage instructions are in:\n\n**[Reactome_CuratorWorkflows_ClaudeCode_Guide_v1_3.docx](./Reactome_CuratorWorkflows_ClaudeCode_Guide_v1_3.docx)**\n\nThis covers one-time prerequisites, cloning the repository, running each skill, and\nhow to add new skills. Start here if you are setting up for the first time.\n\n---\n\n## Setup (Quick Reference)\n\n### 1. Prerequisites (one-time)\n\nInstall Git: https://git-scm.com/downloads\n\nInstall Claude Code:\n\n```bash\ncurl -fsSL https://claude.ai/install.sh | bash\n```\n\nSet your Anthropic API key (add to `~/.zshrc`):\n\n```bash\nexport ANTHROPIC_API_KEY=your-key-here\n```\n\nInstall Python dependencies (use `pip3` on macOS):\n\n```bash\npip3 install pandas openpyxl\n```\n\n### 2. Clone the repository\n\n```bash\ngit clone https://github.com/reactome/reactome-curator-workflows.git ~/Developer/reactome-curator-workflows\ncd ~/Developer/reactome-curator-workflows\n```\n\n### 3. Run Claude Code\n\n```bash\ncd ~/Developer/reactome-curator-workflows\nclaude\n```\n\nClaude Code automatically reads `CLAUDE.md` and loads all skills at session start.\nThe `.claude/settings.json` file allowlists external hosts (e.g., NCBI E-utilities)\nrequired by certain skills.\n\n### 4. Keep up to date\n\n```bash\ncd ~/Developer/reactome-curator-workflows\ngit pull\n```\n\n---\n\n## Available Skills\n\n### `/internal-module-review`\n\nFormal structured internal review of a Reactome pathway report against Curator Guide\nV94 standards. Produces a prioritized review DOCX with seven sections. Upload the\npathway report DOCX and Curator Guide PDF to the conversation before invoking.\nOptional modifiers: `disease`, `drug`, `large`.\n\n**Sections:**\n\n| Section | What it covers |\n|---|---|\n| 1 | Reaction connectivity, including Input→Output entity chain verification |\n| 2 | GO Biological Process assignments |\n| 3 | Literature references |\n| 4 | Grammar, clarity, and summation quality |\n| 5 | General curation quality |\n| 6 | Prioritized issue summary (consolidated table, all sections) |\n| 7 | Entity and event name conventions |\n\nSection 7 checks every entity and event name against the Reactome controlled vocabulary\n(Jupe et al. 2014) and associated naming rules. Five subsections cover EWAS/peptide names\n(gene symbol, coordinates, PTM prefixes), reaction/event names (all 11 CV classes), small\nmolecule names, complex names (colon separator, square bracket hierarchy notation), and\nset names (comma separator, candidate member notation). Naming convention reference files\nare automatically loaded — no additional uploads required.\n\n```\n/internal-module-review \"HHV8 Infection\" R-HSA-9521541 \"Lisa Matthews\" 2026-04-15\n```\n\n---\n\n### `/annotate-pathway-from-reviews-or-topic_name`\n\nAI-assisted pre-curation workflow (v1.3, April 2026). Proposes a complete Reactome\npathway hierarchy — pathway names, subpathway names, and reaction names — and verifies\nprimary literature citations using a mandatory ten-step PMID verification protocol.\n\nRequires claude.ai Projects (Pro/Team/Enterprise) or the Claude API. PubMed and PMC\nMCP servers are recommended for live PMID verification and full-text fetch.\n\n**Two entry modes:**\n\n- **Mode A** — Curator supplies references (PMIDs, DOIs, or uploaded PDFs); assistant\n  reads the papers and proceeds directly to Phase 1.\n- **Mode B** — Curator supplies a biological topic; assistant performs live web searches\n  for primary literature, presents a ranked candidate reference list, and waits for\n  curator confirmation before proceeding.\n\n**Session workflow:**\n\n```\nSession opening\n    │\n    ├── Mode A: Curator supplies references\n    │       └── Assistant reads papers → proceeds to Phase 1\n    │\n    └── Mode B: Curator supplies a topic\n            │   Assistant searches → presents ranked reference list\n            └── STOP — curator confirms or modifies list\n                    └── Curator replies \"proceed\"\n\nPhase 1 — Hierarchy proposal\n    Proposed pathway / subpathway / reaction names\n    Evidence species flags (human / non-human / chimeric)\n    Non-human and chimeric reactions paired with inferred human reactions\n    Proceeds immediately to Phase 2 — no approval gate\n\nPhase 2 — Literature verification\n    Ten-step PMID verification protocol per reaction\n    PMC full-text fetch and verbatim evidence sentence extraction\n    Standard or inferred-human citation blocks\n    Subpathway by subpathway — no stops between subpathways\n\nSTOP — full output presented for curator review\n```\n\n**Citation block formats:**\n\nStandard (direct or indirect evidence):\n```\nReaction name:    [name from hierarchy]\nPrimary PMID:     https://pubmed.ncbi.nlm.nih.gov/[PMID]/\nPrimary PMC URL:  https://pmc.ncbi.nlm.nih.gov/articles/PMCXXXXXXX/\nAuthors/Year:     [First author et al., Year, Journal]\nPrimary evidence: \"[verbatim sentence including method, proteins, cell type, figure]\"\nEvidence type:    DIRECT / INDIRECT / OVEREXP ONLY\nSpecies:          [human / murine / other]\nFlags:            [mismatches, gaps, curator actions required]\n```\n\nInferred human reaction:\n```\nReaction name:    [inferred human reaction name]\nEvidence type:    INFERRED FROM NON-HUMAN / INFERRED FROM CHIMERIC\nSpecies:          Homo sapiens (inferred)\ninferredFrom:     [paired non-human or chimeric reaction name]\nPrimary PMID:     https://pubmed.ncbi.nlm.nih.gov/[PMID]/\nAuthors/Year:     [same as paired evidence reaction]\nFlags:            No independent human experimental evidence. Curator should\n                  confirm human orthology is supported before submission.\n```\n\n**Species and chimeric reaction logic:**\n\n| Experimental situation | Reaction type | isChimeric | Inferred human required |\n|---|---|---|---|\n| Human proteins/cells only | Human reaction | FALSE | No |\n| Single non-human species only | Non-human reaction | FALSE | Yes |\n| ≥2 species mixed in same assay | Chimeric reaction | TRUE | Yes |\n\nNon-human proteins use initial capitalisation (Jak2); human proteins use ALL-CAPS (JAK2).\n\n**Evidence classification:**\n\n| Class | Reaction type | Examples |\n|---|---|---|\n| DIRECT | Reaction | co-IP, in vitro reconstitution, SPR/ITC, NMR, crystallography, direct enzymatic assay |\n| INDIRECT | BlackBoxEvent (provisional) | KO, rescue, overexpression, inhibitor treatment, domain deletion |\n| INSUFFICIENT | Do not annotate | Microarray alone, bulk proteomics alone, ChIP-seq alone, computational prediction alone |\n\n**What is out of scope** — handled separately by the curator using database tooling:\nNeo4j/gk_central queries, OLS ontology verification, UniProt REST API verification,\nGtoPdb drug checks, full annotation table population, disease flag resolution, and\npathway diagram drawing. All such fields are marked **PENDING CURATOR VERIFICATION**.\n\n**Key limitations:**\n\n- **PMID fabrication risk.** The ten-step protocol catches fabricated PMIDs, but\n  curators should independently confirm all PMIDs before database submission.\n- **Full-text access.** PMC full text fetched for open-access papers only; paywalled\n  papers fall back to web search and are flagged if unavailable.\n- **Knowledge cutoff.** Mode B performs live searches, but curators should verify that\n  the most recent relevant primary papers have been captured.\n- **Ontology accessions.** GO, ChEBI, MONDO, and UniProt accessions are not resolved\n  in this workflow — all marked PENDING CURATOR VERIFICATION.\n\nFor the full workflow documentation, citation block reference, species/chimeric rules,\nand version history, see\n`.claude/skills/annotate-pathway-from-reviews-or-topic_name/README.md`.\n\n```\n/annotate-pathway-from-reviews-or-topic_name\n```\n\n---\n\n### `/generate-doi-batch`\n\nGenerates a CrossRef DOI batch XML file for a release using DOIs.xlsx. Requires\nDOIs.xlsx locally (from Team Drive) and Python 3 + pandas.\n\n```\n/generate-doi-batch V94\n```\n\n---\n\n### `/extract-reactions`\n\nExtracts a reaction graph for a named pathway from one or more medical/biology review\nPDFs. Writes two artefacts:\n\n- `\u003cpathway-slug\u003e_reactions.csv` — columns: Title, Input, Output, Catalyst,\n  Regulators, Reviews, Source1–Source5\n- `\u003cpathway-slug\u003e_references.html` — every cited primary reference as a link\n\nReviews holds pipe-delimited supplied-PDF basenames. Each Source cell holds exactly\none URL chosen by a PubMed → PMC → DOI → publisher ladder; any 6th or further sources\nare dropped. Pre-curation draft, not a curated entry.\n\n```\n/extract-reactions\n```\n\n---\n\n### `/update-gdrive-readme`\n\nRegenerates the Reactome Team Drive README as a richly formatted Google Doc. On every\nrun: clears the existing doc, walks the live Team Drive folder inventory via the Drive\nAPI, and rewrites the doc with styled headings, linked folder tables, a contacts table,\nand a live folder inventory tree.\n\nRequires Python 3 and the Google API client libraries. Uses OAuth user credentials by\ndefault — credentials are stored at `~/.config/reactome/` on each user's local machine\nand are never committed to the repo. Supports `--dry-run` (preview, no write) and\n`--depth N` (inventory depth, default 2).\n\n```\n/update-gdrive-readme\n/update-gdrive-readme --dry-run\n/update-gdrive-readme --depth 3\n```\n\n---\n\n### `/reactome-qa-tracker`\n\nRuns `compare_dirs.sh` against two QA output directories (old version vs. new\nslice), filters out developer-only and backlog sections using a curator-vetted\nskip list, presents a per-category intermediate review for approval, and produces\na polished multi-sheet `.xlsx` curator tracker with Status dropdowns\n(`Not Done` / `Fixed` / `Skipped`), color-coded fill, and a Comments column on\nevery data row.\n\nCan also start from an existing comparison file — supply a Google Sheets URL or\nan uploaded `.xlsx` / `.csv` instead of running the script.\n\n**Workflow:**\n\n1. Provide `OLD_DIR` and `NEW_DIR` — version labels are taken from the directory\n   basenames. Handles directory alias mapping (`command-line-runner` →\n   `commandlinerunner`, `diagram-converter` → `diagram-qa`).\n2. `compare_dirs.sh` (included in the skill directory) runs once per QA tool\n   subdirectory; output is captured to `/tmp/\u003ctool\u003e_comparison.txt`.\n3. **Intermediate review** — the skill pauses and presents a summary of included\n   vs. skipped files per tool category and waits for curator confirmation before\n   building the workbook.\n4. Skip rules remove developer-only files and backlogs. Curator-actionable files\n   retained by default: `Mandatory_Attributes`, `DT701-ReactionParticipantsMismatch`,\n   `GT037-LiteratureReferenceRelationshipDuplication`,\n   `GT090-CatalystActivityCompartmentDoesNotMatchReactionCompartment`,\n   `Entities_With_CoV_Species_Without_Corresponding_Disease`,\n   `ReactionlikeEvent_Regulations_Not_Reviewed`, `Review_Status`.\n5. Output: `\u003cNewVersion\u003e_QA_Curator_Tracker.xlsx` — one sheet per tool group\n   plus an Overview with a status legend and sheet directory.\n\n```\n/reactome-qa-tracker\n```\n\n---\n\n## Prerequisites by Skill\n\n| Skill | Requirements |\n|---|---|\n| `/internal-module-review` | Internet access; pathway report DOCX and Curator Guide PDF uploaded to conversation |\n| `/annotate-pathway-from-reviews-or-topic_name` | claude.ai Pro/Team/Enterprise (Projects) or Claude API; PubMed and PMC MCP servers recommended; internet access for Mode B |\n| `/generate-doi-batch` | DOIs.xlsx from Team Drive; Python 3 with `pandas` and `openpyxl` |\n| `/extract-reactions` | One or more review-article PDFs (absolute paths); internet access to `eutils.ncbi.nlm.nih.gov` |\n| `/update-gdrive-readme` | Python 3; `pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client`; OAuth credentials at `~/.config/reactome/credentials.json` |\n| `/reactome-qa-tracker` | `compare_dirs.sh` (in skill directory); Python 3 with `openpyxl`; two QA output directories (or an existing comparison file) |\n\n\u003e **Note on `/extract-reactions` and NCBI access:** In Claude Code, `.claude/settings.json`\n\u003e allowlists `eutils.ncbi.nlm.nih.gov` automatically. In claude.ai (browser), add it manually\n\u003e via **Settings → Capabilities → Domain allowlist**. Without it, PMID resolution falls through\n\u003e to DOI URLs or blanks — PMIDs are never recovered from training data.\n\n---\n\n## Chrome Extensions\n\n### `AICurator`\n\nInstall from https://chromewebstore.google.com/detail/aicurator/jkdcmghlpgfilhdlngmopljpocpbnhdc\n\nGo to a fresh Google Sheet then open the extension:\n\n1. **Main** — pick or create a project (a folder under\n   `\u003cDownloads\u003e/aicurator/`) bound to a Google Sheet, configure the AI\n   provider, manage settings.\n2. **Extract** — feed review-article PDFs and a pathway name to an LLM,\n   resolve PMIDs against PubMed, write a 12-column reaction table to the\n   sheet.\n3. **Summate** — for each row, send the cited PMID-prefixed PDFs and the\n   row context to an LLM, draft a Reactome-style summation paragraph,\n   write it to column B.\n4. **Canonize** — replace protein/gene mentions in columns A–F with their\n   canonical UniProt-confirmed (human-only, reviewed-first) gene symbols.\n\n\n---\n\n## Using Skills in the claude.ai Desktop App\n\n1. Locate your skill folder: `.claude/skills/\u003cskill-name\u003e/`\n2. ZIP it: `zip -r skill-name.zip skill-name/`\n3. Go to **Customize → Skills → Upload ZIP** in the Desktop app\n\n---\n\n## Contributing a Skill\n\n1. Create a directory under `.claude/skills/` named for your skill\n2. Add `SKILL.md` with YAML frontmatter (`name`, `description`) and instructions\n3. Add any supporting files (templates, scripts, reference docs)\n4. Test it locally with Claude Code\n5. Open a PR with a brief description of what the skill does and when to use it\n\nFor detailed instructions on writing and committing a new skill, see the full guide\n(`Reactome_CuratorWorkflows_ClaudeCode_Guide_v1_3.docx`).\n\nSuggestions for improving `annotate-pathway-from-reviews-or-topic_name` — including\nchanges to the system prompt or the RLE annotation reference file — are welcome via\nGitHub Issues. When proposing changes to the reference file, cite the specific section\nof the Curator Guide or Data Model Glossary that supports the change, and note the\nguide version.\n\n---\n\n## Repository Structure\n\n```\nreactome-curator-workflows/\n├── CLAUDE.md                                              ← project context for Claude Code\n├── README.md                                              ← this file\n├── Reactome_CuratorWorkflows_ClaudeCode_Guide_v1_3.docx  ← full setup guide\n├── .gitignore\n└── .claude/\n    ├── settings.json                                      ← Claude Code host allowlist\n    └── skills/\n        ├── internal-module-review/\n        │   ├── SKILL.md\n        │   ├── Reactome_InternalReview_PROMPT_v1_4.docx\n        │   ├── Reactome_InternalReview_TEMPLATE.docx\n        │   ├── Claude_ReactomeDataModelGlossary_V95_Final.docx.pdf\n        │   ├── Curator_Guide_V94.pdf\n        │   ├── EWAS_name_rules.docx                       ← EWAS naming rules (Section 7)\n        │   ├── Rules_for_automatic_reaction_typing.docx   ← reaction/event naming rules (Section 7)\n        │   ├── bau060.pdf                                 ← Jupe et al. 2014 CV paper (Section 7)\n        │   ├── ptm_lookup.xlsx                            ← PSI-MOD → PTM prefix table (source)\n        │   ├── ptm_prefixes.md                            ← PTM prefix table, plain text (auto-loaded)\n        │   └── Small_molecule_renaming.xlsx               ← canonical small molecule names (Section 7)\n        ├── annotate-pathway-from-reviews-or-topic_name/\n        │   ├── SKILL.md\n        │   ├── README.md\n        │   └── Reactome_RLE_Annotation_Reference_V94.md\n        ├── extract-reactions/\n        │   └── SKILL.md\n        ├── generate-doi-batch/\n        │   ├── SKILL.md\n        │   └── generate_crossref_xml.py\n        ├── update-gdrive-readme/\n        │   ├── SKILL.md\n        │   └── update_drive_readme.py\n        └── reactome-qa-tracker/\n            ├── SKILL.md\n            └── compare_dirs.sh\n```\n\n---\n\n## Contact\n\nRepo maintainer: Marc Gillespie (NYU / SJU) — gillespm@stjohns.edu\nFor curation standards questions: Reactome curator Slack channel\nFor repo/skill questions: open a GitHub issue\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactome%2Freactome-curator-workflows","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freactome%2Freactome-curator-workflows","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freactome%2Freactome-curator-workflows/lists"}