[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GFRDEEEEHP8E0058YY847":3,"skill-same:01M71GFRDEEEEHP8E0058YY847":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M71GFRDEEEEHP8E0058YY847","string-database",null,"Query STRING API for protein-protein interactions (59M proteins, 20B interactions). Network analysis, GO\u002FKEGG enrichment, interaction discovery, 5000+ species, for systems biology.","JSGforever\u002Fskillguard","JSGforever","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F85541948?v=4","01M71FQD3E132VMR5F4TAYX3YS","01M71FQD4DYW0XJ4XQ4YQH75Y9",2,"GPL-3.0","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__Microck--claude-scientific-skills\u002Fscientific-skills\u002Fstring-database\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"STRING","string database","database","systems","enrichment","discovery","for","Protein","network analysis","go","KEGG","network","interaction","systems biology","api","analysis","query","biology","proteins","2026-11-10 10:12:30",false,"---\nname: string-database\ndescription: \"Query STRING API for protein-protein interactions (59M proteins, 20B interactions). Network analysis, GO\u002FKEGG enrichment, interaction discovery, 5000+ species, for systems biology.\"\n---\n\n# STRING Database\n\n## Overview\n\nSTRING is a comprehensive database of known and predicted protein-protein interactions covering 59M proteins and 20B+ interactions across 5000+ organisms. Query interaction networks, perform functional enrichment, discover partners via REST API for systems biology and pathway analysis.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Retrieving protein-protein interaction networks for single or multiple proteins\n- Performing functional enrichment analysis (GO, KEGG, Pfam) on protein lists\n- Discovering interaction partners and expanding protein networks\n- Testing if proteins form significantly enriched functional modules\n- Generating network visualizations with evidence-based coloring\n- Analyzing homology and protein family relationships\n- Conducting cross-species protein interaction comparisons\n- Identifying hub proteins and network connectivity patterns\n\n## Quick Start\n\nThe skill provides:\n1. Python helper functions (`scripts\u002Fstring_api.py`) for all STRING REST API operations\n2. Comprehensive reference documentation (`references\u002Fstring_reference.md`) with detailed API specifications\n\nWhen users request STRING data, determine which operation is needed and use the appropriate function from `scripts\u002Fstring_api.py`.\n\n## Core Operations\n\n### 1. Identifier Mapping (`string_map_ids`)\n\nConvert gene names, protein names, and external IDs to STRING identifiers.\n\n**When to use**: Starting any STRING analysis, validating protein names, finding canonical identifiers.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_map_ids\n\n# Map single protein\nresult = string_map_ids('TP53', species=9606)\n\n# Map multiple proteins\nresult = string_map_ids(['TP53', 'BRCA1', 'EGFR', 'MDM2'], species=9606)\n\n# Map with multiple matches per query\nresult = string_map_ids('p53', species=9606, limit=5)\n```\n\n**Parameters**:\n- `species`: NCBI taxon ID (9606 = human, 10090 = mouse, 7227 = fly)\n- `limit`: Number of matches per identifier (default: 1)\n- `echo_query`: Include query term in output (default: 1)\n\n**Best practice**: Always map identifiers first for faster subsequent queries.\n\n### 2. Network Retrieval (`string_network`)\n\nGet protein-protein interaction network data in tabular format.\n\n**When to use**: Building interaction networks, analyzing connectivity, retrieving interaction evidence.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_network\n\n# Get network for single protein\nnetwork = string_network('9606.ENSP00000269305', species=9606)\n\n# Get network with multiple proteins\nproteins = ['9606.ENSP00000269305', '9606.ENSP00000275493']\nnetwork = string_network(proteins, required_score=700)\n\n# Expand network with additional interactors\nnetwork = string_network('TP53', species=9606, add_nodes=10, required_score=400)\n\n# Physical interactions only\nnetwork = string_network('TP53', species=9606, network_type='physical')\n```\n\n**Parameters**:\n- `required_score`: Confidence threshold (0-1000)\n  - 150: low confidence (exploratory)\n  - 400: medium confidence (default, standard analysis)\n  - 700: high confidence (conservative)\n  - 900: highest confidence (very stringent)\n- `network_type`: `'functional'` (all evidence, default) or `'physical'` (direct binding only)\n- `add_nodes`: Add N most connected proteins (0-10)\n\n**Output columns**: Interaction pairs, confidence scores, and individual evidence scores (neighborhood, fusion, coexpression, experimental, database, text-mining).\n\n### 3. Network Visualization (`string_network_image`)\n\nGenerate network visualization as PNG image.\n\n**When to use**: Creating figures, visual exploration, presentations.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_network_image\n\n# Get network image\nproteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1']\nimg_data = string_network_image(proteins, species=9606, required_score=700)\n\n# Save image\nwith open('network.png', 'wb') as f:\n    f.write(img_data)\n\n# Evidence-colored network\nimg = string_network_image(proteins, species=9606, network_flavor='evidence')\n\n# Confidence-based visualization\nimg = string_network_image(proteins, species=9606, network_flavor='confidence')\n\n# Actions network (activation\u002Finhibition)\nimg = string_network_image(proteins, species=9606, network_flavor='actions')\n```\n\n**Network flavors**:\n- `'evidence'`: Colored lines show evidence types (default)\n- `'confidence'`: Line thickness represents confidence\n- `'actions'`: Shows activating\u002Finhibiting relationships\n\n### 4. Interaction Partners (`string_interaction_partners`)\n\nFind all proteins that interact with given protein(s).\n\n**When to use**: Discovering novel interactions, finding hub proteins, expanding networks.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_interaction_partners\n\n# Get top 10 interactors of TP53\npartners = string_interaction_partners('TP53', species=9606, limit=10)\n\n# Get high-confidence interactors\npartners = string_interaction_partners('TP53', species=9606,\n                                      limit=20, required_score=700)\n\n# Find interactors for multiple proteins\npartners = string_interaction_partners(['TP53', 'MDM2'],\n                                      species=9606, limit=15)\n```\n\n**Parameters**:\n- `limit`: Maximum number of partners to return (default: 10)\n- `required_score`: Confidence threshold (0-1000)\n\n**Use cases**:\n- Hub protein identification\n- Network expansion from seed proteins\n- Discovering indirect connections\n\n### 5. Functional Enrichment (`string_enrichment`)\n\nPerform enrichment analysis across Gene Ontology, KEGG pathways, Pfam domains, and more.\n\n**When to use**: Interpreting protein lists, pathway analysis, functional characterization, understanding biological processes.\n\n**Usage**:\n```python\nfrom scripts.string_enrichment import string_enrichment\n\n# Enrichment for a protein list\nproteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1', 'ATR', 'TP73']\nenrichment = string_enrichment(proteins, species=9606)\n\n# Parse results to find significant terms\nimport pandas as pd\ndf = pd.read_csv(io.StringIO(enrichment), sep='\\t')\nsignificant = df[df['fdr'] \u003C 0.05]\n```\n\n**Enrichment categories**:\n- **Gene Ontology**: Biological Process, Molecular Function, Cellular Component\n- **KEGG Pathways**: Metabolic and signaling pathways\n- **Pfam**: Protein domains\n- **InterPro**: Protein families and domains\n- **SMART**: Domain architecture\n- **UniProt Keywords**: Curated functional keywords\n\n**Output columns**:\n- `category`: Annotation database (e.g., \"KEGG Pathways\", \"GO Biological Process\")\n- `term`: Term identifier\n- `description`: Human-readable term description\n- `number_of_genes`: Input proteins with this annotation\n- `p_value`: Uncorrected enrichment p-value\n- `fdr`: False discovery rate (corrected p-value)\n\n**Statistical method**: Fisher's exact test with Benjamini-Hochberg FDR correction.\n\n**Interpretation**: FDR \u003C 0.05 indicates statistically significant enrichment.\n\n### 6. PPI Enrichment (`string_ppi_enrichment`)\n\nTest if a protein network has significantly more interactions than expected by chance.\n\n**When to use**: Validating if proteins form functional module, testing network connectivity.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_ppi_enrichment\nimport json\n\n# Test network connectivity\nproteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1']\nresult = string_ppi_enrichment(proteins, species=9606, required_score=400)\n\n# Parse JSON result\ndata = json.loads(result)\nprint(f\"Observed edges: {data['number_of_edges']}\")\nprint(f\"Expected edges: {data['expected_number_of_edges']}\")\nprint(f\"P-value: {data['p_value']}\")\n```\n\n**Output fields**:\n- `number_of_nodes`: Proteins in network\n- `number_of_edges`: Observed interactions\n- `expected_number_of_edges`: Expected in random network\n- `p_value`: Statistical significance\n\n**Interpretation**:\n- p-value \u003C 0.05: Network is significantly enriched (proteins likely form functional module)\n- p-value ≥ 0.05: No significant enrichment (proteins may be unrelated)\n\n### 7. Homology Scores (`string_homology`)\n\nRetrieve protein similarity and homology information.\n\n**When to use**: Identifying protein families, paralog analysis, cross-species comparisons.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_homology\n\n# Get homology between proteins\nproteins = ['TP53', 'TP63', 'TP73']  # p53 family\nhomology = string_homology(proteins, species=9606)\n```\n\n**Use cases**:\n- Protein family identification\n- Paralog discovery\n- Evolutionary analysis\n\n### 8. Version Information (`string_version`)\n\nGet current STRING database version.\n\n**When to use**: Ensuring reproducibility, documenting methods.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_version\n\nversion = string_version()\nprint(f\"STRING version: {version}\")\n```\n\n## Common Analysis Workflows\n\n### Workflow 1: Protein List Analysis (Standard Workflow)\n\n**Use case**: Analyze a list of proteins from experiment (e.g., differential expression, proteomics).\n\n```python\nfrom scripts.string_api import (string_map_ids, string_network,\n                                string_enrichment, string_ppi_enrichment,\n                                string_network_image)\n\n# Step 1: Map gene names to STRING IDs\ngene_list = ['TP53', 'BRCA1', 'ATM', 'CHEK2', 'MDM2', 'ATR', 'BRCA2']\nmapping = string_map_ids(gene_list, species=9606)\n\n# Step 2: Get interaction network\nnetwork = string_network(gene_list, species=9606, required_score=400)\n\n# Step 3: Test if network is enriched\nppi_result = string_ppi_enrichment(gene_list, species=9606)\n\n# Step 4: Perform functional enrichment\nenrichment = string_enrichment(gene_list, species=9606)\n\n# Step 5: Generate network visualization\nimg = string_network_image(gene_list, species=9606,\n                          network_flavor='evidence', required_score=400)\nwith open('protein_network.png', 'wb') as f:\n    f.write(img)\n\n# Step 6: Parse and interpret results\n```\n\n### Workflow 2: Single Protein Investigation\n\n**Use case**: Deep dive into one protein's interactions and partners.\n\n```python\nfrom scripts.string_api import (string_map_ids, string_interaction_partners,\n                                string_network_image)\n\n# Step 1: Map protein name\nprotein = 'TP53'\nmapping = string_map_ids(protein, species=9606)\n\n# Step 2: Get all interaction partners\npartners = string_interaction_partners(protein, species=9606,\n                                      limit=20, required_score=700)\n\n# Step 3: Visualize expanded network\nimg = string_network_image(protein, species=9606, add_nodes=15,\n                          network_flavor='confidence', required_score=700)\nwith open('tp53_network.png', 'wb') as f:\n    f.write(img)\n```\n\n### Workflow 3: Pathway-Centric Analysis\n\n**Use case**: Identify and visualize proteins in a specific biological pathway.\n\n```python\nfrom scripts.string_api import string_enrichment, string_network\n\n# Step 1: Start with known pathway proteins\ndna_repair_proteins = ['TP53', 'ATM', 'ATR', 'CHEK1', 'CHEK2',\n                       'BRCA1', 'BRCA2', 'RAD51', 'XRCC1']\n\n# Step 2: Get network\nnetwork = string_network(dna_repair_proteins, species=9606,\n                        required_score=700, add_nodes=5)\n\n# Step 3: Enrichment to confirm pathway annotation\nenrichment = string_enrichment(dna_repair_proteins, species=9606)\n\n# Step 4: Parse enrichment for DNA repair pathways\nimport pandas as pd\nimport io\ndf = pd.read_csv(io.StringIO(enrichment), sep='\\t')\ndna_repair = df[df['description'].str.contains('DNA repair', case=False)]\n```\n\n### Workflow 4: Cross-Species Analysis\n\n**Use case**: Compare protein interactions across different organisms.\n\n```python\nfrom scripts.string_api import string_network\n\n# Human network\nhuman_network = string_network('TP53', species=9606, required_score=700)\n\n# Mouse network\nmouse_network = string_network('Trp53', species=10090, required_score=700)\n\n# Yeast network (if ortholog exists)\nyeast_network = string_network('gene_name', species=4932, required_score=700)\n```\n\n### Workflow 5: Network Expansion and Discovery\n\n**Use case**: Start with seed proteins and discover connected functional modules.\n\n```python\nfrom scripts.string_api import (string_interaction_partners, string_network,\n                                string_enrichment)\n\n# Step 1: Start with seed protein(s)\nseed_proteins = ['TP53']\n\n# Step 2: Get first-degree interactors\npartners = string_interaction_partners(seed_proteins, species=9606,\n                                      limit=30, required_score=700)\n\n# Step 3: Parse partners to get protein list\nimport pandas as pd\nimport io\ndf = pd.read_csv(io.StringIO(partners), sep='\\t')\nall_proteins = list(set(df['preferredName_A'].tolist() +\n                       df['preferredName_B'].tolist()))\n\n# Step 4: Perform enrichment on expanded network\nenrichment = string_enrichment(all_proteins[:50], species=9606)\n\n# Step 5: Filter for interesting functional modules\nenrichment_df = pd.read_csv(io.StringIO(enrichment), sep='\\t')\nmodules = enrichment_df[enrichment_df['fdr'] \u003C 0.001]\n```\n\n## Common Species\n\nWhen specifying species, use NCBI taxon IDs:\n\n| Organism | Common Name | Taxon ID |\n|----------|-------------|----------|\n| Homo sapiens | Human | 9606 |\n| Mus musculus | Mouse | 10090 |\n| Rattus norvegicus | Rat | 10116 |\n| Drosophila melanogaster | Fruit fly | 7227 |\n| Caenorhabditis elegans | C. elegans | 6239 |\n| Saccharomyces cerevisiae | Yeast | 4932 |\n| Arabidopsis thaliana | Thale cress | 3702 |\n| Escherichia coli | E. coli | 511145 |\n| Danio rerio | Zebrafish | 7955 |\n\nFull list available at: https:\u002F\u002Fstring-db.org\u002Fcgi\u002Finput?input_page_active_form=organisms\n\n## Understanding Confidence Scores\n\nSTRING provides combined confidence scores (0-1000) integrating multiple evidence types:\n\n### Evidence Channels\n\n1. **Neighborhood (nscore)**: Conserved genomic neighborhood across species\n2. **Fusion (fscore)**: Gene fusion events\n3. **Phylogenetic Profile (pscore)**: Co-occurrence patterns across species\n4. **Coexpression (ascore)**: Correlated RNA expression\n5. **Experimental (escore)**: Biochemical and genetic experiments\n6. **Database (dscore)**: Curated pathway and complex databases\n7. **Text-mining (tscore)**: Literature co-occurrence and NLP extraction\n\n### Recommended Thresholds\n\nChoose threshold based on analysis goals:\n\n- **150 (low confidence)**: Exploratory analysis, hypothesis generation\n- **400 (medium confidence)**: Standard analysis, balanced sensitivity\u002Fspecificity\n- **700 (high confidence)**: Conservative analysis, high-confidence interactions\n- **900 (highest confidence)**: Very stringent, experimental evidence preferred\n\n**Trade-offs**:\n- Lower thresholds: More interactions (higher recall, more false positives)\n- Higher thresholds: Fewer interactions (higher precision, more false negatives)\n\n## Network Types\n\n### Functional Networks (Default)\n\nIncludes all evidence types (experimental, computational, text-mining). Represents proteins that are functionally associated, even without direct physical binding.\n\n**When to use**:\n- Pathway analysis\n- Functional enrichment studies\n- Systems biology\n- Most general analyses\n\n### Physical Networks\n\nOnly includes evidence for direct physical binding (experimental data and database annotations for physical interactions).\n\n**When to use**:\n- Structural biology studies\n- Protein complex analysis\n- Direct binding validation\n- When physical contact is required\n\n## API Best Practices\n\n1. **Always map identifiers first**: Use `string_map_ids()` before other operations for faster queries\n2. **Use STRING IDs when possible**: Use format `9606.ENSP00000269305` instead of gene names\n3. **Specify species for networks >10 proteins**: Required for accurate results\n4. **Respect rate limits**: Wait 1 second between API calls\n5. **Use versioned URLs for reproducibility**: Available in reference documentation\n6. **Handle errors gracefully**: Check for \"Error:\" prefix in returned strings\n7. **Choose appropriate confidence thresholds**: Match threshold to analysis goals\n\n## Detailed Reference\n\nFor comprehensive API documentation, complete parameter lists, output formats, and advanced usage, refer to `references\u002Fstring_reference.md`. This includes:\n\n- Complete API endpoint specifications\n- All supported output formats (TSV, JSON, XML, PSI-MI)\n- Advanced features (bulk upload, values\u002Franks enrichment)\n- Error handling and troubleshooting\n- Integration with other tools (Cytoscape, R, Python libraries)\n- Data license and citation information\n\n## Troubleshooting\n\n**No proteins found**:\n- Verify species parameter matches identifiers\n- Try mapping identifiers first with `string_map_ids()`\n- Check for typos in protein names\n\n**Empty network results**:\n- Lower confidence threshold (`required_score`)\n- Check if proteins actually interact\n- Verify species is correct\n\n**Timeout or slow queries**:\n- Reduce number of input proteins\n- Use STRING IDs instead of gene names\n- Split large queries into batches\n\n**\"Species required\" error**:\n- Add `species` parameter for networks with >10 proteins\n- Always include species for consistency\n\n**Results look unexpected**:\n- Check STRING version with `string_version()`\n- Verify network_type is appropriate (functional vs physical)\n- Review confidence threshold selection\n\n## Additional Resources\n\nFor proteome-scale analysis or complete species network upload:\n- Visit https:\u002F\u002Fstring-db.org\n- Use \"Upload proteome\" feature\n- STRING will generate complete interaction network and predict functions\n\nFor bulk downloads of complete datasets:\n- Download page: https:\u002F\u002Fstring-db.org\u002Fcgi\u002Fdownload\n- Includes complete interaction files, protein annotations, and pathway mappings\n\n## Data License\n\nSTRING data is freely available under **Creative Commons BY 4.0** license:\n- Free for academic and commercial use\n- Attribution required when publishing\n- Cite latest STRING publication\n\n## Citation\n\nWhen using STRING in publications, cite the most recent publication from: https:\u002F\u002Fstring-db.org\u002Fcgi\u002Fabout\n","# STRING Database\n\n## Overview\n\nSTRING is a comprehensive database of known and predicted protein-protein interactions covering 59M proteins and 20B+ interactions across 5000+ organisms. Query interaction networks, perform functional enrichment, discover partners via REST API for systems biology and pathway analysis.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Retrieving protein-protein interaction networks for single or multiple proteins\n- Performing functional enrichment analysis (GO, KEGG, Pfam) on protein lists\n- Discovering interaction partners and expanding protein networks\n- Testing if proteins form significantly enriched functional modules\n- Generating network visualizations with evidence-based coloring\n- Analyzing homology and protein family relationships\n- Conducting cross-species protein interaction comparisons\n- Identifying hub proteins and network connectivity patterns\n\n## Quick Start\n\nThe skill provides:\n1. Python helper functions (`scripts\u002Fstring_api.py`) for all STRING REST API operations\n2. Comprehensive reference documentation (`references\u002Fstring_reference.md`) with detailed API specifications\n\nWhen users request STRING data, determine which operation is needed and use the appropriate function from `scripts\u002Fstring_api.py`.\n\n## Core Operations\n\n### 1. Identifier Mapping (`string_map_ids`)\n\nConvert gene names, protein names, and external IDs to STRING identifiers.\n\n**When to use**: Starting any STRING analysis, validating protein names, finding canonical identifiers.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_map_ids\n\n# Map single protein\nresult = string_map_ids('TP53', species=9606)\n\n# Map multiple proteins\nresult = string_map_ids(['TP53', 'BRCA1', 'EGFR', 'MDM2'], species=9606)\n\n# Map with multiple matches per query\nresult = string_map_ids('p53', species=9606, limit=5)\n```\n\n**Parameters**:\n- `species`: NCBI taxon ID (9606 = human, 10090 = mouse, 7227 = fly)\n- `limit`: Number of matches per identifier (default: 1)\n- `echo_query`: Include query term in output (default: 1)\n\n**Best practice**: Always map identifiers first for faster subsequent queries.\n\n### 2. Network Retrieval (`string_network`)\n\nGet protein-protein interaction network data in tabular format.\n\n**When to use**: Building interaction networks, analyzing connectivity, retrieving interaction evidence.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_network\n\n# Get network for single protein\nnetwork = string_network('9606.ENSP00000269305', species=9606)\n\n# Get network with multiple proteins\nproteins = ['9606.ENSP00000269305', '9606.ENSP00000275493']\nnetwork = string_network(proteins, required_score=700)\n\n# Expand network with additional interactors\nnetwork = string_network('TP53', species=9606, add_nodes=10, required_score=400)\n\n# Physical interactions only\nnetwork = string_network('TP53', species=9606, network_type='physical')\n```\n\n**Parameters**:\n- `required_score`: Confidence threshold (0-1000)\n  - 150: low confidence (exploratory)\n  - 400: medium confidence (default, standard analysis)\n  - 700: high confidence (conservative)\n  - 900: highest confidence (very stringent)\n- `network_type`: `'functional'` (all evidence, default) or `'physical'` (direct binding only)\n- `add_nodes`: Add N most connected proteins (0-10)\n\n**Output columns**: Interaction pairs, confidence scores, and individual evidence scores (neighborhood, fusion, coexpression, experimental, database, text-mining).\n\n### 3. Network Visualization (`string_network_image`)\n\nGenerate network visualization as PNG image.\n\n**When to use**: Creating figures, visual exploration, presentations.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_network_image\n\n# Get network image\nproteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1']\nimg_data = string_network_image(proteins, species=9606, required_score=700)\n\n# Save image\nwith open('network.png', 'wb') as f:\n    f.write(img_data)\n\n# Evidence-colored network\nimg = string_network_image(proteins, species=9606, network_flavor='evidence')\n\n# Confidence-based visualization\nimg = string_network_image(proteins, species=9606, network_flavor='confidence')\n\n# Actions network (activation\u002Finhibition)\nimg = string_network_image(proteins, species=9606, network_flavor='actions')\n```\n\n**Network flavors**:\n- `'evidence'`: Colored lines show evidence types (default)\n- `'confidence'`: Line thickness represents confidence\n- `'actions'`: Shows activating\u002Finhibiting relationships\n\n### 4. Interaction Partners (`string_interaction_partners`)\n\nFind all proteins that interact with given protein(s).\n\n**When to use**: Discovering novel interactions, finding hub proteins, expanding networks.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_interaction_partners\n\n# Get top 10 interactors of TP53\npartners = string_interaction_partners('TP53', species=9606, limit=10)\n\n# Get high-confidence interactors\npartners = string_interaction_partners('TP53', species=9606,\n                                      limit=20, required_score=700)\n\n# Find interactors for multiple proteins\npartners = string_interaction_partners(['TP53', 'MDM2'],\n                                      species=9606, limit=15)\n```\n\n**Parameters**:\n- `limit`: Maximum number of partners to return (default: 10)\n- `required_score`: Confidence threshold (0-1000)\n\n**Use cases**:\n- Hub protein identification\n- Network expansion from seed proteins\n- Discovering indirect connections\n\n### 5. Functional Enrichment (`string_enrichment`)\n\nPerform enrichment analysis across Gene Ontology, KEGG pathways, Pfam domains, and more.\n\n**When to use**: Interpreting protein lists, pathway analysis, functional characterization, understanding biological processes.\n\n**Usage**:\n```python\nfrom scripts.string_enrichment import string_enrichment\n\n# Enrichment for a protein list\nproteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1', 'ATR', 'TP73']\nenrichment = string_enrichment(proteins, species=9606)\n\n# Parse results to find significant terms\nimport pandas as pd\ndf = pd.read_csv(io.StringIO(enrichment), sep='\\t')\nsignificant = df[df['fdr'] \u003C 0.05]\n```\n\n**Enrichment categories**:\n- **Gene Ontology**: Biological Process, Molecular Function, Cellular Component\n- **KEGG Pathways**: Metabolic and signaling pathways\n- **Pfam**: Protein domains\n- **InterPro**: Protein families and domains\n- **SMART**: Domain architecture\n- **UniProt Keywords**: Curated functional keywords\n\n**Output columns**:\n- `category`: Annotation database (e.g., \"KEGG Pathways\", \"GO Biological Process\")\n- `term`: Term identifier\n- `description`: Human-readable term description\n- `number_of_genes`: Input proteins with this annotation\n- `p_value`: Uncorrected enrichment p-value\n- `fdr`: False discovery rate (corrected p-value)\n\n**Statistical method**: Fisher's exact test with Benjamini-Hochberg FDR correction.\n\n**Interpretation**: FDR \u003C 0.05 indicates statistically significant enrichment.\n\n### 6. PPI Enrichment (`string_ppi_enrichment`)\n\nTest if a protein network has significantly more interactions than expected by chance.\n\n**When to use**: Validating if proteins form functional module, testing network connectivity.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_ppi_enrichment\nimport json\n\n# Test network connectivity\nproteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1']\nresult = string_ppi_enrichment(proteins, species=9606, required_score=400)\n\n# Parse JSON result\ndata = json.loads(result)\nprint(f\"Observed edges: {data['number_of_edges']}\")\nprint(f\"Expected edges: {data['expected_number_of_edges']}\")\nprint(f\"P-value: {data['p_value']}\")\n```\n\n**Output fields**:\n- `number_of_nodes`: Proteins in network\n- `number_of_edges`: Observed interactions\n- `expected_number_of_edges`: Expected in random network\n- `p_value`: Statistical significance\n\n**Interpretation**:\n- p-value \u003C 0.05: Network is significantly enriched (proteins likely form functional module)\n- p-value ≥ 0.05: No significant enrichment (proteins may be unrelated)\n\n### 7. Homology Scores (`string_homology`)\n\nRetrieve protein similarity and homology information.\n\n**When to use**: Identifying protein families, paralog analysis, cross-species comparisons.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_homology\n\n# Get homology between proteins\nproteins = ['TP53', 'TP63', 'TP73']  # p53 family\nhomology = string_homology(proteins, species=9606)\n```\n\n**Use cases**:\n- Protein family identification\n- Paralog discovery\n- Evolutionary analysis\n\n### 8. Version Information (`string_version`)\n\nGet current STRING database version.\n\n**When to use**: Ensuring reproducibility, documenting methods.\n\n**Usage**:\n```python\nfrom scripts.string_api import string_version\n\nversion = string_version()\nprint(f\"STRING version: {version}\")\n```\n\n## Common Analysis Workflows\n\n### Workflow 1: Protein List Analysis (Standard Workflow)\n\n**Use case**: Analyze a list of proteins from experiment (e.g., differential expression, proteomics).\n\n```python\nfrom scripts.string_api import (string_map_ids, string_network,\n                                string_enrichment, string_ppi_enrichment,\n                                string_network_image)\n\n# Step 1: Map gene names to STRING IDs\ngene_list = ['TP53', 'BRCA1', 'ATM', 'CHEK2', 'MDM2', 'ATR', 'BRCA2']\nmapping = string_map_ids(gene_list, species=9606)\n\n# Step 2: Get interaction network\nnetwork = string_network(gene_list, species=9606, required_score=400)\n\n# Step 3: Test if network is enriched\nppi_result = string_ppi_enrichment(gene_list, species=9606)\n\n# Step 4: Perform functional enrichment\nenrichment = string_enrichment(gene_list, species=9606)\n\n# Step 5: Generate network visualization\nimg = string_network_image(gene_list, species=9606,\n                          network_flavor='evidence', required_score=400)\nwith open('protein_network.png', 'wb') as f:\n    f.write(img)\n\n# Step 6: Parse and interpret results\n```\n\n### Workflow 2: Single Protein Investigation\n\n**Use case**: Deep dive into one protein's interactions and partners.\n\n```python\nfrom scripts.string_api import (string_map_ids, string_interaction_partners,\n                                string_network_image)\n\n# Step 1: Map protein name\nprotein = 'TP53'\nmapping = string_map_ids(protein, species=9606)\n\n# Step 2: Get all interaction partners\npartners = string_interaction_partners(protein, species=9606,\n                                      limit=20, required_score=700)\n\n# Step 3: Visualize expanded network\nimg = string_network_image(protein, species=9606, add_nodes=15,\n                          network_flavor='confidence', required_score=700)\nwith open('tp53_network.png', 'wb') as f:\n    f.write(img)\n```\n\n### Workflow 3: Pathway-Centric Analysis\n\n**Use case**: Identify and visualize proteins in a specific biological pathway.\n\n```python\nfrom scripts.string_api import string_enrichment, string_network\n\n# Step 1: Start with known pathway proteins\ndna_repair_proteins = ['TP53', 'ATM', 'ATR', 'CHEK1', 'CHEK2',\n                       'BRCA1', 'BRCA2', 'RAD51', 'XRCC1']\n\n# Step 2: Get network\nnetwork = string_network(dna_repair_proteins, species=9606,\n                        required_score=700, add_nodes=5)\n\n# Step 3: Enrichment to confirm pathway annotation\nenrichment = string_enrichment(dna_repair_proteins, species=9606)\n\n# Step 4: Parse enrichment for DNA repair pathways\nimport pandas as pd\nimport io\ndf = pd.read_csv(io.StringIO(enrichment), sep='\\t')\ndna_repair = df[df['description'].str.contains('DNA repair', case=False)]\n```\n\n### Workflow 4: Cross-Species Analysis\n\n**Use case**: Compare protein interactions across different organisms.\n\n```python\nfrom scripts.string_api import string_network\n\n# Human network\nhuman_network = string_network('TP53', species=9606, required_score=700)\n\n# Mouse network\nmouse_network = string_network('Trp53', species=10090, required_score=700)\n\n# Yeast network (if ortholog exists)\nyeast_network = string_network('gene_name', species=4932, required_score=700)\n```\n\n### Workflow 5: Network Expansion and Discovery\n\n**Use case**: Start with seed proteins and discover connected functional modules.\n\n```python\nfrom scripts.string_api import (string_interaction_partners, string_network,\n                                string_enrichment)\n\n# Step 1: Start with seed protein(s)\nseed_proteins = ['TP53']\n\n# Step 2: Get first-degree interactors\npartners = string_interaction_partners(seed_proteins, species=9606,\n                                      limit=30, required_score=700)\n\n# Step 3: Parse partners to get protein list\nimport pandas as pd\nimport io\ndf = pd.read_csv(io.StringIO(partners), sep='\\t')\nall_proteins = list(set(df['preferredName_A'].tolist() +\n                       df['preferredName_B'].tolist()))\n\n# Step 4: Perform enrichment on expanded network\nenrichment = string_enrichment(all_proteins[:50], species=9606)\n\n# Step 5: Filter for interesting functional modules\nenrichment_df = pd.read_csv(io.StringIO(enrichment), sep='\\t')\nmodules = enrichment_df[enrichment_df['fdr'] \u003C 0.001]\n```\n\n## Common Species\n\nWhen specifying species, use NCBI taxon IDs:\n\n| Organism | Common Name | Taxon ID |\n|----------|-------------|----------|\n| Homo sapiens | Human | 9606 |\n| Mus musculus | Mouse | 10090 |\n| Rattus norvegicus | Rat | 10116 |\n| Drosophila melanogaster | Fruit fly | 7227 |\n| Caenorhabditis elegans | C. elegans | 6239 |\n| Saccharomyces cerevisiae | Yeast | 4932 |\n| Arabidopsis thaliana | Thale cress | 3702 |\n| Escherichia coli | E. coli | 511145 |\n| Danio rerio | Zebrafish | 7955 |\n\nFull list available at: https:\u002F\u002Fstring-db.org\u002Fcgi\u002Finput?input_page_active_form=organisms\n\n## Understanding Confidence Scores\n\nSTRING provides combined confidence scores (0-1000) integrating multiple evidence types:\n\n### Evidence Channels\n\n1. **Neighborhood (nscore)**: Conserved genomic neighborhood across species\n2. **Fusion (fscore)**: Gene fusion events\n3. **Phylogenetic Profile (pscore)**: Co-occurrence patterns across species\n4. **Coexpression (ascore)**: Correlated RNA expression\n5. **Experimental (escore)**: Biochemical and genetic experiments\n6. **Database (dscore)**: Curated pathway and complex databases\n7. **Text-mining (tscore)**: Literature co-occurrence and NLP extraction\n\n### Recommended Thresholds\n\nChoose threshold based on analysis goals:\n\n- **150 (low confidence)**: Exploratory analysis, hypothesis generation\n- **400 (medium confidence)**: Standard analysis, balanced sensitivity\u002Fspecificity\n- **700 (high confidence)**: Conservative analysis, high-confidence interactions\n- **900 (highest confidence)**: Very stringent, experimental evidence preferred\n\n**Trade-offs**:\n- Lower thresholds: More interactions (higher recall, more false positives)\n- Higher thresholds: Fewer interactions (higher precision, more false negatives)\n\n## Network Types\n\n### Functional Networks (Default)\n\nIncludes all evidence types (experimental, computational, text-mining). Represents proteins that are functionally associated, even without direct physical binding.\n\n**When to use**:\n- Pathway analysis\n- Functional enrichment studies\n- Systems biology\n- Most general analyses\n\n### Physical Networks\n\nOnly includes evidence for direct physical binding (experimental data and database annotations for physical interactions).\n\n**When to use**:\n- Structural biology studies\n- Protein complex analysis\n- Direct binding validation\n- When physical contact is required\n\n## API Best Practices\n\n1. **Always map identifiers first**: Use `string_map_ids()` before other operations for faster queries\n2. **Use STRING IDs when possible**: Use format `9606.ENSP00000269305` instead of gene names\n3. **Specify species for networks >10 proteins**: Required for accurate results\n4. **Respect rate limits**: Wait 1 second between API calls\n5. **Use versioned URLs for reproducibility**: Available in reference documentation\n6. **Handle errors gracefully**: Check for \"Error:\" prefix in returned strings\n7. **Choose appropriate confidence thresholds**: Match threshold to analysis goals\n\n## Detailed Reference\n\nFor comprehensive API documentation, complete parameter lists, output formats, and advanced usage, refer to `references\u002Fstring_reference.md`. This includes:\n\n- Complete API endpoint specifications\n- All supported output formats (TSV, JSON, XML, PSI-MI)\n- Advanced features (bulk upload, values\u002Franks enrichment)\n- Error handling and troubleshooting\n- Integration with other tools (Cytoscape, R, Python libraries)\n- Data license and citation information\n\n## Troubleshooting\n\n**No proteins found**:\n- Verify species parameter matches identifiers\n- Try mapping identifiers first with `string_map_ids()`\n- Check for typos in protein names\n\n**Empty network results**:\n- Lower confidence threshold (`required_score`)\n- Check if proteins actually interact\n- Verify species is correct\n\n**Timeout or slow queries**:\n- Reduce number of input proteins\n- Use STRING IDs instead of gene names\n- Split large queries into batches\n\n**\"Species required\" error**:\n- Add `species` parameter for networks with >10 proteins\n- Always include species for consistency\n\n**Results look unexpected**:\n- Check STRING version with `string_version()`\n- Verify network_type is appropriate (functional vs physical)\n- Review confidence threshold selection\n\n## Additional Resources\n\nFor proteome-scale analysis or complete species network upload:\n- Visit https:\u002F\u002Fstring-db.org\n- Use \"Upload proteome\" feature\n- STRING will generate complete interaction network and predict functions\n\nFor bulk downloads of complete datasets:\n- Download page: https:\u002F\u002Fstring-db.org\u002Fcgi\u002Fdownload\n- Includes complete interaction files, protein annotations, and pathway mappings\n\n## Data License\n\nSTRING data is freely available under **Creative Commons BY 4.0** license:\n- Free for academic and commercial use\n- Attribution required when publishing\n- Cite latest STRING publication\n\n## Citation\n\nWhen using STRING in publications, cite the most recent publication from: https:\u002F\u002Fstring-db.org\u002Fcgi\u002Fabout\n",{"name":5,"description":7},"main","f2ec4b3b9133d34eeaf9b38e4b0a97e8e5705a7f","benchmarks\u002Ffinal\u002Fskills\u002Fasset1__Microck--claude-scientific-skills\u002Fscientific-skills\u002Fstring-database",0,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard","https:\u002F\u002Fgithub.com\u002FJSGforever","2026-08-29 18:27:56",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add JSGforever\u002Fskillguard --skill string-database",{"tool":60,"command":61},"bunx","bunx skills add JSGforever\u002Fskillguard --skill string-database",{"tool":63,"command":64},"pnpm","pnpm dlx skills add JSGforever\u002Fskillguard --skill string-database","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__Microck--claude-scientific-skills\u002Fscientific-skills\u002Fstring-database\u002FSKILL.md",true,[68,74],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fstring_reference.md","REFERENCE","参考文档",13697,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__Microck--claude-scientific-skills\u002Fscientific-skills\u002Fstring-database\u002Freferences\u002Fstring_reference.md",{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"scripts\u002Fstring_api.py","SCRIPT","脚本",11927,"https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__Microck--claude-scientific-skills\u002Fscientific-skills\u002Fstring-database\u002Fscripts\u002Fstring_api.py",[81,111,127,154,176,197],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":90,"publishedAt":42},"01M71HY2SNXBA9Q00WZDTZQ31Z","skillguard-codex-scanner","Hybrid deterministic+LLM agent-skill security scanner. Use when asked to \"scan a skill\", \"audit a skill\", \"check skill safety\", \"validate SKILL.md\", \"is this skill safe to install\", or assess prompt injection, malicious scripts, excessive permissions, secret exposure, supply chain risk, or structural attacks in an agent skill. Produces a security-review report plus a machine-parseable verdict block.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fsrc\u002Fskillguard\u002Fstatic_scanner\u002Fskillguard-codex-scanner\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110],"scanner","skillguard codex scanner","skillguard","codex","chain","skill security","security-review","review report","structural","secret","prompt injection","security scanner","when","review","malicious","permissions","exposure","audit","scripts","safe",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":115,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":42},"01M71HY0SPKTT3S27BC2HPAC5M","data-exfiltrator","Analyzes data files","MIT","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Fsmoke-one-skill\u002Fasset1__cisco-ai-defense--data-exfiltrator\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[124,125,126],"data","data exfiltrator","files",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":42},"01M71HXVS9EMN44BGDW215FZ72","real-time-collaboration-engine","Build real-time collaborative editing with WebSockets, OT\u002FCRDT conflict resolution, and presence awareness. Implements cursor tracking, optimistic updates, and offline sync. Use for collaborative editors, whiteboards, video editing. Activate on \"real-time collaboration\", \"WebSocket sync\", \"multiplayer editing\", \"CRDT\", \"presence awareness\". NOT for simple chat, request-response APIs, or single-user apps.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--real-time-collaboration-engine\u002FSKILL.md",[],[134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153],"time","real time collaboration engine","real time collaboration","collaboration","engine","real time","Video","reliability","video editing","performance","conflict resolution","presence","access","apps","updates","Bash","activate","optimizer","react","streaming",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":163,"publishedAt":42},"01M71HXP6CTY4KFN0QVMMN0V7J","react-performance-optimizer","Optimize React apps for 60fps performance. Implements memoization, virtualization, code splitting, bundle optimization. Use for slow renders, large lists, bundle bloat. Activate on \"React performance\", \"slow render\", \"useMemo\", \"bundle size\", \"virtualization\". NOT for backend optimization, non-React frameworks, or premature optimization.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--react-performance-optimizer\u002FSKILL.md",[160],{"categoryNo":161,"categoryName":162,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",[143,164,151,152,165,166,167,168,169,170,134,171,172,147,149,173,150,153,174,175],"react performance optimizer","react performance","performance optimizer","app","nextjs","expert","re","render","2025","code","router","strategies",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":183,"publishedAt":42},"01M71HXH7QXSQB4QTDZ7SP7YXQ","llm-streaming-response-handler","Build production LLM streaming UIs with Server-Sent Events, real-time token display, cancellation, error recovery. Handles OpenAI\u002FAnthropic\u002FClaude streaming APIs. Use for chatbots, AI assistants, real-time text generation. Activate on \"LLM streaming\", \"SSE\", \"token stream\", \"chat UI\", \"real-time AI\". NOT for batch processing, non-streaming APIs, or WebSocket bidirectional chat.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--llm-streaming-response-handler\u002FSKILL.md",[182],{"categoryNo":161,"categoryName":162,"taxonomyType":20,"taxonomyTypeDesc":21},[184,153,185,186,187,188,143,134,189,190,191,149,150,151,192,152,193,194,195,196],"llm streaming response handler","handler","error","processing","retry","chat ui","error recovery","critical","batch","display","text","server","read",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":210,"publishedAt":42},"01M71HXCB0E1YRKYW1Y8T0Y106","github-actions-pipeline-builder","Build production CI\u002FCD pipelines with GitHub Actions. Implements matrix builds, caching, deployments, testing, security scanning. Use for automated testing, deployments, release workflows. Activate on \"GitHub Actions\", \"CI\u002FCD\", \"workflow\", \"deployment pipeline\", \"automated testing\". NOT for Jenkins\u002FCircleCI, manual deployments, or non-GitHub repositories.","https:\u002F\u002Fgithub.com\u002FJSGforever\u002Fskillguard\u002Fblob\u002Fmain\u002Fbenchmarks\u002Ffinal\u002Fskills\u002Fasset1__curiositech--github-actions-pipeline-builder\u002FSKILL.md",[203,206,209],{"categoryNo":204,"categoryName":205,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":207,"categoryName":208,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":88,"categoryName":89,"taxonomyType":20,"taxonomyTypeDesc":21},[211,212,213,214,215,216,217,141,169,218,219,220,150,175,221,196,222,223,224,225],"github actions pipeline builder","actions","github actions","pipeline builder","github","builder","pipeline","testing","ci","workflows","run","release","write","edit","git"]