Agent skill

Review Citations

by bactopia in bactopia/bactopia

Review citation integrity across data/citations.yml and @citation tags using bactopia-citations --validate.

MITAuto-check passedResearch & Science

Install Review Citations

skills CLI
$ npx skills add bactopia/bactopia --skill review-citations -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bactopia/bactopia review-citations --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/bactopia/bactopia.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/review-citations .claude/skills/review-citations && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
review-citations
GitHub stars
522
Token cost
~2.5k tokens
SKILL.md length
1,162 words
Files
2 (incl. scripts)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Review citation integrity across data/citations.yml and @citation tags using bactopia-citations --validate.

  • Works in 4 steps: Run bactopia-citations --validate via… → Parse the JSON. Shape → Present a summary grouped by issue type → …
  • The user asks to review citations
  • SKILL.md covers What this covers, Steps, Important constraints and Quick reference
  • Runs Shell scripts from its folder

What it does

Review Citations is an agent skill from bactopia/bactopia. Review citation integrity across data/citations.yml and @citation tags using bactopia-citations --validate. Detects orphan citation keys (defined in the yml but never referenced) and workflow @citation keys that don't resolve to a yml entry. Use this skill whenever the user asks to review citations, check citation integrity, audit citations.yml, find orphan citations, clean up unused citations, validate workflow @citation tags, or verify that every tool cited in a workflow has a matching entry in the citations…

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/run-bactopia-citations.sh`).

It sits in Research & Science, covering Citation management. It works with Nextflow. The repository describes itself as: A flexible pipeline for complete analysis of bacterial genomes. The licence is MIT.

When your agent uses it

  • The user asks to review citations
  • Check citation integrity
  • Audit citations.yml
  • Find orphan citations

Example prompts

  • “/review-citations”

Requirements

  • A Bash shell

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Run bactopia-citations --validate via the wrapper, asking for JSON so it's easy to parse
  2. Parse the JSON. Shape
  3. Present a summary grouped by issue type
  4. If the user asks to fix issues, walk through them one category at a time. Orphans and missing keys need different treatment, so don't…

What it can do on your machine

Read from SKILL.md and the folder at commit 29fb741. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Shell), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Review Citations loads about 2.5k tokens when it runs. Until then it costs about 135 tokens; SKILL.md has 1,162 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~135
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from bactopia/bactopia at commit 29fb741, republished under its MIT licence (© bactopia). 1,162 words, ~2,543 tokens.

Download SKILL.mdSave it as .claude/skills/review-citations/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
review-citations
description
Review citation integrity across data/citations.yml and @citation tags using bactopia-citations --validate. Detects orphan citation keys (defined in the yml but never referenced) and workflow @citation keys that don't resolve to a yml entry. Use this skill whenever the user asks to review citations, check citation integrity, audit citations.yml, find orphan citations, clean up unused citations, validate workflow @citation tags, or verify that every tool cited in a workflow has a matching entry in the citations file.

Review Citations

Run bactopia-citations --validate and present the integrity report, then apply fixes on request.

What this covers

Three gaps that the per-component lint rules don't catch:

  • Orphan keys: entries defined in data/citations.yml that are never referenced by any @citation tag. Accumulate as tools are replaced or renamed. The CLI suggests candidate "homes" for each orphan based on repo state — use those to decide between wire-up vs. drop.
  • Expected orphans: yml entries marked provenance_only: true — foundational tools acknowledged for provenance only (e.g. nextflow, nf-core, nf-test). Surface them as informational, never flag as an issue.
  • Workflow missing keys: @citation keys in workflow main.nf files that don't resolve to an entry in citations.yml. The W-series lint rules have no M035/S019 equivalent, so these only surface here.

Module and subworkflow @citation validation is handled by bactopia-lint rules M035 (modules) and S019 (subworkflows) — when the user wants to check those, point them at /review-groovydoc.

Steps

  1. Run bactopia-citations --validate via the wrapper, asking for JSON so it's easy to parse:

    bash .agents/skills/review-citations/scripts/run-bactopia-citations.sh \
        --bactopia-path /home/rpetit3/repos/bactopia/bactopia \
        --validate --json --silent

    Exit code is 0 when there are no real orphans and no missing workflow keys (expected orphans alone do not trigger a non-zero exit). Exit 1 when any real issue is found. Both cases print JSON on stdout.

  2. Parse the JSON. Shape:

    json
    {
      "orphans": {
        "workflows": [],
        "datasets_ariba": ["srst2"],
        "tools": ["aragorn", "barrnap"]
      },
      "expected_orphans": {
        "influences": ["nfcore"],
        "tools": ["nextflow", "nftest"]
      },
      "potential_homes": {
        "aragorn": [
          {"type": "toolName", "path": "modules/prokka/module.config:30", "hint": "ext.toolName = \"bioconda::prokka=1.15.6\""},
          {"type": "script_token", "path": "modules/prokka/main.nf:55", "hint": "prokka --outdir ..."}
        ],
        "srst2": [
          {"type": "sibling_key", "path": "data/citations.yml (arg_annot)", "hint": "possible duplicate/variant of referenced key 'arg_annot'"}
        ]
      },
      "missing_workflow_keys": [
        {"component": "workflows/foo", "file": "workflows/foo/main.nf", "line": 42, "key": "typoed_key"}
      ],
      "summary": {
        "orphans_total": 3,
        "expected_orphans_total": 3,
        "missing_total": 1,
        "yml_total": 157,
        "referenced_total": 154
      }
    }

    Key fields:

    • orphans — real issues that need user judgment.
    • expected_orphans — provenance_only: true entries; informational only, never a failure.
    • potential_homes[orphan] — heuristic candidates for where each real orphan could be wired. Candidate types: directory, toolName, config_param, script_token, sibling_key (ranked roughly by specificity in that order).
    • missing_workflow_keys — workflow-tier @citation references that don't resolve.
  3. Present a summary grouped by issue type:

    • Clean repo (orphans + missing both zero): report "All <yml_total> citations are referenced, <expected_orphans_total> provenance-only acknowledged" and list the expected-orphan keys inline as a dim note. Stop there.

    • Issues found: show sections in this order:

      1. Orphans — per orphan, render the key with its top 2-3 potential_homes candidates inline. Lead with the most specific candidate (directory > toolName > config_param > script_token > sibling_key). Example:

        aragorn (tools) — candidates:
          • toolName: modules/prokka/module.config:30  ext.toolName = "bioconda::prokka=1.15.6"
          • script_token: modules/prokka/main.nf:55  prokka --outdir ...
      2. Missing workflow keys — component, file:line, bad key.

      3. Expected orphans — single dim line listing the keys so the user knows they exist but aren't flagged.

      Lead with whichever of (1) or (2) has more items. Keep the output scannable; if there are many orphans, show counts + top 5-10 with homes, then note the rest by count.

  4. If the user asks to fix issues, walk through them one category at a time. Orphans and missing keys need different treatment, so don't batch them together.

Fixing orphans (three sub-cases)

Orphans need per-key judgment — don't sweep them. For each real orphan, decide between three actions:

  • Wire up: The orphan has a plausible home in potential_homes. Edit the target main.nf to append the orphan key to its @citation line (keep existing cites first, append new keys). Verify the result with the Edit tool — if the current @citation line is * @citation prokka, the updated line becomes * @citation prokka, aragorn.

  • Drop: Truly retired — no home, no sibling, no future plans. Use the Edit tool to delete the key line plus its entire indented block in data/citations.yml (typically 4-6 lines; cite: | multi-line bodies run longer).

  • Keep with provenance marker: The orphan is deliberately unreferenced (foundational tool, planned but not yet wired, retained for historical record). Add provenance_only: true to its yml block — this moves it into expected_orphans on the next run so it stops tripping the validator. Place the field right below name:. Example:

    yaml
    nextflow:
      name: Nextflow
      provenance_only: true
      link: ...
      cite: |
        ...

Every citations.yml entry shape:

yaml
aragorn:
  name: Aragorn
  link: ...
  description: ...
  cite: |
    Citation text across one or more lines.

Keys live under six top-level sections: workflows, datasets_ariba, datasets_generic, datasets_minmer, influences, tools. The orphans field in the JSON is already grouped by section — use that grouping so you're editing under the right parent key.

Always confirm before editing. Heuristics produce candidates, not decisions. Present the top suggestion and ask the user to pick wire-up / drop / keep-with-marker.

Show full SKILL.md (447 more words)Show less
Fixing missing workflow keys

Two sub-cases, determined by inspecting the bad key:

  • Typo — the key looks like a variant of an existing key (e.g. clonalframeml vs clonal_frame_ml). Suggest the closest valid key from citations.yml. Edit the workflow main.nf to correct the @citation line. The file and line number are in the JSON.
  • Genuinely new tool — the key is a real tool that just hasn't been added to the yml yet. Ask the user for the entry details (name, cite, optionally link/description) and add a new block in the appropriate section of data/citations.yml. Don't invent citations — if the user doesn't have the details at hand, leave the @citation as-is and flag it for follow-up.

After edits, re-run step 1 to confirm the issue is resolved. A clean re-run proves the fix landed correctly.

Important constraints

  • Always confirm before editing citations.yml. The CLI reports orphans objectively, but deciding between wire-up / drop / provenance-marker is a judgment call that needs the user's input.
  • Don't fabricate citations. If a workflow references a tool that genuinely isn't in the yml and the user doesn't have the citation text, the right answer is to pause and flag it, not to paper over the gap.
  • potential_homes is heuristic. A top candidate is a strong hint but not proof — always check the target main.nf before writing to it. Occasionally the "script_token" heuristic flags incidental string matches rather than real usage.
  • Expected orphans are informational only. Don't pull them into the orphan triage loop unless the user explicitly asks about them (they already made the provenance decision when the marker was added).
  • The wrapper script auto-discovers bactopia-citations (checks PATH, then conda envs). No need to activate an env first.
  • The CLI's --bactopia-path must point at the repo root (e.g. /home/rpetit3/repos/bactopia/bactopia) so the walker can find modules/, subworkflows/, workflows/, and data/citations.yml.

Quick reference

@citation tag format
 * @citation key1, key2, key3
  • Comma-separated, case-insensitive keys (stored lowercase in the yml)
  • Must match a top-level key under one of the six sections in data/citations.yml
  • Multi-line @citation continuations are supported by the GroovyDoc parser; validation treats them the same as a single line
citations.yml sections
  • workflows — top-level pipelines (bactopia, staphopia, ...)
  • datasets_ariba, datasets_generic, datasets_minmer — reference datasets
  • influences — foundational tools cited for inspiration (currently just nf-core)
  • tools — most individual bioinformatics tools (150+ entries)
provenance_only: true marker

Entries with this flag are intentionally unreferenced and surface in expected_orphans instead of orphans. Use it for foundational infrastructure tools that belong on the docs/citations page but don't have a natural home on any individual pipeline component. Current entries: nfcore, nextflow, nftest.

When to redirect to other skills
  • Module or subworkflow @citation key typos → /review-groovydoc (rules M035, S019)
  • Workflow GroovyDoc structure issues unrelated to citations → no skill yet; manual review against .agents/docs/standards/06-workflow-documentation.md

© bactopia, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in .agents/skills/review-citations of bactopia/bactopia.

  • SKILL.md
  • scripts/run-bactopia-citations.sh

Open the folder on GitHubat commit 29fb741

Compare with similar skills

Review Citations next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Review Citations compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Review Citations this skillbactopia/bactopia522—~2.5kAutomated safety check: PassMIT
Content Research Writerweapp-tailwindcss/weapp-tailwindcss1.9k25 repos~3.5kAutomated safety check: PassMIT
NetworkxzLanqing/codex-claude-academic-skills4.6k16 repos~3.2kAutomated safety check: PassBSD-3-Clause
Citation Verification GuideGalaxy-Dawn/claude-scholar5.7k3 repos~1.9kAutomated safety check: PassMIT
Systematic Review ScreenerImbad0202/academic-research-skills51k—~8.4kAutomated safety check: PassCustom licence
Literature Reviewneflibata-feng/MyArxiv-Agent12621 repos~5.9kAutomated safety check: NotesMIT

Similar skills

  • Content Research Writer

    weapp-tailwindcss/weapp-tailwindcss

    Assists in writing high-quality content by conducting research, adding citations, improving hooks, iterating on outlines, and providing real-time feedback on each section.

    1.9k GitHub starsUsed in 25 repos~3.5k tokens
    Research & ScienceAuto-check passed
  • Networkx

    zLanqing/codex-claude-academic-skills

    Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python.

    4.6k GitHub starsUsed in 16 repos~3.2k tokens
    Research & ScienceAuto-check passed
  • Citation Verification Guide

    Galaxy-Dawn/claude-scholar

    Reference guidance for checking every citation in academic writing against canonical sources such as DOI, arXiv, CrossRef and Semantic Scholar, to catch fake or wrong references.

    5.7k GitHub starsUsed in 3 repos~1.9k tokens
    Research & ScienceAuto-check passed
  • Systematic Review Screener

    Imbad0202/academic-research-skills

    Screens records for systematic, scoping and rapid reviews against fixed eligibility rules, using two blinded AI reviewers and a third adjudicator, with traceable PRISMA counts.

    51k GitHub stars~8.4k tokensUpdated 5 days ago
    Research & ScienceAuto-check passed
  • Literature Review

    neflibata-feng/MyArxiv-Agent

    Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.).

    126 GitHub starsUsed in 21 repos~5.9k tokens
    Research & ScienceAuto-check: notes
  • Citation Management

    K-Dense-AI/claude-scientific-writer

    Finds papers in OpenAlex, PubMed and Google Scholar, turns DOIs, PMIDs and arXiv IDs into clean BibTeX, and validates citations for a manuscript or thesis.

    2.4k GitHub starsUsed in 3 repos~3.9k tokens
    Research & ScienceAuto-check: notes

More from bactopia/bactopia

All 15 skills in this repo
  • Add Bactopia Tool

    bactopia/bactopia

    Scaffold a complete Bactopia Tool across all three tiers -- module, subworkflow, and workflow entry point under workflows/bactopia-tools/.

    522 GitHub stars~4.1k tokensUpdated 2 mo ago
    Auto-check passed
  • Bump Versions

    bactopia/bactopia

    Propagate the Bactopia and nf-bactopia versions declared in versions.yml into the hand-maintained files that carry a literal version (conf/testbase.config, CITATION.cff, bin/bactopia…

    522 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • Merge Schemas

    bactopia/bactopia

    Regenerate nextflow.config and nextflowschema.json for Bactopia workflows by running bactopia-merge-schemas.

    522 GitHub stars~1.3k tokensUpdated 2 mo ago
    Auto-check passed
  • Project Status

    bactopia/bactopia

    Show a live snapshot of the Bactopia project state — component counts, GroovyDoc coverage, nf-test coverage, and structural issues.

    522 GitHub stars~787 tokensUpdated 2 mo ago
    Auto-check passed
  • Release Checklist

    bactopia/bactopia

    Audit whether Bactopia is ready for a version release and produce a GO / NO-GO recommendation report.

    522 GitHub stars~4.9k tokensUpdated 2 mo ago
    Auto-check passed
  • Review Docs

    bactopia/bactopia

    Review staleness of reference docs under .agents/docs/ using bactopia-docs --validate.

    522 GitHub stars~3.4k tokensUpdated 2 mo ago
    Auto-check passed

Works with

Questions about Review Citations

What does Review Citations do?

Review citation integrity across data/citations.yml and @citation tags using bactopia-citations --validate. Review Citations is an agent skill from bactopia/bactopia.yml and @citation tags using bactopia-citations --validate.

When should I use Review Citations?

Review Citations fits situations like: the user asks to review citations; check citation integrity; audit citations.yml; find orphan citations.

How do I install Review Citations in Claude Code?

Run `npx skills add bactopia/bactopia --skill review-citations -a claude-code`. Or copy the skill folder (.agents/skills/review-citations in bactopia/bactopia) into .claude/skills/review-citations in your project. Claude Code loads it when a task matches its description.

How do I install Review Citations in Codex?

Run `npx skills add bactopia/bactopia --skill review-citations -a codex`. Or copy the skill folder (.agents/skills/review-citations in bactopia/bactopia) into .agents/skills/review-citations in your project. Codex loads it when a task matches its description.

Can I use Review Citations in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bactopia/bactopia --skill review-citations -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/review-citations, .gemini/skills/review-citations, .github/skills/review-citations and .opencode/skills/review-citations in your project.

What does Review Citations need to run?

Going by SKILL.md and its folder, Review Citations needs a shell for the scripts in its folder. Our summary lists: A Bash shell.

Does Review Citations access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Review Citations safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Review Citations use?

Review Citations is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Review Citations use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Review Citations?

Skills that share tags, products or a category with Review Citations: Content Research Writer (weapp-tailwindcss/weapp-tailwindcss, 1.9k stars), Networkx (zLanqing/codex-claude-academic-skills, 4.6k stars), Citation Verification Guide (Galaxy-Dawn/claude-scholar, 5.7k stars) and Systematic Review Screener (Imbad0202/academic-research-skills, 51k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Review Citations?

bactopia (a GitHub organization) maintains it in bactopia/bactopia, which has 522 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on August 5, 2026.

Source: bactopia/bactopia on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.