Agent skill

Setting Up Compose Hotswan

by rosuH in rosuH/EasyWatermark

A skill your agent uses to install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device or emulator in one session.

Apache-2.0Auto-check passedMobile

Install Setting Up Compose Hotswan

skills CLI
$ npx skills add rosuH/EasyWatermark --skill setting-up-compose-hotswan -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rosuH/EasyWatermark setting-up-compose-hotswan --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/setting-up-compose-hotswan .claude/skills/setting-up-compose-hotswan && rm -rf skills-src

Use ~/.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/

Facts

Skill name
setting-up-compose-hotswan
GitHub stars
1.9k
Used in
1 other repo
Token cost
~3k tokens
SKILL.md length
1,038 words
Files
1
Skills in repo
28
Repo updated
First seen
Licence
Apache-2.0

At a glance

A skill your agent uses to install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device or emulator in one session.

  • Works in 9 steps: Declare the plugin in libs.versions.toml… → Apply at the root build.gradle.kts with… → Apply in each Compose app module's… → …
  • Install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device
  • SKILL.md covers When to use this skill, When NOT to use this skill, Prerequisites and Workflow, plus 5 more sections
  • Calls adb

What it does

Setting Up Compose Hotswan is an agent skill from rosuH/EasyWatermark. Use this skill to install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device or emulator in one session. Covers the JetBrains IDE plugin install, the com.github.skydoves.compose.hotswan.compiler Gradle plugin wiring, the canonical hotSwanCompiler { enabled = true; debugOnly = true } DSL block, the HotSwan tool window flow, and the first save-to-reload verification. Trigger when the user mentions HotSwan, Compose hot reload, instant UI update…

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile. It works with JetBrains IDEs, Gradle, GitHub and Kotlin. The repository describes itself as: 🔒 🖼 Securely, easily add a watermark to your sensitive photos. 安全、简单地为你的敏感照片添加水印,防止被人泄露、利用. The licence is Apache-2.0.

When your agent uses it

  • Install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device
  • Emulator in one session
  • The user mentions HotSwan
  • Compose hot reload

Example prompts

  • “save and see”
  • “no rebuild”
  • “/setting-up-compose-hotswan”

Workflow steps

9 steps, taken from the first numbered list in SKILL.md.

  1. Declare the plugin in libs.versions.toml so the version pins centrally
  2. Apply at the root build.gradle.kts with apply false so the plugin is resolved once but only attaches to modules that opt in
  3. Apply in each Compose app module's build.gradle.kts
  4. Configure the canonical DSL block in the same module file. The capital S in hotSwanCompiler is part of the identifier
  5. Sync Gradle. The build should resolve without errors. Confirm the plugin attached by inspecting the build's plugin list (./gradlew…
  6. Open the HotSwan tool window via View -> Tool Windows -> HotSwan. Click Start. The status indicator should change to READY.
  7. Run the app normally with the Run action. Once the app process connects, the tool window status moves from READY to WATCHING.
  8. Make a body-only edit and save. Change the color or text inside one composable function body, then save the file. The change should appear…
  9. If the change does not appear, fall through to the troubleshooting checklist below before changing any Gradle configuration.

What it can do on your machine

Read from SKILL.md and the folder at commit 61223db. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • adb

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • hotswan.dev
    • plugins.jetbrains.com
    • github.com
    • developer.android.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Setting Up Compose Hotswan loads about 3k tokens when it runs. Until then it costs about 179 tokens; SKILL.md has 1,038 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~179
When it runs · the whole SKILL.md, loaded when a task matches
~3k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from rosuH/EasyWatermark at commit 61223db, republished under its Apache-2.0 licence (© rosuH). 1,038 words, ~3,005 tokens.

