agentleFS
iuryszaiurysza/agent-skills/skills/tool-install/SKILL.md

tool-install

Skill5 starsChanged 11 days agoMITView on GitHub

Plans and executes tool installations or upgrades with explicit approval, impact checks, rollback, and verification. Use only when the user asks to install or update software.

  • Pipes a download into a shell
  • Installs packages

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. About 0 are common, 11 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈11

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Default install paths and state mutations

    line 55
  2. Distinctive:

    If the user asked to update an already-installed tool, also research:

    line 58
  3. Very specific:

    If the link is sparse, run 2-3 targeted web_search queries to fill gaps:

    line 65
  4. Distinctive:

    Config: Default config or import/customize now

    line 97
  5. Very specific:

    Shell integration: Add to .zshrc now or skip

    line 99
  6. Distinctive:

    Write a markdown plan with this structure:

    line 110
  7. Very specific:

    If plannotator is available, gate the plan:

    line 177
  8. Distinctive:

    If the user wants changes, revise the plan and re-present.

    line 194
  9. Distinctive:

    Run the approved steps one at a time.

    line 198
  10. Distinctive:

    If a step fails, stop immediately.

    line 206
  11. Distinctive:

    Always research first: Never guess what a tool does or how to install it.

    line 212
  12. Distinctive:

    Always inspect the current environment: Don't assume a clean slate.

    line 213
  13. Distinctive:

    Prefer user-local installs: when global isn't required.

    line 216
  14. Very specific:

    Check releases → available via Homebrew (brew install lazygit)

    line 235
  15. Very specific:

    Check environment → which lazygit returns nothing, not installed

    line 236
  16. Distinctive:

    Check shell config → no lazygit aliases or env vars present

    line 237
  17. Very specific:

    Check current version → lazygit --version → v0.40.0

    line 249
  18. Very specific:

    Check install method → brew list lazygit → installed via Homebrew

    line 251

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Tool Install Planner

Purpose

Turn an "install this" or "update this" request into a fully researched, user-approved execution plan. The agent must never mutate the system without explicit sign-off.

    +-----------------+     +------------------+     +------------------+
    |  You paste link |---->|  I research tool |---->|  I inspect your  |
    |  or say "install|     |  + env impact    |     |  current system  |
    |  X"             |     |                  |     |                  |
    +-----------------+     +------------------+     +------------------+
                                                          |
                              +---------------------------+
                              v
                       +------------------+
                       |  I generate plan |
                       |  + briefing      |
                       |  + decisions     |
                       |  + rollback      |
                       +------------------+
                              |
                              v
                       +------------------+
                       |  You approve     |
                       |  (or revise)     |
                       +------------------+
                              |
                              v
                       +------------------+
                       |  I execute       |
                       |  + verify        |
                       +------------------+

Workflow

1. Ingest the Link

Fetch the provided URL with fetch_content or web_search to understand:

  • What the tool does (1-2 sentences)
  • Who uses it: end users directly, developers, automation/orchestration, or AI agents
  • Official installation methods (Homebrew, npm, pip, cargo, manual, etc.)
  • System requirements and dependencies
  • Default install paths and state mutations
  • Any post-install setup (config files, env vars, services, login items)

If the user asked to update an already-installed tool, also research:

  • What's new in the latest version (changelog, release notes)
  • Breaking changes or migration steps
  • Whether the current install method supports in-place upgrades
  • Config file format changes or deprecations

If the link is sparse, run 2-3 targeted web_search queries to fill gaps:

  • "<tool-name> installation guide macOS"
  • "<tool-name> Homebrew formula"
  • "<tool-name> dependencies requirements"

2. Environment Impact Analysis

Inspect the current environment to determine blast radius. Run diagnostics as needed

For each impact category, report what will change:

CategoryQuestions to Answer
BinariesNew executables? Where? Symlinks?
DotfilesNew configs in ~/.config, ~/.<tool>rc, shell rc files?
Shell envPATH, alias, export, eval $(...) additions?
ServicesBackground daemon? LaunchAgent? Auto-start?
macOS prefsAccessibility permissions? Full Disk Access? Notifications?
Disk spaceApproximate download + install size
NetworkFirewall rules? Network extensions?
Existing toolsConflicts with already-installed tools? Replaces anything?
UninstallClean removal possible? Orphans left behind?

3. Decision Points

