# Wireit

> Author and use Wireit scripts for npm. Use when working with Wireit configuration, npm scripts, build pipelines, or when the user mentions Wireit.

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

---


# Wireit

## Documentation

Full documentation: https://github.com/google/wireit

## Authoring Wireit Scripts

- Wireit is very static, list dependencies explicitly (won't infer them from npm workspace relationships).
- if something needs go (ex:compile) before another thing go (ex:bundle) that's a dependency
- envs: see https://github.com/google/wireit?tab=readme-ov-file#environment-variables
- deps can be relative ex "../../other-pkg:script-name"
- If a package in this repo has another package as a package.json dep or devDep, it should be a wireit dep for compile
- If an extension has another extension as an extensionDependency, it should be a wireit dep for bundle
  caching: if you specify `files` and `output` (even `[]`) you'll get caching (skips when neither have changed)
- You can have a wireit script without it being an npm script (ex: you can't execute it on its own, but it can run as a dep of another wireit script that can start from `npm run`)
- don't make circular references

## Using Wireit Scripts

- run commands with WIREIT_CACHE=none to avoid caching behaviors
- Agents should not run these (they won't exit)
  - any script with --watch
  - any `service:true` if you're an Agent, it won't exit
- wireit can't follow stuff outside `files`
  - manually changing code in node_modules then running compile or bundle
  - exception: `salesforcedx-vscode-services` `vscode:bundle` tracks `node_modules/@salesforce/templates/lib/**`
  - npm link'd packages (ex: symlinks to node libraries locally modified)

## Extra Arguments (passing CLI flags through wireit)

ref: https://github.com/google/wireit?tab=readme-ov-file#extra-arguments

- `npm run {script} -- {script args}` — single `--` forwards args to underlying command
- ex: `npm run build -- --verbose` passes `--verbose` to the command in `wireit.build.command`

## Common Patterns

top level `compile`, `lint`, `test` should run all of that in the various packages. When creating new packages, update these.

## Errors

If you see "Unknown error thrown: Error: Did not expect..." or "Internal error!" from wireit — another process was running the same scripts. Re-run the command yourself to confirm it passes. DO NOT CLEAR `.wireit` to solve this.

## Notes

each package will have its own `.wireit` cache, and there's also one at the top level.

