From cybersec-toolkit
Generates boilerplate for a new module file, including array prefix, install function, and integration with install.sh, profiles, and MCP server. Useful when adding a new tool category.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cybersec-toolkit:module-scaffoldThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Adding a module is more invasive than adding a tool — it requires edits in several places.
Adding a module is more invasive than adding a tool — it requires edits in several places.
Pick a short module name and a SCREAMING_SNAKE prefix. Examples already used:
misc/MISC, networking/NET, recon/RECON, web/WEB, crypto/CRYPTO, pwn/PWN, reversing/RE, forensics/FORENSICS, enterprise/ENTERPRISE, wireless/WIRELESS, cracking/CRACKING, stego/STEGO, cloud/CLOUD, containers/CONTAINER, blueteam/BLUETEAM, mobile/MOBILE, blockchain/BLOCKCHAIN, llm/LLM.
modules/<name>.shTemplate:
#!/usr/bin/env bash
# Module: <name>
# Description: <one-line description>
# shellcheck disable=SC2034
<PREFIX>_PACKAGES=()
# shellcheck disable=SC2034
<PREFIX>_PIPX=()
# shellcheck disable=SC2034
<PREFIX>_GO=()
# shellcheck disable=SC2034
<PREFIX>_GO_BINS=()
# shellcheck disable=SC2034
<PREFIX>_CARGO=()
# shellcheck disable=SC2034
<PREFIX>_GEMS=()
# shellcheck disable=SC2034
<PREFIX>_GIT=()
# shellcheck disable=SC2034
<PREFIX>_GIT_NAMES=()
install_module_<name>() {
log_info "Installing <name> module..."
install_apt_packages "${<PREFIX>_PACKAGES[@]}"
install_pipx_packages "${<PREFIX>_PIPX[@]}"
install_go_packages "${<PREFIX>_GO[@]}"
install_cargo_packages "${<PREFIX>_CARGO[@]}"
install_gem_packages "${<PREFIX>_GEMS[@]}"
install_git_repos "${<PREFIX>_GIT[@]}"
log_success "<name> module install complete"
}
Mark executable: chmod +x modules/<name>.sh.
lib/common.sh → ALL_MODULESAppend the new module name to the ALL_MODULES array.
lib/common.sh → MODULE_DESCRIPTIONSAdd a one-line description (mirrored to MCP).
install.shinstall.sh sources modules conditionally — verify the dispatcher case statement covers <name>. Most installers iterate ALL_MODULES so no change needed.
In mcp_server/tools_db.py:
MODULE_DESCRIPTIONS = {
...
"<name>": "<same description as common.sh>",
}
Run python3 scripts/validate_mcp_sync.py after.
A module with empty arrays is dead code. Use the add-tool skill to add ≥1 tool before merging.
If the module deserves its own profile (e.g., myprofile.conf):
# profiles/<name>.conf
PROFILE_DESC="..."
MODULES="misc <name>"
SKIP_HEAVY=0
ENABLE_DOCKER=1
INCLUDE_C2=0
The validate-profiles CI job (inline in .github/workflows/ci.yml) checks every name in MODULES= against ALL_MODULES; run that same check locally by sourcing lib/common.sh and confirming each MODULES= entry appears in ALL_MODULES.
Use the validate-all skill — must show zero errors before merging.
npx claudepluginhub 26zl/cybersec-toolkit --plugin cybersec-toolkitWalks through adding a new cybersecurity tool to the installer: selecting the module, choosing an install method, editing config files, and running validators.
Plans, ideates, scaffolds, and validates BMad modules from ideas to installable packages with setup skills and structural checks.
Ideates, creates, and validates BMad modules: brainstorming architecture, scaffolding installable modules from built skills, and checking structural integrity.