# cargo-ravenrs

Create a RavenRS app and give coding assistants the API, examples, design tokens and
instructions for the exact same release, without a separate MCP installation.

```sh
cargo install --git https://github.com/alexkads/RavenRS --tag v27.1.27 --locked cargo-ravenrs
cargo ravenrs new minha-loja --template app --target both --yes
cd minha-loja
cargo run
cargo test
cargo ravenrs doctor
```

For a released version, add `--tag vYY.R.P` to `cargo install`. This crate embeds workspace
sources and is installed from Git, rather than crates.io. From a checkout use
`cargo install --path crates/cargo-ravenrs --locked`.

`new` asks for the template and target in a terminal. With `--yes` or redirected input,
it defaults to `hello` and `desktop`. Templates are `hello`, `app`, `app-sqlite`, and
`relatorios`; targets are `desktop`, `web`, and `both`. SQLite is used on the desktop;
the SQLite template uses IndexedDB in the browser. Source files are embedded from
`examples/hello-world`, `tutorial-tasks`, `tasks-sqlite`, and `report-designer`.

Flags: `--no-git`, `--no-ai`, `--no-check`, and `--plugin`. The last flag writes a
version-pinned Claude marketplace registration instead of copying the local skill.
A repeated `new` recognizes projects generated by this version and preserves their code;
it refuses existing directories it does not own and rejects a different template or target before changing any file. It never migrates application source.

`cargo ravenrs mcp` serves the existing RavenRS MCP implementation over stdio.
`cargo ravenrs ai` configures an existing project. It merges only RavenRS entries in
JSON files, preserving other keys, and updates marked blocks in Markdown and Codex
TOML. JSON whitespace is normalized. Invalid files are rejected before any configuration
is written. Keep personal instructions outside the managed blocks. The local skill is
copied byte-for-byte from the versioned plugin, and its marked body can be updated while
preserving notes outside the block. An unmarked existing skill is preserved and reported.

`doctor` compares explicit RavenRS dependency versions with the CLI, checks managed
files, and runs initialize + tools/list through all four registered commands. It reports
stale files and versions with a nonzero exit code. Projects made with `--no-ai` are checked
without requiring assistant files. Workspace-inherited dependency versions must be made
explicit before using doctor on an existing project.

Web projects include `web/index.html` and commands in `AGENTS.md` and `README.md` for
building with the matching wasm-bindgen CLI and serving the result over HTTP.

Validation:

```sh
cargo test -p cargo-ravenrs -p ravenrs-mcp -p ravenrs-project
cargo test -p cargo-ravenrs --test cli -- --ignored
scripts/check.sh
```

The compilation matrix checks every template/target with local workspace patches, sharing
a build cache. Set `RAVENRS_TEST_PUBLISHED=1` to check against crates.io after publishing
the corresponding framework release. The regular tests start the real MCP binary from
each configuration and verify idempotence, version checks, and the embedded sources.

CLI, framework, templates and MCP use the same release version. The current Git tag is `v27.1.27`.
