[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M73G4DXM3MSFAMBWCZACHZ2Z":3,"skill-same:01M73G4DXM3MSFAMBWCZACHZ2Z":48},{"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":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M73G4DXM3MSFAMBWCZACHZ2Z","clinicaltrials-database-search",null,"Query ClinicalTrials.gov API v2 for trial data. Search by condition, drug\u002Fintervention, location, sponsor, or phase; fetch details by NCT ID; filter by status; paginate; export CSV. For clinical research, patient matching, and trial portfolio analysis.","bg-szy\u002FTOP-SKILLS","bg-szy","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F106576190?v=4","01M73A4E8KPV67SFXRY8XZGNBX","ShuZhiyong","01M73A4E96MQ294MHM74TZBVQD",6,"CC-BY-4.0","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fawesome-skills\u002Fclinicaltrials-database-search\u002FSKILL.md",[],[],"2026-11-11 15:11:14",false,"---\nname: clinicaltrials-database-search\ndescription: Query ClinicalTrials.gov API v2 for trial data. Search by condition, drug\u002Fintervention, location, sponsor, or phase; fetch details by NCT ID; filter by status; paginate; export CSV. For clinical research, patient matching, and trial portfolio analysis.\nlicense: CC-BY-4.0\n---\n\n# ClinicalTrials.gov Database — Clinical Trial Search\n\n## Overview\n\nQuery the ClinicalTrials.gov API v2 (public, no authentication) to search and retrieve clinical trial data worldwide. Supports searching by condition, intervention, location, sponsor, and status; retrieving detailed study information by NCT ID; paginating large result sets; and exporting to CSV.\n\n## When to Use\n\n- Searching for recruiting clinical trials for a specific condition or disease\n- Finding trials testing a specific drug, device, or intervention\n- Locating trials in a specific geographic region for patient referral\n- Tracking a sponsor's or institution's clinical trial portfolio\n- Retrieving detailed eligibility criteria, outcomes, and contacts for a specific trial\n- Analyzing clinical trial trends (phases, enrollment, timelines) across a therapeutic area\n- Exporting trial data for systematic reviews or meta-analyses\n- Monitoring trial status changes and results postings\n- For chemical compound bioactivity data use chembl-database-bioactivity instead; for published literature use pubmed-database\n\n## Prerequisites\n\n```bash\nuv pip install requests pandas\n```\n\n**API details**:\n- Base URL: `https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2`\n- Authentication: None 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; text fields use CommonMark Markdown\n\n## Quick Start\n\n```python\nimport requests\nimport time\n\nCT_API = \"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\"\n\ndef ct_search(params):\n    \"\"\"Reusable helper for ClinicalTrials.gov searches.\"\"\"\n    response = requests.get(f\"{CT_API}\u002Fstudies\", params=params, timeout=30)\n    response.raise_for_status()\n    return response.json()\n\n# Search for recruiting breast cancer trials\nresults = ct_search({\n    \"query.cond\": \"breast cancer\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 10,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\nprint(f\"Found {results['totalCount']} trials\")\nfor study in results['studies'][:3]:\n    nct = study['protocolSection']['identificationModule']['nctId']\n    title = study['protocolSection']['identificationModule']['briefTitle']\n    print(f\"  {nct}: {title}\")\n```\n\n## Key Concepts\n\n### Response Data Structure\n\nClinicalTrials.gov returns deeply nested JSON. Key navigation paths:\n\n| Data | Path |\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| Enrollment | `study['protocolSection']['designModule']['enrollmentInfo']['count']` |\n| Eligibility | `study['protocolSection']['eligibilityModule']` |\n| Locations | `study['protocolSection']['contactsLocationsModule']['locations']` |\n| Interventions | `study['protocolSection']['armsInterventionsModule']['interventions']` |\n| Results | `study.get('resultsSection')` (None if no results posted) |\n\n### Study Status Values\n\n| Status | Description |\n|--------|-------------|\n| `RECRUITING` | Currently recruiting participants |\n| `NOT_YET_RECRUITING` | Approved but not yet open |\n| `ENROLLING_BY_INVITATION` | Invitation-only enrollment |\n| `ACTIVE_NOT_RECRUITING` | Active, enrollment closed |\n| `SUSPENDED` | Temporarily halted |\n| `TERMINATED` | Stopped prematurely |\n| `COMPLETED` | Study concluded |\n| `WITHDRAWN` | Withdrawn before enrollment |\n\n### Study Phase Values\n\n| Phase | Description |\n|-------|-------------|\n| `EARLY_PHASE1` | Early Phase 1 (formerly Phase 0) |\n| `PHASE1` | Phase 1 — safety and dosing |\n| `PHASE2` | Phase 2 — efficacy and side effects |\n| `PHASE3` | Phase 3 — large-scale efficacy |\n| `PHASE4` | Phase 4 — post-market surveillance |\n| `NA` | Not applicable (non-drug studies) |\n\n### Query Parameters Reference\n\n| Parameter | Type | Description | Example |\n|-----------|------|-------------|---------|\n| `query.cond` | string | Condition\u002Fdisease | `lung cancer` |\n| `query.intr` | string | Intervention\u002Fdrug | `Pembrolizumab` |\n| `query.locn` | string | Geographic location | `New York` |\n| `query.spons` | string | Sponsor name | `National Cancer Institute` |\n| `query.term` | string | General full-text search | `immunotherapy` |\n| `filter.overallStatus` | string | Status filter (comma-separated) | `RECRUITING,COMPLETED` |\n| `filter.phase` | string | Phase filter | `PHASE2,PHASE3` |\n| `filter.ids` | string | NCT ID filter | `NCT04852770` |\n| `sort` | string | Sort order | `LastUpdatePostDate:desc` |\n| `pageSize` | int | Results per page (max 1000) | `100` |\n| `pageToken` | string | Pagination token | (from previous response) |\n| `format` | string | Response format | `json` or `csv` |\n\n**Sort options**: `LastUpdatePostDate`, `EnrollmentCount`, `StartDate`, `StudyFirstPostDate` — each with `:asc` or `:desc`.\n\n## Core API\n\n### 1. Search by Condition\n\n```python\nresults = ct_search({\n    \"query.cond\": \"type 2 diabetes\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 20,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\nprint(f\"Found {results['totalCount']} recruiting diabetes trials\")\nfor study in results['studies'][:5]:\n    proto = study['protocolSection']\n    nct = proto['identificationModule']['nctId']\n    title = proto['identificationModule']['briefTitle']\n    print(f\"  {nct}: {title}\")\n```\n\n### 2. Search by Intervention\u002FDrug\n\n```python\n# Find Phase 3 trials testing Pembrolizumab\nresults = ct_search({\n    \"query.intr\": \"Pembrolizumab\",\n    \"filter.overallStatus\": \"RECRUITING,ACTIVE_NOT_RECRUITING\",\n    \"filter.phase\": \"PHASE3\",\n    \"pageSize\": 50\n})\nprint(f\"Phase 3 Pembrolizumab trials: {results['totalCount']}\")\n```\n\n### 3. Search by Location\n\n```python\nresults = ct_search({\n    \"query.cond\": \"cancer\",\n    \"query.locn\": \"New York\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 20\n})\n\n# Extract location details\nfor study in results['studies'][:3]:\n    locs = study['protocolSection'].get('contactsLocationsModule', {}).get('locations', [])\n    for loc in locs:\n        if 'New York' in loc.get('city', ''):\n            print(f\"  {loc.get('facility')}: {loc['city']}, {loc.get('state', '')}\")\n```\n\n### 4. Search by Sponsor\n\n```python\nresults = ct_search({\n    \"query.spons\": \"National Cancer Institute\",\n    \"pageSize\": 20\n})\n\nfor study in results['studies'][:5]:\n    sponsor_mod = study['protocolSection']['sponsorCollaboratorsModule']\n    lead = sponsor_mod['leadSponsor']['name']\n    collabs = [c['name'] for c in sponsor_mod.get('collaborators', [])]\n    print(f\"  Lead: {lead}, Collaborators: {collabs}\")\n```\n\n### 5. Retrieve Study Details by NCT ID\n\n```python\nnct_id = \"NCT04852770\"\nresponse = requests.get(f\"{CT_API}\u002Fstudies\u002F{nct_id}\", timeout=30)\nresponse.raise_for_status()\nstudy = response.json()\n\n# Extract key information\nproto = study['protocolSection']\nprint(f\"Title: {proto['identificationModule']['briefTitle']}\")\nprint(f\"Status: {proto['statusModule']['overallStatus']}\")\n\n# Eligibility criteria\nelig = proto.get('eligibilityModule', {})\nprint(f\"Ages: {elig.get('minimumAge')} - {elig.get('maximumAge')}\")\nprint(f\"Sex: {elig.get('sex')}\")\nprint(f\"Criteria:\\n{elig.get('eligibilityCriteria', 'N\u002FA')[:300]}\")\n```\n\n### 6. Pagination for Large Result Sets\n\n```python\nall_studies = []\npage_token = None\nmax_pages = 10\n\nfor page in range(max_pages):\n    params = {\n        \"query.cond\": \"cancer\",\n        \"filter.overallStatus\": \"RECRUITING\",\n        \"pageSize\": 1000,\n    }\n    if page_token:\n        params[\"pageToken\"] = page_token\n\n    results = ct_search(params)\n    all_studies.extend(results['studies'])\n    page_token = results.get('nextPageToken')\n\n    if not page_token:\n        break\n    time.sleep(1.5)  # respect rate limits\n\nprint(f\"Retrieved {len(all_studies)} studies across {page + 1} pages\")\n```\n\n### 7. Export to CSV\n\n```python\nresponse = requests.get(f\"{CT_API}\u002Fstudies\", params={\n    \"query.cond\": \"heart disease\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"format\": \"csv\",\n    \"pageSize\": 1000\n}, timeout=60)\n\nwith open(\"heart_disease_trials.csv\", \"w\") as f:\n    f.write(response.text)\nprint(\"Exported to heart_disease_trials.csv\")\n```\n\n## Common Workflows\n\n### Workflow 1: Multi-Criteria Trial Discovery\n\n```python\nimport requests, time\n\nCT_API = \"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\"\n\ndef ct_search(params):\n    response = requests.get(f\"{CT_API}\u002Fstudies\", params=params, timeout=30)\n    response.raise_for_status()\n    return response.json()\n\n# Step 1: Search with multiple filters\nresults = ct_search({\n    \"query.cond\": \"lung cancer\",\n    \"query.intr\": \"immunotherapy\",\n    \"query.locn\": \"California\",\n    \"filter.overallStatus\": \"RECRUITING,NOT_YET_RECRUITING\",\n    \"pageSize\": 100,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\nprint(f\"Total matches: {results['totalCount']}\")\n\n# Step 2: Filter by phase\nphase23 = [\n    s for s in results['studies']\n    if any(p in ['PHASE2', 'PHASE3']\n           for p in s['protocolSection'].get('designModule', {}).get('phases', []))\n]\nprint(f\"Phase 2\u002F3 trials: {len(phase23)}\")\n\n# Step 3: Extract summaries\nfor study in phase23[:5]:\n    proto = study['protocolSection']\n    nct = proto['identificationModule']['nctId']\n    title = proto['identificationModule']['briefTitle']\n    enrollment = proto.get('designModule', {}).get('enrollmentInfo', {}).get('count', 'N\u002FA')\n    print(f\"  {nct}: {title} (n={enrollment})\")\n```\n\n### Workflow 2: Completed Trials with Results Analysis\n\n```python\n# Step 1: Find completed trials with posted results\nresults = ct_search({\n    \"query.cond\": \"alzheimer disease\",\n    \"filter.overallStatus\": \"COMPLETED\",\n    \"pageSize\": 100,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\n\nwith_results = [s for s in results['studies'] if s.get('hasResults', False)]\nprint(f\"Completed with results: {len(with_results)} \u002F {len(results['studies'])}\")\n\n# Step 2: Get detailed results for top trial\nif with_results:\n    nct = with_results[0]['protocolSection']['identificationModule']['nctId']\n    detail = requests.get(f\"{CT_API}\u002Fstudies\u002F{nct}\", timeout=30).json()\n\n    if 'resultsSection' in detail:\n        outcomes = detail['resultsSection'].get('outcomeMeasuresModule', {})\n        measures = outcomes.get('outcomeMeasures', [])\n        for m in measures[:3]:\n            print(f\"  Outcome: {m.get('title')}\")\n            print(f\"  Type: {m.get('type')}\")\n```\n\n### Workflow 3: Sponsor Portfolio Comparison\n\n```python\nsponsors = [\"Pfizer\", \"Novartis\", \"Roche\"]\nfor sponsor in sponsors:\n    results = ct_search({\n        \"query.spons\": sponsor,\n        \"filter.overallStatus\": \"RECRUITING\",\n        \"pageSize\": 1\n    })\n    print(f\"{sponsor}: {results['totalCount']} recruiting trials\")\n    time.sleep(1.5)\n```\n\n## Common Recipes\n\n### Recipe: Rate-Limited Bulk Search\n\n```python\ndef ct_search_with_retry(params, max_retries=3):\n    for attempt in range(max_retries):\n        try:\n            response = requests.get(f\"{CT_API}\u002Fstudies\", params=params, timeout=30)\n            response.raise_for_status()\n            return response.json()\n        except requests.exceptions.HTTPError as e:\n            if e.response.status_code == 429:\n                wait = 60\n                print(f\"Rate limited. Waiting {wait}s...\")\n                time.sleep(wait)\n            else:\n                raise\n        except requests.exceptions.RequestException:\n            if attempt == max_retries - 1:\n                raise\n            time.sleep(2 ** attempt)\n    raise Exception(\"Max retries exceeded\")\n```\n\n### Recipe: Extract Study Summary\n\n```python\ndef extract_summary(study):\n    proto = study.get('protocolSection', {})\n    ident = proto.get('identificationModule', {})\n    status = proto.get('statusModule', {})\n    design = proto.get('designModule', {})\n    return {\n        'nct_id': ident.get('nctId'),\n        'title': ident.get('officialTitle') or ident.get('briefTitle'),\n        'status': status.get('overallStatus'),\n        'phases': design.get('phases', []),\n        'enrollment': design.get('enrollmentInfo', {}).get('count'),\n        'last_update': status.get('lastUpdatePostDateStruct', {}).get('date')\n    }\n\n# Usage\nfor study in results['studies'][:3]:\n    s = extract_summary(study)\n    print(f\"{s['nct_id']}: {s['status']} | Phase: {s['phases']} | n={s['enrollment']}\")\n```\n\n### Recipe: Safe Field Navigation\n\n```python\ndef safe_get(study, *keys, default='N\u002FA'):\n    \"\"\"Navigate nested study JSON safely.\"\"\"\n    current = study\n    for key in keys:\n        if isinstance(current, dict):\n            current = current.get(key)\n        else:\n            return default\n        if current is None:\n            return default\n    return current\n\n# Usage — handles missing fields gracefully\nnct = safe_get(study, 'protocolSection', 'identificationModule', 'nctId')\nphases = safe_get(study, 'protocolSection', 'designModule', 'phases', default=[])\nenrollment = safe_get(study, 'protocolSection', 'designModule', 'enrollmentInfo', 'count')\n```\n\n## Key Parameters\n\n| Parameter | Endpoint | Default | Description |\n|-----------|----------|---------|-------------|\n| `query.cond` | search | — | Condition\u002Fdisease search term |\n| `query.intr` | search | — | Intervention\u002Fdrug search term |\n| `query.locn` | search | — | Geographic location filter |\n| `query.spons` | search | — | Sponsor\u002Forganization filter |\n| `query.term` | search | — | General full-text search |\n| `filter.overallStatus` | search | all | Comma-separated status values |\n| `filter.phase` | search | all | Comma-separated phase values |\n| `pageSize` | search | 10 | Results per page (max 1000) |\n| `sort` | search | relevance | `{field}:{asc\\|desc}` |\n| `format` | both | `json` | `json` or `csv` |\n| `timeout` | (client) | 30s | Set in requests call |\n\n## Troubleshooting\n\n| Problem | Cause | Solution |\n|---------|-------|----------|\n| 429 Too Many Requests | Rate limit exceeded (~50\u002Fmin) | Wait 60s; use max `pageSize=1000`; implement exponential backoff |\n| Empty studies array | No trials match filters | Broaden search (remove status\u002Fphase filters); check spelling |\n| 400 Bad Request | Invalid parameter value | Verify status\u002Fphase values match enumeration exactly (e.g., `RECRUITING` not `recruiting`) |\n| Missing `resultsSection` | Trial has no posted results | Check `study['hasResults']` before accessing results |\n| KeyError on nested field | Not all trials have all modules | Use `.get()` with defaults or `safe_get` helper (see Recipes) |\n| Pagination stops early | `nextPageToken` absent | All results retrieved; check `totalCount` vs collected count |\n| CSV format differs from JSON | Different field structure | CSV flattens nested structure; use JSON for programmatic access |\n| Timeout on large exports | CSV with many results | Increase timeout; paginate with `pageSize=1000` instead |\n\n## Best Practices\n\n- **Use maximum page size** (1000) for bulk retrieval to minimize request count against rate limit\n- **Always check `hasResults`** before accessing `resultsSection` — most trials have no posted results\n- **Navigate safely** with `.get()` chains — not all trials populate all modules (especially `contactsLocationsModule`, `armsInterventionsModule`)\n- **Specify multiple status values** with commas (e.g., `RECRUITING,NOT_YET_RECRUITING`) — don't make separate requests per status\n- **Use `sort=LastUpdatePostDate:desc`** by default — returns most recently updated trials first\n- **Date interpretation**: `lastUpdatePostDateStruct.date` is ISO 8601 string; `type` field indicates `ACTUAL` vs `ESTIMATED`\n\n## Related Skills\n\n- `pubmed-database` — Published literature search complementary to trial registry data\n- `chembl-database-bioactivity` — Compound bioactivity data for drugs under investigation\n- `bioservices-multi-database` — Alternative database access via unified Python interface\n\n## References\n\n- ClinicalTrials.gov API documentation: https:\u002F\u002Fclinicaltrials.gov\u002Fdata-api\u002Fapi\n- API migration guide (v1→v2): https:\u002F\u002Fclinicaltrials.gov\u002Fdata-api\u002Fabout-api\u002Fapi-migration\n- ClinicalTrials.gov homepage: https:\u002F\u002Fclinicaltrials.gov\u002F\n- OpenAPI specification: https:\u002F\u002Fclinicaltrials.gov\u002Fdata-api\u002Fabout-api\u002Fapi-spec\n\n## Bundled Resources\n\n**Self-contained entry**. Original total: 866 lines (SKILL.md 507 + api_reference.md 359). Scripts: 216 lines (query_clinicaltrials.py).\n\n**Original file disposition**:\n- `SKILL.md` (507 lines) → Core API modules 1-7 (condition, intervention, location, sponsor, details, pagination, CSV export). \"Core Capabilities\" sections 1-10 consolidated: Search by Condition → Module 1, Search by Intervention → Module 2, Geographic Search → Module 3, Search by Sponsor → Module 4, Retrieve Detailed Study → Module 5, Pagination → Module 6, Data Export → Module 7, Combined Query → Workflow 1, Extract Summary → Recipe. \"Resources\" section stub → removed, content consolidated inline. Per-use-case disposition: Patient Matching → When to Use bullet + Workflow 1; Research Analysis → When to Use + Workflow 2; Drug Tracking → When to Use + Module 2; Geographic Search → Module 3; Sponsor Tracking → Module 4 + Workflow 3; Data Export → Module 7; Trial Monitoring → When to Use bullet; Eligibility Screening → Module 5\n- `references\u002Fapi_reference.md` (359 lines) → Fully consolidated inline: endpoint parameters → Key Concepts \"Query Parameters Reference\" table; status\u002Fphase values → Key Concepts tables; response structure → Key Concepts \"Response Data Structure\" table; HTTP error codes → Troubleshooting table; rate limit guidance → Prerequisites + Best Practices; use cases → duplicated main SKILL.md examples, absorbed into Core API; data standards (ISO 8601, CommonMark) → Prerequisites note. Error handling patterns → Recipes \"Rate-Limited Bulk Search\"\n- `scripts\u002Fquery_clinicaltrials.py` (216 lines) → Helper function pattern: `search_studies()` → Quick Start `ct_search()` helper; `get_study_details()` → Module 5 inline; `search_with_all_results()` → Module 6 pagination pattern; `extract_study_summary()` → Recipe \"Extract Study Summary\". Thin-wrapper shortcut applied — each function was a thin wrapper around requests.get()\n\n**Retention**: ~465 lines \u002F 866 original (excl. scripts) = ~54%.\n","# ClinicalTrials.gov Database — Clinical Trial Search\n\n## Overview\n\nQuery the ClinicalTrials.gov API v2 (public, no authentication) to search and retrieve clinical trial data worldwide. Supports searching by condition, intervention, location, sponsor, and status; retrieving detailed study information by NCT ID; paginating large result sets; and exporting to CSV.\n\n## When to Use\n\n- Searching for recruiting clinical trials for a specific condition or disease\n- Finding trials testing a specific drug, device, or intervention\n- Locating trials in a specific geographic region for patient referral\n- Tracking a sponsor's or institution's clinical trial portfolio\n- Retrieving detailed eligibility criteria, outcomes, and contacts for a specific trial\n- Analyzing clinical trial trends (phases, enrollment, timelines) across a therapeutic area\n- Exporting trial data for systematic reviews or meta-analyses\n- Monitoring trial status changes and results postings\n- For chemical compound bioactivity data use chembl-database-bioactivity instead; for published literature use pubmed-database\n\n## Prerequisites\n\n```bash\nuv pip install requests pandas\n```\n\n**API details**:\n- Base URL: `https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2`\n- Authentication: None 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; text fields use CommonMark Markdown\n\n## Quick Start\n\n```python\nimport requests\nimport time\n\nCT_API = \"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\"\n\ndef ct_search(params):\n    \"\"\"Reusable helper for ClinicalTrials.gov searches.\"\"\"\n    response = requests.get(f\"{CT_API}\u002Fstudies\", params=params, timeout=30)\n    response.raise_for_status()\n    return response.json()\n\n# Search for recruiting breast cancer trials\nresults = ct_search({\n    \"query.cond\": \"breast cancer\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 10,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\nprint(f\"Found {results['totalCount']} trials\")\nfor study in results['studies'][:3]:\n    nct = study['protocolSection']['identificationModule']['nctId']\n    title = study['protocolSection']['identificationModule']['briefTitle']\n    print(f\"  {nct}: {title}\")\n```\n\n## Key Concepts\n\n### Response Data Structure\n\nClinicalTrials.gov returns deeply nested JSON. Key navigation paths:\n\n| Data | Path |\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| Enrollment | `study['protocolSection']['designModule']['enrollmentInfo']['count']` |\n| Eligibility | `study['protocolSection']['eligibilityModule']` |\n| Locations | `study['protocolSection']['contactsLocationsModule']['locations']` |\n| Interventions | `study['protocolSection']['armsInterventionsModule']['interventions']` |\n| Results | `study.get('resultsSection')` (None if no results posted) |\n\n### Study Status Values\n\n| Status | Description |\n|--------|-------------|\n| `RECRUITING` | Currently recruiting participants |\n| `NOT_YET_RECRUITING` | Approved but not yet open |\n| `ENROLLING_BY_INVITATION` | Invitation-only enrollment |\n| `ACTIVE_NOT_RECRUITING` | Active, enrollment closed |\n| `SUSPENDED` | Temporarily halted |\n| `TERMINATED` | Stopped prematurely |\n| `COMPLETED` | Study concluded |\n| `WITHDRAWN` | Withdrawn before enrollment |\n\n### Study Phase Values\n\n| Phase | Description |\n|-------|-------------|\n| `EARLY_PHASE1` | Early Phase 1 (formerly Phase 0) |\n| `PHASE1` | Phase 1 — safety and dosing |\n| `PHASE2` | Phase 2 — efficacy and side effects |\n| `PHASE3` | Phase 3 — large-scale efficacy |\n| `PHASE4` | Phase 4 — post-market surveillance |\n| `NA` | Not applicable (non-drug studies) |\n\n### Query Parameters Reference\n\n| Parameter | Type | Description | Example |\n|-----------|------|-------------|---------|\n| `query.cond` | string | Condition\u002Fdisease | `lung cancer` |\n| `query.intr` | string | Intervention\u002Fdrug | `Pembrolizumab` |\n| `query.locn` | string | Geographic location | `New York` |\n| `query.spons` | string | Sponsor name | `National Cancer Institute` |\n| `query.term` | string | General full-text search | `immunotherapy` |\n| `filter.overallStatus` | string | Status filter (comma-separated) | `RECRUITING,COMPLETED` |\n| `filter.phase` | string | Phase filter | `PHASE2,PHASE3` |\n| `filter.ids` | string | NCT ID filter | `NCT04852770` |\n| `sort` | string | Sort order | `LastUpdatePostDate:desc` |\n| `pageSize` | int | Results per page (max 1000) | `100` |\n| `pageToken` | string | Pagination token | (from previous response) |\n| `format` | string | Response format | `json` or `csv` |\n\n**Sort options**: `LastUpdatePostDate`, `EnrollmentCount`, `StartDate`, `StudyFirstPostDate` — each with `:asc` or `:desc`.\n\n## Core API\n\n### 1. Search by Condition\n\n```python\nresults = ct_search({\n    \"query.cond\": \"type 2 diabetes\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 20,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\nprint(f\"Found {results['totalCount']} recruiting diabetes trials\")\nfor study in results['studies'][:5]:\n    proto = study['protocolSection']\n    nct = proto['identificationModule']['nctId']\n    title = proto['identificationModule']['briefTitle']\n    print(f\"  {nct}: {title}\")\n```\n\n### 2. Search by Intervention\u002FDrug\n\n```python\n# Find Phase 3 trials testing Pembrolizumab\nresults = ct_search({\n    \"query.intr\": \"Pembrolizumab\",\n    \"filter.overallStatus\": \"RECRUITING,ACTIVE_NOT_RECRUITING\",\n    \"filter.phase\": \"PHASE3\",\n    \"pageSize\": 50\n})\nprint(f\"Phase 3 Pembrolizumab trials: {results['totalCount']}\")\n```\n\n### 3. Search by Location\n\n```python\nresults = ct_search({\n    \"query.cond\": \"cancer\",\n    \"query.locn\": \"New York\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"pageSize\": 20\n})\n\n# Extract location details\nfor study in results['studies'][:3]:\n    locs = study['protocolSection'].get('contactsLocationsModule', {}).get('locations', [])\n    for loc in locs:\n        if 'New York' in loc.get('city', ''):\n            print(f\"  {loc.get('facility')}: {loc['city']}, {loc.get('state', '')}\")\n```\n\n### 4. Search by Sponsor\n\n```python\nresults = ct_search({\n    \"query.spons\": \"National Cancer Institute\",\n    \"pageSize\": 20\n})\n\nfor study in results['studies'][:5]:\n    sponsor_mod = study['protocolSection']['sponsorCollaboratorsModule']\n    lead = sponsor_mod['leadSponsor']['name']\n    collabs = [c['name'] for c in sponsor_mod.get('collaborators', [])]\n    print(f\"  Lead: {lead}, Collaborators: {collabs}\")\n```\n\n### 5. Retrieve Study Details by NCT ID\n\n```python\nnct_id = \"NCT04852770\"\nresponse = requests.get(f\"{CT_API}\u002Fstudies\u002F{nct_id}\", timeout=30)\nresponse.raise_for_status()\nstudy = response.json()\n\n# Extract key information\nproto = study['protocolSection']\nprint(f\"Title: {proto['identificationModule']['briefTitle']}\")\nprint(f\"Status: {proto['statusModule']['overallStatus']}\")\n\n# Eligibility criteria\nelig = proto.get('eligibilityModule', {})\nprint(f\"Ages: {elig.get('minimumAge')} - {elig.get('maximumAge')}\")\nprint(f\"Sex: {elig.get('sex')}\")\nprint(f\"Criteria:\\n{elig.get('eligibilityCriteria', 'N\u002FA')[:300]}\")\n```\n\n### 6. Pagination for Large Result Sets\n\n```python\nall_studies = []\npage_token = None\nmax_pages = 10\n\nfor page in range(max_pages):\n    params = {\n        \"query.cond\": \"cancer\",\n        \"filter.overallStatus\": \"RECRUITING\",\n        \"pageSize\": 1000,\n    }\n    if page_token:\n        params[\"pageToken\"] = page_token\n\n    results = ct_search(params)\n    all_studies.extend(results['studies'])\n    page_token = results.get('nextPageToken')\n\n    if not page_token:\n        break\n    time.sleep(1.5)  # respect rate limits\n\nprint(f\"Retrieved {len(all_studies)} studies across {page + 1} pages\")\n```\n\n### 7. Export to CSV\n\n```python\nresponse = requests.get(f\"{CT_API}\u002Fstudies\", params={\n    \"query.cond\": \"heart disease\",\n    \"filter.overallStatus\": \"RECRUITING\",\n    \"format\": \"csv\",\n    \"pageSize\": 1000\n}, timeout=60)\n\nwith open(\"heart_disease_trials.csv\", \"w\") as f:\n    f.write(response.text)\nprint(\"Exported to heart_disease_trials.csv\")\n```\n\n## Common Workflows\n\n### Workflow 1: Multi-Criteria Trial Discovery\n\n```python\nimport requests, time\n\nCT_API = \"https:\u002F\u002Fclinicaltrials.gov\u002Fapi\u002Fv2\"\n\ndef ct_search(params):\n    response = requests.get(f\"{CT_API}\u002Fstudies\", params=params, timeout=30)\n    response.raise_for_status()\n    return response.json()\n\n# Step 1: Search with multiple filters\nresults = ct_search({\n    \"query.cond\": \"lung cancer\",\n    \"query.intr\": \"immunotherapy\",\n    \"query.locn\": \"California\",\n    \"filter.overallStatus\": \"RECRUITING,NOT_YET_RECRUITING\",\n    \"pageSize\": 100,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\nprint(f\"Total matches: {results['totalCount']}\")\n\n# Step 2: Filter by phase\nphase23 = [\n    s for s in results['studies']\n    if any(p in ['PHASE2', 'PHASE3']\n           for p in s['protocolSection'].get('designModule', {}).get('phases', []))\n]\nprint(f\"Phase 2\u002F3 trials: {len(phase23)}\")\n\n# Step 3: Extract summaries\nfor study in phase23[:5]:\n    proto = study['protocolSection']\n    nct = proto['identificationModule']['nctId']\n    title = proto['identificationModule']['briefTitle']\n    enrollment = proto.get('designModule', {}).get('enrollmentInfo', {}).get('count', 'N\u002FA')\n    print(f\"  {nct}: {title} (n={enrollment})\")\n```\n\n### Workflow 2: Completed Trials with Results Analysis\n\n```python\n# Step 1: Find completed trials with posted results\nresults = ct_search({\n    \"query.cond\": \"alzheimer disease\",\n    \"filter.overallStatus\": \"COMPLETED\",\n    \"pageSize\": 100,\n    \"sort\": \"LastUpdatePostDate:desc\"\n})\n\nwith_results = [s for s in results['studies'] if s.get('hasResults', False)]\nprint(f\"Completed with results: {len(with_results)} \u002F {len(results['studies'])}\")\n\n# Step 2: Get detailed results for top trial\nif with_results:\n    nct = with_results[0]['protocolSection']['identificationModule']['nctId']\n    detail = requests.get(f\"{CT_API}\u002Fstudies\u002F{nct}\", timeout=30).json()\n\n    if 'resultsSection' in detail:\n        outcomes = detail['resultsSection'].get('outcomeMeasuresModule', {})\n        measures = outcomes.get('outcomeMeasures', [])\n        for m in measures[:3]:\n            print(f\"  Outcome: {m.get('title')}\")\n            print(f\"  Type: {m.get('type')}\")\n```\n\n### Workflow 3: Sponsor Portfolio Comparison\n\n```python\nsponsors = [\"Pfizer\", \"Novartis\", \"Roche\"]\nfor sponsor in sponsors:\n    results = ct_search({\n        \"query.spons\": sponsor,\n        \"filter.overallStatus\": \"RECRUITING\",\n        \"pageSize\": 1\n    })\n    print(f\"{sponsor}: {results['totalCount']} recruiting trials\")\n    time.sleep(1.5)\n```\n\n## Common Recipes\n\n### Recipe: Rate-Limited Bulk Search\n\n```python\ndef ct_search_with_retry(params, max_retries=3):\n    for attempt in range(max_retries):\n        try:\n            response = requests.get(f\"{CT_API}\u002Fstudies\", params=params, timeout=30)\n            response.raise_for_status()\n            return response.json()\n        except requests.exceptions.HTTPError as e:\n            if e.response.status_code == 429:\n                wait = 60\n                print(f\"Rate limited. Waiting {wait}s...\")\n                time.sleep(wait)\n            else:\n                raise\n        except requests.exceptions.RequestException:\n            if attempt == max_retries - 1:\n                raise\n            time.sleep(2 ** attempt)\n    raise Exception(\"Max retries exceeded\")\n```\n\n### Recipe: Extract Study Summary\n\n```python\ndef extract_summary(study):\n    proto = study.get('protocolSection', {})\n    ident = proto.get('identificationModule', {})\n    status = proto.get('statusModule', {})\n    design = proto.get('designModule', {})\n    return {\n        'nct_id': ident.get('nctId'),\n        'title': ident.get('officialTitle') or ident.get('briefTitle'),\n        'status': status.get('overallStatus'),\n        'phases': design.get('phases', []),\n        'enrollment': design.get('enrollmentInfo', {}).get('count'),\n        'last_update': status.get('lastUpdatePostDateStruct', {}).get('date')\n    }\n\n# Usage\nfor study in results['studies'][:3]:\n    s = extract_summary(study)\n    print(f\"{s['nct_id']}: {s['status']} | Phase: {s['phases']} | n={s['enrollment']}\")\n```\n\n### Recipe: Safe Field Navigation\n\n```python\ndef safe_get(study, *keys, default='N\u002FA'):\n    \"\"\"Navigate nested study JSON safely.\"\"\"\n    current = study\n    for key in keys:\n        if isinstance(current, dict):\n            current = current.get(key)\n        else:\n            return default\n        if current is None:\n            return default\n    return current\n\n# Usage — handles missing fields gracefully\nnct = safe_get(study, 'protocolSection', 'identificationModule', 'nctId')\nphases = safe_get(study, 'protocolSection', 'designModule', 'phases', default=[])\nenrollment = safe_get(study, 'protocolSection', 'designModule', 'enrollmentInfo', 'count')\n```\n\n## Key Parameters\n\n| Parameter | Endpoint | Default | Description |\n|-----------|----------|---------|-------------|\n| `query.cond` | search | — | Condition\u002Fdisease search term |\n| `query.intr` | search | — | Intervention\u002Fdrug search term |\n| `query.locn` | search | — | Geographic location filter |\n| `query.spons` | search | — | Sponsor\u002Forganization filter |\n| `query.term` | search | — | General full-text search |\n| `filter.overallStatus` | search | all | Comma-separated status values |\n| `filter.phase` | search | all | Comma-separated phase values |\n| `pageSize` | search | 10 | Results per page (max 1000) |\n| `sort` | search | relevance | `{field}:{asc\\|desc}` |\n| `format` | both | `json` | `json` or `csv` |\n| `timeout` | (client) | 30s | Set in requests call |\n\n## Troubleshooting\n\n| Problem | Cause | Solution |\n|---------|-------|----------|\n| 429 Too Many Requests | Rate limit exceeded (~50\u002Fmin) | Wait 60s; use max `pageSize=1000`; implement exponential backoff |\n| Empty studies array | No trials match filters | Broaden search (remove status\u002Fphase filters); check spelling |\n| 400 Bad Request | Invalid parameter value | Verify status\u002Fphase values match enumeration exactly (e.g., `RECRUITING` not `recruiting`) |\n| Missing `resultsSection` | Trial has no posted results | Check `study['hasResults']` before accessing results |\n| KeyError on nested field | Not all trials have all modules | Use `.get()` with defaults or `safe_get` helper (see Recipes) |\n| Pagination stops early | `nextPageToken` absent | All results retrieved; check `totalCount` vs collected count |\n| CSV format differs from JSON | Different field structure | CSV flattens nested structure; use JSON for programmatic access |\n| Timeout on large exports | CSV with many results | Increase timeout; paginate with `pageSize=1000` instead |\n\n## Best Practices\n\n- **Use maximum page size** (1000) for bulk retrieval to minimize request count against rate limit\n- **Always check `hasResults`** before accessing `resultsSection` — most trials have no posted results\n- **Navigate safely** with `.get()` chains — not all trials populate all modules (especially `contactsLocationsModule`, `armsInterventionsModule`)\n- **Specify multiple status values** with commas (e.g., `RECRUITING,NOT_YET_RECRUITING`) — don't make separate requests per status\n- **Use `sort=LastUpdatePostDate:desc`** by default — returns most recently updated trials first\n- **Date interpretation**: `lastUpdatePostDateStruct.date` is ISO 8601 string; `type` field indicates `ACTUAL` vs `ESTIMATED`\n\n## Related Skills\n\n- `pubmed-database` — Published literature search complementary to trial registry data\n- `chembl-database-bioactivity` — Compound bioactivity data for drugs under investigation\n- `bioservices-multi-database` — Alternative database access via unified Python interface\n\n## References\n\n- ClinicalTrials.gov API documentation: https:\u002F\u002Fclinicaltrials.gov\u002Fdata-api\u002Fapi\n- API migration guide (v1→v2): https:\u002F\u002Fclinicaltrials.gov\u002Fdata-api\u002Fabout-api\u002Fapi-migration\n- ClinicalTrials.gov homepage: https:\u002F\u002Fclinicaltrials.gov\u002F\n- OpenAPI specification: https:\u002F\u002Fclinicaltrials.gov\u002Fdata-api\u002Fabout-api\u002Fapi-spec\n\n## Bundled Resources\n\n**Self-contained entry**. Original total: 866 lines (SKILL.md 507 + api_reference.md 359). Scripts: 216 lines (query_clinicaltrials.py).\n\n**Original file disposition**:\n- `SKILL.md` (507 lines) → Core API modules 1-7 (condition, intervention, location, sponsor, details, pagination, CSV export). \"Core Capabilities\" sections 1-10 consolidated: Search by Condition → Module 1, Search by Intervention → Module 2, Geographic Search → Module 3, Search by Sponsor → Module 4, Retrieve Detailed Study → Module 5, Pagination → Module 6, Data Export → Module 7, Combined Query → Workflow 1, Extract Summary → Recipe. \"Resources\" section stub → removed, content consolidated inline. Per-use-case disposition: Patient Matching → When to Use bullet + Workflow 1; Research Analysis → When to Use + Workflow 2; Drug Tracking → When to Use + Module 2; Geographic Search → Module 3; Sponsor Tracking → Module 4 + Workflow 3; Data Export → Module 7; Trial Monitoring → When to Use bullet; Eligibility Screening → Module 5\n- `references\u002Fapi_reference.md` (359 lines) → Fully consolidated inline: endpoint parameters → Key Concepts \"Query Parameters Reference\" table; status\u002Fphase values → Key Concepts tables; response structure → Key Concepts \"Response Data Structure\" table; HTTP error codes → Troubleshooting table; rate limit guidance → Prerequisites + Best Practices; use cases → duplicated main SKILL.md examples, absorbed into Core API; data standards (ISO 8601, CommonMark) → Prerequisites note. Error handling patterns → Recipes \"Rate-Limited Bulk Search\"\n- `scripts\u002Fquery_clinicaltrials.py` (216 lines) → Helper function pattern: `search_studies()` → Quick Start `ct_search()` helper; `get_study_details()` → Module 5 inline; `search_with_all_results()` → Module 6 pagination pattern; `extract_study_summary()` → Recipe \"Extract Study Summary\". Thin-wrapper shortcut applied — each function was a thin wrapper around requests.get()\n\n**Retention**: ~465 lines \u002F 866 original (excl. scripts) = ~54%.\n",{"name":5,"license":15,"description":7},"master","63f17866001c5ca854bf2fa0b678ce277133de5b","skills\u002Fawesome-skills\u002Fclinicaltrials-database-search",0,"https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS","https:\u002F\u002Fbg-szy.github.io\u002FTOP-SKILLS\u002F","https:\u002F\u002Fgithub.com\u002Fbg-szy","https:\u002F\u002Fwww.ecust.edu.cn\u002F","a student of East China University of Science and Technology","2026-11-15 03:38:02",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add bg-szy\u002FTOP-SKILLS --skill clinicaltrials-database-search",{"tool":40,"command":41},"bunx","bunx skills add bg-szy\u002FTOP-SKILLS --skill clinicaltrials-database-search",{"tool":43,"command":44},"pnpm","pnpm dlx skills add bg-szy\u002FTOP-SKILLS --skill clinicaltrials-database-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fawesome-skills\u002Fclinicaltrials-database-search\u002FSKILL.md",true,[],[49,58,65,72,79,86],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":53,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":57},"01M7BC3JRMEG50NSM6GB1H63YM","whatsapp-closer","Load when designing, writing, reviewing or improving a sales assistant or salesperson that sells over WhatsApp (or any chat) to people who write from an ad (\"Hi, info\"): its prompt, its scripts, its follow-ups, or its results. Gives evidence-ranked rules to close (book a visit or call, or get paid) while staying likeable and inside WhatsApp\u002FMeta policy: answer in under 5 minutes, few questions before price, one recommendation, every message ends in a two-option next step, objections answered with a pause and a question, 2-3 follow-ups max, human handoff always available. Includes ready scripts (Spanish, formal and informal), what not to do, metrics, and how to apply changes to a live assistant without breaking it. Triggers on \"make it sell\", \"close more\", \"the bot doesn't close\", \"cerrar ventas\", \"que venda\", \"objections\", \"follow-up messages\".","MIT","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Fwhatsapp-closer\u002FSKILL.md",[],[],"2026-11-15 14:19:17",{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":53,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":57},"01M7BC26NMKPXJ086Y8BQKGBMY","study-first","Load BEFORE answering any message that asks for more than a single fact, and whenever answering means reading something (a document, PDF, chat transcript, web page, code, screenshot, task status, ad campaign). It makes the agent break down EVERYTHING the user asked (including messy dictated voice messages and \"scratch that\" corrections), read the sources IN FULL (not the title, not the first lines, not the \"succeeded\" label), cross-check with a second source, and answer point by point with evidence, never writing a detail it did not actually see. Triggers on \"study this\", \"look into it properly\", \"read it carefully\", \"analyze\", \"investigate\", \"what does it say\", \"how is it going\", \"did it work\", long or dictated messages, and in Spanish \"estudia\", \"revisa a fondo\", \"a profundidad\", \"léelo bien\", \"analiza\", \"cómo vas\", \"qué pasó con\", \"funcionó\".","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Fstudy-first\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":53,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":57},"01M7BC1NBY3FN17NQ8AB77GY61","source-every-fact","Load before writing, designing, approving or sending any customer-facing piece that carries hard facts: a post, story, reel, ad, flyer, caption, web page, proposal or chat reply that states a price, discount, phone or WhatsApp number, name, address, hours, date, shipping or payment terms, quantity, or a product claim. Use it for \"check the prices\", \"is that the right number\", \"where did you get that\", \"¿de dónde sacas eso?\", \"ese no es el número\", \"ese precio no es\", \"no pongas mi nombre\", \"revisa los datos\", \"que no diga eso\". It builds a fact sheet where every fact has a source, puts only those facts on the piece, adds nothing the source did not say, reads each fact back the way a customer would read it, and checks phones digit by digit. Not for choosing the design, writing the hook, or checking whether a post went live (use published-vs-planned).","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Fsource-every-fact\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":53,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":57},"01M7BC1EVYEXB0BRGGGZ1J5EYM","sort-me-out","Load when the user says \"sort me out\", \"what am I missing\", \"what did I forget\", \"what's pending\", \"I'm all over the place\", \"ordéname\", \"qué me falta\", \"qué se me pasó\", or asks for a full picture of everything open across projects, chats, clients and notes. The agent studies every source it can reach (notes, logs, task lists, memory, recent conversations, project files, live systems), then gives ONE ordered list: what is pending, what was promised and never done, what fell through the cracks, what is blocked and on whom, ranked by urgency and money at stake. For people who juggle many things and lose track.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Fsort-me-out\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":53,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":57},"01M7BC159A0J1K474G12R90G25","small-budget-ads","Load before recommending to turn off, change, duplicate or add ads or ad sets in Meta Ads (Facebook\u002FInstagram) when budgets are small (about 1-5 USD a day per ad set), typically click-to-WhatsApp or Messenger \"conversations\" campaigns for local businesses, often one ad set per product or service and accounts in different currencies. Also when the user asks \"what should I turn off?\", \"who is doing badly?\", \"should I duplicate this?\". Generic ads skills assume big budgets and statistical tests; this one gives safe decision rules for small accounts: enough data first, compare each ad set only with itself, and never break the learning phase for nothing.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Fsmall-budget-ads\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":53,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":57},"01M7BBZRFSD9TFNHY9VR64RWVH","revnu-fix-ai-claims","Fix what ChatGPT, Perplexity, Google AI Overviews, Copilot or Claude get wrong about your business: list every claim they make, mark it correct, wrong, outdated or missing, find the page it most likely came from and draft the fix (your own copy, your profiles, a correction request). Use when the user says \"ChatGPT says the wrong price\", \"AI thinks we're a different company\", \"Perplexity says we don't have a free plan\", \"AI answers describe our old product\", \"Google's AI Overview is wrong about us\", \"ChatGPT confuses us with another company\", \"fix what AI says about us\", \"AI says we lack a feature we have\", \"prospects quote wrong things from ChatGPT\", \"correct our brand in AI answers\", \"why does Copilot say that about us\", \"AI uses our old name\", \"update AI after our rebrand or pricing change\", or hands over a revnu-geo-check report. Works without a Revnu account.","https:\u002F\u002Fgithub.com\u002Fbg-szy\u002FTOP-SKILLS\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketplace\u002Frevnu-fix-ai-claims\u002FSKILL.md",[],[]]