Thanks for wanting to improve yoo.
git clone https://github.com/nihitdev/yo-cli.git
cd yo-cli
cargo build --locked
cargo run -- --fast --name YourNameInstall Rust through rustup, plus Git (used by the CLI and its tests). The
rust-toolchain.toml file selects stable Rust and installs rustfmt and Clippy.
The minimum supported Rust version (MSRV) is 1.85, declared in Cargo.toml and
tested separately in CI. To reproduce that check, install it with
rustup toolchain install 1.85.0 --profile minimal, then run
cargo +1.85.0 test --locked.
Run the CLI checks with Node.js 24 and Bash installed:
bash scripts/check.shThe equivalent commands also work individually in PowerShell and other shells:
cargo fmt --check
cargo test-all
cargo lint
npm test --prefix packages/npm
bash scripts/check-shell.sh
node --test scripts/package-metadata.test.mjs
bash scripts/check-completions.shcargo test-all and cargo lint are repository aliases in .cargo/config.toml.
They use the committed lockfile, and linting covers all Rust targets with
warnings treated as errors. Run cargo fmt to apply formatting fixes.
The Next.js website lives in site/. Use Node.js 24, matching CI:
cd site
npm ci
npm run devBefore submitting website changes, run npm run lint,
npx --no-install tsc --noEmit --incremental false, and npm run build from
site/. Building regenerates the installer route from install.sh; commit
site/app/yo-setup/installer.generated.ts if it changes. The npm installer
wrapper and its tests live separately in packages/npm/.
The root and website .node-version files select Node.js 24 for compatible
version managers. The shell checks require Bash; on Windows, use Git Bash or
WSL for those two commands. Completion checks compare generated files without
rewriting tracked files and honor Cargo's configured target directory.
See Code structure for module responsibilities and the steps for adding CLI commands.
src/— CLI commands, project detection, configuration, and process handling.tests/— integration tests that run the compiled CLI.docs/andexamples/— user documentation and sample configuration.scripts/andpackaging/— release tooling and package definitions.site/— website and hosted package repositories.packages/npm/— npm binary installer and its tests.
- Keep each change focused.
- Add or update tests for behavior changes.
- Run
bash scripts/check.sh(or the equivalent commands above). - Update the README and changelog when users will notice the change.
Pushing a branch other than the default branch automatically opens a pull request. Push additional commits to update that pull request; Dependabot branches are excluded.
Tip packs are YAML files. Keep them practical, short, original, and safe for a broad developer audience.
name: web
description: Useful web-development reminders.
tips:
- Test loading, error, and empty states.
- Check the browser console before guessing.