Surface choices the user can make. Examples:

  • Install method: Homebrew vs. manual vs. npm vs. pip
  • Scope: Global (-g, /usr/local) vs. user-local (~/.local)
  • Version: Latest vs. pinned version
  • Config: Default config or import/customize now
  • Service: Enable auto-start now or manually later
  • Shell integration: Add to .zshrc now or skip
  • Existing conflicts: Replace old version? Keep both?

For each decision, present:

  • The options
  • Your recommendation with rationale
  • The default (if user wants to skip the choice)

4. Generate the Installation/Update Plan

Write a markdown plan with this structure:

# Install Plan: <tool-name>

## Briefing

### What It Is

1-2 sentences on what this tool does and its main purpose.

### How You'll Use It

- **Agent tool** — I (the AI) will call this on your behalf as part of
  automated workflows. You don't interact with it directly.
- **User-exposed tool** — You will run this manually in your terminal or via
  a GUI. It's a tool for your direct use.
- **Both** — You can use it directly, and I may also invoke it in automated
  flows.

Typical daily usage: "Youll run `foo` in terminal to..." or "I'll call `foo`
when you ask me to..."

### ASCII Overview

[Your Request] [Terminal] [System] | | | v v v +--------+ +-------------+ +----------------+ | "do X" |--------->| tool-name X |----->| changes files | +--------+ +-------------+ | starts service | | writes config | +----------------+


## Current State
Already installed? Version? Install method found?

## Environment Impact
- Binaries: ...
- Config: ...
- Shell: ...
- Services: ...
- Disk: ~X MB
- Risks: ...

## Decisions
1. **Install via** [Homebrew / npm / pip / manual]
   - Recommended: Homebrew
   - Rationale: ...
2. **Shell integration** [Yes / No]
   - Recommended: Yes
   - Adds to `.zshrc`: ...
3. ...

## Steps
1. Step one
2. Step two
3. Verify with: `<command>`
4. Rollback if needed: `<command>`

## Rollback Plan
How to fully undo this installation or revert to the previous version.

If plannotator is available, gate the plan:

plannotator annotate /tmp/tool-install-<tool-name>.md --gate

Otherwise, present the plan inline and ask for explicit approval.

5. Approval Gate

Do not proceed with installation until the user explicitly approves.

Approval format to request:

Reply with "approve" or "go" to execute, or tell me which decisions to change.

If the user wants changes, revise the plan and re-present.

6. Execute (Only After Approval)

Run the approved steps one at a time. Verify each step before proceeding:

# After install or update, verify
<tool-name> --version
which <tool-name>

If a step fails, stop immediately. Do not continue. Report the error and ask whether to rollback, retry, or abort.

Rules

  1. Never install without explicit user approval.
  2. Always research first. Never guess what a tool does or how to install it.
  3. Always inspect the current environment. Don't assume a clean slate.
  4. Always provide a rollback plan. The user should know how to undo.
  5. Prefer Homebrew for macOS CLI tools unless there's a good reason not to.
  6. Prefer user-local installs when global isn't required.
  7. Flag destructive changes. Overwriting configs, replacing system tools, or enabling background services deserve extra warning.
  8. If the link is a GitHub repo, check README.md, install.sh, releases page, and Makefile for official install instructions.
  9. If the link is a website, look for "Download", "Install", or "Get Started" sections.
  10. If the install involves curl | bash, flag it as high-risk and recommend an alternative if one exists.

Examples

Install

User: install this https://github.com/jesseduffield/lazygit

Agent actions:

  1. Fetch the GitHub repo README → understand it's a terminal UI for git
  2. Check releases → available via Homebrew (brew install lazygit)
  3. Check environment → which lazygit returns nothing, not installed
  4. Check shell config → no lazygit aliases or env vars present
  5. Decision points: install via Homebrew or what. pros and cons, add alias to .zshrc (optional, default no)
  6. Present plan, wait for approval
  7. On approval: brew install lazygit, verify with lazygit --version

Update

User: update lazygit

Agent actions:

  1. Check current version → lazygit --version → v0.40.0
  2. Research latest → v0.44.0, changelog shows new features, no breaking changes
  3. Check install method → brew list lazygit → installed via Homebrew
  4. Decision points: update now (recommended), or pin at current version
  5. Present plan showing version delta and any migration steps
  6. On approval: brew upgrade lazygit, verify with lazygit --version

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.