Architecture and patterns for full-stack projects. Use this skill when the user is building or reviewing a full-stack application — frontend + backend together — or when they ask where to put something and the answer spans both layers. Also trigger when the user mentions "full-stack", "monorepo", "BFF", "which skill should I use", or starts a new project and hasn't decided on a stack yet. This skill is a lightweight orchestrator — it decides the architecture pattern and hands off to the specialised skills for implementation details.
This skill decides the architecture and then hands off to the right specialised skills. It does not repeat what those skills already cover — read them directly for implementation details.
Read this skill to decide the architecture pattern and project structure. Then read the specialised skills (python-swe, svelte-swe, svelte-ui) for implementation details on each layer.
Finally, ask the user if they want you to start coding or explicitly invoke the feature-blueprint skill to write a detailed plan.
Every project is a monorepo. Even if there's only a frontend today, the structure accommodates a backend tomorrow without reorganising. One repo, one agent context, full 360° visibility.
project-root/
├── CLAUDE.md # Project-level context — read first every session
├── AGENTS.md # Design system decisions (populated by svelte-ui skill)
├── .github/ # CI/CD workflows
├── docker-compose.yml # Local dev: frontend + backend + postgres
├── frontend/ # SvelteKit app
│ ├── package.json # pnpm as package manager
│ ├── pnpm-lock.yaml
│ ├── svelte.config.js
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ ├── .env # Frontend env vars only — never shares secrets with backend
│ └── src/
│ ├── app.css
│ ├── app.html
│ ├── hooks.server.ts
│ ├── routes/
│ └── lib/
│ ├── api/ # openapi-fetch client + generated schema.d.ts
│ ├── models/
│ ├── services/
│ ├── controllers/
│ ├── factories/
│ ├── stores/
│ └── components/
│ ├── ui/ # shadcn auto-generated
│ ├── primitives/ # Themed wrappers
│ ├── layout/ # Page-level structure
│ └── domain/ # Feature-specific
└── backend/ # Python FastAPI app — src layout
├── pyproject.toml # Project metadata, dependencies, tool config
├── alembic.ini
├── .env # Backend env vars only
├── alembic/
│ ├── env.py
│ └── versions/
├── tests/
│ ├── conftest.py
│ ├── unit/
│ └── integration/
└── src/
└── myapp/ # Replace "myapp" with actual project name
├── __init__.py
├── app.py # FastAPI create_app()
├── config.py # AppConfig.from_env()
├── factory.py
├── errors.py
├── dependencies.py
├── models/
│ └── __init__.py
├── services/
│ └── __init__.py
├── repositories/
│ ├── __init__.py
│ └── orm/
│ ├── __init__.py # Imports all ORM models for Alembic
│ └── base.py # DeclarativeBase
├── controllers/
│ └── __init__.py
└── routes/
└── __init__.py
.github/ CI, shared docker-compose.yml, shared CLAUDE.mdpnpm for all commands. pnpm-lock.yaml committed.pyproject.toml with pip or uv. No setup.py, no requirements.txt.
Use the src layout (backend/src/myapp/) so imports are always from myapp.x import y.# docker-compose.yml