From 80e00336424ec1306dad6c6e97ba27df69284e15 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Thu, 3 Sep 2026 19:10:18 -0700 Subject: [PATCH 1/2] Add cell structure discovery skill --- .../skills/discover-cell-structures/SKILL.md | 232 ++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 .claude/skills/discover-cell-structures/SKILL.md diff --git a/.claude/skills/discover-cell-structures/SKILL.md b/.claude/skills/discover-cell-structures/SKILL.md new file mode 100644 index 0000000..830bb16 --- /dev/null +++ b/.claude/skills/discover-cell-structures/SKILL.md @@ -0,0 +1,232 @@ +--- +name: discover-cell-structures +description: Search the literature for microbial cell structures and organelles missing from CellStructureMech, verify identities and citations, and draft or add new CellStructureRecord YAML with sourced components, functions, examples, and causal graphs. Use when asked to find structures from papers, add records from papers, source new organelles, or expand the record backlog. +metadata: + category: workflow + requires_database: false + requires_internet: true + version: 1.0.0 +--- + +# Discover Cell Structures from Literature + +This skill turns a literature lead into a scoped CellStructureMech record, or +rejects it with a reason a later curator can follow. + +Its job is not to rank reusable bulk sources. Put database and atlas adoption +questions through `source-queue`. Its job is not to rubber-stamp existing +evidence text. Put snippet and readability audits through `literature-evidence`. +This workflow reads the literature directly, chooses whether a named structure +belongs in this corpus, verifies its identifiers, then writes a small, +evidence-backed `PROPOSED` record. + +## Read these first + +- `CLAUDE.md` - branch and curation workflow rules. +- `docs/CURATION.md` - record boundaries, identifier policy, evidence rules, + components, causal graphs, and image constraints. +- `docs/SCHEMA.md` - the sections and classes available in a + `CellStructureRecord`. +- `curation/source_queue.tsv` and `docs/SOURCE_QUEUE.md` - sources already + adopted or deliberately rejected. +- `just report` - the live corpus shape. Do not quote counts from prose. +- The closest existing record under `data/structures/` - copy structure, not + claims. + +## Search pattern + +Search to find structures, not just papers: + +1. Start with GO cellular component terms. + Use GO labels and definitions to distinguish structures from processes, + phenotypes, proteins, and broad placeholder parents. +2. Search review literature with broad terms: + `bacterial organelle`, `archaeal cell structure`, `proteinaceous organelle`, + `microbial microcompartment`, `bacterial inclusion body`, + `bacterial cytoskeleton`, `cell envelope ultrastructure`, + `cryo-electron tomography bacterial cell`, and the candidate's synonyms. +3. Snowball from one readable review to primary papers for one canary organism, + one core component, one function, and one mechanistic step. +4. Search the candidate label, exact GO CURIE, synonyms, component names, + canonical taxon, DOI, and PMID in this repository before writing anything: + + ```bash + rg --no-ignore --hidden -n "GO:NNNNNNN|candidate label|synonym|DOI:10\\.|PMID:" . + ``` + +Use `rg --no-ignore --hidden` or `rg -uu` whenever the result is meant to +prove a record, source, identifier, or citation is absent. Ignored reports, +research notes, generated pages, and history records still count as prior art. + +## Candidate gate + +Accept a candidate only when all of these are true: + +- It is a **structure a microbiologist could name as a subcellular entity**: + an organelle, envelope layer, appendage, microcompartment, inclusion, + cytoskeletal system, or multi-protein complex. +- It is not merely a single protein, a gene, a pathway, a phenotype, a + cellular process, a storage compound without an organized boundary, or a + host-cell structure. +- The finest proposed record is no smaller than a multi-protein complex unless + a homo-oligomer creates a visually and biologically distinct structure. +- Literature names at least one component class and at least one function or + assembly mechanism. +- A real organism can be named as a canonical example, preferably from a + primary paper that studied the structure directly. +- The candidate is not already represented as a record, synonym, `xrefs`, + `has_part`, `part_of`, `parent_structures`, discussion, or research note. + +Reject near misses explicitly in your notes. The common rejections are: + +- **protein instead of structure** - record it as a `component` of the parent + structure or leave it for ProteinTraitsMech. +- **phenotype instead of structure** - link the structure to TraitMech via + `associated_traits`. +- **broad parent only** - use it in `parent_structures`, not as identity. +- **speculative one-off** - keep it in `research/` until component and function + evidence exist. + +## Identity + +Prefer exact GO cellular component identity: + +1. Search GO for the label and synonyms. +2. Read the GO definition and relationships. A matching label on a broader term + is not enough. +3. Use the GO CURIE only when it denotes exactly the structure being recorded. +4. If no exact GO term exists, mint `cellstructuremech:` and add the + nearest broader exact GO or local record to `parent_structures`. + +Never guess a CURIE. If InterPro, CHEBI, SO, Complex Portal, UniProt, GO, or +NCBI Taxonomy cannot be resolved at the issuing authority, leave the field +empty and add a `CURATION_TODO` discussion that says what should be checked. + +## Evidence bundle + +New records need enough evidence to stand on their own: + +- **definition** - GO for exact GO-grounded records; otherwise a paper that + defines the structure. +- **components** - taxon-agnostic protein, RNA, lipid, polysaccharide, or + peptidoglycan classes. Store organism-specific accessions only in + `protein_examples`. +- **taxonomic_distribution** - clades and `presence` backed by a source, never + inferred from one imaged strain. +- **canonical_examples** - the organisms actually studied in the cited papers. +- **functions** - biological outputs of the structure, preferably GO BP/MF + grounded when exact. +- **causal_graphs** - at least one `MECHANISTIC` `ASSEMBLY` or `FUNCTION` + graph with evidence on every edge. +- **evidence** - record-level DOI or PMID references for the major review and + primary canary papers. + +A review can establish broad scope. A primary paper should establish at least +one component, one taxon/example, or one edge in the first causal graph. + +`snippet` is verbatim only. If you did not copy the exact text from a readable +source, put the paraphrase in `notes`. + +## Causal graph expectations + +The first graph should be small and checkable: + +- 5 to 8 nodes. +- 5 or more directed edges when the mechanism is known. +- Every local component node uses `component_ref`. +- The final structure node carries `grounding` equal to the record identifier + when the record has an exact ontology CURIE. +- Generic states, capacities, and intermediates can be ungrounded if no exact + CURIE is curated. +- Every edge has `subject`, `predicate`, `object`, `description`, and + `evidence`. +- Leave `predicate_id` empty unless an exact RO or BFO relation has been + curated. A wrong formal predicate is worse than none. + +Draw only what the source supports. It is better to omit a plausible edge than +to complete a mechanism from memory. + +## Writing records + +Use the scaffolder for a new file: + +```bash +just new-record \ + --category \ + --kind \ + --identifier \ + --label "