Spock Adb
WahdanZ/SpockAdb
Debug Android apps on a connected device or emulator through the Spock ADB MCP server (tools named android).
A skill your agent uses to drive the active investigation features of the skydoves/compose-stability-analyzer IntelliJ / Android Studio plugin: the static Recomposition Cascade visualizer that walks…
$ npx skills add rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rosuH/EasyWatermark visualizing-recomposition-cascades --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/rosuH/EasyWatermark.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/visualizing-recomposition-cascades .claude/skills/visualizing-recomposition-cascades && 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 "visualizing-recomposition-cascades" agent skill from https://github.com/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascades into .claude/skills/visualizing-recomposition-cascades/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualizing-recomposition-cascades", 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/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascadesType 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 rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rosuH/EasyWatermark visualizing-recomposition-cascades --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/visualizing-recomposition-cascades .agents/skills/visualizing-recomposition-cascades && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "visualizing-recomposition-cascades" agent skill from https://github.com/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascades into .agents/skills/visualizing-recomposition-cascades/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualizing-recomposition-cascades", 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 rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rosuH/EasyWatermark visualizing-recomposition-cascades --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/visualizing-recomposition-cascades .cursor/skills/visualizing-recomposition-cascades && 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 "visualizing-recomposition-cascades" agent skill from https://github.com/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascades into .cursor/skills/visualizing-recomposition-cascades/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualizing-recomposition-cascades", 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/rosuH/EasyWatermark.git --path .agents/skills/visualizing-recomposition-cascades--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 rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rosuH/EasyWatermark visualizing-recomposition-cascades --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/visualizing-recomposition-cascades .gemini/skills/visualizing-recomposition-cascades && 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 "visualizing-recomposition-cascades" agent skill from https://github.com/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascades into .gemini/skills/visualizing-recomposition-cascades/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualizing-recomposition-cascades", 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 rosuH/EasyWatermark visualizing-recomposition-cascadesInstalls 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 rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/visualizing-recomposition-cascades .github/skills/visualizing-recomposition-cascades && 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 "visualizing-recomposition-cascades" agent skill from https://github.com/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascades into .github/skills/visualizing-recomposition-cascades/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualizing-recomposition-cascades", 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 rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rosuH/EasyWatermark visualizing-recomposition-cascades --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/visualizing-recomposition-cascades .opencode/skills/visualizing-recomposition-cascades && 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 "visualizing-recomposition-cascades" agent skill from https://github.com/rosuH/EasyWatermark/tree/master/.agents/skills/visualizing-recomposition-cascades into .opencode/skills/visualizing-recomposition-cascades/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visualizing-recomposition-cascades", 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.
visualizing-recomposition-cascadesA skill your agent uses to drive the active investigation features of the skydoves/compose-stability-analyzer IntelliJ / Android Studio plugin: the static Recomposition Cascade visualizer that walks…
Visualizing Recomposition Cascades is an agent skill from rosuH/EasyWatermark. Use this skill to drive the active investigation features of the skydoves/compose-stability-analyzer IntelliJ / Android Studio plugin: the static Recomposition Cascade visualizer that walks the call graph from a root @Composable, and the live Recomposition Heatmap that streams D/Recomposition events from a connected device's logcat into block inlays above each instrumented composable. Covers the Compose Stability Analyzer tool window's three tabs (Explorer, Cascade, Heatmap), the cascade analyzer's static PSI…
Its SKILL.md is about 4.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, covering Mobile testing and debugging, Codebase onboarding and Android development. It works with JetBrains IDEs. The repository describes itself as: 🔒 🖼 Securely, easily add a watermark to your sensitive photos. 安全、简单地为你的敏感照片添加水印,防止被人泄露、利用. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 61223db. 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.
Shell commands in SKILL.md call:
adbFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
developer.android.comgithub.commedium.comFrom 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.
Visualizing Recomposition Cascades loads about 4.3k tokens when it runs. Until then it costs about 240 tokens; SKILL.md has 1,501 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); files beside SKILL.md are not scanned.
The full file from rosuH/EasyWatermark at commit 61223db, republished under its Apache-2.0 licence (© rosuH). 1,501 words, ~4,301 tokens.
.claude/skills/visualizing-recomposition-cascades/SKILL.md (or your agent's skills folder).Passive gutter icons answer "is this composable skippable" (covered by ../using-stability-analyzer-ide-plugin/SKILL.md). The active investigation tools answer two harder questions. The Cascade visualizer walks the static call graph from a root @Composable and shows what else might recompose if the root recomposes. The Live Heatmap subscribes to the device's logcat and renders the actual recomposition counts as block inlays above each instrumented composable in the editor. Together they close the loop between static analysis and runtime evidence.
Both features live inside the same IntelliJ plugin and surface through the right-anchored Compose Stability Analyzer tool window, which has three tabs: Explorer, Cascade, and Heatmap.
../../recomposition/debugging-recompositions/SKILL.md and needing the call-site context.UnstableComposable inspection from ../using-stability-analyzer-ide-plugin/SKILL.md are enough.../enforcing-stability-in-ci/SKILL.md.../../measurement/generating-baseline-profiles/SKILL.md. Toggle the heatmap off before such runs.../understanding-stability-inference/SKILL.md.../using-stability-analyzer-ide-plugin/SKILL.md already installed and the Compose Stability Analyzer tool window visible in the right rail.@TraceRecomposition (cross-link ../../measurement/tracing-recompositions-at-runtime/SKILL.md for the runtime setup).ComposeStabilityAnalyzer.setEnabled(true) called in Application.onCreate (gated on BuildConfig.DEBUG or a dedicated flag — see ../../measurement/tracing-recompositions-at-runtime/SKILL.md).@ComposableThe action Analyze Recomposition Cascade (id com.skydoves.compose.stability.idea.cascade.AnalyzeCascadeAction) is enabled only when the caret is inside a @Composable function. It is registered in the Editor popup; right-click anywhere inside the composable body to surface it.
Right-click → Analyze Recomposition Cascade. The right-anchored Compose Stability Analyzer tool window opens to the Cascade tab and renders a tree rooted at the selected function.
Internals to know when triaging the result:
KtCallExpression and descends into call targets resolved via resolveMainReference().../using-stability-analyzer-ide-plugin/SKILL.md.Walk depth-first. For each node:
../stabilizing-compose-types/SKILL.md) or by deferring state reads inside hot leaves (../../recomposition/deferring-state-reads/SKILL.md).The cascade is a static call-graph walk. Whether each downstream node actually recomposes at runtime depends on stability and skipping decisions made by the compiler and runtime. Confirm with the live heatmap (Workflow B) before drawing conclusions about real cost.
@TraceRecompositionThe heatmap is fed by logcat lines emitted by the @TraceRecomposition runtime. Without instrumented composables, no inlays appear. Use the Add @TraceRecomposition intention from ../using-stability-analyzer-ide-plugin/SKILL.md, or add the annotation manually. Full runtime setup (gating, state tracing, throttling) lives in ../../measurement/tracing-recompositions-at-runtime/SKILL.md.
Run a debug build on the connected device. Open the Logcat tool window and filter on tag Recomposition. Confirm D/Recomposition lines stream in when the instrumented composables recompose. The exact format the plugin's parser expects:
[Recomposition #3] UserProfile (tag: user-screen) (2.30ms)
├─ [param] user: User changed (User@abc123 → User@def456)
├─ [param] count: Int stable (42)
├─ [state] counter: Int changed (5 → 6)
└─ Unstable parameters: [user]If the log lines are not appearing, the runtime is misconfigured — go back to ../../measurement/tracing-recompositions-at-runtime/SKILL.md before continuing.
In the editor right-click → Toggle Recomposition Heatmap (action id com.skydoves.compose.stability.idea.heatmap.ToggleHeatmapAction). The action also lives under the Code menu.
The plugin's AdbLogcatService spawns this exact ADB command to subscribe:
adb logcat -s Recomposition:D -T 1-s Recomposition:D filters to the tag at debug level; -T 1 starts from the most recent line. If multiple devices are connected, a popup chooser appears.
HeatmapInlayManager places block inlays above each @Composable declaration that has streamed at least one event. Each inlay shows:
Click an inlay to switch the tool window to the Heatmap tab and focus that composable's event history. Hover an inlay for a 5-second tooltip with the latest data, served from AdbLogcatService.getHeatmapData(name).
Run Code → Clear Recomposition Data (action id com.skydoves.compose.stability.idea.heatmap.ClearHeatmapDataAction) to reset the counters between scenarios. Use this when comparing two interactions back-to-back (e.g. a list scroll vs. a search filter) without restarting the app.
Toggle the heatmap action again to stop the listener. The heatmap drives logcat I/O and PSI work on every recomposition; MUST toggle it off before running Macrobenchmark or Baseline Profile generation per ../../measurement/generating-baseline-profiles/SKILL.md, or the overhead will skew the timing results.
The right-anchored tool window with id Compose Stability Analyzer (icon /icons/stability.svg) ships with three tabs registered by StabilityToolWindowFactory:
| Tab | Backing class | Purpose |
|---|---|---|
| Explorer | StabilityToolWindow | Hierarchical tree by module → package → file → composable, with stability badges. Double-click navigates to the source. Use this as a survey view across a module before drilling into Cascade or Heatmap. |
| Cascade | CascadePanel | Populated when Analyze Recomposition Cascade runs. Shows the static call-graph tree from the selected root. |
| Heatmap | HeatmapPanel | Populated when the live heatmap is toggled on. Shows the live event log per composable. |
Use the Explorer tab as the entry point; drop into Cascade for a target; enable Heatmap to confirm.
@TraceRecomposition produces no inlays// WRONG
1. Toggle Recomposition Heatmap on.
2. ADB connects, logcat reader starts.
3. Scroll the screen aggressively.
4. No inlays appear above any composable.
5. Developer concludes "the heatmap is broken".// WRONG because: the heatmap is fed by logcat lines emitted by `@TraceRecomposition`.
// Without at least one instrumented composable there is nothing to render.
// Add `@TraceRecomposition` per `../../measurement/tracing-recompositions-at-runtime/SKILL.md`,
// rebuild, and toggle again.// RIGHT — instrument first, then toggle the heatmap
@TraceRecomposition(traceStates = true)
@Composable
fun PriceTicker(price: Price) {
Text(price.formatted)
}// WRONG
1. Open Macrobenchmark scroll journey.
2. Toggle Recomposition Heatmap on (forgot from earlier session).
3. Run the benchmark.
4. FrameTimingMetric numbers regress vs. baseline; team panics.// WRONG because: the heatmap drives logcat I/O and PSI updates on every recomposition.
// That overhead skews FrameTimingMetric and any release-grade measurement.
// Toggle the heatmap off before running `../../measurement/generating-baseline-profiles/SKILL.md`
// or any Macrobenchmark journey.// RIGHT
1. Toggle Recomposition Heatmap off (verify no inlays in editor).
2. Run the Macrobenchmark journey.
3. Compare FrameTimingMetric vs. the committed baseline.// WRONG
Cascade from PriceTicker shows 12 downstream composables.
Developer concludes "all 12 will recompose every tick" and refactors all 12.// WRONG because: the cascade is a static call-graph walk. Whether each downstream node
// actually recomposes depends on stability and skipping at runtime. Several of the 12
// may already be skipping today; refactoring them is wasted work.
// Confirm with the live heatmap before drawing conclusions.// RIGHT — the loop: cascade for blast radius, heatmap for confirmation, fix, re-measure
1. Analyze Recomposition Cascade from PriceTicker -> 12 nodes flagged.
2. Annotate the top 3 (by suspected hotness) with `@TraceRecomposition`.
3. Toggle Recomposition Heatmap on, run a representative scenario.
4. Inlays show 2 nodes with high counts; the other 10 stayed cold.
5. Fix the 2 hot nodes via `../stabilizing-compose-types/SKILL.md`.
6. Toggle the heatmap off, re-measure with `../../measurement/generating-baseline-profiles/SKILL.md`.// WRONG
Cascade shows a wide subtree; developer wraps every leaf in `key { ... }` to force isolation.// WRONG because: `key` does not make an unstable parameter stable. The leaves still
// receive unstable arguments; the parent still recomposes them. The fix is upstream:
// stabilize the type per `../stabilizing-compose-types/SKILL.md` so the existing
// skipping logic can do its job.// RIGHT
Identify the unstable parameter via the cascade node's badge.
Stabilize the type at its declaration site.
Re-run the cascade to confirm the badge flipped to stable.@TraceRecomposition before toggling the heatmap. Without it, the logcat stream is empty and no inlays render.../../measurement/generating-baseline-profiles/SKILL.md. Logcat overhead skews timing.ComposeStabilityAnalyzer.setEnabled(true) in production. Gate on BuildConfig.DEBUG or a dedicated flag per ../../measurement/tracing-recompositions-at-runtime/SKILL.md.@Composable shows Analyze Recomposition Cascade; right-clicking outside any composable does not.@TraceRecomposition applied, D/Recomposition lines appear in the Logcat window and block inlays appear above the matching composable declarations.D/Recomposition consumption from the plugin).compose-stability-analyzer-idea module within that repo — https://github.com/skydoves/compose-stability-analyzer/tree/main/compose-stability-analyzer-ideaFor the passive in-editor features (gutter icons, hover, inline hints, inspection) of the same plugin, see ../using-stability-analyzer-ide-plugin/SKILL.md. For the runtime instrumentation that emits the D/Recomposition lines the heatmap consumes, see ../../measurement/tracing-recompositions-at-runtime/SKILL.md. For CI-side gating against stability regressions, see ../enforcing-stability-in-ci/SKILL.md. For the upstream type fixes that prune cascade branches, see ../stabilizing-compose-types/SKILL.md. For deferring state reads inside hot leaves discovered via the heatmap, see ../../recomposition/deferring-state-reads/SKILL.md. For Macrobenchmark journeys that MUST run with the heatmap off, see ../../measurement/generating-baseline-profiles/SKILL.md.
© 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
Just SKILL.md in .agents/skills/visualizing-recomposition-cascades of rosuH/EasyWatermark.
Open the folder on GitHubat commit 61223db
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.
Visualizing Recomposition Cascades 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 |
|---|---|---|---|---|---|---|
| Visualizing Recomposition Cascades this skillrosuH/EasyWatermark | 1.9k | 1 repos | ~4.3k | Automated safety check: Pass | Apache-2.0 | |
| Spock AdbWahdanZ/SpockAdb | 114 | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Compose Multiplatform Patternsmonta-app/ocpp-emulator | 180 | 5 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Mobile QAtloncorp/tlon-apps | 107 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Frontend Maestronekomangaorg/Neko | 2.8k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| Android Emulator SkillMoustachauve/WLED-Android | 169 | 1 repos | ~911 | Automated safety check: Pass | Apache-2.0 |
WahdanZ/SpockAdb
Debug Android apps on a connected device or emulator through the Spock ADB MCP server (tools named android).
monta-app/ocpp-emulator
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
tloncorp/tlon-apps
Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.
nekomangaorg/Neko
Orchestrates macro-level UI architecture, complex Jetpack Compose structures, and screen-to-screen flows.
Moustachauve/WLED-Android
Production-ready scripts for Android app testing, building, and automation.
wordpress-mobile/WordPress-Android
Builds the Jetpack debug app with Gradle and installs it on a connected Android device or an emulator started from an available AVD.
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…
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).
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.
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.
rosuH/EasyWatermark
Analyzes Android codebases to implement ML Kit GenAI Prompt API.
rosuH/EasyWatermark
A skill your agent uses to fix unstable Jetpack Compose types once a stability diagnosis has identified them.
Works with
Categories
A skill your agent uses to drive the active investigation features of the skydoves/compose-stability-analyzer IntelliJ / Android Studio plugin: the static Recomposition Cascade visualizer that walks…. Visualizing Recomposition Cascades is an agent skill from rosuH/EasyWatermark. Use this skill to drive the active investigation features of the skydoves/compose-stability-analyzer IntelliJ / Android Studio plugin: the static Recomposition Cascade visualizer that walks the call graph from a root @Composable, and the live Recomposition Heatmap that streams D/Recomposition events from a connected device's logcat into block inlays above each instrumented composable.
Visualizing Recomposition Cascades fits situations like: the user asks what gets dragged in if I change this composable; how many times did this recompose during that scroll; what is the blast radius of this state change; mentions the cascade tab.
Run `npx skills add rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a claude-code`. Or copy the skill folder (.agents/skills/visualizing-recomposition-cascades in rosuH/EasyWatermark) into .claude/skills/visualizing-recomposition-cascades in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a codex`. Or copy the skill folder (.agents/skills/visualizing-recomposition-cascades in rosuH/EasyWatermark) into .agents/skills/visualizing-recomposition-cascades 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 rosuH/EasyWatermark --skill visualizing-recomposition-cascades -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/visualizing-recomposition-cascades, .gemini/skills/visualizing-recomposition-cascades, .github/skills/visualizing-recomposition-cascades and .opencode/skills/visualizing-recomposition-cascades in your project.
Going by SKILL.md and its folder, Visualizing Recomposition Cascades needs the command-line tools its instructions call (adb).
SKILL.md names 3 domains. As links in the text: developer.android.com, github.com and medium.com. 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. Review the folder before installing.
Visualizing Recomposition Cascades 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.
About 4.3k tokens (SKILL.md is roughly 17k 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 Visualizing Recomposition Cascades: Spock Adb (WahdanZ/SpockAdb, 114 stars), Compose Multiplatform Patterns (monta-app/ocpp-emulator, 180 stars), Mobile QA (tloncorp/tlon-apps, 107 stars) and Frontend Maestro (nekomangaorg/Neko, 2.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rosuH (a GitHub user) maintains it in rosuH/EasyWatermark, which has 1,894 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.