# Update Emitter

> Update the TypeSpec emitter for Rust and optionally regenerate all clients

- Skill: `azure-azure-sdk-for-rust/update-emitter` (Agent Skill)
- Install (CLI): `npx skillmds@latest add azure-azure-sdk-for-rust/update-emitter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/azure-azure-sdk-for-rust/update-emitter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Azure (https://skillmd.com/u/azure-azure-sdk-for-rust)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/azure-azure-sdk-for-rust/update-emitter

---


# Update the TypeSpec emitter

Run `eng/scripts/Update-Emitter.ps1` to update `eng/emitter-package.json` to the latest `@azure-tools/typespec-rust` version and regenerate the lock file.

## Regenerating clients

After updating the emitter, service crates should be regenerated to pick up the new version.

Use the repository-pinned `tsp-client`; do not invoke a globally installed binary. From the repository root, install its locked dependencies:

```bash
_TspClientDir="$(pwd)/eng/common/tsp-client"
npm ci --prefix "$_TspClientDir"
```

Run `tsp-client` with `npm exec --prefix "$_TspClientDir" --no --` while the current directory is the client library root. Service owners should regenerate only their own service crates.

To regenerate a single crate:

```bash
cd sdk/{service-directory}/{crate-directory}
npm exec --prefix "$_TspClientDir" --no -- tsp-client update
```

To regenerate all crates under a service directory from the repository root:

```bash
find sdk/{service-directory} -name tsp-location.yaml -execdir \
  npm exec --prefix "$_TspClientDir" --no -- tsp-client update \;
```

See [`eng/common/tsp-client/README.md`](../../../eng/common/tsp-client/README.md) for prerequisites, additional commands, and package management details.

## After regenerating

- Build and test each affected crate to verify correctness.
- Review any changes to public APIs and update each crate's `CHANGELOG.md` accordingly.

