Skill: aipoch-ai/irb-application-assistant (version 1.0.0)

--- name: irb-application-assistant description: Assists researchers with Institutional Review Board (IRB) application tasks, including drafting informed consent documents, reviewing research protocols for compliance, generating application forms, and preparing submission checklists. Use when the user mentions IRB, Institutional Review Board, research ethics, human subjects research, protocol review, informed consent, or needs help preparing or reviewing an IRB application or submission. allowed-tools: "Read Write Bash Edit" license: MIT metadata: skill-author: AIPOCH version: "1.0" --- # IRB Application Assistant Helps researchers prepare, review, and submit Institutional Review Board (IRB) applications. Supports drafting informed consent templates, checking protocol compliance, generating application documents, and guiding researchers through the submission workflow. ## Quick Start ```bash # Generate an informed consent template python scripts/main.py --task consent --protocol protocol.json --output consent_form.docx # Run a compliance check on a research protocol python scripts/main.py --task compliance-check --protocol protocol.json --verbose # Generate a full IRB application package python scripts/main.py --task generate-application --config study_config.json --output irb_package/ ``` ## Core Capabilities ### 1. Generate Informed Consent Documents Produces compliant informed consent forms based on study parameters such as participant population, risk level, and study type. ```bash python scripts/main.py --task consent \ --protocol protocol.json \ --population "adults 18+" \ --risk-level minimal \ --output consent_form.docx ``` ### 2. Protocol Compliance Review Checks a research protocol against IRB requirements and flags missing or non-compliant sections. ```bash python scripts/main.py --task compliance-check \ --protocol protocol.json \ --ruleset federal-common-rule \ --output compliance_report.txt ``` ### 3. Application Form Generation Generates completed IRB application forms (e.g., initial review, continuing review, amendment) from structured study data. ```bash python scripts/main.py --task generate-application \ --form-type initial-review \ --config study_config.json \ --output irb_application.docx ``` ### 4. Submission Checklist Validation Validates that all required documents and fields are present before submission. ```bash python scripts/main.py --task validate-submission \ --package irb_package/ \ --output validation_report.txt ``` ## Recommended Workflow Follow these steps for a complete IRB submission: 1. **Prepare study configuration** — Populate `study_config.json` with study title, PI details, participant population, risk level, and procedures. 2. **Run compliance check** — Use `--task compliance-check` to identify gaps in the protocol before drafting documents. - ⛔ **Checkpoint**: If the compliance report flags ANY errors, resolve ALL flagged items and re-run `--task compliance-check` before proceeding. Do not advance to step 3 with unresolved compliance errors. 3. **Generate consent document** — Use `--task consent` to produce a compliant informed consent form tailored to the study. 4. **Generate application forms** — Use `--task generate-application` to produce the required IRB submission forms. 5. **Validate submission package** — Use `--task validate-submission` to confirm all required documents are present and fields are complete. - ⛔ **Checkpoint**: If validation fails, follow this loop: review errors in `validation_report.txt` → fix each issue → re-run `--task validate-submission` → only proceed when the report shows zero blocking errors. 6. **Review and submit** — Manually review any remaining warnings in the compliance and validation reports before submitting to the IRB. ## Quality Checklist - [ ] Protocol includes all required sections (purpose, procedures, risks, benefits, confidentiality) - [ ] Informed consent language is at appropriate reading level for participant population - [ ] Risk level classification is justified and documented - [ ] All required attachments (recruitment materials, surveys, data management plan) are included - [ ] Compliance report reviewed and all flagged items resolved - [ ] Submission package validated with zero blocking errors ## References - `references/guide.md` — Detailed documentation and field descriptions - `references/examples/` — Sample protocols, consent forms, and completed applications --- **Skill ID**: 952 | **Version**: 1.0 | **License**: MIT

path: scripts/main.py
content: #!/usr/bin/env python3
"""
IRB Application Assistant
Draft IRB applications with focus on risk/benefit and privacy protection.
"""

import argparse
from datetime import datetime


