#526 by GitHub stars

maxrave-dev/kotlin-footguns

Battle-tested agent skills mapping the footguns of Kotlin, Compose Multiplatform and the desktop JVM — mined from a production music app, not from documentation.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/compose-screens-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/compose-visuals-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/data-layer-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/desktop-and-build-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/engineering-method-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/footgun-scan/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/kmp-architecture-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/media-playback-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/remote-api-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/state-and-background-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

skills/webview-footguns/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

dfcbe3208170 → 2c391bc9c9f8

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → dfcbe3208170

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 2c391bc9c9f873580aa855d7a7b1c3a2ed9e68ae

git clone --filter=blob:none --no-checkout https://github.com/maxrave-dev/kotlin-footguns.git .hotskills/maxrave-dev-kotlin-footguns && git -C .hotskills/maxrave-dev-kotlin-footguns checkout --detach 2c391bc9c9f873580aa855d7a7b1c3a2ed9e68ae # Copy each selected skill directory from .hotskills/maxrave-dev-kotlin-footguns into .claude/skills/<skill-name>/
2kGitHub stars
225stars in 7 days
11skills in this repository
5commits in 30 days

Heat

8.2
  • Star growth, last 7 daysAhead of 99% of tracked repositories
  • Star growth, last 24 hoursAhead of 99% of tracked repositories
  • Rank movement, last 7 daysAhead of 97% of tracked repositories
  • Commits, last 30 daysAhead of 70% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 16, 2026Nov 6, 20262,028

Individual skills in this repository

How it works

compose-screens-footguns

When your agent uses it

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. Use when layout, gestures or navigation misbehave.

What it loads into context

Frontmatter

62 tokens

Always available to the agent

SKILL.md

4,631 tokens

When the skill is activated

Reference documents

56,863 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Screens, navigation and adaptive layout
  2. Components and interaction

Files

  • ../../.claude-plugin/marketplace.jsonasset738 bytes
  • ../../.claude-plugin/plugin.jsonasset854 bytes
  • SKILL.mdcore22,165 bytes
  • SKILL.mdcore22,165 bytes
  • SKILL.mdcore22,165 bytes
  • references/collapsing-parallax-toolbar.mddoc8,637 bytes
  • references/commit-a-text-field-on-an-explicit-action.mddoc8,293 bytes
  • references/control-range-must-cover-stored-values.mddoc6,308 bytes
  • references/custom-modal-sheet-family.mddoc7,280 bytes
  • references/custom-thin-media-slider.mddoc8,513 bytes
  • references/desktop-mini-player-window.mddoc7,975 bytes
  • references/edit-a-shape-as-a-shape.mddoc7,320 bytes
  • references/empty-state-must-keep-its-navigation.mddoc7,215 bytes
  • references/event-not-state-edge-for-one-shot-effects.mddoc7,726 bytes
  • references/expandable-and-linkified-text.mddoc7,080 bytes
  • references/floating-overlay-reserves-its-own-strip.mddoc9,275 bytes
  • references/fullscreen-video-gesture-overlay.mddoc7,815 bytes
  • references/hidden-setting-does-not-clear-the-stored-value.mddoc6,444 bytes
  • references/layered-video-backdrop-pager.mddoc8,772 bytes
  • references/lazy-item-grouping-beats-arrangement-gap.mddoc8,349 bytes
  • references/lazy-list-drag-reorder.mddoc8,159 bytes
  • references/lazy-scroll-helper-kit.mddoc7,051 bytes
  • references/nav-tab-registration-drift.mddoc8,809 bytes
  • references/nowplaying-pager-no-feedback-loop.mddoc7,650 bytes
  • references/progress-indicator-as-scrubber.mddoc6,186 bytes
  • references/responsive-gate-size-not-platform.mddoc9,197 bytes
  • references/scoped-composable-shadows-the-top-level-one.mddoc5,404 bytes
  • references/screen-shell-content-split.mddoc7,322 bytes
  • references/selection-mode-state-holder.mddoc8,175 bytes
  • references/self-hiding-child-cannot-hide-its-slot.mddoc5,287 bytes
  • references/settings-value-round-tripped-through-its-label.mddoc6,351 bytes
  • references/stacked-bars-double-consume-window-insets.mddoc8,863 bytes
  • references/story-reel-auto-pager.mddoc8,749 bytes
  • references/swipe-action-list-row.mddoc7,854 bytes
  • references/type-safe-nav-graph-organization.mddoc7,757 bytes
  • references/variant-layout-math-stays-in-the-variant.mddoc5,932 bytes
  • references/weight-fill-false-to-center-a-cluster.mddoc8,804 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills included

  • compose-screens-footguns
  • compose-visuals-footguns
  • data-layer-footguns
  • desktop-and-build-footguns
  • engineering-method-footguns
  • footgun-scan
  • kmp-architecture-footguns
  • media-playback-footguns
  • remote-api-footguns
  • state-and-background-footguns
  • webview-footguns

