Skills inclusion-criteria-gen
'Generate and optimize clinical trial subject inclusion/exclusion criteria
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/aipoch-ai/inclusion-criteria-gen" ~/.claude/skills/clawdbot-skills-inclusion-criteria-gen && rm -rf "$T"
manifest:
skills/aipoch-ai/inclusion-criteria-gen/SKILL.mdsource content
Inclusion Criteria Generator
Generate and optimize clinical trial subject inclusion/exclusion criteria to balance scientific rigor with recruitment feasibility.
Use Cases
- Protocol Design: Create initial eligibility criteria for new clinical trials
- Criteria Optimization: Refine existing criteria to improve enrollment without compromising safety/efficacy
- Competitive Analysis: Analyze eligibility patterns across similar trials
- Recruitment Strategy: Identify and mitigate barriers to enrollment
- Feasibility Assessment: Evaluate if proposed criteria are realistic for target population
Usage
CLI Usage
# Generate criteria from study design python scripts/main.py generate \ --indication "Type 2 Diabetes" \ --phase "Phase 2" \ --population "adults" \ --duration "24 weeks" \ --output criteria.json # Optimize existing criteria python scripts/main.py optimize \ --input current_criteria.json \ --enrollment-target 200 \ --current-enrollment 120 \ --output optimized_criteria.json # Analyze criteria complexity python scripts/main.py analyze \ --input criteria.json \ --output analysis_report.json # Compare with competitor trials python scripts/main.py benchmark \ --input criteria.json \ --condition "Type 2 Diabetes" \ --output benchmark_report.json
Python API
from scripts.main import CriteriaGenerator, CriteriaOptimizer # Generate new criteria generator = CriteriaGenerator() criteria = generator.generate( indication="Type 2 Diabetes", phase="Phase 2", population="adults", study_duration="24 weeks", endpoints=["HbA1c reduction", "weight change"] ) # Optimize existing criteria optimizer = CriteriaOptimizer() optimized = optimizer.optimize( criteria=existing_criteria, enrollment_target=200, current_enrollment=120, retention_rate=0.85 ) # Analyze criteria complexity analysis = optimizer.analyze_complexity(criteria)
Input Format
Study Design Parameters
{ "indication": "Type 2 Diabetes Mellitus", "phase": "Phase 2", "population": "adults", "age_range": {"min": 18, "max": 75}, "study_duration": "24 weeks", "treatment_type": "oral", "primary_endpoints": ["HbA1c change from baseline"], "safety_considerations": ["cardiovascular risk"], "concomitant_meds_allowed": ["metformin"] }
Existing Criteria Format
{ "inclusion_criteria": [ { "id": "I1", "criterion": "Age 18-75 years", "rationale": "Adult population per regulatory guidance", "category": "demographics" } ], "exclusion_criteria": [ { "id": "E1", "criterion": "HbA1c < 7.0% or > 11.0%", "rationale": "Ensure measurable treatment effect", "category": "disease_severity" } ] }
Output Format
Generated/Optimized Criteria
{ "inclusion_criteria": [ { "id": "I1", "criterion": "Age 18-75 years, inclusive", "category": "demographics", "rationale": "Adult population; upper limit for safety", "priority": "required", "impact": "low" } ], "exclusion_criteria": [ { "id": "E1", "criterion": "HbA1c < 7.5% or > 10.5% at screening", "category": "disease_severity", "rationale": "Optimal range for detecting treatment effect", "priority": "required", "impact": "medium", "flexibility": "widen by 0.5% if enrollment slow" } ], "optimization_notes": [ "Widened HbA1c range from 7.0-11.0% to 7.5-10.5% based on feasibility data" ], "recruitment_metrics": { "estimated_screen_success_rate": 0.35, "estimated_enrollment_rate": 0.65, "key_barriers": ["HbA1c upper limit", "concomitant medication restrictions"] } }
Criteria Categories
| Category | Description | Examples |
|---|---|---|
| demographics | Age, sex, race, ethnicity | Age 18-75, women of childbearing potential |
| disease_severity | Disease stage, severity markers | HbA1c range, tumor stage, NYHA class |
| medical_history | Prior conditions, comorbidities | No cardiovascular events within 6 months |
| concomitant_meds | Allowed/prohibited medications | Stable metformin dose allowed |
| laboratory | Lab value requirements | eGFR > 30 mL/min, normal liver function |
| lifestyle | Diet, exercise, habits | Non-smoker, willing to maintain diet |
| compliance | Ability to participate | Able to provide informed consent |
| safety | Risk minimization criteria | No history of severe hypoglycemia |
Optimization Strategies
Common Modifications
| Issue | Strategy | Example |
|---|---|---|
| Narrow age range | Widen limits | 18-70 → 18-75 years |
| Restrictive lab values | Adjust thresholds | eGFR > 60 → eGFR > 30 mL/min |
| Comorbidity exclusions | Add time limits | Exclude "current" vs "history of" |
| Medication washouts | Shorten periods | 4 weeks → 2 weeks |
| Geographic barriers | Add telemedicine | Include remote visits option |
Retention Considerations
- Minimize visit frequency when possible
- Allow window periods for visit timing
- Provide transportation assistance language
- Consider patient-reported outcome burden
Technical Details
- Difficulty: Medium
- Standards: ICH E6(R2) GCP, CDISC Protocol Representation Model
- Data Sources: ClinicalTrials.gov eligibility patterns, literature feasibility data
- Dependencies: None (pure Python)
References
- Templates by therapeutic areareferences/criteria_templates.json
- Best practices for criteria optimizationreferences/optimization_guidelines.md
- Frequent eligibility design mistakesreferences/common_pitfalls.md
- FDA/EMA guidance on eligibility criteriareferences/regulatory_guidance.md
- Screen failure rates by criterion typereferences/feasibility_data.json
Risk Assessment
| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python scripts with tools | High |
| Network Access | External API calls | High |
| File System Access | Read/write data | Medium |
| Instruction Tampering | Standard prompt guidelines | Low |
| Data Exposure | Data handled securely | Medium |
Security Checklist
- No hardcoded credentials or API keys
- No unauthorized file system access (../)
- Output does not expose sensitive information
- Prompt injection protections in place
- API requests use HTTPS only
- Input validated against allowed patterns
- API timeout and retry mechanisms implemented
- Output directory restricted to workspace
- Script execution in sandboxed environment
- Error messages sanitized (no internal paths exposed)
- Dependencies audited
- No exposure of internal service architecture
Prerequisites
# Python dependencies pip install -r requirements.txt
Evaluation Criteria
Success Metrics
- Successfully executes main functionality
- Output meets quality standards
- Handles edge cases gracefully
- Performance is acceptable
Test Cases
- Basic Functionality: Standard input → Expected output
- Edge Case: Invalid input → Graceful error handling
- Performance: Large dataset → Acceptable processing time
Lifecycle Status
- Current Stage: Draft
- Next Review Date: 2026-03-06
- Known Issues: None
- Planned Improvements:
- Performance optimization
- Additional feature support
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| str | Required | Therapeutic indication |
| str | Required | |
| str | "adults" | Target population |
| str | "" | Study duration |
| str | Required | Output file path |
| int | 18 | Minimum age |
| int | 75 | Maximum age |
| str | Required | Input criteria JSON file |
| int | Required | Target enrollment |
| int | Required | Current enrollment |
| str | Required | Output file path |
| str | Required | Input criteria JSON file |
| str | Required | Output file path |
| str | Required | Input criteria JSON file |
| str | Required | Medical condition |
| str | Required | Output file path |