Download SKILL.mdSave it as .claude/skills/setting-up-compose-hotswan/SKILL.md (or your agent's skills folder).
name
setting-up-compose-hotswan
description
Use this skill to install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device or emulator in one session. Covers the JetBrains IDE plugin install, the `com.github.skydoves.compose.hotswan.compiler` Gradle plugin wiring, the canonical `hotSwanCompiler { enabled = true; debugOnly = true }` DSL block, the HotSwan tool window flow, and the first save-to-reload verification. Trigger when the user mentions HotSwan, Compose hot reload, instant UI update, "save and see", "no rebuild", live edit on device, fast Compose iteration, or already has the JetBrains plugin installed and asks how to apply the Gradle compiler plugin.
license
Apache-2.0. See LICENSE for complete terms.
metadata.author
Jaewoong Eum (skydoves)
metadata.keywords
jetpack-compose, performance, hot-reload, hotswan, gradle-plugin, intellij-plugin, iteration, developer-experience

Setting Up Compose HotSwan: zero to sub-second reload on a real device

Compose HotSwan is a JetBrains IDE plugin plus a Gradle compiler plugin that swaps changed Kotlin classes into a running Compose app on a real device or emulator in under one second, preserving navigation, scroll, and remember state. This skill installs both pieces, wires the canonical Gradle DSL with debugOnly = true, and verifies the first save-to-reload round-trip. Sibling skills cover what does and does not hot-reload (../understanding-hot-reload-limits/SKILL.md), state preservation across reloads, and the AI-driven iteration loop.

Versions verified at the time of authoring. Confirm against the current release notes for newer minors.

When to use this skill

  • The developer mentions HotSwan, hot reload, instant UI update, "save and see", "no rebuild", live edit, or fast Compose iteration on device.
  • The developer has the HotSwan JetBrains Marketplace plugin installed and asks how to apply the Gradle compiler plugin.
  • A team is onboarding a new project to HotSwan and wants the canonical libs.versions.toml + root build + app build wiring.
  • The developer just installed the IDE plugin and the tool window status is stuck before WATCHING.

When NOT to use this skill

  • The question is about JetBrains' own Live Edit or Apply Changes features. HotSwan and those are separate products with different boundaries; do not conflate.
  • The question is about Compose Preview rendering inside the IDE. HotSwan targets the running app on a real device or emulator, not preview canvases.
  • The question is about which changes hot-reload vs force a rebuild. See ../understanding-hot-reload-limits/SKILL.md.
  • The question is about preserving complex state across reloads. See the state-preservation sibling skill (out of scope here).

Prerequisites

  • Android Studio 2024.3+ or IntelliJ IDEA 2024.3+.
  • Kotlin 2.0+ with the org.jetbrains.kotlin.plugin.compose Gradle plugin already applied on the Compose modules.
  • Gradle 8+.
  • A real device or emulator with USB debugging enabled and visible to adb devices.
  • The HotSwan IDE plugin installed from JetBrains Marketplace (https://plugins.jetbrains.com/plugin/30551-compose-hotswan/).

Workflow

  1. Declare the plugin in libs.versions.toml so the version pins centrally:

    toml
    [plugins]
    hotswan-compiler = { id = "com.github.skydoves.compose.hotswan.compiler", version = "1.2.10" }

    Pin 1.2.10 (latest verified at the time of authoring). Check the HotSwan releases page for newer stable versions before adopting; HotSwan iterates frequently and a newer minor often ships compatibility for a newer Compose runtime. The plugin id is com.github.skydoves.compose.hotswan.compiler exactly. Do not swap the com.github prefix for any other vendor namespace; HotSwan is published under com.github.skydoves.

  2. Apply at the root build.gradle.kts with apply false so the plugin is resolved once but only attaches to modules that opt in:

    kotlin
    plugins {
        alias(libs.plugins.hotswan.compiler) apply false
    }
  3. Apply in each Compose app module's build.gradle.kts:

    kotlin
    plugins {
        alias(libs.plugins.android.application)
        alias(libs.plugins.kotlin.android)
        alias(libs.plugins.kotlin.compose)
        alias(libs.plugins.hotswan.compiler)
    }
  4. Configure the canonical DSL block in the same module file. The capital S in hotSwanCompiler is part of the identifier:

    kotlin
    hotSwanCompiler {
        enabled = true
        debugOnly = true
    }

    debugOnly = true is the default and the rule for production. Release builds MUST NOT carry the HotSwan transformations.

  5. Sync Gradle. The build should resolve without errors. Confirm the plugin attached by inspecting the build's plugin list (./gradlew :app:buildEnvironment or the IDE Gradle tool window).

  6. Open the HotSwan tool window via View -> Tool Windows -> HotSwan. Click Start. The status indicator should change to READY.

  7. Run the app normally with the Run action. Once the app process connects, the tool window status moves from READY to WATCHING.

  8. Make a body-only edit and save. Change the color or text inside one composable function body, then save the file. The change should appear on device in under one second; navigation, scroll position, and remember values stay intact.

  9. If the change does not appear, fall through to the troubleshooting checklist below before changing any Gradle configuration.

Patterns

Pattern: configure with debugOnly true (production safety)
kotlin
// WRONG
hotSwanCompiler {
    enabled = true
}
// WRONG because: omitting `debugOnly = true` allows the HotSwan transformations to attach to release
// builds. They are diagnostic-only and MUST NOT ship in production.
kotlin
// RIGHT
hotSwanCompiler {
    enabled = true
    debugOnly = true
}
Pattern: respect the capital S in the DSL block name
kotlin
// WRONG
hotswanCompiler {
    enabled = true
    debugOnly = true
}
// WRONG because: the extension is hotSwanCompiler with a capital S in the middle. Lowercase will
// not resolve and Gradle reports an unknown extension.
kotlin
// RIGHT
hotSwanCompiler {
    enabled = true
    debugOnly = true
}
Pattern: apply at root with apply false, in modules with alias(...)
kotlin
// WRONG (root build.gradle.kts)
plugins {
    alias(libs.plugins.hotswan.compiler)
}
// WRONG because: applying at the root project triggers the compiler plugin everywhere, including
// modules without Compose. Use apply false at the root and alias(...) inside each Compose module.
kotlin
// RIGHT (root build.gradle.kts)
plugins {
    alias(libs.plugins.hotswan.compiler) apply false
}
kotlin
// RIGHT (app/build.gradle.kts; Compose module)
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.kotlin.compose)
    alias(libs.plugins.hotswan.compiler)
}

