Skip to main content

scaffold-security

Scaffold a security tool project with CLI, logging, and target handling. Prefer uv-based setup and packaging; if uv is unavailable, warn the user, request approval, and use a fallback bootstrap path.

Jump to install

Source facts

Repository
SpecterOps/skills
Last source activity
May 29, 2026 at 15:51
Detected SKILL.md language
English
Stars
657
Forks
72

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
4 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
scaffold-security
description
Scaffold a security tool project with CLI, logging, and target handling. Prefer uv-based setup and packaging; if uv is unavailable, warn the user, request approval, and use a fallback bootstrap path.
metadata
{"author":"GhostWorks"}
# Scaffold Security Create a security/pentest tool scaffold with a consistent Python project layout. ## Input Parsing Accept input as: `TOOL_NAME [DESCRIPTION]` Examples: - `$scaffold-security recon-spider` - `$scaffold-security recon-spider "Async web crawler for subdomain content discovery"` If no tool name is provided, ask the user for one before proceeding. ## Preference Policy - Prefer `uv` for initialization and environment management. - If `uv` is missing: - warn the user that `uv` is preferred, - remind them to install `uv`, - ask for approval before using a fallback bootstrap path. - Fallback only after explicit user approval. Recommended install reminder: ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` ## Steps (Preferred: uv) 1. Create the project directory in the current working directory. 2. Run: ```bash uv init --name <tool_name> --package ``` 3. Ensure structure exists: ```text <tool_name>/ src/ <package_name>/ __init__.py main.py cli.py core.py output.py tests/ __init__.py conftest.py .gitignore README.md pyproject.toml ``` 4. Ensure `pyproject.toml` includes: - Python `>=3.11` - runtime dependencies: `typer`, `rich`, `pydantic`, `httpx` - dev dependencies: `pytest`, `ruff`, `mypy` - script entry point mapping tool name to `<package>.cli:app` - Ruff config (line length 88, 4-space indent) 5. Implement `cli.py` with: - Typer app - options for target, ports, output, format, verbose, timeout - logging setup using `rich.logging` - delegation to `core.py` 6. Implement `core.py` with: - typed models for results - tool logic class/functions - async support where network I/O is expected 7. Implement `output.py` with: - formatters for text/json/csv output - helper for stdout vs file output 8. Implement `main.py` with `__main__` entry. 9. Write test stubs and basic README usage. 10. Run: ```bash uv sync ``` 11. Report created files and example usage. ## Fallback Steps (Only If Approved) Use only when `uv` is unavailable and user explicitly approves fallback. 1. Create the same project structure. 2. Write/adjust `pyproject.toml` with equivalent project and tool settings. 3. Initialize virtual environment: ```bash python3 -m venv .venv .venv/bin/python -m pip install --upgrade pip ``` 4. Install dependencies: ```bash .venv/bin/pip install typer rich pydantic httpx pytest ruff mypy ``` 5. Report fallback usage and remind user to install `uv` for future scaffolds. ## Output Requirements - Report final directory tree. - Report whether preferred (`uv`) or fallback path was used. - Include a runnable example command for the scaffolded tool. - If fallback was used, include the `uv` install reminder at the end.
View on GitHub