docs(lanes): document ccam lanes mcp sync (F1)

This commit is contained in:
2026-08-05 15:39:04 +07:00
parent 60fb7cbaeb
commit ef686454b9
3 changed files with 19 additions and 1 deletions
+1 -1
View File
@@ -34,7 +34,7 @@ Then check your current position:
- **Feature slug**: from the branch name (`feat/X``X`), or from `ccam feature list` (the lane's currently-active feature is marked `▶`). - **Feature slug**: from the branch name (`feat/X``X`), or from `ccam feature list` (the lane's currently-active feature is marked `▶`).
Resume from the stage shown. If state says `stage=X status=running`, you were mid-stage X when context compacted — re-run that stage from the top (all `ccam` commands are idempotent). Resume from the stage shown. If state says `stage=X status=running`, you were mid-stage X when context compacted — re-run that stage from the top (all `ccam` commands are idempotent).
- **MCP preflight (fail fast):** confirm this session actually loaded the lane's required Playwright MCPs (their `browser_*` tools must be available) — `playwright` and a local-QC MCP are always required for Stage 3/6. `ccam lanes mcp sync` (F, not built yet) would normally do this for you; until then, tell the human to configure `.mcp.json` manually and restart the session if a required MCP is missing. Catching this at Stage 0 costs a minute; catching it at Stage 13 strands a merged feature unverified. - **MCP preflight (fail fast):** if this is the lane's first run, or a required Playwright MCP's `browser_*` tools aren't available in this session, run `ccam lanes mcp sync` — it relocates the source repo's already-configured MCP servers into this lane's `.mcp.json`. If the source repo has none configured (`ENOMCPCONFIG`), tell the human to configure `.mcp.json` manually for the source repo first. Either way, restart the session after syncing so the new config loads — `playwright` and a local-QC MCP are always required for Stage 3/6. Catching this at Stage 0 costs a minute; catching it at Stage 13 strands a merged feature unverified.
- **Agents preflight:** if this is the lane's first run through this pipeline, run `ccam lanes agents install` once — it writes the `qc-local` and `senior-gate-reviewer` agent definitions into the lane's own `.claude/agents/` (idempotent; re-running just overwrites with the current templates). Stage 6/7 launch these by `subagent_type`; skipping this leaves those stages unable to find the agent. - **Agents preflight:** if this is the lane's first run through this pipeline, run `ccam lanes agents install` once — it writes the `qc-local` and `senior-gate-reviewer` agent definitions into the lane's own `.claude/agents/` (idempotent; re-running just overwrites with the current templates). Stage 6/7 launch these by `subagent_type`; skipping this leaves those stages unable to find the agent.
## Hard rules ## Hard rules
+16
View File
@@ -1047,6 +1047,22 @@ Writes both agent templates into `<lane>/.claude/agents/` and adds that director
**`ticketer`, `dev-qc`, and `pr-reviewer`** are not ported yet — the first two are invoked only by Stages 9/13, which are hardcoded-skipped pending F's integrations; the third isn't referenced anywhere in this skill's text. **`ticketer`, `dev-qc`, and `pr-reviewer`** are not ported yet — the first two are invoked only by Stages 9/13, which are hardcoded-skipped pending F's integrations; the third isn't referenced anywhere in this skill's text.
### Syncing MCP servers: mcp sync
A lane needs the same MCP servers (Playwright, a local-QC server) as its source repo to run Stage 3/6. `ccam lanes mcp sync` gives it those:
```bash
ccam lanes mcp sync
```
Reads the source repo's already-configured `mcpServers` from `~/.claude.json` (normal Claude Code project-scope config — set this up for the source repo once, the same way you would for any project), relocates any absolute path under the source repo to the lane's own directory, pins a `@playwright/mcp` server's `--output-dir` to the lane's `.playwright-mcp` (so proof screenshots land where the proof gallery reads them), and writes `<lane>/.mcp.json`. Also seeds the lane's Chromium browser profiles from the source repo's own — preserves saved logins, and never overwrites a profile that already exists at the destination.
**No permission/settings changes.** Unlike Shipyard's original `lane-mcp-sync.sh`, this command never writes to `<lane>/.claude/settings.local.json` — no auto-approval rules, no `autoMode` bypass entries. A session's `gh`/`git push` commands go through the normal permission prompt like any other command.
A lane whose source repo has no `mcpServers` configured gets a clear `ENOMCPCONFIG` error, not a silently-empty `.mcp.json` — configure the source repo's MCP servers first, then re-run.
Restart the lane's Claude session after syncing — MCP config is read at session start.
### Pipeline template: ship-feature (16 node stages) ### Pipeline template: ship-feature (16 node stages)
The skill uses the `ship-feature` pipeline template, which defines the following 16 stages (node IDs): The skill uses the `ship-feature` pipeline template, which defines the following 16 stages (node IDs):
@@ -326,6 +326,8 @@ behaves as documented. Each of those commands gets a CLI test.
`<repo>/.ccam/profile/integrations.env`, exposed as `ccam lanes integration <name>` `<repo>/.ccam/profile/integrations.env`, exposed as `ccam lanes integration <name>`
(exit 0/1) and in `GET /runtime`. (exit 0/1) and in `GET /runtime`.
**Progress:** `mcp sync` (F1) done 2026-08-05 — see `docs/superpowers/specs/2026-08-05-mcp-sync-design.md`. Tracker, dev-QC, CI-wait remain.
- **Tracker** — file one ticket per feature, idempotent (update, never - **Tracker** — file one ticket per feature, idempotent (update, never
duplicate), writing `proof/<slug>/ticket/REPORT.html`. duplicate), writing `proof/<slug>/ticket/REPORT.html`.
- **Dev-site QC** — post-merge browser QC against the deployed site with a - **Dev-site QC** — post-merge browser QC against the deployed site with a