Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
Mobile API surface (v3 only), removed legacy endpoints, and the v5-native tag format for mobile clients.
$ npx skills add OpenLitterMap/openlittermap-web --skill mobile-shim -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenLitterMap/openlittermap-web mobile-shim --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/OpenLitterMap/openlittermap-web.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.ai/skills/mobile-shim .claude/skills/mobile-shim && 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 "mobile-shim" agent skill from https://github.com/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shim into .claude/skills/mobile-shim/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mobile-shim", 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/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shimType 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 OpenLitterMap/openlittermap-web --skill mobile-shim -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenLitterMap/openlittermap-web mobile-shim --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLitterMap/openlittermap-web.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.ai/skills/mobile-shim .agents/skills/mobile-shim && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "mobile-shim" agent skill from https://github.com/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shim into .agents/skills/mobile-shim/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mobile-shim", 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 OpenLitterMap/openlittermap-web --skill mobile-shim -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenLitterMap/openlittermap-web mobile-shim --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLitterMap/openlittermap-web.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.ai/skills/mobile-shim .cursor/skills/mobile-shim && 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 "mobile-shim" agent skill from https://github.com/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shim into .cursor/skills/mobile-shim/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mobile-shim", 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/OpenLitterMap/openlittermap-web.git --path .ai/skills/mobile-shim--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 OpenLitterMap/openlittermap-web --skill mobile-shim -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenLitterMap/openlittermap-web mobile-shim --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLitterMap/openlittermap-web.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.ai/skills/mobile-shim .gemini/skills/mobile-shim && 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 "mobile-shim" agent skill from https://github.com/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shim into .gemini/skills/mobile-shim/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mobile-shim", 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 OpenLitterMap/openlittermap-web mobile-shimInstalls 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 OpenLitterMap/openlittermap-web --skill mobile-shim -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OpenLitterMap/openlittermap-web.git skills-src && mkdir -p .github/skills && cp -r skills-src/.ai/skills/mobile-shim .github/skills/mobile-shim && 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 "mobile-shim" agent skill from https://github.com/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shim into .github/skills/mobile-shim/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mobile-shim", 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 OpenLitterMap/openlittermap-web --skill mobile-shim -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OpenLitterMap/openlittermap-web mobile-shim --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenLitterMap/openlittermap-web.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.ai/skills/mobile-shim .opencode/skills/mobile-shim && 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 "mobile-shim" agent skill from https://github.com/OpenLitterMap/openlittermap-web/tree/master/.ai/skills/mobile-shim into .opencode/skills/mobile-shim/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "mobile-shim", 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.
mobile-shimMobile API surface (v3 only), removed legacy endpoints, and the v5-native tag format for mobile clients.
Mobile Shim is an agent skill from OpenLitterMap/openlittermap-web. Mobile API surface (v3 only), removed legacy endpoints, and the v5-native tag format for mobile clients.
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with PHP. The repository describes itself as: https://opengeospatialdata.springeropen.com/articles/10.1186/s40965-018-0050-y. The licence is GPL-3.0.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ac688aa. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Mobile Shim loads about 1.4k tokens when it runs. Until then it costs about 29 tokens; SKILL.md has 538 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 OpenLitterMap/openlittermap-web at commit ac688aa, republished under its GPL-3.0 licence (© OpenLitterMap). 538 words, ~1,385 tokens.
.claude/skills/mobile-shim/SKILL.md (or your agent's skills folder).All legacy v1/v2/v4 mobile endpoints and the ConvertV4TagsAction shim have been removed (2026-03-01). The mobile app uses v3 endpoints exclusively.
app/Http/Controllers/Uploads/UploadPhotoController.php — v3 upload (EXIF-based)app/Http/Controllers/API/Tags/PhotoTagsController.php — v3 tag CRUD (CLO format)app/Http/Controllers/User/Photos/UsersUploadsController.php — v3 user photos listingapp/Http/Controllers/Auth/AuthTokenController.php — Mobile token login (Sanctum)readme/Mobile.md — Mobile documentation| Action | Method | Endpoint |
|---|---|---|
| Auth (token) | POST | /api/auth/token |
| Validate token | POST | /api/validate-token |
| Upload photo | POST | /api/v3/upload |
| Add tags | POST | /api/v3/tags |
| Replace tags | PUT | /api/v3/tags |
| List photos | GET | /api/v3/user/photos |
| Photo stats | GET | /api/v3/user/photos/stats |
| Delete photo | POST | /api/profile/photos/delete (body: { "photoid": 123 }) |
| Tag catalog | GET | /api/tags/all |
| Profile | GET | /api/user/profile/index |
| Global stats | GET | /api/global/stats-data (no auth) |
| Levels | GET | /api/levels (no auth) |
POST /api/v3/upload supports two modes:
photo required. GPS + datetime from EXIF.lat + lon + date alongside photo. All three must be present. EXIF validation skipped. Platform set to 'mobile'.Optional fields: picked_up (boolean, overrides user default), model (string, device name).
Date accepts Unix timestamp (seconds) or ISO 8601 string. (0, 0) coordinates rejected.
GET /api/v3/user/photos?tagged=false&per_page=100 — fetches untagged photos. per_page default 8, max 100.
POST /api/auth/token returns a Bearer token. All subsequent requests include Authorization: Bearer <token>.identifier field for login. AuthTokenController accepts identifier, email, or username for backward compatibility.category_litter_object_id + optional litter_object_type_id, not category/object string pairs.picked_up not remaining. Photo responses include picked_up (boolean, never null) and remaining (deprecated, inverse). Per-tag picked_up in new_tags[] is nullable (true/false/null). The remaining column will be removed after the v5 migration script runs.photoid (lowercase, no underscore). POST /api/profile/photos/delete body: { "photoid": 123 }. Response: { "message": "Photo deleted successfully!" }.{
"photo_id": 123,
"tags": [
{
"category_litter_object_id": 42,
"litter_object_type_id": 3,
"quantity": 2,
"picked_up": true,
"materials": [{ "id": 1, "quantity": 1 }],
"brands": [{ "id": 5, "quantity": 1 }]
}
]
}GET /api/tags/all returns 7 flat collections. Mobile must join them:
category_objects[].id = cloIdcategory_object_types → types for display namesPOST /api/photos/submit (and all aliases)POST /api/add-tagsPOST /api/v2/add-tags-to-uploaded-imageGET /api/v2/photos/get-untagged-uploadsGET /api/v2/photos/web/*DELETE /api/photos/deletePOST /api/uploadGET /api/user (closure), GET /api/current-userapp/Actions/Tags/ConvertV4TagsAction.php — v4→v5 conversion shim (no longer needed)app/Http/Controllers/ApiPhotosController.php — legacy mobile upload/deleteapp/Http/Controllers/API/AddTagsToUploadedImageController.php — legacy mobile taggingapp/Http/Controllers/API/GetUntaggedUploadController.php — legacy untagged photos listSee MOBILE_API_CHANGES.md at the project root for the full RN v7 change log.
Key notes:
filename field is a full URL — usable directly as an image source (no base URL prefix needed)new_tags response includes category, object, type, extra_tags, picked_up (bool). For loose tags (extra-tag-only), category, object, and category_litter_object_id may be null.PUT /api/v3/tags — same CLO format. Accepts empty tags: [] to clear all tags.picked_up cast to (bool) with fallback to photo-level picked_up{ smoking: { butts: 3 } } is no longer accepted. Use CLO format.POST /api/photos/submit no longer exists. Use POST /api/v3/upload.DELETE /api/photos/delete no longer exists. Use POST /api/profile/photos/delete./api/tags/all. The 7 flat collections must be joined client-side.filename with a base URL. The filename field is already a full URL — using it with a prefix produces a broken double-URL.© OpenLitterMap, GPL-3.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 .ai/skills/mobile-shim of OpenLitterMap/openlittermap-web.
Open the folder on GitHubat commit ac688aa
Mobile Shim 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 |
|---|---|---|---|---|---|---|
| Mobile Shim this skillOpenLitterMap/openlittermap-web | 134 | — | ~1.4k | Automated safety check: Pass | GPL-3.0 | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Tailwindcss Developmentanonaddy/anonaddy | 4.9k | 10 repos | ~865 | Automated safety check: Pass | MIT | |
| Fortify Developmentcoollabsio/coolify | 63k | 4 repos | ~1.9k | Automated safety check: Pass | MIT | |
| MCP Developmentcoollabsio/coolify | 63k | 1 repos | ~949 | Automated safety check: Pass | MIT | |
| WooCommerce Code Reviewwoocommerce/woocommerce | 11k | 3 repos | ~1.1k | Automated safety check: Pass | Custom licence |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
anonaddy/anonaddy
Always invoke when the user's message includes 'tailwind' in any form.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
coollabsio/coolify
A skill your agent uses for Laravel MCP development. An agent skill from coollabsio/coolify.
woocommerce/woocommerce
Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.
symfony/symfony
Synchronize translation catalogs across maintained Symfony branches: find messages that newer branches added to the English catalogs but that are still missing from the oldest maintained branch…
OpenLitterMap/openlittermap-web
Styles applications using Tailwind CSS v3 utilities. An agent skill from OpenLitterMap/openlittermap-web.
OpenLitterMap/openlittermap-web
OpenLitterMap v5 architecture reference. An agent skill from OpenLitterMap/openlittermap-web.
OpenLitterMap/openlittermap-web
AchievementEngine, AchievementRepository, milestone checkers, AchievementsSeeder, userachievements pivot, AchievementsController API, and achievement evaluation flow.
OpenLitterMap/openlittermap-web
AdminController, photo approval, tag editing, deletion, MetricsService integration, admin middleware, verification queue, and admin XP.
OpenLitterMap/openlittermap-web
REST API endpoints, route structure, auth guards, request/response contracts, error patterns, and the full API surface for web SPA and mobile clients.
OpenLitterMap/openlittermap-web
ClusteringService, tile keys, dirty tiles/teams, clustering commands, ClusterController GeoJSON API, PhotoObserver dirty marking, and map cluster rendering.
Works with
Mobile API surface (v3 only), removed legacy endpoints, and the v5-native tag format for mobile clients. Mobile Shim is an agent skill from OpenLitterMap/openlittermap-web. Mobile API surface (v3 only), removed legacy endpoints, and the v5-native tag format for mobile clients.
Run `npx skills add OpenLitterMap/openlittermap-web --skill mobile-shim -a claude-code`. Or copy the skill folder (.ai/skills/mobile-shim in OpenLitterMap/openlittermap-web) into .claude/skills/mobile-shim in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenLitterMap/openlittermap-web --skill mobile-shim -a codex`. Or copy the skill folder (.ai/skills/mobile-shim in OpenLitterMap/openlittermap-web) into .agents/skills/mobile-shim 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 OpenLitterMap/openlittermap-web --skill mobile-shim -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mobile-shim, .gemini/skills/mobile-shim, .github/skills/mobile-shim and .opencode/skills/mobile-shim in your project.
SKILL.md names no scripts, command-line tools or credentials: Mobile Shim is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
Mobile Shim 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.
About 1.4k tokens (SKILL.md is roughly 5.5k 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 Mobile Shim: Configuring Horizon (coollabsio/coolify, 63k stars), Tailwindcss Development (anonaddy/anonaddy, 4.9k stars), Fortify Development (coollabsio/coolify, 63k stars) and MCP Development (coollabsio/coolify, 63k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OpenLitterMap (a GitHub organization) maintains it in OpenLitterMap/openlittermap-web, which has 134 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on September 14, 2026.
Source: OpenLitterMap/openlittermap-web on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.