Repository facts

License
GPL-3.0
Created
Aug 20, 2026
Last pushed
Oct 29, 2026
Forks
9
Open issues
1
Project activity
Active

Rank over the last 12 weeks

Now #526 · best #526 · up 164 in 30 days

  1. #557 on Nov 1
  2. #555 on Nov 2
  3. #544 on Nov 3
  4. #542 on Nov 4
  5. #532 on Nov 5
  6. #526 since Nov 6
59 earlier periods
  1. #908 on Aug 16
  2. #880 on Aug 29
  3. #884 on Aug 30
  4. #931 on Aug 31
  5. #933 on Sep 2
  6. #898 on Sep 4
  7. #937 on Sep 7
  8. #947 on Sep 8
  9. #930 on Sep 9
  10. #924 on Sep 10
  11. #887 on Sep 11
  12. #883 on Sep 12
  13. #880 on Sep 13
  14. #913 on Sep 14
  15. #896 on Sep 15
  16. #903 on Sep 16
  17. #900 on Sep 17
  18. #878 on Sep 18
  19. #852 on Sep 19
  20. #856 on Sep 20
  21. #862 on Sep 21
  22. #870 on Sep 22
  23. #846 on Sep 23
  24. #800 on Sep 24
  25. #757 on Sep 25
  26. #756 on Sep 26
  27. #765 on Sep 27
  28. #779 on Sep 28
  29. #796 on Sep 29
  30. #770 on Sep 30
  31. #698 on Oct 1
  32. #708 on Oct 2
  33. #677 on Oct 3
  34. #704 on Oct 4
  35. #701 on Oct 5
  36. #693 on Oct 6
  37. #690 on Oct 7
  38. #707 on Oct 8
  39. #669 on Oct 9
  40. #651 on Oct 10
  41. #633 on Oct 11
  42. #632 on Oct 12
  43. #623 on Oct 13
  44. #615 on Oct 14
  45. #598 on Oct 15
  46. #586 on Oct 16
  47. #566 on Oct 17
  48. #564 on Oct 18
  49. #576 on Oct 19
  50. #577 on Oct 20
  51. #574 on Oct 21
  52. #557 on Oct 22
  53. #545 on Oct 23
  54. #535 on Oct 24
  55. #590 on Oct 25
  56. #576 on Oct 28
  57. #572 on Oct 29
  58. #566 on Oct 30
  59. #563 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 34 notes
  • skills/compose-screens-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compose-screens-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compose-visuals-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compose-visuals-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compose-visuals-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compose-visuals-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/compose-visuals-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/data-layer-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/data-layer-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/desktop-and-build-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/desktop-and-build-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/desktop-and-build-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/desktop-and-build-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/desktop-and-build-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/engineering-method-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/engineering-method-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/engineering-method-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/footgun-scan/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/kmp-architecture-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/kmp-architecture-footguns/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 40 signals by file

.claude-plugin/marketplace.json

  • Network accessline 3
    "owner": {     "name": "maxrave-dev",     "url": "https://simpmusic.org"
  • Network accessline 4
    "name": "maxrave-dev",     "url": "https://simpmusic.org"   },
  • Network accessline 5
    "url": "https://simpmusic.org"

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "maxrave-dev",     "url": "https://github.com/maxrave-dev"
  • Network accessline 6
    "name": "maxrave-dev",     "url": "https://github.com/maxrave-dev"   },
  • Network accessline 7
    "url": "https://github.com/maxrave-dev"
  • Network accessline 8
    },   "homepage": "https://github.com/maxrave-dev/kotlin-footguns",   "repository": "https://github.com/maxrave-dev/kotlin-footguns",
  • Network accessline 9
    "homepage": "https://github.com/maxrave-dev/kotlin-footguns",
  • Network accessline 10
    "repository": "https://github.com/maxrave-dev/kotlin-footguns",

skills/compose-visuals-footguns/references/material-symbols-icon-system.md

  • Network accessline 41
    curl -sfL --compressed \
  • Network accessline 42
    "https://fonts.gstatic.com/render/v1/Material+Symbols+Rounded/24dp/<symbol_name>.kt?var=opsz,wght,FILL,GRAD,ROND@24,400,1,0,50" \
  • Network accessline 108
    **The response is gzip-encoded even when the request asks for identity.** Use `curl --compressed`, or

