[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AFJMWHD86KMHBM1GGQTT2R":3,"skill-same:01M6AFJMWHD86KMHBM1GGQTT2R":92},{"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":31,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6AFJMWHD86KMHBM1GGQTT2R","pubchem-database",null,"Query PubChem via PUG-REST API\u002FPubChemPy (110M+ compounds). Search by name\u002FCID\u002FSMILES, retrieve properties, similarity\u002Fsubstructure searches, bioactivity, for cheminformatics.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33481,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpubchem-database\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"database","pubchem database","search","REST","api","properties","query","cheminformatics","rest api","name","similarity","via","for","by name","SMILES","2026-11-10 10:12:30",false,"---\nname: pubchem-database\ndescription: \"Query PubChem via PUG-REST API\u002FPubChemPy (110M+ compounds). Search by name\u002FCID\u002FSMILES, retrieve properties, similarity\u002Fsubstructure searches, bioactivity, for cheminformatics.\"\n---\n\n# PubChem Database\n\n## Overview\n\nPubChem is the world's largest freely available chemical database with 110M+ compounds and 270M+ bioactivities. Query chemical structures by name, CID, or SMILES, retrieve molecular properties, perform similarity and substructure searches, access bioactivity data using PUG-REST API and PubChemPy.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Searching for chemical compounds by name, structure (SMILES\u002FInChI), or molecular formula\n- Retrieving molecular properties (MW, LogP, TPSA, hydrogen bonding descriptors)\n- Performing similarity searches to find structurally related compounds\n- Conducting substructure searches for specific chemical motifs\n- Accessing bioactivity data from screening assays\n- Converting between chemical identifier formats (CID, SMILES, InChI)\n- Batch processing multiple compounds for drug-likeness screening or property analysis\n\n## Core Capabilities\n\n### 1. Chemical Structure Search\n\nSearch for compounds using multiple identifier types:\n\n**By Chemical Name**:\n```python\nimport pubchempy as pcp\ncompounds = pcp.get_compounds('aspirin', 'name')\ncompound = compounds[0]\n```\n\n**By CID (Compound ID)**:\n```python\ncompound = pcp.Compound.from_cid(2244)  # Aspirin\n```\n\n**By SMILES**:\n```python\ncompound = pcp.get_compounds('CC(=O)OC1=CC=CC=C1C(=O)O', 'smiles')[0]\n```\n\n**By InChI**:\n```python\ncompound = pcp.get_compounds('InChI=1S\u002FC9H8O4\u002F...', 'inchi')[0]\n```\n\n**By Molecular Formula**:\n```python\ncompounds = pcp.get_compounds('C9H8O4', 'formula')\n# Returns all compounds matching this formula\n```\n\n### 2. Property Retrieval\n\nRetrieve molecular properties for compounds using either high-level or low-level approaches:\n\n**Using PubChemPy (Recommended)**:\n```python\nimport pubchempy as pcp\n\n# Get compound object with all properties\ncompound = pcp.get_compounds('caffeine', 'name')[0]\n\n# Access individual properties\nmolecular_formula = compound.molecular_formula\nmolecular_weight = compound.molecular_weight\niupac_name = compound.iupac_name\nsmiles = compound.canonical_smiles\ninchi = compound.inchi\nxlogp = compound.xlogp  # Partition coefficient\ntpsa = compound.tpsa    # Topological polar surface area\n```\n\n**Get Specific Properties**:\n```python\n# Request only specific properties\nproperties = pcp.get_properties(\n    ['MolecularFormula', 'MolecularWeight', 'CanonicalSMILES', 'XLogP'],\n    'aspirin',\n    'name'\n)\n# Returns list of dictionaries\n```\n\n**Batch Property Retrieval**:\n```python\nimport pandas as pd\n\ncompound_names = ['aspirin', 'ibuprofen', 'paracetamol']\nall_properties = []\n\nfor name in compound_names:\n    props = pcp.get_properties(\n        ['MolecularFormula', 'MolecularWeight', 'XLogP'],\n        name,\n        'name'\n    )\n    all_properties.extend(props)\n\ndf = pd.DataFrame(all_properties)\n```\n\n**Available Properties**: MolecularFormula, MolecularWeight, CanonicalSMILES, IsomericSMILES, InChI, InChIKey, IUPACName, XLogP, TPSA, HBondDonorCount, HBondAcceptorCount, RotatableBondCount, Complexity, Charge, and many more (see `references\u002Fapi_reference.md` for complete list).\n\n### 3. Similarity Search\n\nFind structurally similar compounds using Tanimoto similarity:\n\n```python\nimport pubchempy as pcp\n\n# Start with a query compound\nquery_compound = pcp.get_compounds('gefitinib', 'name')[0]\nquery_smiles = query_compound.canonical_smiles\n\n# Perform similarity search\nsimilar_compounds = pcp.get_compounds(\n    query_smiles,\n    'smiles',\n    searchtype='similarity',\n    Threshold=85,  # Similarity threshold (0-100)\n    MaxRecords=50\n)\n\n# Process results\nfor compound in similar_compounds[:10]:\n    print(f\"CID {compound.cid}: {compound.iupac_name}\")\n    print(f\"  MW: {compound.molecular_weight}\")\n```\n\n**Note**: Similarity searches are asynchronous for large queries and may take 15-30 seconds to complete. PubChemPy handles the asynchronous pattern automatically.\n\n### 4. Substructure Search\n\nFind compounds containing a specific structural motif:\n\n```python\nimport pubchempy as pcp\n\n# Search for compounds containing pyridine ring\npyridine_smiles = 'c1ccncc1'\n\nmatches = pcp.get_compounds(\n    pyridine_smiles,\n    'smiles',\n    searchtype='substructure',\n    MaxRecords=100\n)\n\nprint(f\"Found {len(matches)} compounds containing pyridine\")\n```\n\n**Common Substructures**:\n- Benzene ring: `c1ccccc1`\n- Pyridine: `c1ccncc1`\n- Phenol: `c1ccc(O)cc1`\n- Carboxylic acid: `C(=O)O`\n\n### 5. Format Conversion\n\nConvert between different chemical structure formats:\n\n```python\nimport pubchempy as pcp\n\ncompound = pcp.get_compounds('aspirin', 'name')[0]\n\n# Convert to different formats\nsmiles = compound.canonical_smiles\ninchi = compound.inchi\ninchikey = compound.inchikey\ncid = compound.cid\n\n# Download structure files\npcp.download('SDF', 'aspirin', 'name', 'aspirin.sdf', overwrite=True)\npcp.download('JSON', '2244', 'cid', 'aspirin.json', overwrite=True)\n```\n\n### 6. Structure Visualization\n\nGenerate 2D structure images:\n\n```python\nimport pubchempy as pcp\n\n# Download compound structure as PNG\npcp.download('PNG', 'caffeine', 'name', 'caffeine.png', overwrite=True)\n\n# Using direct URL (via requests)\nimport requests\n\ncid = 2244  # Aspirin\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fcid\u002F{cid}\u002FPNG?image_size=large\"\nresponse = requests.get(url)\n\nwith open('structure.png', 'wb') as f:\n    f.write(response.content)\n```\n\n### 7. Synonym Retrieval\n\nGet all known names and synonyms for a compound:\n\n```python\nimport pubchempy as pcp\n\nsynonyms_data = pcp.get_synonyms('aspirin', 'name')\n\nif synonyms_data:\n    cid = synonyms_data[0]['CID']\n    synonyms = synonyms_data[0]['Synonym']\n\n    print(f\"CID {cid} has {len(synonyms)} synonyms:\")\n    for syn in synonyms[:10]:  # First 10\n        print(f\"  - {syn}\")\n```\n\n### 8. Bioactivity Data Access\n\nRetrieve biological activity data from assays:\n\n```python\nimport requests\nimport json\n\n# Get bioassay summary for a compound\ncid = 2244  # Aspirin\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fcid\u002F{cid}\u002Fassaysummary\u002FJSON\"\n\nresponse = requests.get(url)\nif response.status_code == 200:\n    data = response.json()\n    # Process bioassay information\n    table = data.get('Table', {})\n    rows = table.get('Row', [])\n    print(f\"Found {len(rows)} bioassay records\")\n```\n\n**For more complex bioactivity queries**, use the `scripts\u002Fbioactivity_query.py` helper script which provides:\n- Bioassay summaries with activity outcome filtering\n- Assay target identification\n- Search for compounds by biological target\n- Active compound lists for specific assays\n\n### 9. Comprehensive Compound Annotations\n\nAccess detailed compound information through PUG-View:\n\n```python\nimport requests\n\ncid = 2244\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug_view\u002Fdata\u002Fcompound\u002F{cid}\u002FJSON\"\n\nresponse = requests.get(url)\nif response.status_code == 200:\n    annotations = response.json()\n    # Contains extensive data including:\n    # - Chemical and Physical Properties\n    # - Drug and Medication Information\n    # - Pharmacology and Biochemistry\n    # - Safety and Hazards\n    # - Toxicity\n    # - Literature references\n    # - Patents\n```\n\n**Get Specific Section**:\n```python\n# Get only drug information\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug_view\u002Fdata\u002Fcompound\u002F{cid}\u002FJSON?heading=Drug and Medication Information\"\n```\n\n## Installation Requirements\n\nInstall PubChemPy for Python-based access:\n\n```bash\nuv pip install pubchempy\n```\n\nFor direct API access and bioactivity queries:\n\n```bash\nuv pip install requests\n```\n\nOptional for data analysis:\n\n```bash\nuv pip install pandas\n```\n\n## Helper Scripts\n\nThis skill includes Python scripts for common PubChem tasks:\n\n### scripts\u002Fcompound_search.py\n\nProvides utility functions for searching and retrieving compound information:\n\n**Key Functions**:\n- `search_by_name(name, max_results=10)`: Search compounds by name\n- `search_by_smiles(smiles)`: Search by SMILES string\n- `get_compound_by_cid(cid)`: Retrieve compound by CID\n- `get_compound_properties(identifier, namespace, properties)`: Get specific properties\n- `similarity_search(smiles, threshold, max_records)`: Perform similarity search\n- `substructure_search(smiles, max_records)`: Perform substructure search\n- `get_synonyms(identifier, namespace)`: Get all synonyms\n- `batch_search(identifiers, namespace, properties)`: Batch search multiple compounds\n- `download_structure(identifier, namespace, format, filename)`: Download structures\n- `print_compound_info(compound)`: Print formatted compound information\n\n**Usage**:\n```python\nfrom scripts.compound_search import search_by_name, get_compound_properties\n\n# Search for a compound\ncompounds = search_by_name('ibuprofen')\n\n# Get specific properties\nprops = get_compound_properties('aspirin', 'name', ['MolecularWeight', 'XLogP'])\n```\n\n### scripts\u002Fbioactivity_query.py\n\nProvides functions for retrieving biological activity data:\n\n**Key Functions**:\n- `get_bioassay_summary(cid)`: Get bioassay summary for compound\n- `get_compound_bioactivities(cid, activity_outcome)`: Get filtered bioactivities\n- `get_assay_description(aid)`: Get detailed assay information\n- `get_assay_targets(aid)`: Get biological targets for assay\n- `search_assays_by_target(target_name, max_results)`: Find assays by target\n- `get_active_compounds_in_assay(aid, max_results)`: Get active compounds\n- `get_compound_annotations(cid, section)`: Get PUG-View annotations\n- `summarize_bioactivities(cid)`: Generate bioactivity summary statistics\n- `find_compounds_by_bioactivity(target, threshold, max_compounds)`: Find compounds by target\n\n**Usage**:\n```python\nfrom scripts.bioactivity_query import get_bioassay_summary, summarize_bioactivities\n\n# Get bioactivity summary\nsummary = summarize_bioactivities(2244)  # Aspirin\nprint(f\"Total assays: {summary['total_assays']}\")\nprint(f\"Active: {summary['active']}, Inactive: {summary['inactive']}\")\n```\n\n## API Rate Limits and Best Practices\n\n**Rate Limits**:\n- Maximum 5 requests per second\n- Maximum 400 requests per minute\n- Maximum 300 seconds running time per minute\n\n**Best Practices**:\n1. **Use CIDs for repeated queries**: CIDs are more efficient than names or structures\n2. **Cache results locally**: Store frequently accessed data\n3. **Batch requests**: Combine multiple queries when possible\n4. **Implement delays**: Add 0.2-0.3 second delays between requests\n5. **Handle errors gracefully**: Check for HTTP errors and missing data\n6. **Use PubChemPy**: Higher-level abstraction handles many edge cases\n7. **Leverage asynchronous pattern**: For large similarity\u002Fsubstructure searches\n8. **Specify MaxRecords**: Limit results to avoid timeouts\n\n**Error Handling**:\n```python\nfrom pubchempy import BadRequestError, NotFoundError, TimeoutError\n\ntry:\n    compound = pcp.get_compounds('query', 'name')[0]\nexcept NotFoundError:\n    print(\"Compound not found\")\nexcept BadRequestError:\n    print(\"Invalid request format\")\nexcept TimeoutError:\n    print(\"Request timed out - try reducing scope\")\nexcept IndexError:\n    print(\"No results returned\")\n```\n\n## Common Workflows\n\n### Workflow 1: Chemical Identifier Conversion Pipeline\n\nConvert between different chemical identifiers:\n\n```python\nimport pubchempy as pcp\n\n# Start with any identifier type\ncompound = pcp.get_compounds('caffeine', 'name')[0]\n\n# Extract all identifier formats\nidentifiers = {\n    'CID': compound.cid,\n    'Name': compound.iupac_name,\n    'SMILES': compound.canonical_smiles,\n    'InChI': compound.inchi,\n    'InChIKey': compound.inchikey,\n    'Formula': compound.molecular_formula\n}\n```\n\n### Workflow 2: Drug-Like Property Screening\n\nScreen compounds using Lipinski's Rule of Five:\n\n```python\nimport pubchempy as pcp\n\ndef check_drug_likeness(compound_name):\n    compound = pcp.get_compounds(compound_name, 'name')[0]\n\n    # Lipinski's Rule of Five\n    rules = {\n        'MW \u003C= 500': compound.molecular_weight \u003C= 500,\n        'LogP \u003C= 5': compound.xlogp \u003C= 5 if compound.xlogp else None,\n        'HBD \u003C= 5': compound.h_bond_donor_count \u003C= 5,\n        'HBA \u003C= 10': compound.h_bond_acceptor_count \u003C= 10\n    }\n\n    violations = sum(1 for v in rules.values() if v is False)\n    return rules, violations\n\nrules, violations = check_drug_likeness('aspirin')\nprint(f\"Lipinski violations: {violations}\")\n```\n\n### Workflow 3: Finding Similar Drug Candidates\n\nIdentify structurally similar compounds to a known drug:\n\n```python\nimport pubchempy as pcp\n\n# Start with known drug\nreference_drug = pcp.get_compounds('imatinib', 'name')[0]\nreference_smiles = reference_drug.canonical_smiles\n\n# Find similar compounds\nsimilar = pcp.get_compounds(\n    reference_smiles,\n    'smiles',\n    searchtype='similarity',\n    Threshold=85,\n    MaxRecords=20\n)\n\n# Filter by drug-like properties\ncandidates = []\nfor comp in similar:\n    if comp.molecular_weight and 200 \u003C= comp.molecular_weight \u003C= 600:\n        if comp.xlogp and -1 \u003C= comp.xlogp \u003C= 5:\n            candidates.append(comp)\n\nprint(f\"Found {len(candidates)} drug-like candidates\")\n```\n\n### Workflow 4: Batch Compound Property Comparison\n\nCompare properties across multiple compounds:\n\n```python\nimport pubchempy as pcp\nimport pandas as pd\n\ncompound_list = ['aspirin', 'ibuprofen', 'naproxen', 'celecoxib']\n\nproperties_list = []\nfor name in compound_list:\n    try:\n        compound = pcp.get_compounds(name, 'name')[0]\n        properties_list.append({\n            'Name': name,\n            'CID': compound.cid,\n            'Formula': compound.molecular_formula,\n            'MW': compound.molecular_weight,\n            'LogP': compound.xlogp,\n            'TPSA': compound.tpsa,\n            'HBD': compound.h_bond_donor_count,\n            'HBA': compound.h_bond_acceptor_count\n        })\n    except Exception as e:\n        print(f\"Error processing {name}: {e}\")\n\ndf = pd.DataFrame(properties_list)\nprint(df.to_string(index=False))\n```\n\n### Workflow 5: Substructure-Based Virtual Screening\n\nScreen for compounds containing specific pharmacophores:\n\n```python\nimport pubchempy as pcp\n\n# Define pharmacophore (e.g., sulfonamide group)\npharmacophore_smiles = 'S(=O)(=O)N'\n\n# Search for compounds containing this substructure\nhits = pcp.get_compounds(\n    pharmacophore_smiles,\n    'smiles',\n    searchtype='substructure',\n    MaxRecords=100\n)\n\n# Further filter by properties\nfiltered_hits = [\n    comp for comp in hits\n    if comp.molecular_weight and comp.molecular_weight \u003C 500\n]\n\nprint(f\"Found {len(filtered_hits)} compounds with desired substructure\")\n```\n\n## Reference Documentation\n\nFor detailed API documentation, including complete property lists, URL patterns, advanced query options, and more examples, consult `references\u002Fapi_reference.md`. This comprehensive reference includes:\n\n- Complete PUG-REST API endpoint documentation\n- Full list of available molecular properties\n- Asynchronous request handling patterns\n- PubChemPy API reference\n- PUG-View API for annotations\n- Common workflows and use cases\n- Links to official PubChem documentation\n\n## Troubleshooting\n\n**Compound Not Found**:\n- Try alternative names or synonyms\n- Use CID if known\n- Check spelling and chemical name format\n\n**Timeout Errors**:\n- Reduce MaxRecords parameter\n- Add delays between requests\n- Use CIDs instead of names for faster queries\n\n**Empty Property Values**:\n- Not all properties are available for all compounds\n- Check if property exists before accessing: `if compound.xlogp:`\n- Some properties only available for certain compound types\n\n**Rate Limit Exceeded**:\n- Implement delays (0.2-0.3 seconds) between requests\n- Use batch operations where possible\n- Consider caching results locally\n\n**Similarity\u002FSubstructure Search Hangs**:\n- These are asynchronous operations that may take 15-30 seconds\n- PubChemPy handles polling automatically\n- Reduce MaxRecords if timing out\n\n## Additional Resources\n\n- PubChem Home: https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002F\n- PUG-REST Documentation: https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Fdocs\u002Fpug-rest\n- PUG-REST Tutorial: https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Fdocs\u002Fpug-rest-tutorial\n- PubChemPy Documentation: https:\u002F\u002Fpubchempy.readthedocs.io\u002F\n- PubChemPy GitHub: https:\u002F\u002Fgithub.com\u002Fmcs07\u002FPubChemPy\n","# PubChem Database\n\n## Overview\n\nPubChem is the world's largest freely available chemical database with 110M+ compounds and 270M+ bioactivities. Query chemical structures by name, CID, or SMILES, retrieve molecular properties, perform similarity and substructure searches, access bioactivity data using PUG-REST API and PubChemPy.\n\n## When to Use This Skill\n\nThis skill should be used when:\n- Searching for chemical compounds by name, structure (SMILES\u002FInChI), or molecular formula\n- Retrieving molecular properties (MW, LogP, TPSA, hydrogen bonding descriptors)\n- Performing similarity searches to find structurally related compounds\n- Conducting substructure searches for specific chemical motifs\n- Accessing bioactivity data from screening assays\n- Converting between chemical identifier formats (CID, SMILES, InChI)\n- Batch processing multiple compounds for drug-likeness screening or property analysis\n\n## Core Capabilities\n\n### 1. Chemical Structure Search\n\nSearch for compounds using multiple identifier types:\n\n**By Chemical Name**:\n```python\nimport pubchempy as pcp\ncompounds = pcp.get_compounds('aspirin', 'name')\ncompound = compounds[0]\n```\n\n**By CID (Compound ID)**:\n```python\ncompound = pcp.Compound.from_cid(2244)  # Aspirin\n```\n\n**By SMILES**:\n```python\ncompound = pcp.get_compounds('CC(=O)OC1=CC=CC=C1C(=O)O', 'smiles')[0]\n```\n\n**By InChI**:\n```python\ncompound = pcp.get_compounds('InChI=1S\u002FC9H8O4\u002F...', 'inchi')[0]\n```\n\n**By Molecular Formula**:\n```python\ncompounds = pcp.get_compounds('C9H8O4', 'formula')\n# Returns all compounds matching this formula\n```\n\n### 2. Property Retrieval\n\nRetrieve molecular properties for compounds using either high-level or low-level approaches:\n\n**Using PubChemPy (Recommended)**:\n```python\nimport pubchempy as pcp\n\n# Get compound object with all properties\ncompound = pcp.get_compounds('caffeine', 'name')[0]\n\n# Access individual properties\nmolecular_formula = compound.molecular_formula\nmolecular_weight = compound.molecular_weight\niupac_name = compound.iupac_name\nsmiles = compound.canonical_smiles\ninchi = compound.inchi\nxlogp = compound.xlogp  # Partition coefficient\ntpsa = compound.tpsa    # Topological polar surface area\n```\n\n**Get Specific Properties**:\n```python\n# Request only specific properties\nproperties = pcp.get_properties(\n    ['MolecularFormula', 'MolecularWeight', 'CanonicalSMILES', 'XLogP'],\n    'aspirin',\n    'name'\n)\n# Returns list of dictionaries\n```\n\n**Batch Property Retrieval**:\n```python\nimport pandas as pd\n\ncompound_names = ['aspirin', 'ibuprofen', 'paracetamol']\nall_properties = []\n\nfor name in compound_names:\n    props = pcp.get_properties(\n        ['MolecularFormula', 'MolecularWeight', 'XLogP'],\n        name,\n        'name'\n    )\n    all_properties.extend(props)\n\ndf = pd.DataFrame(all_properties)\n```\n\n**Available Properties**: MolecularFormula, MolecularWeight, CanonicalSMILES, IsomericSMILES, InChI, InChIKey, IUPACName, XLogP, TPSA, HBondDonorCount, HBondAcceptorCount, RotatableBondCount, Complexity, Charge, and many more (see `references\u002Fapi_reference.md` for complete list).\n\n### 3. Similarity Search\n\nFind structurally similar compounds using Tanimoto similarity:\n\n```python\nimport pubchempy as pcp\n\n# Start with a query compound\nquery_compound = pcp.get_compounds('gefitinib', 'name')[0]\nquery_smiles = query_compound.canonical_smiles\n\n# Perform similarity search\nsimilar_compounds = pcp.get_compounds(\n    query_smiles,\n    'smiles',\n    searchtype='similarity',\n    Threshold=85,  # Similarity threshold (0-100)\n    MaxRecords=50\n)\n\n# Process results\nfor compound in similar_compounds[:10]:\n    print(f\"CID {compound.cid}: {compound.iupac_name}\")\n    print(f\"  MW: {compound.molecular_weight}\")\n```\n\n**Note**: Similarity searches are asynchronous for large queries and may take 15-30 seconds to complete. PubChemPy handles the asynchronous pattern automatically.\n\n### 4. Substructure Search\n\nFind compounds containing a specific structural motif:\n\n```python\nimport pubchempy as pcp\n\n# Search for compounds containing pyridine ring\npyridine_smiles = 'c1ccncc1'\n\nmatches = pcp.get_compounds(\n    pyridine_smiles,\n    'smiles',\n    searchtype='substructure',\n    MaxRecords=100\n)\n\nprint(f\"Found {len(matches)} compounds containing pyridine\")\n```\n\n**Common Substructures**:\n- Benzene ring: `c1ccccc1`\n- Pyridine: `c1ccncc1`\n- Phenol: `c1ccc(O)cc1`\n- Carboxylic acid: `C(=O)O`\n\n### 5. Format Conversion\n\nConvert between different chemical structure formats:\n\n```python\nimport pubchempy as pcp\n\ncompound = pcp.get_compounds('aspirin', 'name')[0]\n\n# Convert to different formats\nsmiles = compound.canonical_smiles\ninchi = compound.inchi\ninchikey = compound.inchikey\ncid = compound.cid\n\n# Download structure files\npcp.download('SDF', 'aspirin', 'name', 'aspirin.sdf', overwrite=True)\npcp.download('JSON', '2244', 'cid', 'aspirin.json', overwrite=True)\n```\n\n### 6. Structure Visualization\n\nGenerate 2D structure images:\n\n```python\nimport pubchempy as pcp\n\n# Download compound structure as PNG\npcp.download('PNG', 'caffeine', 'name', 'caffeine.png', overwrite=True)\n\n# Using direct URL (via requests)\nimport requests\n\ncid = 2244  # Aspirin\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fcid\u002F{cid}\u002FPNG?image_size=large\"\nresponse = requests.get(url)\n\nwith open('structure.png', 'wb') as f:\n    f.write(response.content)\n```\n\n### 7. Synonym Retrieval\n\nGet all known names and synonyms for a compound:\n\n```python\nimport pubchempy as pcp\n\nsynonyms_data = pcp.get_synonyms('aspirin', 'name')\n\nif synonyms_data:\n    cid = synonyms_data[0]['CID']\n    synonyms = synonyms_data[0]['Synonym']\n\n    print(f\"CID {cid} has {len(synonyms)} synonyms:\")\n    for syn in synonyms[:10]:  # First 10\n        print(f\"  - {syn}\")\n```\n\n### 8. Bioactivity Data Access\n\nRetrieve biological activity data from assays:\n\n```python\nimport requests\nimport json\n\n# Get bioassay summary for a compound\ncid = 2244  # Aspirin\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug\u002Fcompound\u002Fcid\u002F{cid}\u002Fassaysummary\u002FJSON\"\n\nresponse = requests.get(url)\nif response.status_code == 200:\n    data = response.json()\n    # Process bioassay information\n    table = data.get('Table', {})\n    rows = table.get('Row', [])\n    print(f\"Found {len(rows)} bioassay records\")\n```\n\n**For more complex bioactivity queries**, use the `scripts\u002Fbioactivity_query.py` helper script which provides:\n- Bioassay summaries with activity outcome filtering\n- Assay target identification\n- Search for compounds by biological target\n- Active compound lists for specific assays\n\n### 9. Comprehensive Compound Annotations\n\nAccess detailed compound information through PUG-View:\n\n```python\nimport requests\n\ncid = 2244\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug_view\u002Fdata\u002Fcompound\u002F{cid}\u002FJSON\"\n\nresponse = requests.get(url)\nif response.status_code == 200:\n    annotations = response.json()\n    # Contains extensive data including:\n    # - Chemical and Physical Properties\n    # - Drug and Medication Information\n    # - Pharmacology and Biochemistry\n    # - Safety and Hazards\n    # - Toxicity\n    # - Literature references\n    # - Patents\n```\n\n**Get Specific Section**:\n```python\n# Get only drug information\nurl = f\"https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Frest\u002Fpug_view\u002Fdata\u002Fcompound\u002F{cid}\u002FJSON?heading=Drug and Medication Information\"\n```\n\n## Installation Requirements\n\nInstall PubChemPy for Python-based access:\n\n```bash\nuv pip install pubchempy\n```\n\nFor direct API access and bioactivity queries:\n\n```bash\nuv pip install requests\n```\n\nOptional for data analysis:\n\n```bash\nuv pip install pandas\n```\n\n## Helper Scripts\n\nThis skill includes Python scripts for common PubChem tasks:\n\n### scripts\u002Fcompound_search.py\n\nProvides utility functions for searching and retrieving compound information:\n\n**Key Functions**:\n- `search_by_name(name, max_results=10)`: Search compounds by name\n- `search_by_smiles(smiles)`: Search by SMILES string\n- `get_compound_by_cid(cid)`: Retrieve compound by CID\n- `get_compound_properties(identifier, namespace, properties)`: Get specific properties\n- `similarity_search(smiles, threshold, max_records)`: Perform similarity search\n- `substructure_search(smiles, max_records)`: Perform substructure search\n- `get_synonyms(identifier, namespace)`: Get all synonyms\n- `batch_search(identifiers, namespace, properties)`: Batch search multiple compounds\n- `download_structure(identifier, namespace, format, filename)`: Download structures\n- `print_compound_info(compound)`: Print formatted compound information\n\n**Usage**:\n```python\nfrom scripts.compound_search import search_by_name, get_compound_properties\n\n# Search for a compound\ncompounds = search_by_name('ibuprofen')\n\n# Get specific properties\nprops = get_compound_properties('aspirin', 'name', ['MolecularWeight', 'XLogP'])\n```\n\n### scripts\u002Fbioactivity_query.py\n\nProvides functions for retrieving biological activity data:\n\n**Key Functions**:\n- `get_bioassay_summary(cid)`: Get bioassay summary for compound\n- `get_compound_bioactivities(cid, activity_outcome)`: Get filtered bioactivities\n- `get_assay_description(aid)`: Get detailed assay information\n- `get_assay_targets(aid)`: Get biological targets for assay\n- `search_assays_by_target(target_name, max_results)`: Find assays by target\n- `get_active_compounds_in_assay(aid, max_results)`: Get active compounds\n- `get_compound_annotations(cid, section)`: Get PUG-View annotations\n- `summarize_bioactivities(cid)`: Generate bioactivity summary statistics\n- `find_compounds_by_bioactivity(target, threshold, max_compounds)`: Find compounds by target\n\n**Usage**:\n```python\nfrom scripts.bioactivity_query import get_bioassay_summary, summarize_bioactivities\n\n# Get bioactivity summary\nsummary = summarize_bioactivities(2244)  # Aspirin\nprint(f\"Total assays: {summary['total_assays']}\")\nprint(f\"Active: {summary['active']}, Inactive: {summary['inactive']}\")\n```\n\n## API Rate Limits and Best Practices\n\n**Rate Limits**:\n- Maximum 5 requests per second\n- Maximum 400 requests per minute\n- Maximum 300 seconds running time per minute\n\n**Best Practices**:\n1. **Use CIDs for repeated queries**: CIDs are more efficient than names or structures\n2. **Cache results locally**: Store frequently accessed data\n3. **Batch requests**: Combine multiple queries when possible\n4. **Implement delays**: Add 0.2-0.3 second delays between requests\n5. **Handle errors gracefully**: Check for HTTP errors and missing data\n6. **Use PubChemPy**: Higher-level abstraction handles many edge cases\n7. **Leverage asynchronous pattern**: For large similarity\u002Fsubstructure searches\n8. **Specify MaxRecords**: Limit results to avoid timeouts\n\n**Error Handling**:\n```python\nfrom pubchempy import BadRequestError, NotFoundError, TimeoutError\n\ntry:\n    compound = pcp.get_compounds('query', 'name')[0]\nexcept NotFoundError:\n    print(\"Compound not found\")\nexcept BadRequestError:\n    print(\"Invalid request format\")\nexcept TimeoutError:\n    print(\"Request timed out - try reducing scope\")\nexcept IndexError:\n    print(\"No results returned\")\n```\n\n## Common Workflows\n\n### Workflow 1: Chemical Identifier Conversion Pipeline\n\nConvert between different chemical identifiers:\n\n```python\nimport pubchempy as pcp\n\n# Start with any identifier type\ncompound = pcp.get_compounds('caffeine', 'name')[0]\n\n# Extract all identifier formats\nidentifiers = {\n    'CID': compound.cid,\n    'Name': compound.iupac_name,\n    'SMILES': compound.canonical_smiles,\n    'InChI': compound.inchi,\n    'InChIKey': compound.inchikey,\n    'Formula': compound.molecular_formula\n}\n```\n\n### Workflow 2: Drug-Like Property Screening\n\nScreen compounds using Lipinski's Rule of Five:\n\n```python\nimport pubchempy as pcp\n\ndef check_drug_likeness(compound_name):\n    compound = pcp.get_compounds(compound_name, 'name')[0]\n\n    # Lipinski's Rule of Five\n    rules = {\n        'MW \u003C= 500': compound.molecular_weight \u003C= 500,\n        'LogP \u003C= 5': compound.xlogp \u003C= 5 if compound.xlogp else None,\n        'HBD \u003C= 5': compound.h_bond_donor_count \u003C= 5,\n        'HBA \u003C= 10': compound.h_bond_acceptor_count \u003C= 10\n    }\n\n    violations = sum(1 for v in rules.values() if v is False)\n    return rules, violations\n\nrules, violations = check_drug_likeness('aspirin')\nprint(f\"Lipinski violations: {violations}\")\n```\n\n### Workflow 3: Finding Similar Drug Candidates\n\nIdentify structurally similar compounds to a known drug:\n\n```python\nimport pubchempy as pcp\n\n# Start with known drug\nreference_drug = pcp.get_compounds('imatinib', 'name')[0]\nreference_smiles = reference_drug.canonical_smiles\n\n# Find similar compounds\nsimilar = pcp.get_compounds(\n    reference_smiles,\n    'smiles',\n    searchtype='similarity',\n    Threshold=85,\n    MaxRecords=20\n)\n\n# Filter by drug-like properties\ncandidates = []\nfor comp in similar:\n    if comp.molecular_weight and 200 \u003C= comp.molecular_weight \u003C= 600:\n        if comp.xlogp and -1 \u003C= comp.xlogp \u003C= 5:\n            candidates.append(comp)\n\nprint(f\"Found {len(candidates)} drug-like candidates\")\n```\n\n### Workflow 4: Batch Compound Property Comparison\n\nCompare properties across multiple compounds:\n\n```python\nimport pubchempy as pcp\nimport pandas as pd\n\ncompound_list = ['aspirin', 'ibuprofen', 'naproxen', 'celecoxib']\n\nproperties_list = []\nfor name in compound_list:\n    try:\n        compound = pcp.get_compounds(name, 'name')[0]\n        properties_list.append({\n            'Name': name,\n            'CID': compound.cid,\n            'Formula': compound.molecular_formula,\n            'MW': compound.molecular_weight,\n            'LogP': compound.xlogp,\n            'TPSA': compound.tpsa,\n            'HBD': compound.h_bond_donor_count,\n            'HBA': compound.h_bond_acceptor_count\n        })\n    except Exception as e:\n        print(f\"Error processing {name}: {e}\")\n\ndf = pd.DataFrame(properties_list)\nprint(df.to_string(index=False))\n```\n\n### Workflow 5: Substructure-Based Virtual Screening\n\nScreen for compounds containing specific pharmacophores:\n\n```python\nimport pubchempy as pcp\n\n# Define pharmacophore (e.g., sulfonamide group)\npharmacophore_smiles = 'S(=O)(=O)N'\n\n# Search for compounds containing this substructure\nhits = pcp.get_compounds(\n    pharmacophore_smiles,\n    'smiles',\n    searchtype='substructure',\n    MaxRecords=100\n)\n\n# Further filter by properties\nfiltered_hits = [\n    comp for comp in hits\n    if comp.molecular_weight and comp.molecular_weight \u003C 500\n]\n\nprint(f\"Found {len(filtered_hits)} compounds with desired substructure\")\n```\n\n## Reference Documentation\n\nFor detailed API documentation, including complete property lists, URL patterns, advanced query options, and more examples, consult `references\u002Fapi_reference.md`. This comprehensive reference includes:\n\n- Complete PUG-REST API endpoint documentation\n- Full list of available molecular properties\n- Asynchronous request handling patterns\n- PubChemPy API reference\n- PUG-View API for annotations\n- Common workflows and use cases\n- Links to official PubChem documentation\n\n## Troubleshooting\n\n**Compound Not Found**:\n- Try alternative names or synonyms\n- Use CID if known\n- Check spelling and chemical name format\n\n**Timeout Errors**:\n- Reduce MaxRecords parameter\n- Add delays between requests\n- Use CIDs instead of names for faster queries\n\n**Empty Property Values**:\n- Not all properties are available for all compounds\n- Check if property exists before accessing: `if compound.xlogp:`\n- Some properties only available for certain compound types\n\n**Rate Limit Exceeded**:\n- Implement delays (0.2-0.3 seconds) between requests\n- Use batch operations where possible\n- Consider caching results locally\n\n**Similarity\u002FSubstructure Search Hangs**:\n- These are asynchronous operations that may take 15-30 seconds\n- PubChemPy handles polling automatically\n- Reduce MaxRecords if timing out\n\n## Additional Resources\n\n- PubChem Home: https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002F\n- PUG-REST Documentation: https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Fdocs\u002Fpug-rest\n- PUG-REST Tutorial: https:\u002F\u002Fpubchem.ncbi.nlm.nih.gov\u002Fdocs\u002Fpug-rest-tutorial\n- PubChemPy Documentation: https:\u002F\u002Fpubchempy.readthedocs.io\u002F\n- PubChemPy GitHub: https:\u002F\u002Fgithub.com\u002Fmcs07\u002FPubChemPy\n",{"name":5,"description":7},"main","2b749c82b5d11fac39d9a6e021ce3f5b8a541bd1","cli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpubchem-database",3931,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-14 06:14:46",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add davila7\u002Fclaude-code-templates --skill pubchem-database",{"tool":68,"command":69},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill pubchem-database",{"tool":71,"command":72},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill pubchem-database","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpubchem-database\u002FSKILL.md",true,[76,82,88],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fapi_reference.md","REFERENCE","参考文档",10731,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpubchem-database\u002Freferences\u002Fapi_reference.md",{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fbioactivity_query.py","SCRIPT","脚本",9845,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpubchem-database\u002Fscripts\u002Fbioactivity_query.py",{"path":89,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":90,"sourceHtmlUrl":91},"scripts\u002Fcompound_search.py",8302,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fpubchem-database\u002Fscripts\u002Fcompound_search.py",[93,120,147,174,209,233],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":100,"publishedAt":47},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[99],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[101,102,103,104,105,44,106,107,108,109,110,111,112,113,114,115,116,117,118,119],"scoring","pool","wealthville pool scoring","liquidity","which","exit","now","use","when","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":127,"publishedAt":47},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[126],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[128,129,130,131,132,133,134,135,136,137,138,109,139,140,141,142,143,144,145,146],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit","dependency",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":158,"publishedAt":47},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard","Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[153,154,155],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":156,"categoryName":157,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000033","数据分析师",[159,160,161,162,163,164,165,44,166,167,168,169,170,171,172,108,173,32,109,38],"readonly","guard","sql guard","sql","readonly sql guard","erp","effect","read-only","db","just","tool","calls","only","MCP","access",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":178,"licenseFileUrl":179,"sourceHtmlUrl":180,"categories":181,"keywords":185,"publishedAt":47},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[182],{"categoryNo":183,"categoryName":184,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,44,208],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","Tools","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":178,"licenseFileUrl":213,"sourceHtmlUrl":214,"categories":215,"keywords":220,"publishedAt":47},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[216,219],{"categoryNo":217,"categoryName":218,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":183,"categoryName":184,"taxonomyType":21,"taxonomyTypeDesc":22},[221,222,223,224,225,187,226,196,197,227,228,229,230,44,231,111,232],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":234,"name":235,"nameZh":6,"description":236,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":178,"licenseFileUrl":237,"sourceHtmlUrl":238,"categories":239,"keywords":247,"publishedAt":47},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[240,243,244],{"categoryNo":241,"categoryName":242,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":245,"categoryName":246,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000036","内容创作者",[248,249,250,251,252,253,254,255,189,256,199,139,257,258,259,260,261,171,262,109,263,264,265,266,267,117,268],"discernment nudge","nudge","interpretation","help","run","reasoning","data","writing","lookup","content","review","conversation","short","up","invoke","you","analysis","claims","argument","assemble","recommendations"]