Add a new tool to the installer

SkillFiles & storage

Use when adding a new cybersecurity tool to this installer. Walks through editing the right module file, adding to tools_config.json, running validators, and syncing MCP server data if needed. Triggers on phrases like "add tool", "add <toolname>", "register a new tool", "include X in the installer".

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Add a new tool to the installer skill

What this skill tells your AI

The instructions your AI receives, as published by 26zl/cybersec-toolkit in .claude/skills/add-tool/SKILL.md and read by ahel’s review.

Use this when the user wants to add a new tool. Follow these steps in order. Do not skip validation.

1. Decide which module the tool belongs to

Match the tool to one of the 18 modules:

ModulePrefixTools
misc.shMISC_General CLI helpers, utilities
networking.shNET_Scanners, sniffers, proxies
recon.shRECON_OSINT, subdomain enum, fingerprinting
web.shWEB_Web app testing, fuzzing, scanners
crypto.shCRYPTO_Crypto attack tools, analysis
pwn.shPWN_Binary exploitation, debuggers, fuzzers
reversing.shRE_Disassemblers, decompilers
forensics.shFORENSICS_Disk/memory/file forensics
enterprise.shENTERPRISE_AD, Kerberos, post-exploit
wireless.shWIRELESS_Wi-Fi, Bluetooth
cracking.shCRACKING_Password cracking, hash tools
stego.shSTEGO_Steganography
cloud.shCLOUD_AWS/GCP/Azure tooling
containers.shCONTAINER_Docker, k8s
blueteam.shBLUETEAM_Detection, IR, hardening
mobile.shMOBILE_APK, iOS analysis
blockchain.shBLOCKCHAIN_Smart contracts, EVM
llm.shLLM_AI/LLM testing

2. Pick the install method

Preferred order: apt > pipx > go > cargo > binary release > gem > Docker > git clone > build from source

Add to the matching array in modules/<module>.sh:

MethodArrayFormat
apt<PREFIX>_PACKAGES"package-name"
pipx<PREFIX>_PIPX"pypi-name"
Go<PREFIX>_GO + <PREFIX>_GO_BINS"github.com/owner/repo/cmd@latest" + "binary-name"
Cargo<PREFIX>_CARGO"crate-name"
Gem<PREFIX>_GEMS"gem-name"
Git<PREFIX>_GIT + <PREFIX>_GIT_NAMES"name=https://github.com/owner/repo" + "name"
Binary releaseBINARY_RELEASES_<MODULE> in lib/installers.sh"owner/repo|binary|pattern|dest_dir"
DockerALL_DOCKER_IMAGES in lib/installers.sh"image|label" + add docker_pull call in module install function
Build from sourcebuild_from_source call in install_module_*() + <PREFIX>_BUILD_NAMESinline

If apt package name differs across distros, add a row to lib/distro_compat.tsv (columns: debian | dnf | pacman | zypper | pkg). Use - to skip a distro, empty for passthrough, a+b for multi-package expand.

3. Add metadata to tools_config.json

Append an entry:

{
  "name": "tool-name",
  "method": "apt|pipx|go|cargo|gem|binary|docker|git|build",
  "module": "module-name",
  "url": "https://upstream/url"
}

4. Run validators (REQUIRED — must show 0 errors)

python3 scripts/validate_tools_config.py

If URLs are missing, populate them automatically:

python3 scripts/validate_tools_config.py --sync

5. Update MCP sync if applicable

If the tool was added to a data source mirrored in the MCP server:

  • New Docker image → also update mcp_server/tools_db.py DOCKER_IMAGES
  • New pipx tool whose binary name differs from PyPI name → also update mcp_server/tools_db.py PIPX_BIN_NAMES (mirror of scripts/verify.sh _PIPX_BIN_NAMES)
  • New module → also update lib/common.sh MODULE_DESCRIPTIONS AND mcp_server/tools_db.py MODULE_DESCRIPTIONS

Then validate sync:

python3 scripts/validate_mcp_sync.py

6. Lint and final checks

shellcheck --severity=warning install.sh lib/*.sh modules/*.sh scripts/*.sh
bash -n install.sh lib/*.sh modules/*.sh scripts/*.sh

scripts/verify.sh, scripts/update.sh, scripts/remove.sh all source modules and pick up array changes automatically — no edits needed there.

7. Optional: smoke test

./install.sh --module <module-name> --dry-run

Signals

GitHub stars
54
Forks
10
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
add-tool
Source
github.com/26zl/cybersec-toolkit