php-internal/dload/dload-fetch-tool
Claude Code and agent skill by php-internal/dload
- community
Checking that the SKILL.md file is still in the repository.
Get a CLI tool — native binary or PHAR — from a GitHub or GitLab release (public or self-hosted) into a project folder with dload (`vendor/bin/dload`). Use when the user wants tool X (rr, temporal, buf, a PHAR…) downloaded into the project or added to `dload.xml`, when a download picks the wrong asset or none, or when setting up dload's release cache (version registry) locally or in CI, including GitHub API rate limits.
Install
npx vskill@latest install php-internal/dload/dload-fetch-toolSKILL.md
Download a GitHub binary or PHAR into a project with dload
The task — "tool X from GitHub, available in this project's folder" — turns on one question: does dload already know this tool? If yes, dload.xml gets one <download> line. If no, the tool is also described inline in the same file. Native binaries and .phar files are both first-class; they differ in a couple of fields.
Everything happens in the consuming project's own dload.xml (dload itself is installed via composer require internal/dload).
Step 1 — check what dload already knows
Prints every tool dload knows with its alias and, in brackets, its source: official, dload.xml, or the Composer package that declares it. Tool listed → Step 3. Not listed → Step 2.
Step 2 — describe a missing tool inline
Add a <software> block to the <registry overwrite="false"> element of the project's dload.xml. Read `references/registry-entry.md` first: it lists the facts to collect from the GitHub release and how to design asset-pattern and binary.pattern for binaries and PHARs.
Done when the block has a <repository> whose asset-pattern matches every OS/arch variant of the tool and nothing else in the release.
When the tool is needed by a Composer package (a framework, a CMS) rather than by one project, the package declares the block for every project that installs it: read `references/package-registry.md`.
Step 3 — add the <download> action
| Attribute | Purpose | |
|---|---|---|
software | Alias or name of the tool (built-in or inline). <package>#<id> (acme/framework#gh) picks the entry of that Composer package, whatever shadows it. Required. | |
version | Composer-style constraint: ^2025.1, ~1.0.0, ^2.12.0@beta, ^2.12.0-hotfix@alpha (feature builds, alpha ones included), one pre-release like 2025.1.0-rc.2, or a range from one like ^2025.1.0-rc.1. Omit for latest stable. Pre-releases order by stability (nightly < snapshot < dev < unstable < alpha < preview < beta < pre < RC < stable), then by number; stable by default. A pre-release in a constraint sets the minimum stability for any operator, even <3.5.0-beta.2; lower it with @alpha/@dev. A keyword without a number is a bound too: >2.0-beta takes 2.0.0-RC1 and 2.0.0. An exact version with a pre-release or another suffix is that one tag: 2.0-beta skips 2.0.0-beta.3, 2.12.0-hotfix skips 2.12.0-hotfix.2; after ^, ~ or a comparison a non-stability suffix is a feature the tag must contain. A tagged build like 2025.1.0-rc.2-linux orders right after its pre-release: an exact 2025.1.0-rc.2 skips it, >2025.1.0-rc.2 takes it. Numbers may have more than three parts (1.2.3.4), in constraints too (>=1.2.3.4.5); trailing zero parts and build metadata don't count (1.2.3 = 1.2.3.0 = 1.2.3+build.5). Case doesn't matter (-ARM64 = -arm64, ^1.0-Linux takes 1.0.0-linux), and a pre-release may be glued to the number as in tags (^2.0.0rc1). | |
extract-path | Target folder (default: project root). | |
type | binary (default), phar (required for PHAR — skips extraction), archive (unpack the whole asset keeping its folder layout). |
type="archive" is for tools that ship more than one executable — frontend bundles, docs, a binary that loads sibling libraries by relative path. Read `references/archive-mode.md` before using it.
The authoritative schema is vendor/internal/dload/dload.xsd.
Step 4 — pick the destination folder
extract-path is the literal folder the file lands in, for binaries and PHARs alike. Keep the folder in VCS with a .gitkeep and put the downloaded file in .gitignore — only dload.xml belongs in git.
Step 5 — run dload and verify
Done when the tool runs: ./bin/rr --version, php ./tools/trap.phar --version.
Release lists are answered from a local cache — the version registry — for 10 minutes after the last check of a repository, so a release published moments ago may need dload get --refresh. For cache location and TTL, and for any CI setup — passing GITHUB_TOKEN and carrying the registry between runs, with GitHub Actions and GitLab examples — read `references/version-registry.md`.
When the download fails
dload get exits non-zero and prints, per failed tool, the API error, the releases it checked, their assets, and the filter that rejected them. Read that report, then walk the selection stages in `references/troubleshooting.md`.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/dload-fetch-tool/SKILL.md
Popularity
- Repository stars
- 101
- Repository forks
- 3
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/php-internal/dload/dload-fetch-tool)