hotSwanCompiler {
    enabled = true
    debugOnly = true
}
Show full SKILL.md (427 more words)Show less
Pattern: do not depend on HotSwan at the source level
kotlin
// WRONG
import com.github.skydoves.compose.hotswan.runtime.HotReloadable

@HotReloadable
@Composable
fun Greeting() { Text("Hello") }
// WRONG because: HotSwan is a build-time and IDE-time tool. Production code must not import
// HotSwan runtime classes or annotations; the Gradle plugin attaches transformations during
// compilation without requiring source-level coupling.
kotlin
// RIGHT
@Composable
fun Greeting() { Text("Hello") }
Pattern: canonical three-file setup (paste-ready)
toml
# gradle/libs.versions.toml
[plugins]
hotswan-compiler = { id = "com.github.skydoves.compose.hotswan.compiler", version = "1.2.10" }
kotlin
// build.gradle.kts (root)
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.kotlin.android) apply false
    alias(libs.plugins.kotlin.compose) apply false
    alias(libs.plugins.hotswan.compiler) apply false
}
kotlin
// app/build.gradle.kts
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.kotlin.compose)
    alias(libs.plugins.hotswan.compiler)
}

hotSwanCompiler {
    enabled = true
    debugOnly = true
}

Troubleshooting

  • Status stuck at READY after Run. The device is not connected. Run adb devices and confirm the device or emulator is listed; reconnect USB or restart the emulator.
  • Status WATCHING but no reload on save. The save was a structural change (parameter, constructor, interface, inline function, new resource id). Cross-link ../understanding-hot-reload-limits/SKILL.md to identify the boundary.
  • Reload happens but state is lost. The change cascaded to a tier-2 (composition reset) or tier-3 (Activity.recreate()) recomposition. Cross-link the state-preservation sibling skill once available.
  • The hotSwanCompiler { ... } block does not resolve. Gradle did not sync after adding the plugin. Re-sync; verify Kotlin 2.0+ is the active Kotlin version on the module; verify the alias matches the entry in libs.versions.toml.

