**Before writing any code or running any command**, search for relevant skills (`SKILL.md` files) that cover your task. Read the full skill and follow its instructions. Skills live in `.a4drules/skills/` and `feature/*/skills/`. See **webapp-skills-first.md** for the full protocol and a task-to-skill lookup table.
**Webapp name (`-n`):** Must be **alphanumerical only**—no spaces, hyphens, underscores, or special characters. Use only letters (A–Z, a–z) and digits (0–9). Example: `CoffeeBoutique` not `Coffee Boutique`.
```bash
sf webapp generate -n MyWebApp -t reactbasic
```
Do not use `create-react-app`, Vite, or other generic scaffolds; use `sf webapp generate` so the app is SFDX-aware.
## After Generation (MANDATORY)
After generating or when touching an existing app:
1.**Replace all default boilerplate** — "React App", "Vite + React", default `<title>`, placeholder text in shell. Use the actual app name.
2.**Populate the home page** — Never leave it as default template. Add real content: landing section, banners, hero, navigation to features.
3.**Update navigation and placeholders** — See [Navigation & Layout section](#navigation--layout-mandatory) below.
# Navigation & Layout (MANDATORY)
Agents consistently miss these. **You must not leave them default.**
## appLayout.tsx is the Source of Truth
- **Build navigation into the app layout** (`appLayout.tsx`). The layout must include nav (header, sidebar, or both) so every page shares the same shell.
**Never use complex `node -e` one-liners** for file edits or multi-line transforms. They break in Zsh due to `!` history expansion and backtick interpolation. Use a temporary `.js` file, `sed`/`awk`, `jq`, or IDE file-editing tools instead.