
System Awareness
- 7 installs
- 5 repo stars
- Updated June 18, 2026
- drshailesh88/integrated_content_os
Detect capability gaps, propose and build new skills, and keep the skill registry and context files in sync.
About
System Awareness is a meta-skill that manages all other skills by observing gaps and proposing new capabilities. A developer uses it to log unmet needs, review the skill backlog, and sync context files after skill changes.
- Logs capability gaps and proposes new skills
- Syncs registry and context files (CLAUDE.md, GEMINI.md, AGENTS.md)
System Awareness by the numbers
- 7 all-time installs (skills.sh)
- Ranked #556 of 779 Skill Development skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/drshailesh88/integrated_content_os --skill system-awarenessAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 7 |
|---|---|
| repo stars | ★ 5 |
| Last updated | June 18, 2026 |
| Repository | drshailesh88/integrated_content_os ↗ |
What it does
Detect capability gaps, propose and build new skills, and keep the skill registry and context files in sync.
Files
System Awareness - The Self-Evolving Skill Manager
Meta-Skill: This skill manages all other skills. It observes gaps, proposes new capabilities, and helps the system evolve.
---
Quick Start
1. Log a Gap
python scripts/gap_logger.py "I need to analyze ECG waveforms from images"
python scripts/gap_logger.py \
--request "Analyze ECG images for abnormalities" \
--context "User uploaded 12-lead ECG, wanted automated interpretation" \
--category "medical-imaging" \
--urgency "high"2. Analyze Gaps
python scripts/gap_analyzer.py --list # List all gaps
python scripts/gap_analyzer.py --analyze # Analyze patterns
python scripts/gap_analyzer.py --report # Generate priority report3. Build a Skill
# Propose from a logged gap
python scripts/skill_proposer.py --gap-id "gap_2024_001"
# Build from a proposal (one command does everything)
python scripts/skill_builder.py --proposal ecg-analyzer-proposal.md
# Or build directly from a gap (fast path)
python scripts/skill_builder.py --from-gap gap_xxxx
# Or build directly with name and purpose
python scripts/skill_builder.py --name "ecg-analyzer" --purpose "Analyze ECG images"---
Gap → Skill Pipeline
1. GAP DETECTED
└─► gap_logger.py → gap-log.json
2. GAPS ANALYZED
└─► gap_analyzer.py → patterns, priorities
3. SKILL PROPOSED
└─► skill_proposer.py → skill-templates/*.md
4. HUMAN REVIEW
└─► Approve / reject / modify proposal
5. SKILL BUILT ★
└─► skill_builder.py → skills/[category]/[name]/
├── Creates SKILL.md
├── Creates scripts/ & references/
├── Marks gap as resolved
└── Archives proposal
6. SYSTEM SYNCED (auto-runs)
└─► sync_skills.py → capability-registry.json
7. CONTEXT UPDATED (auto-runs)
└─► generate_context.py → CLAUDE.md, GEMINI.md, AGENTS.md
8. SKILL AVAILABLE ✓
└─► Ready to use in next conversationApproval Checklist (Step 4)
Before approving a new skill:
- [ ] Frequency: Is this needed often enough?
- [ ] Impact: Does it unblock important workflows?
- [ ] Feasibility: Can we actually build this?
- [ ] Overlap: Does an existing skill already do this?
- [ ] Maintenance: Can we keep this updated?
Validation & Error Recovery
After each major step, verify before proceeding:
| Step | Verify | If it fails |
|---|---|---|
sync_skills.py --update | Check registry entry count increased | Re-run with --dry-run to inspect conflicts; resolve duplicate IDs manually |
generate_context.py --update | Confirm AUTO-GENERATED markers are present in target files | Ensure markers exist: <!-- AUTO-GENERATED SKILLS START --> … <!-- AUTO-GENERATED SKILLS END --> |
skill_builder.py | Validate new SKILL.md parses correctly | Check frontmatter for required name/description fields; re-run builder |
| Registry integrity | Run python scripts/registry_updater.py --stats | If count anomaly, diff against previous backup in data/backups/ |
---
Sync Architecture
Context files are rebuilt from a single source of truth:
skills/cardiology/* skills/scientific/* ...
└──────────────────┬───────────────┘
▼
sync_skills.py
▼
capability-registry.json
▼
generate_context.py
▼
CLAUDE.md GEMINI.md AGENTS.md SKILL-CATALOG.mdSync Commands
# Discover new skills
python scripts/sync_skills.py # Report only (dry run)
python scripts/sync_skills.py --update # Add to registry
# Regenerate context files
python scripts/generate_context.py --preview # Preview changes
python scripts/generate_context.py --update # Apply to all context files
# Full pipeline (run after adding any new skill)
python scripts/sync_skills.py --update && python scripts/generate_context.py --updateContext files must contain these markers for auto-update:
<!-- AUTO-GENERATED SKILLS START -->
... skills content here ...
<!-- AUTO-GENERATED SKILLS END -->When to Run
- After adding a new skill: Run full pipeline
- Weekly maintenance:
sync_skills.pyto check for drift - Before major sessions: Ensure registry is current
---
Gap Detection (For Claude)
Log a gap whenever you encounter an inability, a missing capability, a pointer to an external tool, or repeated user frustration with the same task. When logging, note it in the response:
📋 **Gap Logged**: [brief description]
Category: [category] | Urgency: [low/medium/high]
Review gaps with: `python scripts/gap_analyzer.py --list`For full JSON schema, proposal template format, and gap pattern examples, see:
references/json-schemas.md— gap-log.json, capability-registry.json, skill-backlog.json schemasreferences/proposal-template.md— new skill proposal formatreferences/gap-patterns.md— common gap pattern recognitionreferences/skill-anatomy.md— what makes a good skill
---
Commands Reference
# Gap Management
python scripts/gap_logger.py "description" # Log a new gap
python scripts/gap_analyzer.py --list # List all gaps
python scripts/gap_analyzer.py --analyze # Analyze patterns
python scripts/gap_analyzer.py --report # Generate priority report
# Skill Proposals & Building
python scripts/skill_proposer.py --gap-id "id" # Propose from gap
python scripts/skill_proposer.py --interactive # Interactive proposal builder
python scripts/skill_builder.py --list-proposals # See pending proposals
python scripts/skill_builder.py --list-gaps # See open gaps
python scripts/skill_builder.py --proposal FILE # Build from proposal
python scripts/skill_builder.py --from-gap ID # Build from gap (fast path)
python scripts/skill_builder.py --name X --purpose Y # Build directly
python scripts/skill_builder.py --no-sync # Skip auto-sync
# Registry
python scripts/registry_updater.py --scan # Scan for new skills
python scripts/registry_updater.py --stats # Show usage statistics
python scripts/registry_updater.py --unused # Find unused skills{
"metadata": {
"created": "2024-12-31T00:00:00",
"last_updated": "2025-12-31T16:22:37.941980",
"total_gaps": 4,
"description": "Log of capability gaps identified during system usage"
},
"gaps": [
{
"id": "gap_20251231_162226_89a758",
"timestamp": "2025-12-31T16:22:26.581223",
"last_seen": "2025-12-31T16:22:26.581226",
"request": "Analyze ECG waveforms from uploaded images to detect arrhythmias",
"context": null,
"category": "medical-imaging",
"urgency": "high",
"frequency": 1,
"similar_requests": [],
"potential_skill": "analyze-ecg-waveforms-uploaded",
"source": "cli",
"status": "resolved",
"notes": [
"Skill built on 2026-01-01"
],
"resolved_at": "2026-01-01T11:12:18.183491"
},
{
"id": "gap_20251231_162237_93863f",
"timestamp": "2025-12-31T16:22:37.412594",
"last_seen": "2025-12-31T16:22:37.412597",
"request": "Transcribe audio from podcast interviews",
"context": null,
"category": "audio-video",
"urgency": "medium",
"frequency": 1,
"similar_requests": [],
"potential_skill": "transcribe-audio-podcast-interviews",
"source": "cli",
"status": "resolved",
"notes": [
"Skill built on 2026-01-01"
],
"resolved_at": "2026-01-01T11:13:21.844951"
},
{
"id": "gap_20251231_162237_59baec",
"timestamp": "2025-12-31T16:22:37.677905",
"last_seen": "2025-12-31T16:22:37.677908",
"request": "Extract data from uploaded PDF research papers automatically",
"context": null,
"category": "data-extraction",
"urgency": "high",
"frequency": 1,
"similar_requests": [
"Analyze ECG waveforms from uploaded images to detect arrhythmias"
],
"potential_skill": "extract-data-uploaded-pdf",
"source": "cli",
"status": "resolved",
"notes": [
"Built as research-paper-extractor skill on 2026-01-01"
],
"resolved_at": "2026-01-01T11:22:43.231609"
},
{
"id": "gap_20251231_162237_2c6876",
"timestamp": "2025-12-31T16:22:37.941951",
"last_seen": "2025-12-31T16:22:37.941954",
"request": "Analyze chest X-ray images for cardiac abnormalities",
"context": null,
"category": "medical-imaging",
"urgency": "high",
"frequency": 1,
"similar_requests": [
"Analyze ECG waveforms from uploaded images to detect arrhythmias"
],
"potential_skill": "analyze-chest-x-ray-images",
"source": "cli",
"status": "cancelled",
"notes": [
"Cancelled on 2026-01-01 - Not needed for current workflow"
],
"cancelled_at": "2026-01-01T11:20:28.661961"
}
]
}Scientific Skills Routing Guide for Cardiology
Quick Reference
| Need | Skill | Example Use Case |
|---|---|---|
| bioinformatics | biopython | Analyze cardiac gene sequences |
| bioinformatics | bioservices | Access multiple biological databases |
| writing | citation-management | Manage references for articles |
| clinical | clinical-decision-support | Generate GRADE evidence summaries |
| clinical | clinical-reports | Create case reports |
| clinical-database | clinicaltrials-database | Find ongoing trials for heart failure drugs |
| clinical-database | clinvar-database | Find genetic variants linked to cardiomyopathy |
| data-processing | dask | Parallel processing of trial data |
| clinical-database | drugbank-database | Research drug interactions for cardiac medications |
| analysis | exploratory-data-analysis | Explore trial datasets |
| clinical-database | fda-database | Check FDA approvals for new cardiac drugs |
| research-database | gwas-database | Find genetic associations with CVD |
| writing | literature-review | Systematic literature reviews |
| visualization | matplotlib | Create publication-quality figures |
| signal-processing | neurokit2 | Analyze ECG signals |
| research-database | opentargets-database | Find drug targets for CVD |
| writing | peer-review | Review manuscript quality |
| research | perplexity-search | Quick research on cardiac topics |
| visualization | plotly | Create interactive trial result charts |
| data-processing | polars | Process large clinical datasets |
| research-database | pubmed-database | Literature search for cardiac topics |
| imaging | pydicom | Process cardiac imaging data |
| clinical-ml | pyhealth | Build clinical NLP models |
| machine-learning | scikit-learn | Build CVD risk prediction models |
| statistics | scikit-survival | Survival analysis for trial data |
| statistics | statsmodels | Perform survival analysis |
By Category
Clinical Database
- clinicaltrials-database: Query ClinicalTrials.gov via API v2. Search trials by condition, drug, location, status, or phase. R...
- clinvar-database: Query NCBI ClinVar for variant clinical significance. Search by gene/position, interpret pathogenici...
- drugbank-database: Access and analyze comprehensive drug information from the DrugBank database including drug properti...
- fda-database: Query openFDA API for drugs, devices, adverse events, recalls, regulatory submissions (510k, PMA), s...
- hmdb-database: Access Human Metabolome Database (220K+ metabolites). Search by name/ID/structure, retrieve chemical...
- clinpgx-database: Access ClinPGx pharmacogenomics data (successor to PharmGKB). Query gene-drug interactions, CPIC gui...
Research Database
- pubmed-database: Direct REST API access to PubMed. Advanced Boolean/MeSH queries, E-utilities API, batch processing, ...
- gwas-database: Query NHGRI-EBI GWAS Catalog for SNP-trait associations. Search variants by rs ID, disease/trait, ge...
- opentargets-database: Query Open Targets Platform for target-disease associations, drug target discovery, tractability/saf...
- biorxiv-database: Efficient database search tool for bioRxiv preprint server. Use this skill when searching for life s...
- openalex-database: Query and analyze scholarly literature using the OpenAlex database. This skill should be used when s...
- gene-database: Query NCBI Gene via E-utilities/Datasets API. Search by symbol/ID, retrieve gene info (RefSeqs, GO, ...
Visualization
- plotly: Interactive scientific and statistical data visualization library for Python. Use when creating char...
- matplotlib: Foundational plotting library. Create line plots, scatter, bar, histograms, heatmaps, 3D, subplots, ...
- networkx: Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python...
Statistics
- statsmodels: Statistical modeling toolkit. OLS, GLM, logistic, ARIMA, time series, hypothesis tests, diagnostics,...
- scikit-survival: Comprehensive toolkit for survival analysis and time-to-event modeling in Python using scikit-surviv...
- pymc: Bayesian modeling with PyMC. Build hierarchical models, MCMC (NUTS), variational inference, LOO/WAIC...
Machine Learning
- scikit-learn: Machine learning in Python with scikit-learn. Use when working with supervised learning (classificat...
- pytorch-lightning: Deep learning framework (PyTorch Lightning). Organize PyTorch code into LightningModules, configure ...
- deepchem: Molecular machine learning toolkit. Property prediction (ADMET, toxicity), GNNs (GCN, MPNN), Molecul...
Bioinformatics
- biopython: Primary Python toolkit for molecular biology. Preferred for Python-based PubMed/NCBI queries (Bio.En...
- bioservices: Primary Python tool for 40+ bioinformatics services. Preferred for multi-database workflows: UniProt...
- scanpy: Single-cell RNA-seq analysis. Load .h5ad/10X data, QC, normalization, PCA/UMAP/t-SNE, Leiden cluster...
- anndata: This skill should be used when working with annotated data matrices in Python, particularly for sing...
- scvi-tools: This skill should be used when working with single-cell omics data analysis using scvi-tools, includ...
Signal Processing
- neurokit2: Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA,...
Writing
- literature-review: Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXi...
- citation-management: Comprehensive citation management for academic research. Search Google Scholar and PubMed for papers...
- peer-review: Systematic peer review toolkit. Evaluate methodology, statistics, design, reproducibility, ethics, f...
- clinical-decision-support: Generate professional clinical decision support (CDS) documents for pharmaceutical and clinical rese...
- clinical-reports: Write comprehensive clinical reports including case reports (CARE guidelines), diagnostic reports (r...
Data Processing
- polars: Fast DataFrame library (Apache Arrow). Select, filter, group_by, joins, lazy evaluation, CSV/Parquet...
- dask: Parallel/distributed computing. Scale pandas/NumPy beyond memory, parallel DataFrames/Arrays, multi-...
- geopandas: Python library for working with geospatial vector data including shapefiles, GeoJSON, and GeoPackage...
Imaging
- pydicom: Python library for working with DICOM (Digital Imaging and Communications in Medicine) files. Use th...
- pathml: Computational pathology toolkit for analyzing whole-slide images (WSI) and multiparametric imaging d...
- histolab: Digital pathology image processing toolkit for whole slide images (WSI). Use this skill when working...
Clinical Ml
- pyhealth: Comprehensive healthcare AI toolkit for developing, testing, and deploying machine learning models w...
Analysis
- exploratory-data-analysis: Perform comprehensive exploratory data analysis on scientific data files across 200+ file formats. T...
Research
- perplexity-search: Perform AI-powered web searches with real-time information using Perplexity models via LiteLLM and O...
{
"metadata": {
"created": "2024-12-31T00:00:00",
"last_updated": "2024-12-31T00:00:00",
"description": "Prioritized queue of skills to be built (Open Positions)"
},
"backlog": []
}
Proposed Skill: analyze-ecg-waveforms-uploaded
Status: PROPOSAL - Pending Approval
Generated: 2025-12-31 16:22
Gap ID: gap_20251231_162226_89a758
---
Gap Analysis
Origin
This skill was proposed to address gap gap_20251231_162226_89a758
Problem Statement
Analyze ECG waveforms from uploaded images to detect arrhythmias
Context
User encountered a capability gap during normal usage.
Frequency
- Request frequency: (to be filled from gap log)
- User impact: (assess based on workflow blockage)
---
Skill Specification
Purpose
Analyze ECG waveforms from uploaded images to detect arrhythmias
Category
medical-imaging
Inputs
- topic: [describe type and format]
- query: [describe type and format]
Outputs
- result: [describe type and format]
- formatted_output: [describe type and format]
Dependencies
- [ ] None identified
---
Use Cases
1. Primary Use Case
- [Describe the main scenario where this skill is used]
2. Secondary Use Case
- [Describe additional scenarios]
3. Edge Cases
- [Describe unusual but valid uses]
---
Similar Skills (Learn From)
- cardiology-visual-system: [what patterns to borrow]
- gemini-imagegen: [what patterns to borrow]
---
Implementation Plan
Complexity Assessment
- [ ] Simple (documentation only) - SKILL.md + references/
- [x] Medium (docs + reference files) - Above + structured references
- [ ] Complex (docs + scripts + API) - Above + Python scripts + API integration
Estimated Complexity: MEDIUM
Files to Create
skills/cardiology/analyze-ecg-waveforms-uploaded/
├── SKILL.md # Main documentation
├── references/ # Reference files (if needed)
│ └── [reference-files].md
└── scripts/ # Python scripts (if needed)
└── [script-files].pyImplementation Steps
1. [ ] Create directory structure 2. [ ] Write SKILL.md with full documentation 3. [ ] Create reference files (if applicable) 4. [ ] Implement Python scripts (if applicable) 5. [ ] Test with sample inputs 6. [ ] Update capability registry 7. [ ] Document in SKILL-CATALOG.md
---
Review Checklist
Before approving this skill, verify:
- [ ] Need: Is this capability truly needed? (frequency >= 2)
- [ ] Unique: Does this not duplicate existing skills?
- [ ] Feasible: Can this be built with available resources?
- [ ] Maintainable: Can this be kept updated?
- [ ] Scoped: Is the scope well-defined and not too broad?
---
Decision
Recommendation: [ ] BUILD | [ ] DEFER | [ ] MERGE with existing skill | [ ] REJECT
Rationale: (to be filled by reviewer)
Approved by: (signature) Date: (approval date)
---
Post-Approval Actions
After approval: 1. Create skill directory 2. Implement according to plan 3. Update capability-registry.json 4. Update SKILL-CATALOG.md 5. Mark gap as "resolved" in gap log 6. Remove from skill backlog
---
Generated by System Awareness - Skill Proposer
[Skill Name]
[One-line description of what this skill does]
Purpose
[2-3 sentences explaining the problem this skill solves and who benefits from it]
Quick Start
[Show the simplest way to use this skill]Inputs
| Input | Type | Required | Description |
|---|---|---|---|
| input_1 | string | Yes | Description |
| input_2 | string | No | Description |
Outputs
| Output | Type | Description |
|---|---|---|
| output_1 | string | Description |
Use Cases
1. [Primary Use Case Name]
- Scenario: [when would someone use this]
- Example: [concrete example]
2. [Secondary Use Case Name]
- Scenario: [when would someone use this]
- Example: [concrete example]
Dependencies
- Required Skills: [list any skills this depends on]
- APIs: [list any external APIs needed]
- Libraries: [list any Python libraries needed]
Examples
Example 1: [Name]
Input:
[show input]Output:
[show expected output]Best Practices
- [Tip 1]
- [Tip 2]
- [Tip 3]
Common Mistakes
- ❌ [What not to do]
- ✅ [What to do instead]
Related Skills
- [related-skill-1]: [how it relates]
- [related-skill-2]: [how it relates]
---
Created: [date] Last Updated: [date]
Skill Sync Report
Generated: 2026-01-01 14:56:12 Mode: DRY RUN Log file: /Users/shaileshsingh/integrated cowriting system/skills/cardiology/system-awareness/logs/sync_20260101_145611.log
---
Summary
| Metric | Count |
|---|---|
| Skills on disk | 194 |
| New skills (not in registry) | 1 |
| Existing skills (matched) | 193 |
| Missing from disk | 0 |
| Skills with discrepancies | 193 |
---
New Skills (To Be Added)
visual-design-system
- Name: Visual Design System
- Category: cardiology
- Subcategory: visual/images
- Description: Purpose: Publication-grade design tokens and utilities for Nature/JACC/NEJM quality graphics....
- Has scripts: True
- Complexity: high
---
Discrepancies Detected
These skills exist in both but have differences:
content-research-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | content-research-writer | Content Research Writer |
| description | Assists in writing high-quality content by conduct | This skill acts as your writing partner, helping y |
| subcategory | content-creation/newsletter | cardiology/general |
| complexity | high | low |
content-os
| Field | Disk Value | Registry Value |
|---|---|---|
| name | content-os | Content OS: Multi |
| description | Content OS orchestrator - the master skill that pr | The "produce everything" button. Give one seed |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
video-delivery-coach
| Field | Disk Value | Registry Value |
|---|---|---|
| name | video-delivery-coach | Video Delivery Coach |
| description | Analyze YOUR video recordings before publishing. E | Analyze video recordings: voice (pace, pitch), fac |
| subcategory | content-creation/youtube | research-amplification/delivery-coaching |
analyze-ecg-waveforms-uploaded
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | visual/images | cardiology/general |
cardiology-science-for-people
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-science-for-people | Cardiology Science for People |
| description | Write rigorous, accurate cardiology science for ge | Write rigorous cardiology science that real people |
| subcategory | content-creation/editorial | cardiology/general |
| complexity | high | low |
cardiology-editorial
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-editorial | Cardiology Editorial Writing System |
| description | Comprehensive cardiology editorial writing system | This skill transforms you into a specialized cardi |
| subcategory | content-creation/newsletter | cardiology/general |
| complexity | high | low |
content-seo-optimizer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | content-seo-optimizer | Content SEO Optimizer |
| description | Three-agent SEO audit pipeline. Scrapes your conte | 3-agent SEO pipeline: scrapes content → analyzes S |
| subcategory | content-creation/youtube | research-amplification/seo |
perplexity-search
| Field | Disk Value | Registry Value |
|---|---|---|
| name | perplexity-search | Perplexity Search |
| description | Perform AI-powered web searches with real-time inf | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | medium |
content-reflection
| Field | Disk Value | Registry Value |
|---|---|---|
| name | content-reflection | Content Reflection Agent |
| description | Pre-publication quality assurance for cardiology t | A rigorous pre-publication review system that eval |
| subcategory | content-creation/editorial | cardiology/general |
| complexity | high | low |
cardiology-youtube-scriptwriter
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-youtube-scriptwriter | Cardiology YouTube Scriptwriter |
| description | End-to-end YouTube content creation for cardiology | Complete workflow from "Hello" to finished script. |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
cardiology-content-repurposer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-content-repurposer | Cardiology Content Repurposer |
| description | Transform long-form cardiology content (YouTube tr | ## Overview |
| subcategory | content-creation/youtube | cardiology/general |
authentic-voice
| Field | Disk Value | Registry Value |
|---|---|---|
| name | authentic-voice | Authentic Voice |
| description | Transform AI-sounding writing into natural, human | AI detection avoidance and human-sounding content |
| subcategory | content-creation/youtube | quality/ai-detection |
| complexity | high | low |
debunk-script-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
research-synthesizer
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
content-marketing-social-listening
| Field | Disk Value | Registry Value |
|---|---|---|
| name | content-marketing-social-listening | Content Marketing & Social Listening |
| description | Comprehensive content marketing toolkit for discov | ## Overview |
| subcategory | research/trends | cardiology/general |
| complexity | high | medium |
social-media-trends-research
| Field | Disk Value | Registry Value |
|---|---|---|
| name | social-media-trends-research | Social Media Trends Research |
| description | Programmatic social media and marketing research u | Zero-cost trend research using pytrends + Reddit + |
| subcategory | content-creation/twitter | research/trends |
| complexity | high | medium |
transcribe-audio-podcast-interviews
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
citation-management
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Systematic citation management for accurate refere | ## Overview |
| subcategory | research/pubmed | scientific/general |
| has_scripts | (none) | True |
| complexity | low | high |
| scripts (removed) | (none) | ['search_google_scholar.py', 'extract_metadata.py' |
scientific-critical-thinking
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Systematic evaluation of research rigor through me | ## Overview |
| subcategory | content-creation/editorial | scientific/general |
| complexity | high | low |
x-post-creator-skill
| Field | Disk Value | Registry Value |
|---|---|---|
| name | x-post-creator-skill | X Post Creator |
| description | Create scientifically rigorous, engaging X (Twitte | Twitter thought leadership with frameworks (batche |
| complexity | low | medium |
research-paper-extractor
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Extract text from cardiology research paper PDFs - | Extract structured data from cardiology research p |
| subcategory | content-creation/youtube | cardiology/general |
twitter-longform-medical
| Field | Disk Value | Registry Value |
|---|---|---|
| name | twitter-longform-medical | Twitter Long |
| description | Write data-driven, evidence-first long-form Twitte | Write data-driven, evidence-first long-form Twitte |
| subcategory | content-creation/twitter | cardiology/general |
| complexity | high | low |
mcp-management
| Field | Disk Value | Registry Value |
|---|---|---|
| name | mcp-management | MCP Management |
| description | Manage Model Context Protocol (MCP) servers - disc | Skill for managing and interacting with Model Cont |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
youtube-comment-analyzer
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
medical-newsletter-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | medical-newsletter-writer | Medical Newsletter Writer |
| description | Create evidence-based medical newsletters for inte | Create high-quality, evidence-based medical newsle |
| subcategory | content-creation/newsletter | cardiology/general |
| complexity | high | low |
statistical-analysis
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Rigorous statistical analysis guidance for interpr | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| has_scripts | (none) | True |
| complexity | low | medium |
| scripts (removed) | (none) | ['assumption_checks.py'] |
youtube-script-master
| Field | Disk Value | Registry Value |
|---|---|---|
| name | youtube-script-master | YouTube Script Master |
| description | Unified YouTube script creation for cardiology cha | Data-driven Hinglish YouTube scripts (15-30 min) |
scientific-writing
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Core skill for producing research manuscripts, evi | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
clinical-decision-support
| Field | Disk Value | Registry Value |
|---|---|---|
| name | Clinical Decision Support | Clinical Decision Support Documents |
| description | Generate professional clinical decision support do | ## Description |
| subcategory | analysis/statistics | scientific/general |
| has_scripts | (none) | True |
| complexity | low | high |
| scripts (removed) | (none) | ['validate_cds_document.py', 'generate_survival_an |
knowledge-pipeline
| Field | Disk Value | Registry Value |
|---|---|---|
| name | Knowledge Pipeline Skill | Knowledge Pipeline |
| description | ## Metadata - Name: knowledge-pipeline - **Ver | RAG system for AstraDB guidelines + PubMed synthes |
| subcategory | research/pubmed | research/rag |
| has_scripts | (none) | True |
multi-model-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | multi-model-writer | Multi-Model Writer |
| description | Unified writing system with intelligent model rout | Unified routing to 6 LLM models (Claude, GPT, Gemi |
| subcategory | utilities/automation | utilities/routing |
| has_scripts | (none) | True |
| complexity | high | medium |
| scripts (removed) | (none) | ['model_router.py'] |
carousel-generator
| Field | Disk Value | Registry Value |
|---|---|---|
| name | carousel-generator | Carousel Generator |
| description | Instagram carousel generator. Creates 1080x1080px | Generate branded Instagram carousels (1080x1080px) |
| subcategory | content-creation/visual | cardiology/general |
cardiology-newsletter-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-newsletter-writer | Cardiology Newsletter Writer |
| description | Create evidence-based cardiology newsletters for t | Newsletter creation with Topol style + anti-AI gui |
| complexity | low | medium |
article-extractor
| Field | Disk Value | Registry Value |
|---|---|---|
| name | article-extractor | Article Extractor |
| description | Extract clean article content from URLs (blog post | This skill extracts the main content from web arti |
| subcategory | content-creation/newsletter | cardiology/general |
| complexity | high | low |
carousel-generator-v2
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
| scripts (added) | ['satori_renderer.py', 'hooks_generator.py', 'cont | (none) |
influencer-analyzer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | influencer-analyzer | Influencer Analyzer |
| description | Track and analyze cardiology content creators (Top | Track Topol, Attia, York Cardiology, Indian channe |
| subcategory | content-creation/youtube | research-amplification/competitor-analysis |
| complexity | high | medium |
literature-review
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Comprehensive, systematic literature reviews follo | ## Overview |
| subcategory | content-creation/newsletter | scientific/general |
| has_scripts | (none) | True |
| complexity | low | high |
| scripts (removed) | (none) | ['search_databases.py', 'generate_pdf.py', 'verify |
cardiology-topol-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-topol-writer | Cardiology Content Writer (Topol Voice) |
| description | Transform thought dumps into polished cardiology c | Transform unstructured thought dumps into polished |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
ensemble-content-scorer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | ensemble-content-scorer | Ensemble Content Scorer |
| description | Multi-model consensus scoring for content ideas. S | Multi-model consensus scoring: Claude + GPT-4o + G |
| subcategory | research/trends | research-amplification/scoring |
| complexity | high | medium |
cardiology-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-topol-writer | Cardiology Content Writer (Topol Voice) |
| description | Transform thought dumps into polished cardiology c | Transform unstructured thought dumps into polished |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
academic-chapter-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | academic-chapter-writer | Academic Chapter Writer |
| description | Comprehensive academic textbook chapter writing sy | Transform topics into publishable textbook chapter |
| subcategory | research/pubmed | cardiology/general |
| complexity | high | low |
hook-generator
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
parallel-literature-search
| Field | Disk Value | Registry Value |
|---|---|---|
| name | parallel-literature-search | Parallel Literature Search |
| description | Parallel search across PubMed, Perplexity, and you | Parallel search across PubMed + Perplexity + RAG. |
| subcategory | research/pubmed | research-amplification/quick-research |
| complexity | high | medium |
deep-researcher
| Field | Disk Value | Registry Value |
|---|---|---|
| name | deep-researcher | Deep Researcher v2.0 |
| description | Performs comprehensive, multi-layered research on | Comprehensive research methodology with file-based |
| subcategory | research/pubmed | cardiology/general |
| complexity | high | low |
quick-topic-researcher
| Field | Disk Value | Registry Value |
|---|---|---|
| name | quick-topic-researcher | Quick Topic Researcher |
| description | Rapid topic mastery for video/content prep. Takes | 5-min topic mastery: generates 5 questions → paral |
| subcategory | content-creation/youtube | research-amplification/quick-research |
| complexity | high | medium |
viral-content-predictor
| Field | Disk Value | Registry Value |
|---|---|---|
| name | viral-content-predictor | Viral Content Predictor |
| description | Analyzes medical education content ideas from PDFs | ML-based viral potential scoring (0-100) |
| subcategory | content-creation/youtube | research/trends |
content-trend-researcher
| Field | Disk Value | Registry Value |
|---|---|---|
| name | content-trend-researcher | Content Trend Researcher |
| description | Advanced content and topic research skill that ana | A comprehensive content research and analysis skil |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
clinical-reports
| Field | Disk Value | Registry Value |
|---|---|---|
| name | Clinical Reports | Clinical Report Writing |
| description | Professional clinical documentation covering case | ## Overview |
| subcategory | general | scientific/general |
| has_scripts | (none) | True |
| scripts (removed) | (none) | ['validate_case_report.py', 'format_adverse_events |
youtube-script-hinglish
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
pubmed-database
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Direct REST API access to the National Library of | 35M+ biomedical articles via NCBI E-utilities API |
| subcategory | content-creation/newsletter | databases/clinical |
| complexity | low | medium |
browser-automation
| Field | Disk Value | Registry Value |
|---|---|---|
| name | browser-automation | Browser Automation for AI Web Interfaces |
| description | Browser automation for ChatGPT Plus and Gemini Adv | Use your ChatGPT Plus and Gemini Advanced |
| subcategory | content-creation/youtube | cardiology/general |
| complexity | high | low |
clinicaltrials-database
| Field | Disk Value | Registry Value |
|---|---|---|
| description | Query the U.S. National Library of Medicine's clin | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| has_scripts | (none) | True |
| complexity | low | medium |
| scripts (removed) | (none) | ['query_clinicaltrials.py'] |
cremieux-cardio
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cremieux-cardio | Cremieux |
| description | Write data-driven, evidence-first long-form Twitte | You're a cardiologist with a point of view, writin |
| subcategory | content-creation/twitter | cardiology/general |
| complexity | high | low |
gemini-imagegen
| Field | Disk Value | Registry Value |
|---|---|---|
| name | gemini-imagegen | Gemini Image Generation (Nano Banana Pro) |
| description | Generate and edit images using the Gemini API (Nan | Generate and edit images using Google's Gemini API |
| subcategory | quality/accuracy | cardiology/general |
cardiology-trial-editorial
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-trial-editorial | Cardiology Trial Editorial |
| description | Identify landmark cardiology trials and write evid | Landmark trial editorials with scoring + infograph |
system-awareness
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | content-creation/youtube | cardiology/general |
| scripts (added) | ['skill_builder.py'] | (none) |
cardiology-tweet-writer
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-tweet-writer | Cardiology Tweet Writer |
| description | Generate scientifically accurate, engaging cardiol | Simplified tweet generation with seed + modifier p |
cardiology-visual-system
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cardiology-visual-system | Cardiology Visual System |
| description | Unified visual content system for cardiology thoug | Intelligent routing to optimal visual tool (Fal.ai |
| subcategory | content-creation/youtube | visual/routing |
| scripts (added) | ['plotly_charts.py'] | (none) |
peer-review
| Field | Disk Value | Registry Value |
|---|---|---|
| name | Peer Review | Scientific Critical Evaluation and Peer Review |
| description | Systematic framework for conducting rigorous peer | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
metabolomics-workbench-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | metabolomics-workbench-database | Metabolomics Workbench Database |
| description | Access NIH Metabolomics Workbench via REST API (4, | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
benchling-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | benchling-integration | Benchling Integration |
| description | Benchling R&D platform integration. Access registr | ## Overview |
| subcategory | utilities/automation | scientific/general |
| complexity | high | low |
networkx
| Field | Disk Value | Registry Value |
|---|---|---|
| name | networkx | NetworkX |
| description | Comprehensive toolkit for creating, analyzing, and | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
anndata
| Field | Disk Value | Registry Value |
|---|---|---|
| name | anndata | AnnData |
| description | This skill should be used when working with annota | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
scikit-survival
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scikit-survival | scikit |
| description | Comprehensive toolkit for survival analysis and ti | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
qiskit
| Field | Disk Value | Registry Value |
|---|---|---|
| name | qiskit | Qiskit |
| description | Comprehensive quantum computing toolkit for buildi | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
uspto-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | uspto-database | USPTO Database |
| description | Access USPTO APIs for patent/trademark searches, e | ## Overview |
| subcategory | general | scientific/general |
scientific-brainstorming
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scientific-brainstorming | Scientific Brainstorming |
| description | Research ideation partner. Generate hypotheses, ex | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
kegg-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | kegg-database | KEGG Database |
| description | Direct REST API access to KEGG (academic use only) | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
pymc
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pymc-bayesian-modeling | PyMC Bayesian Modeling |
| description | Bayesian modeling with PyMC. Build hierarchical mo | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
paper-2-web
| Field | Disk Value | Registry Value |
|---|---|---|
| name | paper-2-web | Paper2All: Academic Paper Transformation Pipeline |
| description | This skill should be used when converting academic | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
perplexity-search
| Field | Disk Value | Registry Value |
|---|---|---|
| name | perplexity-search | Perplexity Search |
| description | Perform AI-powered web searches with real-time inf | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | medium |
research-lookup
| Field | Disk Value | Registry Value |
|---|---|---|
| name | research-lookup | Research Information Lookup |
| description | Look up current research information using Perplex | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | medium |
shap
| Field | Disk Value | Registry Value |
|---|---|---|
| name | shap | SHAP (SHapley Additive exPlanations) |
| description | Model interpretability and explainability using SH | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
zinc-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | zinc-database | ZINC Database |
| description | Access ZINC (230M+ purchasable compounds). Search | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
umap-learn
| Field | Disk Value | Registry Value |
|---|---|---|
| name | umap-learn | UMAP |
| description | UMAP dimensionality reduction. Fast nonlinear mani | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
sympy
| Field | Disk Value | Registry Value |
|---|---|---|
| name | sympy | SymPy |
| description | Use this skill when working with symbolic mathemat | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
vaex
| Field | Disk Value | Registry Value |
|---|---|---|
| name | vaex | Vaex |
| description | Use this skill for processing and analyzing large | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
alphafold-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | alphafold-database | AlphaFold Database |
| description | Access AlphaFold's 200M+ AI-predicted protein stru | AI-predicted protein structures, 200M+ proteins |
| subcategory | analysis/ml | databases/proteins |
| complexity | high | medium |
dask
| Field | Disk Value | Registry Value |
|---|---|---|
| name | dask | Dask |
| description | Parallel/distributed computing. Scale pandas/NumPy | ## Overview |
| subcategory | quality/accuracy | scientific/general |
| complexity | high | low |
get-available-resources
| Field | Disk Value | Registry Value |
|---|---|---|
| name | get-available-resources | Get Available Resources |
| description | This skill should be used at the start of any comp | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | medium |
exploratory-data-analysis
| Field | Disk Value | Registry Value |
|---|---|---|
| name | exploratory-data-analysis | Exploratory Data Analysis |
| description | Perform comprehensive exploratory data analysis on | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | medium |
cosmic-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cosmic-database | COSMIC Database |
| description | Access COSMIC cancer mutation database. Query soma | ## Overview |
| subcategory | quality/voice | scientific/general |
| complexity | high | medium |
gene-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | gene-database | Gene Database |
| description | Query NCBI Gene via E-utilities/Datasets API. Sear | ## Overview |
| subcategory | general | scientific/general |
biorxiv-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | biorxiv-database | bioRxiv Database |
| description | Efficient database search tool for bioRxiv preprin | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | medium |
esm
| Field | Disk Value | Registry Value |
|---|---|---|
| name | esm | ESM: Evolutionary Scale Modeling |
| description | Comprehensive toolkit for protein language models | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | low |
scientific-schematics
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scientific-schematics | Scientific Schematics and Diagrams |
| description | Create publication-quality scientific diagrams usi | ## Overview |
| subcategory | quality/accuracy | scientific/general |
| complexity | high | medium |
arboreto
| Field | Disk Value | Registry Value |
|---|---|---|
| name | arboreto | Arboreto |
| description | Infer gene regulatory networks (GRNs) from gene ex | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | medium |
geniml
| Field | Disk Value | Registry Value |
|---|---|---|
| name | geniml | Geniml: Genomic Interval Machine Learning |
| description | This skill should be used when working with genomi | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
geopandas
| Field | Disk Value | Registry Value |
|---|---|---|
| name | geopandas | GeoPandas |
| description | Python library for working with geospatial vector | GeoPandas extends pandas to enable spatial operati |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | low |
seaborn
| Field | Disk Value | Registry Value |
|---|---|---|
| name | seaborn | Seaborn Statistical Visualization |
| description | Statistical visualization. Scatter, box, violin, h | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
deeptools
| Field | Disk Value | Registry Value |
|---|---|---|
| name | deeptools | deepTools: NGS Data Analysis Toolkit |
| description | NGS analysis toolkit. BAM to bigWig conversion, QC | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | medium |
protocolsio-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | protocolsio-integration | Protocols.io Integration |
| description | Integration with protocols.io API for managing sci | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
medchem
| Field | Disk Value | Registry Value |
|---|---|---|
| name | medchem | Medchem |
| description | Medicinal chemistry filters. Apply drug-likeness r | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
fluidsim
| Field | Disk Value | Registry Value |
|---|---|---|
| name | fluidsim | FluidSim |
| description | Framework for computational fluid dynamics simulat | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
pymatgen
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pymatgen | Pymatgen |
| description | Materials science toolkit. Crystal structures (CIF | ## Overview |
| subcategory | general | scientific/general |
molfeat
| Field | Disk Value | Registry Value |
|---|---|---|
| name | molfeat | Molfeat |
| description | Molecular featurization for ML (100+ featurizers). | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
geo-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | geo-database | GEO Database |
| description | Access NCBI GEO for gene expression/genomics data. | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
citation-management
| Field | Disk Value | Registry Value |
|---|---|---|
| name | citation-management | Citation Management |
| description | Comprehensive citation management for academic res | ## Overview |
| subcategory | research/pubmed | scientific/general |
scientific-critical-thinking
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scientific-critical-thinking | Scientific Critical Thinking |
| description | Evaluate research rigor. Assess methodology, exper | ## Overview |
| subcategory | quality/accuracy | scientific/general |
| complexity | high | low |
pydicom
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pydicom | Pydicom |
| description | Python library for working with DICOM (Digital Ima | ## Overview |
| subcategory | visual/images | scientific/general |
markitdown
| Field | Disk Value | Registry Value |
|---|---|---|
| name | markitdown | MarkItDown |
| description | Convert files and office documents to Markdown. Su | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
hmdb-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | hmdb-database | HMDB Database |
| description | Access Human Metabolome Database (220K+ metabolite | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
pytdc
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pytdc | PyTDC (Therapeutics Data Commons) |
| description | Therapeutics Data Commons. AI-ready drug discovery | ## Overview |
| subcategory | research/rag | scientific/general |
histolab
| Field | Disk Value | Registry Value |
|---|---|---|
| name | histolab | Histolab |
| description | Digital pathology image processing toolkit for who | ## Overview |
| subcategory | content-creation/visual | scientific/general |
| complexity | high | low |
clinvar-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | clinvar-database | ClinVar Database |
| description | Query NCBI ClinVar for variant clinical significan | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
pubchem-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pubchem-database | PubChem Database |
| description | Query PubChem via PUG-REST API/PubChemPy (110M+ co | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
drugbank-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | drugbank-database | DrugBank Database |
| description | Access and analyze comprehensive drug information | ## Overview |
| subcategory | quality/voice | scientific/general |
| complexity | high | medium |
cobrapy
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cobrapy | COBRApy |
| description | Constraint-based metabolic modeling (COBRA). FBA, | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | low |
opentrons-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | opentrons-integration | Opentrons Integration |
| description | Lab automation platform for Flex/OT-2 robots. Writ | ## Overview |
| subcategory | utilities/automation | scientific/general |
brenda-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | brenda-database | BRENDA Database |
| description | Access BRENDA enzyme database via SOAP API. Retrie | ## Overview |
| subcategory | research/pubmed | scientific/general |
fda-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | fda-database | FDA Database Access |
| description | Query openFDA API for drugs, devices, adverse even | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | medium |
biopython
| Field | Disk Value | Registry Value |
|---|---|---|
| name | biopython | Biopython: Computational Molecular Biology in Pyth |
| description | Primary Python toolkit for molecular biology. Pref | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | low |
gtars
| Field | Disk Value | Registry Value |
|---|---|---|
| name | gtars | Gtars: Genomic Tools and Algorithms in Rust |
| description | High-performance toolkit for genomic interval anal | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
scvi-tools
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scvi-tools | scvi |
| description | This skill should be used when working with single | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
lamindb
| Field | Disk Value | Registry Value |
|---|---|---|
| name | lamindb | LaminDB |
| description | This skill should be used when working with LaminD | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
pptx-posters
| Field | Disk Value | Registry Value |
|---|---|---|
| name | latex-posters | LaTeX Research Posters |
| description | Create professional research posters in LaTeX usin | ## Overview |
| subcategory | content-creation/twitter | scientific/general |
| complexity | high | low |
datamol
| Field | Disk Value | Registry Value |
|---|---|---|
| name | datamol | Datamol Cheminformatics Skill |
| description | Pythonic wrapper around RDKit with simplified inte | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
research-grants
| Field | Disk Value | Registry Value |
|---|---|---|
| name | research-grants | Research Grant Writing |
| description | Write competitive research proposals for NSF, NIH, | ## Overview |
| subcategory | quality/accuracy | scientific/general |
| complexity | high | low |
ensembl-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | ensembl-database | Ensembl Database |
| description | Query Ensembl genome database REST API for 250+ sp | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | medium |
treatment-plans
| Field | Disk Value | Registry Value |
|---|---|---|
| name | treatment-plans | Treatment Plan Writing |
| description | Generate concise (3-4 page), focused medical treat | ## Overview |
| subcategory | quality/accuracy | scientific/general |
plotly
| Field | Disk Value | Registry Value |
|---|---|---|
| name | plotly | Plotly |
| description | Interactive scientific and statistical data visual | Python graphing library for creating interactive, |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
statistical-analysis
| Field | Disk Value | Registry Value |
|---|---|---|
| name | statistical-analysis | Statistical Analysis |
| description | Statistical analysis toolkit. Hypothesis tests (t- | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | medium |
denario
| Field | Disk Value | Registry Value |
|---|---|---|
| name | denario | Denario |
| description | Multiagent AI system for scientific research assis | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
matchms
| Field | Disk Value | Registry Value |
|---|---|---|
| name | matchms | Matchms |
| description | Mass spectrometry analysis. Process mzML/MGF/MSP, | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
scientific-writing
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scientific-writing | Scientific Writing |
| description | Core skill for the deep research and writing tool. | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
clinical-decision-support
| Field | Disk Value | Registry Value |
|---|---|---|
| name | clinical-decision-support | Clinical Decision Support Documents |
| description | Generate professional clinical decision support (C | ## Description |
| subcategory | content-creation/youtube | scientific/general |
diffdock
| Field | Disk Value | Registry Value |
|---|---|---|
| name | diffdock | DiffDock: Molecular Docking with Diffusion Models |
| description | Diffusion-based molecular docking. Predict protein | ## Overview |
| subcategory | analysis/ml | scientific/general |
neurokit2
| Field | Disk Value | Registry Value |
|---|---|---|
| name | neurokit2 | NeuroKit2 |
| description | Comprehensive biosignal processing toolkit for ana | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
clinpgx-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | clinpgx-database | ClinPGx Database |
| description | Access ClinPGx pharmacogenomics data (successor to | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
pydeseq2
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pydeseq2 | PyDESeq2 |
| description | Differential gene expression analysis (Python DESe | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
gwas-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | gwas-database | GWAS Catalog Database |
| description | Query NHGRI-EBI GWAS Catalog for SNP-trait associa | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | low |
bioservices
| Field | Disk Value | Registry Value |
|---|---|---|
| name | bioservices | BioServices |
| description | Primary Python tool for 40+ bioinformatics service | ## Overview |
| subcategory | general | scientific/general |
scikit-bio
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scikit-bio | scikit |
| description | Biological data toolkit. Sequence analysis, alignm | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | low |
gget
| Field | Disk Value | Registry Value |
|---|---|---|
| description | CLI/Python toolkit for rapid bioinformatics querie | ## Overview |
| subcategory | general | scientific/general |
string-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | string-database | STRING Database |
| description | Query STRING API for protein-protein interactions | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | medium |
literature-review
| Field | Disk Value | Registry Value |
|---|---|---|
| name | literature-review | Literature Review |
| description | Conduct comprehensive, systematic literature revie | ## Overview |
| subcategory | research/pubmed | scientific/general |
pyhealth
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pyhealth | PyHealth: Healthcare AI Toolkit |
| description | Comprehensive healthcare AI toolkit for developing | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | low |
qutip
| Field | Disk Value | Registry Value |
|---|---|---|
| name | qutip | QuTiP: Quantum Toolbox in Python |
| description | Quantum mechanics simulations and analysis using Q | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
transformers
| Field | Disk Value | Registry Value |
|---|---|---|
| name | transformers | Transformers |
| description | This skill should be used when working with pre-tr | ## Overview |
| subcategory | visual/images | scientific/general |
scholar-evaluation
| Field | Disk Value | Registry Value |
|---|---|---|
| subcategory | research/pubmed | scientific/general |
| complexity | high | medium |
cirq
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cirq | Cirq |
| description | Quantum computing framework for building, simulati | Cirq is Google Quantum AI's open-source framework |
| subcategory | general | scientific/general |
| complexity | high | low |
uniprot-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | uniprot-database | UniProt Database |
| description | Direct REST API access to UniProt. Protein searche | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
market-research-reports
| Field | Disk Value | Registry Value |
|---|---|---|
| name | market-research-reports | Market Research Reports |
| description | Generate comprehensive market research reports (50 | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | medium |
torch_geometric
| Field | Disk Value | Registry Value |
|---|---|---|
| name | torch-geometric | PyTorch Geometric (PyG) |
| description | Graph Neural Networks (PyG). Node/graph classifica | ## Overview |
| subcategory | analysis/ml | scientific/general |
deepchem
| Field | Disk Value | Registry Value |
|---|---|---|
| name | deepchem | DeepChem |
| description | Molecular machine learning toolkit. Property predi | ## Overview |
| subcategory | analysis/ml | scientific/general |
reactome-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | reactome-database | Reactome Database |
| description | Query Reactome REST API for pathway analysis, enri | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
pathml
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pathml | PathML |
| description | Computational pathology toolkit for analyzing whol | ## Overview |
| subcategory | content-creation/visual | scientific/general |
| complexity | high | low |
omero-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | omero-integration | OMERO Integration |
| description | Microscopy data management platform. Access images | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
latex-posters
| Field | Disk Value | Registry Value |
|---|---|---|
| name | latex-posters | LaTeX Research Posters |
| description | Create professional research posters in LaTeX usin | ## Overview |
| subcategory | content-creation/twitter | scientific/general |
| complexity | high | low |
zarr-python
| Field | Disk Value | Registry Value |
|---|---|---|
| name | zarr-python | Zarr Python |
| description | Chunked N-D arrays for cloud storage. Compressed a | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
simpy
| Field | Disk Value | Registry Value |
|---|---|---|
| name | simpy | SimPy |
| description | Process-based discrete-event simulation framework | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
biomni
| Field | Disk Value | Registry Value |
|---|---|---|
| name | biomni | Biomni |
| description | Autonomous biomedical AI agent framework for execu | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | medium |
pyopenms
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pyopenms | PyOpenMS |
| description | Python interface to OpenMS for mass spectrometry d | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | low |
pysam
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pysam | Pysam |
| description | Genomic file toolkit. Read/write SAM/BAM/CRAM alig | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
matplotlib
| Field | Disk Value | Registry Value |
|---|---|---|
| name | matplotlib | Matplotlib |
| description | Foundational plotting library. Create line plots, | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | medium |
adaptyv
| Field | Disk Value | Registry Value |
|---|---|---|
| name | adaptyv | Adaptyv |
| description | Cloud laboratory platform for automated protein te | Adaptyv is a cloud laboratory platform that provid |
| subcategory | quality/voice | scientific/general |
venue-templates
| Field | Disk Value | Registry Value |
|---|---|---|
| name | venue-templates | Venue Templates |
| description | Access comprehensive LaTeX templates, formatting r | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
pytorch-lightning
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pytorch-lightning | PyTorch Lightning |
| description | Deep learning framework (PyTorch Lightning). Organ | ## Overview |
| subcategory | research/rag | scientific/general |
clinical-reports
| Field | Disk Value | Registry Value |
|---|---|---|
| name | clinical-reports | Clinical Report Writing |
| description | Write comprehensive clinical reports including cas | ## Overview |
| subcategory | general | scientific/general |
scientific-slides
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scientific-slides | Scientific Slides |
| description | Build slide decks and presentations for research t | ## Overview |
| subcategory | content-creation/visual | scientific/general |
scientific-visualization
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scientific-visualization | Scientific Visualization |
| description | Create publication figures with matplotlib/seaborn | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | medium |
hypogenic
| Field | Disk Value | Registry Value |
|---|---|---|
| name | hypogenic | Hypogenic |
| description | Automated hypothesis generation and testing using | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | low |
openalex-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | openalex-database | OpenAlex Database |
| description | Query and analyze scholarly literature using the O | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | medium |
generate-image
| Field | Disk Value | Registry Value |
|---|---|---|
| name | generate-image | Generate Image |
| description | Generate or edit images using AI models (FLUX, Gem | Generate and edit high-quality images using OpenRo |
| subcategory | visual/images | scientific/general |
| complexity | high | medium |
torchdrug
| Field | Disk Value | Registry Value |
|---|---|---|
| name | torchdrug | TorchDrug |
| description | Graph-based drug discovery toolkit. Molecular prop | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
hypothesis-generation
| Field | Disk Value | Registry Value |
|---|---|---|
| name | hypothesis-generation | Scientific Hypothesis Generation |
| description | Generate testable hypotheses. Formulate from obser | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | low |
flowio
| Field | Disk Value | Registry Value |
|---|---|---|
| name | flowio | FlowIO: Flow Cytometry Standard File Handler |
| description | Parse FCS (Flow Cytometry Standard) files v2.0-3.1 | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
datacommons-client
| Field | Disk Value | Registry Value |
|---|---|---|
| name | datacommons-client | Data Commons Client |
| description | Work with Data Commons, a platform providing progr | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
rdkit
| Field | Disk Value | Registry Value |
|---|---|---|
| name | rdkit | RDKit Cheminformatics Toolkit |
| description | Cheminformatics toolkit for fine-grained molecular | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
stable-baselines3
| Field | Disk Value | Registry Value |
|---|---|---|
| name | stable-baselines3 | Stable Baselines3 |
| description | Use this skill for reinforcement learning tasks in | ## Overview |
| subcategory | general | scientific/general |
pylabrobot
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pylabrobot | PyLabRobot |
| description | Laboratory automation toolkit for controlling liqu | ## Overview |
| subcategory | utilities/automation | scientific/general |
| complexity | high | low |
aeon
| Field | Disk Value | Registry Value |
|---|---|---|
| name | aeon | Aeon Time Series Machine Learning |
| description | This skill should be used for time series machine | ## Overview |
| subcategory | analysis/ml | scientific/general |
| complexity | high | low |
modal
| Field | Disk Value | Registry Value |
|---|---|---|
| name | modal | Modal |
| description | Run Python code in the cloud with serverless conta | ## Overview |
| subcategory | utilities/automation | scientific/general |
| complexity | high | low |
pubmed-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pubmed-database | PubMed Database |
| description | Direct REST API access to PubMed. Advanced Boolean | 35M+ biomedical articles via NCBI E-utilities API |
| subcategory | research/pubmed | databases/clinical |
| complexity | high | medium |
polars
| Field | Disk Value | Registry Value |
|---|---|---|
| name | polars | Polars |
| description | Fast DataFrame library (Apache Arrow). Select, fil | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
statsmodels
| Field | Disk Value | Registry Value |
|---|---|---|
| name | statsmodels | Statsmodels: Statistical Modeling and Econometrics |
| description | Statistical modeling toolkit. OLS, GLM, logistic, | ## Overview |
| subcategory | analysis/statistics | scientific/general |
| complexity | high | low |
scanpy
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scanpy | Scanpy |
| description | Single-cell RNA-seq analysis. Load .h5ad/10X data, | Single-cell RNA-seq analysis with Leiden clusterin |
| subcategory | visual/images | analysis/bioinformatics |
| has_scripts | True | (none) |
| scripts (added) | ['qc_analysis.py'] | (none) |
astropy
| Field | Disk Value | Registry Value |
|---|---|---|
| name | astropy | Astropy |
| description | Comprehensive Python library for astronomy and ast | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | low |
chembl-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | chembl-database | ChEMBL Database |
| description | Query ChEMBL's bioactive molecules and drug discov | 2M+ bioactive molecules with IC50/Ki data |
| subcategory | general | databases/chemicals |
| has_scripts | True | (none) |
| complexity | high | medium |
| scripts (added) | ['example_queries.py'] | (none) |
clinicaltrials-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | clinicaltrials-database | ClinicalTrials.gov Database |
| description | Query ClinicalTrials.gov via API v2. Search trials | ## Overview |
| subcategory | quality/voice | scientific/general |
| complexity | high | medium |
ena-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | ena-database | ENA Database |
| description | Access European Nucleotide Archive via API/FTP. Re | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
pennylane
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pennylane | PennyLane |
| description | Cross-platform Python library for quantum computin | ## Overview |
| subcategory | utilities/automation | scientific/general |
| complexity | high | low |
pufferlib
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pufferlib | PufferLib |
| description | This skill should be used when working with reinfo | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | medium |
pymoo
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pymoo | Pymoo |
| description | Multi-objective optimization framework. NSGA-II, N | ## Overview |
| subcategory | general | scientific/general |
dnanexus-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | dnanexus-integration | DNAnexus Integration |
| description | DNAnexus cloud genomics platform. Build apps/apple | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
pdb-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | pdb-database | PDB Database |
| description | Access RCSB PDB for 3D protein/nucleic acid struct | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
opentargets-database
| Field | Disk Value | Registry Value |
|---|---|---|
| name | opentargets-database | Open Targets Database |
| description | Query Open Targets Platform for target-disease ass | ## Overview |
| subcategory | research/pubmed | scientific/general |
| complexity | high | medium |
scikit-learn
| Field | Disk Value | Registry Value |
|---|---|---|
| name | scikit-learn | Scikit |
| description | Machine learning in Python with scikit-learn. Use | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | medium |
etetoolkit
| Field | Disk Value | Registry Value |
|---|---|---|
| name | etetoolkit | ETE Toolkit Skill |
| description | Phylogenetic tree toolkit (ETE). Tree manipulation | ## Overview |
| subcategory | visual/images | scientific/general |
| complexity | high | medium |
labarchive-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | labarchive-integration | LabArchives Integration |
| description | Electronic lab notebook API integration. Access no | ## Overview |
| subcategory | utilities/automation | scientific/general |
peer-review
| Field | Disk Value | Registry Value |
|---|---|---|
| name | peer-review | Scientific Critical Evaluation and Peer Review |
| description | Systematic peer review toolkit. Evaluate methodolo | ## Overview |
| subcategory | content-creation/youtube | scientific/general |
| complexity | high | low |
cellxgene-census
| Field | Disk Value | Registry Value |
|---|---|---|
| name | cellxgene-census | CZ CELLxGENE Census |
| description | Query CZ CELLxGENE Census (61M+ cells). Filter by | ## Overview |
| subcategory | general | scientific/general |
| complexity | high | low |
latchbio-integration
| Field | Disk Value | Registry Value |
|---|---|---|
| name | latchbio-integration | LatchBio Integration |
| description | Latch platform for bioinformatics workflows. Build | ## Overview |
| subcategory | research/rag | scientific/general |
| complexity | high | low |
---
Actions
This was a dry run. No changes were made.
To apply changes, run:
python sync_skills.py --updateGap Patterns - Recognizing Capability Needs
This document helps identify when the system is encountering a capability gap that should be logged.
Pattern Recognition
Pattern 1: Direct Inability Statement
Signal: Claude explicitly states it cannot do something
Examples:
- "I don't have a skill for analyzing ECG images"
- "This system doesn't support audio transcription"
- "I cannot access real-time stock prices"
Action: Log immediately with the exact capability missing
---
Pattern 2: Manual Workaround Required
Signal: User has to do something manually that should be automated
Examples:
- "Let me manually extract this data and paste it..."
- "You'll need to download this yourself and then..."
- "Can you copy the text from the PDF first?"
Action: Log the automation opportunity
---
Pattern 3: External Tool Redirect
Signal: Pointing user to external tools/services
Examples:
- "You'll need to use Canva for this"
- "Try using [external service] for that"
- "That would require a specialized tool like..."
Action: Log if the capability could reasonably be built internally
---
Pattern 4: Repeated Similar Requests
Signal: Same type of request appears multiple times
Examples:
- 3rd request for "ECG interpretation" this week
- Multiple users asking about "podcast transcription"
- Recurring need for "competitor analysis"
Action: Log with frequency indicator; high-priority gap
---
Pattern 5: Wishful Thinking
Signal: User expresses desire for capability
Examples:
- "I wish the system could automatically..."
- "It would be great if we could..."
- "Can you imagine if this could...?"
Action: Log as user-requested feature
---
Pattern 6: Workflow Interruption
Signal: User has to leave the system mid-task
Examples:
- "I'll need to do this in Excel and come back"
- "Let me check this in another tool"
- "I have to switch to [other app] for this step"
Action: Log the workflow continuity gap
---
Pattern 7: Approximation or Workaround
Signal: Providing an imperfect solution
Examples:
- "I can approximate this by..."
- "A workaround would be to..."
- "While I can't do X directly, I can do Y..."
Action: Log the ideal capability vs. the workaround
---
Pattern 8: Feature Comparison Gap
Signal: Comparing to competitor or desired state
Examples:
- "ChatGPT can do this but..."
- "In [other tool], you can..."
- "The ideal would be..."
Action: Log the competitive gap
---
Gap Categories
Content Creation Gaps
- New content formats (podcasts, video scripts, courses)
- New platforms (TikTok, LinkedIn, Substack)
- New voices or styles
Research Gaps
- New data sources (databases, APIs)
- New analysis types
- Real-time data needs
Visual Gaps
- New image types
- Interactive graphics
- Video editing
Integration Gaps
- API connections
- Data import/export
- Workflow automation
Analysis Gaps
- New metrics
- ML/AI capabilities
- Complex calculations
Quality Gaps
- Review processes
- Validation checks
- Compliance needs
---
Urgency Assessment
Critical (Address This Week)
- Blocks primary workflows
- Multiple users affected
- No workaround exists
High (Address This Month)
- Significant workflow friction
- Workaround is time-consuming
- Requested 3+ times
Medium (Address This Quarter)
- Nice to have
- Workaround exists
- Requested 1-2 times
Low (Backlog)
- Edge case
- Easy workaround
- Single request
---
Gap Logging Triggers for Claude
When you (Claude) encounter these situations, log a gap:
Automatic Triggers
1. You say "I can't" or "I don't have" 2. You suggest an external tool 3. User says "I wish" or "it would be nice" 4. Same topic comes up 3+ times in a week 5. User expresses frustration about capability
Manual Triggers
1. End of complex session with unmet needs 2. New industry trend or tool emerges 3. User compares to competitor capability 4. Workflow requires multiple tools
---
Gap Documentation Template
When logging a gap, include:
Request: [What was asked for]
Context: [The situation/workflow]
Category: [content-creation/research/visual/etc.]
Urgency: [critical/high/medium/low]
Potential Skill: [Suggested name]
Similar Existing: [Any related skills]---
Weekly Gap Review Process
1. Monday Morning Review
- Run
python gap_analyzer.py --report - Identify high-priority gaps
2. Pattern Detection
- Look for keyword clusters
- Check for frequency spikes
3. Proposal Generation
- Create proposals for top 3 gaps
- Review with skill templates
4. Decision Making
- Approve/defer/reject proposals
- Update backlog
5. Communication
- Log decisions
- Update gap statuses
---
Reference for recognizing and documenting capability gaps.
Skill Anatomy - What Makes a Good Skill
This document defines the structure and qualities of well-designed skills in the integrated cowriting system.
Skill Complexity Tiers
Tier 1: Documentation-Only Skills
Structure:
skill-name/
├── SKILL.md # Main documentation
└── references/ # Optional reference files
└── guide.mdCharacteristics:
- Prompt engineering only
- No code execution
- Claude follows instructions from SKILL.md
- Examples:
authentic-voice,content-reflection
Tier 2: Reference-Enhanced Skills
Structure:
skill-name/
├── SKILL.md
├── references/
│ ├── examples.md # Example outputs
│ ├── framework.md # Structured approach
│ └── templates.md # Reusable templates
└── assets/ # Optional static assets
└── template.mdCharacteristics:
- Rich documentation with examples
- Structured frameworks and templates
- Still prompt-based, no scripts
- Examples:
x-post-creator-skill,cardiology-tweet-writer
Tier 3: Script-Enhanced Skills
Structure:
skill-name/
├── SKILL.md
├── scripts/
│ ├── main_script.py # Primary functionality
│ └── helper.py # Supporting utilities
├── references/
│ └── api-docs.md
└── data/ # Optional data files
└── config.jsonCharacteristics:
- Python scripts for computation
- May call external APIs
- Processing logic beyond prompts
- Examples:
viral-content-predictor,cardiology-trial-editorial
Tier 4: Full Pipeline Skills
Structure:
skill-name/
├── SKILL.md
├── scripts/
│ ├── pipeline.py
│ ├── fetcher.py
│ ├── processor.py
│ └── output.py
├── references/
├── assets/
├── data/
│ ├── config.json
│ └── templates/
└── output/ # Generated outputsCharacteristics:
- Multi-stage processing
- Multiple scripts working together
- Data persistence
- Examples:
knowledge-pipeline,cardiology-visual-system
---
Essential SKILL.md Sections
Every skill should have these sections:
1. Header & Purpose (Required)
# Skill Name
> One-line description
## Purpose
What problem does this solve? Who benefits?2. Quick Start (Required)
## Quick Start
Show the simplest way to use this skill in 3 lines or less.3. Inputs & Outputs (Required)
## Inputs
- What data/information does this need?
## Outputs
- What does this produce?4. Use Cases (Recommended)
## Use Cases
1. Primary scenario
2. Secondary scenario5. Examples (Recommended)
## Examples
Concrete input → output examples6. Best Practices (Optional)
## Best Practices
Tips for getting the best results---
Quality Checklist
Before deploying a skill, verify:
Clarity
- [ ] Purpose is clear in first 2 sentences
- [ ] Quick start works as documented
- [ ] Examples are realistic and helpful
Completeness
- [ ] All inputs are documented
- [ ] All outputs are documented
- [ ] Dependencies are listed
Usability
- [ ] Can be used without reading entire document
- [ ] Error cases are handled or noted
- [ ] Edge cases are addressed
Maintainability
- [ ] No hardcoded values that will become stale
- [ ] References are version-appropriate
- [ ] Scripts have error handling
---
Naming Conventions
Skill Names
- Use kebab-case:
cardiology-tweet-writer - Be specific:
youtube-script-masternotscript-writer - Include domain:
cardiology-prefix for cardiology skills
File Names
- SKILL.md (always uppercase)
- References: lowercase with hyphens
- Scripts: lowercase with underscores
Categories
Standard categories:
content-creation- Creating contentresearch- Finding informationanalysis- Processing datavisual- Generating graphicsquality- Review and refinementutilities- Supporting tools
---
Anti-Patterns to Avoid
1. The Kitchen Sink
❌ One skill that does everything ✅ Focused skills that do one thing well
2. The Orphan
❌ Skill with no examples or use cases ✅ Clear scenarios showing when to use
3. The Black Box
❌ Vague inputs/outputs without types ✅ Specific, documented data contracts
4. The Stale Reference
❌ Outdated URLs, versions, or examples ✅ Timeless or regularly updated content
5. The Dependency Hell
❌ Skill that requires 10 other skills ✅ Minimal, well-documented dependencies
---
Evolution Patterns
Growth Path
Documentation-Only → Reference-Enhanced → Script-EnhancedSplit Pattern
When a skill gets too complex, split it:
mega-skill → core-skill + helper-skill + advanced-skillMerge Pattern
When skills overlap, merge them:
skill-a + skill-b → unified-skill---
Reference for creating and evaluating skills in the integrated cowriting system.
#!/usr/bin/env python3
"""
Gap Analyzer - Analyzes patterns in logged gaps and prioritizes skill needs.
Usage:
python gap_analyzer.py --list # List all gaps
python gap_analyzer.py --analyze # Analyze patterns
python gap_analyzer.py --report # Generate priority report
python gap_analyzer.py --top 5 # Show top 5 priority gaps
"""
import json
import os
import argparse
from datetime import datetime, timedelta
from pathlib import Path
from collections import Counter, defaultdict
from typing import Optional
# Paths
SCRIPT_DIR = Path(__file__).parent.parent
DATA_DIR = SCRIPT_DIR / "data"
GAP_LOG_PATH = DATA_DIR / "gap-log.json"
BACKLOG_PATH = DATA_DIR / "skill-backlog.json"
REGISTRY_PATH = DATA_DIR / "capability-registry.json"
def load_json(path: Path) -> dict:
"""Load JSON file or return empty structure."""
if path.exists():
with open(path, 'r') as f:
return json.load(f)
return {}
def save_json(path: Path, data: dict) -> None:
"""Save data to JSON file."""
path.parent.mkdir(parents=True, exist_ok=True)
with open(path, 'w') as f:
json.dump(data, f, indent=2)
def calculate_priority_score(gap: dict) -> float:
"""
Calculate priority score for a gap.
Factors:
- Frequency (how often requested): 0-40 points
- Urgency level: 0-30 points
- Recency (recent requests matter more): 0-20 points
- Category (some categories are more important): 0-10 points
"""
score = 0.0
# Frequency score (40 points max)
frequency = gap.get("frequency", 1)
score += min(frequency * 10, 40)
# Urgency score (30 points max)
urgency_scores = {
"critical": 30,
"high": 20,
"medium": 10,
"low": 5
}
score += urgency_scores.get(gap.get("urgency", "medium"), 10)
# Recency score (20 points max)
try:
last_seen = datetime.fromisoformat(gap.get("last_seen", gap.get("timestamp", "")))
days_ago = (datetime.now() - last_seen).days
recency_score = max(0, 20 - days_ago * 2) # Lose 2 points per day
score += recency_score
except (ValueError, TypeError):
score += 10 # Default if date parsing fails
# Category importance (10 points max)
category_scores = {
"medical-imaging": 10, # High priority for medical domain
"research": 9,
"content-creation": 8,
"analysis": 8,
"quality": 7,
"automation": 6,
"visual": 6,
"data-extraction": 5,
"integration": 5,
"audio-video": 5,
"other": 3
}
score += category_scores.get(gap.get("category", "other"), 3)
return round(score, 1)
def detect_patterns(gaps: list) -> dict:
"""Detect patterns in gaps to identify themes."""
patterns = {
"by_category": Counter(),
"by_urgency": Counter(),
"high_frequency": [],
"keyword_clusters": defaultdict(list),
"recent_surge": [],
"stale": []
}
# Common keywords to look for
keyword_themes = {
"image": ["image", "photo", "visual", "picture", "scan"],
"audio": ["audio", "voice", "speech", "sound", "podcast"],
"data": ["data", "extract", "parse", "scrape", "download"],
"analysis": ["analyze", "calculate", "compare", "statistics"],
"integration": ["api", "connect", "integrate", "sync"],
"automation": ["automate", "schedule", "batch", "workflow"]
}
now = datetime.now()
week_ago = now - timedelta(days=7)
for gap in gaps:
# Category distribution
patterns["by_category"][gap.get("category", "other")] += 1
# Urgency distribution
patterns["by_urgency"][gap.get("urgency", "medium")] += 1
# High frequency gaps
if gap.get("frequency", 1) >= 3:
patterns["high_frequency"].append({
"id": gap["id"],
"request": gap["request"],
"frequency": gap["frequency"]
})
# Keyword clustering
request_lower = gap["request"].lower()
for theme, keywords in keyword_themes.items():
if any(kw in request_lower for kw in keywords):
patterns["keyword_clusters"][theme].append(gap["id"])
# Recent surge (multiple requests in last week)
try:
last_seen = datetime.fromisoformat(gap.get("last_seen", gap.get("timestamp", "")))
if last_seen >= week_ago and gap.get("frequency", 1) >= 2:
patterns["recent_surge"].append({
"id": gap["id"],
"request": gap["request"],
"frequency": gap["frequency"]
})
except (ValueError, TypeError):
pass
# Stale gaps (older than 30 days, not addressed)
try:
created = datetime.fromisoformat(gap.get("timestamp", ""))
if (now - created).days > 30 and gap.get("status") == "open":
patterns["stale"].append({
"id": gap["id"],
"request": gap["request"],
"days_old": (now - created).days
})
except (ValueError, TypeError):
pass
return patterns
def generate_recommendations(gaps: list, patterns: dict) -> list:
"""Generate actionable recommendations based on analysis."""
recommendations = []
# High frequency gaps should become skills
for gap in patterns["high_frequency"]:
recommendations.append({
"priority": "high",
"action": "build_skill",
"gap_id": gap["id"],
"reason": f"Requested {gap['frequency']} times",
"suggested_name": gap["request"][:30] + "..."
})
# Keyword clusters suggest unified skills
for theme, gap_ids in patterns["keyword_clusters"].items():
if len(gap_ids) >= 2:
recommendations.append({
"priority": "medium",
"action": "build_unified_skill",
"theme": theme,
"gap_count": len(gap_ids),
"reason": f"{len(gap_ids)} related gaps around '{theme}'"
})
# Stale gaps need decision
for gap in patterns["stale"]:
recommendations.append({
"priority": "low",
"action": "decide",
"gap_id": gap["id"],
"reason": f"Open for {gap['days_old']} days without action"
})
return recommendations
def list_gaps(gaps: list, limit: int = None, status: str = None) -> None:
"""Print formatted list of gaps."""
filtered = gaps
if status:
filtered = [g for g in gaps if g.get("status") == status]
if limit:
filtered = filtered[-limit:]
print(f"\n📋 Capability Gaps ({len(filtered)} shown, {len(gaps)} total)")
print("=" * 80)
for gap in filtered:
score = calculate_priority_score(gap)
print(f"\n [{gap['id']}]")
print(f" 📝 {gap['request']}")
print(f" Category: {gap.get('category', 'N/A')} | Urgency: {gap.get('urgency', 'N/A')} | Freq: {gap.get('frequency', 1)}")
print(f" Priority Score: {score}/100 | Status: {gap.get('status', 'open')}")
if gap.get("potential_skill"):
print(f" 💡 Potential Skill: {gap['potential_skill']}")
print("\n" + "=" * 80)
def show_report(gaps: list, patterns: dict, recommendations: list) -> None:
"""Display comprehensive analysis report."""
print("\n" + "=" * 80)
print(" 📊 SYSTEM AWARENESS REPORT")
print("=" * 80)
# Summary stats
print(f"\n📈 Summary")
print(f" Total Gaps: {len(gaps)}")
print(f" Open: {sum(1 for g in gaps if g.get('status') == 'open')}")
print(f" High Frequency (3+): {len(patterns['high_frequency'])}")
print(f" Recent Surge: {len(patterns['recent_surge'])}")
print(f" Stale (30+ days): {len(patterns['stale'])}")
# Category distribution
print(f"\n📂 By Category")
for cat, count in patterns["by_category"].most_common():
bar = "█" * min(count * 2, 20)
print(f" {cat:20} {bar} ({count})")
# Urgency distribution
print(f"\n⚡ By Urgency")
for urg, count in patterns["by_urgency"].most_common():
bar = "█" * min(count * 2, 20)
print(f" {urg:20} {bar} ({count})")
# Top priority gaps
print(f"\n🎯 Top 5 Priority Gaps")
scored = [(g, calculate_priority_score(g)) for g in gaps if g.get("status") == "open"]
scored.sort(key=lambda x: x[1], reverse=True)
for gap, score in scored[:5]:
print(f" [{score:5.1f}] {gap['request'][:50]}...")
print(f" → Potential: {gap.get('potential_skill', 'N/A')}")
# Recommendations
if recommendations:
print(f"\n💡 Recommendations ({len(recommendations)})")
for rec in recommendations[:5]:
icon = {"high": "🔴", "medium": "🟡", "low": "🟢"}.get(rec["priority"], "⚪")
print(f" {icon} [{rec['priority'].upper()}] {rec['action']}")
print(f" Reason: {rec['reason']}")
# Keyword themes
if any(len(ids) >= 2 for ids in patterns["keyword_clusters"].values()):
print(f"\n🔗 Emerging Themes (2+ related gaps)")
for theme, gap_ids in patterns["keyword_clusters"].items():
if len(gap_ids) >= 2:
print(f" {theme}: {len(gap_ids)} related gaps")
print("\n" + "=" * 80)
print("Run 'python skill_proposer.py --gap-id <ID>' to create a skill proposal")
print("=" * 80 + "\n")
def update_backlog(gaps: list, patterns: dict) -> None:
"""Update the skill backlog with prioritized gaps."""
backlog = load_json(BACKLOG_PATH)
if "metadata" not in backlog:
backlog["metadata"] = {"created": datetime.now().isoformat()}
if "backlog" not in backlog:
backlog["backlog"] = []
# Get existing backlog IDs
existing_ids = {item["gap_id"] for item in backlog["backlog"]}
# Add high-priority gaps to backlog
scored = [(g, calculate_priority_score(g)) for g in gaps if g.get("status") == "open"]
scored.sort(key=lambda x: x[1], reverse=True)
for gap, score in scored:
if score >= 40 and gap["id"] not in existing_ids: # Threshold for backlog
backlog["backlog"].append({
"id": f"backlog_{datetime.now().strftime('%Y%m%d%H%M%S')}",
"gap_id": gap["id"],
"proposed_skill": gap.get("potential_skill", "unnamed"),
"priority_score": score,
"category": gap.get("category"),
"status": "pending_review",
"added_date": datetime.now().isoformat()
})
backlog["metadata"]["last_updated"] = datetime.now().isoformat()
save_json(BACKLOG_PATH, backlog)
print(f"✅ Backlog updated with {len(backlog['backlog'])} items")
def main():
parser = argparse.ArgumentParser(
description="Analyze capability gaps and prioritize skill needs"
)
parser.add_argument("--list", "-l", action="store_true", help="List all gaps")
parser.add_argument("--analyze", "-a", action="store_true", help="Analyze patterns")
parser.add_argument("--report", "-r", action="store_true", help="Generate full report")
parser.add_argument("--top", "-t", type=int, help="Show top N priority gaps")
parser.add_argument("--status", "-s", help="Filter by status (open/closed)")
parser.add_argument("--update-backlog", action="store_true", help="Update skill backlog")
args = parser.parse_args()
# Load gaps
gap_data = load_json(GAP_LOG_PATH)
gaps = gap_data.get("gaps", [])
if not gaps:
print("\n📭 No gaps logged yet.")
print("Use 'python gap_logger.py' to log capability gaps.\n")
return
# Default to report if no specific action
if not any([args.list, args.analyze, args.report, args.top, args.update_backlog]):
args.report = True
if args.list:
list_gaps(gaps, status=args.status)
return
# Run analysis
patterns = detect_patterns(gaps)
recommendations = generate_recommendations(gaps, patterns)
if args.top:
print(f"\n🎯 Top {args.top} Priority Gaps")
print("=" * 60)
scored = [(g, calculate_priority_score(g)) for g in gaps if g.get("status") == "open"]
scored.sort(key=lambda x: x[1], reverse=True)
for gap, score in scored[:args.top]:
print(f"\n [{gap['id']}] Score: {score}/100")
print(f" 📝 {gap['request']}")
print(f" 💡 Potential: {gap.get('potential_skill', 'N/A')}")
print("\n" + "=" * 60 + "\n")
return
if args.report or args.analyze:
show_report(gaps, patterns, recommendations)
if args.update_backlog:
update_backlog(gaps, patterns)
if __name__ == "__main__":
main()
#!/usr/bin/env python3
"""
Gap Logger - Records unmet capability needs for the system.
Usage:
python gap_logger.py "I need to analyze ECG images"
python gap_logger.py --request "description" --category "medical-imaging" --urgency "high"
python gap_logger.py --interactive
"""
import json
import os
import argparse
from datetime import datetime
from pathlib import Path
from typing import Optional
import hashlib
# Paths
SCRIPT_DIR = Path(__file__).parent.parent
DATA_DIR = SCRIPT_DIR / "data"
GAP_LOG_PATH = DATA_DIR / "gap-log.json"
# Categories for gap classification
CATEGORIES = [
"content-creation", # New content formats
"research", # Research/data gathering
"analysis", # Data analysis capabilities
"visual", # Image/diagram generation
"medical-imaging", # Medical image analysis
"audio-video", # Audio/video processing
"automation", # Workflow automation
"integration", # External service integration
"data-extraction", # Extracting data from sources
"quality", # Quality/review capabilities
"other" # Uncategorized
]
URGENCY_LEVELS = ["low", "medium", "high", "critical"]
def load_gap_log() -> dict:
"""Load existing gap log or create new one."""
if GAP_LOG_PATH.exists():
with open(GAP_LOG_PATH, 'r') as f:
return json.load(f)
return {
"metadata": {
"created": datetime.now().isoformat(),
"last_updated": datetime.now().isoformat(),
"total_gaps": 0
},
"gaps": []
}
def save_gap_log(data: dict) -> None:
"""Save gap log to file."""
DATA_DIR.mkdir(parents=True, exist_ok=True)
data["metadata"]["last_updated"] = datetime.now().isoformat()
data["metadata"]["total_gaps"] = len(data["gaps"])
with open(GAP_LOG_PATH, 'w') as f:
json.dump(data, f, indent=2)
def generate_gap_id(request: str) -> str:
"""Generate unique gap ID based on timestamp and request hash."""
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
request_hash = hashlib.md5(request.encode()).hexdigest()[:6]
return f"gap_{timestamp}_{request_hash}"
def find_similar_gaps(gaps: list, request: str) -> list:
"""Find gaps with similar requests using simple keyword matching."""
request_words = set(request.lower().split())
similar = []
for gap in gaps:
gap_words = set(gap["request"].lower().split())
overlap = len(request_words & gap_words)
if overlap >= 2: # At least 2 words in common
similar.append(gap["request"])
return similar[:5] # Return top 5 similar
def suggest_category(request: str) -> str:
"""Suggest a category based on keywords in the request."""
request_lower = request.lower()
keyword_map = {
"content-creation": ["write", "create", "script", "post", "article", "blog"],
"research": ["search", "find", "lookup", "research", "papers", "studies"],
"analysis": ["analyze", "analyse", "calculate", "statistics", "compare"],
"visual": ["image", "diagram", "chart", "graph", "infographic", "visual"],
"medical-imaging": ["ecg", "xray", "mri", "ct scan", "ultrasound", "scan"],
"audio-video": ["audio", "video", "podcast", "transcribe", "speech"],
"automation": ["automate", "schedule", "workflow", "batch", "pipeline"],
"integration": ["connect", "integrate", "api", "sync", "import", "export"],
"data-extraction": ["extract", "scrape", "parse", "download", "fetch"],
"quality": ["review", "check", "validate", "verify", "improve"]
}
for category, keywords in keyword_map.items():
if any(kw in request_lower for kw in keywords):
return category
return "other"
def suggest_skill_name(request: str) -> str:
"""Generate a potential skill name from the request."""
# Remove common words
stop_words = {"i", "need", "to", "want", "can", "you", "the", "a", "an", "is", "it", "for", "from", "with"}
words = [w.lower() for w in request.split() if w.lower() not in stop_words]
# Take first 3-4 meaningful words
name_words = words[:4] if len(words) >= 4 else words
# Join with hyphens
return "-".join(name_words) if name_words else "unnamed-skill"
def log_gap(
request: str,
context: Optional[str] = None,
category: Optional[str] = None,
urgency: str = "medium",
source: str = "manual"
) -> dict:
"""Log a new capability gap."""
# Load existing gaps
data = load_gap_log()
# Auto-suggest category if not provided
if category is None:
category = suggest_category(request)
# Find similar existing gaps
similar = find_similar_gaps(data["gaps"], request)
# Check if this exact request already exists
existing = [g for g in data["gaps"] if g["request"].lower() == request.lower()]
if existing:
# Increment frequency instead of creating new
existing[0]["frequency"] += 1
existing[0]["last_seen"] = datetime.now().isoformat()
save_gap_log(data)
return {
"status": "incremented",
"gap_id": existing[0]["id"],
"frequency": existing[0]["frequency"],
"message": f"Gap already exists. Frequency increased to {existing[0]['frequency']}"
}
# Create new gap entry
gap = {
"id": generate_gap_id(request),
"timestamp": datetime.now().isoformat(),
"last_seen": datetime.now().isoformat(),
"request": request,
"context": context,
"category": category,
"urgency": urgency,
"frequency": 1,
"similar_requests": similar,
"potential_skill": suggest_skill_name(request),
"source": source,
"status": "open",
"notes": []
}
data["gaps"].append(gap)
save_gap_log(data)
return {
"status": "logged",
"gap_id": gap["id"],
"category": category,
"potential_skill": gap["potential_skill"],
"similar_count": len(similar),
"message": f"Gap logged successfully: {gap['id']}"
}
def interactive_log():
"""Interactive gap logging mode."""
print("\n🔍 Gap Logger - Interactive Mode")
print("=" * 40)
request = input("\nDescribe what you couldn't do:\n> ").strip()
if not request:
print("❌ Request cannot be empty")
return
context = input("\nProvide additional context (optional, press Enter to skip):\n> ").strip()
context = context if context else None
print(f"\nCategories: {', '.join(CATEGORIES)}")
suggested = suggest_category(request)
category = input(f"Category [{suggested}]: ").strip()
category = category if category in CATEGORIES else suggested
print(f"\nUrgency levels: {', '.join(URGENCY_LEVELS)}")
urgency = input("Urgency [medium]: ").strip()
urgency = urgency if urgency in URGENCY_LEVELS else "medium"
result = log_gap(request, context, category, urgency, source="interactive")
print("\n" + "=" * 40)
print(f"✅ {result['message']}")
print(f" Category: {result.get('category', 'N/A')}")
print(f" Potential Skill: {result.get('potential_skill', 'N/A')}")
if result.get('similar_count', 0) > 0:
print(f" Similar gaps found: {result['similar_count']}")
print("=" * 40 + "\n")
def main():
parser = argparse.ArgumentParser(
description="Log capability gaps for the system awareness module"
)
parser.add_argument(
"request",
nargs="?",
help="Description of what couldn't be done"
)
parser.add_argument(
"--context", "-c",
help="Additional context about the request"
)
parser.add_argument(
"--category", "-cat",
choices=CATEGORIES,
help="Category for the gap"
)
parser.add_argument(
"--urgency", "-u",
choices=URGENCY_LEVELS,
default="medium",
help="Urgency level (default: medium)"
)
parser.add_argument(
"--interactive", "-i",
action="store_true",
help="Interactive logging mode"
)
parser.add_argument(
"--list", "-l",
action="store_true",
help="List recent gaps"
)
args = parser.parse_args()
if args.list:
data = load_gap_log()
print(f"\n📋 Recent Gaps ({len(data['gaps'])} total)")
print("=" * 60)
for gap in data["gaps"][-10:]: # Last 10
print(f" [{gap['id']}] {gap['request'][:50]}...")
print(f" Category: {gap['category']} | Urgency: {gap['urgency']} | Freq: {gap['frequency']}")
print("=" * 60 + "\n")
return
if args.interactive or not args.request:
interactive_log()
return
result = log_gap(
request=args.request,
context=args.context,
category=args.category,
urgency=args.urgency,
source="cli"
)
print(f"\n✅ {result['message']}")
if result.get('potential_skill'):
print(f" Potential Skill: {result['potential_skill']}")
print()
if __name__ == "__main__":
main()
#!/usr/bin/env python3
"""
Skill Proposer - Generates skill specifications from identified gaps.
This script creates SKILL.md proposals that can be reviewed and approved
before being built into actual skills.
Usage:
python skill_proposer.py --gap-id "gap_2024_001"
python skill_proposer.py --name "ecg-analyzer" --purpose "Analyze ECG images"
python skill_proposer.py --interactive
"""
import json
import os
import argparse
from datetime import datetime
from pathlib import Path
from typing import Optional
# Paths
SCRIPT_DIR = Path(__file__).parent.parent
DATA_DIR = SCRIPT_DIR / "data"
TEMPLATES_DIR = DATA_DIR / "skill-templates"
GAP_LOG_PATH = DATA_DIR / "gap-log.json"
BACKLOG_PATH = DATA_DIR / "skill-backlog.json"
REGISTRY_PATH = DATA_DIR / "capability-registry.json"
def load_json(path: Path) -> dict:
"""Load JSON file or return empty structure."""
if path.exists():
with open(path, 'r') as f:
return json.load(f)
return {}
def save_json(path: Path, data: dict) -> None:
"""Save data to JSON file."""
path.parent.mkdir(parents=True, exist_ok=True)
with open(path, 'w') as f:
json.dump(data, f, indent=2)
def get_gap_by_id(gap_id: str) -> Optional[dict]:
"""Retrieve a gap by its ID."""
gap_data = load_json(GAP_LOG_PATH)
for gap in gap_data.get("gaps", []):
if gap["id"] == gap_id:
return gap
return None
def suggest_similar_skills(category: str, request: str) -> list:
"""Find similar existing skills to learn from."""
registry = load_json(REGISTRY_PATH)
# Category-based suggestions
category_map = {
"content-creation": ["youtube-script-master", "x-post-creator-skill", "cardiology-newsletter-writer"],
"research": ["knowledge-pipeline", "pubmed-database", "social-media-trends-research"],
"visual": ["cardiology-visual-system", "gemini-imagegen"],
"analysis": ["viral-content-predictor", "cardiology-trial-editorial"],
"medical-imaging": ["cardiology-visual-system"],
"quality": ["authentic-voice", "content-reflection"],
"automation": ["multi-model-writer", "browser-automation"],
}
suggestions = category_map.get(category, [])
# Keyword-based suggestions from request
request_lower = request.lower()
keyword_skills = {
"tweet": ["x-post-creator-skill", "cardiology-tweet-writer"],
"youtube": ["youtube-script-master", "hook-generator"],
"image": ["cardiology-visual-system", "gemini-imagegen"],
"research": ["knowledge-pipeline", "pubmed-database"],
"pubmed": ["pubmed-database"],
"trial": ["cardiology-trial-editorial"],
"newsletter": ["cardiology-newsletter-writer"]
}
for keyword, skills in keyword_skills.items():
if keyword in request_lower:
suggestions.extend(skills)
# Remove duplicates while preserving order
seen = set()
return [s for s in suggestions if not (s in seen or seen.add(s))][:5]
def estimate_complexity(purpose: str, has_scripts: bool = False, has_api: bool = False) -> str:
"""Estimate skill complexity based on requirements."""
complexity_indicators = {
"high": ["ml", "model", "train", "api", "database", "pipeline", "integrate", "automation"],
"medium": ["analyze", "process", "generate", "extract", "parse"],
"low": ["format", "template", "guide", "reference", "checklist"]
}
purpose_lower = purpose.lower()
for level, keywords in complexity_indicators.items():
if any(kw in purpose_lower for kw in keywords):
return level
if has_api or has_scripts:
return "medium"
return "low"
def generate_skill_proposal(
name: str,
purpose: str,
category: str,
inputs: list = None,
outputs: list = None,
dependencies: list = None,
gap_id: str = None,
context: str = None
) -> str:
"""Generate a SKILL.md proposal document."""
inputs = inputs or ["topic", "query"]
outputs = outputs or ["result", "formatted_output"]
dependencies = dependencies or []
similar_skills = suggest_similar_skills(category, purpose)
complexity = estimate_complexity(purpose)
# Format skill name
skill_name_formatted = name.replace("-", " ").title()
proposal = f"""# Proposed Skill: {name}
> **Status**: PROPOSAL - Pending Approval
> **Generated**: {datetime.now().strftime("%Y-%m-%d %H:%M")}
> **Gap ID**: {gap_id or "N/A"}
---
## Gap Analysis
### Origin
{f"This skill was proposed to address gap `{gap_id}`" if gap_id else "Manual proposal"}
### Problem Statement
{purpose}
### Context
{context or "User encountered a capability gap during normal usage."}
### Frequency
- Request frequency: (to be filled from gap log)
- User impact: (assess based on workflow blockage)
---
## Skill Specification
### Purpose
{purpose}
### Category
`{category}`
### Inputs
{chr(10).join(f"- **{inp}**: [describe type and format]" for inp in inputs)}
### Outputs
{chr(10).join(f"- **{out}**: [describe type and format]" for out in outputs)}
### Dependencies
{chr(10).join(f"- [ ] {dep}" for dep in dependencies) if dependencies else "- [ ] None identified"}
---
## Use Cases
1. **Primary Use Case**
- [Describe the main scenario where this skill is used]
2. **Secondary Use Case**
- [Describe additional scenarios]
3. **Edge Cases**
- [Describe unusual but valid uses]
---
## Similar Skills (Learn From)
{chr(10).join(f"- **{skill}**: [what patterns to borrow]" for skill in similar_skills) if similar_skills else "- No similar skills identified"}
---
## Implementation Plan
### Complexity Assessment
- [ ] **Simple** (documentation only) - SKILL.md + references/
- [{"x" if complexity == "medium" else " "}] **Medium** (docs + reference files) - Above + structured references
- [{"x" if complexity == "high" else " "}] **Complex** (docs + scripts + API) - Above + Python scripts + API integration
### Estimated Complexity: `{complexity.upper()}`
### Files to Create
```
skills/cardiology/{name}/
├── SKILL.md # Main documentation
├── references/ # Reference files (if needed)
│ └── [reference-files].md
└── scripts/ # Python scripts (if needed)
└── [script-files].py
```
### Implementation Steps
1. [ ] Create directory structure
2. [ ] Write SKILL.md with full documentation
3. [ ] Create reference files (if applicable)
4. [ ] Implement Python scripts (if applicable)
5. [ ] Test with sample inputs
6. [ ] Update capability registry
7. [ ] Document in SKILL-CATALOG.md
---
## Review Checklist
Before approving this skill, verify:
- [ ] **Need**: Is this capability truly needed? (frequency >= 2)
- [ ] **Unique**: Does this not duplicate existing skills?
- [ ] **Feasible**: Can this be built with available resources?
- [ ] **Maintainable**: Can this be kept updated?
- [ ] **Scoped**: Is the scope well-defined and not too broad?
---
## Decision
**Recommendation**: [ ] BUILD | [ ] DEFER | [ ] MERGE with existing skill | [ ] REJECT
**Rationale**: (to be filled by reviewer)
**Approved by**: (signature)
**Date**: (approval date)
---
## Post-Approval Actions
After approval:
1. Create skill directory
2. Implement according to plan
3. Update `capability-registry.json`
4. Update `SKILL-CATALOG.md`
5. Mark gap as "resolved" in gap log
6. Remove from skill backlog
---
*Generated by System Awareness - Skill Proposer*
"""
return proposal
def interactive_proposal():
"""Interactive skill proposal mode."""
print("\n🛠️ Skill Proposer - Interactive Mode")
print("=" * 50)
name = input("\nSkill name (kebab-case, e.g., 'ecg-analyzer'):\n> ").strip()
if not name:
print("❌ Name is required")
return
purpose = input("\nWhat does this skill do? (one sentence):\n> ").strip()
if not purpose:
print("❌ Purpose is required")
return
categories = ["content-creation", "research", "visual", "analysis",
"medical-imaging", "audio-video", "automation", "integration",
"data-extraction", "quality", "other"]
print(f"\nCategories: {', '.join(categories)}")
category = input("Category: ").strip()
if category not in categories:
category = "other"
inputs_raw = input("\nInputs (comma-separated, e.g., 'topic, query'):\n> ").strip()
inputs = [i.strip() for i in inputs_raw.split(",")] if inputs_raw else None
outputs_raw = input("\nOutputs (comma-separated):\n> ").strip()
outputs = [o.strip() for o in outputs_raw.split(",")] if outputs_raw else None
deps_raw = input("\nDependencies (comma-separated, or press Enter for none):\n> ").strip()
dependencies = [d.strip() for d in deps_raw.split(",")] if deps_raw else None
context = input("\nAdditional context (optional):\n> ").strip()
# Generate proposal
proposal = generate_skill_proposal(
name=name,
purpose=purpose,
category=category,
inputs=inputs,
outputs=outputs,
dependencies=dependencies,
context=context or None
)
# Save proposal
TEMPLATES_DIR.mkdir(parents=True, exist_ok=True)
output_path = TEMPLATES_DIR / f"{name}-proposal.md"
with open(output_path, 'w') as f:
f.write(proposal)
print("\n" + "=" * 50)
print(f"✅ Proposal saved to: {output_path}")
print("\nNext steps:")
print("1. Review the proposal")
print("2. Mark decision: BUILD / DEFER / REJECT")
print("3. If approved, create the skill directory")
print("=" * 50 + "\n")
def propose_from_gap(gap_id: str) -> None:
"""Generate a proposal from an existing gap."""
gap = get_gap_by_id(gap_id)
if not gap:
print(f"❌ Gap not found: {gap_id}")
return
name = gap.get("potential_skill", gap_id.replace("gap_", "skill-"))
purpose = gap.get("request", "")
category = gap.get("category", "other")
context = gap.get("context", "")
proposal = generate_skill_proposal(
name=name,
purpose=purpose,
category=category,
gap_id=gap_id,
context=context
)
# Save proposal
TEMPLATES_DIR.mkdir(parents=True, exist_ok=True)
output_path = TEMPLATES_DIR / f"{name}-proposal.md"
with open(output_path, 'w') as f:
f.write(proposal)
print(f"\n✅ Proposal generated from gap: {gap_id}")
print(f" Saved to: {output_path}")
print(f" Skill name: {name}")
print(f" Category: {category}")
print("\nReview the proposal and mark your decision.\n")
def list_proposals() -> None:
"""List all existing proposals."""
TEMPLATES_DIR.mkdir(parents=True, exist_ok=True)
proposals = list(TEMPLATES_DIR.glob("*-proposal.md"))
if not proposals:
print("\n📭 No proposals yet.")
print("Use 'python skill_proposer.py --interactive' to create one.\n")
return
print(f"\n📋 Skill Proposals ({len(proposals)})")
print("=" * 60)
for proposal_path in proposals:
skill_name = proposal_path.stem.replace("-proposal", "")
mod_time = datetime.fromtimestamp(proposal_path.stat().st_mtime)
print(f" • {skill_name}")
print(f" Last modified: {mod_time.strftime('%Y-%m-%d %H:%M')}")
print(f" Path: {proposal_path}")
print("=" * 60 + "\n")
def main():
parser = argparse.ArgumentParser(
description="Generate skill proposals from gaps or manual input"
)
parser.add_argument("--gap-id", "-g", help="Generate proposal from gap ID")
parser.add_argument("--name", "-n", help="Skill name (for manual proposal)")
parser.add_argument("--purpose", "-p", help="Skill purpose")
parser.add_argument("--category", "-c", help="Skill category")
parser.add_argument("--interactive", "-i", action="store_true", help="Interactive mode")
parser.add_argument("--list", "-l", action="store_true", help="List existing proposals")
args = parser.parse_args()
if args.list:
list_proposals()
return
if args.gap_id:
propose_from_gap(args.gap_id)
return
if args.name and args.purpose:
proposal = generate_skill_proposal(
name=args.name,
purpose=args.purpose,
category=args.category or "other"
)
TEMPLATES_DIR.mkdir(parents=True, exist_ok=True)
output_path = TEMPLATES_DIR / f"{args.name}-proposal.md"
with open(output_path, 'w') as f:
f.write(proposal)
print(f"\n✅ Proposal saved to: {output_path}\n")
return
# Default to interactive mode
interactive_proposal()
if __name__ == "__main__":
main()