Choose and implement Windsurf validated architecture blueprints for different scales. Use when designing new Windsurf integrations, choosing between monolith/service/microservice architectures, or...
Workspace structure directly affects Cascade context and indexing behavior. Select and verify an architecture for single projects, monorepos, multi-service systems, polyglot codebases, or large organizations.
Confirm the target repository size, ownership boundaries, and developer workflow before selecting a workspace layout.
Public documentation checks require no authentication. Any editor, organization, remote-indexing, or MCP operation uses the operator's existing Devin Desktop session and the target provider's approved credentials; never copy those credentials into repository files.
Read to inspect only the repository files and configuration needed for the request.Grep to locate relevant settings, rules, logs, or code without broad collection.Best for: 1-3 developers, single service, <10K files.
my-project/
āāā .devin/rules/project.md # Full project context
āāā .codeiumignore # Exclude build artifacts
āāā src/
āāā tests/
āāā package.json
āāā README.md
Configuration:
.devin/rules/project.md contains complete stack and architecture detailsBest for: 3-15 developers, monorepo with 2-10 packages.
monorepo/
āāā .devin/rules/project.md # Brief shared conventions
āāā .codeiumignore # Aggressive exclusions at root
āāā packages/
ā āāā api/
ā ā āāā .devin/rules/project.md # API-specific rules
ā ā āāā .codeiumignore
ā āāā web/
ā ā āāā .devin/rules/project.md # Frontend-specific rules
ā ā āāā .codeiumignore
ā āāā shared/
ā āāā .devin/rules/project.md # Library conventions
ā āāā .codeiumignore
āāā .windsurf/
āāā workflows/ # Shared workflows
Strategy:
# Each developer opens their package directory:
windsurf packages/api/ # Backend dev
windsurf packages/web/ # Frontend dev
windsurf packages/shared/ # Library maintainer
# NOT: windsurf monorepo/ # Too broad!
Best for: 15+ developers, microservices, 50K+ total files.
Developer A: Windsurf ā services/auth/ (auth service)
Developer B: Windsurf ā services/payments/ (payments)
Developer C: Windsurf ā services/notifications/ (notifications)
Developer D: Windsurf ā shared/libs/ (shared libraries)
Each developer gets focused Cascade context per workspace window.
Team conventions:
1. One Windsurf window per service/package
2. Every service has its own .devin/rules/project.md and .codeiumignore
3. Cascade tasks scoped to current workspace only
4. Cross-service changes: open both workspaces side by side
5. Tag cascade commits: git commit -m "[cascade] description"
6. Use shared workflows from central config repo
Best for: Projects with multiple languages (TypeScript + Python + Go).
# Each language has different .devin/rules/project.md
services/
āāā ts-api/
ā āāā .devin/rules/project.md # TypeScript patterns, Fastify, Vitest
āāā python-ml/
ā āāā .devin/rules/project.md # Python patterns, FastAPI, pytest
āāā go-gateway/
āāā .devin/rules/project.md # Go patterns, chi router, go test
<!-- .devin/rules/project.md for Python service -->
# Project: ML Pipeline
## Stack
- Language: Python 3.11
- Framework: FastAPI
- ML: scikit-learn, pandas
- Testing: pytest with fixtures
- Type checking: mypy (strict)
## Conventions
- Use pydantic for all data models
- Async endpoints with asyncio
- Type hints on all functions
- No print() ā use logging module
Best for: UI-heavy projects with design system, Storybook, component library.
<!-- .devin/rules/project.md for design system -->
# Project: Design System
## Stack
- Framework: React 18 + Next.js 14
- Styling: Tailwind CSS + custom tokens
- Components: Radix UI primitives
- Docs: Storybook 8
- Testing: Vitest + Testing Library
## Component Conventions
- One component per file (ComponentName.tsx)
- Co-located tests: ComponentName.test.tsx
- Co-located stories: ComponentName.stories.tsx
- Props interface exported: ComponentNameProps
- Use forwardRef for all components
- Use CVA (class-variance-authority) for variants
## Design Tokens
- Colors: use design-system/tokens, never raw Tailwind colors
- Spacing: use space-* scale (4px base)
- Typography: use text-* presets
Cascade integration: Use Previews to iterate on UI components:
"Preview the Button component with all variants"
Click elements in Preview ā send to Cascade for refinement
| Factor | Solo | Focused Mono | Multi-Window | Polyglot |
|---|---|---|---|---|
| Team Size | 1-3 | 3-15 | 15+ | Any |
| Codebase | <10K files | 10K-50K | 50K+ | Mixed |
| Cascade Speed | Fast | Fast (per window) | Fast (per window) | Fast (per window) |
| Setup Effort | Minimal | .codeiumignore + rules | Per-service config | Per-language rules |
| Context Quality | Excellent | Good | Good | Good (per lang) |
Deliver a workspace topology recommendation naming the selected variant, indexing boundaries, rule and AGENTS.md locations, ignore strategy, tradeoffs, and a staged migration plan. Include explicit assumptions for repository size, languages, ownership, and team concurrency.
| Issue | Cause | Solution |
|---|---|---|
| Cascade is slow | Too many files indexed | Open smaller workspace, add .codeiumignore |
| Wrong file context | Monorepo root open | Open specific service directory |
| Conflicting edits | Multiple devs, same files | Feature branches per Cascade session |
| Wrong language patterns | Multi-language workspace | Separate .devin/rules/project.md per language directory |
| Stale suggestions | Index out of date | Preserve diagnostics, then use the current indexing reset control |
node_modules/
dist/
build/
.next/
coverage/
*.min.js
*.map
__pycache__/
.venv/
target/
vendor/
*.log
*.sqlite
set -euo pipefail
FILE_COUNT=$(find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' | wc -l)
echo "Indexed files: ~$FILE_COUNT"
[ "$FILE_COUNT" -gt 10000 ] && echo "WARNING: Consider opening a subdirectory"
[ -f .devin/rules/project.md ] && echo "Rules: $(wc -c < .devin/rules/project.md) chars" || echo "Rules: MISSING"
[ -f .codeiumignore ] && echo "Ignore: $(wc -l < .codeiumignore) patterns" || echo "Ignore: MISSING"
Continue with windsurf-known-pitfalls to test the selected architecture against indexing, context, configuration, and team-workflow failure modes.