Skip to content

Commit 09bca03

Browse files
IAM-marcoclaude
andcommitted
docs: document the team-attachment nudges for agents
Records the new envelope fields in the CLI's agent contract so an agent can branch on attachment state, and adds the changeset for the release notes. Both stay on the vocabulary `zitadel claim` established. The CLI's vocabulary gate bans "unclaimed" in README.md and SKILLS.md, and keeping it out of the strings themselves is what makes that gate easy to keep. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 5fcdfd8 commit 09bca03

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

.changeset/cli-claim-nudges.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
"@zitadel/cli": minor
3+
---
4+
5+
Report whether a project is attached to a team in `setup`, `status`, and `doctor`, so the temporary nature of a fresh project is visible without having to know `zitadel claim` exists.
6+
7+
`setup` closes with an ownership line and points at `claim`, `status` carries `data.project.claim` (`detached`, or `attached` with the owning `team_id` and `claimed_at`), and `doctor` grows a `claim` check. All three read `claimed_at`/`team_id` from `.zitadel/secret`, which `zitadel claim` already writes, so nothing here costs a platform call and everything keeps working offline.
8+
9+
A project with no team is a **warning**, never a failure: it works exactly like one with a team, so `doctor` still exits 0, and `--fix` deliberately does nothing because claiming needs a human in a browser. The messaging frames unattached projects as temporary without promising deletion, since nothing deletes them today.
10+
11+
Nudges appear only for projects whose `server` in `zitadel.json` is the Zitadel cloud. Local and self-hosted projects have no team to attach to, so `zitadel setup --server local` stays quiet about it.

apps/cli/SKILLS.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,15 @@ the CLI's help layer, not the envelope.
145145
there is nothing to preview, because a claim is decided in a browser.
146146
Flags: `--no-open` (print the link instead of launching a browser),
147147
`--timeout <seconds>` (stop waiting sooner than the link's own expiry).
148+
`setup`, `status`, and `doctor` report whether a team is attached, reading
149+
`claimed_at`/`team_id` from `.zitadel/secret` (no platform call). `status`
150+
carries `data.project.claim` as `{"kind": "detached"}` or
151+
`{"kind": "attached", "team_id", "claimed_at"}`, and `doctor` reports a
152+
`claim` check. A project with no team is only ever a **warning**, never a
153+
failure — it works exactly like one with a team, so `doctor` still exits 0
154+
and `--fix` deliberately does nothing (a claim needs a human in a browser).
155+
All three stay silent about teams when the project's `server` in
156+
`zitadel.json` is local or self-hosted, where there is nothing to attach.
148157
- `status` — summarize the local runtime and project state.
149158
- `eject` (alias `uninstall`) — remove managed files and local Zitadel state;
150159
requires `--force` when non-interactive.

0 commit comments

Comments
 (0)