Getting StartedWorkspaces & Projects

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:

TypeDescription
feFrontend only (Next.js)
beBackend only (Express)
fe+beFullstack (frontend + backend)
e2ePlaywright 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.

Next steps