{"id":50496098,"url":"https://github.com/funplayai/funplay-skill","last_synced_at":"2026-06-02T07:03:26.175Z","repository":{"id":361980943,"uuid":"1210302362","full_name":"FunplayAI/funplay-skill","owner":"FunplayAI","description":"Open-source game development skills — reusable workflows for texture processing, audio, level generation, asset optimization, and more.","archived":false,"fork":false,"pushed_at":"2026-06-02T03:31:47.000Z","size":100,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T05:15:06.735Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FunplayAI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-14T09:25:46.000Z","updated_at":"2026-06-02T03:31:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/FunplayAI/funplay-skill","commit_stats":null,"previous_names":["funplayai/funplay-skill"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/FunplayAI/funplay-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2Ffunplay-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2Ffunplay-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2Ffunplay-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2Ffunplay-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FunplayAI","download_url":"https://codeload.github.com/FunplayAI/funplay-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunplayAI%2Ffunplay-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33810344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-02T07:03:24.569Z","updated_at":"2026-06-02T07:03:26.170Z","avatar_url":"https://github.com/FunplayAI.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eFunPlay Skill\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eReusable game-development skills for coding agents\u003c/strong\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    English · \u003ca href=\"./README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Skills-13-blue\" alt=\"13 skills\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Node.js-18%2B-339933?logo=node.js\u0026logoColor=white\" alt=\"Node.js 18+\" /\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-green\" alt=\"MIT License\" /\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\nFunPlay Skill is a game-development skills library for coding agents, focused on reusable workflows for game design, assets, browser-game slices, and engine-specific validation.\n\n## Skills catalog\n\nThe repository currently ships these verified skills:\n\n| Category | Skill | Use when | Validation surface |\n| --- | --- | --- | --- |\n| Asset Processing | `skills/sprite-sheet` | Split a sprite sheet into numbered frame images | `scripts/slice.mjs` plus tests |\n| Asset Processing | `skills/normal-map` | Generate a tangent-space normal map from a diffuse texture | `scripts/generate.mjs` plus tests |\n| Asset Processing | `skills/audio-format-convert` | Convert audio between `wav`, `ogg`, and `mp3` | `scripts/convert.mjs` plus tests |\n| Game Design Workflow | `skills/game-concept-brief` | Turn early game inspiration into a compact GDD-lite / MDA / MVP brief | `scripts/build-brief.mjs` plus tests |\n| Game Build Workflow | `skills/playable-game-build-flow` | Guide a small browser game from intent capture to a playable vertical slice | `scripts/validate-pillar.mjs` plus tests |\n| UI Asset Workflow | `skills/game-ui-asset-brief` | Produce game UI asset prompts, cutout requirements, and validation checks | `scripts/build-brief.mjs` plus tests |\n| Engine Workflow | `skills/unity-mcp-workflow` | Use Funplay Unity MCP for edit, compile, Play Mode, screenshot, hierarchy, and console verification | verified upstream source |\n| Cocos Engine | `skills/minigame-subpackage-rules` | Validate WeChat/Douyin minigame subpackage rules | `scripts/validate-minigame-subpackages.mjs` plus tests |\n| Cocos Engine | `skills/canvas-page-popup-bootstrap` | Create or validate new Cocos page, popup, or HUD canvas entries | `scripts/validate-canvas-entry.mjs` plus tests |\n| Cocos Engine | `skills/canvas-page-popup-removal` | Check blockers before removing existing page or popup canvas nodes | `scripts/check-removal-blockers.mjs` plus tests |\n| Cocos Engine | `skills/cocos-ui-node-retrofit` | Classify and plan safe Cocos UI node retrofits | `scripts/classify-retrofit.mjs` plus tests |\n| Cocos Engine | `skills/workbench-asset-replace` | Plan safe Workbench asset replacement into Cocos visuals | `scripts/plan-asset-replace.mjs` plus tests |\n| Meta Routing | `skills/using-funplay-skills` | Choose the right FunPlay skill for a user goal | repository routing policy |\n\nUse `skills/using-funplay-skills` when the right workflow is unclear.\n\n### Repository Support\n\n- `hooks/`: session-start context injection\n- `commands/`: lightweight slash-command wrappers that route users to the right skill\n- `docs/skill-spec.md`: canonical skill authoring rules\n- `CONTRIBUTING.md`, `CHANGELOG.md`, and `RELEASE_CHECKLIST.md`: contributor and release workflow docs\n\n## Installation\n\n### Claude Code\n\nFor local development, start Claude Code from this repository's parent directory, then run:\n\n- `/plugin marketplace add ./\u003cyour-checkout-dir\u003e`\n- `/plugin install funplay-skill@funplay-skill`\n\nYou can also start a one-off session with:\n\n- `claude --plugin-dir /absolute/path/to/\u003cyour-checkout-dir\u003e`\n\n### Cursor\n\nInstall through Cursor's plugin support from this repository. The Cursor manifest lives at `.cursor-plugin/plugin.json`.\n\n### Codex\n\nFollow `.codex/INSTALL.md`. In short:\n\n- clone this repo\n- symlink `skills/` into your agent skills directory\n- restart Codex\n\n### OpenCode\n\nFollow `.opencode/INSTALL.md`. In short, add this Git plugin to `opencode.json`:\n\n```json\n{\n  \"plugin\": [\"funplay-skill@git+https://github.com/FunplayAI/funplay-skill.git\"]\n}\n```\n\n### Gemini CLI\n\nInstall the extension from the repository URL. Gemini reads `gemini-extension.json` and `GEMINI.md`.\n\n## Development commands\n\n- `npx pnpm install`: install dependencies\n- `npx pnpm test`: run repository tests\n- `npx pnpm validate:workspace`: verify required files and folders\n\nCI runs the same test and workspace validation commands.\n\n## Using the skills\n\n### Asset Processing\n\n- `sprite-sheet`: `node skills/sprite-sheet/scripts/slice.mjs \u003cimage\u003e \u003crows\u003e \u003ccols\u003e`\n- `normal-map`: `node skills/normal-map/scripts/generate.mjs \u003cimage\u003e`\n- `audio-format-convert`: `node skills/audio-format-convert/scripts/convert.mjs \u003cinput\u003e \u003cformat\u003e`\n\n### Game Build Workflow\n\n- `playable-game-build-flow`: guide a small browser game from a one-sentence idea to a playable vertical slice, with the bundled `node \u003cpath-to-this-skill\u003e/scripts/validate-pillar.mjs \u003cpillar.md\u003e` for pillar-contract checks\n\n### Game Design Workflow\n\n- `game-concept-brief`: `node skills/game-concept-brief/scripts/build-brief.mjs --prompt \"\u003cgame idea\u003e\"`\n\n### UI Asset Workflow\n\n- `game-ui-asset-brief`: `node skills/game-ui-asset-brief/scripts/build-brief.mjs --style \"\u003cart direction\u003e\" --asset background --asset button_skin`\n\n### Engine Workflow\n\n- `unity-mcp-workflow`: use when a Unity project is connected to Funplay MCP and needs compile, Play Mode, screenshot, hierarchy, console, or prefab/scene readback verification\n\n### Cocos Engine\n\n- `minigame-subpackage-rules`: `node skills/minigame-subpackage-rules/scripts/validate-minigame-subpackages.mjs profiles/v2/packages/project.json --platform wechatgame`\n- `canvas-page-popup-bootstrap`: `node skills/canvas-page-popup-bootstrap/scripts/validate-canvas-entry.mjs canvas/canvas.json page:shop`\n- `canvas-page-popup-removal`: `node skills/canvas-page-popup-removal/scripts/check-removal-blockers.mjs canvas/canvas.json popup:coupon`\n- `cocos-ui-node-retrofit`: `node skills/cocos-ui-node-retrofit/scripts/classify-retrofit.mjs --intent \"\u003cchange\u003e\" --component cc.Label`\n- `workbench-asset-replace`: `node skills/workbench-asset-replace/scripts/plan-asset-replace.mjs --source \"\u003casset\u003e\" --target-label GeneratedBackground`\n\n### Meta Routing\n\n- `using-funplay-skills`: ask which verified FunPlay skill should be used for the current goal\n\n## Commands\n\n- `/engine-workflow`: choose the right engine-facing skill before editing project files\n- `/engine-safe-edit`: choose the safest engine-facing workflow before asset or scene edits\n\n`audio-format-convert` requires `ffmpeg` in `PATH`. The image skills require the `sharp` dependency installed from this repo.\n\n## Philosophy\n\n- Skills should be deterministic or backed by a verified upstream workflow\n- Metadata should tell the agent exactly when and how to use a skill\n- Local asset workflows are preferred over remote-service coupling in this repo\n- Pure advisory skills without tests, scripts, or upstream verification should stay out until they have a validation surface\n\n## Git remote\n\nThe repository is initialized with:\n\n- `origin https://github.com/FunplayAI/funplay-skill.git`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunplayai%2Ffunplay-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunplayai%2Ffunplay-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunplayai%2Ffunplay-skill/lists"}