add-team-source
Wraps bin/add-team-source.sh. Updates
~/.claude/nyann/config.json to declare a new team-profile source.
Idempotent — passing the same --name updates the entry in place.
1. Collect inputs
--name <id>— required. Short slug,^[a-z0-9][a-z0-9-]*$. Will also become the namespace prefix for team profiles (e.g.platform-team/basewhen name isplatform-team). When the user gives a name with spaces or caps, propose a slug and confirm.--url <git-url>— required. Any URL git can clone (https://, git@, file:// for testing).--ref <branch-or-tag>— defaultmain. Override when the team pins a specific branch or tag.--interval <hours>— default24. How oftensync-team-profileswill re-pull from this source without--force. Decrease only when the user says "we update these often" or similar.
2. Pre-flight
- Config path defaults to
~/.claude/nyann/config.json. Override only when the user explicitly names a different user root. - The backend upserts on
--namecollision. Warn the user if they're replacing an existing source with a different URL — that's usually unintentional. Read current config first if unsure.
3. Invoke
bin/add-team-source.sh \
--name <id> \
--url <git-url> \
[--ref <branch>] \
[--interval <hours>] \
[--user-root <dir>]
Exit 0 on success; config path is logged to stderr.
4. Report back
- Name, URL, ref, interval.
- Tell the user "Run
/nyann:sync-team-profiles(or ask 'sync my team profiles') to actually pull them".add-team-sourceonly registers — the pull is a separate operation on purpose (no surprise network calls here).
When to hand off
- "Now pull them" →
sync-team-profilesskill. - "Apply a team profile to this repo" →
bootstrap-projectwith the namespaced profile name (e.g.platform-team/base). - "Show what the team profile does" →
inspect-profilewith the namespaced name.