Compose Multiplatform Patterns
monta-app/ocpp-emulator
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
Scan a Kotlin or Compose Multiplatform diff for known footgun shapes and open the matching trap to confirm each hit.
$ npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install maxrave-dev/kotlin-footguns footgun-scan --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/footgun-scan .claude/skills/footgun-scan && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "footgun-scan" agent skill from https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scan into .claude/skills/footgun-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "footgun-scan", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scanType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install maxrave-dev/kotlin-footguns footgun-scan --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/footgun-scan .agents/skills/footgun-scan && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "footgun-scan" agent skill from https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scan into .agents/skills/footgun-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "footgun-scan", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install maxrave-dev/kotlin-footguns footgun-scan --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/footgun-scan .cursor/skills/footgun-scan && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "footgun-scan" agent skill from https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scan into .cursor/skills/footgun-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "footgun-scan", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/maxrave-dev/kotlin-footguns.git --path skills/footgun-scan--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install maxrave-dev/kotlin-footguns footgun-scan --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/footgun-scan .gemini/skills/footgun-scan && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "footgun-scan" agent skill from https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scan into .gemini/skills/footgun-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "footgun-scan", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install maxrave-dev/kotlin-footguns footgun-scanInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/footgun-scan .github/skills/footgun-scan && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "footgun-scan" agent skill from https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scan into .github/skills/footgun-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "footgun-scan", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install maxrave-dev/kotlin-footguns footgun-scan --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/maxrave-dev/kotlin-footguns.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/footgun-scan .opencode/skills/footgun-scan && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "footgun-scan" agent skill from https://github.com/maxrave-dev/kotlin-footguns/tree/main/skills/footgun-scan into .opencode/skills/footgun-scan/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "footgun-scan", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
footgun-scanScan a Kotlin or Compose Multiplatform diff for known footgun shapes and open the matching trap to confirm each hit.
Footgun Scan is an agent skill from maxrave-dev/kotlin-footguns. 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.
Its SKILL.md is about 520 tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/scan.py`).
It sits in Mobile, covering Android development. It works with Kotlin and Jetpack Compose. The repository describes itself as: Battle-tested agent skills mapping the footguns of Kotlin, Compose Multiplatform and the desktop JVM — mined from a production music app, not from documentation. The licence is GPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f5f0b49. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Footgun Scan loads about 518 tokens when it runs. Until then it costs about 52 tokens; SKILL.md has 257 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from maxrave-dev/kotlin-footguns at commit f5f0b49, republished under its GPL-3.0 licence (© maxrave-dev). 257 words, ~518 tokens.
.claude/skills/footgun-scan/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.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.
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 noisierPick 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.
-> path).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.Hits of one detector in one file are grouped: triage the group once, then check the listed lines for exceptions.
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.
© maxrave-dev, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (scripts) in skills/footgun-scan of maxrave-dev/kotlin-footguns.
Open the folder on GitHubat commit f5f0b49
Footgun Scan next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Footgun Scan this skillmaxrave-dev/kotlin-footguns | 1.1k | — | ~518 | Automated safety check: Pass | GPL-3.0 | |
| Compose Multiplatform Patternsmonta-app/ocpp-emulator | 180 | 5 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Android Developmentdpconde/claude-android-skill | 337 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Diagnosing Compose StabilityrosuH/EasyWatermark | 1.9k | 1 repos | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Claude Android NinjaDrjacky/claude-android-ninja | 124 | — | ~5.2k | Automated safety check: Pass | Apache-2.0 | |
| Jetpack Composedarriousliu/PiPixiv | 263 | — | ~1.5k | Automated safety check: Pass | Apache-2.0 |
monta-app/ocpp-emulator
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
dpconde/claude-android-skill
Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.
rosuH/EasyWatermark
A skill your agent uses to diagnose Jetpack Compose stability problems by enabling and reading the Compose Compiler Reports (classes.txt, composables.txt, composables.csv, module.json).
Drjacky/claude-android-ninja
Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.
darriousliu/PiPixiv
Jetpack Compose expert skill for Android UI development. An agent skill from darriousliu/PiPixiv.
sk2andy/candy-browser
Apply Candy Browser's project-specific Kotlin, Jetpack Compose, Android/WebView, testing, and generator conventions.
maxrave-dev/kotlin-footguns
Desktop JVM and build traps: JNA natives, bundling, memory, packaging, code signing, R8, deep links, Gradle and CI releases.
maxrave-dev/kotlin-footguns
Kotlin Multiplatform structure and language traps: module splits, expect/actual, Koin and ViewModel scoping, layers, version catalogs, erased overloads, Char and string-resource formatting limits.
maxrave-dev/kotlin-footguns
Media player traps on Media3/ExoPlayer and desktop engines: crossfade, audio focus, fades, loudness, DSP, queues and shuffle, position restore, service lifecycle, group listening.
maxrave-dev/kotlin-footguns
Remote API traps in Kotlin Multiplatform: Ktor clients, defensive parsing, Resource envelopes, OK responses that dropped your data, auth callbacks, retry backoff, downloads, websockets, clock sync.
maxrave-dev/kotlin-footguns
Reactive state and background-work traps: StateFlow conflation, flatMapLatest, job lifecycles, ViewModel bases, WorkManager, backups, crash reporting, logging, Glance widgets.
maxrave-dev/kotlin-footguns
Compose screen and interaction traps: navigation, adaptive layout, window insets, pagers, toolbars, sheets, list drag and selection, sliders, text fields, settings UI, one-shot effects.
Works with
Categories
Scan a Kotlin or Compose Multiplatform diff for known footgun shapes and open the matching trap to confirm each hit. Footgun Scan is an agent skill from maxrave-dev/kotlin-footguns. Scan a Kotlin or Compose Multiplatform diff for known footgun shapes and open the matching trap to confirm each hit.
Footgun Scan fits situations like: tasks that involve Android development.
Run `npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a claude-code`. Or copy the skill folder (skills/footgun-scan in maxrave-dev/kotlin-footguns) into .claude/skills/footgun-scan in your project. Claude Code loads it when a task matches its description.
Run `npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a codex`. Or copy the skill folder (skills/footgun-scan in maxrave-dev/kotlin-footguns) into .agents/skills/footgun-scan in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add maxrave-dev/kotlin-footguns --skill footgun-scan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/footgun-scan, .gemini/skills/footgun-scan, .github/skills/footgun-scan and .opencode/skills/footgun-scan in your project.
Going by SKILL.md and its folder, Footgun Scan needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Footgun Scan is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 518 tokens (SKILL.md is roughly 2.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Footgun Scan: Compose Multiplatform Patterns (monta-app/ocpp-emulator, 180 stars), Android Development (dpconde/claude-android-skill, 337 stars), Diagnosing Compose Stability (rosuH/EasyWatermark, 1.9k stars) and Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
maxrave-dev (a GitHub user) maintains it in maxrave-dev/kotlin-footguns, which has 1,085 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on September 25, 2026.
Source: maxrave-dev/kotlin-footguns on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.