# Player Writer

> Guides users through Playwrite Capture, Replay, and optional Promotion for Godot Sight. Use when the user invokes /player-writer or asks to record gameplay, create a Playwrite, replay a recorded path, or promote a Playwrite into a Wrapper Playtest.

- Skill: `lanc3/player-writer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add lanc3/player-writer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lanc3/player-writer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Lanc3 (https://skillmd.com/u/lanc3)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lanc3/player-writer

---


# Player Writer

Use `/player-writer` when the user wants to capture focused gameplay into a Playwrite, replay it, and optionally promote it into a Wrapper Playtest.

## Boundaries

Player Writer is a guided workflow role. The saved artifact is a Playwrite.

- A Playwrite is a saved input trace from the launched Godot game.
- A Draft Playwrite is not durable regression evidence until replay and promotion.
- A Wrapper Playtest replays an approved Playwrite and adds Evidence Checkpoint steps.
- Checkpoint Selection is the user-approved choice of assertions or screenshots that make replay useful as regression evidence.
- Replay Guard means warning the user before replay that their real input can contaminate evidence.
- Structured Confirmation means using `AskQuestion` for bounded choices before replay, promotion, and checkpoint selection.

Do not use OS-level input capture. Do not use global input capture. This workflow is not a keylogger; capture stays inside the running Godot project through Godot Sight.

## Structured Confirmations

Use `AskQuestion` for every decision point below:

- `replay_confirm`: before replay, ask whether to replay the Draft Playwrite now, skip replay, or stop the workflow.
- `promotion_confirm`: before promotion, ask whether the successful replay should become a Wrapper Playtest or remain a Draft Playwrite.
- `checkpoint_selection`: during Checkpoint Selection, ask which Evidence Checkpoint types to add: node exists, node visible, text contains, position changed, screenshot.

Do not infer approval from silence. If the user declines replay or promotion, report the Draft Playwrite path and stop.

## Replay Guard

Treat raw Playwrites as drafts until promotion. A Draft Playwrite is not durable regression evidence until replay and promotion.

Before replay, tell the user: do not touch input devices until replay completes. Unexpected real input is Replay Contamination and can invalidate the replay evidence.

## Capture Overlay

The bridge addon draws an in-game overlay so the user can see readiness without guessing about the startup delay. As soon as the bridge binds it shows a `bridge online - waiting for capture` badge. When capture starts the badge switches to `capture ready - capturing input` and shows a live, capped list of recent inputs (keys, mouse clicks, mouse wheel) with a running total. Tell the user to wait for the `capture ready - capturing input` badge before playing. The overlay is on-screen only, is never written into the Playwrite, and is hidden during screenshot capture so it does not contaminate evidence.

Do not tell the user they must keep the game window open and reply `done`. The preferred flow is: the user plays, closes the game when finished, and the agent detects the managed process exit, calls capture stop, then asks whether to replay.

## Workflow

1. Resolve the project and Start Scene with `godot_sight_project_info`. Use the default Start Scene unless the user supplied a scene override.
2. Launch the scene with `godot_sight_run_scene`, or target an already-running game if the user says the bridge is already live.
3. Start capture with `godot_sight_playwrite_capture_start`, passing the Playwrite name and optional scene. The in-game overlay switches to `capture ready - capturing input` once capture is live.
4. Tell the user: play in the focused Godot window now. When finished, they may either close the launched game window or reply `done`; they do not need to keep the game open.
5. Stay active while capture is running. For managed launches, poll `godot_sight_get_runtime_state` until the process is no longer running, or until the user replies `done`. When either happens, call `godot_sight_playwrite_capture_stop`. If the game exited, the stop tool should recover the shutdown draft and treat it as success.
6. Present the Draft Playwrite path and immediately run `replay_confirm` with `AskQuestion`, asking whether to replay now, skip replay, or stop the workflow.
7. If replay is confirmed, call `godot_sight_playwrite_replay` for the Draft Playwrite. Before replay starts, apply the Replay Guard: tell the user not to touch input devices until replay completes.
8. After a successful replay, run `promotion_confirm` and then `checkpoint_selection`.
9. If promotion is confirmed, call `godot_sight_playwrite_promote` with the selected Evidence Checkpoint arguments.
10. If replay is skipped or the workflow stops before replay, clean up any still-running managed launch with `godot_sight_stop` unless the user explicitly asked to keep the game running. Successful replay already stops managed launches.

