| name | tech-stack-steering |
| description | Technology stack constraints and approved libraries. Auto-loaded when Droid is making technology choices, adding dependencies, or proposing architectural changes. Defines what frameworks, libraries, and patterns are allowed. |
| user-invocable | false |
Technology Stack Steering
You MUST consult these constraints before:
- Adding any new dependency
- Proposing a library swap
- Choosing an implementation approach
- Suggesting an architecture change
Approved Stack
| Layer | Technology | Version | Notes |
|---|
| Frontend | React | 18+ | TypeScript strict mode |
| Styling | Tailwind CSS | 3.x | No other CSS-in-JS |
| State | Zustand or React Context | latest | No Redux |
| Routing | React Router | 6+ | File-based routes |
| Backend | Express | 4.x | or Fastify 4.x |
| ORM | Prisma | 5.x | PostgreSQL only |
| Auth | NextAuth / custom JWT | - | See auth patterns below |
| Testing | Vitest + Playwright | latest | See testing section |
| Build | Vite | 5.x | - |
Dependency Approval Process
Before suggesting ANY new dependency:
- Check if the functionality exists in the approved stack above
- Check if native JS/TS can handle it
- If a new dep is truly needed, state: what it does, why existing tools can't, its bundle size impact, and maintenance status
- Wait for explicit user approval before adding
Patterns to Follow
- API calls: centralized fetch wrapper in
src/lib/api.ts
- Form handling: controlled components with custom validation hooks
- Error handling: Error boundaries + centralized error reporting
- Env vars: typed config via
src/config.ts, never accessed directly
Anti-Patterns (Never Do)
- Inline styles (use Tailwind classes)
- Direct DOM manipulation
- Barrel exports (index.ts re-exporting everything)
- Circular dependencies between modules
- Storing derived state