Maintain the Apk Analyzer Play Store screenshot carousel templates (docs/store/graphics/carouseltemplate.html and carouseltemplatedark.html) and export their frames as upload-ready PNGs…
Install the "store-listing-carousel" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/store-listing-carousel into .claude/skills/store-listing-carousel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-listing-carousel", 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.
Type 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.
skills CLI
$ npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "store-listing-carousel" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/store-listing-carousel into .agents/skills/store-listing-carousel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-listing-carousel", 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.
skills CLI
$ npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "store-listing-carousel" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/store-listing-carousel into .cursor/skills/store-listing-carousel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-listing-carousel", 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.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "store-listing-carousel" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/store-listing-carousel into .gemini/skills/store-listing-carousel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-listing-carousel", 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.
Installs 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).
skills CLI
$ npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "store-listing-carousel" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/store-listing-carousel into .github/skills/store-listing-carousel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-listing-carousel", 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.
skills CLI
$ npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "store-listing-carousel" agent skill from https://github.com/MartinStyk/apk-analyzer/tree/develop/.claude/skills/store-listing-carousel into .opencode/skills/store-listing-carousel/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "store-listing-carousel", 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.
Facts
Skill name
store-listing-carousel
GitHub stars
369
Token cost
~5.7k tokens
SKILL.md length
2,293 words
Files
1
Skills in repo
18
Repo updated
First seen
Licence
GPL-3.0
At a glance
Maintain the Apk Analyzer Play Store screenshot carousel templates (docs/store/graphics/carouseltemplate.html and carouseltemplatedark.html) and export their frames as upload-ready PNGs…
Works in 12 steps: Collect and sanity-check the screenshots → Determine the status-bar crop height → Crop every screenshot and sample the… → …
Tasks that involve App store release
SKILL.md covers Before touching anything, The 8-frame map, Workflow A: Editing — swap in… and Workflow B: Exporting — render…, plus 2 more sections
Calls node and curl
What it does
Store Listing Carousel is an agent skill from MartinStyk/apk-analyzer. Maintain the Apk Analyzer Play Store screenshot carousel templates (docs/store/graphics/carouseltemplate.html and carouseltemplatedark.html) and export their frames as upload-ready PNGs (docs/store/graphics/phone-screenshots/day and night). Covers two independent workflows — editing (swap in new screenshots after a UI change, refresh light/dark, add/remove/reorder a frame) and exporting (render the current frames to individual PNGs for Play Store upload) — either can run without the other. Triggered by phrases…
Its SKILL.md is about 5.7k 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 App store release. The repository describes itself as: The most downloaded APK analysis app on Google Play. Detailed reports of every app on your device. No root, no ads, nothing leaves the phone. The licence is GPL-3.0.
When your agent uses it
Tasks that involve App store release
Example prompts
“update the carousel”
“refresh the store screenshots”
“new Play Store screenshots”
“/store-listing-carousel”
Workflow steps
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit d807559. 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:
node
curl
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md. Its commands use curl, which can reach the network depending on how they are called.
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
Store Listing Carousel loads about 5.7k tokens when it runs. Until then it costs about 198 tokens; SKILL.md has 2,293 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~198
When it runs· the whole SKILL.md, loaded when a task matches
~5.7k
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.
Download SKILL.mdSave it as .claude/skills/store-listing-carousel/SKILL.md (or your agent's skills folder).
name
store-listing-carousel
description
Maintain the Apk Analyzer Play Store screenshot carousel templates (docs/store/graphics/carousel_template.html and carousel_template_dark.html) and export their frames as upload-ready PNGs (docs/store/graphics/phone-screenshots/day and night). Covers two independent workflows — editing (swap in new screenshots after a UI change, refresh light/dark, add/remove/reorder a frame) and exporting (render the current frames to individual PNGs for Play Store upload) — either can run without the other. Triggered by phrases like "update the carousel", "refresh the store screenshots", "new Play Store screenshots", "carousel template", "export store screenshots", "generate store images", "render the carousel to PNGs" — even if the user doesn't name this skill explicitly.
Store Listing Carousel
Maintains the two Apk Analyzer Play Store screenshot carousels —
docs/store/graphics/carousel_template.html (light) and carousel_template_dark.html (dark) — each
a single self-contained HTML file with 8 phone-frame "slides." Every frame shows a real app
screenshot behind a styled device frame, with a themed background, a headline, and a shared
"skyline" motif (rounded-arch + antenna dots, derived from the app icon) that ties all frames into
one visual system.
This skill covers two independent workflows that share the same templates but don't depend on each
other — run either one without the other:
Editing: swap new device screenshots
into the templates (crop → verify color → embed → QA). It never touches
phone-screenshots/.
Exporting: render whatever the
templates currently show into individual PNGs at docs/store/graphics/phone-screenshots/{day,night}/,
ready for Play Store upload. It's read-only against the templates — it never edits them, and doesn't
require having just run the edit workflow first.
Both files render at CSS scale (.frame is 360×640) — that's a review resolution, not the upload
resolution produced by the export workflow.
Before touching anything
Read the template(s) being updated and confirm the current frame count and order:
The <!-- FRAME N — Name --> HTML comments are the only order marker in the file (there are no
on-canvas debug labels — those were stripped from the shipped version and shouldn't be
reintroduced unless the user explicitly asks for them). Keep the comments sequential and accurate
whenever you add, remove, or reorder a frame — a previous edit left them out of order (1,2,3,4,4, 6,4,5), which silently broke the invariant this skill relies on; that's now fixed, so don't
reintroduce the drift.
Do not restructure the shared CSS system (.frame, .device, .screen, .skyline, .headtext,
theme classes) unless asked. The job is almost always: swap screenshots in, keep everything else.
The 8-frame map
Current locked structure for both templates. Preserve this order and theme unless the user asks to
change it — Play Store allows up to 8 screenshots, and this set is already at that cap.
#
Feature
Theme class
Headline
Eyebrow
alt text
1
App Report (detail overview)
theme-teal
"See exactly / what's inside."
full inspection
App report overview
2
Search & Filter
theme-teal
"Find any app / in seconds."
search & filter
Search and filter apps
3
Permissions
theme-tealLight
"Every permission, / plainly explained."
permission audit
Permissions audit
4
Browse by Attribute
theme-browse
"Flip the question / around."
browse by attribute
Browse by attribute
5
Certificates
theme-cream
"Verify who / really signed it."
signing & trust
Certificate details and fingerprints
6
Manifest
theme-manifest
"The full manifest. / Decoded, exportable."
raw manifest
Raw AndroidManifest.xml
7
AI Summary
theme-violet
"Plain-language / summaries. On-device."
on-device AI
On-device AI summary
8
Export & Share
theme-clay
"Save, export, / no root needed."
export & share
Export and share actions
Each frame's screenshot is embedded via:
html
<img class="real-shot" src="data:image/png;base64,<...>" alt="<descriptive alt text>">
Target a specific frame for replacement by matching on alt, not on position in the file — edits
can reorder frames, and alt is the stable identifier.
Workflow A: Editing — swap in a new batch of screenshots
Do the light and dark templates as two separate passes. They take different source screenshots
(light-mode vs. dark-mode device captures) and a different .screen background (#f7f7f7 vs.
#000000) — don't reuse a light-mode crop in the dark file or vice versa.
This environment has no Python/PIL and no ImageMagick (convert on PATH resolves to the Windows
disk-conversion utility, not ImageMagick) — every step below uses PowerShell's built-in
System.Drawing, which needs no install.
1. Collect and sanity-check the screenshots
Confirm you have one screenshot per frame you're updating (up to 8), and check resolution
consistency:
If resolutions differ from the previous batch, the crop height (next step) must be re-verified —
don't reuse a prior crop value blindly.
2. Determine the status-bar crop height
Status bar height varies by device skin, font size, and OS version — never assume a fixed pixel
value from a prior session. Read one raw screenshot directly with the Read tool to eyeball it, or
cut a top strip first if you need a closer look:
Then Read _status_bar_check.png and read off where the status bar icons end and real content
(back arrow, title, etc.) begins. Re-verify per batch — don't assume a value from a previous
session still holds for a different device skin or OS version.
3. Crop every screenshot and sample the background color
Check that every sampled color matches (they should all be identical — either the light
#f7f7f7 background token or the dark #000000 token, per ApkAnalyzerColorPalette in
Color.kt).
If one screenshot samples differently, that screen likely has a non-standard top background (e.g. a
colored app bar) — flag it to the user rather than silently forcing a mismatched gap color.
4. Update the notch-gap and screen background to match
.screen sets the base background and .real-shot is absolutely positioned with a fixed top:30px
gap so the device notch never overlaps real content:
css
.screen{ background:#f7f7f7; /* or #000000 for dark */ ... }
.real-shot{
position:absolute; top:30px; left:0;
width:100%; height:calc(100% - 30px);
object-fit:cover; object-position:top center;
}
If switching between light/dark or onto a new palette, update .screen's background to the
sampled color from step 3 — do not leave it mismatched, even by a shade, or the notch gap will show
a visible seam.
5. Base64-encode and embed by alt-text match
Keep referencing images by relative file path out of the templates — a self-contained HTML file
stays reviewable in a browser or an Artifact without carrying sibling image files alongside it in
the repo, and it's how the two templates already ship. Always inline as base64:
Only frames present in $altToFile get touched — everything else in the template (headlines,
themes, untouched frames) is preserved exactly. Write with a BOM-less UTF8Encoding explicitly —
Set-Content/Out-File in Windows PowerShell 5.1 don't reliably round-trip the file's emoji and
unicode punctuation otherwise.
6. Reconcile theme colors against the new screenshots (if content changed)
If a screenshot's own accent color changed (e.g. a redesigned AI-summary card, a new brand color),
update the surrounding frame theme to match it rather than leave it clashing. Re-read
Color.kt
for the current tokens rather than trusting a cached value — this table was correct as of the last
verification, but the source file is canonical:
The AI Summary frame (theme-violet) in particular must use the dark aiAccent tokens when showing
a dark-mode screenshot — using the light-mode violet next to a dark-mode purple card reads as two
different, clashing purples.
7. QA before calling it done
Open the updated HTML in a browser and check, per frame:
No visible seam between the notch gap and the screenshot's real background
Headline text (max 2 lines) doesn't overlap the device frame
Cropped screenshot didn't lose the specific content the frame is meant to prove (e.g. don't
let a top-anchored crop cut off the one stat that sells the frame — check object-position
isn't hiding it)
Exactly 8 frames total (or fewer, never more — Play Store's hard cap)
Status bar clocks/times are gone from every frame (cropped in step 3)
<!-- FRAME N --> comments are still sequential 1–8 after any reorder
The finished files are already in their real location (docs/store/graphics/) — there's no separate
delivery step. Tell the user which frames changed and in which of the two templates.
Workflow B: Exporting — render frames to upload-ready PNGs
Purely reads the templates and writes PNGs — never edits carousel_template.html or
carousel_template_dark.html. Output goes to
docs/store/graphics/phone-screenshots/day/ (from the light template) and
.../phone-screenshots/night/ (from the dark template), one file per frame, named from the
8-frame map's slug: 01-app-report.png, 02-search-filter.png,
03-permissions.png, 04-browse-attribute.png, 05-certificates.png, 06-manifest.png,
07-ai-summary.png, 08-export-share.png.
Target format (Play Store phone screenshot requirements): PNG, ≤8 MB, 9:16 or 16:9 aspect ratio,
each side between 320 px and 3,840 px. The frames are natively 9:16 (360×640 at CSS scale), so this
falls out automatically as long as you scale both dimensions together — never crop to force the
ratio.
This environment has no headless HTML-to-PNG renderer (no Puppeteer/Playwright, no ImageMagick —
convert on PATH resolves to the Windows disk-conversion utility, not ImageMagick) and no
Python/PIL. Rendering goes through the claude-in-chrome browser tools plus PowerShell's built-in
System.Drawing for the pixel work — load the chrome tools once via
ToolSearch("select:mcp__claude-in-chrome__tabs_context_mcp,mcp__claude-in-chrome__navigate,mcp__claude-in-chrome__computer,mcp__claude-in-chrome__javascript_tool,mcp__claude-in-chrome__browser_batch,mcp__claude-in-chrome__tabs_create_mcp,mcp__claude-in-chrome__tabs_close_mcp")
before starting.
Show full SKILL.md (979 more words)Show less
Why this isn't a single screenshot per frame
Two constraints, discovered by testing this pipeline directly rather than assumed:
file:// is blocked. The claude-in-chrome extension refuses to navigate to file:// URLs
("Can't interact with browser-internal or unparseable URLs") — it won't read arbitrary local
files. Serve the templates' directory over local HTTP first.
The browser window can't exceed the physical screen.resize_window silently clamps to
whatever the monitor allows — asking for 1120×2040 on a 1920×1080 display came back as
1920×957 (screen height minus window chrome). A frame rendered at a scale large enough to look
like a real phone screenshot (e.g. 3× CSS zoom → 1080×1920) is therefore taller than the
viewport can ever show at once, on any normal monitor. The fix is to capture each frame in two
vertical slices and stitch them — not to hunt for a bigger window.
Kill the node process (matched by the port in its command line) once every export is done — don't
leave a stray server running past this session.
2. Open a tab and measure the real viewport
tabs_context_mcp { createIfEmpty: true }
navigate -> http://127.0.0.1:8743/carousel_template.html
javascript_tool -> window.innerWidth, window.innerHeight (after the page has settled)
Don't hardcode a prior session's viewport height — screen resolution and OS chrome differ by
machine. This session measured 1920×957; recompute per session.
3. Isolate one frame at a fixed, padding-free origin
For each frame index i (0–7, in the 8-frame map order), navigate fresh and run:
With every sibling hidden, the flex .strip collapses to just the one visible frame, which — once
body padding is zeroed — always lands at exactly (0, 0) regardless of which frame it is. Verify
this once with getBoundingClientRect(); after that it's safe to assume without re-querying.
4. Picking the zoom factor
The two-slice budget is 2 × innerHeight (each slice can be at most innerHeight tall). At
innerHeight = 957, that's 1914. Pick a zoom so 640 × zoom sits comfortably under that budget —
2.9 (→ 1856 tall, 1044 wide) leaves ~60px of margin for rounding, which is what this skill was
last verified against. Recompute against the actual measured innerHeight rather than reusing 2.9
blindly: zoom ≤ (2 × innerHeight × 0.97) / 640.
Retry once on failure. The very first computer.zoom call after a navigate + DOM mutation
frequently times out (CDP sendCommand "Page.captureScreenshot" timed out after 30000ms) and then
succeeds immediately on retry — this happened repeatedly during testing and is not a sign anything is
actually wrong. Only escalate to the user if a retry also fails.
6. Scroll and capture slice 2 (bottom)
javascript
window.scrollTo(0, innerHeight); // e.g. scrollTo(0, 957)
Then capture region [0, 0, frameWidth, frameHeight - innerHeight] (e.g. [0, 0, 1044, 899] for a
1856-tall frame after a 957 first slice). Because the frame sat at (0,0) before scrolling,
scrolling by exactly the first slice's height aligns the frame's remaining content to viewport y=0
with no gap and no overlap — no need to eyeball or fudge an offset.
7. Stitch the two slices
powershell
Add-Type -AssemblyName System.Drawing
$top = [System.Drawing.Image]::FromFile($topPath)
$bottom = [System.Drawing.Image]::FromFile($bottomPath)
$totalHeight = $top.Height + $bottom.Height # compute the sum in its own variable — see note below
$out = New-Object System.Drawing.Bitmap($top.Width, $totalHeight)
$g = [System.Drawing.Graphics]::FromImage($out)
$g.DrawImage($top, 0, 0)
$g.DrawImage($bottom, 0, $top.Height)
$out.Save($dest, [System.Drawing.Imaging.ImageFormat]::Png)
$g.Dispose(); $out.Dispose(); $top.Dispose(); $bottom.Dispose()
Remove-Item $topPath, $bottomPath -Force # clean up the temp slices immediately
Don't inline the height sum into New-Object's argument list
(New-Object System.Drawing.Bitmap($top.Width, $top.Height + $bottom.Height)). PowerShell's argument
parsing treats , and + unusually inside that parenthesized form and will silently call the
3-argument Bitmap(width, height, PixelFormat) overload instead, passing $bottom.Height as a
PixelFormat and failing with a confusing conversion error. Compute $totalHeight as its own
statement first, as shown above.
$dest is the final path: docs/store/graphics/phone-screenshots/day/<slug>.png for the light
template, .../night/<slug>.png for the dark one, using the slug from the
8-frame map.
8. QA before calling it done
All 8 day files and all 8 night files exist, named per the 8-frame map's slugs
No visible seam at the slice boundary (open one and check where the stitch line falls —
it should be invisible)
Each file: PNG, well under 8 MB, 9:16 aspect ratio, both sides within 320–3,840 px
Temp slice files and the local HTTP server are cleaned up
Tell the user which frames were exported and to which folders — this workflow doesn't touch the
templates, so there's nothing to report there.
Adding, removing, or reordering a frame
Adding: only if under the 8-frame cap. Pick a theme color not already adjacent to its
neighbors (see the alternating pattern in the current 8), write a 2-line headline, and place it
where it fits the narrative sequence (overview → drill-down features → action/export at the end).
Removing: delete the whole <!-- FRAME N — Name --> ... </div> block and renumber the
remaining HTML comments sequentially (FRAME 1, FRAME 2, ...) so they stay accurate for future
editing sessions.
Reordering: move the whole frame block; renumber the <!-- FRAME N --> comments to match.
Common mistakes to avoid
Referencing images by relative src path instead of embedding base64 — breaks when the HTML is
viewed outside the exact folder it was built in.
Assuming crop height, or the status-bar strip's pixel offset, from a previous session without
re-verifying against the new screenshot batch — different devices/OS skins have different status
bar heights.
Leaving .screen background color mismatched against the actual screenshot content color — even a
one-shade difference shows as a visible seam under the notch.
Redesigning the skyline motif, type system, or color tokens without being asked — this skill is
for swapping content into a locked design, not iterating the design itself.
Editing only one of the two templates when a change (theme color, headline, frame order) should
apply to both light and dark.
(Export) Navigating to the templates via file:// — the claude-in-chrome extension blocks it.
Serve the directory over local HTTP first.
(Export) Treating a single computer.zoom timeout as a real failure instead of retrying once —
the first capture after a navigate+mutation times out routinely and succeeds on retry.
(Export) Assuming a prior session's innerHeight or zoom factor still fits — screen resolution
differs by machine; measure fresh and recompute the zoom factor each session.
(Export) Inlining $top.Height + $bottom.Height directly into New-Object Bitmap(...)'s argument
list instead of a separate $totalHeight = statement — silently calls the wrong constructor
overload.
Store Listing Carousel 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.
Store Listing Carousel compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Store Listing Carousel this skillMartinStyk/apk-analyzer
Generate high-converting App Store screenshots by analyzing your app's codebase, discovering core benefits, and creating ASO-optimized screenshot images using Nano Banana Pro.
Set territory-specific pricing for subscriptions and in-app purchases using current asc setup, pricing summary, price import, and price schedule commands.
Maintain a Docusaurus product manual whose prose, navigation, localized page trees, screenshots, coverage metadata, and release build must stay aligned with the application.
A skill your agent uses to review production Crashlytics crashes and non-fatals for the latest release and file a GitHub issue for each one that isn't tracked yet.
Maintain the Apk Analyzer Play Store screenshot carousel templates (docs/store/graphics/carouseltemplate.html and carouseltemplatedark.html) and export their frames as upload-ready PNGs…. Store Listing Carousel is an agent skill from MartinStyk/apk-analyzer.html) and export their frames as upload-ready PNGs (docs/store/graphics/phone-screenshots/day and night).
When should I use Store Listing Carousel?
Store Listing Carousel fits situations like: tasks that involve App store release.
How do I install Store Listing Carousel in Claude Code?
Run `npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a claude-code`. Or copy the skill folder (.claude/skills/store-listing-carousel in MartinStyk/apk-analyzer) into .claude/skills/store-listing-carousel in your project. Claude Code loads it when a task matches its description.
How do I install Store Listing Carousel in Codex?
Run `npx skills add MartinStyk/apk-analyzer --skill store-listing-carousel -a codex`. Or copy the skill folder (.claude/skills/store-listing-carousel in MartinStyk/apk-analyzer) into .agents/skills/store-listing-carousel in your project. Codex loads it when a task matches its description.
Can I use Store Listing Carousel 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 MartinStyk/apk-analyzer --skill store-listing-carousel -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/store-listing-carousel, .gemini/skills/store-listing-carousel, .github/skills/store-listing-carousel and .opencode/skills/store-listing-carousel in your project.
What does Store Listing Carousel need to run?
Going by SKILL.md and its folder, Store Listing Carousel needs the command-line tools its instructions call (node and curl).
Does Store Listing Carousel access the network?
SKILL.md contains no URLs. Its commands use curl, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Is Store Listing Carousel 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 Store Listing Carousel use?
Store Listing Carousel is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Store Listing Carousel use?
About 5.7k tokens (SKILL.md is roughly 23k 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 Store Listing Carousel?
Skills that share tags, products or a category with Store Listing Carousel: Aso Appstore Screenshots (adamlyttleapps/claude-skill-aso-appstore-screenshots, 1.8k stars), Asc Ppp Pricing (rorkai/app-store-connect-cli-skills, 1.1k stars), Maintain Docusaurus Manual (matthiasn/lotti, 1.2k stars) and Workbuddy Skin Studio (cdredfox/workbuddy-skin-studio, 198 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Store Listing Carousel?
MartinStyk (a GitHub user) maintains it in MartinStyk/apk-analyzer, which has 369 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 5, 2026.
Source: MartinStyk/apk-analyzer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.