callstackincubator/rozenite-agent
Use Rozenite for Agents through CLI-driven `rozenite agent` commands to inspect React Native DevTools data and Rozenite plugins on a live app target. Trigger this skill for shell-based debugging and live session work. For Node.js or TypeScript scripts, wrappers, automations, or other programmatic SDK usage, use `rozenite-agent-sdk` instead.
npx skills add https://github.com/callstackincubator/rozenite --skill rozenite-agent
npx rozenite for Rozenite commands.npx rozenite from the app root where Metro is started for the target app. In monorepos, this is usually the app package root, not the repository root.agent domains, agent <domain> tools, and tools that declare the shared
pagination contract always write compact JSON by default. This includes
built-in and third-party plugin tools. Pass --pretty for indented JSON. The
--json / -j option is retained as a compatibility no-op and never changes
the output shape.
{"cols":["id","kind"],"rows":[["console","static"],["react","static"]]}.
cols is exactly the requested field order; an absent optional value is
represented by null in its row, since a positional array cell can't
simply be omitted without shifting the columns after it.
{"items":[{"id":"console","kind":"static"}]}. Here an absent optional
value is omitted from the object entirely (not null), so these payloads
never grow past their pre-columnar shape — the reason 0/1-row results stay
row-keyed in the first place.
name, description, readOnly, destructive,and idempotent. name is the globally qualified identifier to pass to a
later call or schema command. Traits are optional; null in a columnar
row or an omitted key in a row-keyed result means unknown, not false.
next is ashell-escaped, runnable npx rozenite agent ... command that preserves the
connection, session, projection, and limit options. CLI-owned domain and
tool listings pass their cursor with --cursor; paginated tool calls pass
the producer cursor inside --args.
--cursor from an earlier page can go stale if the underlying data wasinvalidated (for example, an app relaunch resets the network domain's
capture buffer). Re-running a stale cursor returns
{"page":{"reset":true},"items":[]} instead of a normal empty page — treat
that as "restart this listing from scratch," not "no more rows."
Declared paginated calls include console messages, React
tree/search/inspection rows, render data, network request listings, and any
plugin tool registered with pagination metadata. Tool-specific metadata (for
example roots, totalCount, or recording) remains alongside the row shape.
Undeclared tool results, SDK responses, and genuinely non-row command results
retain their existing shapes.
field. For example, console getMessages omits argsPreview and context
by default. Pass -f, --fields <csv> to pick specific columns, or
-v, --verbose to include every field the tool declares.
rozenite agent ... workflows.rozenite-agent-sdk.npx rozenite agent session create. It creates or reuses the device session and returns when ready. Stop the session when done with npx rozenite agent session stop <sessionId>.session create fails because multiple devices are connected, run npx rozenite agent targets, choose the right id, then retry with --deviceId <id>.npx rozenite agent targets as the source of truth for available targets. If the expected target is missing, ask the user to run the app on a device.--session <id> on every domain command.domains/*.md references as the source of truth for workflow, tool choice, and tool arguments.npx rozenite agent domains --session <id> only if a domain call fails, the expected domain is unclear, or you need to confirm what is currently registered.npx rozenite agent <domain> tools or fetch tool schema when this skill or its references already provide the needed tool name and arguments.npx rozenite agent <domain> tools --session <id> or npx rozenite agent <domain> schema --tool <name> --session <id> only when no matching reference exists, the references do not answer the question, a call fails, or the live domain exposes behavior that differs from the references.pluginId instead of the domain token.console, network, react, performance, and memory.@rozenite/mmkv-plugin becomes mmkv, @avasapp/rozenite-plugin-ably becomes avasapp/ably.mmkv) is a built-in or an official @rozenite/* plugin; scope/name (avasapp/ably) is a third-party scoped plugin; a verbatim rozenite-* name is a third-party unscoped plugin. evil/mmkv and mmkv are never the same plugin.npx rozenite agent <domain> call --tool <toolName> --args '<json>' --session <id>.--args; --cursor is only for CLI-owned domain and tool listings.npx rozenite agent mmkv call --tool list-storages --args '{}' --session <id>.Unknown domain action, check the CLI syntax and retry with call --tool <toolName> --session <id>.npx rozenite agent targets as the source of truth for available targets when device selection matters. If the expected target is missing, ask the user to run the app on a device.npx rozenite agent session create.domains/*.md, read it.npx rozenite agent domains --session <id> only if the call fails, the expected domain is unclear, or you need to confirm what is currently registered.npx rozenite agent <domain> tools --session <id> or npx rozenite agent <domain> schema --tool <name> --session <id> only if the reference is insufficient, the call fails, or you need to confirm a live mismatch.10. When no further Rozenite calls are needed, stop the session with npx rozenite agent session stop <sessionId>.
Take callstackincubator/rozenite-agent from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.