Workspaces & Projects
How SiteKnock organizes work into a workspace, projects, and apps — and how sk-cli.json ties them together.
The hierarchy
SiteKnock organizes everything into three levels: a workspace contains one or more projects, and each project contains one or more apps.
workspace/
├── sk-cli.json # Workspace manifest (projects, licenses, Studio settings)
├── my-saas/ # Project 1 (a full SiteKnock monorepo)
├── client-portal/ # Project 2
└── .agent/
└── siteknock-kb/ # Shared Common KB (all projects in the workspace)
Workspace
A workspace is a base folder managed by sk-cli. It holds:
sk-cli.json— the workspace manifest, tracking registered projects, their bundle versions, license bindings, and Studio runtime defaults.- One folder per project.
- A shared
.agent/siteknock-kb/Common Knowledge Base so every project shares the same kit knowledge.
When you run Studio, it mounts the workspace and lets you switch between projects with ?project=<folder>.
Project
Each project is a direct child folder of the workspace and is a complete SiteKnock monorepo:
my-saas/
├── package.json # sk-version + @siteknock/* dependencies
├── pnpm-workspace.yaml
├── config/
│ └── sk-config.jsonc # Project manifest (apps, features, branding, SEO)
├── apps/ # Created on demand (frontend, backend, e2e)
├── locales/ # Translation files
├── pages/ # Page content per app
├── emails/ # Email templates per app
├── .agent/ # Project KB (config-driven)
├── AGENTS.md # Pointer to the Project KB
├── CLAUDE.md
└── GEMINI.md
A freshly scaffolded project has no apps/ directory. It's created when you add your first app with pnpm app create.
Apps
A project can contain multiple apps, each with a type:
| Type | Description |
|---|---|
fe | Frontend only (Next.js) |
be | Backend only (Express) |
fe+be | Fullstack (frontend + backend) |
e2e | Playwright test suite that targets other apps |
See Apps & Ports for how ports, hostnames, and dev URLs are assigned.
Creating projects
# From the workspace root
sk-cli create --project my-saas
Or use Studio's workspace manager to create projects visually. See Creating Projects.
Switching projects in Studio
- Append
?project=<folder>to the Studio URL, or pick a project from the workspace manager. - Studio resolves the default project from
sk-cli.json, falling back to the first valid folder.