class IRBAssistant:
    """Assist with IRB application drafting."""
    
    def generate_application(self, study_info):
        """Generate IRB application sections."""
        sections = []
        
        # Protocol Summary
        sections.append("="*70)
        sections.append("IRB APPLICATION")
        sections.append("="*70)
        sections.append("")
        sections.append("1. PROTOCOL SUMMARY")
        sections.append("-"*70)
        sections.append(f"Title: {study_info.get('title', '[Study Title]')}")
        sections.append(f"Principal Investigator: {study_info.get('pi', '[PI Name]')}")
        sections.append(f"Institution: {study_info.get('institution', '[Institution]')}")
        sections.append("")
        sections.append(f"Study Purpose: {study_info.get('purpose', '[Brief description of study purpose]')}")
        sections.append("")
        
        # Study Procedures
        sections.append("2. STUDY PROCEDURES")
        sections.append("-"*70)
        sections.append("2.1 Subject Population")
        sections.append(f"  Target population: {study_info.get('population', '[Description]')}")
        sections.append(f"  Number of subjects: {study_info.get('n_subjects', '[N]')}")
        sections.append(f"  Inclusion criteria: {study_info.get('inclusion', '[Criteria]')}")
        sections.append(f"  Exclusion criteria: {study_info.get('exclusion', '[Criteria]')}")
        sections.append("")
        
        sections.append("2.2 Study Procedures")
        sections.append(f"  {study_info.get('procedures', '[Describe all study procedures]')}")
        sections.append("")
        
        # Risk Assessment
        sections.append("3. RISK/BENEFIT ASSESSMENT")
        sections.append("-"*70)
        sections.append("3.1 Risks")
        risks = study_info.get('risks', [])
        if risks:
            for risk in risks:
                sections.append(f"  • {risk}")
        else:
            sections.append("  • [List all potential risks]")
        sections.append("")
        
        sections.append("3.2 Risk Minimization")
        sections.append("  [Describe measures to minimize risks]")
        sections.append("")
        
        sections.append("3.3 Benefits")
        benefits = study_info.get('benefits', [])
        if benefits:
            for benefit in benefits:
                sections.append(f"  • {benefit}")
        else:
            sections.append("  • [List potential benefits]")
        sections.append("")
        
        sections.append("3.4 Risk/Benefit Justification")
        sections.append("  [Explain why benefits justify the risks]")
        sections.append("")
        
        # Privacy Protection
        sections.append("4. PRIVACY AND CONFIDENTIALITY")
        sections.append("-"*70)
        sections.append("4.1 Data Collection")
        sections.append("  [Describe what data will be collected and how]")
        sections.append("")
        
        sections.append("4.2 Data Storage")
        sections.append("  • Identifiers will be stored separately from data")
        sections.append("  • Data will be stored in secure, encrypted location")
        sections.append("  • Access limited to authorized study personnel")
        sections.append("")
        
        sections.append("4.3 Data Sharing")
        sections.append("  [Describe plans for data sharing, if any]")
        sections.append("")
        
        sections.append("4.4 Retention and Disposal")
        sections.append("  • Data will be retained for [X] years post-study")
        sections.append("  • Secure disposal procedures will be followed")
        sections.append("")
        
        # Consent Process
        sections.append("5. INFORMED CONSENT")
        sections.append("-"*70)
        sections.append("  [Describe consent process and documents]")
        sections.append("")
        
        sections.append("="*70)
        
        return "\n".join(sections)
    
    def generate_consent_template(self, study_info):
        """Generate consent form template."""
        template = []
        
        template.append("INFORMED CONSENT FORM")
        template.append(f"Study Title: {study_info.get('title', '[Title]')}")
        template.append("")
        template.append("You are being asked to take part in a research study.")
        template.append("")
        template.append("PURPOSE:")
        template.append(study_info.get('purpose', '[Study purpose]'))
        template.append("")
        template.append("PROCEDURES:")
        template.append(study_info.get('procedures', '[What you will be asked to do]'))
        template.append("")
        template.append("RISKS AND DISCOMFORTS:")
        template.append("[List potential risks]")
        template.append("")
        template.append("BENEFITS:")
        template.append("[List potential benefits]")
        template.append("")
        template.append("CONFIDENTIALITY:")
        template.append("Your information will be kept confidential...")
        
        return "\n".join(template)


def main():
    parser = argparse.ArgumentParser(description="IRB Application Assistant")
    parser.add_argument("--title", "-t", help="Study title")
    parser.add_argument("--pi", help="Principal Investigator")
    parser.add_argument("--population", "-p", help="Target population")
    parser.add_argument("--n-subjects", "-n", help="Number of subjects")
    parser.add_argument("--output", "-o", default="irb_application.txt", help="Output file")
    parser.add_argument("--template", action="store_true", help="Generate consent template")
    
    args = parser.parse_args()
    
    assistant = IRBAssistant()
    
    study_info = {
        "title": args.title or "[Study Title]",
        "pi": args.pi or "[PI Name]",
        "population": args.population or "[Target population]",
        "n_subjects": args.n_subjects or "[N]",
        "purpose": "[Study purpose]",
        "procedures": "[Study procedures]",
        "risks": ["Minimal risk procedures"],
        "benefits": ["Contribution to scientific knowledge"]
    }
    
    if args.template:
        text = assistant.generate_consent_template(study_info)
    else:
        text = assistant.generate_application(study_info)
    
    print(text)
    
    with open(args.output, 'w') as f:
        f.write(text)
    print(f"\nSaved to: {args.output}")


if __name__ == "__main__":
    main()


path: tile.json
content: {
  "name": "aipoch/irb-application-assistant",
  "version": "0.1.0",
  "private": true,
  "summary": "Use when working with irb application assistant",
  "skills": {
    "irb-application-assistant": {
      "path": "SKILL.md"
    }
  }
}

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)