install-dev-tools
Skill7 starsChanged 2 months agoMITView on GitHub
Use when setting up a new machine or checking that the coding tools required by the agent guidance (Rust, Go, .NET, Node, Python, shell, PowerShell, Terraform, containers, Tauri, and workflow tools) are installed. Audits what is installed on macOS, Windows, or Ubuntu/Debian, reports gaps, and installs each tool group only after confirmation.
- Reads credentials
- Installs packages
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- address-pr-commentsSkill
- build-and-scan-container-imageSkill
- execute-database-migrationSkill
- generate-adrSkill
- generate-service-documentationSkill
- get-pr-commentsSkill
- incident-triageSkill
- prepare-releaseSkill
- remediate-dependency-vulnerabilitiesSkill
- review-configurationSkill
- twg-agentic-searchSkill
- twg-artifactsSkill
- twg-code-reviewSkill
- twg-confluenceSkill
- twg-context-discoverySkill
- twg-engineering-workSkill
- twg-jira-resolve-merged-workSkill
- twg-jiraSkill
- twg-operational-healthSkill
- twg-responsibility-routingSkill
- twgSkill
- twg-space-creationSkill
- twg-status-rollupsSkill
- validate-and-deploy-iacSkill
- validate-and-deploy-kubernetesSkill
- validate-documentationSkill
- validate-github-actionsSkill
- verify-service-healthSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 4 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 23
Detect the platform: Use uname -s and /etc/os-release (or $env:OS in PowerShell) to select macos, windows, or ubuntu.
- Distinctive: line 48
Ask for confirmation for that group.
- Very specific: line 50
Run the commands in requires order, one tool at a time.
- Very specific: line 57
Corporate TLS: Only when a download or install failed with a certificate error, or the user asks, run the [tls] test.
- Very specific: line 70
Never run sudo without telling the user which command and why, and never run it for a group the user has not confirmed.
- Very specific: line 72
Never pipe a download into a shell.
- Distinctive: line 75
Do not upgrade, downgrade, or uninstall a tool that is already present unless the user asks.
- Distinctive: line 78
Do not edit shell profiles, system PATH, or registry settings without showing the exact change first.
- Very specific: line 80
Do not authenticate to any service, enter credentials, or write tokens or certificates into a repository.
- Very specific: line 83
Do not add the user to groups (for example docker) or change system security settings.
- Very specific: line 96
Check that a command really succeeded: piping through tail hides the exit status, so use ${PIPESTATUS[0]} or re-run the tool's check.
- Very specific: line 123
Add or change tools in tools.toml only.
- Very specific: line 125
Keep each guidance value in step with the topic files in AGENTS.md routing.
- Very specific: line 128
Keep commands pinned or locked where the ecosystem allows (for example cargo install --locked).
- Distinctive: line 131
Verify the file still parses after editing:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Install Dev Tools
Guide the user through installing the tools required by the languages and
topics in ~/.agents. The tool catalog is tools.toml in this skill's
directory; this file is the workflow. Topic files remain the source of policy:
tools.toml names the guidance file each group supports.
Parameters
groups: group ids fromtools.toml, orall; default is to ask.mode:audit(report only) orinstall; defaultinstall, which always audits first.includeOptional: install tools whosenotecalls them optional; defaultfalse.
Workflow
- Detect the platform. Use
uname -sand/etc/os-release(or$env:OSin PowerShell) to selectmacos,windows, orubuntu. Treat any Debian-family distribution asubuntu. Stop and report for any other OS. - Check the package manager. Require Homebrew (macOS), winget (Windows), or apt (Ubuntu). If it is missing, tell the user how to install it and stop; do not install a package manager yourself.
- Choose groups. List the
[[group]]entries with their titles and ask which to cover. Pre-select groups for languages the user names. Include a group'srequiresdependencies even if their group was not chosen, and say so. - Audit. For each tool in the chosen groups, run its
checkcommand (usecheck_<os>when present) and record the version or "missing". Run checks one at a time; a failing check is expected output, not an error. Compare againstmin_versionwhen set and mark older versions "outdated". Never install or upgrade during this step. - Report the gaps. Show one table per group: tool, status (installed,
outdated, missing, manual), version, and what needs doing. Tools with no
install command for this OS are "manual": show their
note. Ifmodeisaudit, stop here. - Install one group at a time. For each group that has gaps, in the order
core, language groups, then the rest:
- Print the exact commands, with
{winget_flags}expanded from[meta]. - Flag anything that needs attention before the user answers:
sudo, remote scripts (remote_script), shell-profile changes, GUI installers, large downloads, and anynote. - Ask for confirmation for that group. Do not batch confirmations across groups.
- Run the commands in
requiresorder, one tool at a time. If a command fails, stop that group, show the error, and ask whether to skip, retry, or abort. Do not try alternative install methods on your own. - Re-run each tool's
checkand report the new status. If a tool installed but its check still fails, look for a PATH problem (for example~/go/binor~/.local/bin) and offer the profile change shown in the tool'snote.
- Print the exact commands, with
- Corporate TLS. Only when a download or install failed with a certificate
error, or the user asks, run the
[tls]test. If it fails and~/.ssh/zscaler/zscaler.pemexists, followssl-tls.mdand the[tls]section oftools.toml: build the bundle if needed, then offer the per-tool settings one at a time. Show the exact line to be added to the shell profile and get confirmation before editing it. Never setSSL_CERT_FILEto the Zscaler file alone; "replaces" settings need the combined bundle. - Final report. List installed, already present, outdated, skipped,
failed, and manual items. Remind the user to open a new shell so PATH changes
take effect, and to run
gh auth loginthemselves ifghwas installed.
Safety
- Never run
sudowithout telling the user which command and why, and never run it for a group the user has not confirmed. - Never pipe a download into a shell. For
remote_scriptcommands, download to a file first, show the URL and file size, tell the user they can read the script, and run it only after confirmation. - Do not upgrade, downgrade, or uninstall a tool that is already present unless the user asks. For an outdated tool, offer the upgrade as its own confirmed step.
- Do not edit shell profiles, system PATH, or registry settings without showing the exact change first.
- Do not authenticate to any service, enter credentials, or write tokens or
certificates into a repository. Authentication steps such as
gh auth loginare for the user to run. - Do not add the user to groups (for example
docker) or change system security settings. - Stay within the catalog. If the user wants a tool that is not in
tools.toml, add a[[tool]]entry only after confirming the commands, and say you did. - Installation needs network access and writes outside the project. Expect
permission prompts, and ask the user before running any command outside the
sandbox. The default sandbox network allowlist covers GitHub and npm only;
Homebrew, crates.io, and the Go module proxy are blocked, so those installs
fail inside it. A 403 "CONNECT tunnel failed" or a read-only
/opt/homebrewmeans the sandbox blocked the command, not that the system is broken: retry outside the sandbox with the user's confirmation, and never run thesudo chownthat Homebrew suggests in that case. - Check that a command really succeeded: piping through
tailhides the exit status, so use${PIPESTATUS[0]}or re-run the tool'scheck.
Sandbox network allowlist
Installs that run inside the Claude Code sandbox need their download hosts in
sandbox.network.allowedDomains in the user's settings.json (or via the
/sandbox command). This skill never edits that setting; suggest the hosts and
let the user decide. Homebrew is deliberately left out, because it also needs
write access to /opt/homebrew, which the sandbox does not grant.
| Needed for | Hosts |
cargo install | crates.io, index.crates.io, static.crates.io |
go install | proxy.golang.org, sum.golang.org |
| Go toolchain downloads (optional) | go.dev, dl.google.com |
| Release binaries from GitHub, such as tflint | *.githubusercontent.com (GitHub redirects downloads there; *.github.com does not cover it) |
| Python packages (optional) | pypi.org, files.pythonhosted.org |
| PowerShell modules (optional, not verified) | www.powershellgallery.com |
GitHub and npm hosts are normally already allowed. Allowing a package registry lets builds run inside the sandbox fetch and execute third-party code such as Rust build scripts; the sandbox's filesystem limits contain it, but tell the user that trade-off.
Maintaining the catalog
- Add or change tools in
tools.tomlonly; keep the field documentation at the top of that file accurate. - Keep each
guidancevalue in step with the topic files inAGENTS.mdrouting. When a topic file adds a required tool, add it here in the same change. - Keep commands pinned or locked where the ecosystem allows (for example
cargo install --locked). Tools installed with@latestcarry a note that projects must pin their own version. Verify the file still parses after editing:
python3 -I -c "import tomllib; tomllib.load(open('tools.toml','rb'))"
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

