Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Query the ENCODE Registry of cis-Regulatory Elements (cCREs) via the SCREEN GraphQL API, or make custom queries to the ENCODE Portal REST API for experiments and files (ChIP-seq peaks, etc.). Use when you want to query regulatory annotations or raw experimental data across human cell types.
.claude/skills/mkurman-encode-ccres-database/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 13% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 160% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 10% | 0% |
This skill allows you to query the ENCODE Registry of cCREs (candidate cis-Regulatory Elements) via the SCREEN GraphQL API. It helps identify functional non-coding DNA elements (like Promoters, Enhancers, and insulators) by analyzing biochemical signatures (DNase, H3K4me3, H3K27ac, CTCF).
uv: Read the uv skill and follow its Setup instructions to ensureuv is installed and on PATH.
this skill directory then (1) prominently notify the user to check the terms at https://www.encodeproject.org/help/rest-api/, then (2) create the file recording the notification text and timestamp.
database rather than accessing the database directly. The scripts automatically enforce the required rate limit gracefully.
cat to read the entire JSON output fileinto context, as it can be extremely large. You MUST use jq to efficiently parse and extract relevant fields.
output.
bash# Search cCREs by coordinates uv run scripts/screen_api.py search --chromosome chr11 \ --start 5205263 --end 5207263 \ --output /tmp/search.json # Get details for a specific cCRE uv run scripts/screen_api.py details EH38E2941922 \ --output /tmp/details.json
All subcommands write JSON to disk. Always save output in a temporary location like /tmp/.
Biosamples in ENCODE are often categorized by their data completeness. "Type A" (or high-confidence) biosamples are those that have experimental data for all four core epigenetic markers: DNase, H3K4me3, H3K27ac, and CTCF.
The biosamples and details commands automatically enrich their output with an is_type_a boolean flag for each biosample.
Example: Finding high-confidence cell types
bashuv run scripts/screen_api.py biosamples --output /tmp/biosamples.json # Use jq to filter for Type A biosamples jq '.data.ccREBiosampleQuery.biosamples[] | select(.is_type_a == true) | .displayname' /tmp/biosamples.json
Do NOT use cat to read the entire JSON output file into context, as it can be extremely large. Instead, you MUST use jq to efficiently parse and extract the relevant fields from the JSON file saved by the script. If jq is not available on the system, write your own Python filtering code (e.g., python3 -c "import json...") to extract the necessary data.
For a complete reference of the JSON structure returned by eachmcommand (so you know which fields to query with jq), read references/json_output_structure.md.
search: Search cCREs by coordinates, accessions, or epigenetic signals.bash uv run scripts/screen_api.py search \ --chromosome chr11 --start 5205263 --end 5207263 \ --output /tmp/search.json
nearby-genes: Find nearby genes for given cCRE accessions.bash uv run scripts/screen_api.py nearby-genes \ EH38E1516972 --output /tmp/nearby.json
details: Get detailed information and biosample-specific max Z-scores fora specific cCRE.
bash uv run scripts/screen_api.py details EH38E2941922 \ --output /tmp/details.json
biosamples: Get biosample metadata for an assembly.bash uv run scripts/screen_api.py biosamples \ --output /tmp/biosamples.json
orthologs: Get orthologous cCREs in another assembly.bash uv run scripts/screen_api.py orthologs EH38E2941922 \ --output /tmp/orthologs.json
linked-genes: Find linked genes via methods like HiC or eQTLs.bash uv run scripts/screen_api.py linked-genes \ EH38E1516972 --output /tmp/linked.json
gene-expression: Get gene expression (TPM) across all biosamples for anamed gene. Internally resolves the gene symbol to an Ensembl gene ID, then queries per-biosample RNA-seq quantifications.
bash uv run scripts/screen_api.py gene-expression GAPDH \ --output /tmp/gene_expr.json
entex: Get ENTEx data for a cCRE or genomic region.bash uv run scripts/screen_api.py entex \ --accession EH38E1310345 \ --output /tmp/entex.json
bash uv run scripts/screen_api.py entex \ --region chr1:1000068:1000409 \ --output /tmp/entex.json
gwas: Query genome-wide association studies, SNPs, or enrichment data.bash uv run scripts/screen_api.py gwas studies \ --output /tmp/gwas.json
bash uv run scripts/screen_api.py gwas snps --study \ Ahola-Olli_AV-27989323-Eotaxin_levels \ --output /tmp/gwas_snps.json
You can supply the --assembly mm10 or --assembly grch38 flag to explicitly request a specific assembly for most commands. By default, the script targets grch38 but will automatically fall back to mm10 if no results are found or if the query fails.
For accessing raw experiments, ChIP-seq peaks, or other datasets that are not represented as cCREs in SCREEN, use the scripts/encode_portal_api.py script. It allows custom queries to the ENCODE Portal REST API.
bashuv run scripts/encode_portal_api.py search "type=Experiment&target.label=ZNF549" --output /tmp/znf549_experiments.json
When analyzing .bed or .bigBed files downloaded from ENCODE, standard bioinformatics tools are highly recommended for finding overlaps (e.g., between gene promoters and peaks):
bedtools: For fast mathematical operations on genomic intervals.bigBedToBed: For converting binary BigBed files to readable BEDformat.
pybedtools: A Python wrapper for bedtools.Write custom logic if these tools are not pre-installed.
If you need to make a complex GraphQL query that the script does not support, read references/graphql_schema.md for a reference of available queries, arguments, and return fields in the SCREEN GraphQL API.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-17 | fail→pass | 9,986 | 9,277 | -7% | 1 | 1 | 0% | 1,501 | 2,336 | +56% | 0 | 0 | — |
case-01 | fail→fail | 17,945 | 6,513 | -64% | 1 | 1 | 0% | 3,311 | 2,151 | -35% | 0 | 0 | — |
case-02 | fail→fail | 13,525 | 5,778 | -57% | 1 | 1 | 0% | 2,474 | 2,077 | -16% | 0 | 0 | — |
case-03 | fail→fail | 15,282 | 7,220 | -53% | 1 | 1 | 0% | 2,776 | 2,104 | -24% | 0 | 0 | — |
case-04 | pass→pass | 12,425 | 13,908 | +12% | 1 | 1 | 0% | 2,224 | 3,400 | +53% | 0 | 0 | — |
case-05 | pass→pass | 12,593 | 17,036 | +35% | 1 | 1 | 0% | 2,223 | 4,877 | +119% | 0 | 0 | — |
case-06 | pass→pass | 14,965 | 21,697 | +45% | 1 | 1 | 0% | 2,812 | 5,237 | +86% | 0 | 0 | — |
case-07 | fail→fail | 13,893 | 9,434 | -32% | 1 | 1 | 0% | 2,413 | 2,440 | +1% | 0 | 0 | — |
case-08 | fail→fail | 10,233 | 7,228 | -29% | 1 | 1 | 0% | 1,677 | 2,295 | +37% | 0 | 0 | — |
case-09 | fail→pass | 13,963 | 9,523 | -32% | 1 | 1 | 0% | 2,227 | 2,506 | +13% | 0 | 0 | — |
case-10 | fail→fail | 19,074 | 6,347 | -67% | 1 | 1 | 0% | 3,326 | 2,116 | -36% | 0 | 0 | — |
case-11 | fail→fail | 9,351 | 8,813 | -6% | 1 | 1 | 0% | 1,498 | 2,228 | +49% | 0 | 0 | — |
case-12 | fail→fail | 12,005 | 6,350 | -47% | 1 | 1 | 0% | 1,967 | 2,235 | +14% | 0 | 0 | — |
case-13 | fail→fail | 9,528 | 8,196 | -14% | 1 | 1 | 0% | 1,759 | 2,391 | +36% | 0 | 0 | — |
case-14 | fail→pass | 7,418 | 3,672 | -50% | 1 | 1 | 0% | 930 | 2,418 | +160% | 0 | 0 | — |
case-15 | fail→fail | 8,746 | 3,835 | -56% | 1 | 1 | 0% | 1,389 | 2,401 | +73% | 0 | 0 | — |
case-16 | pass→pass | 10,400 | 9,203 | -12% | 1 | 1 | 0% | 1,806 | 3,409 | +89% | 0 | 0 | — |
case-18 | fail→fail | 10,623 | 7,185 | -32% | 1 | 1 | 0% | 1,657 | 2,225 | +34% | 0 | 0 | — |
case-19 | fail→pass | 21,044 | 2,553 | -88% | 1 | 1 | 0% | 1,778 | 2,228 | +25% | 0 | 0 | — |
case-20 | pass→pass | 22,901 | 11,670 | -49% | 1 | 1 | 0% | 2,481 | 3,267 | +32% | 0 | 0 | — |
case-21 | fail→pass | 12,644 | 2,430 | -81% | 1 | 1 | 0% | 1,931 | 2,120 | +10% | 0 | 0 | — |
case-22 | pass→pass | 8,499 | 3,127 | -63% | 1 | 1 | 0% | 1,464 | 2,313 | +58% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 12 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 12 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.