Mandatory rules

  • MUST set debugOnly = true. HotSwan transformations are diagnostic-only and MUST NOT ship in release builds.
  • MUST apply the Gradle plugin only on Compose modules. Apply at the root project with apply false so non-Compose modules are not transformed.
  • MUST NOT depend on HotSwan classes at the source level. No annotations, no runtime imports. HotSwan is a build-time and IDE-time tool; production code stays pure.
  • MUST NOT mix HotSwan with a stale Compose Compiler. Verify org.jetbrains.kotlin.plugin.compose is applied on Kotlin 2.0+ before adding HotSwan.
  • MUST pin the HotSwan version in libs.versions.toml so all Compose modules in the project use a single version. The latest verified version is 1.2.10; check hotswan.dev/docs/releases for newer stable releases before pinning.
  • PREFERRED: combine HotSwan with the AI iteration loop sibling skill (../iterating-with-ai-and-mcp/SKILL.md) once the developer is comfortable with manual hot reload and wants Claude to drive the edit-reload-screenshot cycle via MCP.

Verification

  • ./gradlew :app:buildEnvironment lists the com.github.skydoves.compose.hotswan.compiler plugin among applied plugins.
  • The HotSwan tool window status reads WATCHING after the app launches with Run.
  • Editing a Text color inside a composable and saving the file changes the color on device within one second.
  • remember values, scroll position, and the navigation back stack survive the change.
  • A release build (./gradlew :app:assembleRelease) does not include HotSwan transformations. Verify by confirming debugOnly = true is set, or by inspecting the release dex with dexdump for the absence of HotSwan-injected helper classes.
  • No production source file in the module imports a com.github.skydoves.compose.hotswan.* symbol (grep -R "com.github.skydoves.compose.hotswan" src/main/ returns zero hits).

References

© rosuH, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/setting-up-compose-hotswan of rosuH/EasyWatermark.

Open the folder on GitHubat commit 61223db

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in rosuH/EasyWatermark, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Setting Up Compose Hotswan 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.

Setting Up Compose Hotswan compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Setting Up Compose Hotswan this skillrosuH/EasyWatermark1.9k1 repos~3kAutomated safety check: PassApache-2.0
Kotlin Tooling Kotlin ToolchainKotlin/kotlin-agent-skills1.1k—~2.4kAutomated safety check: PassApache-2.0
Kotlin Tooling Agp9 MigrationJetBrains/skills3662 repos~5.6kAutomated safety check: PassApache-2.0
Plan ReviewKenjiOhtsuka/harmonica131—~1kAutomated safety check: PassMIT
Exposed Bug Fix WorkflowJetBrains/Exposed9.3k—~3.8kAutomated safety check: PassApache-2.0
Releasesol4k/sol4k135—~949Automated safety check: PassApache-2.0

Similar skills

  • Kotlin Tooling Kotlin Toolchain

    Kotlin/kotlin-agent-skills

    Load when building, running, testing, packaging, linting, or configuring a Kotlin/Java project with the Kotlin Toolchain (JetBrains' unified CLI, formerly Amper), when scaffolding a new or…

    1.1k GitHub stars~2.4k tokensUpdated yesterday
    MobileAuto-check passed
  • Official

    Migrates Kotlin Multiplatform (KMP) projects to Android Gradle Plugin 9.0+.

    366 GitHub starsUsed in 2 repos~5.6k tokens
    MobileAuto-check passed
  • Plan Review

    KenjiOhtsuka/harmonica

    A skill your agent uses when reviewing the Harmonica restart plan against reality — after a phase PR or milestone merges, before proposing the next phase, or when asked "are the specs up to date" /…

    131 GitHub stars~1k tokensUpdated 17 days ago
    DatabasesAuto-check passed
  • Exposed Bug Fix Workflow

    JetBrains/Exposed

    Official

    Takes a GitHub or YouTrack issue for the Exposed project through reproduction, a failing test, a fix, validation and a pull request.

    9.3k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    sol4k/sol4k

    Bump the sol4k library version everywhere, open a release PR, and draft GitHub release notes.

    135 GitHub stars~949 tokensUpdated 11 days ago
    DevelopmentAuto-check passed
  • 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.

    180 GitHub starsUsed in 5 repos~2k tokens
    MobileAuto-check passed

More from rosuH/EasyWatermark

All 28 skills in this repo
  • Deferring State Reads

    rosuH/EasyWatermark

    A skill your agent uses to push frequently-changing Jetpack Compose state reads (scroll position, animation values, drag offsets) out of the Composition phase and down into Layout or Draw using…

    1.9k GitHub starsUsed in 1 repo~3.8k tokens
    Auto-check passed
  • Diagnosing Compose Stability

    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).

    1.9k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Generating Baseline Profiles

    rosuH/EasyWatermark

    A skill your agent uses to generate and measure Jetpack Compose Baseline Profiles end-to-end with the AGP 8.2+ Baseline Profile Generator module and the Macrobenchmark harness.

    1.9k GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed
  • Migrating To Modifier Node

    rosuH/EasyWatermark

    A skill your agent uses to author new custom Jetpack Compose modifiers and migrate legacy ones from Modifier.composed { } to Modifier.Node + ModifierNodeElement<T.

    1.9k GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed
  • ML Kit Genai Prompt API

    rosuH/EasyWatermark

    Analyzes Android codebases to implement ML Kit GenAI Prompt API.

    1.9k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Stabilizing Compose Types

    rosuH/EasyWatermark

    A skill your agent uses to fix unstable Jetpack Compose types once a stability diagnosis has identified them.

    1.9k GitHub starsUsed in 1 repo~4.4k tokens
    Auto-check passed

