ahel is live on Product Hunt today. Upvote

Skills.

Give your AI a better way to work.

A skill is a set of written instructions that teaches an AI how to do one job the way it should be done: review a pull request, plan a migration, write the release notes.

Install one here and it travels with your account into Claude, Claude Code, Cursor and every other client you sign in with.

Category: Dev tools

16,980 results · page 178 of 566

  • jvmname-disambiguate-erased-overloadsSkillDev tools

    Resolve two extension functions that differ only in their generic receiver's type argument and so compile to a single JVM method, using @JvmName on one of them. Covers what the annotation changes, why it beats renaming the Kotlin function, and what non-Kotlin callers see afterwards. Use when the com

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • kmp-git-submodule-module-mappingSkillDev tools

    Consume a git submodule as a set of Gradle modules in a multiplatform repo — mapping its nested directories onto flat project paths, making the recursive clone a hard prerequisite instead of tribal knowledge, and enabling submodules in every continuous-integration job that configures the build. Reac

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • kmp-html-entity-decoderSkillDev tools

    Decode named, hexadecimal and decimal character entities in shared multiplatform code, where the platform's own markup helpers are unavailable. Covers the named table, the two numeric passes, the range check that keeps an out-of-range code point from ending the operation, why running the passes in o

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • kmp-module-split-for-packagingSkillDev tools

    Split one Kotlin Multiplatform UI module into a shared app LIBRARY plus thin per-platform launcher modules — an Android application module that only packages, and a JVM/desktop module that owns main() and hands off to a public function in the library. Reach for it when the Android Gradle Plugin refu

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • kotlinx-datetime-helper-kitSkillDev tools

    Wrap the multiplatform date-time library's instant-to-local-date-time conversions in a few named helpers — now, epoch converters, comparisons, a shifted-window helper and a relative \"time ago\" formatter — so call sites read as intent instead of ceremony. Covers what each wrapper must pin explicitl

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • ktor-kmp-client-architectureSkillDev tools

    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 calls next to a deliberately bare one for bulk downloads, content negotiation registered per format, and a settings change that rebuilds the cl

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • lazy-item-grouping-beats-arrangement-gapSkillDev tools

    A lazy list's `spacedBy` arrangement applies between every pair of items and compounds with each item's own edge padding, so blocks that must read as one unit belong in ONE item carrying its own tighter spacing rather than in three items relying on the list's gap. Covers why the visible gap appears

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • lazy-list-drag-reorderSkillDev tools

    A complete drag-to-reorder state holder for a lazily composed Compose list — pointer offset accumulation, target-index math over the visible window, how the lift animation and the built-in item placement animation must not overlap, edge auto-scroll as a delta the caller drives, and the commit-on-dro

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • lazy-scroll-helper-kitSkillDev tools

    Four small lazy-list utilities worth carrying between apps — scroll-direction as derived state, centre-an-item scrolling that waits a frame before measuring, an item's visible percentage, and a lookup into the visible window — with the trap each one hides. Use when a hide-on-scroll bar flickers or s

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • like-wildcard-escaping-idsSkillDev tools

    Matching a machine-generated id inside a text or JSON column with LIKE — why `_` and `%` in the id silently widen the match, how to escape them with nested replace() plus an explicit ESCAPE character, and why the id must be matched as a quoted token rather than as a bare substring. Reach for it when

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • liquid-glass-backdropSkillDev tools

    Build refracting "liquid glass" surfaces in Compose with a backdrop library, and avoid the three failures that waste the most time — a rim highlight that is directional by default and so goes nearly invisible on small round buttons, a backdrop source nested inside the glass it feeds, which is a rend

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • macos-lsenvironment-path-pinSkillDev tools

    Declaring a Launch Services environment dictionary (`LSEnvironment`) in a packaged macOS app's property list pins the process `PATH` to the four bare system directories, so every external process the app spawns loses everything installed elsewhere. Use before adding any environment variable to a mac

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • mirror-local-state-to-a-remote-accountSkillDev tools

    An opt-in switch that mirrors a local flag onto a signed-in remote account — turning it on back-fills everything already flagged, turning it off stops mirroring and deliberately does not undo, and the per-item call is three-valued so "not attempted" is distinguishable from "failed". Covers writing l

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • monotonic-clock-offset-syncSkillDev tools

    Estimate a peer's clock offset from ping/pong round trips — take the peer's own processing time out before halving, weight each sample against the best round trip seen, insist the local time source is monotonic, and fall back to the uncorrected value while the estimate is not yet usable. Use when se

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • mosaic-arrangements-must-be-hole-freeSkillDev tools

    Build a ranked mosaic (one big tile plus smaller ones) with an arm for every possible count, so no entry is silently dropped and no arrangement leaves an empty rectangle — plus one clip around the whole block rather than one per tile. Use when a "top five" shows four, when a grid renders a visible g

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • named-job-lifecycle-disciplineSkillDev tools

    One `var xJob: Job?` field per concern, cancel-before-relaunch as an invariant at every launch site, and teardown writes wrapped so a cancellation cannot stop them halfway. Use when periodic updates arrive several times per tick, when stale results from a previous item overwrite the current one, or

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • nav-tab-registration-driftSkillDev tools

    A top-level tab has to be registered in every navigation surface that holds its own copy of the tab list — bottom bar, rail, and a stylized bar that keeps two lists — plus the graph and the flag that gates it, or the tab exists in code and never renders. The same drift catches a status entry point c

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • nested-flag-settings-auto-disableSkillDev tools

    A child toggle gated by a parent condition must key its auto-disable effect on the parent's current value, grey out rather than hide when the gate is closed, and be gated again at the consumer — otherwise the child sticks ON with no way for the user to clear it. Use when a settings switch is stuck o

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • no-use-case-layer-decisionSkillDev tools

    Decide whether a mid-size app needs an interactor or use-case tier at all, how a clean boundary survives without one (repository interfaces plus pure mapping functions), how to prove an absence rather than assume it, and the specific signal that says it is finally time to add the tier back. Use when

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • noop-actual-not-platform-limitSkillDev tools

    An empty or pass-through platform implementation in a multiplatform project means nobody wrote it, not that the platform cannot do it — check the dependency's resolved variants and the source set that declares it before telling anyone a feature is impossible there. Use when a feature "doesn't work o

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • nowplaying-pager-no-feedback-loopSkillDev tools

    A now-playing artwork pager that both follows the player and drives it, without the two writing to each other in a loop — the in-progress-scroll flag covers programmatic animation as well as drags, the seek is dispatched from the settled page only, and the page-difference decision is a pure function

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • optional-engine-feature-degrade-in-tiersSkillDev tools

    An optional build-time dependency of a media engine may be missing from another platform's bundle, and the engine rejects the WHOLE chain string when one stage in it is unknown — so retry without the optional stage rather than losing the mandatory one, and return which tiers were accepted so callers

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • order-preserving-section-mappingSkillDev tools

    Map a sectioned API response as a list of (title, items) in the order it arrived, never by reading result[0] and result[1] into named fields — a signed-in account is recorded here as getting an extra section pushed in front, and any such shift mislabels every section after it and drops the last one

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • overflow-tilted-browse-cardSkillDev tools

    Build a browse tile whose cover art is tilted and runs off the clipped corner — the modifier order that makes the diagonal a cut rather than a pasted square, the rotated bounding-box growth that decides how much room siblings must leave, and why a non-square tile cannot size its decoration off the w

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • palette-state-parks-on-loadingSkillDev tools

    A palette generator that flips its state to Loading before its own suspension point reports no colour for the entire duration of every generation, and a generation cancelled part-way leaves it Loading with nothing to restart it — so any surface reading the palette directly paints its null fallback.

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • partial-chart-must-say-soSkillDev tools

    Print the share of input a distribution could actually classify, computed with exactly the predicates that built the buckets, and keep that line reachable when coverage is zero. Use when a chart is built over a nullable join or a parsed text column, when the bars look plausible but the totals undern

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 stars

    View details
  • cyclomatic-complexitySkillDev tools

    Refactor code to reduce cyclomatic complexity so it stays readable, maintainable, and aligned with the long-term vision of the codebase, not just optimized for AI comprehension. Use whenever the user asks to refactor, simplify, clean up, or review code quality; mentions complexity, maintainability,

    Ready to connect★ 384

    github.com/saurabhkumar8112/cyclomatic-complexity-skill388 stars

    View details
  • game-experience-density-optimizerSkillDev tools

    Use when the user needs to compile game experience-density, retention, first-session pacing, demo completion rate, single-player total journey, D1/D7, feedback, embodiment, atmosphere, cognitive load, optimal stimulation window, FEP/free-energy, prediction error, Markov blanket, habituation, or live

    Ready to connect★ 387

    github.com/dy-2026/gamedesignos387 stars

    View details
  • ai-news-collectorSkillDev tools

    AI news aggregation and trending ranking tool. Triggered when users ask about the latest AI developments, e.g.: "What AI news is there today?" "Summarize this week's AI updates" "What AI products are hot lately?" "What is the AI community discussing recently?". Covers: new product launches, research

    Ready to connect★ 383

    github.com/craftos-dev/craftbot376 stars

    View details
  • ai-ppt-generatorSkillDev tools

    The awesome PPT format generation tool provided by baidu.

    Ready to connect★ 383

    github.com/craftos-dev/craftbot376 stars

    View details

What is a skill?

A skill is plain text, usually a SKILL.md file and the scripts it refers to, written for an AI rather than for a person. It carries the steps, the house rules and the examples a good answer needs, so you stop pasting the same briefing into every new chat.

53,462 of the 53,895 skills listed here can be served through ahel today, and they come from public repositories. Each one has its own page with the instructions themselves on it, so you can read what a skill will tell your AI to do before you install it.

Install one and every AI you use gets it

Installing a skill adds it to your gateway and turns it on in the same step. Claude Code surfaces it as a slash command; any client can read the full instructions with the skill_read tool.

Nothing is copied into a project folder. The instructions are served from your account, so the same skill is there in every AI you connect, and turning it off removes it from all of them at once.

See how to connect your AI