rpgjs-studio
Installation
SKILL.md
RPGJS Studio API Skill
Use this skill to execute content-management tasks against an RPGJS Studio instance.
Inputs
- Check whether a local
RPGSTUDIO.mdfile exists in the current working directory. - If
RPGSTUDIO.mdexists, treat it as local project context and read it first. - Use it to recover persistent values such as:
BASE_URL- any other project-specific instructions relevant to API usage
- Do not recover, request, or persist a
projectId. The API key is scoped to the RPGJS Studio project, so work directly on the user's requested resource. - If
RPGSTUDIO.mddoes not exist, continue normally. - Resolve
BASE_URLfrom the user if provided. - Default
BASE_URLtohttps://rpgjs.studiowhen the user did not specify another host. - Read the API key from the environment variable
RPGSTUDIO_API_KEY.
Mandatory startup workflow
- Check whether
RPGSTUDIO_API_KEYexists before any API call. - When checking
RPGSTUDIO_API_KEY, never print its value in the terminal and never echo it back in the response. - If the variable is missing or empty, stop and tell the user to create an API key first on
${BASE_URL}/api-keys, then exportRPGSTUDIO_API_KEY. - Build authenticated requests with these headers:
-H "x-api-key:$RPGSTUDIO_API_KEY"
-H "Content-Type: application/json"
- Prefer
curlfor HTTP calls. Use another HTTP client only if there is a clear reason. - Fail fast on authentication errors. If the API returns an invalid-key style response,
401, or403, stop the task and tell the user to verify the key or contact support. - Read only the reference file that matches the user task:
references/database.mdreferences/maps.mdreferences/events.mdreferences/event-examples.mdreferences/blocks.mdreferences/media.mdreferences/settings.md
Local memory file
Use RPGSTUDIO.md as a lightweight local memory file for the current project.
- Read it at the start if it exists.
- Reuse values already stored there instead of asking again.
- After the task, update or create it with stable, non-secret context discovered during execution.
Typical contents:
- last used
BASE_URL - project-specific conventions or notes useful for future calls
Do not use RPGSTUDIO.md to select a project. The current RPGSTUDIO_API_KEY already identifies the target project, so proceed directly with the user's request.
Never store secrets in this file.
- Do not store
RPGSTUDIO_API_KEY. - Do not print
RPGSTUDIO_API_KEY. - Do not copy raw secret values into logs, terminal output, or markdown.
Request pattern
Define the base command once and reuse it:
BASE_URL="${BASE_URL:-https://rpgjs.studio}"
curl -sS \
-H "x-api-key:$RPGSTUDIO_API_KEY" \
-H "Content-Type: application/json"
For write operations, prefer:
curl -sS -X POST "$BASE_URL/..." \
-H "x-api-key:$RPGSTUDIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{...}'
Execution rules
- Start by identifying the resource domain, then load the matching reference file.
- Use REST semantics:
GET,POST,PUT,DELETE. - Resolve foreign keys before creation or update:
- Search media with
/api/media?query=<search>. - Search database records with
/api/database/:type?query=<search>. - If a matching dependency exists, reuse its returned
_id. - If not found, create it first, then continue with the returned
_id.
- Search media with
- Never call a project listing endpoint just to choose a project. The API key determines the project context.
- When the user asks to create game objects, send the smallest valid payload first, then enrich it only if the task requires more fields.
- Reuse IDs returned by the API instead of guessing them.
- When the user provides a database
_idfor a read, update, or delete task, callGET /api/database/:type/:idfirst and inspect the existing record before deciding the payload or reporting the content. - If an endpoint shape is uncertain, inspect the response from a nearby
GETendpoint first and adapt from that live payload. - Do not continue after an auth failure.
- If a missing dependency would require AI media generation, always call the unified media generation endpoint with
action: "estimate"first. - After the estimate, report the required credits to the user and ask for confirmation before calling
action: "execute". - Never start an AI media generation directly without this estimate and confirmation step.
- For
POST /api/maps/generate, rely onreferences/maps.mdfor the AI map generation workflow and endpoint-specific failure behavior. - Summarize the exact records created, updated, or deleted in the final response.
- When a task reveals stable project context such as
BASE_URLor local conventions, persist that non-secret context intoRPGSTUDIO.mdfor future runs.
Common checks
databasetask: read references/database.mdmaptask: read references/maps.mdeventtask: read references/events.mdevent exampletask: read references/event-examples.mdevent workflow blocktask: read references/blocks.mdmediatask: read references/media.mdsettingstask: read references/settings.md
Current schema notes
- Project settings and database enemies both support combat animation spritesheet media IDs under
animations:attack,hurt,die, andcastSpell. - The RPGJS starter runtime uses these spritesheets in action battle: attack actions, damage/hurt feedback, delayed death removal, and skill/cast usage can temporarily switch to the configured spritesheet.
- Database enemies support action battle AI options under
behavior:enemyType,attackCooldown,visionRange,attackRange,dodgeChance,dodgeCooldown,fleeThreshold,attackPatterns,patrolWaypoints, andgroupBehavior. - Project settings and database enemies both support level-gated skill acquisition under
skills:{ skillId, level }. - Database skills support media IDs under
icon,animation, andsound. - Game/runtime code can read media data usable in the game with
GET /api/game/media/:mediaId; usereferences/media.mdfor details.
Related skills