From kinoa-dashboard
This skill is a thin CLI wrapper around the Kinoa **admin** player-field API on `dashboard.kinoa.io`, plus the public player-state read on `gate.kinoa.io`. It does **not** orchestrate any workflow — for the discover-diff-apply integration flow, use `kinoa-sync-player-fields-integration`, which delegates here for every admin call.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kinoa-dashboard:kinoa-dashboard-player-fieldsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill is a thin CLI wrapper around the Kinoa **admin** player-field API on `dashboard.kinoa.io`, plus the public player-state read on `gate.kinoa.io`. It does **not** orchestrate any workflow — for the discover-diff-apply integration flow, use `kinoa-sync-player-fields-integration`, which delegates here for every admin call.
This skill is a thin CLI wrapper around the Kinoa admin player-field API on dashboard.kinoa.io, plus the public player-state read on gate.kinoa.io. It does not orchestrate any workflow — for the discover-diff-apply integration flow, use kinoa-sync-player-fields-integration, which delegates here for every admin call.
The helper script kinoa_dashboard_player_fields.py is self-contained.
Requires KINOA_BEARER_TOKEN, KINOA_GAME_ID, and (for get-player-state) KINOA_GAME_SECRET in ~/.kinoa/session.env.
python "${CLAUDE_SKILL_DIR}/kinoa_dashboard_player_fields.py" list-predefined [--states active,not_implemented] [--rows N]
GET https://dashboard.kinoa.io/gamemetaapi/api/player_fields?types=PREDEFINED
python "${CLAUDE_SKILL_DIR}/kinoa_dashboard_player_fields.py" list-custom [--states active] [--rows N]
GET https://dashboard.kinoa.io/gamemetaapi/api/player_fields?types=USER
python "${CLAUDE_SKILL_DIR}/kinoa_dashboard_player_fields.py" activate --field-id UUID
PATCH https://dashboard.kinoa.io/gamemetaapi/api/player_fields/<id>/ACTIVATE
Flips a predefined field state from not_implemented → active. Also re-activates
a soft-deleted USER field — for deleted fields, activate instead of create
(create would collide or duplicate the path).
python "${CLAUDE_SKILL_DIR}/kinoa_dashboard_player_fields.py" create --name NAME --path PATH --kind KIND [--extra ...] [--description ...] [--default-value ...] [--app-version ...] [--calculated]
POST https://dashboard.kinoa.io/gamemetaapi/api/player_fields
KIND ∈ {number, boolean, string, date, long_string, enumeration, version}.
For enumeration, --extra is the comma-separated allowed values.
NOTE: --default-value is only valid together with --calculated (EXTERNAL
fields). On a normal (non-calculated) field the live API rejects it with
HTTP 422 "defaultValue can only be set for calculated (EXTERNAL) fields" —
so for code-backed game fields omit it (the SDK-sync flow never passes it).
python "${CLAUDE_SKILL_DIR}/kinoa_dashboard_player_fields.py" delete --field-id UUID
DELETE https://dashboard.kinoa.io/gamemetaapi/api/player_fields/<id>
Soft delete (returns 204; field state becomes "deleted").
python "${CLAUDE_SKILL_DIR}/kinoa_dashboard_player_fields.py" get-player-state --player-id ID
GET https://gate.kinoa.io/playerevents/api/v3/player-state?player_id=ID
Public API (uses game-secret header, not session token). Returns full player state for verification.
Every subcommand prints a single JSON object: { http_status, ok, response | request_body, ...context }.
list-predefined / list-custom / activate / create / delete call dashboard.kinoa.io with Authorization: Bearer <token> + Game: <uuid> + Game-Id: <uuid> (both headers carry the same UUID) — skill-only / admin. Never embed these calls in application runtime code.
get-player-state calls gate.kinoa.io with game: <secret> (public). This is the same surface application code uses for player-state reads, so it's a faithful end-to-end check.
kinoa-sync-player-fields-integration for every admin step (API-integration mode).kinoa-sdk-dashboard-sync for every player-field operation when mirroring an SDK-integrated game's manifest onto the dashboard (SDK mode).For anything beyond a single admin call (discovery, generating KinoaPlayerState, computing the diff, running the test scenario), use kinoa-sync-player-fields-integration (API mode) or kinoa-sdk-dashboard-sync (SDK mode) instead.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub kinoa-labs-ltd/integration-skills --plugin kinoa-dashboard