# Contributing Workflow ## Development Commands ```bash # Setup yarn # Install dependencies yarn clean # Clean build artifacts # Development yarn start # Interactive project selector yarn nx run :build # Build specific project yarn nx run :start # Start Storybook for component yarn nx run :test # Run unit tests yarn nx run :test -u # Update snapshots yarn nx run :lint # Lint yarn nx run :type-check # Type check yarn nx run :generate-api # Update API docs # Multi-project yarn nx run-many -t build # Build multiple yarn nx affected -t test # Test affected projects # Component generation (v9 only) yarn create-component # Interactive generator ``` ### First-time Storybook setup After `yarn install`, per-component Storybooks that pull stories through the shared `@fluentui/react-components` barrel (most v9 components) will fail to compile with `Module not found: @fluentui/react-alert`, `@fluentui/react-infobutton`, or `@fluentui/react-virtualizer`. These three packages are workspace-linked from local sources — their built output isn't present on a fresh clone. Build them once before starting any component Storybook: ```bash yarn nx run-many -t build -p react-alert,react-infobutton,react-virtualizer ``` The build only needs to be re-run if you modify one of those three packages. Normal rebuilds of any other component pick up these prebuilt deps automatically. ## PR Checklist 1. **Change file** — Required for any published package change: ```bash yarn beachball change --type patch --message "fix(react-button): description" ``` Use `patch` for fixes, `minor` for features. Never `major` without approval. 2. **Tests pass** — `yarn nx run :test` 3. **Lint passes** — `yarn nx run :lint` 4. **Types check** — `yarn nx run :type-check` 5. **API docs updated** — If public API changed: `yarn nx run :generate-api` 6. **Link issue** — Use `Fixes #` in PR body ## Branch Naming - Bug fixes: `fix/-` - Features: `feat/-` - Docs: `docs/` ## What NOT to Do - Don't refactor unrelated code alongside a bug fix - Don't modify public API without explicit approval - Don't skip beachball change files for published packages - Don't add dependencies between component packages (Tier 3 → Tier 3)