feat(cli): add rozenite skills command and flatten agent skill docs - #382
Conversation
Add `rozenite skills list`/`show <id>` backed by a bundled doc registry under `packages/cli/docs`, and replace the `rozenite-agent` and `rozenite-agent-sdk` skills with a single thin router skill (`rozenite`) that discovers docs through the CLI instead of hardcoding them.
… test Address review feedback on PR #382: make `skills list` compact by default with an opt-in `--pretty` to match the `agent` command convention, remove a misleading memoization claim from the registry doc comment, make `core` point at other docs via `npx rozenite skills show <id>` instead of a bare id, strengthen the cross-reference test to catch path-marker-adjacent doc ids (while not flagging legitimate scope/name prose or npm subpath mentions), and explain on the skills doc page why content moved out of the skill and that the CLI works without installing it at all.
|
Addressed review feedback:
Re-ran |
Smoke tested ✅Ran the restructured skills + CLI end to end against a live app (iPhone 17 Pro simulator, playground app) via a Haiku sub-agent, using only the bundled docs (no prior Rozenite knowledge):
Also verified separately: build + unit tests pass, Confirms the relocated skill router + CLI-bundled docs are self-sufficient for a low-capability model to discover and drive correctly. |
.agents/skills/rozenite-agent pointed at packages/cli/skills/rozenite-agent, which was merged into packages/cli/skills/rozenite by the skills-CLI restructure and left the symlink dangling.
Description
Restructures Rozenite's agent skills so all real content is CLI-bundled and served by a new
rozenite skillscommand, and the standalone installable skill becomes a thin router.rozenite skills listandrozenite skills show <id>to the CLI, backed by a small registry (packages/cli/src/skills/registry.ts) that reads bundled docs frompackages/cli/docs/and exposes lookup by doc id and by domain token.packages/cli/docs/:core(shared ground truths),cli(shell-driven workflow),sdk(programmatic workflow),sdk-patterns(copy-pastable code patterns), and one doc per agent-enabled domain (storage,mmkv,console,network,network-activity,react,react-navigation,redux-devtools,performance,memory,file-system,controls,tanstack-query).rozenite-agentandrozenite-agent-sdkinstallable skills with a singlerozeniteskill (packages/cli/skills/rozenite/SKILL.md) that only tells the agent to runnpx rozenite skills list/show <id>and start withcore— it never hardcodes the doc inventory, so it can't go stale.website/src/docs/agent/{skills,overview,sdk}.mdxto document the new skill and command.rozenitepackage.No MCP server or
rozenite mcpcommand is included — that is a follow-up. No version-check behavior was touched.Related Issue
N/A — internal restructuring of existing agent-skill tooling.
Context
The two previous skills (
rozenite-agent,rozenite-agent-sdk) embedded all their content directly inside the installable skill package, including domain references and code-pattern references between files. That made the skill large, coupled its content to theskillsCLI's installation format, and required cross-file references between skill documents. Moving the content into the CLI package and exposing it viarozenite skillsmeans the docs can be read on demand (npx rozenite skills show <id>), each doc is self-contained (no cross-references), and the installed skill itself only needs to change if the discovery mechanism changes, not when doc content changes.The registry resolves its docs directory the same way
TEMPLATE_DIRresolvestemplate/forinit(relative to the built CLI entry point viaimport.meta.url), so it works from source and from the published package.Testing
Automated:
pnpm --filter rozenite run typecheckpnpm --filter rozenite run lintpnpm --filter rozenite run test(94 tests passed, including newskills-registry.test.tscovering: all expected doc ids are listed, every domain doc has itsdomainfield set (and non-domain docs don't), domain-token lookup works, unknown id/domain lookups returnundefined, and no doc body contains a cross-reference to another doc's filename or areferences/path)pnpm lint:all,pnpm format:all,pnpm typecheck:all(all packages pass)pnpm release:plan(confirms the changeset is picked up)Manual:
node packages/cli/bin.js skills list— prints all 17 docs with id/description (anddomainwhere applicable)node packages/cli/bin.js skills show core— prints the real doc bodynode packages/cli/bin.js skills show does-not-exist— exits non-zero with a message listing valid ids