Skip to content
Back to skills

Download And Filter

ASecurity

"Route NCBI genome download requests through the

  • 247 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
toolspythongobashapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill download-and-filter --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Download And Filter?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Download And Filter
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-download-and-filter/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-download-and-filter)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: download-and-filter
description: "Route NCBI genome download requests through the
  ncbi-genome-download CLI or Python API, selecting the correct section, group,
  format, assembly and taxonomy filters before a verified dry run."
disable-model-invocation: true
metadata:
  disco-role: operating
license: Apache 2.0
---

# Download and filter

Use this sub-skill when the user wants to download NCBI assembly files, preview
which assemblies match a request, or construct/test the equivalent Python API
call. It owns candidate selection, CLI parsing, `NgdConfig` validation, and
filter semantics. It does not own checksum validation, resume/output-tree
repair, symlink layout, or metadata-table column details.

## Route first

1. Establish the NCBI `section` (`refseq` or `genbank`) and one or more
   `groups`. The RefSeq section does **not** accept `metagenomes`; use
   `--section genbank metagenomes` (or the equivalent API keywords). The
   positional CLI group is required even though the help text describes an
   `all` default.
2. Select formats, assembly levels, RefSeq categories, and candidate filters.
   Lists are comma-separated with **no spaces after commas**. Read the exact
   flags and combinations in [the CLI reference](references/cli-reference.md)
   and the filter/file rules in
   [filtering-and-data.md](references/filtering-and-data.md).
3. Run a dry run before downloading genome payloads. For example:

   ```bash
   ngd --section refseq --formats fasta \
       --assembly-levels complete,chromosome \
       --genera Streptomyces --dry-run bacteria
   ```

   Expected output starts with `Considering the following N assemblies for
   download:` and then prints accession, organism name, and extracted strain
   columns separated by tabs. A dry run still obtains/parses the assembly
   summary (possibly from cache), so it is not a promise of zero network I/O;
   it prevents genome-file download jobs.
4. Only after the candidate list is plausible, remove `--dry-run` and choose
   the output/checksum/resume behavior with
   [output-and-integrity](../output-and-integrity/SKILL.md). Use
   [taxonomy-helper](../taxonomy-helper/SKILL.md) only when a taxonomy-tree
   expansion is requested; it is not part of ordinary exact TaxID filtering.

## Entry points and API

Both installed console commands are equivalent:

```bash
ncbi-genome-download --help
ngd --version
```

The public imports are `download`, `args_download`, `argument_parser`, and
`NgdConfig`:

```python
from ncbi_genome_download import NgdConfig, argument_parser, args_download, download

# API calls use Python keyword names and return an integer status.
status = download(
    section="refseq",
    groups="bacteria",
    file_formats="fasta,assembly-report",
    assembly_levels="complete",
    dry_run=True,
)

parser = argument_parser(version="0.3.4")
status = args_download(parser.parse_args(["--dry-run", "bacteria"]))
```

Read [api-reference.md](references/api-reference.md) before translating a CLI
request to Python: `output` and `file_formats` are API names, and CLI-only
`--retries`, `--verbose`, and `--debug` are not `download(**kwargs)` settings.

## Operating checks

- Confirm section/group compatibility and exact spelling before the first
  summary request.
- Confirm every comma-separated value has no whitespace after the comma and
  that quoted values containing spaces are intentional.
- Prefer exact genus-prefix, strain, TaxID, species-TaxID, and accession
  filters; enable `--fuzzy-genus` only for a case-insensitive substring search
  in NCBI's `organism_name`, and `--fuzzy-accessions` only for accession-prefix
  matching.
- Treat all candidate filters as an intersection. A zero-match result returns
  status `1` and logs `No downloads matched your filter. Please check your
  options.`; do not infer that NCBI has no data until the dry-run filters and
  section are checked.
- A successful dry run returns `0`; a normal completed call returns `0`.
  Connection or chunked-transfer failures return `75` and should be handled by
  the CLI retry loop described in
  [troubleshooting.md](references/troubleshooting.md).

For invalid values, deprecated aliases, cache surprises, and network failures,
use [troubleshooting.md](references/troubleshooting.md). Link every output,
checksum, resume, symlink, and metadata serialization question to
[output-and-integrity](../output-and-integrity/SKILL.md), rather than
re-documenting it here.

## Local references

- [CLI reference](references/cli-reference.md)
- [Python API reference](references/api-reference.md)
- [Filtering and input data](references/filtering-and-data.md)
- [Troubleshooting](references/troubleshooting.md)

Files in this skill

  • SKILL.md4.6 KB
  • references/api-reference.md8 KB
  • references/cli-reference.md7.5 KB
  • references/filtering-and-data.md8.2 KB
  • references/troubleshooting.md7.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.