Composables

Footgun Scan

Community

maxrave-dev

Scan a Kotlin or Compose Multiplatform diff for known footgun shapes and open the matching trap to confirm each hit. Use before committing, when reviewing a Kotlin change, or to audit a codebase.

Overview

Repository
maxrave-dev/kotlin-footguns
Publisher
maxrave-dev
Stars
2.3K
Forks
12
Bundled files
1
License
GPL-3.0
Updated
Oct 29, 2026

Installation

tmp=$(mktemp -d)
git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/footgun-scan" ~/.claude/skills/footgun-scan
rm -rf "$tmp"

Instructions

Footgun scan

scripts/scan.py matches 32 patterns against the lines a change adds. Each pattern is tied to one trap file in the kotlin-footguns area skills. It finds shapes, not bugs: every hit needs the trap's judgment before it becomes a finding.

Run it

From inside the user's git repository, with this skill's base directory as <skill>:

python3 <skill>/scripts/scan.py                     # lines added in the working tree and index since HEAD
python3 <skill>/scripts/scan.py --base origin/main  # lines added on this branch since it left main
python3 <skill>/scripts/scan.py --all src/          # every line under a path: an audit, and noisier

Pick the scope from the request. Uncommitted work takes the default. A branch or pull request takes --base with its target branch. "Audit the codebase" takes --all, narrowed to the paths that matter. For a pre-commit hook or CI step, add --fail to exit 1 on any likely hit.

Triage every hit

  1. Read the trap file the hit points to (the -> path).
  2. Read the code around the hit and decide, by the trap's own conditions, whether it applies. A likely hit is wrong unless the exception the trap names holds. A look hit is a place the trap says to inspect before trusting it.
  3. Report each confirmed problem with the trap's fix and its Verifying step. List dismissed hits one line each with the reason, for example "column is NOT NULL" or "the fade goes to black".

Hits of one detector in one file are grouped: triage the group once, then check the listed lines for exceptions.

When the scanner cannot run

It needs python3 and git. Without them, read scripts/scan.py: the DETECTORS list gives each pattern, its message and its trap. Run those patterns with the Grep tool over the changed files and triage the same way.

Bundled files

FAQ

What does Footgun Scan do?

Scan a Kotlin or Compose Multiplatform diff for known footgun shapes and open the matching trap to confirm each hit. Use before committing, when reviewing a Kotlin change, or to audit a codebase.

Who made Footgun Scan?

maxrave-dev (a community member) publishes it in the maxrave-dev/kotlin-footguns repository on GitHub.

Is Footgun Scan free?

Yes. Footgun Scan is open source, published by maxrave-dev under the GPL-3.0 license.

What comes with Footgun Scan?

Its instructions and 1 file the agent reads only when a task needs them, such as references, examples or scripts.

Which agents can use Footgun Scan?

Any coding agent that reads SKILL.md files, including Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI. The agent loads the skill when a task matches its description.

What are agent skills?

An agent skill is a folder with a SKILL.md file: instructions that teach a coding agent how to do one kind of task, and optionally files it can read while it works. The agent keeps only the skill's name and description in mind and reads the rest when a task calls for it.

How are agent skills different from MCP servers?

An MCP server gives an agent new tools to call, code that runs somewhere and returns results. A skill gives it knowledge: how to approach a task with the tools it already has. Many agents use both.

How can my agent test my Android app?

Robomori lets coding agents create, start and control Android emulators and devices from one command, so they can install your app, take screenshots and check dark mode, font sizes and languages.

You're subscribed

The next lesson lands in on Wednesday.