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 176 of 566

  • arm64-native-gap-auditSkillDev tools

    Audit every native dependency for a slice on a CPU architecture before promising that target in a multiplatform desktop build — one missing native takes the whole target down at first use rather than at build time, so make the audit a repeatable command over the resolved artifacts and re-run it on e

    Ready to connect★ 315

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

    View details
  • artwork-seeded-dynamic-schemeSkillDev tools

    Derive a complete tonal colour scheme from one artwork-extracted seed and wrap only that subtree in it, so every control inherits contrast-paired roles instead of hand-picked swatches — covers falling back by comparing against the sentinel the seed was initialised with, tweening the seed rather than

    Ready to connect★ 315

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

    View details
  • beatmatched-automixSkillDev tools

    Derive an automatic crossfade duration and a tempo/key match from how far apart two tracks are, the way a DJ would — halftime normalisation before comparing tempos, beat-quantised durations, a front-loaded ramp and quantised gain/speed steps. Use when an automatic transition length feels arbitrary,

    Ready to connect★ 315

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

    View details
  • bitmask-event-wrapperSkillDev tools

    Wrap an integer flag set handed up from a lower layer in a single-field value class exposing contains and containsAny, so call sites stop writing raw bitwise tests against library constants. Covers keeping the wrapper allocation-free, why the flag constants must travel with it, the difference betwee

    Ready to connect★ 315

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

    View details
  • cache-then-networkSkillDev tools

    Serve the stored copy immediately, then the fresh one, from a single repository flow — and emit an error only when nothing was served, because an error after a successful emission replaces working content the user is already reading. Use when a screen shows a spinner on every open despite having sho

    Ready to connect★ 315

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

    View details
  • chrome-drawn-outside-the-theme-scopeSkillDev tools

    A custom window title bar, splash, or crash dialog composed as a sibling of the app theme rather than inside it reads MaterialTheme's framework DEFAULT scheme — light, always, no matter what the user picked — and nothing errors. Covers extracting the stored-mode-to-boolean decision as one shared com

    Ready to connect★ 315

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

    View details
  • ci-flaky-timing-luckSkillDev tools

    Find and fix CI steps that only ever passed by timing luck — an asynchronous detach of a same-name mounted volume colliding with the next iteration's mount, and a downloader that quietly saves an error page as the artifact; reach for it when a step that ran green for months starts failing after a ru

    Ready to connect★ 315

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

    View details
  • clean-satellite-at-transitionSkillDev tools

    Deleting the dependent rows that exist only to serve a state at the exact transition that ends that state — rather than leaving them to a later bulk sweep — and why a foreign key cannot do this for you when only a flag changes. Reach for it when tables grow without bound and nothing ever deletes fro

    Ready to connect★ 315

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

    View details
  • collapsing-parallax-toolbarSkillDev tools

    Build a collapsing header from five siblings in one box — four sharing a single scroll state, one driven by a boolean instead — with artwork moved by a graphics layer at half the scroll rate, a title interpolated along a two-segment curve into the pinned bar, and a derived flip point that swaps the

    Ready to connect★ 315

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

    View details
  • combine-two-flags-to-gateSkillDev tools

    Turn several independent condition flows into one on/off gate with `combine` + `distinctUntilChanged` + `collectLatest`, make both the start and the teardown branch idempotent, and run teardown uncancellably. Use when a subsystem starts before it is fully configured, keeps running after one of its p

    Ready to connect★ 315

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

    View details
  • combining-chars-break-char-literalsSkillDev tools

    A Devanagari, Gurmukhi, or other diacritic-marked letter that looks like one glyph in the editor fails to compile as a `'x'` character literal with "Too many characters in a character literal," because it is a base letter plus a separate combining mark — two `Char`s, not one. Use when a lookup table

    Ready to connect★ 315

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

    View details
  • commit-a-text-field-on-an-explicit-actionSkillDev tools

    An editable value that is written on focus loss stores whatever was half-typed when a dialog, a rotation or a stray tap took the focus away; keep the draft in its own state keyed on the stored value and write only when the user asks for it. Covers why the dirty check that shows the confirm button ge

    Ready to connect★ 315

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

    View details
  • compose-desktop-runtime-hardeningSkillDev tools

    The ordered list of probes, system properties and platform gates a Compose desktop entry point must run before its first window exists. Covers warming the JDK's desktop-integration API ahead of any native load, renderer and interop properties that are read once at start-up, turning off vsync where t

    Ready to connect★ 315

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

    View details
  • config-fails-open-verify-artifactSkillDev tools

    Verifying a config-driven feature against the generated artifact instead of against the config, for formats that fail open and ignore unknown keys — the two-build A/B diff, the artifact fingerprint to grep for, and the CI assertion that keeps it from regressing. Reach for it when a config key looks

    Ready to connect★ 315

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

    View details
  • control-range-must-cover-stored-valuesSkillDev tools

    Size a slider's range from the real distribution of values it will be handed — stored, imported, migrated — rather than from a neighbouring control's range, because a value outside the range parks the thumb at the end of the track while your readout shows a different number, and the first touch sile

    Ready to connect★ 315

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

    View details
  • conveyor-desktop-packagingSkillDev tools

    Packaging a JVM desktop app with a config-driven packager whose HOCON config silently ignores unknown keys — which keys bind at the app level versus a per-OS section versus a nested group, command-line key overrides, pinning the packaging JDK, and the environment block that quietly pins PATH. Reach

    Ready to connect★ 315

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

    View details
  • crossfade-container-sizes-to-the-visible-childSkillDev tools

    A crossfade's container is a Box aligned to the top-start corner and sized to the largest child currently composed, so swapping a thin child for a taller one pins the thin one to the top mid-transition and drops it when the tall one leaves. Covers boxing both branches into one fixed frame with an ex

    Ready to connect★ 315

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

    View details
  • crossfade-dual-playerSkillDev tools

    Build a crossfade between two media items with one player instance per item and a second live instance during the blend, then keep transport commands and playback settings correct while two players are audible. Use when adding a fade to a player, or when pausing mid-fade leaves the old track playing

    Ready to connect★ 315

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

    View details
  • custom-modal-sheet-familySkillDev tools

    A house style over Material3's ModalBottomSheet — transparent container plus your own surface, zeroed window insets with an explicit end spacer, a hand-rolled drag handle, and hide-then-dismiss so the sheet animates closed before it leaves composition. Use when a sheet snaps shut instead of sliding,

    Ready to connect★ 315

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

    View details
  • custom-shuffle-orderSkillDev tools

    Replacing a media engine's default shuffle order so that tracks added mid-playback land contiguously after the current one instead of being scattered through the rest of the queue. Use when "play next" or an appended continuation page ends up in random positions while shuffle is on, or when writing

    Ready to connect★ 315

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

    View details
  • custom-thin-media-sliderSkillDev tools

    A slim seek bar with a buffered-progress track behind it, built from Material3's Slider with custom track and thumb slots — including the fraction-not-your-own-scale rule that keeps the thumb from pinning at the end, and the state gate that stops incoming playback position from fighting the drag. Us

    Ready to connect★ 315

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

    View details
  • derive-seek-from-progress-flowSkillDev tools

    Detect a scrub as a playhead that moved further than wall-clock time can account for, from the progress stream every platform already emits, because the platform's own discontinuity callback exists on one backend only and neither the item stream nor the transport stream fires when a scrubber is drag

    Ready to connect★ 315

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

    View details
  • derive-the-flag-dont-store-and-correct-itSkillDev tools

    A boolean that is a pure function of state already being collected gets stored as its own `mutableStateOf` anyway, seeded with a guess and corrected a frame later by a `LaunchedEffect` — so the first frame renders the guess, and later changing only the seed value does nothing once `rememberSaveable`

    Ready to connect★ 315

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

    View details
  • desktop-mini-player-windowSkillDev tools

    A second always-on-top, frameless desktop window for playback controls — its existence held as one boolean outside the composition, the same state object as the main window, a hand-rolled drag that anchors to absolute pointer coordinates, a native minimum size in device pixels, and geometry persiste

    Ready to connect★ 315

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

    View details
  • desktop-single-instance-before-diSkillDev tools

    Order a desktop app's startup so the single-instance guard runs before the dependency container and before anything opens on-disk state. Covers forwarding a second launch's arguments to the running instance and exiting, bridging a restore request from outside the UI framework into the live window, a

    Ready to connect★ 315

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

    View details
  • desktop-system-media-integrationSkillDev tools

    Wire a desktop app into each OS's system now-playing and transport surface behind one facade, so a failed native initialisation disables the integration and never takes playback down. Covers initialising on the platform's main thread inside a packaged app, reaching an OS media framework through the

    Ready to connect★ 315

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

    View details
  • distinct-by-key-reset-cancel-per-itemSkillDev tools

    Per-item pipelines that key on the item id with distinctUntilChangedBy, cancel the previous item's in-flight work before starting the next, and reset the visible state before filling it — so nothing from the previous item can appear under the new one. Use when a detail screen briefly shows the last

    Ready to connect★ 315

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

    View details
  • dont-pre-animate-a-self-animating-propertySkillDev tools

    Pass the raw target to a component that animates a property itself — an externally tweened value is a stream of new targets, and such components typically ignore new targets while their own animation is still running, which freezes the effect part-way. Covers how to recognise a self-animating proper

    Ready to connect★ 315

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

    View details
  • dont-slice-one-circle-between-unrelated-measuresSkillDev tools

    Put several measures that share no whole onto concentric arcs instead of slicing one circle between them, cap the largest sweep short of 360°, and draw value wedges over a full-ring track. Use when a donut/pie is about to encode counts that do not add up to anything, when the biggest ring looks iden

    Ready to connect★ 315

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

    View details
  • draw-outside-bounds-particle-modifierSkillDev tools

    A celebration burst drawn by a plain draw modifier that paints past its host's own bounds — draw modifiers are unclipped by default, so the modifier must sit before every .clip(...) in the chain, and any clipping ancestor still trims whatever leaves its edge. Covers scaling origin and reach off the

    Ready to connect★ 315

    github.com/maxrave-dev/kotlin-footguns390 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