Step 00
Prerequisites
What you need on your machine before starting.
- Node 20+ and pnpm 10+ (this repo's root
package.jsonpins both). - Git on the machine hosting the target client repo.
- Claude Code (or any MCP-capable agent) with config access (
~/.claude/settings.jsonor equivalent). - An MCP token for this Command Center, generated under /settings/tokens.
Step 01
Wire a repo
Adds .westline/project.json and an AGENTS.md / CLAUDE.md snippet. Run this from the root of the target client repo.
pnpm wire-repo --repo /path/to/client/repo --client rose-landscape --project job-costing-appSchema: /schemas/project.v1.json
What gets written
.westline/project.json
{
"$schema": "https://command.westline.dev/schemas/project.v1.json",
"version": 1,
"client_slug": "rose-landscape",
"project_slug": "job-costing-app",
"command_center": {
"mcp_url": "https://mcp.command.westline.dev/mcp",
"dashboard_url": "https://command.westline.dev/c/rose-landscape/p/job-costing-app",
"vault_url": "https://command.westline.dev/c/rose-landscape/p/job-costing-app/v"
}
}AGENTS.md / CLAUDE.md snippet
## Project tracker — Westline Command Center
This project is tracked at https://command.westline.dev (config: `.westline/project.json`).
### Required first action
Before reading any other files or making any changes, call:
get_project_brief(project_slug="rose-landscape/job-costing-app")
It returns: vision, current focus, next-up tasks, recent decisions, recent
handoffs, and the project plan/architecture from the vault. Treat this as
your starting context — it replaces re-reading scattered docs.
### When you make a meaningful decision
Call `log_decision(...)` so it's captured for future sessions.
### Required last action
Before ending the session, call:
log_handoff(project_slug="rose-landscape/job-costing-app", summary="...", next_actions="...")
This writes to the project's vault and updates the changelog.
### Status changes
Call `mark_task(id, status, note)` whenever you start, finish, block, or
unblock work. The note is required.Step 02
Register the MCP token
Add the Command Center server to Claude Code's MCP config with a bearer token. The token does not live in the repo — it stays in your local agent config.
- Open /settings/tokens, click New token, and name it for the machine you're on (e.g.
macbook-pro). - Copy the token once — the dashboard only shows the first 8 chars after creation.
- Paste it into your Claude Code MCP config (server name
westline-commandby convention):
{
"mcpServers": {
"westline-command": {
"url": "https://mcp.command.westline.dev/mcp",
"headers": { "Authorization": "Bearer wlc_..." }
}
}
}Step 03
Verify the cold start
Open Claude Code in the wired repo with no prior chat history and ask “what's next?” The first tool call should be get_project_brief.
What the agent will do on cold start:
┌─────────────────────────────────────────────────────────────────┐
│ Fresh Claude Code session opens in a wired repo │
│ (no chat history, no preloaded context) │
└──────────────────────────────┬──────────────────────────────────┘
│ reads .westline/project.json
│ reads AGENTS.md / CLAUDE.md
▼
┌─────────────────────────────────────────────────────────────────┐
│ 1. get_project_brief(client_slug/project_slug) │
│ <- vision, current focus, next tasks, recent decisions, │
│ recent handoffs, plan + architecture notes │
└──────────────────────────────┬──────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ 2. get_next_recommended_tasks(project_slug) │
│ <- prioritized tasks the agent should pick up │
└──────────────────────────────┬──────────────────────────────────┘
│ agent works the task
▼
┌─────────────────────────────────────────────────────────────────┐
│ 3. mark_task(id, "in_progress" -> "done", note) │
│ 4. log_decision(...) when judgment calls happen │
│ 5. log_handoff(...) at the end of the session │
└─────────────────────────────────────────────────────────────────┘Watch the calls land in real time under /sessions and /audit. If get_project_brief is not the first call, double-check that the AGENTS.md / CLAUDE.md snippet is loaded and the MCP server is registered.