[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CTWCB9FD6MBVT418V4WDFB":3,"skill-same:01M7CTWCB9FD6MBVT418V4WDFB":62},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M7CTWCB9FD6MBVT418V4WDFB","clinicaltrials-database",null,"Query ClinicalTrials.gov via API v2. Search trials by condition, drug, location, status, or phase. Retrieve trial details by NCT ID, export data, for clinical research and patient matching.","mrsonord2240\u002Fopenscience-specialists","mrsonord2240","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F76487430?v=4","01M7CTEM40S43GSJZ9A3YCCXZK","Samuel Nord","01M7CTEM4K69JD1GBYNHVJ9ZP4",2,"MIT","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Fclinical-trial-protocol-designer\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fclinicaltrials-database\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: clinicaltrials-database\ndescription: Query ClinicalTrials.gov via API v2. Search trials by condition, drug, location, status, or phase. Retrieve trial details by NCT ID, export data, for clinical research and patient matching.\nlicense: MIT\nauthor: AIPOCH\n---\n> **Source**: [https:\u002F\u002Fgithub.com\u002Faipoch\u002Fmedical-research-skills](https:\u002F\u002Fgithub.com\u002Faipoch\u002Fmedical-research-skills)\n\n\n# ClinicalTrials.gov Database\n\n## When NOT to Use\n\n- Do not use for searching non-US trial registries (e.g., EU CTR, ISRCTN, ChiCTR) — the API only covers ClinicalTrials.gov.\n- Do not use for downloading full study protocols or CSR documents (the API provides structured metadata only).\n- Do not use for real-time patient matching in clinical settings without verification of current recruitment status.\n- Do not use when offline access is required (the API requires internet connectivity).\n\n## Overview\n\nClinicalTrials.gov is a comprehensive registry of clinical studies conducted worldwide, maintained by the U.S. National Library of Medicine. Access API v2 to search for trials, retrieve detailed study information, filter by various criteria, and export data for analysis. The API is public (no authentication required) with rate limits of ~50 requests per minute, supporting JSON and CSV formats.\n\n## When to Use This Skill\n\nThis skill should be used when working with clinical trial data in scenarios such as:\n\n- **Patient matching** - Finding recruiting trials for specific conditions or patient populations\n- **Research analysis** - Analyzing clinical trial trends, outcomes, or study designs\n- **Drug\u002Fintervention research** - Identifying trials testing specific drugs or interventions\n- **Geographic searches** - Locating trials in specific locations or regions\n- **Sponsor\u002Forganization tracking** - Finding trials conducted by specific institutions\n- **Data export** - Extracting clinical trial data for further analysis or reporting\n- **Trial monitoring** - Tracking status updates or results for specific trials\n- **Eligibility screening** - Reviewing inclusion\u002Fexclusion criteria for trials\n\n## Quick Start\n\n### Basic Search Query\n\nSearch for clinical trials using the helper script:\n\n```bash\ncd scientific-databases\u002Fclinicaltrials-database\u002Fscripts\npython3 query_clinicaltrials.py\n```\n\nOr use Python directly with the `requests` library:\n\n```python\nimport requests\n\nurl = \"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\u002Fstudies\"\nparams = {\n    \"query.cond\": \"breast cancer\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 10\n}\n\nresponse = requests.get(url, params=params)\ndata = response.json()\n\nprint(f\"Found {data['totalCount']} trials\")\n```\n\n### Retrieve Specific Trial\n\nGet detailed information about a trial using its NCT ID:\n\n```python\nimport requests\n\nnct_id = \"NCT04852770\"\nurl = f\"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\u002Fstudies\u002F{nct_id}\"\n\nresponse = requests.get(url)\nstudy = response.json()\n\n# Access specific modules\ntitle = study['protocolSection']['identificationModule']['briefTitle']\nstatus = study['protocolSection']['statusModule']['overallStatus']\n```\n\n## Core Capabilities\n\n### 1. Search by Condition\u002FDisease\n\nFind trials studying specific medical conditions or diseases using the `query.cond` parameter.\n\n**Example: Find recruiting diabetes trials**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    condition=\"type 2 diabetes\",\n    status=\"RECRUITING\",\n    page_size=20,\n    sort=\"LastUpdatePostDate:desc\"\n)\n\nprint(f\"Found {results['totalCount']} recruiting diabetes trials\")\nfor study in results['studies']:\n    protocol = study['protocolSection']\n    nct_id = protocol['identificationModule']['nctId']\n    title = protocol['identificationModule']['briefTitle']\n    print(f\"{nct_id}: {title}\")\n```\n\n**Common use cases:**\n- Finding trials for rare diseases\n- Identifying trials for comorbid conditions\n- Tracking trial availability for specific diagnoses\n\n### 2. Search by Intervention\u002FDrug\n\nSearch for trials testing specific interventions, drugs, devices, or procedures using the `query.intr` parameter.\n\n**Example: Find Phase 3 trials testing Pembrolizumab**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    intervention=\"Pembrolizumab\",\n    status=[\"RECRUITING\", \"ACTIVE_NOT_RECRUITING\"],\n    page_size=50\n)\n\n# Filter by phase in results\nphase3_trials = [\n    study for study in results['studies']\n    if 'PHASE3' in study['protocolSection'].get('designModule', {}).get('phases', [])\n]\n```\n\n**Common use cases:**\n- Drug development tracking\n- Competitive intelligence for pharmaceutical companies\n- Treatment option research for clinicians\n\n### 3. Geographic Search\n\nFind trials in specific locations using the `query.locn` parameter.\n\n**Example: Find cancer trials in New York**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    condition=\"cancer\",\n    location=\"New York\",\n    status=\"RECRUITING\",\n    page_size=100\n)\n\n# Extract location details\nfor study in results['studies']:\n    locations_module = study['protocolSection'].get('contactsLocationsModule', {})\n    locations = locations_module.get('locations', [])\n    for loc in locations:\n        if 'New York' in loc.get('city', ''):\n            print(f\"{loc['facility']}: {loc['city']}, {loc.get('state', '')}\")\n```\n\n**Common use cases:**\n- Patient referrals to local trials\n- Geographic trial distribution analysis\n- Site selection for new trials\n\n### 4. Search by Sponsor\u002FOrganization\n\nFind trials conducted by specific organizations using the `query.spons` parameter.\n\n**Example: Find trials sponsored by NCI**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    sponsor=\"National Cancer Institute\",\n    page_size=100\n)\n\n# Extract sponsor information\nfor study in results['studies']:\n    sponsor_module = study['protocolSection']['sponsorCollaboratorsModule']\n    lead_sponsor = sponsor_module['leadSponsor']['name']\n    collaborators = sponsor_module.get('collaborators', [])\n    print(f\"Lead: {lead_sponsor}\")\n    if collaborators:\n        print(f\"  Collaborators: {', '.join([c['name'] for c in collaborators])}\")\n```\n\n**Common use cases:**\n- Tracking institutional research portfolios\n- Analyzing funding organization priorities\n- Identifying collaboration opportunities\n\n### 5. Filter by Study Status\n\nFilter trials by recruitment or completion status using the `filter.overallStatus` parameter.\n\n**Valid status values:**\n- `RECRUITING` - Currently recruiting participants\n- `NOT_YET_RECRUITING` - Not yet open for recruitment\n- `ENROLLING_BY_INVITATION` - Only enrolling by invitation\n- `ACTIVE_NOT_RECRUITING` - Active but no longer recruiting\n- `SUSPENDED` - Temporarily halted\n- `TERMINATED` - Stopped prematurely\n- `COMPLETED` - Study has concluded\n- `WITHDRAWN` - Withdrawn prior to enrollment\n\n**Example: Find recently completed trials with results**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    condition=\"alzheimer disease\",\n    status=\"COMPLETED\",\n    sort=\"LastUpdatePostDate:desc\",\n    page_size=50\n)\n\n# Filter for trials with results\ntrials_with_results = [\n    study for study in results['studies']\n    if study.get('hasResults', False)\n]\n\nprint(f\"Found {len(trials_with_results)} completed trials with results\")\n```\n\n### 6. Retrieve Detailed Study Information\n\nGet comprehensive information about specific trials including eligibility criteria, outcomes, contacts, and locations.\n\n**Example: Extract eligibility criteria**\n\n```python\nfrom scripts.query_clinicaltrials import get_study_details\n\nstudy = get_study_details(\"NCT04852770\")\neligibility = study['protocolSection']['eligibilityModule']\n\nprint(f\"Eligible Ages: {eligibility.get('minimumAge')} - {eligibility.get('maximumAge')}\")\nprint(f\"Eligible Sex: {eligibility.get('sex')}\")\nprint(f\"\\nInclusion Criteria:\")\nprint(eligibility.get('eligibilityCriteria'))\n```\n\n**Example: Extract contact information**\n\n```python\nfrom scripts.query_clinicaltrials import get_study_details\n\nstudy = get_study_details(\"NCT04852770\")\ncontacts_module = study['protocolSection']['contactsLocationsModule']\n\n# Overall contacts\nif 'centralContacts' in contacts_module:\n    for contact in contacts_module['centralContacts']:\n        print(f\"Contact: {contact.get('name')}\")\n        print(f\"Phone: {contact.get('phone')}\")\n        print(f\"Email: {contact.get('email')}\")\n\n# Study locations\nif 'locations' in contacts_module:\n    for location in contacts_module['locations']:\n        print(f\"\\nFacility: {location.get('facility')}\")\n        print(f\"City: {location.get('city')}, {location.get('state')}\")\n        if location.get('status'):\n            print(f\"Status: {location['status']}\")\n```\n\n### 7. Pagination and Bulk Data Retrieval\n\nHandle large result sets efficiently using pagination.\n\n**Example: Retrieve all matching trials**\n\n```python\nfrom scripts.query_clinicaltrials import search_with_all_results\n\n# Get all trials (automatically handles pagination)\nall_trials = search_with_all_results(\n    condition=\"rare disease\",\n    status=\"RECRUITING\"\n)\n\nprint(f\"Retrieved {len(all_trials)} total trials\")\n```\n\n**Example: Manual pagination with control**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nall_studies = []\npage_token = None\nmax_pages = 10  # Limit to avoid excessive requests\n\nfor page in range(max_pages):\n    results = search_studies(\n        condition=\"cancer\",\n        page_size=1000,  # Max page size\n        page_token=page_token\n    )\n\n    all_studies.extend(results['studies'])\n\n    # Check for next page\n    page_token = results.get('pageToken')\n    if not page_token:\n        break\n\nprint(f\"Retrieved {len(all_studies)} studies across {page + 1} pages\")\n```\n\n### 8. Data Export to CSV\n\nExport trial data to CSV format for analysis in spreadsheet software or data analysis tools.\n\n**Example: Export to CSV file**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\n# Request CSV format\nresults = search_studies(\n    condition=\"heart disease\",\n    status=\"RECRUITING\",\n    format=\"csv\",\n    page_size=1000\n)\n\n# Save to file\nwith open(\"heart_disease_trials.csv\", \"w\") as f:\n    f.write(results)\n\nprint(\"Data exported to heart_disease_trials.csv\")\n```\n\n**Note:** CSV format returns a string instead of JSON dictionary.\n\n### 9. Extract and Summarize Study Information\n\nExtract key information for quick overview or reporting.\n\n**Example: Create trial summary**\n\n```python\nfrom scripts.query_clinicaltrials import get_study_details, extract_study_summary\n\n# Get details and extract summary\nstudy = get_study_details(\"NCT04852770\")\nsummary = extract_study_summary(study)\n\nprint(f\"NCT ID: {summary['nct_id']}\")\nprint(f\"Title: {summary['title']}\")\nprint(f\"Status: {summary['status']}\")\nprint(f\"Phase: {', '.join(summary['phase'])}\")\nprint(f\"Enrollment: {summary['enrollment']}\")\nprint(f\"Last Update: {summary['last_update']}\")\nprint(f\"\\nBrief Summary:\\n{summary['brief_summary']}\")\n```\n\n### 10. Combined Query Strategies\n\nCombine multiple filters for targeted searches.\n\n**Example: Multi-criteria search**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\n# Find Phase 2\u002F3 immunotherapy trials for lung cancer in California\nresults = search_studies(\n    condition=\"lung cancer\",\n    intervention=\"immunotherapy\",\n    location=\"California\",\n    status=[\"RECRUITING\", \"NOT_YET_RECRUITING\"],\n    page_size=100\n)\n\n# Further filter by phase\nphase2_3_trials = [\n    study for study in results['studies']\n    if any(phase in ['PHASE2', 'PHASE3']\n           for phase in study['protocolSection'].get('designModule', {}).get('phases', []))\n]\n\nprint(f\"Found {len(phase2_3_trials)} Phase 2\u002F3 immunotherapy trials\")\n```\n\n## Resources\n\n### scripts\u002Fquery_clinicaltrials.py\n\nComprehensive Python script providing helper functions for common query patterns:\n\n- `search_studies()` - Search for trials with various filters\n- `get_study_details()` - Retrieve full information for a specific trial\n- `search_with_all_results()` - Automatically paginate through all results\n- `extract_study_summary()` - Extract key information for quick overview\n\nRun the script directly for example usage:\n\n```bash\npython3 scripts\u002Fquery_clinicaltrials.py\n```\n\n### references\u002Fapi_reference.md\n\nDetailed API documentation including:\n\n- Complete endpoint specifications\n- All query parameters and valid values\n- Response data structure and modules\n- Common use cases with code examples\n- Error handling and best practices\n- Data standards (ISO 8601 dates, CommonMark markdown)\n\nLoad this reference when working with unfamiliar API features or troubleshooting issues.\n\n## Best Practices\n\n### Rate Limit Management\n\nThe API has a rate limit of approximately 50 requests per minute. For bulk data retrieval:\n\n1. Use maximum page size (1000) to minimize requests\n2. Implement exponential backoff on rate limit errors (429 status)\n3. Add delays between requests for large-scale data collection\n\n```python\nimport time\nimport requests\n\ndef search_with_rate_limit(params):\n    try:\n        response = requests.get(\"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\u002Fstudies\", params=params)\n        response.raise_for_status()\n        return response.json()\n    except requests.exceptions.HTTPError as e:\n        if e.response.status_code == 429:\n            print(\"Rate limited. Waiting 60 seconds...\")\n            time.sleep(60)\n            return search_with_rate_limit(params)  # Retry\n        raise\n```\n\n### Data Structure Navigation\n\nThe API response has a nested structure. Key paths to common information:\n\n- **NCT ID**: `study['protocolSection']['identificationModule']['nctId']`\n- **Title**: `study['protocolSection']['identificationModule']['briefTitle']`\n- **Status**: `study['protocolSection']['statusModule']['overallStatus']`\n- **Phase**: `study['protocolSection']['designModule']['phases']`\n- **Eligibility**: `study['protocolSection']['eligibilityModule']`\n- **Locations**: `study['protocolSection']['contactsLocationsModule']['locations']`\n- **Interventions**: `study['protocolSection']['armsInterventionsModule']['interventions']`\n\n### Error Handling\n\nAlways implement proper error handling for network requests:\n\n```python\nimport requests\n\ntry:\n    response = requests.get(url, params=params, timeout=30)\n    response.raise_for_status()\n    data = response.json()\nexcept requests.exceptions.HTTPError as e:\n    print(f\"HTTP error: {e.response.status_code}\")\nexcept requests.exceptions.RequestException as e:\n    print(f\"Request failed: {e}\")\nexcept ValueError as e:\n    print(f\"JSON decode error: {e}\")\n```\n\n### Handling Missing Data\n\nNot all trials have complete information. Always check for field existence:\n\n```python\n# Safe navigation with .get()\nphases = study['protocolSection'].get('designModule', {}).get('phases', [])\nenrollment = study['protocolSection'].get('designModule', {}).get('enrollmentInfo', {}).get('count', 'N\u002FA')\n\n# Check before accessing\nif 'resultsSection' in study:\n    # Process results\n    pass\n```\n\n## Technical Specifications\n\n- **Base URL**: `https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2`\n- **Authentication**: Not required (public API)\n- **Rate Limit**: ~50 requests\u002Fminute per IP\n- **Response Formats**: JSON (default), CSV\n- **Max Page Size**: 1000 studies per request\n- **Date Format**: ISO 8601\n- **Text Format**: CommonMark Markdown for rich text fields\n- **API Version**: 2.0 (released March 2024)\n- **API Specification**: OpenAPI 3.0\n\nFor complete technical details, see `references\u002Fapi_reference.md`.\n\n## Input Validation\n\nThis skill accepts requests that match the documented purpose of `clinicaltrials-database` and include enough context to complete the workflow safely.\n\nDo not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:\n\n> `clinicaltrials-database` only handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.\n","> **Source**: [https:\u002F\u002Fgithub.com\u002Faipoch\u002Fmedical-research-skills](https:\u002F\u002Fgithub.com\u002Faipoch\u002Fmedical-research-skills)\n\n\n# ClinicalTrials.gov Database\n\n## When NOT to Use\n\n- Do not use for searching non-US trial registries (e.g., EU CTR, ISRCTN, ChiCTR) — the API only covers ClinicalTrials.gov.\n- Do not use for downloading full study protocols or CSR documents (the API provides structured metadata only).\n- Do not use for real-time patient matching in clinical settings without verification of current recruitment status.\n- Do not use when offline access is required (the API requires internet connectivity).\n\n## Overview\n\nClinicalTrials.gov is a comprehensive registry of clinical studies conducted worldwide, maintained by the U.S. National Library of Medicine. Access API v2 to search for trials, retrieve detailed study information, filter by various criteria, and export data for analysis. The API is public (no authentication required) with rate limits of ~50 requests per minute, supporting JSON and CSV formats.\n\n## When to Use This Skill\n\nThis skill should be used when working with clinical trial data in scenarios such as:\n\n- **Patient matching** - Finding recruiting trials for specific conditions or patient populations\n- **Research analysis** - Analyzing clinical trial trends, outcomes, or study designs\n- **Drug\u002Fintervention research** - Identifying trials testing specific drugs or interventions\n- **Geographic searches** - Locating trials in specific locations or regions\n- **Sponsor\u002Forganization tracking** - Finding trials conducted by specific institutions\n- **Data export** - Extracting clinical trial data for further analysis or reporting\n- **Trial monitoring** - Tracking status updates or results for specific trials\n- **Eligibility screening** - Reviewing inclusion\u002Fexclusion criteria for trials\n\n## Quick Start\n\n### Basic Search Query\n\nSearch for clinical trials using the helper script:\n\n```bash\ncd scientific-databases\u002Fclinicaltrials-database\u002Fscripts\npython3 query_clinicaltrials.py\n```\n\nOr use Python directly with the `requests` library:\n\n```python\nimport requests\n\nurl = \"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\u002Fstudies\"\nparams = {\n    \"query.cond\": \"breast cancer\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 10\n}\n\nresponse = requests.get(url, params=params)\ndata = response.json()\n\nprint(f\"Found {data['totalCount']} trials\")\n```\n\n### Retrieve Specific Trial\n\nGet detailed information about a trial using its NCT ID:\n\n```python\nimport requests\n\nnct_id = \"NCT04852770\"\nurl = f\"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\u002Fstudies\u002F{nct_id}\"\n\nresponse = requests.get(url)\nstudy = response.json()\n\n# Access specific modules\ntitle = study['protocolSection']['identificationModule']['briefTitle']\nstatus = study['protocolSection']['statusModule']['overallStatus']\n```\n\n## Core Capabilities\n\n### 1. Search by Condition\u002FDisease\n\nFind trials studying specific medical conditions or diseases using the `query.cond` parameter.\n\n**Example: Find recruiting diabetes trials**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    condition=\"type 2 diabetes\",\n    status=\"RECRUITING\",\n    page_size=20,\n    sort=\"LastUpdatePostDate:desc\"\n)\n\nprint(f\"Found {results['totalCount']} recruiting diabetes trials\")\nfor study in results['studies']:\n    protocol = study['protocolSection']\n    nct_id = protocol['identificationModule']['nctId']\n    title = protocol['identificationModule']['briefTitle']\n    print(f\"{nct_id}: {title}\")\n```\n\n**Common use cases:**\n- Finding trials for rare diseases\n- Identifying trials for comorbid conditions\n- Tracking trial availability for specific diagnoses\n\n### 2. Search by Intervention\u002FDrug\n\nSearch for trials testing specific interventions, drugs, devices, or procedures using the `query.intr` parameter.\n\n**Example: Find Phase 3 trials testing Pembrolizumab**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    intervention=\"Pembrolizumab\",\n    status=[\"RECRUITING\", \"ACTIVE_NOT_RECRUITING\"],\n    page_size=50\n)\n\n# Filter by phase in results\nphase3_trials = [\n    study for study in results['studies']\n    if 'PHASE3' in study['protocolSection'].get('designModule', {}).get('phases', [])\n]\n```\n\n**Common use cases:**\n- Drug development tracking\n- Competitive intelligence for pharmaceutical companies\n- Treatment option research for clinicians\n\n### 3. Geographic Search\n\nFind trials in specific locations using the `query.locn` parameter.\n\n**Example: Find cancer trials in New York**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    condition=\"cancer\",\n    location=\"New York\",\n    status=\"RECRUITING\",\n    page_size=100\n)\n\n# Extract location details\nfor study in results['studies']:\n    locations_module = study['protocolSection'].get('contactsLocationsModule', {})\n    locations = locations_module.get('locations', [])\n    for loc in locations:\n        if 'New York' in loc.get('city', ''):\n            print(f\"{loc['facility']}: {loc['city']}, {loc.get('state', '')}\")\n```\n\n**Common use cases:**\n- Patient referrals to local trials\n- Geographic trial distribution analysis\n- Site selection for new trials\n\n### 4. Search by Sponsor\u002FOrganization\n\nFind trials conducted by specific organizations using the `query.spons` parameter.\n\n**Example: Find trials sponsored by NCI**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    sponsor=\"National Cancer Institute\",\n    page_size=100\n)\n\n# Extract sponsor information\nfor study in results['studies']:\n    sponsor_module = study['protocolSection']['sponsorCollaboratorsModule']\n    lead_sponsor = sponsor_module['leadSponsor']['name']\n    collaborators = sponsor_module.get('collaborators', [])\n    print(f\"Lead: {lead_sponsor}\")\n    if collaborators:\n        print(f\"  Collaborators: {', '.join([c['name'] for c in collaborators])}\")\n```\n\n**Common use cases:**\n- Tracking institutional research portfolios\n- Analyzing funding organization priorities\n- Identifying collaboration opportunities\n\n### 5. Filter by Study Status\n\nFilter trials by recruitment or completion status using the `filter.overallStatus` parameter.\n\n**Valid status values:**\n- `RECRUITING` - Currently recruiting participants\n- `NOT_YET_RECRUITING` - Not yet open for recruitment\n- `ENROLLING_BY_INVITATION` - Only enrolling by invitation\n- `ACTIVE_NOT_RECRUITING` - Active but no longer recruiting\n- `SUSPENDED` - Temporarily halted\n- `TERMINATED` - Stopped prematurely\n- `COMPLETED` - Study has concluded\n- `WITHDRAWN` - Withdrawn prior to enrollment\n\n**Example: Find recently completed trials with results**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nresults = search_studies(\n    condition=\"alzheimer disease\",\n    status=\"COMPLETED\",\n    sort=\"LastUpdatePostDate:desc\",\n    page_size=50\n)\n\n# Filter for trials with results\ntrials_with_results = [\n    study for study in results['studies']\n    if study.get('hasResults', False)\n]\n\nprint(f\"Found {len(trials_with_results)} completed trials with results\")\n```\n\n### 6. Retrieve Detailed Study Information\n\nGet comprehensive information about specific trials including eligibility criteria, outcomes, contacts, and locations.\n\n**Example: Extract eligibility criteria**\n\n```python\nfrom scripts.query_clinicaltrials import get_study_details\n\nstudy = get_study_details(\"NCT04852770\")\neligibility = study['protocolSection']['eligibilityModule']\n\nprint(f\"Eligible Ages: {eligibility.get('minimumAge')} - {eligibility.get('maximumAge')}\")\nprint(f\"Eligible Sex: {eligibility.get('sex')}\")\nprint(f\"\\nInclusion Criteria:\")\nprint(eligibility.get('eligibilityCriteria'))\n```\n\n**Example: Extract contact information**\n\n```python\nfrom scripts.query_clinicaltrials import get_study_details\n\nstudy = get_study_details(\"NCT04852770\")\ncontacts_module = study['protocolSection']['contactsLocationsModule']\n\n# Overall contacts\nif 'centralContacts' in contacts_module:\n    for contact in contacts_module['centralContacts']:\n        print(f\"Contact: {contact.get('name')}\")\n        print(f\"Phone: {contact.get('phone')}\")\n        print(f\"Email: {contact.get('email')}\")\n\n# Study locations\nif 'locations' in contacts_module:\n    for location in contacts_module['locations']:\n        print(f\"\\nFacility: {location.get('facility')}\")\n        print(f\"City: {location.get('city')}, {location.get('state')}\")\n        if location.get('status'):\n            print(f\"Status: {location['status']}\")\n```\n\n### 7. Pagination and Bulk Data Retrieval\n\nHandle large result sets efficiently using pagination.\n\n**Example: Retrieve all matching trials**\n\n```python\nfrom scripts.query_clinicaltrials import search_with_all_results\n\n# Get all trials (automatically handles pagination)\nall_trials = search_with_all_results(\n    condition=\"rare disease\",\n    status=\"RECRUITING\"\n)\n\nprint(f\"Retrieved {len(all_trials)} total trials\")\n```\n\n**Example: Manual pagination with control**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\nall_studies = []\npage_token = None\nmax_pages = 10  # Limit to avoid excessive requests\n\nfor page in range(max_pages):\n    results = search_studies(\n        condition=\"cancer\",\n        page_size=1000,  # Max page size\n        page_token=page_token\n    )\n\n    all_studies.extend(results['studies'])\n\n    # Check for next page\n    page_token = results.get('pageToken')\n    if not page_token:\n        break\n\nprint(f\"Retrieved {len(all_studies)} studies across {page + 1} pages\")\n```\n\n### 8. Data Export to CSV\n\nExport trial data to CSV format for analysis in spreadsheet software or data analysis tools.\n\n**Example: Export to CSV file**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\n# Request CSV format\nresults = search_studies(\n    condition=\"heart disease\",\n    status=\"RECRUITING\",\n    format=\"csv\",\n    page_size=1000\n)\n\n# Save to file\nwith open(\"heart_disease_trials.csv\", \"w\") as f:\n    f.write(results)\n\nprint(\"Data exported to heart_disease_trials.csv\")\n```\n\n**Note:** CSV format returns a string instead of JSON dictionary.\n\n### 9. Extract and Summarize Study Information\n\nExtract key information for quick overview or reporting.\n\n**Example: Create trial summary**\n\n```python\nfrom scripts.query_clinicaltrials import get_study_details, extract_study_summary\n\n# Get details and extract summary\nstudy = get_study_details(\"NCT04852770\")\nsummary = extract_study_summary(study)\n\nprint(f\"NCT ID: {summary['nct_id']}\")\nprint(f\"Title: {summary['title']}\")\nprint(f\"Status: {summary['status']}\")\nprint(f\"Phase: {', '.join(summary['phase'])}\")\nprint(f\"Enrollment: {summary['enrollment']}\")\nprint(f\"Last Update: {summary['last_update']}\")\nprint(f\"\\nBrief Summary:\\n{summary['brief_summary']}\")\n```\n\n### 10. Combined Query Strategies\n\nCombine multiple filters for targeted searches.\n\n**Example: Multi-criteria search**\n\n```python\nfrom scripts.query_clinicaltrials import search_studies\n\n# Find Phase 2\u002F3 immunotherapy trials for lung cancer in California\nresults = search_studies(\n    condition=\"lung cancer\",\n    intervention=\"immunotherapy\",\n    location=\"California\",\n    status=[\"RECRUITING\", \"NOT_YET_RECRUITING\"],\n    page_size=100\n)\n\n# Further filter by phase\nphase2_3_trials = [\n    study for study in results['studies']\n    if any(phase in ['PHASE2', 'PHASE3']\n           for phase in study['protocolSection'].get('designModule', {}).get('phases', []))\n]\n\nprint(f\"Found {len(phase2_3_trials)} Phase 2\u002F3 immunotherapy trials\")\n```\n\n## Resources\n\n### scripts\u002Fquery_clinicaltrials.py\n\nComprehensive Python script providing helper functions for common query patterns:\n\n- `search_studies()` - Search for trials with various filters\n- `get_study_details()` - Retrieve full information for a specific trial\n- `search_with_all_results()` - Automatically paginate through all results\n- `extract_study_summary()` - Extract key information for quick overview\n\nRun the script directly for example usage:\n\n```bash\npython3 scripts\u002Fquery_clinicaltrials.py\n```\n\n### references\u002Fapi_reference.md\n\nDetailed API documentation including:\n\n- Complete endpoint specifications\n- All query parameters and valid values\n- Response data structure and modules\n- Common use cases with code examples\n- Error handling and best practices\n- Data standards (ISO 8601 dates, CommonMark markdown)\n\nLoad this reference when working with unfamiliar API features or troubleshooting issues.\n\n## Best Practices\n\n### Rate Limit Management\n\nThe API has a rate limit of approximately 50 requests per minute. For bulk data retrieval:\n\n1. Use maximum page size (1000) to minimize requests\n2. Implement exponential backoff on rate limit errors (429 status)\n3. Add delays between requests for large-scale data collection\n\n```python\nimport time\nimport requests\n\ndef search_with_rate_limit(params):\n    try:\n        response = requests.get(\"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\u002Fstudies\", params=params)\n        response.raise_for_status()\n        return response.json()\n    except requests.exceptions.HTTPError as e:\n        if e.response.status_code == 429:\n            print(\"Rate limited. Waiting 60 seconds...\")\n            time.sleep(60)\n            return search_with_rate_limit(params)  # Retry\n        raise\n```\n\n### Data Structure Navigation\n\nThe API response has a nested structure. Key paths to common information:\n\n- **NCT ID**: `study['protocolSection']['identificationModule']['nctId']`\n- **Title**: `study['protocolSection']['identificationModule']['briefTitle']`\n- **Status**: `study['protocolSection']['statusModule']['overallStatus']`\n- **Phase**: `study['protocolSection']['designModule']['phases']`\n- **Eligibility**: `study['protocolSection']['eligibilityModule']`\n- **Locations**: `study['protocolSection']['contactsLocationsModule']['locations']`\n- **Interventions**: `study['protocolSection']['armsInterventionsModule']['interventions']`\n\n### Error Handling\n\nAlways implement proper error handling for network requests:\n\n```python\nimport requests\n\ntry:\n    response = requests.get(url, params=params, timeout=30)\n    response.raise_for_status()\n    data = response.json()\nexcept requests.exceptions.HTTPError as e:\n    print(f\"HTTP error: {e.response.status_code}\")\nexcept requests.exceptions.RequestException as e:\n    print(f\"Request failed: {e}\")\nexcept ValueError as e:\n    print(f\"JSON decode error: {e}\")\n```\n\n### Handling Missing Data\n\nNot all trials have complete information. Always check for field existence:\n\n```python\n# Safe navigation with .get()\nphases = study['protocolSection'].get('designModule', {}).get('phases', [])\nenrollment = study['protocolSection'].get('designModule', {}).get('enrollmentInfo', {}).get('count', 'N\u002FA')\n\n# Check before accessing\nif 'resultsSection' in study:\n    # Process results\n    pass\n```\n\n## Technical Specifications\n\n- **Base URL**: `https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2`\n- **Authentication**: Not required (public API)\n- **Rate Limit**: ~50 requests\u002Fminute per IP\n- **Response Formats**: JSON (default), CSV\n- **Max Page Size**: 1000 studies per request\n- **Date Format**: ISO 8601\n- **Text Format**: CommonMark Markdown for rich text fields\n- **API Version**: 2.0 (released March 2024)\n- **API Specification**: OpenAPI 3.0\n\nFor complete technical details, see `references\u002Fapi_reference.md`.\n\n## Input Validation\n\nThis skill accepts requests that match the documented purpose of `clinicaltrials-database` and include enough context to complete the workflow safely.\n\nDo not continue the workflow when the request is out of scope, missing a critical input, or would require unsupported assumptions. Instead respond:\n\n> `clinicaltrials-database` only handles its documented workflow. Please provide the missing required inputs or switch to a more suitable skill.\n",{"name":5,"author":24,"license":15,"description":7},"AIPOCH","main","e0956dc9606356ab78468936b502e55a365282e2","specialists\u002Fclinical-trial-protocol-designer\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fclinicaltrials-database",0,"https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists","https:\u002F\u002Fgithub.com\u002Fmrsonord2240","2026-10-12 03:19:04",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add mrsonord2240\u002Fopenscience-specialists --skill clinicaltrials-database",{"tool":38,"command":39},"bunx","bunx skills add mrsonord2240\u002Fopenscience-specialists --skill clinicaltrials-database",{"tool":41,"command":42},"pnpm","pnpm dlx skills add mrsonord2240\u002Fopenscience-specialists --skill clinicaltrials-database","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Fclinical-trial-protocol-designer\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fclinicaltrials-database\u002FSKILL.md",true,[46,52,56],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"POLISH_CHANGELOG.md","REFERENCE","参考文档",649,"https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Fclinical-trial-protocol-designer\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fclinicaltrials-database\u002FPOLISH_CHANGELOG.md",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"references\u002Fapi_reference.md",10694,"https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Fclinical-trial-protocol-designer\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fclinicaltrials-database\u002Freferences\u002Fapi_reference.md",{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"scripts\u002Fquery_clinicaltrials.py","SCRIPT","脚本",6992,"https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Fclinical-trial-protocol-designer\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fclinicaltrials-database\u002Fscripts\u002Fquery_clinicaltrials.py",[63,71,78,85,92,99],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M7CW36A6QAGWFE2C008M1XPG","bio-workflows-metabolomics-pipeline","Orchestrates the untargeted LC-MS metabolomics pipeline end-to-end (xcms 4.x feature extraction, QC\u002Fdrift\u002Fnormalization, confidence-stratified annotation, permutation-validated statistics, background-aware pathway mapping), naming what each stage decides and where it silently fails. Use when running a full LC-MS metabolomics study from raw mzML to enriched pathways and needing the honest handoffs between stages. Each stage defers to its component skill for parameters and traps; for stable-isotope flux (a separate branch, not this untargeted flow) see metabolomics\u002Fisotope-tracing.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Funtargeted-metabolomics-analyst\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fbio-workflows-metabolomics-pipeline\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M7CW2Y18623NA2S1Y30FRQW1","bio-metabolomics-xcms-preprocessing","Programmatic untargeted LC-MS feature extraction in R with the modern xcms 4.x MsExperiment\u002FXcmsExperiment API, taking raw mzML to a feature table via CentWave peak detection, retention-time alignment, peak-density correspondence, gap-filling, CAMERA redundancy collapse, and built-in QC feature filtering. Use when converting centroided LC-MS runs into a features-by-samples matrix and deciding centWave\u002Fgrouping\u002Falignment parameters. For drift correction and QC\u002FCV filtering execution see metabolomics\u002Fnormalization-qc; for metabolite identification see metabolomics\u002Fmetabolite-annotation; for the MS-DIAL GUI alternative with MS2Dec deconvolution see metabolomics\u002Fmsdial-preprocessing; for downstream statistics see metabolomics\u002Fstatistical-analysis.","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Funtargeted-metabolomics-analyst\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fbio-metabolomics-xcms-preprocessing\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M7CW2M364HVWPNQEKE2WP4PP","bio-metabolomics-statistical-analysis","Decision-grade statistical analysis for metabolomics intensity tables. Covers transformation and scaling (Pareto vs unit-variance as a hidden hypothesis), unsupervised structure (PCA\u002FHCA for QC), permutation-validated PLS-DA\u002FOPLS-DA (R2 vs Q2, double CV, VIP as heuristic), univariate testing (Welch\u002FMann-Whitney\u002FANOVA\u002FLMM with covariate adjustment), and dependence-aware multiple testing. Use when testing which metabolites differ, building or validating a discriminant model, choosing a scaling, or correcting many correlated tests. For sample-wise normalization\u002Fdrift correction see metabolomics\u002Fnormalization-qc; for ML classifiers and selection-inside-CV leakage see machine-learning\u002Fbiomarker-discovery and machine-learning\u002Fmodel-validation; for pathway interpretation see metabolomics\u002Fpathway-mapping; for design\u002Fpower\u002Fmultiplicity regime see experimental-design\u002Fmultiple-testing.","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Funtargeted-metabolomics-analyst\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fbio-metabolomics-statistical-analysis\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M7CW2BCBF851WYE03Z8XPEDQ","bio-metabolomics-pathway-mapping","Maps metabolomics results to biological pathways via over-representation (ORA), metabolite-set enrichment (MSEA\u002FQEA), mummichog\u002FPSEA on raw m\u002Fz peaks, and network-diffusion enrichment (FELLA), with correct background-set construction and honest interpretive ceilings. Use when interpreting differential metabolites or an untargeted LC-MS feature table in pathway context, choosing ORA vs MSEA vs mummichog vs topology, or setting the reference\u002Fbackground set. For annotation confidence levels feeding ORA see metabolomics\u002Fmetabolite-annotation; for gene-set concepts see pathway-analysis\u002Fgo-enrichment and pathway-analysis\u002Fgsea; for joint gene+metabolite pathways see multi-omics-integration\u002Fmofa-integration.","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Funtargeted-metabolomics-analyst\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fbio-metabolomics-pathway-mapping\u002FSKILL.md",[],[],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":19},"01M7CW21NSZMCPMF7D9CHJM718","bio-metabolomics-normalization-qc","Designs QC, corrects signal drift, removes batch effects, filters features, normalizes samples, and imputes missing values for untargeted LC-MS\u002FGC-MS metabolomics, framing each step as a measurement model that can create or erase biological signal. Use when processing a peak\u002Ffeature table before statistical analysis, choosing a drift-correction or sample-normalization method, deciding QC RSD vs D-ratio filtering, or handling left-censored missing values. The feature table is produced by metabolomics\u002Fxcms-preprocessing or metabolomics\u002Fmsdial-preprocessing; transformation\u002Fscaling for modeling defers to metabolomics\u002Fstatistical-analysis; cross-study design issues link to experimental-design\u002Fbatch-design.","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Funtargeted-metabolomics-analyst\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fbio-metabolomics-normalization-qc\u002FSKILL.md",[],[],{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":67,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":19},"01M7CW1SWVM0NYHVE6Q7MA3G7R","bio-metabolomics-msdial-preprocessing","Runs the MS-DIAL preprocessing workflow (peak picking, MS2Dec spectral deconvolution, alignment, gap-filling) and imports the alignment-result table into R or Python with honest filtering. Use when preprocessing LC-MS DDA\u002FDIA (SWATH) or GC-MS raw data with MS-DIAL, deciding MS-DIAL vs XCMS, configuring the MSDIALCUI console run, or parsing an MS-DIAL export into a clean feature matrix. For programmatic R peak detection and the feature-table-as-artifact framing see metabolomics\u002Fxcms-preprocessing; for lipid annotation mode see metabolomics\u002Flipidomics; for MSI-level confidence honesty see metabolomics\u002Fmetabolite-annotation; for drift correction and QC see metabolomics\u002Fnormalization-qc.","https:\u002F\u002Fgithub.com\u002Fmrsonord2240\u002Fopenscience-specialists\u002Fblob\u002Fmain\u002Fspecialists\u002Funtargeted-metabolomics-analyst\u002Fversions\u002F1.0.0\u002Fpackage\u002Fskills\u002Fbio-metabolomics-msdial-preprocessing\u002FSKILL.md",[],[]]