|
1 | 1 | # CreateOS CLI — Development Guide |
2 | 2 |
|
| 3 | +## Cross-repo mesh — CreateOS Sandbox |
| 4 | + |
| 5 | +**You are in `createos-cli` — the public Go CLI.** The `fc` control plane |
| 6 | +defines the API this calls; `createos-plugin` wraps this CLI; the website |
| 7 | +mirrors these commands. On any command / flag change, run the protocol below — |
| 8 | +the concrete website-regen steps live in "Keeping the Website Docs in Sync" near |
| 9 | +the end of this file. This repo is one of five in the product mesh. |
| 10 | + |
| 11 | +### Repo map |
| 12 | + |
| 13 | +| repo | path | role | public? | changes that ripple across the mesh | |
| 14 | +|---|---|---|---|---| |
| 15 | +| **fc** | `../fc` | control-plane — **source of truth** | 🔒 private | HTTP API, wire/JSON fields, error shapes, lifecycle/state, limits/quotas, behavior | |
| 16 | +| **fc-sdk** | `../fc-sdk` | TypeScript SDK **+ `examples/`** | 🌐 public | public SDK methods, wire types, example apps | |
| 17 | +| **createos-cli** | `../createos-cli` | Go CLI | 🌐 public | commands, flags, help/UX text | |
| 18 | +| **website-04** | `../website-04` (`content/docs/Sandbox`) | public docs | 🌐 public | REST / SDK / CLI reference + concept pages | |
| 19 | +| **createos-plugin** | `../createos-plugin` | Claude Code plugin over the `createos` CLI | 🌐 public | skills, slash commands, hooks | |
| 20 | + |
| 21 | +### What counts as a shared surface |
| 22 | + |
| 23 | +HTTP endpoint or method · wire or JSON field · error shape · sandbox |
| 24 | +lifecycle/state · limit or quota · CLI command or flag · public SDK method · |
| 25 | +documented behavior. A change confined to internals — refactor, comment, |
| 26 | +private helper, test-only — is **not** a shared surface, so skip the mesh for it. |
| 27 | + |
| 28 | +### Protocol — run before finalizing a shared-surface change |
| 29 | + |
| 30 | +1. **Classify origin.** `fc` is the source of truth; SDK / CLI / docs / plugin |
| 31 | + are downstream consumers. A downstream change that implies a backend change |
| 32 | + (new field, new endpoint) → surface it to the user; never invent server |
| 33 | + behavior inside a client. |
| 34 | +2. **Search every sibling** for the touched symbol / endpoint / flag — |
| 35 | + `semble search` first, then `rg`. |
| 36 | +3. **Build a status matrix** per sibling: `already-present` · |
| 37 | + `missing-needs-update` · `n/a`. **Flag the already-present ones to the user** |
| 38 | + ("already exists in fc-sdk + docs"). Never silently duplicate a change that is |
| 39 | + already there — that is the whole point of this check. |
| 40 | +4. **`fc` → any public repo is a leak-guard boundary (security).** Strip private |
| 41 | + implementation, security internals, infra, threat-model notes, and |
| 42 | + internal-only tooling (`fcctl`, host filesystem paths, mTLS/CA internals) |
| 43 | + before anything lands in a public repo. Respect each public repo's own wording |
| 44 | + rules (e.g. `fc-sdk/AGENTS.md` forbids the word "VM"). Report the proposed diff |
| 45 | + and **ask for approval before landing any public edit** — never auto-write |
| 46 | + across the boundary. |
| 47 | +5. **Use the `sync-docs` skill** to execute SDK / CLI / website reconciliation |
| 48 | + against upstream `fc` where it applies. |
| 49 | + |
3 | 50 | ## Project Structure |
4 | 51 |
|
5 | 52 | ``` |
|
0 commit comments