Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,9 @@ for humans and agents.
error in a deterministic object.
- `process.cwd()` is the consumer app root; `.rokit/` there holds its env file,
artifacts, and transient device state.
- Native code owns the developer installer, screenshots, device-info, and
package ZIPs. `roku-deploy` stays only for `rokudeploy.json` file-rule
- Native code owns the developer installer, screenshots, and package ZIPs.
`roku-deploy` stays for `device-info` and for `rokudeploy.json` file-rule
compatibility in `package` until native glob parity replaces it.
- ECP drives launch, keypresses, active-app, and raw runtime state.
- Media-player and SceneGraph helpers stay generic: state, text, attributes,
focus waits, raw trees. Content, playback, and screen contracts stay in app
repos.
Expand Down Expand Up @@ -78,9 +77,6 @@ pnpm exec vp run hooks:install
pnpm exec vp run verify
```

Fast loops: `check`, `typecheck`, `smoke`, and `test`, each as
`pnpm exec vp run <name>`.

Live checks need a developer-enabled Roku. The CLI reads `.rokit/.env`;
`live:probe` also reads `.env` and `.env.local`. See `.env.example`.

Expand Down
6 changes: 1 addition & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ pnpm exec vp run smoke
pnpm exec vp run verify
```

CI runs the same command on pull requests and on `main`.

## Live Checks

Live checks need a developer-enabled Roku on the same network. Screenshots and
Expand All @@ -37,6 +35,4 @@ file. The CLI reads `.rokit/.env`; `live:probe` also reads `.env` and

## Pull Requests

- Keep changes focused.
- Add or update tests when command behavior, parsing, output, or public exports change.
- Keep app-specific journeys out of `rokit`; they belong in the consuming app repo.
Add or update tests when command behavior, parsing, output, or public exports change.
15 changes: 0 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,6 @@ printf '{"command":"press","keys":["Back"]}' | pnpm exec rokit --input-json -
completed observation and reject late success.
- Bounded navigation: `press Down --until-node videoPlayerScreen --until-state visible --max 8`.
- `--dry-run` validates a mutating command without touching the device or files.
- ECP paths reject query strings, fragments, traversal, backslashes, control
characters, and percent-encoded segments.
- Output paths must stay inside the current directory.
- Screenshots append a timestamp to the filename; read the written path from
the result. Captures that fail decoding or exceed the limits in
Expand All @@ -94,19 +92,6 @@ await pressKey(context, "Info");
await assertSceneGraphNode(context, "videoPlayerScreen", { state: "visible" });
```

## Boundaries

`rokit` owns generic Roku mechanics:

- package, install, launch, deeplink params, and remote keypresses
- raw ECP queries and parsed media-player state
- BrightScript console capture and allowlisted debug-server commands
- SceneGraph state queries and named-node assertions
- timestamped screenshots, snapshots, and proof artifacts

Consumer app repos own product behavior: specific routes, playback of real
content, app-specific UI nodes, and review artifacts.

## Docs

- [Contributing](./CONTRIBUTING.md)
Expand Down
15 changes: 4 additions & 11 deletions skills/rokit/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,11 @@ description: Drive Roku devices with rokit when testing, sideloading, or debuggi
disagree, trust `describe`.
2. Dry-run mutating commands such as `package`, `install`, `launch`, `press`,
`screenshot`, or `proof` before touching a device.
3. Use structured output: the non-TTY JSON default or `--json`. Trim it with
`--fields`.
3. Trim JSON output with `--fields`.
4. Read artifact paths from the returned JSON. Screenshots append a timestamp
to the requested filename.
5. For state, use `rokit snapshot`; for review artifacts, `rokit proof
<output-dir>`. In the rokit repo, `pnpm exec vp run live:probe` runs the full
generic package, install, launch, input, and proof probe.
<output-dir>`.
6. After launch, use `wait-ready` when the app can race ECP or SceneGraph
readiness. Navigate with `press --until-node`, never arbitrary sleeps.
7. For crashes, start `rokit console` before you reproduce. See
Expand All @@ -42,10 +40,5 @@ printf '{"command":"press","keys":["Back"]}' | rokit --input-json -

## Boundaries

- Device IPs, developer passwords, screenshots, packages, and proof bundles stay
local or ignored.
- `rokit` asserts generic Roku and SceneGraph state. Consumer repos own product
routes, fixtures, account state, screen names, playback expectations, and
review narratives.
- ECP query paths are plain paths: no query strings, fragments, traversal,
backslashes, or encoded segments.
Device IPs, developer passwords, screenshots, packages, and proof bundles stay
local or ignored.