> ## Documentation Index
> Fetch the complete documentation index at: https://docs.selftune.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# selftune team

> Automate authoritative Team Skill Set distribution

`selftune team` is the noninteractive CLI for the same Skill Set releases,
assignments, contributions, and lifecycle state shown in SelfTune Desktop and
Cloud. It does not use the legacy compatible Registry state model.

Set the hosted endpoint and provide credentials without putting them in shell
arguments:

```bash theme={null}
export SELFTUNE_CLOUD_URL="https://your-deployment.convex.site"
export SELFTUNE_SERVICE_TOKEN="..."
selftune team status --release-id release_123 --json
```

For a one-shot secret, pipe it to `--token-stdin`. Contribution submission uses
the linked Desktop credential from `SELFTUNE_DEVICE_TOKEN` or stdin because the
server must bind the proposal to the exact recipient assignment. Tokens are
never accepted as command arguments or printed.

## Commands

```bash theme={null}
selftune team publish --skill-set-id support --envelope release.json \
  --revision-sha256 <sha256> --envelope-sha256 <sha256> --yes --json
selftune team assign --request-id assign-123 --release-id release_123 \
  --member-id member_123 --device-id device_123 --update-policy notify --yes --json
selftune team status --release-id release_123 --json
selftune team contribute --request-id proposal-123 --skill-set-id support \
  --base-release-id release_123 --envelope proposal.json \
  --revision-sha256 <sha256> --envelope-sha256 <sha256> --title "Fix" --yes --json
selftune team promote --release-id release_123 --revision-sha256 <reviewed-sha256> \
  --envelope-sha256 <reviewed-sha256> --yes --json
selftune team deprecate --release-id release_123 --reason "Superseded" --yes --json
selftune team rollback --request-id rollback-123 --release-id release_122 \
  --member-id member_123 --device-id device_123 --reason "Regression" --yes --json
```

All state-changing commands refuse to run without `--yes`. Exit code `0` means
success, `1` an operational failure, `2` invalid/missing arguments or missing
confirmation, and `3` rejected credentials. `--json` emits one JSON value to
standard output; diagnostics go to standard error.
