encode-toolkit 0.3.0b1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- encode_toolkit-0.3.0b1/.claude/settings.json +11 -0
- encode_toolkit-0.3.0b1/.claude-plugin/plugin.json +121 -0
- encode_toolkit-0.3.0b1/.env.example +9 -0
- encode_toolkit-0.3.0b1/.github/ISSUE_TEMPLATE/bug_report.yml +79 -0
- encode_toolkit-0.3.0b1/.github/ISSUE_TEMPLATE/feature_request.yml +49 -0
- encode_toolkit-0.3.0b1/.github/PULL_REQUEST_TEMPLATE.md +36 -0
- encode_toolkit-0.3.0b1/.github/dependabot.yml +25 -0
- encode_toolkit-0.3.0b1/.github/workflows/lint.yml +27 -0
- encode_toolkit-0.3.0b1/.github/workflows/release.yml +119 -0
- encode_toolkit-0.3.0b1/.github/workflows/test.yml +37 -0
- encode_toolkit-0.3.0b1/.github/workflows/validate.yml +55 -0
- encode_toolkit-0.3.0b1/.gitignore +53 -0
- encode_toolkit-0.3.0b1/.mcp.json +8 -0
- encode_toolkit-0.3.0b1/.pre-commit-config.yaml +27 -0
- encode_toolkit-0.3.0b1/CHANGELOG.md +40 -0
- encode_toolkit-0.3.0b1/CLAUDE.md +168 -0
- encode_toolkit-0.3.0b1/CONTRIBUTING.md +108 -0
- encode_toolkit-0.3.0b1/Dockerfile +21 -0
- encode_toolkit-0.3.0b1/LICENSE +144 -0
- encode_toolkit-0.3.0b1/PKG-INFO +810 -0
- encode_toolkit-0.3.0b1/PRIVACY.md +66 -0
- encode_toolkit-0.3.0b1/README.md +777 -0
- encode_toolkit-0.3.0b1/SECURITY.md +73 -0
- encode_toolkit-0.3.0b1/conftest.py +7 -0
- encode_toolkit-0.3.0b1/docs/SHOWCASE.md +1309 -0
- encode_toolkit-0.3.0b1/docs/api-reference.md +875 -0
- encode_toolkit-0.3.0b1/docs/icon.svg +82 -0
- encode_toolkit-0.3.0b1/docs/integrations.md +384 -0
- encode_toolkit-0.3.0b1/docs/security.md +391 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/accessibility-aggregation.md +119 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/batch-analysis.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/cellxgene-context.md +117 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/cite-encode.md +121 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/clinvar-annotation.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/compare-biosamples.md +118 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/cross-reference.md +113 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/data-provenance.md +105 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/disease-research.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/download-encode.md +113 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/ensembl-annotation.md +103 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/epigenome-profiling.md +111 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/geo-connector.md +129 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/gnomad-variants.md +118 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/gtex-expression.md +102 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/gwas-catalog.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/hic-aggregation.md +121 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/histone-aggregation.md +115 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/integrative-analysis.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/jaspar-motifs.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/methylation-aggregation.md +119 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/motif-analysis.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/multi-omics-integration.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/peak-annotation.md +121 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-atacseq.md +119 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-chipseq.md +121 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-cutandrun.md +119 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-dnaseseq.md +116 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-guide.md +108 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-hic.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-rnaseq.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/pipeline-wgbs.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/publication-trust.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/quality-assessment.md +105 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/regulatory-elements.md +118 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/scrna-meta-analysis.md +121 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/search-encode.md +109 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/setup.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/single-cell-encode.md +114 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/track-experiments.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/ucsc-browser.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/variant-annotation.md +120 -0
- encode_toolkit-0.3.0b1/docs/skill-vignettes/visualization-workflow.md +119 -0
- encode_toolkit-0.3.0b1/docs/submission-examples.md +264 -0
- encode_toolkit-0.3.0b1/docs/vignettes/01-discovery-and-search.md +180 -0
- encode_toolkit-0.3.0b1/docs/vignettes/02-download-and-track.md +179 -0
- encode_toolkit-0.3.0b1/docs/vignettes/03-epigenomics-workflow.md +201 -0
- encode_toolkit-0.3.0b1/docs/vignettes/04-variant-and-disease.md +212 -0
- encode_toolkit-0.3.0b1/docs/vignettes/05-expression-and-single-cell.md +174 -0
- encode_toolkit-0.3.0b1/docs/vignettes/06-motif-and-regulatory.md +171 -0
- encode_toolkit-0.3.0b1/docs/vignettes/07-3d-genome-and-methylation.md +169 -0
- encode_toolkit-0.3.0b1/docs/vignettes/08-pipeline-execution.md +199 -0
- encode_toolkit-0.3.0b1/docs/vignettes/09-cross-reference-and-integration.md +164 -0
- encode_toolkit-0.3.0b1/docs/vignettes/_captured_output.md +683 -0
- encode_toolkit-0.3.0b1/docs/walkthrough.md +772 -0
- encode_toolkit-0.3.0b1/index.js +50 -0
- encode_toolkit-0.3.0b1/package.json +42 -0
- encode_toolkit-0.3.0b1/pyproject.toml +88 -0
- encode_toolkit-0.3.0b1/server.json +123 -0
- encode_toolkit-0.3.0b1/skills/accessibility-aggregation/SKILL.md +357 -0
- encode_toolkit-0.3.0b1/skills/accessibility-aggregation/references/atac-vs-dnase.md +121 -0
- encode_toolkit-0.3.0b1/skills/accessibility-aggregation/references/literature.md +110 -0
- encode_toolkit-0.3.0b1/skills/accessibility-aggregation/scripts/validate_peaks.py +309 -0
- encode_toolkit-0.3.0b1/skills/batch-analysis/SKILL.md +585 -0
- encode_toolkit-0.3.0b1/skills/batch-analysis/references/literature.md +200 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/SKILL.md +730 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/atacseq-env.yml +30 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/chipseq-env.yml +35 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/cutandrun-env.yml +34 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/dnaseseq-env.yml +31 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/hic-env.yml +36 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/rnaseq-env.yml +29 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/environments/wgbs-env.yml +29 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/references/literature.md +123 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/scripts/install-nextflow.sh +137 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/scripts/install-python-packages.sh +107 -0
- encode_toolkit-0.3.0b1/skills/bioinformatics-installer/scripts/install-r-packages.R +151 -0
- encode_toolkit-0.3.0b1/skills/cellxgene-context/SKILL.md +448 -0
- encode_toolkit-0.3.0b1/skills/cellxgene-context/references/literature.md +201 -0
- encode_toolkit-0.3.0b1/skills/cite-encode/SKILL.md +643 -0
- encode_toolkit-0.3.0b1/skills/cite-encode/references/literature.md +56 -0
- encode_toolkit-0.3.0b1/skills/clinvar-annotation/SKILL.md +449 -0
- encode_toolkit-0.3.0b1/skills/clinvar-annotation/references/literature.md +212 -0
- encode_toolkit-0.3.0b1/skills/compare-biosamples/SKILL.md +502 -0
- encode_toolkit-0.3.0b1/skills/compare-biosamples/references/literature.md +210 -0
- encode_toolkit-0.3.0b1/skills/cross-reference/SKILL.md +687 -0
- encode_toolkit-0.3.0b1/skills/cross-reference/references/literature.md +210 -0
- encode_toolkit-0.3.0b1/skills/data-provenance/SKILL.md +646 -0
- encode_toolkit-0.3.0b1/skills/data-provenance/references/literature.md +75 -0
- encode_toolkit-0.3.0b1/skills/disease-research/SKILL.md +456 -0
- encode_toolkit-0.3.0b1/skills/disease-research/references/literature.md +94 -0
- encode_toolkit-0.3.0b1/skills/download-encode/SKILL.md +476 -0
- encode_toolkit-0.3.0b1/skills/download-encode/references/literature.md +164 -0
- encode_toolkit-0.3.0b1/skills/ensembl-annotation/SKILL.md +363 -0
- encode_toolkit-0.3.0b1/skills/ensembl-annotation/references/literature.md +202 -0
- encode_toolkit-0.3.0b1/skills/epigenome-profiling/SKILL.md +607 -0
- encode_toolkit-0.3.0b1/skills/epigenome-profiling/references/literature.md +236 -0
- encode_toolkit-0.3.0b1/skills/functional-screen-analysis/SKILL.md +703 -0
- encode_toolkit-0.3.0b1/skills/functional-screen-analysis/references/literature.md +121 -0
- encode_toolkit-0.3.0b1/skills/geo-connector/SKILL.md +383 -0
- encode_toolkit-0.3.0b1/skills/geo-connector/references/literature.md +200 -0
- encode_toolkit-0.3.0b1/skills/gnomad-variants/SKILL.md +384 -0
- encode_toolkit-0.3.0b1/skills/gnomad-variants/references/literature.md +212 -0
- encode_toolkit-0.3.0b1/skills/gtex-expression/SKILL.md +452 -0
- encode_toolkit-0.3.0b1/skills/gtex-expression/references/literature.md +201 -0
- encode_toolkit-0.3.0b1/skills/gwas-catalog/SKILL.md +545 -0
- encode_toolkit-0.3.0b1/skills/gwas-catalog/references/literature.md +252 -0
- encode_toolkit-0.3.0b1/skills/hic-aggregation/SKILL.md +560 -0
- encode_toolkit-0.3.0b1/skills/hic-aggregation/references/literature.md +99 -0
- encode_toolkit-0.3.0b1/skills/hic-aggregation/references/loop-caller-comparison.md +129 -0
- encode_toolkit-0.3.0b1/skills/hic-aggregation/scripts/validate_loops.py +276 -0
- encode_toolkit-0.3.0b1/skills/histone-aggregation/SKILL.md +387 -0
- encode_toolkit-0.3.0b1/skills/histone-aggregation/references/broad-vs-narrow.md +104 -0
- encode_toolkit-0.3.0b1/skills/histone-aggregation/references/histone-marks-reference.md +1442 -0
- encode_toolkit-0.3.0b1/skills/histone-aggregation/references/literature.md +106 -0
- encode_toolkit-0.3.0b1/skills/histone-aggregation/references/signal-filtering.md +127 -0
- encode_toolkit-0.3.0b1/skills/histone-aggregation/scripts/validate_peaks.py +289 -0
- encode_toolkit-0.3.0b1/skills/integrative-analysis/SKILL.md +572 -0
- encode_toolkit-0.3.0b1/skills/integrative-analysis/references/literature.md +243 -0
- encode_toolkit-0.3.0b1/skills/jaspar-motifs/SKILL.md +553 -0
- encode_toolkit-0.3.0b1/skills/jaspar-motifs/references/literature.md +200 -0
- encode_toolkit-0.3.0b1/skills/liftover-coordinates/SKILL.md +536 -0
- encode_toolkit-0.3.0b1/skills/liftover-coordinates/references/literature.md +76 -0
- encode_toolkit-0.3.0b1/skills/methylation-aggregation/SKILL.md +537 -0
- encode_toolkit-0.3.0b1/skills/methylation-aggregation/references/hmr-definitions.md +86 -0
- encode_toolkit-0.3.0b1/skills/methylation-aggregation/references/literature.md +101 -0
- encode_toolkit-0.3.0b1/skills/methylation-aggregation/scripts/validate_methylation.py +409 -0
- encode_toolkit-0.3.0b1/skills/motif-analysis/SKILL.md +481 -0
- encode_toolkit-0.3.0b1/skills/motif-analysis/references/literature.md +262 -0
- encode_toolkit-0.3.0b1/skills/multi-omics-integration/SKILL.md +592 -0
- encode_toolkit-0.3.0b1/skills/multi-omics-integration/references/literature.md +116 -0
- encode_toolkit-0.3.0b1/skills/peak-annotation/SKILL.md +538 -0
- encode_toolkit-0.3.0b1/skills/peak-annotation/references/literature.md +226 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/SKILL.md +447 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/references/01-qc-trimming.md +55 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/references/02-alignment.md +69 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/references/03-tn5-filtering.md +75 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/references/04-peak-calling.md +77 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/references/05-qc-metrics.md +92 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/references/literature.md +196 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/scripts/Dockerfile +48 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/scripts/main.nf +323 -0
- encode_toolkit-0.3.0b1/skills/pipeline-atacseq/scripts/nextflow.config +104 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/SKILL.md +439 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/references/01-qc-trimming.md +59 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/references/02-alignment.md +71 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/references/03-filtering.md +72 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/references/04-analysis.md +78 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/references/05-qc-metrics.md +80 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/references/literature.md +194 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/scripts/Dockerfile +47 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/scripts/main.nf +286 -0
- encode_toolkit-0.3.0b1/skills/pipeline-chipseq/scripts/nextflow.config +101 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/SKILL.md +462 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/references/01-qc-trimming.md +102 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/references/02-bowtie2-alignment.md +138 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/references/03-filtering-spikein.md +154 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/references/04-seacr-peaks.md +154 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/references/05-qc-metrics.md +137 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/references/literature.md +152 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/scripts/Dockerfile +68 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/scripts/main.nf +400 -0
- encode_toolkit-0.3.0b1/skills/pipeline-cutandrun/scripts/nextflow.config +101 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/SKILL.md +429 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/references/01-qc-trimming.md +88 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/references/02-alignment.md +111 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/references/03-filtering.md +124 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/references/04-hotspot-calling.md +139 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/references/05-footprinting.md +146 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/references/literature.md +143 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/scripts/Dockerfile +67 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/scripts/main.nf +317 -0
- encode_toolkit-0.3.0b1/skills/pipeline-dnaseseq/scripts/nextflow.config +101 -0
- encode_toolkit-0.3.0b1/skills/pipeline-guide/SKILL.md +695 -0
- encode_toolkit-0.3.0b1/skills/pipeline-guide/references/literature.md +82 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/SKILL.md +425 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/references/01-qc-trimming.md +84 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/references/02-alignment.md +102 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/references/03-pair-processing.md +140 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/references/04-matrix-generation.md +145 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/references/05-loop-calling.md +135 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/references/literature.md +146 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/scripts/Dockerfile +52 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/scripts/main.nf +304 -0
- encode_toolkit-0.3.0b1/skills/pipeline-hic/scripts/nextflow.config +96 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/SKILL.md +455 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/references/01-qc-trimming.md +68 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/references/02-star-alignment.md +103 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/references/03-quantification.md +107 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/references/04-signal-tracks.md +92 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/references/05-qc-metrics.md +124 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/references/literature.md +152 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/scripts/Dockerfile +47 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/scripts/main.nf +287 -0
- encode_toolkit-0.3.0b1/skills/pipeline-rnaseq/scripts/nextflow.config +103 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/SKILL.md +398 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/references/01-qc-trimming.md +81 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/references/02-bismark-alignment.md +113 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/references/03-dedup-filtering.md +101 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/references/04-methylation-calling.md +117 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/references/05-qc-metrics.md +127 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/references/literature.md +166 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/scripts/Dockerfile +61 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/scripts/main.nf +285 -0
- encode_toolkit-0.3.0b1/skills/pipeline-wgbs/scripts/nextflow.config +96 -0
- encode_toolkit-0.3.0b1/skills/publication-trust/SKILL.md +415 -0
- encode_toolkit-0.3.0b1/skills/publication-trust/references/literature.md +80 -0
- encode_toolkit-0.3.0b1/skills/quality-assessment/SKILL.md +555 -0
- encode_toolkit-0.3.0b1/skills/quality-assessment/references/literature.md +340 -0
- encode_toolkit-0.3.0b1/skills/regulatory-elements/SKILL.md +468 -0
- encode_toolkit-0.3.0b1/skills/regulatory-elements/references/literature.md +246 -0
- encode_toolkit-0.3.0b1/skills/scientific-writing/SKILL.md +928 -0
- encode_toolkit-0.3.0b1/skills/scientific-writing/references/literature.md +100 -0
- encode_toolkit-0.3.0b1/skills/scrna-meta-analysis/SKILL.md +555 -0
- encode_toolkit-0.3.0b1/skills/scrna-meta-analysis/references/literature.md +118 -0
- encode_toolkit-0.3.0b1/skills/search-encode/SKILL.md +481 -0
- encode_toolkit-0.3.0b1/skills/search-encode/references/literature.md +223 -0
- encode_toolkit-0.3.0b1/skills/setup/SKILL.md +313 -0
- encode_toolkit-0.3.0b1/skills/setup/references/literature.md +150 -0
- encode_toolkit-0.3.0b1/skills/single-cell-encode/SKILL.md +542 -0
- encode_toolkit-0.3.0b1/skills/single-cell-encode/references/literature.md +114 -0
- encode_toolkit-0.3.0b1/skills/track-experiments/SKILL.md +743 -0
- encode_toolkit-0.3.0b1/skills/track-experiments/references/literature.md +167 -0
- encode_toolkit-0.3.0b1/skills/ucsc-browser/SKILL.md +387 -0
- encode_toolkit-0.3.0b1/skills/ucsc-browser/references/literature.md +76 -0
- encode_toolkit-0.3.0b1/skills/variant-annotation/SKILL.md +541 -0
- encode_toolkit-0.3.0b1/skills/variant-annotation/references/literature.md +116 -0
- encode_toolkit-0.3.0b1/skills/visualization-workflow/SKILL.md +588 -0
- encode_toolkit-0.3.0b1/skills/visualization-workflow/references/literature.md +239 -0
- encode_toolkit-0.3.0b1/smithery.yaml +24 -0
- encode_toolkit-0.3.0b1/src/encode_connector/__init__.py +4 -0
- encode_toolkit-0.3.0b1/src/encode_connector/__main__.py +5 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/__init__.py +6 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/auth.py +262 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/constants.py +348 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/downloader.py +305 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/encode_client.py +585 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/models.py +332 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/tracker.py +1129 -0
- encode_toolkit-0.3.0b1/src/encode_connector/client/validation.py +188 -0
- encode_toolkit-0.3.0b1/src/encode_connector/server/__init__.py +1 -0
- encode_toolkit-0.3.0b1/src/encode_connector/server/__main__.py +5 -0
- encode_toolkit-0.3.0b1/src/encode_connector/server/main.py +1495 -0
- encode_toolkit-0.3.0b1/tests/__init__.py +0 -0
- encode_toolkit-0.3.0b1/tests/test_auth.py +797 -0
- encode_toolkit-0.3.0b1/tests/test_client.py +1421 -0
- encode_toolkit-0.3.0b1/tests/test_downloader.py +904 -0
- encode_toolkit-0.3.0b1/tests/test_models.py +355 -0
- encode_toolkit-0.3.0b1/tests/test_server.py +137 -0
- encode_toolkit-0.3.0b1/tests/test_tool_responses.py +1676 -0
- encode_toolkit-0.3.0b1/tests/test_tracker.py +1134 -0
- encode_toolkit-0.3.0b1/tests/test_validation.py +416 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "encode-toolkit",
|
|
3
|
+
"description": "20 ENCODE API tools + 48 expert skills for genomics research. Search experiments, download files with MD5 verification, run pipelines, and cross-reference 14 databases.",
|
|
4
|
+
"version": "0.3.0-beta.1",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Dr. Alex M. Mawla, PhD",
|
|
7
|
+
"email": "ammawla@ucdavis.edu"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/ammawla/encode-toolkit",
|
|
10
|
+
"repository": "https://github.com/ammawla/encode-toolkit",
|
|
11
|
+
"icon": "docs/icon.svg",
|
|
12
|
+
"license": "LicenseRef-Noncommercial",
|
|
13
|
+
"keywords": [
|
|
14
|
+
"genomics",
|
|
15
|
+
"encode",
|
|
16
|
+
"bioinformatics",
|
|
17
|
+
"epigenomics",
|
|
18
|
+
"chip-seq",
|
|
19
|
+
"atac-seq",
|
|
20
|
+
"rna-seq",
|
|
21
|
+
"wgbs",
|
|
22
|
+
"hi-c",
|
|
23
|
+
"cut-and-run",
|
|
24
|
+
"pipeline",
|
|
25
|
+
"nextflow",
|
|
26
|
+
"GTEx",
|
|
27
|
+
"ClinVar",
|
|
28
|
+
"GWAS",
|
|
29
|
+
"JASPAR",
|
|
30
|
+
"CellxGene",
|
|
31
|
+
"gnomAD",
|
|
32
|
+
"Ensembl",
|
|
33
|
+
"UCSC",
|
|
34
|
+
"provenance",
|
|
35
|
+
"biology",
|
|
36
|
+
"science"
|
|
37
|
+
],
|
|
38
|
+
"skills": "skills/*",
|
|
39
|
+
"tools": [
|
|
40
|
+
{
|
|
41
|
+
"name": "encode_search_experiments",
|
|
42
|
+
"description": "Search ENCODE experiments with 20+ filters including assay type, organism, organ, biosample, target, and more."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "encode_get_experiment",
|
|
46
|
+
"description": "Get full details for a specific experiment including all files, quality metrics, and audit info."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "encode_list_files",
|
|
50
|
+
"description": "List files for a specific experiment with format/type filters."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "encode_search_files",
|
|
54
|
+
"description": "Search files across all experiments with combined experiment + file filters."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "encode_download_files",
|
|
58
|
+
"description": "Download specific files by accession to a local directory with MD5 verification."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "encode_get_metadata",
|
|
62
|
+
"description": "List valid filter values for any search parameter."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "encode_batch_download",
|
|
66
|
+
"description": "Search + download files in one step with preview mode."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "encode_manage_credentials",
|
|
70
|
+
"description": "Store, check, or clear ENCODE credentials for restricted data access."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "encode_get_facets",
|
|
74
|
+
"description": "Get live counts from ENCODE showing what data exists for given filters."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "encode_get_file_info",
|
|
78
|
+
"description": "Get detailed metadata for a single file."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "encode_track_experiment",
|
|
82
|
+
"description": "Track an experiment locally with publications, methods, and pipeline info."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "encode_list_tracked",
|
|
86
|
+
"description": "List all tracked experiments with metadata and publication counts."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "encode_get_citations",
|
|
90
|
+
"description": "Get publications for tracked experiments. Export as BibTeX or RIS."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "encode_compare_experiments",
|
|
94
|
+
"description": "Analyze whether two experiments are compatible for combined analysis."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "encode_log_derived_file",
|
|
98
|
+
"description": "Log derived files for provenance tracking back to ENCODE source data."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "encode_get_provenance",
|
|
102
|
+
"description": "View provenance chains from derived files to source ENCODE data."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "encode_export_data",
|
|
106
|
+
"description": "Export tracked experiments as CSV, TSV, or JSON with PMIDs for cross-referencing."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "encode_summarize_collection",
|
|
110
|
+
"description": "Get grouped statistics of your tracked experiment collection."
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "encode_link_reference",
|
|
114
|
+
"description": "Link external references (PubMed, bioRxiv, ClinicalTrials, GEO) to experiments."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "encode_get_references",
|
|
118
|
+
"description": "Get external references linked to experiments for cross-server workflows."
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Optional: ENCODE access credentials for restricted data
|
|
2
|
+
# Get these from your ENCODE account profile at https://www.encodeproject.org/
|
|
3
|
+
# These are only needed for unreleased/restricted datasets.
|
|
4
|
+
# Public data (most of ENCODE) requires no authentication.
|
|
5
|
+
#
|
|
6
|
+
# On first use, credentials are moved to your OS keyring (macOS Keychain,
|
|
7
|
+
# Linux Secret Service, Windows Credential Locker) and removed from env vars.
|
|
8
|
+
ENCODE_ACCESS_KEY=
|
|
9
|
+
ENCODE_SECRET_KEY=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Report a bug in ENCODE Toolkit
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for reporting a bug! Please fill out the sections below.
|
|
10
|
+
|
|
11
|
+
- type: dropdown
|
|
12
|
+
id: component
|
|
13
|
+
attributes:
|
|
14
|
+
label: Component
|
|
15
|
+
description: Which part of ENCODE Toolkit is affected?
|
|
16
|
+
options:
|
|
17
|
+
- MCP Tools (search, download, track)
|
|
18
|
+
- Skills (analysis, pipelines, external DBs)
|
|
19
|
+
- File Downloads / MD5 verification
|
|
20
|
+
- Credential Management
|
|
21
|
+
- SQLite Tracker
|
|
22
|
+
- Installation / Setup
|
|
23
|
+
- Other
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: description
|
|
29
|
+
attributes:
|
|
30
|
+
label: What happened?
|
|
31
|
+
description: Clear description of the bug.
|
|
32
|
+
placeholder: "When I run encode_search_experiments with..."
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: expected
|
|
38
|
+
attributes:
|
|
39
|
+
label: Expected behavior
|
|
40
|
+
description: What should have happened instead?
|
|
41
|
+
validations:
|
|
42
|
+
required: true
|
|
43
|
+
|
|
44
|
+
- type: textarea
|
|
45
|
+
id: reproduce
|
|
46
|
+
attributes:
|
|
47
|
+
label: Steps to reproduce
|
|
48
|
+
description: Minimal steps to reproduce the issue.
|
|
49
|
+
placeholder: |
|
|
50
|
+
1. Run `encode_search_experiments(assay_title="ChIP-seq", organ="liver")`
|
|
51
|
+
2. See error...
|
|
52
|
+
|
|
53
|
+
- type: input
|
|
54
|
+
id: version
|
|
55
|
+
attributes:
|
|
56
|
+
label: Version
|
|
57
|
+
description: Output of `pip show encode-toolkit | grep Version`
|
|
58
|
+
placeholder: "0.3.0b1"
|
|
59
|
+
|
|
60
|
+
- type: dropdown
|
|
61
|
+
id: python
|
|
62
|
+
attributes:
|
|
63
|
+
label: Python version
|
|
64
|
+
options:
|
|
65
|
+
- "3.13"
|
|
66
|
+
- "3.12"
|
|
67
|
+
- "3.11"
|
|
68
|
+
- "3.10"
|
|
69
|
+
|
|
70
|
+
- type: dropdown
|
|
71
|
+
id: client
|
|
72
|
+
attributes:
|
|
73
|
+
label: MCP Client
|
|
74
|
+
options:
|
|
75
|
+
- Claude Code
|
|
76
|
+
- Claude Desktop
|
|
77
|
+
- VS Code (Continue/Cline)
|
|
78
|
+
- Cursor
|
|
79
|
+
- Other
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Suggest a new feature or improvement
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Thanks for your suggestion! Help us understand what you need.
|
|
10
|
+
|
|
11
|
+
- type: dropdown
|
|
12
|
+
id: category
|
|
13
|
+
attributes:
|
|
14
|
+
label: Category
|
|
15
|
+
options:
|
|
16
|
+
- New MCP Tool
|
|
17
|
+
- New Skill
|
|
18
|
+
- New Pipeline
|
|
19
|
+
- New Database Integration
|
|
20
|
+
- Existing Tool Enhancement
|
|
21
|
+
- Existing Skill Enhancement
|
|
22
|
+
- Documentation
|
|
23
|
+
- Other
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: problem
|
|
29
|
+
attributes:
|
|
30
|
+
label: Problem or use case
|
|
31
|
+
description: What research problem does this solve?
|
|
32
|
+
placeholder: "I'm trying to analyze ENCODE CRISPR screen data and need..."
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: solution
|
|
38
|
+
attributes:
|
|
39
|
+
label: Proposed solution
|
|
40
|
+
description: How should this work? Include example tool calls if possible.
|
|
41
|
+
placeholder: |
|
|
42
|
+
A new tool `encode_analyze_screen` that takes an experiment accession
|
|
43
|
+
and returns guide-level scores...
|
|
44
|
+
|
|
45
|
+
- type: textarea
|
|
46
|
+
id: alternatives
|
|
47
|
+
attributes:
|
|
48
|
+
label: Alternatives considered
|
|
49
|
+
description: Other approaches you've thought about.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
<!-- Brief description of changes (1-3 sentences) -->
|
|
4
|
+
|
|
5
|
+
## Changes
|
|
6
|
+
|
|
7
|
+
<!-- Bulleted list of what was changed -->
|
|
8
|
+
|
|
9
|
+
-
|
|
10
|
+
|
|
11
|
+
## Type
|
|
12
|
+
|
|
13
|
+
<!-- Check the relevant option -->
|
|
14
|
+
|
|
15
|
+
- [ ] Bug fix
|
|
16
|
+
- [ ] New feature (tool, skill, pipeline)
|
|
17
|
+
- [ ] Enhancement to existing feature
|
|
18
|
+
- [ ] Documentation
|
|
19
|
+
- [ ] Infrastructure (CI, packaging, config)
|
|
20
|
+
|
|
21
|
+
## Testing
|
|
22
|
+
|
|
23
|
+
<!-- How was this tested? -->
|
|
24
|
+
|
|
25
|
+
- [ ] All 506 existing tests pass (`pytest tests/ -v`)
|
|
26
|
+
- [ ] New tests added for new functionality
|
|
27
|
+
- [ ] Lint passes (`ruff check src/`)
|
|
28
|
+
- [ ] Format passes (`ruff format --check src/`)
|
|
29
|
+
- [ ] Plugin validation passes (plugin.json valid, skills load)
|
|
30
|
+
|
|
31
|
+
## Checklist
|
|
32
|
+
|
|
33
|
+
- [ ] CHANGELOG.md updated
|
|
34
|
+
- [ ] CLAUDE.md updated (if architecture/tools changed)
|
|
35
|
+
- [ ] No secrets or credentials in code
|
|
36
|
+
- [ ] No breaking changes to existing tool signatures
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "pip"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "weekly"
|
|
7
|
+
labels:
|
|
8
|
+
- "dependencies"
|
|
9
|
+
open-pull-requests-limit: 5
|
|
10
|
+
|
|
11
|
+
- package-ecosystem: "github-actions"
|
|
12
|
+
directory: "/"
|
|
13
|
+
schedule:
|
|
14
|
+
interval: "weekly"
|
|
15
|
+
labels:
|
|
16
|
+
- "ci"
|
|
17
|
+
open-pull-requests-limit: 3
|
|
18
|
+
|
|
19
|
+
- package-ecosystem: "npm"
|
|
20
|
+
directory: "/"
|
|
21
|
+
schedule:
|
|
22
|
+
interval: "monthly"
|
|
23
|
+
labels:
|
|
24
|
+
- "dependencies"
|
|
25
|
+
open-pull-requests-limit: 2
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
name: Lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
lint:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Set up Python
|
|
16
|
+
uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.13"
|
|
19
|
+
|
|
20
|
+
- name: Install ruff
|
|
21
|
+
run: pip install ruff
|
|
22
|
+
|
|
23
|
+
- name: Check formatting
|
|
24
|
+
run: ruff format --check src/ tests/
|
|
25
|
+
|
|
26
|
+
- name: Check linting
|
|
27
|
+
run: ruff check src/ tests/
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.13"
|
|
22
|
+
|
|
23
|
+
- name: Install build tools
|
|
24
|
+
run: pip install build twine
|
|
25
|
+
|
|
26
|
+
- name: Build package
|
|
27
|
+
run: python -m build
|
|
28
|
+
|
|
29
|
+
- name: Verify package
|
|
30
|
+
run: twine check dist/*
|
|
31
|
+
|
|
32
|
+
- name: Upload artifacts
|
|
33
|
+
uses: actions/upload-artifact@v4
|
|
34
|
+
with:
|
|
35
|
+
name: dist
|
|
36
|
+
path: dist/
|
|
37
|
+
|
|
38
|
+
test:
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
strategy:
|
|
41
|
+
matrix:
|
|
42
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v4
|
|
45
|
+
|
|
46
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
47
|
+
uses: actions/setup-python@v5
|
|
48
|
+
with:
|
|
49
|
+
python-version: ${{ matrix.python-version }}
|
|
50
|
+
|
|
51
|
+
- name: Install and test
|
|
52
|
+
run: |
|
|
53
|
+
pip install -e ".[dev]"
|
|
54
|
+
pytest tests/ -v --tb=short
|
|
55
|
+
|
|
56
|
+
github-release:
|
|
57
|
+
needs: [build, test]
|
|
58
|
+
runs-on: ubuntu-latest
|
|
59
|
+
steps:
|
|
60
|
+
- uses: actions/checkout@v4
|
|
61
|
+
|
|
62
|
+
- name: Download artifacts
|
|
63
|
+
uses: actions/download-artifact@v4
|
|
64
|
+
with:
|
|
65
|
+
name: dist
|
|
66
|
+
path: dist/
|
|
67
|
+
|
|
68
|
+
- name: Determine if prerelease
|
|
69
|
+
id: check
|
|
70
|
+
run: |
|
|
71
|
+
TAG_NAME="${GITHUB_REF#refs/tags/}"
|
|
72
|
+
if echo "$TAG_NAME" | grep -qE 'beta|rc|alpha'; then
|
|
73
|
+
echo "prerelease=true" >> "$GITHUB_OUTPUT"
|
|
74
|
+
else
|
|
75
|
+
echo "prerelease=false" >> "$GITHUB_OUTPUT"
|
|
76
|
+
fi
|
|
77
|
+
env:
|
|
78
|
+
GITHUB_REF: ${{ github.ref }}
|
|
79
|
+
|
|
80
|
+
- name: Create GitHub Release
|
|
81
|
+
uses: softprops/action-gh-release@v2
|
|
82
|
+
with:
|
|
83
|
+
generate_release_notes: true
|
|
84
|
+
files: dist/*
|
|
85
|
+
prerelease: ${{ steps.check.outputs.prerelease == 'true' }}
|
|
86
|
+
|
|
87
|
+
pypi-publish:
|
|
88
|
+
needs: [build, test]
|
|
89
|
+
runs-on: ubuntu-latest
|
|
90
|
+
environment: release
|
|
91
|
+
permissions:
|
|
92
|
+
id-token: write
|
|
93
|
+
steps:
|
|
94
|
+
- name: Download artifacts
|
|
95
|
+
uses: actions/download-artifact@v4
|
|
96
|
+
with:
|
|
97
|
+
name: dist
|
|
98
|
+
path: dist/
|
|
99
|
+
|
|
100
|
+
- name: Publish to PyPI
|
|
101
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
102
|
+
|
|
103
|
+
npm-publish:
|
|
104
|
+
needs: [build, test]
|
|
105
|
+
runs-on: ubuntu-latest
|
|
106
|
+
environment: release
|
|
107
|
+
steps:
|
|
108
|
+
- uses: actions/checkout@v4
|
|
109
|
+
|
|
110
|
+
- name: Set up Node.js
|
|
111
|
+
uses: actions/setup-node@v4
|
|
112
|
+
with:
|
|
113
|
+
node-version: "20"
|
|
114
|
+
registry-url: "https://registry.npmjs.org"
|
|
115
|
+
|
|
116
|
+
- name: Publish to npm
|
|
117
|
+
run: npm publish --access public
|
|
118
|
+
env:
|
|
119
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
20
|
+
uses: actions/setup-python@v5
|
|
21
|
+
with:
|
|
22
|
+
python-version: ${{ matrix.python-version }}
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
python -m pip install --upgrade pip
|
|
27
|
+
pip install -e ".[dev]"
|
|
28
|
+
|
|
29
|
+
- name: Run tests with coverage
|
|
30
|
+
run: pytest tests/ -v --tb=short --cov=encode_connector --cov-report=xml --cov-report=term-missing
|
|
31
|
+
|
|
32
|
+
- name: Upload coverage
|
|
33
|
+
if: matrix.python-version == '3.13'
|
|
34
|
+
uses: codecov/codecov-action@v4
|
|
35
|
+
with:
|
|
36
|
+
file: coverage.xml
|
|
37
|
+
fail_ci_if_error: false
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Plugin Validation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
validate:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Set up Python
|
|
16
|
+
uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.13"
|
|
19
|
+
|
|
20
|
+
- name: Install package
|
|
21
|
+
run: |
|
|
22
|
+
python -m pip install --upgrade pip
|
|
23
|
+
pip install -e ".[dev]"
|
|
24
|
+
|
|
25
|
+
- name: Verify server imports
|
|
26
|
+
run: python -c "from encode_connector.server.main import mcp; print('Server module imports OK')"
|
|
27
|
+
|
|
28
|
+
- name: Validate plugin.json
|
|
29
|
+
run: |
|
|
30
|
+
python -c "
|
|
31
|
+
import json
|
|
32
|
+
d = json.load(open('.claude-plugin/plugin.json'))
|
|
33
|
+
assert 'name' in d
|
|
34
|
+
assert 'version' in d
|
|
35
|
+
print(f'plugin.json valid: {d[\"name\"]} v{d[\"version\"]}')
|
|
36
|
+
"
|
|
37
|
+
|
|
38
|
+
- name: Validate skill structure
|
|
39
|
+
run: |
|
|
40
|
+
python -c "
|
|
41
|
+
import os
|
|
42
|
+
skills_dir = 'skills'
|
|
43
|
+
count = 0
|
|
44
|
+
for skill in sorted(os.listdir(skills_dir)):
|
|
45
|
+
skill_path = os.path.join(skills_dir, skill, 'SKILL.md')
|
|
46
|
+
if os.path.isfile(skill_path):
|
|
47
|
+
count += 1
|
|
48
|
+
print(f' OK: {skill}')
|
|
49
|
+
else:
|
|
50
|
+
print(f' MISSING SKILL.md: {skill}')
|
|
51
|
+
print(f'Total skills validated: {count}')
|
|
52
|
+
"
|
|
53
|
+
|
|
54
|
+
- name: Run tests
|
|
55
|
+
run: pytest tests/ -v --tb=short
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.egg-info/
|
|
6
|
+
*.egg
|
|
7
|
+
*.so
|
|
8
|
+
dist/
|
|
9
|
+
build/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv/
|
|
14
|
+
venv/
|
|
15
|
+
|
|
16
|
+
# Environment variables
|
|
17
|
+
.env
|
|
18
|
+
.env.*
|
|
19
|
+
!.env.example
|
|
20
|
+
|
|
21
|
+
# Encrypted credential files
|
|
22
|
+
*.enc
|
|
23
|
+
|
|
24
|
+
# Testing & linting
|
|
25
|
+
.pytest_cache/
|
|
26
|
+
.mypy_cache/
|
|
27
|
+
.ruff_cache/
|
|
28
|
+
.coverage
|
|
29
|
+
htmlcov/
|
|
30
|
+
|
|
31
|
+
# Node
|
|
32
|
+
node_modules/
|
|
33
|
+
|
|
34
|
+
# IDE
|
|
35
|
+
.vscode/
|
|
36
|
+
.idea/
|
|
37
|
+
*.swp
|
|
38
|
+
*.swo
|
|
39
|
+
|
|
40
|
+
# Claude Code local files
|
|
41
|
+
.claude/settings.local.json
|
|
42
|
+
.claude/*.local.md
|
|
43
|
+
|
|
44
|
+
# Data files (generated at runtime)
|
|
45
|
+
*.db
|
|
46
|
+
*.sqlite
|
|
47
|
+
*.sqlite3
|
|
48
|
+
credentials*
|
|
49
|
+
data/
|
|
50
|
+
|
|
51
|
+
# OS
|
|
52
|
+
.DS_Store
|
|
53
|
+
Thumbs.db
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
+
rev: v0.9.6
|
|
4
|
+
hooks:
|
|
5
|
+
- id: ruff
|
|
6
|
+
args: [--fix]
|
|
7
|
+
- id: ruff-format
|
|
8
|
+
|
|
9
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
10
|
+
rev: v5.0.0
|
|
11
|
+
hooks:
|
|
12
|
+
- id: trailing-whitespace
|
|
13
|
+
- id: end-of-file-fixer
|
|
14
|
+
- id: check-yaml
|
|
15
|
+
- id: check-json
|
|
16
|
+
- id: check-added-large-files
|
|
17
|
+
args: ['--maxkb=500']
|
|
18
|
+
- id: no-commit-to-branch
|
|
19
|
+
args: ['--branch', 'main']
|
|
20
|
+
|
|
21
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
22
|
+
rev: v1.14.1
|
|
23
|
+
hooks:
|
|
24
|
+
- id: mypy
|
|
25
|
+
additional_dependencies: [pydantic, httpx]
|
|
26
|
+
args: [--ignore-missing-imports]
|
|
27
|
+
files: ^src/
|