@weppy/roblox-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +39 -0
- package/CHANGELOG.md +37 -0
- package/LICENSE +53 -0
- package/README.md +162 -0
- package/assets/screenshots/connection_guide.png +3 -0
- package/assets/screenshots/connection_popup.png +3 -0
- package/assets/screenshots/plugin_main.png +3 -0
- package/assets/screenshots/settings.png +3 -0
- package/dist/http-bridge.d.ts +65 -0
- package/dist/http-bridge.d.ts.map +1 -0
- package/dist/http-bridge.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/server.d.ts +13 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1 -0
- package/dist/tools/asset-tools.d.ts +10 -0
- package/dist/tools/asset-tools.d.ts.map +1 -0
- package/dist/tools/asset-tools.js +1 -0
- package/dist/tools/bulk-tools.d.ts +11 -0
- package/dist/tools/bulk-tools.d.ts.map +1 -0
- package/dist/tools/bulk-tools.js +1 -0
- package/dist/tools/camera-tools.d.ts +5 -0
- package/dist/tools/camera-tools.d.ts.map +1 -0
- package/dist/tools/camera-tools.js +1 -0
- package/dist/tools/connection-tools.d.ts +5 -0
- package/dist/tools/connection-tools.d.ts.map +1 -0
- package/dist/tools/connection-tools.js +1 -0
- package/dist/tools/environment-tools.d.ts +8 -0
- package/dist/tools/environment-tools.d.ts.map +1 -0
- package/dist/tools/environment-tools.js +1 -0
- package/dist/tools/index.d.ts +21 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1 -0
- package/dist/tools/instance-tools.d.ts +16 -0
- package/dist/tools/instance-tools.d.ts.map +1 -0
- package/dist/tools/instance-tools.js +1 -0
- package/dist/tools/log-tools.d.ts +6 -0
- package/dist/tools/log-tools.d.ts.map +1 -0
- package/dist/tools/log-tools.js +1 -0
- package/dist/tools/property-tools.d.ts +13 -0
- package/dist/tools/property-tools.d.ts.map +1 -0
- package/dist/tools/property-tools.js +1 -0
- package/dist/tools/raycast-tools.d.ts +11 -0
- package/dist/tools/raycast-tools.d.ts.map +1 -0
- package/dist/tools/raycast-tools.js +1 -0
- package/dist/tools/script-tools.d.ts +13 -0
- package/dist/tools/script-tools.d.ts.map +1 -0
- package/dist/tools/script-tools.js +1 -0
- package/dist/tools/search-tools.d.ts +11 -0
- package/dist/tools/search-tools.d.ts.map +1 -0
- package/dist/tools/search-tools.js +1 -0
- package/dist/tools/selection-tools.d.ts +16 -0
- package/dist/tools/selection-tools.d.ts.map +1 -0
- package/dist/tools/selection-tools.js +1 -0
- package/dist/tools/spatial-tools.d.ts +8 -0
- package/dist/tools/spatial-tools.d.ts.map +1 -0
- package/dist/tools/spatial-tools.js +1 -0
- package/dist/tools/state-tools.d.ts +12 -0
- package/dist/tools/state-tools.d.ts.map +1 -0
- package/dist/tools/state-tools.js +1 -0
- package/dist/tools/tag-tools.d.ts +8 -0
- package/dist/tools/tag-tools.d.ts.map +1 -0
- package/dist/tools/tag-tools.js +1 -0
- package/dist/tools/terrain-tools.d.ts +15 -0
- package/dist/tools/terrain-tools.d.ts.map +1 -0
- package/dist/tools/terrain-tools.js +1 -0
- package/dist/tools/visualization-tools.d.ts +9 -0
- package/dist/tools/visualization-tools.d.ts.map +1 -0
- package/dist/tools/visualization-tools.js +1 -0
- package/dist/types/index.d.ts +143 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/quota-checker.d.ts +46 -0
- package/dist/utils/quota-checker.d.ts.map +1 -0
- package/dist/utils/quota-checker.js +1 -0
- package/dist/utils/type-converter.d.ts +33 -0
- package/dist/utils/type-converter.d.ts.map +1 -0
- package/dist/utils/type-converter.js +1 -0
- package/dist/utils/validation.d.ts +17 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +1 -0
- package/docs/ko/README.md +174 -0
- package/docs/ko/faq.md +188 -0
- package/docs/ko/installation/claude-code.md +110 -0
- package/docs/ko/installation/claude-desktop.md +145 -0
- package/docs/ko/installation/codex-cli.md +120 -0
- package/docs/ko/installation/cursor.md +122 -0
- package/docs/ko/installation/gemini-cli.md +136 -0
- package/docs/ko/installation/other-clients.md +180 -0
- package/docs/ko/installation/plugin.md +98 -0
- package/docs/ko/tools/overview.md +270 -0
- package/package.json +46 -0
- package/plugins/weppy-roblox-mcp/.claude-plugin/plugin.json +53 -0
- package/plugins/weppy-roblox-mcp/agents/roblox-engineer.md +65 -0
- package/plugins/weppy-roblox-mcp/dist/dist/http-bridge.d.ts +65 -0
- package/plugins/weppy-roblox-mcp/dist/dist/http-bridge.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/http-bridge.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/index.d.ts +3 -0
- package/plugins/weppy-roblox-mcp/dist/dist/index.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/index.js +2 -0
- package/plugins/weppy-roblox-mcp/dist/dist/server.d.ts +13 -0
- package/plugins/weppy-roblox-mcp/dist/dist/server.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/server.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/asset-tools.d.ts +10 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/asset-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/asset-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/bulk-tools.d.ts +11 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/bulk-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/bulk-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/camera-tools.d.ts +5 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/camera-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/camera-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/connection-tools.d.ts +5 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/connection-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/connection-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/environment-tools.d.ts +8 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/environment-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/environment-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/index.d.ts +21 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/index.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/index.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/instance-tools.d.ts +16 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/instance-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/instance-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/log-tools.d.ts +6 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/log-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/log-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/property-tools.d.ts +13 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/property-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/property-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/raycast-tools.d.ts +11 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/raycast-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/raycast-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/script-tools.d.ts +13 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/script-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/script-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/search-tools.d.ts +11 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/search-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/search-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/selection-tools.d.ts +16 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/selection-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/selection-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/spatial-tools.d.ts +8 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/spatial-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/spatial-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/state-tools.d.ts +12 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/state-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/state-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/tag-tools.d.ts +8 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/tag-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/tag-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/terrain-tools.d.ts +15 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/terrain-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/terrain-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/visualization-tools.d.ts +9 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/visualization-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/tools/visualization-tools.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/types/index.d.ts +143 -0
- package/plugins/weppy-roblox-mcp/dist/dist/types/index.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/types/index.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/logger.d.ts +16 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/logger.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/logger.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/quota-checker.d.ts +46 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/quota-checker.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/quota-checker.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/type-converter.d.ts +33 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/type-converter.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/type-converter.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/validation.d.ts +17 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/validation.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/dist/utils/validation.js +1 -0
- package/plugins/weppy-roblox-mcp/dist/http-bridge.d.ts +45 -0
- package/plugins/weppy-roblox-mcp/dist/http-bridge.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/http-bridge.js +434 -0
- package/plugins/weppy-roblox-mcp/dist/http-bridge.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/index.d.ts +3 -0
- package/plugins/weppy-roblox-mcp/dist/index.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/index.js +59 -0
- package/plugins/weppy-roblox-mcp/dist/index.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/server.d.ts +13 -0
- package/plugins/weppy-roblox-mcp/dist/server.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/server.js +260 -0
- package/plugins/weppy-roblox-mcp/dist/server.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/asset-tools.d.ts +10 -0
- package/plugins/weppy-roblox-mcp/dist/tools/asset-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/asset-tools.js +127 -0
- package/plugins/weppy-roblox-mcp/dist/tools/asset-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/bulk-tools.d.ts +11 -0
- package/plugins/weppy-roblox-mcp/dist/tools/bulk-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/bulk-tools.js +225 -0
- package/plugins/weppy-roblox-mcp/dist/tools/bulk-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/environment-tools.d.ts +8 -0
- package/plugins/weppy-roblox-mcp/dist/tools/environment-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/environment-tools.js +93 -0
- package/plugins/weppy-roblox-mcp/dist/tools/environment-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/index.d.ts +18 -0
- package/plugins/weppy-roblox-mcp/dist/tools/index.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/index.js +59 -0
- package/plugins/weppy-roblox-mcp/dist/tools/index.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/instance-tools.d.ts +15 -0
- package/plugins/weppy-roblox-mcp/dist/tools/instance-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/instance-tools.js +252 -0
- package/plugins/weppy-roblox-mcp/dist/tools/instance-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/log-tools.d.ts +6 -0
- package/plugins/weppy-roblox-mcp/dist/tools/log-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/log-tools.js +53 -0
- package/plugins/weppy-roblox-mcp/dist/tools/log-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/property-tools.d.ts +13 -0
- package/plugins/weppy-roblox-mcp/dist/tools/property-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/property-tools.js +213 -0
- package/plugins/weppy-roblox-mcp/dist/tools/property-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/raycast-tools.d.ts +11 -0
- package/plugins/weppy-roblox-mcp/dist/tools/raycast-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/raycast-tools.js +420 -0
- package/plugins/weppy-roblox-mcp/dist/tools/raycast-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/script-tools.d.ts +13 -0
- package/plugins/weppy-roblox-mcp/dist/tools/script-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/script-tools.js +229 -0
- package/plugins/weppy-roblox-mcp/dist/tools/script-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/search-tools.d.ts +11 -0
- package/plugins/weppy-roblox-mcp/dist/tools/search-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/search-tools.js +196 -0
- package/plugins/weppy-roblox-mcp/dist/tools/search-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/selection-tools.d.ts +16 -0
- package/plugins/weppy-roblox-mcp/dist/tools/selection-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/selection-tools.js +185 -0
- package/plugins/weppy-roblox-mcp/dist/tools/selection-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/spatial-tools.d.ts +8 -0
- package/plugins/weppy-roblox-mcp/dist/tools/spatial-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/spatial-tools.js +155 -0
- package/plugins/weppy-roblox-mcp/dist/tools/spatial-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/state-tools.d.ts +153 -0
- package/plugins/weppy-roblox-mcp/dist/tools/state-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/state-tools.js +481 -0
- package/plugins/weppy-roblox-mcp/dist/tools/state-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/tag-tools.d.ts +8 -0
- package/plugins/weppy-roblox-mcp/dist/tools/tag-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/tag-tools.js +99 -0
- package/plugins/weppy-roblox-mcp/dist/tools/tag-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/terrain-tools.d.ts +15 -0
- package/plugins/weppy-roblox-mcp/dist/tools/terrain-tools.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/tools/terrain-tools.js +549 -0
- package/plugins/weppy-roblox-mcp/dist/tools/terrain-tools.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/types/index.d.ts +111 -0
- package/plugins/weppy-roblox-mcp/dist/types/index.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/types/index.js +8 -0
- package/plugins/weppy-roblox-mcp/dist/types/index.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/utils/logger.d.ts +16 -0
- package/plugins/weppy-roblox-mcp/dist/utils/logger.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/utils/logger.js +87 -0
- package/plugins/weppy-roblox-mcp/dist/utils/logger.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/utils/type-converter.d.ts +33 -0
- package/plugins/weppy-roblox-mcp/dist/utils/type-converter.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/utils/type-converter.js +203 -0
- package/plugins/weppy-roblox-mcp/dist/utils/type-converter.js.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/utils/validation.d.ts +17 -0
- package/plugins/weppy-roblox-mcp/dist/utils/validation.d.ts.map +1 -0
- package/plugins/weppy-roblox-mcp/dist/utils/validation.js +26 -0
- package/plugins/weppy-roblox-mcp/dist/utils/validation.js.map +1 -0
- package/plugins/weppy-roblox-mcp/package.json +43 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-game-dev/SKILL.md +548 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-mcp-guide/SKILL.md +680 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-mcp-guide/scripts/check-mcp.sh +86 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-planner/SKILL.md +588 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-planner/scripts/verify-plan.sh +134 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-sync/SKILL.md +389 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-sync/scripts/post-verify.sh +160 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-sync/scripts/pre-check.sh +304 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-sync/scripts/update-metadata.sh +27 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-task-tracker/SKILL.md +349 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-task-tracker/scripts/validate.sh +28 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/SKILL.md +244 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/effects.json +118 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/items.json +169 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/maps/maps.json +763 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/maps/sources/decorations.json +137 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/maps/sources/standalone-maps.json +331 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/maps/sources/terrain-presets.json +272 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/monsters.json +132 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/npcs.json +50 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/assets/weapons.json +140 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/references/animations.json +40 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/references/rpg-balance.json +236 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/references/rpg.md +304 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/references/terrain-generation.json +192 -0
- package/plugins/weppy-roblox-mcp/skills/roblox-templates/samples/SpawnConfig.luau +152 -0
- package/roblox-plugin/WeppyRobloxMCP-Free.rbxm +3 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# =============================================================================
|
|
3
|
+
# check-mcp.sh - Check MCP/Studio connection status
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# Quick check for MCP connection. Used by agent hooks.
|
|
6
|
+
#
|
|
7
|
+
# Exit codes:
|
|
8
|
+
# 0 = Connected or unknown (allow proceed)
|
|
9
|
+
# 1 = Definitely disconnected (block)
|
|
10
|
+
#
|
|
11
|
+
# Output (machine-readable):
|
|
12
|
+
# STATUS=connected|disconnected|unknown
|
|
13
|
+
# MESSAGE=<description>
|
|
14
|
+
# =============================================================================
|
|
15
|
+
|
|
16
|
+
SYNC_DIR="${1:-roblox-studio-sync}"
|
|
17
|
+
CONNECTION_FILE="$SYNC_DIR/connection-status.txt"
|
|
18
|
+
ACTIVITY_LOG="$SYNC_DIR/activity.log"
|
|
19
|
+
MAX_AGE=60 # Connection status valid for 60 seconds
|
|
20
|
+
|
|
21
|
+
# Ensure sync directory exists
|
|
22
|
+
mkdir -p "$SYNC_DIR"
|
|
23
|
+
|
|
24
|
+
# Method 1: Check for recent MCP activity (most reliable)
|
|
25
|
+
if [ -f "$ACTIVITY_LOG" ]; then
|
|
26
|
+
# Check if activity log was modified in last 5 minutes
|
|
27
|
+
if [ "$(find "$ACTIVITY_LOG" -mmin -5 2>/dev/null)" ]; then
|
|
28
|
+
echo "STATUS=connected"
|
|
29
|
+
echo "MESSAGE=Recent MCP activity detected"
|
|
30
|
+
exit 0
|
|
31
|
+
fi
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
# Method 2: Check cached connection status
|
|
35
|
+
if [ -f "$CONNECTION_FILE" ]; then
|
|
36
|
+
LAST_STATUS=$(cat "$CONNECTION_FILE" 2>/dev/null | head -1)
|
|
37
|
+
|
|
38
|
+
# Get file age (macOS compatible)
|
|
39
|
+
FILE_MOD=$(stat -f %m "$CONNECTION_FILE" 2>/dev/null || stat -c %Y "$CONNECTION_FILE" 2>/dev/null || echo "0")
|
|
40
|
+
NOW=$(date +%s)
|
|
41
|
+
FILE_AGE=$((NOW - FILE_MOD))
|
|
42
|
+
|
|
43
|
+
if [ "$FILE_AGE" -lt "$MAX_AGE" ] && [ "$LAST_STATUS" = "connected" ]; then
|
|
44
|
+
echo "STATUS=connected"
|
|
45
|
+
echo "MESSAGE=Connection verified recently (${FILE_AGE}s ago)"
|
|
46
|
+
exit 0
|
|
47
|
+
fi
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Method 3: Check if Studio plugin port is responding
|
|
51
|
+
MCP_PORT="${MCP_PORT:-21496}"
|
|
52
|
+
|
|
53
|
+
if command -v nc &> /dev/null; then
|
|
54
|
+
if nc -z -w 2 localhost "$MCP_PORT" 2>/dev/null; then
|
|
55
|
+
echo "connected" > "$CONNECTION_FILE"
|
|
56
|
+
echo "STATUS=connected"
|
|
57
|
+
echo "MESSAGE=Studio plugin responding on port $MCP_PORT"
|
|
58
|
+
exit 0
|
|
59
|
+
else
|
|
60
|
+
echo "disconnected" > "$CONNECTION_FILE"
|
|
61
|
+
echo "STATUS=disconnected"
|
|
62
|
+
echo "MESSAGE=Studio plugin not responding on port $MCP_PORT"
|
|
63
|
+
echo ""
|
|
64
|
+
echo "GUIDE=Please check:"
|
|
65
|
+
echo " 1. Roblox Studio is running"
|
|
66
|
+
echo " 2. MCP plugin is installed and enabled"
|
|
67
|
+
echo " 3. Plugin shows 'Connected' status"
|
|
68
|
+
exit 1
|
|
69
|
+
fi
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
# Method 4: Try curl as fallback
|
|
73
|
+
if command -v curl &> /dev/null; then
|
|
74
|
+
if curl -s --connect-timeout 2 "http://localhost:$MCP_PORT" >/dev/null 2>&1; then
|
|
75
|
+
echo "connected" > "$CONNECTION_FILE"
|
|
76
|
+
echo "STATUS=connected"
|
|
77
|
+
echo "MESSAGE=Studio plugin responding"
|
|
78
|
+
exit 0
|
|
79
|
+
fi
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# Cannot verify - allow but warn
|
|
83
|
+
echo "STATUS=unknown"
|
|
84
|
+
echo "MESSAGE=Cannot verify connection (nc/curl not available)"
|
|
85
|
+
echo "GUIDE=Ensure Roblox Studio is open with MCP plugin installed"
|
|
86
|
+
exit 0
|
|
@@ -0,0 +1,588 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: roblox-planner
|
|
3
|
+
description: Plan Roblox game development projects. Use when starting a new game, planning features, breaking down development tasks, or creating roadmaps. Helps structure game development into actionable phases.
|
|
4
|
+
argument-hint: "[game-description or feature-request]"
|
|
5
|
+
user-invocable: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Roblox Game Planner
|
|
9
|
+
|
|
10
|
+
This skill helps plan and structure Roblox game development projects by clarifying requirements, breaking down features into tasks, and creating actionable development plans.
|
|
11
|
+
|
|
12
|
+
## Prerequisites
|
|
13
|
+
|
|
14
|
+
**This skill assumes sync is already complete.**
|
|
15
|
+
|
|
16
|
+
This skill is called internally by `/roblox-game-dev` orchestrator only.
|
|
17
|
+
Users cannot invoke this skill directly.
|
|
18
|
+
|
|
19
|
+
## Project State Detection & Template Usage
|
|
20
|
+
|
|
21
|
+
### Project State Detection
|
|
22
|
+
|
|
23
|
+
After sync completes, analyze `roblox-studio-sync/explorer/` data to determine project state:
|
|
24
|
+
|
|
25
|
+
**Empty Project Criteria:**
|
|
26
|
+
```typescript
|
|
27
|
+
function isEmptyProject(syncData): boolean {
|
|
28
|
+
const workspace = syncData["Workspace/_index.json"];
|
|
29
|
+
|
|
30
|
+
// Only default instances present (Camera, Terrain, SpawnLocation)
|
|
31
|
+
if (workspace.childCount <= 3) return true;
|
|
32
|
+
|
|
33
|
+
// No folder structure exists
|
|
34
|
+
const hasFolders = workspace.children.some(c =>
|
|
35
|
+
["Folder", "Model"].includes(c.className) && c.name !== "Camera"
|
|
36
|
+
);
|
|
37
|
+
if (!hasFolders) return true;
|
|
38
|
+
|
|
39
|
+
// No scripts present
|
|
40
|
+
const hasScripts = checkForScripts(syncData);
|
|
41
|
+
if (!hasScripts) return true;
|
|
42
|
+
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Template Usage Rules
|
|
48
|
+
|
|
49
|
+
| Project State | Template Usage | Description |
|
|
50
|
+
|--------------|----------------|-------------|
|
|
51
|
+
| **Empty** | **Active use** | Select assets from templates (maps, monsters, weapons) |
|
|
52
|
+
| **Existing content** | **User intent first** | Plan to match existing style, reference templates only when needed |
|
|
53
|
+
| **Extension/Feature add** | **Selective use** | Judge based on user request |
|
|
54
|
+
|
|
55
|
+
### Empty Project Workflow
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
1. Analyze sync data → Determine project state
|
|
59
|
+
2. If empty project:
|
|
60
|
+
- Read roblox-templates/references/{game-type}.md
|
|
61
|
+
- Reference asset concepts from roblox-templates/assets/*.json
|
|
62
|
+
- Specify asset concepts in tasks (no hardcoded IDs)
|
|
63
|
+
3. If existing content:
|
|
64
|
+
- Analyze existing structure
|
|
65
|
+
- Plan extensions/modifications per user request
|
|
66
|
+
- Use templates for reference only
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Existing Project Workflow
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
1. Understand existing structure from sync data
|
|
73
|
+
- What folder structure is used?
|
|
74
|
+
- What code style is used?
|
|
75
|
+
- What existing assets/models are present?
|
|
76
|
+
2. Analyze user request
|
|
77
|
+
- Modifying existing functionality?
|
|
78
|
+
- Adding new features?
|
|
79
|
+
3. Plan according to existing style
|
|
80
|
+
- Do not force template usage
|
|
81
|
+
- Plan in the direction user wants
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Cache Directory
|
|
85
|
+
|
|
86
|
+
All plans stored in `.roblox-cache/`:
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
.roblox-cache/
|
|
90
|
+
├── plans/ # Development plans
|
|
91
|
+
│ └── {plan-id}.md
|
|
92
|
+
├── tasks/ # Task lists with status
|
|
93
|
+
│ └── {plan-id}-tasks.md
|
|
94
|
+
└── current-plan.txt # Active plan ID
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Workflow
|
|
98
|
+
|
|
99
|
+
### Phase 1: Gather Requirements
|
|
100
|
+
|
|
101
|
+
When user requests a game or feature:
|
|
102
|
+
|
|
103
|
+
**Essential Questions:**
|
|
104
|
+
|
|
105
|
+
1. **Game Type**
|
|
106
|
+
- "What type of game? (Obby, Tycoon, Simulator, RPG, Battle Royale, etc.)"
|
|
107
|
+
|
|
108
|
+
2. **Core Mechanics**
|
|
109
|
+
- "What are the main gameplay mechanics?"
|
|
110
|
+
- "What does the player do moment-to-moment?"
|
|
111
|
+
|
|
112
|
+
3. **Multiplayer**
|
|
113
|
+
- "Single player, multiplayer, or both?"
|
|
114
|
+
- "How do players interact?"
|
|
115
|
+
|
|
116
|
+
4. **Scope**
|
|
117
|
+
- "How large is the map/world?"
|
|
118
|
+
- "How many levels/areas?"
|
|
119
|
+
|
|
120
|
+
5. **Visual Style**
|
|
121
|
+
- "What's the art style? (Realistic, cartoony, low-poly)"
|
|
122
|
+
- "What's the theme? (Medieval, futuristic, nature)"
|
|
123
|
+
|
|
124
|
+
6. **Target Audience**
|
|
125
|
+
- "Who is this game for?"
|
|
126
|
+
- "What's the complexity level?"
|
|
127
|
+
|
|
128
|
+
**Example Clarification Dialog:**
|
|
129
|
+
```
|
|
130
|
+
I'd like to understand your game better:
|
|
131
|
+
|
|
132
|
+
1. Game Type: What genre is this? (Obby, Tycoon, Simulator, etc.)
|
|
133
|
+
2. Core Loop: What does a player do in a typical session?
|
|
134
|
+
3. Scale: How big should the world be?
|
|
135
|
+
4. Theme: What visual style are you going for?
|
|
136
|
+
5. Complexity: Beginner-friendly or advanced players?
|
|
137
|
+
|
|
138
|
+
Please share any reference games or inspirations!
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Phase 2: Create Plan Document
|
|
142
|
+
|
|
143
|
+
**Generate Plan ID:** `plan-{YYYYMMDD}-{short-name}`
|
|
144
|
+
Example: `plan-20250128-sky-obby`
|
|
145
|
+
|
|
146
|
+
**Plan Document Structure:**
|
|
147
|
+
|
|
148
|
+
```markdown
|
|
149
|
+
# Plan: {Game Name}
|
|
150
|
+
|
|
151
|
+
**ID:** {plan-id}
|
|
152
|
+
**Created:** {date}
|
|
153
|
+
**Status:** draft
|
|
154
|
+
|
|
155
|
+
## Vision
|
|
156
|
+
|
|
157
|
+
{2-3 sentence description of the game and what makes it unique}
|
|
158
|
+
|
|
159
|
+
## Game Overview
|
|
160
|
+
|
|
161
|
+
### Type
|
|
162
|
+
{Genre: Obby, Tycoon, Simulator, etc.}
|
|
163
|
+
|
|
164
|
+
### Core Loop
|
|
165
|
+
1. {Primary action}
|
|
166
|
+
2. {Secondary action}
|
|
167
|
+
3. {Reward/progression}
|
|
168
|
+
|
|
169
|
+
### Target Audience
|
|
170
|
+
{Who will play this game}
|
|
171
|
+
|
|
172
|
+
## Requirements
|
|
173
|
+
|
|
174
|
+
### Must Have
|
|
175
|
+
- [ ] {Critical feature 1}
|
|
176
|
+
- [ ] {Critical feature 2}
|
|
177
|
+
- [ ] {Critical feature 3}
|
|
178
|
+
|
|
179
|
+
### Should Have
|
|
180
|
+
- [ ] {Important feature 1}
|
|
181
|
+
- [ ] {Important feature 2}
|
|
182
|
+
|
|
183
|
+
### Nice to Have
|
|
184
|
+
- [ ] {Optional feature 1}
|
|
185
|
+
- [ ] {Optional feature 2}
|
|
186
|
+
|
|
187
|
+
## Technical Specifications
|
|
188
|
+
|
|
189
|
+
### Map Size
|
|
190
|
+
{Approximate dimensions and structure}
|
|
191
|
+
|
|
192
|
+
### Performance Targets
|
|
193
|
+
- Max parts: {estimate}
|
|
194
|
+
- Target FPS: 60
|
|
195
|
+
- Mobile support: {yes/no}
|
|
196
|
+
|
|
197
|
+
### Services Used
|
|
198
|
+
- [ ] DataStoreService (saving)
|
|
199
|
+
- [ ] MarketplaceService (purchases)
|
|
200
|
+
- [ ] TeleportService (multiple places)
|
|
201
|
+
|
|
202
|
+
## Development Phases
|
|
203
|
+
|
|
204
|
+
### Phase 1: Foundation ({X} tasks)
|
|
205
|
+
Core infrastructure and basic setup
|
|
206
|
+
|
|
207
|
+
### Phase 2: Core Mechanics ({Y} tasks)
|
|
208
|
+
Main gameplay implementation
|
|
209
|
+
|
|
210
|
+
### Phase 3: Content ({Z} tasks)
|
|
211
|
+
Levels, items, environments
|
|
212
|
+
|
|
213
|
+
### Phase 4: Polish ({W} tasks)
|
|
214
|
+
UI, effects, sounds, optimization
|
|
215
|
+
|
|
216
|
+
### Phase 5: Launch ({V} tasks)
|
|
217
|
+
Testing, fixes, deployment
|
|
218
|
+
|
|
219
|
+
## Risks & Mitigations
|
|
220
|
+
|
|
221
|
+
| Risk | Impact | Mitigation |
|
|
222
|
+
|------|--------|------------|
|
|
223
|
+
| {Risk 1} | {High/Med/Low} | {Strategy} |
|
|
224
|
+
| {Risk 2} | {High/Med/Low} | {Strategy} |
|
|
225
|
+
|
|
226
|
+
## Success Criteria
|
|
227
|
+
|
|
228
|
+
- [ ] {Measurable outcome 1}
|
|
229
|
+
- [ ] {Measurable outcome 2}
|
|
230
|
+
- [ ] {Measurable outcome 3}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Phase 3: Break Down Tasks
|
|
234
|
+
|
|
235
|
+
For each phase, create detailed task breakdown:
|
|
236
|
+
|
|
237
|
+
**Task Template:**
|
|
238
|
+
```markdown
|
|
239
|
+
### TASK-{NNN}: {Title}
|
|
240
|
+
- **Phase:** {Phase number}
|
|
241
|
+
- **Complexity:** simple | medium | complex
|
|
242
|
+
- **Executor:** roblox-engineer | manual
|
|
243
|
+
- **Dependencies:** none | TASK-XXX, TASK-YYY
|
|
244
|
+
- **Description:** {What needs to be done}
|
|
245
|
+
- **Acceptance Criteria:**
|
|
246
|
+
- [ ] {Criterion 1}
|
|
247
|
+
- [ ] {Criterion 2}
|
|
248
|
+
- **MCP Tools:** {Relevant tools to use}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Task Categories:**
|
|
252
|
+
|
|
253
|
+
| Category | Example Tasks |
|
|
254
|
+
|----------|--------------|
|
|
255
|
+
| **Structure** | Create folders, organize hierarchy |
|
|
256
|
+
| **Environment** | Terrain, lighting, atmosphere |
|
|
257
|
+
| **Building** | Platforms, obstacles, decorations |
|
|
258
|
+
| **Scripting** | Game logic, player systems |
|
|
259
|
+
| **UI** | Menus, HUD, popups |
|
|
260
|
+
| **Data** | Saving, leaderboards, stats |
|
|
261
|
+
| **Effects** | Particles, sounds, animations |
|
|
262
|
+
| **Testing** | Playtesting, bug fixes |
|
|
263
|
+
|
|
264
|
+
### Phase 4: Present Plan
|
|
265
|
+
|
|
266
|
+
**Always get user confirmation before proceeding:**
|
|
267
|
+
|
|
268
|
+
```markdown
|
|
269
|
+
## Proposed Development Plan
|
|
270
|
+
|
|
271
|
+
### {Game Name}
|
|
272
|
+
{Brief vision statement}
|
|
273
|
+
|
|
274
|
+
### Scope Summary
|
|
275
|
+
- **Phases:** {count}
|
|
276
|
+
- **Total Tasks:** {count}
|
|
277
|
+
- **Estimated Complexity:** {Low/Medium/High}
|
|
278
|
+
|
|
279
|
+
### Phase Breakdown
|
|
280
|
+
|
|
281
|
+
| Phase | Focus | Tasks |
|
|
282
|
+
|-------|-------|-------|
|
|
283
|
+
| 1. Foundation | Setup, structure | {count} |
|
|
284
|
+
| 2. Core | Main mechanics | {count} |
|
|
285
|
+
| 3. Content | Levels, items | {count} |
|
|
286
|
+
| 4. Polish | UI, effects | {count} |
|
|
287
|
+
| 5. Launch | Testing, deploy | {count} |
|
|
288
|
+
|
|
289
|
+
### Key Features
|
|
290
|
+
1. {Feature 1}
|
|
291
|
+
2. {Feature 2}
|
|
292
|
+
3. {Feature 3}
|
|
293
|
+
|
|
294
|
+
### Risks Identified
|
|
295
|
+
- {Risk 1 and mitigation}
|
|
296
|
+
- {Risk 2 and mitigation}
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
**Do you approve this plan?**
|
|
301
|
+
- Yes, start development
|
|
302
|
+
- Modify scope (tell me what to change)
|
|
303
|
+
- Add more detail to specific phase
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Phase 5: Save Plan
|
|
307
|
+
|
|
308
|
+
On approval:
|
|
309
|
+
|
|
310
|
+
### Phase 6: Plan File Verification
|
|
311
|
+
|
|
312
|
+
**After saving plan files, verify they were created correctly:**
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
./.claude/skills/roblox-planner/scripts/verify-plan.sh <plan-id>
|
|
316
|
+
|
|
317
|
+
# Example
|
|
318
|
+
./.claude/skills/roblox-planner/scripts/verify-plan.sh plan-20250128-rpg
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**Verification Checks:**
|
|
322
|
+
1. Directory structure (`.roblox-cache/plans/`, `.roblox-cache/tasks/`)
|
|
323
|
+
2. Plan file exists and has required sections (Vision, Requirements, Development Phases)
|
|
324
|
+
3. Tasks file exists and has TASK entries with Phase/Complexity fields
|
|
325
|
+
4. `current-plan.txt` points to the correct plan ID
|
|
326
|
+
|
|
327
|
+
**Exit codes:**
|
|
328
|
+
- `0` = All checks passed
|
|
329
|
+
- `1` = Verification failed (missing files or invalid content)
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
On approval (continued):
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
# 1. Create cache directories
|
|
337
|
+
mkdir -p .roblox-cache/plans .roblox-cache/tasks
|
|
338
|
+
|
|
339
|
+
# 2. Save plan document
|
|
340
|
+
# Write to .roblox-cache/plans/{plan-id}.md
|
|
341
|
+
|
|
342
|
+
# 3. Create task list
|
|
343
|
+
# Write to .roblox-cache/tasks/{plan-id}-tasks.md
|
|
344
|
+
|
|
345
|
+
# 4. Set as active plan
|
|
346
|
+
echo "{plan-id}" > .roblox-cache/current-plan.txt
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Game Type Templates
|
|
352
|
+
|
|
353
|
+
### Obby (Obstacle Course)
|
|
354
|
+
|
|
355
|
+
**Typical Structure:**
|
|
356
|
+
```
|
|
357
|
+
Phase 1: Foundation
|
|
358
|
+
- TASK-001: Create spawn area
|
|
359
|
+
- TASK-002: Set up checkpoint system
|
|
360
|
+
- TASK-003: Configure respawn logic
|
|
361
|
+
|
|
362
|
+
Phase 2: Core Mechanics
|
|
363
|
+
- TASK-004: Build tutorial section
|
|
364
|
+
- TASK-005: Create obstacle types (jumps, moving, timed)
|
|
365
|
+
- TASK-006: Implement difficulty zones
|
|
366
|
+
|
|
367
|
+
Phase 3: Content
|
|
368
|
+
- TASK-007: Build easy levels (1-5)
|
|
369
|
+
- TASK-008: Build medium levels (6-10)
|
|
370
|
+
- TASK-009: Build hard levels (11-15)
|
|
371
|
+
|
|
372
|
+
Phase 4: Polish
|
|
373
|
+
- TASK-010: Add particle effects
|
|
374
|
+
- TASK-011: Create win celebration
|
|
375
|
+
- TASK-012: Add leaderboard
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### Tycoon
|
|
379
|
+
|
|
380
|
+
**Typical Structure:**
|
|
381
|
+
```
|
|
382
|
+
Phase 1: Foundation
|
|
383
|
+
- TASK-001: Create tycoon plot template
|
|
384
|
+
- TASK-002: Set up currency system
|
|
385
|
+
- TASK-003: Implement dropper/collector basics
|
|
386
|
+
|
|
387
|
+
Phase 2: Core Mechanics
|
|
388
|
+
- TASK-004: Build purchase buttons
|
|
389
|
+
- TASK-005: Create upgrade paths
|
|
390
|
+
- TASK-006: Implement rebirth system
|
|
391
|
+
|
|
392
|
+
Phase 3: Content
|
|
393
|
+
- TASK-007: Design 3 tycoon themes
|
|
394
|
+
- TASK-008: Create 20+ purchasable items
|
|
395
|
+
- TASK-009: Add premium upgrades
|
|
396
|
+
|
|
397
|
+
Phase 4: Polish
|
|
398
|
+
- TASK-010: Create tycoon UI
|
|
399
|
+
- TASK-011: Add money animations
|
|
400
|
+
- TASK-012: Implement data saving
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Simulator
|
|
404
|
+
|
|
405
|
+
**Typical Structure:**
|
|
406
|
+
```
|
|
407
|
+
Phase 1: Foundation
|
|
408
|
+
- TASK-001: Create collection mechanics
|
|
409
|
+
- TASK-002: Set up stats system
|
|
410
|
+
- TASK-003: Implement inventory
|
|
411
|
+
|
|
412
|
+
Phase 2: Core Mechanics
|
|
413
|
+
- TASK-004: Build tool/pet system
|
|
414
|
+
- TASK-005: Create upgrade mechanics
|
|
415
|
+
- TASK-006: Implement zones/worlds
|
|
416
|
+
|
|
417
|
+
Phase 3: Content
|
|
418
|
+
- TASK-007: Design 5 zones
|
|
419
|
+
- TASK-008: Create 50+ collectibles
|
|
420
|
+
- TASK-009: Add rare items/pets
|
|
421
|
+
|
|
422
|
+
Phase 4: Polish
|
|
423
|
+
- TASK-010: Create progression UI
|
|
424
|
+
- TASK-011: Add VFX for collection
|
|
425
|
+
- TASK-012: Implement trading
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### RPG (Role Playing Game)
|
|
429
|
+
|
|
430
|
+
**Map Theme Selection:**
|
|
431
|
+
RPG 맵은 다음 테마 중 랜덤으로 선택됩니다:
|
|
432
|
+
- `forest` - 숲 속 빈터 (beginner)
|
|
433
|
+
- `volcanic` - 화산 분화구 (intermediate)
|
|
434
|
+
- `island` - 열대 섬 (intermediate)
|
|
435
|
+
- `dungeon` - 던전/동굴 (intermediate)
|
|
436
|
+
- `desert` - 사막 오아시스 (intermediate)
|
|
437
|
+
|
|
438
|
+
**Typical Structure:**
|
|
439
|
+
```
|
|
440
|
+
Phase 1: World Setup (맵 생성 우선)
|
|
441
|
+
- TASK-001: Create/insert map first (terrain_generate or insert_free_model)
|
|
442
|
+
- Select random theme from maps.json environments
|
|
443
|
+
- Focus camera on created world
|
|
444
|
+
- TASK-002: Configure player SpawnLocation based on map's spawnZones
|
|
445
|
+
- TASK-003: Create game folder structure (Monsters, NPCs, Items, Weapons)
|
|
446
|
+
- TASK-004: Configure lighting and atmosphere to match theme
|
|
447
|
+
|
|
448
|
+
Phase 2: Spawn Configuration (스폰 영역 설정)
|
|
449
|
+
- TASK-005: Analyze spawnable areas using find_spawn_positions/find_ground
|
|
450
|
+
- TASK-006: Define spawn zones in script (coordinates from maps.json spawnZones)
|
|
451
|
+
- TASK-007: Select monsters from assets/monsters.json based on theme/difficulty
|
|
452
|
+
- TASK-008: Create MonsterSpawner script with hardcoded zone coordinates
|
|
453
|
+
- TASK-009: Visualize spawn zones using visualization_create_area/visualization_create_marker (if available)
|
|
454
|
+
|
|
455
|
+
Phase 3: Core Mechanics
|
|
456
|
+
- TASK-010: Set up player stats system (HP, MP, Level, EXP)
|
|
457
|
+
- TASK-011: Implement combat system (attack, damage calculation)
|
|
458
|
+
- TASK-012: Create monster AI (patrol, chase, attack)
|
|
459
|
+
- TASK-013: Implement level/experience system
|
|
460
|
+
- TASK-014: Create death/respawn mechanics
|
|
461
|
+
|
|
462
|
+
Phase 4: Content & UI
|
|
463
|
+
- TASK-015: Create HP/MP/EXP UI (ScreenGui with bars)
|
|
464
|
+
- TASK-016: Place weapons/items (refer to assets/weapons.json, items.json)
|
|
465
|
+
- TASK-017: Place NPCs if needed (refer to assets/npcs.json)
|
|
466
|
+
- TASK-018: Add combat effects (hit, death particles)
|
|
467
|
+
- TASK-019: Implement damage numbers and sound effects
|
|
468
|
+
|
|
469
|
+
Phase 5: Data & Launch
|
|
470
|
+
- TASK-020: Implement data saving (player stats, inventory)
|
|
471
|
+
- TASK-021: Create leaderboard
|
|
472
|
+
- TASK-022: Playtesting and balance adjustments
|
|
473
|
+
- TASK-023: Clear visualization (visualization_clear) before publish
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
**Spawn Configuration Workflow:**
|
|
477
|
+
```
|
|
478
|
+
1. Map Created
|
|
479
|
+
↓
|
|
480
|
+
2. Read spawnZones from maps.json for selected environment
|
|
481
|
+
↓
|
|
482
|
+
3. Verify each zone with find_ground (check for water/invalid terrain)
|
|
483
|
+
↓
|
|
484
|
+
4. Select monsters from monsters.json (match theme/difficulty)
|
|
485
|
+
↓
|
|
486
|
+
5. Write spawn script with SPAWN_ZONES table (hardcoded coordinates)
|
|
487
|
+
↓
|
|
488
|
+
6. (Optional) Visualize with visualization_create_marker/area for debugging
|
|
489
|
+
↓
|
|
490
|
+
7. Clear visualizations before game publish
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
## Estimation Guidelines
|
|
496
|
+
|
|
497
|
+
### Complexity Levels
|
|
498
|
+
|
|
499
|
+
| Level | Description | Typical Duration |
|
|
500
|
+
|-------|-------------|-----------------|
|
|
501
|
+
| **Simple** | Single instance, basic property | 5-10 min |
|
|
502
|
+
| **Medium** | Multiple parts, scripting | 15-30 min |
|
|
503
|
+
| **Complex** | Systems, multi-file | 30-60 min |
|
|
504
|
+
|
|
505
|
+
### MCP Tool Mapping
|
|
506
|
+
|
|
507
|
+
| Task Type | Primary Tools |
|
|
508
|
+
|-----------|--------------|
|
|
509
|
+
| **Structure** | create_instance, move_instance, rename_instance |
|
|
510
|
+
| **Building** | create_instance_with_properties, mass_create_instances |
|
|
511
|
+
| **Terrain** | terrain_fill_*, terrain_generate |
|
|
512
|
+
| **Lighting** | set_lighting, set_atmosphere, set_sky |
|
|
513
|
+
| **Scripting** | create_script, set_script_source |
|
|
514
|
+
| **Properties** | set_property, set_multiple_properties |
|
|
515
|
+
| **Search** | search_by_*, find_first_descendant |
|
|
516
|
+
|
|
517
|
+
---
|
|
518
|
+
|
|
519
|
+
## Best Practices
|
|
520
|
+
|
|
521
|
+
### Planning
|
|
522
|
+
- Start with MVP (minimum viable product)
|
|
523
|
+
- Break tasks into 15-30 minute chunks
|
|
524
|
+
- Make dependencies explicit
|
|
525
|
+
- Leave buffer for unexpected issues
|
|
526
|
+
|
|
527
|
+
### Prioritization
|
|
528
|
+
- Core loop first, polish last
|
|
529
|
+
- Test early, test often
|
|
530
|
+
- Mobile compatibility from start if needed
|
|
531
|
+
|
|
532
|
+
### Communication
|
|
533
|
+
- Confirm understanding before planning
|
|
534
|
+
- Get explicit approval before execution
|
|
535
|
+
- Report progress at phase boundaries
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
539
|
+
## Asset Selection Rule
|
|
540
|
+
|
|
541
|
+
**The planner does NOT hardcode asset IDs, names, or stats.**
|
|
542
|
+
|
|
543
|
+
Tasks requiring assets specify **concepts only**, and at execution time the `roblox-templates` skill selects matching assets.
|
|
544
|
+
|
|
545
|
+
### Principles
|
|
546
|
+
|
|
547
|
+
1. **Planner role**: Define concepts (theme, difficulty, category, quantity)
|
|
548
|
+
2. **Templates role**: Provide assets (ID, name, stats, coordinates)
|
|
549
|
+
3. **No dependencies**: Planner does not depend on specific asset IDs/names
|
|
550
|
+
|
|
551
|
+
### Task Writing Format
|
|
552
|
+
|
|
553
|
+
```markdown
|
|
554
|
+
# Correct example (concepts only)
|
|
555
|
+
### TASK-009: Place monsters
|
|
556
|
+
- **Concept**: 3 beginner-difficulty monster types
|
|
557
|
+
- **Quantity**: 3-5 each
|
|
558
|
+
- **Asset source**: roblox-templates/assets/monsters.json → filter by difficulty "beginner"
|
|
559
|
+
- **Placement**: Determined by find_spawn_positions
|
|
560
|
+
|
|
561
|
+
### TASK-001: Insert map
|
|
562
|
+
- **Concept**: RPG-suitable theme (randomly selected from: forest, volcanic, island, dungeon, desert)
|
|
563
|
+
- **Asset source**: roblox-templates/assets/maps/maps.json → filter by recommended.rpg_adventure OR random theme
|
|
564
|
+
- **Selection**: Randomly pick one environment from matched results
|
|
565
|
+
|
|
566
|
+
# Incorrect example (hardcoding)
|
|
567
|
+
### TASK-009: Place monsters
|
|
568
|
+
- Slime (83110489) x5 ← ❌ Hardcoded ID
|
|
569
|
+
- Zombie (3375251681) x3 ← ❌ Hardcoded name/ID
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
### Asset Selection Workflow
|
|
573
|
+
|
|
574
|
+
```
|
|
575
|
+
1. Planner: Record concepts in task (theme, difficulty, category)
|
|
576
|
+
2. Executor: Read roblox-templates/references/{game-type}.md
|
|
577
|
+
3. Executor: Match concepts in roblox-templates/assets/{category}.json
|
|
578
|
+
4. Executor: Randomly select from matched assets and insert via MCP
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### Game Type → Reference Mapping
|
|
582
|
+
|
|
583
|
+
| Game Type | Reference File | Asset Categories |
|
|
584
|
+
|-----------|----------------|------------------|
|
|
585
|
+
| RPG | references/rpg.md | maps, monsters, weapons, npcs, items |
|
|
586
|
+
| Obby | references/obby.md | obstacles, checkpoints, effects |
|
|
587
|
+
| Tycoon | references/tycoon.md | droppers, buttons, upgraders |
|
|
588
|
+
| Simulator | references/simulator.md | tools, pets, zones |
|