Categories

Questions about Setting Up Compose Hotswan

What does Setting Up Compose Hotswan do?

A skill your agent uses to install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device or emulator in one session. Setting Up Compose Hotswan is an agent skill from rosuH/EasyWatermark. Use this skill to install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device or emulator in one session.

When should I use Setting Up Compose Hotswan?

Setting Up Compose Hotswan fits situations like: install and verify Compose HotSwan end to end so a developer goes from zero to working sub-second hot reload on a real device; emulator in one session; the user mentions HotSwan; compose hot reload.

How do I install Setting Up Compose Hotswan in Claude Code?

Run `npx skills add rosuH/EasyWatermark --skill setting-up-compose-hotswan -a claude-code`. Or copy the skill folder (.agents/skills/setting-up-compose-hotswan in rosuH/EasyWatermark) into .claude/skills/setting-up-compose-hotswan in your project. Claude Code loads it when a task matches its description.

How do I install Setting Up Compose Hotswan in Codex?

Run `npx skills add rosuH/EasyWatermark --skill setting-up-compose-hotswan -a codex`. Or copy the skill folder (.agents/skills/setting-up-compose-hotswan in rosuH/EasyWatermark) into .agents/skills/setting-up-compose-hotswan in your project. Codex loads it when a task matches its description.

Can I use Setting Up Compose Hotswan in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rosuH/EasyWatermark --skill setting-up-compose-hotswan -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/setting-up-compose-hotswan, .gemini/skills/setting-up-compose-hotswan, .github/skills/setting-up-compose-hotswan and .opencode/skills/setting-up-compose-hotswan in your project.

What does Setting Up Compose Hotswan need to run?

Going by SKILL.md and its folder, Setting Up Compose Hotswan needs the command-line tools its instructions call (adb).

Does Setting Up Compose Hotswan access the network?

SKILL.md names 4 domains. As links in the text: hotswan.dev, plugins.jetbrains.com, github.com and developer.android.com. This is read from the text; nothing was executed.

Is Setting Up Compose Hotswan safe to install?

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. Review the folder before installing.

What licence does Setting Up Compose Hotswan use?

Setting Up Compose Hotswan is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Setting Up Compose Hotswan use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Setting Up Compose Hotswan?

Skills that share tags, products or a category with Setting Up Compose Hotswan: Kotlin Tooling Kotlin Toolchain (Kotlin/kotlin-agent-skills, 1.1k stars), Kotlin Tooling Agp9 Migration (JetBrains/skills, 366 stars), Plan Review (KenjiOhtsuka/harmonica, 131 stars) and Exposed Bug Fix Workflow (JetBrains/Exposed, 9.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Setting Up Compose Hotswan?

rosuH (a GitHub user) maintains it in rosuH/EasyWatermark, which has 1,895 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 6, 2026.

Source: rosuH/EasyWatermark on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.