skills/data-layer-footguns/references/remote-index-cached-as-rows-with-validator.md

  • Network accessline 105
    curl -sIL "$INDEX_URL" | grep -iE 'content-length|etag|last-modified'   # uncompressed: the true size
  • Network accessline 109
    # `-L` on the measuring call is load-bearing: without it a redirecting index URL prints `302 0`, # which reads exactly like a pass, because a redirect body is empty too. etag=$(curl -sIL --compressed "$INDEX_URL" | grep -i '^etag:' | cut -d
  • Network accessline 110
    # which reads exactly like a pass, because a redirect body is empty too. etag=$(curl -sIL --compressed "$INDEX_URL" | grep -i '^etag:' | cut -d' ' -f2- | tr -d '\r') curl -sL --compressed -o /dev/null -w '%{http_code} %{size_download}\n' -H
  • Network accessline 111
    etag=$(curl -sIL --compressed "$INDEX_URL" | grep -i '^etag:' | cut -d' ' -f2- | tr -d '\r')
  • Network accessline 112
    curl -sL --compressed -o /dev/null -w '%{http_code} %{size_download}\n' -H "If-None-Match: $etag" "$INDEX_URL"
  • Network accessline 113
    curl -sL --compressed -o /dev/null -w '%{http_code} %{size_download}\n' -H 'If-None-Match: "x"' "$INDEX_URL"

skills/data-layer-footguns/references/room-migrations-at-scale.md

  • Dangerous shell operationline 134
    DB=/path/to/scratchpad/room-migrations-scratch.db; rm -f "$DB"

skills/desktop-and-build-footguns/references/buildkonfig-secrets-flavors.md

  • Access to secretsline 40
    [Credential-related source omitted]
  • Access to secretsline 63
    [Credential-related source omitted]
  • Access to secretsline 129
    [Credential-related source omitted]

skills/desktop-and-build-footguns/references/macos-lsenvironment-path-pin.md

  • Dangerous shell operationline 79
    grep -rn "ProcessBuilder\|Runtime.getRuntime().exec\|exec(" \

skills/footgun-scan/scripts/scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/remote-api-footguns/SKILL.md

  • Network accessline 24
    - [`ktor-kmp-client-architecture`](references/ktor-kmp-client-architecture.md) — A multiplatform HTTP stack where one expect/actual hands back the engine and each integration builds its own client from it — an instrumented client for API ca
  • Network accessline 25
    - [`curl-logger-ktor-plugin`](references/curl-logger-ktor-plugin.md) — A client plugin that logs every outgoing request as one paste-ready curl command — POSIX single-quoting so a body full of quotes, dollars or newlines survives the shell,

skills/remote-api-footguns/references/curl-logger-ktor-plugin.md

  • Network accessline 1
    --- name: curl-logger-ktor-plugin description: A client plugin that logs every outgoing request as one paste-ready curl command — POSIX single-quoting so a body full of quotes, dollars or newlines survives the shell, the whole command in a 
  • Network accessline 2
    name: curl-logger-ktor-plugin description: A client plugin that logs every outgoing request as one paste-ready curl command — POSIX single-quoting so a body full of quotes, dollars or newlines survives the shell, the whole command in a sing
  • Network accessline 3
    description: A client plugin that logs every outgoing request as one paste-ready curl command — POSIX single-quoting so a body full of quotes, dollars or newlines survives the shell, the whole command in a single log call, a redaction list,
  • Network accessline 17
    /** Header names (case-insensitive) shown as `<redacted>`. Empty by default. */     var redactHeaders: Set<String> = emptySet()     /** Drop `Accept-Encoding` and append `--compressed` so curl decodes the response itself. */
  • Network accessline 18
    var redactHeaders: Set<String> = emptySet()     /** Drop `Accept-Encoding` and append `--compressed` so curl decodes the response itself. */     var handleCompression: Boolean = true
  • Network accessline 19
    /** Drop `Accept-Encoding` and append `--compressed` so curl decodes the response itself. */
  • Network accessline 46
    val parts = mutableListOf<String>() parts += "curl -X ${request.method.value}"
  • Network accessline 47
    parts += "curl -X ${request.method.value}"
  • Network accessline 50
    request.headers.entries().forEach { (name, values) ->     val lower = name.lowercase()     if (lower == contentLengthName) return@forEach                     // let curl recompute it
  • Network accessline 51
    val lower = name.lowercase()     if (lower == contentLengthName) return@forEach                     // let curl recompute it     if (handleCompression && lower == acceptEncodingName) return@forEach
  • Network accessline 52
    if (lower == contentLengthName) return@forEach                     // let curl recompute it
  • Network accessline 106
    **Drop the content-length header, and mean it.** curl computes its own from `--data-raw`, so a

skills/state-and-background-footguns/references/periodic-worker-dedup.md

  • Network accessline 15
    // adapted val items = parseFeed(fetch(FEED_URL))
  • Network accessline 16
    val items = parseFeed(fetch(FEED_URL))

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 31 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/compose-screens-footguns/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/compose-screens-footguns/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/compose-screens-footguns/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/compose-screens-footguns/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/compose-screens-footguns/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Add this badge to your README

It updates every night and links to this page.

maxrave-dev/kotlin-footguns: #526 on hotskills, 2k stars

[![maxrave-dev/kotlin-footguns on hotskills](https://hotskills.dev/badge/maxrave-dev-kotlin-footguns.svg)](https://hotskills.dev/skill/maxrave-dev-kotlin-footguns/)