[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DAX7TBMNXYM45QDA4TMKZ9":3,"skill-same:01M6DAX7TBMNXYM45QDA4TMKZ9":74},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":14,"repositoryHtmlUrl":39,"repositoryHomepageUrl":6,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":41,"install":42,"resources":55},"01M6DAX7TBMNXYM45QDA4TMKZ9","tooluniverse-sequence-analysis",null,"Retrieve and analyze biological sequences -- gene\u002Fprotein sequences from NCBI, Ensembl, and UniProt. Search nucleotide databases, fetch by accession, find orthologs, get gene summaries. Use when users ask about DNA\u002FRNA\u002Fprotein sequences, gene lookups, ortholog searches, or sequence retrieval.","Prekzursil\u002Fagent-skills-toolchain","Prekzursil","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54636077?v=4","01M6DACZ1PCQHD99SCR1YXG28B","Andrei Mihai Visalon","01M6DACZ670WZF535V3WYYSS4Z",0,"MIT","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"analysis","tooluniverse sequence analysis","search","analyze","find","ask","fetch","use","databases","get","DNA","RNA","2026-11-10 10:12:30",false,"---\nname: tooluniverse-sequence-analysis\ndescription: Retrieve and analyze biological sequences -- gene\u002Fprotein sequences from NCBI, Ensembl, and UniProt. Search nucleotide databases, fetch by accession, find orthologs, get gene summaries. Use when users ask about DNA\u002FRNA\u002Fprotein sequences, gene lookups, ortholog searches, or sequence retrieval.\n---\n\n# Biological Sequence Analysis\n\nRetrieve, annotate, and compare biological sequences from NCBI, Ensembl, and UniProt. Covers nucleotide search, sequence fetching, gene summaries, ortholog discovery, and protein sequence extraction.\n\n## When to Use\n\n- \"Get the mRNA sequence for BRCA1\"\n- \"Search NCBI for E. coli K-12 complete genome\"\n- \"Find orthologs of TP53 across species\"\n- \"Fetch the protein sequence for UniProt P04637\"\n- \"Get the CDS sequence for Ensembl transcript ENST00000269305\"\n\n## Workflow\n\n```\nInput -> Phase 1: Gene ID resolution -> Phase 2: Nucleotide retrieval\n      -> Phase 3: Protein sequences -> Phase 4: Orthologs -> Output\n```\n\n## Phase 1: Gene Identification and Summary\n\n**NCBIGene_search**: `term` (string REQUIRED, format `\"TP53[Symbol] AND Homo sapiens[Organism]\"`), `retmax` (int, default 10). Returns `{status, data: {esearchresult: {idlist: [\"7157\"]}}}`.\n\n**NCBIGene_get_summary**: `id` (string REQUIRED, e.g., \"7157\"). Returns `{status, data: {result: {\"7157\": {name, description, summary, chromosome, maplocation, genomicinfo, mim}}}}`. Result is keyed by gene ID string.\n\n**NCBIDatasets_get_gene_by_symbol**: `symbol` (string REQUIRED, e.g., \"BRCA1\"), `taxon` (string, e.g., \"human\"). Returns gene ID, description, location, cross-references.\n\n**NCBIDatasets_get_gene**: `gene_id` (string REQUIRED, e.g., \"7157\"). Returns comprehensive gene info.\n\n## Phase 2: Nucleotide Sequence Search and Retrieval\n\n**NCBI_search_nucleotide**: `query` (free-form), `organism` (string), `gene` (string), `strain` (string), `keywords` (string), `seq_type` (\"complete_genome\"\u002F\"mRNA\"\u002F\"refseq\"), `limit` (int, default 20). Returns `{status, data: {uids: [...], accessions: [...]}}`.\n\n**NCBI_fetch_accessions**: `uids` (array REQUIRED, e.g., [\"545778205\"]). Returns `{status, data: [\"U00096.3\"], count: 1}`.\n\n**NCBI_get_sequence**: `accession` (string REQUIRED, e.g., \"NM_007294\"), `format` (\"fasta\"\u002F\"gb\"\u002F\"embl\"). Returns `{status, data: \"FASTA string...\", accession, format, length}`.\n\n**EnsemblSeq_get_region_sequence**: `region` (string REQUIRED, \"chr:start-end\", e.g., \"17:7668421-7668520\"), `species` (default \"homo_sapiens\"). Returns `{status, data: {sequence, sequence_length}}`.\n\n**ensembl_get_sequence**: `id` (string REQUIRED, Ensembl ID), `type` (\"genomic\"\u002F\"cds\"\u002F\"cdna\"\u002F\"protein\"), `multiple_sequences` (bool). Returns sequence data.\n\n**Gotchas**:\n- NCBI_search_nucleotide returns UIDs, not accessions. Use NCBI_fetch_accessions to convert.\n- NCBI_fetch_accessions requires `uids` (NOT `accessions`).\n- ensembl_get_sequence with gene ID (ENSG) + type != \"genomic\" requires `multiple_sequences=true`. Use transcript IDs (ENST) for specific sequences.\n\n### Recipe: Get mRNA for a human gene\n1. `NCBI_search_nucleotide(organism=\"Homo sapiens\", gene=\"BRCA1\", seq_type=\"mRNA\", limit=5)`\n2. `NCBI_fetch_accessions(uids=[first_uid])` -> accession\n3. `NCBI_get_sequence(accession=\"NM_007294\", format=\"fasta\")`\n\n## Phase 3: Protein Sequence Retrieval\n\n**UniProt_get_sequence_by_accession**: `accession` (string REQUIRED, e.g., \"P04637\"). Returns `{result: \"MEEPQSDP...\"}`. **Note**: response key is `result`, NOT `data`.\n\n**EnsemblSeq_get_id_sequence**: `ensembl_id` (string REQUIRED, e.g., \"ENSP00000269305\"), `type` (\"protein\"\u002F\"cdna\"\u002F\"cds\"). Returns `{status, data: {ensembl_id, molecule, sequence, sequence_length}}`.\n\n**UniProt_get_entry_by_accession**: `accession` (string REQUIRED). Full protein annotation.\n\n**Gotchas**:\n- UniProt_get_sequence_by_accession returns `{result: \"...\"}`, not `{status, data}`.\n- For Ensembl protein seqs, use ENSP IDs. For cDNA\u002FCDS, use ENST IDs.\n- To find UniProt accession from gene: use NCBIDatasets_get_gene_by_symbol (has cross-refs).\n\n## Phase 4: Ortholog and Comparative Analysis\n\n**NCBIDatasets_get_orthologs**: `gene_id` (string REQUIRED, NCBI Gene ID e.g., \"7157\"), `page_size` (int, default 20, max 100). Returns `{status, data: [{gene_id, symbol, description, taxname, common_name, chromosomes}]}`.\n\n**NCBIProtein_get_summary**: `id` (string REQUIRED, GI number or accession). Returns protein title, organism, length.\n\n**Gotcha**: NCBIDatasets_get_orthologs requires NCBI Gene ID (numeric string), not gene symbol or Ensembl ID. Resolve via Phase 1 first.\n\n### Recipe: Compare orthologs\n1. `NCBIGene_search(term=\"TP53[Symbol] AND Homo sapiens[Organism]\")` -> \"7157\"\n2. `NCBIDatasets_get_orthologs(gene_id=\"7157\", page_size=10)` -> mouse Trp53, rat Tp53, etc.\n\n## Phase 5: Domain Architecture and Homology\n\n**InterPro_get_entries_for_protein**: `accession` (UniProt ID). Returns InterPro domain\u002Ffamily\u002Fsuperfamily entries with positions.\n\n**Pfam_get_protein_annotations**: `accession` (UniProt ID). Returns Pfam domain hits with exact residue coordinates and E-values.\n\n**BLAST_protein_search**: `sequence` (amino acid string), `database` (default \"swissprot\"), `limit`. Returns homologs with alignment scores, identity, E-values.\n\n**EnsemblCompara_get_orthologues**: `gene` (gene symbol, e.g., \"CFTR\"), `species` (e.g., \"human\"). User-friendly alternative to NCBIDatasets_get_orthologs — accepts gene symbols directly.\n\n## Phase 6: Variant and Clinical Context\n\n**EnsemblVEP_annotate_hgvs**: `hgvs_notation` (e.g., \"NM_000492.4:c.1521_1523del\"). Returns consequence, protein impact, genomic coordinates.\n\n**ClinVar_search_variants**: `gene` (gene symbol). Returns variant count and IDs for clinical significance lookup.\n\n**PubMed_search_articles**: `query`, `limit`. Literature context for gene\u002Fvariant findings.\n\n---\n\n## Tool Parameter Quick Reference\n\n| Tool | Correct Param | Common Mistake |\n|------|--------------|----------------|\n| NCBIGene_search | `term` (with [Symbol] syntax) | `query` or `gene` |\n| NCBIGene_get_summary | `id` (string) | Integer type |\n| NCBI_fetch_accessions | `uids` (array) | `accessions` |\n| NCBI_get_sequence | `accession` (string) | Passing UID |\n| NCBIDatasets_get_orthologs | `gene_id` (string) | Gene symbol |\n| EnsemblSeq_get_id_sequence | `ensembl_id` | `id` |\n| ensembl_get_sequence | `id` + `multiple_sequences` | Omitting multiple_sequences for gene+CDS |\n| UniProt_get_sequence_by_accession | `accession` | Response is `result` not `data` |\n\n## Fallbacks\n\n- Gene not found -> try NCBIDatasets_get_gene_by_symbol with explicit taxon\n- No accessions from search -> broaden query (remove strain\u002Fseq_type filters)\n- Ensembl error for gene+CDS -> use transcript ID (ENST) or set multiple_sequences=true\n- UniProt accession unknown -> NCBIDatasets_get_gene or UniProt_search for cross-refs\n- Ortholog search empty -> verify gene_id is numeric NCBI Gene ID\n\n## Sequence Analysis Reasoning (CRITICAL)\n\n**LOOK UP DON'T GUESS** -- always fetch sequences, coordinates, and domain boundaries from databases. Do not reconstruct them from memory.\n\n### When to Use Which Tool\n\n| Question Type | Tool Choice | Why |\n|--------------|------------|-----|\n| \"Find similar sequences\" | BLAST_protein_search | Homology search against databases; returns E-values and identity |\n| \"What domains does this protein have?\" | InterPro_get_entries_for_protein or Pfam_get_protein_annotations | Domain architecture with exact residue coordinates |\n| \"Get the sequence of gene X\" | NCBI_search_nucleotide -> NCBI_get_sequence | Nucleotide retrieval by gene name |\n| \"Compare orthologs\" | NCBIDatasets_get_orthologs or EnsemblCompara_get_orthologues | Cross-species gene comparison |\n| \"What is the protein impact of variant X?\" | EnsemblVEP_annotate_hgvs | Consequence prediction with protein coordinates |\n| \"Align two sequences\" | BLAST (pairwise) | Quick pairwise comparison with scoring |\n\n### Reading Frame Selection Strategy\n\nWhen translating a DNA sequence to protein:\n1. **Do NOT guess the reading frame** -- preferred: use `DNA_translate_reading_frames` tool; fallback: `translate_dna.py` which tries all 3 frames automatically\n2. The correct frame is the one with the LONGEST open reading frame (no premature stops)\n3. If the sequence starts with ATG, frame 1 is likely correct -- but verify\n4. If all 3 frames have early stop codons, the sequence may be: (a) non-coding, (b) reversed, or (c) contains sequencing errors. Try reverse complement first.\n\n### Protein Domain Interpretation\n\nWhen asked about protein function or structure:\n1. **Get domain architecture first**: `InterPro_get_entries_for_protein` returns all annotated domains with positions\n2. **Domain families indicate function**: Kinase domain = phosphorylation activity; SH2 domain = phosphotyrosine binding; zinc finger = DNA binding\n3. **Variants in conserved domains are more likely pathogenic** than those in linker regions\n4. **LOOK UP** domain boundaries from the database -- do not estimate positions from memory\n\n## Reasoning for Protein Feature Questions\n\nWhen asked \"how many X residues in region Y of protein Z\":\n\n1. **Identify the correct protein** — Gene names are ambiguous. GABAA has many subunits (GABRA1, GABRB2, GABRR1...). Read the question carefully for the specific subunit. Use `proteins_api_search` with gene name + \"human\" to find the right accession.\n\n2. **Find the region boundaries** — Use `proteins_api_get_features` with the accession to get annotated domains (TRANSMEM, DOMAIN, REGION). Don't guess positions — get them from the database.\n\n3. **Count residues in the region** — Fetch the sequence, extract the region, count. WRITE Python code for this — don't try to count manually.\n   - **Residue Counting Strategy**: `python3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fsequence_tools.py --type count_region --accession P24046 --start 318 --end 440 --residue C`\n   - For residue counting questions, ALWAYS use the script or `sequence[start:end].count('C')`. Do NOT estimate or count from memory.\n\n4. **Account for multimers** — READ THE QUESTION for \"homomeric\", \"pentamer\", \"tetramer\", \"dimer\". If the question asks about a homomeric receptor (e.g., \"homomeric GABAAρ1\"), every subunit is identical. Count the residues in ONE subunit, then multiply:\n   - Homomeric pentamer (most ligand-gated ion channels like GABAA ρ1): × 5\n   - Homotetramer (many ion channels): × 4\n   - Homodimer: × 2\n   If the question says \"in the TM3-TM4 linker domains\" (plural), it means across all subunits in the complex.\n\n## Bundled Computation Scripts\n\n**Never manually count residues, compute GC%, or write reverse-complement logic inline.** Run these scripts instead — they are tested and handle edge cases.\n\n### biology_facts.py — Biology reference lookup\n\n**Script**: `skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py`\n\nUse this script to look up commonly-confused biology facts instead of relying on memory. It covers receptor types, ion channel stoichiometry, neurotransmitters, immune cell markers, and gene naming confusions.\n\n```\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type receptor --name \"GABAA\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type ion_channel --name \"NMDA\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type gene_confusion --name \"GABRA1\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type receptor  # list all entries\n```\n\nTypes: `receptor` (stoichiometry, pharmacology), `ion_channel` (subunit arrangement), `neurotransmitter` (synthesis, receptors), `immune_cell` (markers, lineage), `gene_confusion` (commonly mixed-up genes like GABRA1 vs GABRR1).\n\n**Mandatory use**: any question about receptor type\u002Fstoichiometry, immune cell markers, or gene name disambiguation.\n\n### amino_acids.py — Codon table, amino acid properties, wobble pairing\n\n**Script**: `skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py`\n\nUse this script for any question about the genetic code, codon degeneracy, amino acid chemistry, codon usage bias, or tRNA wobble pairing. All outputs are JSON.\n\n```\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type codon_table\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid --name \"Cysteine\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid --code C\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid --code TRP\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid            # list all 20\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type count_codons --sequence \"ATGCCCAAATTT...\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type wobble --anticodon \"GAU\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type wobble --anticodon \"IAU\"\n```\n\n**Modes:**\n\n| `--type` | What it returns | Key fields |\n|----------|-----------------|-----------|\n| `codon_table` | All 64 codons grouped by amino acid | degeneracy, codons, human codon usage %, stop codon names, degeneracy distribution (1\u002F2\u002F3\u002F4\u002F6) |\n| `amino_acid` | Properties of one or all amino acids | name, one_letter, three_letter, mw_da, pKa_side_chain, polarity, charge_ph7, hydrophobicity_index (Kyte-Doolittle), backbone_pKa, codons, degeneracy, rare_codons_le15pct |\n| `count_codons` | Codon frequency analysis for a DNA sequence | codon_counts with AA annotation and human usage freq, amino_acid_composition, rare_codons_present |\n| `wobble` | Codons recognised by a given anticodon | recognised_codons (RNA+DNA form, AA), synonymous_only, wobble rule explanation |\n\n**When to use (mandatory):**\n- Any question about how many codons encode a given amino acid (degeneracy)\n- Any question about rare vs. common codons for protein expression optimisation\n- Any question about tRNA anticodon recognition \u002F wobble base pairing\n- Any question about amino acid physical-chemical properties (MW, pKa, hydrophobicity, polarity, charge)\n- Any question about the names of stop codons (Amber\u002FOchre\u002FOpal)\n- Before manually stating codon degeneracy — verify with `codon_table`\n\n**Wobble rules**: I pairs U\u002FC\u002FA (3 codons); G pairs U\u002FC; U pairs A\u002FG; C pairs G only; A pairs U only (rare). Use `--type wobble --anticodon \"GAU\"` to verify.\n\n**Amino acid lookup**: accepts full name (`--name \"Cysteine\"`), 1-letter (`--code C`), or 3-letter (`--code CYS`).\n\n### Codon-Anticodon Matching Reasoning (CRITICAL for tRNA problems)\n\nWhen solving \"which codons does this tRNA recognize\" or \"which tRNA reads this codon\":\n\n1. **Anticodon is written 3'->5'** but conventionally listed 5'->3'. The FIRST position of the anticodon (5' end) is the WOBBLE position and pairs with the THIRD position of the codon (3' end).\n2. **Anticodon-codon pairing is ANTIPARALLEL**: anticodon 5'-X-Y-Z-3' pairs with codon 3'-X'-Y'-Z'-5' (i.e., codon 5'-Z'-Y'-X'-3').\n3. **Wobble position rules** (anticodon 5' base -> codon 3' base it can pair with):\n   - C -> G only (1 codon)\n   - A -> U only (1 codon; rare in bacteria, common in mitochondria)\n   - U -> A or G (2 codons)\n   - G -> C or U (2 codons)\n   - I (inosine, deaminated A) -> U, C, or A (3 codons)\n4. **Minimum tRNA set**: Because I reads 3 bases and G\u002FU each read 2, a 4-codon family (e.g., GCN = Ala) needs only 2 tRNAs: one with I at wobble position (reads 3 of 4 codons) and one with C or U at wobble (reads the remaining 1-2).\n5. **ALWAYS use the script**: `python3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type wobble --anticodon \"IAU\"` to verify rather than reasoning from memory.\n\n---\n\n### translate_dna.py — DNA to protein translation\n\nPreferred: use `DNA_translate_reading_frames` tool (via MCP\u002FSDK) with `sequence` parameter. Fallback: run `translate_dna.py` directly.\n\n```\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Ftranslate_dna.py \"ATGCCC...\"\n```\nTries all 3 reading frames, picks longest ORF automatically.\n\n### sequence_tools.py — Residue counting, GC content, reverse complement, stats\n\n**Script**: `skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fsequence_tools.py`\n\n**Preferred**: Use ToolUniverse tools (via MCP\u002FSDK) instead of the script:\n- `Sequence_count_residues` tool -- Count residues in a sequence or region. Fallback: `sequence_tools.py --type count_residues` or `--type count_region`\n- `Sequence_gc_content` tool -- GC% of DNA. Fallback: `sequence_tools.py --type gc_content`\n- `Sequence_reverse_complement` tool -- DNA reverse complement. Fallback: `sequence_tools.py --type reverse_complement`\n- `Sequence_stats` tool -- Auto-detect type, length, MW. Fallback: `sequence_tools.py --type stats`\n\n**Fallback script modes** (use `--type`):\n- `count_residues`: Count residue in full sequence. `--sequence \"ACDE...\" --residue C`\n- `count_region`: Count in region (1-based inclusive). `--sequence \"MAC...\" --start 5 --end 20 --residue C` OR `--accession P24046 --start 318 --end 440 --residue C` (fetches from UniProt live)\n- `gc_content`: GC% of DNA. `--sequence \"ATGCGATCG\"`\n- `reverse_complement`: DNA reverse complement. `--sequence \"ATGCGATCG\"`\n- `stats`: Auto-detect DNA\u002FRNA\u002FProtein, compute length, MW for protein. `--sequence \"ATGCG...\"`\n\nALWAYS use `count_region --accession` when the user gives a UniProt accession + region -- do not count manually.\n\n---\n\n## Interpretation Framework\n\n### Sequence Quality Assessment\n\n| Indicator | High Quality | Acceptable | Caution |\n|-----------|-------------|-----------|---------|\n| **RefSeq status** | NM_\u002FNP_ (curated) | XM_\u002FXP_ (predicted) | No RefSeq (GenBank only) |\n| **Sequence version** | Latest version (.N) | Previous version | Removed\u002Freplaced |\n| **Annotation** | Reviewed (UniProt Swiss-Prot) | Unreviewed (TrEMBL) | No annotation |\n| **Gene symbol** | HGNC approved | Alias\u002Fsynonym | Locus tag only |\n\n### Synthesis Questions\n\n1. **Is this the correct sequence?** (verify organism, gene symbol, isoform)\n2. **Is it the canonical isoform?** (RefSeq MANE Select or UniProt canonical)\n3. **How well-annotated is it?** (SwissProt > TrEMBL > GenBank predicted)\n4. **Are there known variants?** (ClinVar pathogenic variants in this sequence)\n\n---\n\n## Answer Formatting (CRITICAL)\n\n**TRIM YOUR ANSWER**: If the question asks \"what protein\", answer with JUST the protein name. Do not add parenthetical abbreviations, descriptions, or qualifications. Example: answer \"Glucose-6-phosphate 1-dehydrogenase\", NOT \"Glucose-6-phosphate 1-dehydrogenase (G6PD, EC 1.1.1.49)\". When identifying a protein from a sequence, use BLAST\u002FUniProt and report the top hit name exactly as it appears in the database — no embellishment.\n\n## Peptide & Foldamer Structure\n\n- **Alpha-peptide helices**: alpha-helix (3.6 res\u002Fturn, i->i+4 H-bonds), 3_10-helix (3 res\u002Fturn, i->i+3), pi-helix (4.4 res\u002Fturn, i->i+5).\n- **Beta-peptide helices**: named by H-bond ring size. 14-helix (i->i+2, 14-membered rings), 12-helix, 10-helix, 8-helix.\n- **Beta-amino acid ring size determines helix type**: 4-membered cyclic constraint -> 10-helix; 5-membered (e.g., ACPC) -> 12-helix; 6-membered (e.g., ACHC) -> 14-helix. Acyclic beta3-residues default to 14-helix.\n- **Mixed alpha\u002Fbeta foldamers (1:1 alternation)**: form 11-helix (i->i+3, 11-atom rings) or 14\u002F15-helix (i->i+4, alternating 14- and 15-atom rings). Longer sequences prefer the 14\u002F15-helix.\n- **Key rule**: the number in the helix name = number of atoms in the hydrogen-bonded ring.\n- **Cyclic beta-amino acids** (ACPC, ACHC) constrain backbone torsion angles, favoring specific helix types over acyclic residues.\n\n## Limitations\n\n- ensembl_get_sequence gene IDs + non-genomic type need `multiple_sequences=true`\n- NCBIDatasets_get_orthologs requires NCBI Gene ID (not symbol); UniProt returns canonical isoform only\n","# Biological Sequence Analysis\n\nRetrieve, annotate, and compare biological sequences from NCBI, Ensembl, and UniProt. Covers nucleotide search, sequence fetching, gene summaries, ortholog discovery, and protein sequence extraction.\n\n## When to Use\n\n- \"Get the mRNA sequence for BRCA1\"\n- \"Search NCBI for E. coli K-12 complete genome\"\n- \"Find orthologs of TP53 across species\"\n- \"Fetch the protein sequence for UniProt P04637\"\n- \"Get the CDS sequence for Ensembl transcript ENST00000269305\"\n\n## Workflow\n\n```\nInput -> Phase 1: Gene ID resolution -> Phase 2: Nucleotide retrieval\n      -> Phase 3: Protein sequences -> Phase 4: Orthologs -> Output\n```\n\n## Phase 1: Gene Identification and Summary\n\n**NCBIGene_search**: `term` (string REQUIRED, format `\"TP53[Symbol] AND Homo sapiens[Organism]\"`), `retmax` (int, default 10). Returns `{status, data: {esearchresult: {idlist: [\"7157\"]}}}`.\n\n**NCBIGene_get_summary**: `id` (string REQUIRED, e.g., \"7157\"). Returns `{status, data: {result: {\"7157\": {name, description, summary, chromosome, maplocation, genomicinfo, mim}}}}`. Result is keyed by gene ID string.\n\n**NCBIDatasets_get_gene_by_symbol**: `symbol` (string REQUIRED, e.g., \"BRCA1\"), `taxon` (string, e.g., \"human\"). Returns gene ID, description, location, cross-references.\n\n**NCBIDatasets_get_gene**: `gene_id` (string REQUIRED, e.g., \"7157\"). Returns comprehensive gene info.\n\n## Phase 2: Nucleotide Sequence Search and Retrieval\n\n**NCBI_search_nucleotide**: `query` (free-form), `organism` (string), `gene` (string), `strain` (string), `keywords` (string), `seq_type` (\"complete_genome\"\u002F\"mRNA\"\u002F\"refseq\"), `limit` (int, default 20). Returns `{status, data: {uids: [...], accessions: [...]}}`.\n\n**NCBI_fetch_accessions**: `uids` (array REQUIRED, e.g., [\"545778205\"]). Returns `{status, data: [\"U00096.3\"], count: 1}`.\n\n**NCBI_get_sequence**: `accession` (string REQUIRED, e.g., \"NM_007294\"), `format` (\"fasta\"\u002F\"gb\"\u002F\"embl\"). Returns `{status, data: \"FASTA string...\", accession, format, length}`.\n\n**EnsemblSeq_get_region_sequence**: `region` (string REQUIRED, \"chr:start-end\", e.g., \"17:7668421-7668520\"), `species` (default \"homo_sapiens\"). Returns `{status, data: {sequence, sequence_length}}`.\n\n**ensembl_get_sequence**: `id` (string REQUIRED, Ensembl ID), `type` (\"genomic\"\u002F\"cds\"\u002F\"cdna\"\u002F\"protein\"), `multiple_sequences` (bool). Returns sequence data.\n\n**Gotchas**:\n- NCBI_search_nucleotide returns UIDs, not accessions. Use NCBI_fetch_accessions to convert.\n- NCBI_fetch_accessions requires `uids` (NOT `accessions`).\n- ensembl_get_sequence with gene ID (ENSG) + type != \"genomic\" requires `multiple_sequences=true`. Use transcript IDs (ENST) for specific sequences.\n\n### Recipe: Get mRNA for a human gene\n1. `NCBI_search_nucleotide(organism=\"Homo sapiens\", gene=\"BRCA1\", seq_type=\"mRNA\", limit=5)`\n2. `NCBI_fetch_accessions(uids=[first_uid])` -> accession\n3. `NCBI_get_sequence(accession=\"NM_007294\", format=\"fasta\")`\n\n## Phase 3: Protein Sequence Retrieval\n\n**UniProt_get_sequence_by_accession**: `accession` (string REQUIRED, e.g., \"P04637\"). Returns `{result: \"MEEPQSDP...\"}`. **Note**: response key is `result`, NOT `data`.\n\n**EnsemblSeq_get_id_sequence**: `ensembl_id` (string REQUIRED, e.g., \"ENSP00000269305\"), `type` (\"protein\"\u002F\"cdna\"\u002F\"cds\"). Returns `{status, data: {ensembl_id, molecule, sequence, sequence_length}}`.\n\n**UniProt_get_entry_by_accession**: `accession` (string REQUIRED). Full protein annotation.\n\n**Gotchas**:\n- UniProt_get_sequence_by_accession returns `{result: \"...\"}`, not `{status, data}`.\n- For Ensembl protein seqs, use ENSP IDs. For cDNA\u002FCDS, use ENST IDs.\n- To find UniProt accession from gene: use NCBIDatasets_get_gene_by_symbol (has cross-refs).\n\n## Phase 4: Ortholog and Comparative Analysis\n\n**NCBIDatasets_get_orthologs**: `gene_id` (string REQUIRED, NCBI Gene ID e.g., \"7157\"), `page_size` (int, default 20, max 100). Returns `{status, data: [{gene_id, symbol, description, taxname, common_name, chromosomes}]}`.\n\n**NCBIProtein_get_summary**: `id` (string REQUIRED, GI number or accession). Returns protein title, organism, length.\n\n**Gotcha**: NCBIDatasets_get_orthologs requires NCBI Gene ID (numeric string), not gene symbol or Ensembl ID. Resolve via Phase 1 first.\n\n### Recipe: Compare orthologs\n1. `NCBIGene_search(term=\"TP53[Symbol] AND Homo sapiens[Organism]\")` -> \"7157\"\n2. `NCBIDatasets_get_orthologs(gene_id=\"7157\", page_size=10)` -> mouse Trp53, rat Tp53, etc.\n\n## Phase 5: Domain Architecture and Homology\n\n**InterPro_get_entries_for_protein**: `accession` (UniProt ID). Returns InterPro domain\u002Ffamily\u002Fsuperfamily entries with positions.\n\n**Pfam_get_protein_annotations**: `accession` (UniProt ID). Returns Pfam domain hits with exact residue coordinates and E-values.\n\n**BLAST_protein_search**: `sequence` (amino acid string), `database` (default \"swissprot\"), `limit`. Returns homologs with alignment scores, identity, E-values.\n\n**EnsemblCompara_get_orthologues**: `gene` (gene symbol, e.g., \"CFTR\"), `species` (e.g., \"human\"). User-friendly alternative to NCBIDatasets_get_orthologs — accepts gene symbols directly.\n\n## Phase 6: Variant and Clinical Context\n\n**EnsemblVEP_annotate_hgvs**: `hgvs_notation` (e.g., \"NM_000492.4:c.1521_1523del\"). Returns consequence, protein impact, genomic coordinates.\n\n**ClinVar_search_variants**: `gene` (gene symbol). Returns variant count and IDs for clinical significance lookup.\n\n**PubMed_search_articles**: `query`, `limit`. Literature context for gene\u002Fvariant findings.\n\n---\n\n## Tool Parameter Quick Reference\n\n| Tool | Correct Param | Common Mistake |\n|------|--------------|----------------|\n| NCBIGene_search | `term` (with [Symbol] syntax) | `query` or `gene` |\n| NCBIGene_get_summary | `id` (string) | Integer type |\n| NCBI_fetch_accessions | `uids` (array) | `accessions` |\n| NCBI_get_sequence | `accession` (string) | Passing UID |\n| NCBIDatasets_get_orthologs | `gene_id` (string) | Gene symbol |\n| EnsemblSeq_get_id_sequence | `ensembl_id` | `id` |\n| ensembl_get_sequence | `id` + `multiple_sequences` | Omitting multiple_sequences for gene+CDS |\n| UniProt_get_sequence_by_accession | `accession` | Response is `result` not `data` |\n\n## Fallbacks\n\n- Gene not found -> try NCBIDatasets_get_gene_by_symbol with explicit taxon\n- No accessions from search -> broaden query (remove strain\u002Fseq_type filters)\n- Ensembl error for gene+CDS -> use transcript ID (ENST) or set multiple_sequences=true\n- UniProt accession unknown -> NCBIDatasets_get_gene or UniProt_search for cross-refs\n- Ortholog search empty -> verify gene_id is numeric NCBI Gene ID\n\n## Sequence Analysis Reasoning (CRITICAL)\n\n**LOOK UP DON'T GUESS** -- always fetch sequences, coordinates, and domain boundaries from databases. Do not reconstruct them from memory.\n\n### When to Use Which Tool\n\n| Question Type | Tool Choice | Why |\n|--------------|------------|-----|\n| \"Find similar sequences\" | BLAST_protein_search | Homology search against databases; returns E-values and identity |\n| \"What domains does this protein have?\" | InterPro_get_entries_for_protein or Pfam_get_protein_annotations | Domain architecture with exact residue coordinates |\n| \"Get the sequence of gene X\" | NCBI_search_nucleotide -> NCBI_get_sequence | Nucleotide retrieval by gene name |\n| \"Compare orthologs\" | NCBIDatasets_get_orthologs or EnsemblCompara_get_orthologues | Cross-species gene comparison |\n| \"What is the protein impact of variant X?\" | EnsemblVEP_annotate_hgvs | Consequence prediction with protein coordinates |\n| \"Align two sequences\" | BLAST (pairwise) | Quick pairwise comparison with scoring |\n\n### Reading Frame Selection Strategy\n\nWhen translating a DNA sequence to protein:\n1. **Do NOT guess the reading frame** -- preferred: use `DNA_translate_reading_frames` tool; fallback: `translate_dna.py` which tries all 3 frames automatically\n2. The correct frame is the one with the LONGEST open reading frame (no premature stops)\n3. If the sequence starts with ATG, frame 1 is likely correct -- but verify\n4. If all 3 frames have early stop codons, the sequence may be: (a) non-coding, (b) reversed, or (c) contains sequencing errors. Try reverse complement first.\n\n### Protein Domain Interpretation\n\nWhen asked about protein function or structure:\n1. **Get domain architecture first**: `InterPro_get_entries_for_protein` returns all annotated domains with positions\n2. **Domain families indicate function**: Kinase domain = phosphorylation activity; SH2 domain = phosphotyrosine binding; zinc finger = DNA binding\n3. **Variants in conserved domains are more likely pathogenic** than those in linker regions\n4. **LOOK UP** domain boundaries from the database -- do not estimate positions from memory\n\n## Reasoning for Protein Feature Questions\n\nWhen asked \"how many X residues in region Y of protein Z\":\n\n1. **Identify the correct protein** — Gene names are ambiguous. GABAA has many subunits (GABRA1, GABRB2, GABRR1...). Read the question carefully for the specific subunit. Use `proteins_api_search` with gene name + \"human\" to find the right accession.\n\n2. **Find the region boundaries** — Use `proteins_api_get_features` with the accession to get annotated domains (TRANSMEM, DOMAIN, REGION). Don't guess positions — get them from the database.\n\n3. **Count residues in the region** — Fetch the sequence, extract the region, count. WRITE Python code for this — don't try to count manually.\n   - **Residue Counting Strategy**: `python3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fsequence_tools.py --type count_region --accession P24046 --start 318 --end 440 --residue C`\n   - For residue counting questions, ALWAYS use the script or `sequence[start:end].count('C')`. Do NOT estimate or count from memory.\n\n4. **Account for multimers** — READ THE QUESTION for \"homomeric\", \"pentamer\", \"tetramer\", \"dimer\". If the question asks about a homomeric receptor (e.g., \"homomeric GABAAρ1\"), every subunit is identical. Count the residues in ONE subunit, then multiply:\n   - Homomeric pentamer (most ligand-gated ion channels like GABAA ρ1): × 5\n   - Homotetramer (many ion channels): × 4\n   - Homodimer: × 2\n   If the question says \"in the TM3-TM4 linker domains\" (plural), it means across all subunits in the complex.\n\n## Bundled Computation Scripts\n\n**Never manually count residues, compute GC%, or write reverse-complement logic inline.** Run these scripts instead — they are tested and handle edge cases.\n\n### biology_facts.py — Biology reference lookup\n\n**Script**: `skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py`\n\nUse this script to look up commonly-confused biology facts instead of relying on memory. It covers receptor types, ion channel stoichiometry, neurotransmitters, immune cell markers, and gene naming confusions.\n\n```\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type receptor --name \"GABAA\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type ion_channel --name \"NMDA\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type gene_confusion --name \"GABRA1\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py --type receptor  # list all entries\n```\n\nTypes: `receptor` (stoichiometry, pharmacology), `ion_channel` (subunit arrangement), `neurotransmitter` (synthesis, receptors), `immune_cell` (markers, lineage), `gene_confusion` (commonly mixed-up genes like GABRA1 vs GABRR1).\n\n**Mandatory use**: any question about receptor type\u002Fstoichiometry, immune cell markers, or gene name disambiguation.\n\n### amino_acids.py — Codon table, amino acid properties, wobble pairing\n\n**Script**: `skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py`\n\nUse this script for any question about the genetic code, codon degeneracy, amino acid chemistry, codon usage bias, or tRNA wobble pairing. All outputs are JSON.\n\n```\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type codon_table\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid --name \"Cysteine\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid --code C\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid --code TRP\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type amino_acid            # list all 20\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type count_codons --sequence \"ATGCCCAAATTT...\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type wobble --anticodon \"GAU\"\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type wobble --anticodon \"IAU\"\n```\n\n**Modes:**\n\n| `--type` | What it returns | Key fields |\n|----------|-----------------|-----------|\n| `codon_table` | All 64 codons grouped by amino acid | degeneracy, codons, human codon usage %, stop codon names, degeneracy distribution (1\u002F2\u002F3\u002F4\u002F6) |\n| `amino_acid` | Properties of one or all amino acids | name, one_letter, three_letter, mw_da, pKa_side_chain, polarity, charge_ph7, hydrophobicity_index (Kyte-Doolittle), backbone_pKa, codons, degeneracy, rare_codons_le15pct |\n| `count_codons` | Codon frequency analysis for a DNA sequence | codon_counts with AA annotation and human usage freq, amino_acid_composition, rare_codons_present |\n| `wobble` | Codons recognised by a given anticodon | recognised_codons (RNA+DNA form, AA), synonymous_only, wobble rule explanation |\n\n**When to use (mandatory):**\n- Any question about how many codons encode a given amino acid (degeneracy)\n- Any question about rare vs. common codons for protein expression optimisation\n- Any question about tRNA anticodon recognition \u002F wobble base pairing\n- Any question about amino acid physical-chemical properties (MW, pKa, hydrophobicity, polarity, charge)\n- Any question about the names of stop codons (Amber\u002FOchre\u002FOpal)\n- Before manually stating codon degeneracy — verify with `codon_table`\n\n**Wobble rules**: I pairs U\u002FC\u002FA (3 codons); G pairs U\u002FC; U pairs A\u002FG; C pairs G only; A pairs U only (rare). Use `--type wobble --anticodon \"GAU\"` to verify.\n\n**Amino acid lookup**: accepts full name (`--name \"Cysteine\"`), 1-letter (`--code C`), or 3-letter (`--code CYS`).\n\n### Codon-Anticodon Matching Reasoning (CRITICAL for tRNA problems)\n\nWhen solving \"which codons does this tRNA recognize\" or \"which tRNA reads this codon\":\n\n1. **Anticodon is written 3'->5'** but conventionally listed 5'->3'. The FIRST position of the anticodon (5' end) is the WOBBLE position and pairs with the THIRD position of the codon (3' end).\n2. **Anticodon-codon pairing is ANTIPARALLEL**: anticodon 5'-X-Y-Z-3' pairs with codon 3'-X'-Y'-Z'-5' (i.e., codon 5'-Z'-Y'-X'-3').\n3. **Wobble position rules** (anticodon 5' base -> codon 3' base it can pair with):\n   - C -> G only (1 codon)\n   - A -> U only (1 codon; rare in bacteria, common in mitochondria)\n   - U -> A or G (2 codons)\n   - G -> C or U (2 codons)\n   - I (inosine, deaminated A) -> U, C, or A (3 codons)\n4. **Minimum tRNA set**: Because I reads 3 bases and G\u002FU each read 2, a 4-codon family (e.g., GCN = Ala) needs only 2 tRNAs: one with I at wobble position (reads 3 of 4 codons) and one with C or U at wobble (reads the remaining 1-2).\n5. **ALWAYS use the script**: `python3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py --type wobble --anticodon \"IAU\"` to verify rather than reasoning from memory.\n\n---\n\n### translate_dna.py — DNA to protein translation\n\nPreferred: use `DNA_translate_reading_frames` tool (via MCP\u002FSDK) with `sequence` parameter. Fallback: run `translate_dna.py` directly.\n\n```\npython3 skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Ftranslate_dna.py \"ATGCCC...\"\n```\nTries all 3 reading frames, picks longest ORF automatically.\n\n### sequence_tools.py — Residue counting, GC content, reverse complement, stats\n\n**Script**: `skills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fsequence_tools.py`\n\n**Preferred**: Use ToolUniverse tools (via MCP\u002FSDK) instead of the script:\n- `Sequence_count_residues` tool -- Count residues in a sequence or region. Fallback: `sequence_tools.py --type count_residues` or `--type count_region`\n- `Sequence_gc_content` tool -- GC% of DNA. Fallback: `sequence_tools.py --type gc_content`\n- `Sequence_reverse_complement` tool -- DNA reverse complement. Fallback: `sequence_tools.py --type reverse_complement`\n- `Sequence_stats` tool -- Auto-detect type, length, MW. Fallback: `sequence_tools.py --type stats`\n\n**Fallback script modes** (use `--type`):\n- `count_residues`: Count residue in full sequence. `--sequence \"ACDE...\" --residue C`\n- `count_region`: Count in region (1-based inclusive). `--sequence \"MAC...\" --start 5 --end 20 --residue C` OR `--accession P24046 --start 318 --end 440 --residue C` (fetches from UniProt live)\n- `gc_content`: GC% of DNA. `--sequence \"ATGCGATCG\"`\n- `reverse_complement`: DNA reverse complement. `--sequence \"ATGCGATCG\"`\n- `stats`: Auto-detect DNA\u002FRNA\u002FProtein, compute length, MW for protein. `--sequence \"ATGCG...\"`\n\nALWAYS use `count_region --accession` when the user gives a UniProt accession + region -- do not count manually.\n\n---\n\n## Interpretation Framework\n\n### Sequence Quality Assessment\n\n| Indicator | High Quality | Acceptable | Caution |\n|-----------|-------------|-----------|---------|\n| **RefSeq status** | NM_\u002FNP_ (curated) | XM_\u002FXP_ (predicted) | No RefSeq (GenBank only) |\n| **Sequence version** | Latest version (.N) | Previous version | Removed\u002Freplaced |\n| **Annotation** | Reviewed (UniProt Swiss-Prot) | Unreviewed (TrEMBL) | No annotation |\n| **Gene symbol** | HGNC approved | Alias\u002Fsynonym | Locus tag only |\n\n### Synthesis Questions\n\n1. **Is this the correct sequence?** (verify organism, gene symbol, isoform)\n2. **Is it the canonical isoform?** (RefSeq MANE Select or UniProt canonical)\n3. **How well-annotated is it?** (SwissProt > TrEMBL > GenBank predicted)\n4. **Are there known variants?** (ClinVar pathogenic variants in this sequence)\n\n---\n\n## Answer Formatting (CRITICAL)\n\n**TRIM YOUR ANSWER**: If the question asks \"what protein\", answer with JUST the protein name. Do not add parenthetical abbreviations, descriptions, or qualifications. Example: answer \"Glucose-6-phosphate 1-dehydrogenase\", NOT \"Glucose-6-phosphate 1-dehydrogenase (G6PD, EC 1.1.1.49)\". When identifying a protein from a sequence, use BLAST\u002FUniProt and report the top hit name exactly as it appears in the database — no embellishment.\n\n## Peptide & Foldamer Structure\n\n- **Alpha-peptide helices**: alpha-helix (3.6 res\u002Fturn, i->i+4 H-bonds), 3_10-helix (3 res\u002Fturn, i->i+3), pi-helix (4.4 res\u002Fturn, i->i+5).\n- **Beta-peptide helices**: named by H-bond ring size. 14-helix (i->i+2, 14-membered rings), 12-helix, 10-helix, 8-helix.\n- **Beta-amino acid ring size determines helix type**: 4-membered cyclic constraint -> 10-helix; 5-membered (e.g., ACPC) -> 12-helix; 6-membered (e.g., ACHC) -> 14-helix. Acyclic beta3-residues default to 14-helix.\n- **Mixed alpha\u002Fbeta foldamers (1:1 alternation)**: form 11-helix (i->i+3, 11-atom rings) or 14\u002F15-helix (i->i+4, alternating 14- and 15-atom rings). Longer sequences prefer the 14\u002F15-helix.\n- **Key rule**: the number in the helix name = number of atoms in the hydrogen-bonded ring.\n- **Cyclic beta-amino acids** (ACPC, ACHC) constrain backbone torsion angles, favoring specific helix types over acyclic residues.\n\n## Limitations\n\n- ensembl_get_sequence gene IDs + non-genomic type need `multiple_sequences=true`\n- NCBIDatasets_get_orthologs requires NCBI Gene ID (not symbol); UniProt returns canonical isoform only\n",{"name":5,"description":7},"main","a298c929b6cbd662e1fce54302ce520d5ceea1a5",".agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain","https:\u002F\u002Fgithub.com\u002FPrekzursil","2026-11-02 14:30:57",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add Prekzursil\u002Fagent-skills-toolchain --skill tooluniverse-sequence-analysis",{"tool":48,"command":49},"bunx","bunx skills add Prekzursil\u002Fagent-skills-toolchain --skill tooluniverse-sequence-analysis",{"tool":51,"command":52},"pnpm","pnpm dlx skills add Prekzursil\u002Fagent-skills-toolchain --skill tooluniverse-sequence-analysis","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis\u002FSKILL.md",true,[56,62,66,70],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"scripts\u002Famino_acids.py","SCRIPT","脚本",24879,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Famino_acids.py",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"scripts\u002Fbiology_facts.py",54508,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fbiology_facts.py",{"path":67,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":68,"sourceHtmlUrl":69},"scripts\u002Fsequence_tools.py",13318,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Fsequence_tools.py",{"path":71,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":72,"sourceHtmlUrl":73},"scripts\u002Ftranslate_dna.py",2291,"https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002F.agents\u002Flibrary\u002Fskills\u002Ftooluniverse-sequence-analysis\u002Fscripts\u002Ftranslate_dna.py",[75,96,126,153,167,183],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":31},"01M6DF7D7478R55P46REYH4QAC","clarify-requirements","Resolve genuine pre-execution ambiguity by scanning repo context, generating 1-6 grounded options, and asking 1-3 focused questions via AskUserQuestion. NOT for mid-task use (injection risk); NOT when the goal is already unambiguous; use to disambiguate vague prompts before any file edits.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fworkspace-hooks\u002Fskills\u002Fclarify-requirements\u002FSKILL.md",[],[82,83,84,85,86,87,88,89,90,26,91,92,93,94,95],"clarify requirements","clarify","requirements","risk","options","task","prompts","goal","scanning","context","repo","injection","execution","file",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":107,"publishedAt":31},"01M6DF79CA4BHJS66J8EZDBPWJ","openmm-md","Run FREE, open-source, Windows-native GPU molecular dynamics via the openmm-md MCP (OpenMM + CUDA on the local NVIDIA GPU). Use for protein \u002F protein-ligand MD when you want a free stack or are on Windows without a Schrodinger license. Covers the full workflow (prepare, solvate, minimize, equilibrate, production, analyze, mmgbsa) AND an honest decision guide vs Schrodinger Desmond, including how to run Desmond legitimately on Linux or a cloud GPU with a real license. This is a deliberately LESSER free alternative and does NOT replace the schrodinger MCP tools. Do NOT use it to pick a free tool when a validated FEP+, WaterMap, IFD-MD, or Prime MM-GBSA result is actually required.","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Fmcp\u002Fopenmm-md-mcp\u002Fskill\u002Fopenmm-md\u002FSKILL.md",[102],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[108,109,110,111,112,22,113,114,115,116,117,118,119,120,26,121,122,123,124,125],"openmm md","how","decision","pick","linux","tool","stack","open","NVIDIA","gpu","license","workflow","windows","free","molecular dynamics","local","do","MCP",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":138,"publishedAt":31},"01M6DF76C1MG85VEWP8VZCBNMN","visual-review","Take screenshots of web pages and UI using Playwright for visual review and iteration","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fvisual-review\u002FSKILL.md",[132,135],{"categoryNo":133,"categoryName":134,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":136,"categoryName":137,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000008","测试与质量",[139,140,141,142,143,144,145,146,147,148,109,149,150,151,152],"review","visual","visual review","pages","web","false","iteration","take","check","slides","ui","screenshot","playwright","screenshots",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":31},"01M6DF73AQVCBZKEN0YXEX9FXP","status","Diagnostic status report — shows metaswarm installation state, project setup, and potential issues","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstatus\u002FSKILL.md",[],[155,160,161,162,163,164,165,166],"setup","report","project","installation","project setup","issues","state",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":31},"01M6DF6X6C2XB0P6GX76P7TTYV","start","Use when starting work on any task, when the user mentions metaswarm, or when the user wants to begin tracked development work","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fstart\u002FSKILL.md",[173],{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},[169,175,87,176,177,178,26,179,180,181,182],"start issue","issue","ready","work on issue","user","work","work on","development",{"skillNo":184,"name":160,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":31},"01M6DF6QMJ9AJKFKHHKRT005PQ","Interactive project setup — detects your project, configures metaswarm, writes project-local files","https:\u002F\u002Fgithub.com\u002FPrekzursil\u002Fagent-skills-toolchain\u002Fblob\u002Fmain\u002Ftools\u002Feditor\u002Fmetaswarm\u002Fskills\u002Fsetup\u002FSKILL.md",[],[160,162,123,189,164,190],"files","interactive"]