mirror of
https://github.com/boshu2/agentops.git
synced 2026-09-14 15:08:13 +08:00
feat(skills): account-rotation — unified host-routed rotation skill; retire caam skill
Replaces the caam skill (which mis-advised on macOS). One symptom-triggered skill routes by host: macOS+Claude -> claude-acct (Keychain swap); Codex/Gemini or any Linux/WSL -> caam (file swap). caam CLI stays; it self-documents via --help. Includes codex parity. heal-skill --check --strict: clean.
This commit is contained in:
@@ -70,6 +70,7 @@ and [CDLC](https://github.com/boshu2/agentops/blob/main/docs/cdlc.md) for the ar
|
||||
|
||||
### supporting
|
||||
|
||||
- `account-rotation` — Use when you hit a usage/rate limit on a coding-agent subscription and need to switch accounts, or to spread swarm lanes across accounts. Routes by host+agent: macOS+Claude → claude-acct (Keychain swap); macOS+Codex/Gemini or any Linux/WSL → caam (file swap). One symptom, the right tool per host.
|
||||
- `agent-mail` — Use when coordinating agents with Agent Mail locks, inboxes, threads, and conflict-prevention handoffs.
|
||||
- `agent-native` — Make an out-of-session agent AgentOps-native with skills, the ao CLI, and CI instead of hooks.
|
||||
- `agy-headless-evidence` — Run AGY headlessly via scheduled ticks or `agy -p`, capture agentapi JSONL evidence, and validate automated AGY loops or event streams.
|
||||
@@ -81,7 +82,6 @@ and [CDLC](https://github.com/boshu2/agentops/blob/main/docs/cdlc.md) for the ar
|
||||
- `beads-br` — Local-first issue tracker (beads_rust) for AI agents. Use when tracking tasks, managing dependencies, finding ready work, or syncing issues to git via JSONL.
|
||||
- `beads-bv` — Graph-aware task triage with bv and br. Use when prioritizing work, finding bottlenecks, tracking dependencies, or managing local issues across projects.
|
||||
- `beads-workflow` — Use when converting markdown plans into br beads with dependencies for implementation or swarm execution.
|
||||
- `caam` — Use when switching AI coding CLI accounts quickly to recover from subscription rate limits or OAuth friction.
|
||||
- `casr` — Resume sessions across Claude Code, Codex, Gemini, and other providers when switching agents or migrating active chat history.
|
||||
- `cass` — Mine past agent sessions for working prompts, decisions, and patterns. Use when "what did I ask?", "find that prompt", session archaeology, or agent history.
|
||||
- `cass-memory` — Use when starting non-trivial work, mining lessons, or preventing repeated mistakes with cm procedural memory.
|
||||
|
||||
@@ -35,13 +35,13 @@ dispositions:
|
||||
- skill: brainstorm
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: domain
|
||||
disposition: update
|
||||
rationale: "Intent-shaping skill; should emit BDD-ready language"
|
||||
disposition: merge-review
|
||||
rationale: "Intent-shaping; fold into discovery"
|
||||
- skill: bug-hunt
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: domain
|
||||
disposition: update
|
||||
rationale: "Validation generator; needs acceptance examples and result contract"
|
||||
disposition: merge-review
|
||||
rationale: "Bug-finding generator; fold into review"
|
||||
- skill: compile
|
||||
domain: "BC1 Corpus"
|
||||
hexagonal_role: supporting
|
||||
@@ -50,8 +50,8 @@ dispositions:
|
||||
- skill: complexity
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: domain
|
||||
disposition: update
|
||||
rationale: "Generator for refactor work; add self-test and threshold evidence"
|
||||
disposition: merge-review
|
||||
rationale: "Refactor-hotspot finder; fold into refactor"
|
||||
- skill: converter
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: generic
|
||||
@@ -65,8 +65,8 @@ dispositions:
|
||||
- skill: burndown
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: domain
|
||||
disposition: keep
|
||||
rationale: "Bounded epic-completion loop; terminating counterpart to evolve (finite target → all-merged → STOP)"
|
||||
disposition: merge-review
|
||||
rationale: "Bounded epic loop; fold into crank"
|
||||
- skill: crank
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: domain
|
||||
@@ -80,13 +80,13 @@ dispositions:
|
||||
- skill: deps
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: driven-adapter
|
||||
disposition: update
|
||||
rationale: "Dependency risk generator; add threshold and no-network fallback tests"
|
||||
disposition: merge-review
|
||||
rationale: "Dependency risk audit; fold into security"
|
||||
- skill: design
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: domain
|
||||
disposition: update
|
||||
rationale: "Product-fit pre-discovery gate; should produce BDD-ready intent"
|
||||
disposition: merge-review
|
||||
rationale: "Product-fit gate; fold into discovery"
|
||||
- skill: discovery
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: domain
|
||||
@@ -145,8 +145,8 @@ dispositions:
|
||||
- skill: operating-loop-workflow
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "Installs + invokes the operating-loop Workflow so plugin users get the seven-move loop"
|
||||
disposition: merge-review
|
||||
rationale: "Loop workflow installer; fold into rpi"
|
||||
- skill: perf
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: domain
|
||||
@@ -165,8 +165,8 @@ dispositions:
|
||||
- skill: pr-implement
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: update
|
||||
rationale: "GitHub PR implementation adapter; map to loop slices"
|
||||
disposition: merge-review
|
||||
rationale: "Scoped PR impl; fold into implement"
|
||||
- skill: pr-prep
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
@@ -175,8 +175,8 @@ dispositions:
|
||||
- skill: pr-research
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driven-adapter
|
||||
disposition: update
|
||||
rationale: "Upstream repo research adapter; add clean source/citation self-test"
|
||||
disposition: merge-review
|
||||
rationale: "Upstream research; fold into pr-prep"
|
||||
- skill: pre-mortem
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: domain
|
||||
@@ -195,13 +195,13 @@ dispositions:
|
||||
- skill: quickstart
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: update
|
||||
rationale: "Operator routing entrypoint; align to current 3.0 first-value path"
|
||||
disposition: merge-review
|
||||
rationale: "Next-action shower; fold into status"
|
||||
- skill: ratchet
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: domain
|
||||
disposition: update
|
||||
rationale: "Loop evidence ratchet; connect to cycle trace contract"
|
||||
disposition: merge-review
|
||||
rationale: "Brownian-ratchet gates; fold into flywheel"
|
||||
- skill: recover
|
||||
domain: "BC1 Corpus"
|
||||
hexagonal_role: driving-adapter
|
||||
@@ -230,8 +230,8 @@ dispositions:
|
||||
- skill: reverse-engineer-rpi
|
||||
domain: "BC1 Corpus"
|
||||
hexagonal_role: supporting
|
||||
disposition: update
|
||||
rationale: "External product-spec extraction; ensure clean-room rules stay explicit"
|
||||
disposition: cut-review
|
||||
rationale: "Niche meta tool; rarely fires"
|
||||
- skill: review
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: driving-adapter
|
||||
@@ -250,8 +250,8 @@ dispositions:
|
||||
- skill: scenario
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: supporting
|
||||
disposition: update
|
||||
rationale: "Holdout scenario manager; important for behavioral evals"
|
||||
disposition: merge-review
|
||||
rationale: "Holdout scenarios; fold into eval-outcomes"
|
||||
- skill: scope
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driven-adapter
|
||||
@@ -260,8 +260,8 @@ dispositions:
|
||||
- skill: session-bootstrap
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "Universal init prompt; the fungibility contract for any-agent spawn (soc-vuu6.25)"
|
||||
disposition: merge-review
|
||||
rationale: "Init prompt; fold into inject"
|
||||
- skill: security
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: driven-adapter
|
||||
@@ -275,8 +275,8 @@ dispositions:
|
||||
- skill: ship-loop
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "Bot-paired internal-ship PR cycle; distinct from pr-* contribute family"
|
||||
disposition: merge-review
|
||||
rationale: "Fast-lane ship; fold into crank"
|
||||
- skill: skill-auditor
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: supporting
|
||||
@@ -320,13 +320,13 @@ dispositions:
|
||||
- skill: trace
|
||||
domain: "BC1 Corpus"
|
||||
hexagonal_role: supporting
|
||||
disposition: update
|
||||
rationale: "Decision trace builder; align to provenance and cycle trace"
|
||||
disposition: merge-review
|
||||
rationale: "Decision tracing; fold into recover"
|
||||
- skill: using-agentops
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: generic
|
||||
disposition: update
|
||||
rationale: "Operator education; align to 3.0 first-value path"
|
||||
disposition: merge-review
|
||||
rationale: "Workflow explainer; fold into inject"
|
||||
- skill: validate
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: driving-adapter
|
||||
@@ -335,8 +335,8 @@ dispositions:
|
||||
- skill: vibe
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: domain
|
||||
disposition: update
|
||||
rationale: "Code-readiness validator; add self-test and tighten result contract"
|
||||
disposition: merge-review
|
||||
rationale: "Quick-readiness check; fold into validate as a --quick mode"
|
||||
- skill: eval-outcomes
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: supporting
|
||||
@@ -371,13 +371,13 @@ dispositions:
|
||||
- skill: agy-rules-workflows
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into agy-native"
|
||||
- skill: bead-completion-audit
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Closed-bead evidence audit; fold into validate"
|
||||
- skill: beads-br
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: supporting
|
||||
@@ -393,16 +393,16 @@ dispositions:
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
- skill: caam
|
||||
- skill: account-rotation
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
rationale: "Unified host-routed account rotation (macOS+Claude->claude-acct Keychain swap; else->caam file swap); supersedes the retired caam skill."
|
||||
- skill: casr
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Session resumer; fold into cass"
|
||||
- skill: cass
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
@@ -411,13 +411,13 @@ dispositions:
|
||||
- skill: cass-memory
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Procedural memory; fold into cass"
|
||||
- skill: cc-cron-ticks
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into cc-hooks"
|
||||
- skill: cc-hooks
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
@@ -426,18 +426,18 @@ dispositions:
|
||||
- skill: cc-loop-driver
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into cc-hooks"
|
||||
- skill: cc-subagents
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into cc-hooks"
|
||||
- skill: cc-worktree-isolation
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into cc-hooks"
|
||||
- skill: codex-exec
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
@@ -446,18 +446,18 @@ dispositions:
|
||||
- skill: codex-goals
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driving-adapter
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into codex-exec"
|
||||
- skill: codex-mcp-plugins
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driven-adapter
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into codex-exec"
|
||||
- skill: codex-sandbox-evidence
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into codex-exec"
|
||||
- skill: dcg
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
@@ -471,28 +471,28 @@ dispositions:
|
||||
- skill: agy-mcp-plugins
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: driven-adapter
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into agy-native"
|
||||
- skill: agy-project-worktree-permissions
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "Coverage-gap skill proving AGY project/worktree isolation invariants before the image joins quorum; clean-room AgentOps-owned."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into agy-native"
|
||||
- skill: agy-sidecar-scheduled-tick
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "Coverage-gap skill for recurring AGY loop ticks via Antigravity sidecar + agentapi evidence; clean-room AgentOps-owned."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into agy-native"
|
||||
- skill: cross-vendor-trust-gate
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: domain
|
||||
disposition: keep
|
||||
rationale: "Coverage-gap skill operating the skill-factory final trust gate (cross-vendor parity); shared kernel with heal-skill."
|
||||
disposition: merge-review
|
||||
rationale: "Cross-family floor gate; fold into council/validate"
|
||||
- skill: multi-model-triangulation
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Cross-model second opinion; fold into council --mixed"
|
||||
- skill: ntm
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
@@ -501,23 +501,23 @@ dispositions:
|
||||
- skill: ntm-browser-test-coordination
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into ntm"
|
||||
- skill: ntm-review-worker-orchestration
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Fold into ntm"
|
||||
- skill: operating-loop-skill
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: domain
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "The loop; fold into rpi"
|
||||
- skill: planning-workflow
|
||||
domain: "BC3 Loop"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "Markdown planning; fold into plan"
|
||||
- skill: rch
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
@@ -531,8 +531,8 @@ dispositions:
|
||||
- skill: ubs
|
||||
domain: "BC5 Runtime"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability."
|
||||
disposition: merge-review
|
||||
rationale: "UBS bug/security review; fold into review"
|
||||
- skill: vibing-with-ntm
|
||||
domain: "BC4 Factory"
|
||||
hexagonal_role: supporting
|
||||
@@ -541,5 +541,5 @@ dispositions:
|
||||
- skill: codebase-audit
|
||||
domain: "BC2 Validation"
|
||||
hexagonal_role: supporting
|
||||
disposition: keep
|
||||
rationale: "Canonicalized from ~/.claude/skills ghost dir (cp-801l); domain-parameterized audit skill, AgentOps-owned."
|
||||
disposition: merge-review
|
||||
rationale: "Domain-parameterized audit; fold into review report-modes"
|
||||
|
||||
@@ -59,50 +59,50 @@ Disposition meanings:
|
||||
<!-- BEGIN:full-skill-map -->
|
||||
| Skill | Domain | Hex role | First disposition | Rationale |
|
||||
|---|---|---|---|---|
|
||||
| `account-rotation` | BC5 Runtime | supporting | keep | Unified host-routed account rotation (macOS+Claude->claude-acct Keychain swap; else->caam file swap); supersedes the retired caam skill.. |
|
||||
| `acfs` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `agent-mail` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `agent-native` | BC5 Runtime | supporting | keep | Hookless reframe: makes out-of-session agents (Managed/SDK/sandbox) AgentOps-native via skills + ao CLI + CI; extends standards+converter, never a hook revival. |
|
||||
| `agy-headless-evidence` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `agy-mcp-plugins` | BC5 Runtime | driven-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `agy-mcp-plugins` | BC5 Runtime | driven-adapter | merge-review | Fold into agy-native. |
|
||||
| `agy-native` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `agy-project-worktree-permissions` | BC5 Runtime | supporting | keep | Coverage-gap skill proving AGY project/worktree isolation invariants before the image joins quorum; clean-room AgentOps-owned.. |
|
||||
| `agy-rules-workflows` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `agy-sidecar-scheduled-tick` | BC5 Runtime | supporting | keep | Coverage-gap skill for recurring AGY loop ticks via Antigravity sidecar + agentapi evidence; clean-room AgentOps-owned.. |
|
||||
| `agy-project-worktree-permissions` | BC5 Runtime | supporting | merge-review | Fold into agy-native. |
|
||||
| `agy-rules-workflows` | BC5 Runtime | driving-adapter | merge-review | Fold into agy-native. |
|
||||
| `agy-sidecar-scheduled-tick` | BC5 Runtime | supporting | merge-review | Fold into agy-native. |
|
||||
| `autodev` | BC3 Loop | supporting | refactor | Must compose with PROGRAM.md and RPI as one vertical-slice executor. |
|
||||
| `automation-shape-routing` | BC4 Factory | supporting | keep | Front-door router: decides Workflow vs NTM swarm vs plain skill, hands off to the right builder. |
|
||||
| `bead-completion-audit` | BC2 Validation | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `bead-completion-audit` | BC2 Validation | supporting | merge-review | Closed-bead evidence audit; fold into validate. |
|
||||
| `beads` | BC3 Loop | driven-adapter | update | Tracker adapter is core; add BDD/slice acceptance self-test. |
|
||||
| `beads-br` | BC3 Loop | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `beads-bv` | BC3 Loop | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `beads-workflow` | BC3 Loop | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `bootstrap` | BC4 Factory | driving-adapter | update | First-run factory entrypoint; needs current 3.0/domain packet shape. |
|
||||
| `brainstorm` | BC3 Loop | domain | update | Intent-shaping skill; should emit BDD-ready language. |
|
||||
| `bug-hunt` | BC2 Validation | domain | update | Validation generator; needs acceptance examples and result contract. |
|
||||
| `burndown` | BC3 Loop | domain | keep | Bounded epic-completion loop; terminating counterpart to evolve (finite target → all-merged → STOP). |
|
||||
| `caam` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `casr` | BC4 Factory | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `brainstorm` | BC3 Loop | domain | merge-review | Intent-shaping; fold into discovery. |
|
||||
| `bug-hunt` | BC2 Validation | domain | merge-review | Bug-finding generator; fold into review. |
|
||||
| `burndown` | BC3 Loop | domain | merge-review | Bounded epic loop; fold into crank. |
|
||||
| `casr` | BC4 Factory | supporting | merge-review | Session resumer; fold into cass. |
|
||||
| `cass` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `cass-memory` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `cc-cron-ticks` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `cass-memory` | BC5 Runtime | supporting | merge-review | Procedural memory; fold into cass. |
|
||||
| `cc-cron-ticks` | BC5 Runtime | driving-adapter | merge-review | Fold into cc-hooks. |
|
||||
| `cc-hooks` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `cc-loop-driver` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `cc-subagents` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `cc-worktree-isolation` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `codebase-audit` | BC2 Validation | supporting | keep | Canonicalized from ~/.claude/skills ghost dir (cp-801l); domain-parameterized audit skill, AgentOps-owned.. |
|
||||
| `cc-loop-driver` | BC5 Runtime | driving-adapter | merge-review | Fold into cc-hooks. |
|
||||
| `cc-subagents` | BC5 Runtime | supporting | merge-review | Fold into cc-hooks. |
|
||||
| `cc-worktree-isolation` | BC5 Runtime | supporting | merge-review | Fold into cc-hooks. |
|
||||
| `codebase-audit` | BC2 Validation | supporting | merge-review | Domain-parameterized audit; fold into review report-modes. |
|
||||
| `codex-exec` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `codex-goals` | BC5 Runtime | driving-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `codex-mcp-plugins` | BC5 Runtime | driven-adapter | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `codex-sandbox-evidence` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `codex-goals` | BC5 Runtime | driving-adapter | merge-review | Fold into codex-exec. |
|
||||
| `codex-mcp-plugins` | BC5 Runtime | driven-adapter | merge-review | Fold into codex-exec. |
|
||||
| `codex-sandbox-evidence` | BC5 Runtime | supporting | merge-review | Fold into codex-exec. |
|
||||
| `compile` | BC1 Corpus | supporting | refactor | Corpus compiler is core; align read/write flows to Corpus ports. |
|
||||
| `complexity` | BC2 Validation | domain | update | Generator for refactor work; add self-test and threshold evidence. |
|
||||
| `complexity` | BC2 Validation | domain | merge-review | Refactor-hotspot finder; fold into refactor. |
|
||||
| `converter` | BC4 Factory | generic | keep | Cross-runtime packaging adapter (Codex/Cursor twins); skill-builder consumes it — live producer→consumer edge (resolved 2026-05-24). |
|
||||
| `council` | BC2 Validation | domain | update | Core judgment gate; strengthen scenario and verdict self-test. |
|
||||
| `crank` | BC3 Loop | domain | refactor | Wave executor; align with vertical-slice and conflict-free wave contract. |
|
||||
| `cross-vendor-trust-gate` | BC4 Factory | domain | keep | Coverage-gap skill operating the skill-factory final trust gate (cross-vendor parity); shared kernel with heal-skill.. |
|
||||
| `cross-vendor-trust-gate` | BC4 Factory | domain | merge-review | Cross-family floor gate; fold into council/validate. |
|
||||
| `curate` | BC1 Corpus | supporting | keep | Designed-future canonical unified miner (m6v5.D Phase 1, epic soc-cp7pv); not redundant cruft — epic GO/REVERT is a separate decision (resolved KEEP 2026-05-24). |
|
||||
| `dcg` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `deps` | BC2 Validation | driven-adapter | update | Dependency risk generator; add threshold and no-network fallback tests. |
|
||||
| `design` | BC3 Loop | domain | update | Product-fit pre-discovery gate; should produce BDD-ready intent. |
|
||||
| `deps` | BC2 Validation | driven-adapter | merge-review | Dependency risk audit; fold into security. |
|
||||
| `design` | BC3 Loop | domain | merge-review | Product-fit gate; fold into discovery. |
|
||||
| `discovery` | BC3 Loop | domain | update | Creates execution packets; add explicit loop-shape SELF-TEST. |
|
||||
| `doc` | BC4 Factory | supporting | update | Documentation factory adapter; keep tied to doc-release gates. |
|
||||
| `domain` | BC4 Factory | domain | keep | Ubiquitous-language kernel; central to DDD. |
|
||||
@@ -115,53 +115,53 @@ Disposition meanings:
|
||||
| `heal-skill` | BC4 Factory | supporting | update | Skill hygiene gate; should consume the new domain map. |
|
||||
| `implement` | BC3 Loop | driving-adapter | update | Slice executor; enforce first-failing-test language. |
|
||||
| `inject` | BC1 Corpus | driving-adapter | refactor | Context injection should be explicit CorpusReader adapter use. |
|
||||
| `multi-model-triangulation` | BC4 Factory | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `multi-model-triangulation` | BC4 Factory | supporting | merge-review | Cross-model second opinion; fold into council --mixed. |
|
||||
| `ntm` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `ntm-browser-test-coordination` | BC2 Validation | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `ntm-review-worker-orchestration` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `operating-loop-skill` | BC5 Runtime | domain | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `operating-loop-workflow` | BC3 Loop | driving-adapter | keep | Installs + invokes the operating-loop Workflow so plugin users get the seven-move loop. |
|
||||
| `ntm-browser-test-coordination` | BC2 Validation | supporting | merge-review | Fold into ntm. |
|
||||
| `ntm-review-worker-orchestration` | BC5 Runtime | supporting | merge-review | Fold into ntm. |
|
||||
| `operating-loop-skill` | BC5 Runtime | domain | merge-review | The loop; fold into rpi. |
|
||||
| `operating-loop-workflow` | BC3 Loop | driving-adapter | merge-review | Loop workflow installer; fold into rpi. |
|
||||
| `perf` | BC2 Validation | domain | update | Performance generator; add thresholds and proof examples. |
|
||||
| `plan` | BC3 Loop | domain | update | Must output vertical slices and wave-validity checks. |
|
||||
| `planning-workflow` | BC3 Loop | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `planning-workflow` | BC3 Loop | supporting | merge-review | Markdown planning; fold into plan. |
|
||||
| `post-mortem` | BC3 Loop | domain | update | Loop closeout; connect to next-work and ratchet evidence. |
|
||||
| `pr-implement` | BC5 Runtime | driving-adapter | update | GitHub PR implementation adapter; map to loop slices. |
|
||||
| `pr-implement` | BC5 Runtime | driving-adapter | merge-review | Scoped PR impl; fold into implement. |
|
||||
| `pr-prep` | BC5 Runtime | driving-adapter | update | PR publication adapter; align to evidence and release discipline. |
|
||||
| `pr-research` | BC5 Runtime | driven-adapter | update | Upstream repo research adapter; add clean source/citation self-test. |
|
||||
| `pr-research` | BC5 Runtime | driven-adapter | merge-review | Upstream research; fold into pr-prep. |
|
||||
| `pre-mortem` | BC2 Validation | domain | update | Plan risk gate; add scenario/verdict self-test. |
|
||||
| `product` | BC3 Loop | domain | keep | Product intent source; important for loop work selection. |
|
||||
| `push` | BC5 Runtime | driving-adapter | update | Git adapter; add branch/worktree disposition self-test. |
|
||||
| `quickstart` | BC3 Loop | driving-adapter | update | Operator routing entrypoint; align to current 3.0 first-value path. |
|
||||
| `ratchet` | BC3 Loop | domain | update | Loop evidence ratchet; connect to cycle trace contract. |
|
||||
| `quickstart` | BC3 Loop | driving-adapter | merge-review | Next-action shower; fold into status. |
|
||||
| `ratchet` | BC3 Loop | domain | merge-review | Brownian-ratchet gates; fold into flywheel. |
|
||||
| `rch` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `recover` | BC1 Corpus | driving-adapter | refactor | Session recovery is valuable but currently structurally heavy. |
|
||||
| `red-team` | BC2 Validation | supporting | update | Probe generator; add severity/evidence contract. |
|
||||
| `refactor` | BC2 Validation | supporting | update | Refactor generator; align with complexity thresholds and TDD proof. |
|
||||
| `release` | BC2 Validation | supporting | update | Release gate driver; keep tied to local CI and evidence export. |
|
||||
| `research` | BC1 Corpus | driving-adapter | update | Knowledge acquisition entrypoint; add source/citation self-test. |
|
||||
| `reverse-engineer-rpi` | BC1 Corpus | supporting | update | External product-spec extraction; ensure clean-room rules stay explicit. |
|
||||
| `reverse-engineer-rpi` | BC1 Corpus | supporting | cut-review | Niche meta tool; rarely fires. |
|
||||
| `review` | BC2 Validation | driving-adapter | update | Human-facing review gate; align to validator output contract. |
|
||||
| `rpi` | BC3 Loop | supporting | refactor | Lifecycle orchestrator; should consume BDD intent and preserve objective spine. |
|
||||
| `sbh` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `scaffold` | BC4 Factory | supporting | update | Code/artifact scaffolder; add non-goal and validation examples. |
|
||||
| `scenario` | BC2 Validation | supporting | update | Holdout scenario manager; important for behavioral evals. |
|
||||
| `scenario` | BC2 Validation | supporting | merge-review | Holdout scenarios; fold into eval-outcomes. |
|
||||
| `scope` | BC5 Runtime | driven-adapter | keep | Runtime filesystem gate; hard boundary skill. |
|
||||
| `security` | BC2 Validation | driven-adapter | keep | Canonical security skill: continuous release-gate driver (security-gate.sh) PLUS the composable primitive library (security_suite.py / prompt_redteam.py) collapsed in from security-suite (cp-qqq, 2026-06-07). |
|
||||
| `session-bootstrap` | BC5 Runtime | driving-adapter | keep | Universal init prompt; the fungibility contract for any-agent spawn (soc-vuu6.25). |
|
||||
| `session-bootstrap` | BC5 Runtime | driving-adapter | merge-review | Init prompt; fold into inject. |
|
||||
| `shared` | BC4 Factory | domain | keep | Shared contracts; avoid broad edits. |
|
||||
| `ship-loop` | BC5 Runtime | driving-adapter | keep | Bot-paired internal-ship PR cycle; distinct from pr-* contribute family. |
|
||||
| `ship-loop` | BC5 Runtime | driving-adapter | merge-review | Fast-lane ship; fold into crank. |
|
||||
| `skill-auditor` | BC4 Factory | supporting | update | Audit role should consume new quality/domain rubrics. |
|
||||
| `skill-builder` | BC4 Factory | supporting | update | Builder should scaffold SELF-TEST and domain metadata by default. |
|
||||
| `standards` | BC4 Factory | domain | keep | Current pilot upgraded with SELF-TEST; continue incremental patches. |
|
||||
| `status` | BC3 Loop | driving-adapter | update | Operator state surface; should show loop/domain/evidence status. |
|
||||
| `swarm` | BC5 Runtime | supporting | update | Multi-agent runtime adapter; align with conflict-free wave rules. |
|
||||
| `test` | BC2 Validation | supporting | update | Test generator; central to first-failing-test loop. |
|
||||
| `trace` | BC1 Corpus | supporting | update | Decision trace builder; align to provenance and cycle trace. |
|
||||
| `ubs` | BC5 Runtime | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `using-agentops` | BC4 Factory | generic | update | Operator education; align to 3.0 first-value path. |
|
||||
| `trace` | BC1 Corpus | supporting | merge-review | Decision tracing; fold into recover. |
|
||||
| `ubs` | BC5 Runtime | supporting | merge-review | UBS bug/security review; fold into review. |
|
||||
| `using-agentops` | BC4 Factory | generic | merge-review | Workflow explainer; fold into inject. |
|
||||
| `using-atm` | BC4 Factory | supporting | keep | Shippable AgentOps-scoped guide for the ATM leg of the out-of-session substrate (ATM+Agent Mail+managed-agents): spawn agent panes that run the /rpi and /evolve skills over a bead queue. Replaces the dangling external ntm/vibing-with-ntm pointers in automation-shape-routing with an owned, skills-as-runtime skill.. |
|
||||
| `validate` | BC2 Validation | driving-adapter | keep | Designed-future canonical unified validator (m6v5.D Phase 1, epic soc-cp7pv); not redundant cruft — epic GO/REVERT is a separate decision (resolved KEEP 2026-05-24). |
|
||||
| `vibe` | BC2 Validation | domain | update | Code-readiness validator; add self-test and tighten result contract. |
|
||||
| `vibe` | BC2 Validation | domain | merge-review | Quick-readiness check; fold into validate as a --quick mode. |
|
||||
| `vibing-with-ntm` | BC4 Factory | supporting | keep | New factory-built skill from the four-vendor corpus expansion; keep as clean-room AgentOps-owned capability.. |
|
||||
| `workflow-builder` | BC4 Factory | supporting | keep | Scaffolds Claude Workflow scripts (composite capability); counterpart to skill-builder. |
|
||||
<!-- END:full-skill-map -->
|
||||
|
||||
@@ -1,241 +0,0 @@
|
||||
---
|
||||
name: caam
|
||||
user-invocable: false
|
||||
skill_api_version: 1
|
||||
hexagonal_role: supporting
|
||||
metadata:
|
||||
tier: execution
|
||||
description: "Use when switching AI coding CLI accounts quickly to recover from subscription rate limits or OAuth friction."
|
||||
practices:
|
||||
- pragmatic-programmer
|
||||
---
|
||||
<!-- TOC: Quick Start | THE EXACT PROMPT | Smart Rotation | TUI | Isolated Profiles | References -->
|
||||
|
||||
# CAAM — Coding Agent Account Manager
|
||||
|
||||
> **Core Problem:** You hit rate limits on your $200/mo Claude Max subscription. Browser OAuth takes 30-60 seconds. CAAM swaps accounts in ~50ms.
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Install
|
||||
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/coding_agent_account_manager/main/install.sh?$(date +%s)" | bash
|
||||
|
||||
# Backup current account
|
||||
caam backup claude alice@gmail.com
|
||||
|
||||
# Clear, login with another account, backup that too
|
||||
caam clear claude
|
||||
claude # /login with bob@gmail.com
|
||||
caam backup claude bob@gmail.com
|
||||
|
||||
# Switch instantly forever
|
||||
caam activate claude alice@gmail.com # ~50ms
|
||||
caam activate claude bob@gmail.com # ~50ms
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## THE EXACT PROMPT — Daily Commands
|
||||
|
||||
### Check Status
|
||||
|
||||
```bash
|
||||
caam status
|
||||
```
|
||||
|
||||
Shows active profile for each tool based on content hash matching.
|
||||
|
||||
### Instant Switch
|
||||
|
||||
```bash
|
||||
caam activate claude bob@gmail.com
|
||||
```
|
||||
|
||||
Restores auth files from vault. ~50ms, no browser.
|
||||
|
||||
### Smart Auto-Switch
|
||||
|
||||
```bash
|
||||
caam activate claude --auto
|
||||
```
|
||||
|
||||
Rotation algorithm picks best profile based on health, recency, cooldowns.
|
||||
|
||||
### Mark Rate Limited
|
||||
|
||||
```bash
|
||||
caam cooldown set claude
|
||||
```
|
||||
|
||||
Marks current profile for 60min. Rotation skips it.
|
||||
|
||||
### Zero-Friction Aliases
|
||||
|
||||
```bash
|
||||
# Add to .bashrc/.zshrc
|
||||
alias claude='caam run claude --'
|
||||
alias codex='caam run codex --'
|
||||
alias gemini='caam run gemini --'
|
||||
|
||||
# Now these auto-failover on rate limits
|
||||
claude "explain this code"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How It Works
|
||||
|
||||
Each AI CLI stores OAuth tokens in plain files. CAAM backs them up and restores them:
|
||||
|
||||
```
|
||||
~/.claude.json ←→ ~/.local/share/caam/vault/claude/alice@gmail.com/
|
||||
~/.codex/auth.json ←→ ~/.local/share/caam/vault/codex/work@company.com/
|
||||
```
|
||||
|
||||
**That's it.** No daemons, no databases, no network calls. Just `cp` with extra steps.
|
||||
|
||||
---
|
||||
|
||||
## Supported Tools
|
||||
|
||||
| Tool | Subscription | Auth Files |
|
||||
|------|--------------|------------|
|
||||
| **Claude Code** | Claude Max ($200/mo) | `~/.claude.json`, `~/.config/claude-code/auth.json` |
|
||||
| **Codex CLI** | GPT Pro ($200/mo) | `~/.codex/auth.json` |
|
||||
| **Gemini CLI** | Gemini Ultra (~$275/mo) | `~/.gemini/settings.json`, `~/.gemini/oauth_credentials.json` |
|
||||
|
||||
---
|
||||
|
||||
## Smart Rotation
|
||||
|
||||
When you have multiple accounts, rotation picks the best one:
|
||||
|
||||
```bash
|
||||
# Preview what rotation would select
|
||||
caam next claude
|
||||
|
||||
# Let it pick automatically
|
||||
caam activate claude --auto
|
||||
```
|
||||
|
||||
### Health Indicators
|
||||
|
||||
| Icon | Status | Meaning |
|
||||
|------|--------|---------|
|
||||
| 🟢 | Healthy | Token valid >1hr, no recent errors |
|
||||
| 🟡 | Warning | Token expiring <1hr, minor issues |
|
||||
| 🔴 | Critical | Token expired, repeated errors |
|
||||
| ⚪ | Unknown | No health data yet |
|
||||
|
||||
### Rotation Algorithms
|
||||
|
||||
| Algorithm | Description |
|
||||
|-----------|-------------|
|
||||
| `smart` (default) | Cooldown + health + recency + jitter |
|
||||
| `round_robin` | Sequential, skipping cooldowns |
|
||||
| `random` | Random among non-cooldown |
|
||||
|
||||
---
|
||||
|
||||
## Cooldown Tracking
|
||||
|
||||
```bash
|
||||
# Mark current profile (60min default)
|
||||
caam cooldown set claude
|
||||
|
||||
# Specify profile and duration
|
||||
caam cooldown set claude/work@company.com --minutes 120
|
||||
|
||||
# View active cooldowns
|
||||
caam cooldown list
|
||||
|
||||
# Clear early
|
||||
caam cooldown clear claude/work@company.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## TUI Dashboard
|
||||
|
||||
```bash
|
||||
caam tui
|
||||
```
|
||||
|
||||
### Keybindings
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `↑/↓` | Navigate profiles |
|
||||
| `Enter` | Activate selected |
|
||||
| `p` | Set project association |
|
||||
| `c` | Mark/clear cooldown |
|
||||
| `r` | Refresh |
|
||||
| `q` | Quit |
|
||||
|
||||
---
|
||||
|
||||
## Project Associations
|
||||
|
||||
Link profiles to directories:
|
||||
|
||||
```bash
|
||||
cd ~/projects/work-app
|
||||
caam project set claude work@company.com
|
||||
|
||||
# Now in this directory:
|
||||
caam activate claude # Auto-uses work@company.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Command Reference
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `caam backup <tool> <email>` | Save current auth to vault |
|
||||
| `caam activate <tool> <email>` | Restore auth from vault |
|
||||
| `caam activate <tool> --auto` | Auto-select best profile |
|
||||
| `caam status [tool]` | Show active profiles |
|
||||
| `caam ls [tool]` | List saved profiles |
|
||||
| `caam clear <tool>` | Remove auth files (logout) |
|
||||
| `caam run <tool> [-- args]` | Wrap with auto-failover |
|
||||
| `caam cooldown set <profile>` | Mark as rate limited |
|
||||
| `caam cooldown list` | Show active cooldowns |
|
||||
| `caam next <tool>` | Preview rotation selection |
|
||||
| `caam tui` | Interactive dashboard |
|
||||
|
||||
---
|
||||
|
||||
## Flywheel Integration
|
||||
|
||||
| Tool | Integration |
|
||||
|------|-------------|
|
||||
| **NTM** | Each tmux pane uses different account via isolated profiles |
|
||||
| **Agent Mail** | Agents coordinate account switching across sessions |
|
||||
| **CASS** | Search sessions by account for usage patterns |
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
| Topic | Reference |
|
||||
|-------|-----------|
|
||||
| Complete commands | [COMMANDS.md](references/COMMANDS.md) |
|
||||
| Isolated profiles | [ISOLATED-PROFILES.md](references/ISOLATED-PROFILES.md) |
|
||||
| Vault structure | [VAULT.md](references/VAULT.md) |
|
||||
|
||||
---
|
||||
|
||||
## Validation
|
||||
|
||||
```bash
|
||||
# Verify installation
|
||||
caam --version
|
||||
|
||||
# Check all profiles
|
||||
caam status
|
||||
|
||||
# Test switch
|
||||
caam activate claude --auto && caam status
|
||||
```
|
||||
+57
-1633
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
||||
---
|
||||
name: account-rotation
|
||||
description: "Use when you hit a usage/rate limit on a coding-agent subscription and need to switch accounts, or to spread swarm lanes across accounts. Routes by host+agent: macOS+Claude → claude-acct (Keychain swap); macOS+Codex/Gemini or any Linux/WSL → caam (file swap)."
|
||||
---
|
||||
|
||||
# account-rotation — switch coding-agent accounts on a rate limit
|
||||
|
||||
Route by host+agent, then let the tool do the swap:
|
||||
|
||||
```
|
||||
macOS + Claude → claude-acct (Keychain layer)
|
||||
macOS + Codex/Gemini → caam (file layer)
|
||||
Linux / WSL + anything → caam (file layer)
|
||||
```
|
||||
|
||||
**Why the route:** caam swaps the auth *file*, which is correct for file-based
|
||||
auth (Codex, Gemini, Claude-on-Linux). But Claude Code on macOS reads the login
|
||||
**Keychain** (`Claude Code-credentials`) and ignores that file — so caam is a
|
||||
no-op for Claude-on-Mac. `claude-acct` swaps the Keychain token **and** the
|
||||
`~/.claude.json` `.oauthAccount` identity (both required, or only the current
|
||||
account works).
|
||||
|
||||
```bash
|
||||
claude-acct {list|current|use <name>|login <name> [email]} # macOS + Claude
|
||||
caam {status|next|use} <tool> # else
|
||||
```
|
||||
|
||||
**Two capture traps:** (1) distinct token bytes ≠ distinct accounts — verify by
|
||||
account *email*, not hash; (2) the browser captures whichever account the provider
|
||||
is signed into — log out / use Incognito before each capture login.
|
||||
|
||||
**Live-session caveat:** rotation changes what a *new* process picks up, not the
|
||||
running session. Rotate, then relaunch. Ideal for putting each swarm lane on its
|
||||
own account for parallel quota.
|
||||
@@ -0,0 +1,12 @@
|
||||
# Execution Profile — account-rotation
|
||||
|
||||
When the user hits a usage/rate limit and wants to switch accounts (or to spread
|
||||
swarm lanes across accounts):
|
||||
|
||||
1. Detect host (`uname`) and which agent CLI is being rotated.
|
||||
2. Route: macOS+Claude → `claude-acct`; macOS+Codex/Gemini or any Linux/WSL → `caam`.
|
||||
3. macOS+Claude only: a full account = Keychain token + `~/.claude.json` `.oauthAccount`;
|
||||
`claude-acct use <name>` swaps both. caam is a no-op there (it swaps a file Claude ignores).
|
||||
4. Capturing a new account: log out / use Incognito first (the browser captures the
|
||||
currently-signed-in account); verify by account email, not token hash.
|
||||
5. Rotation affects new processes, not the live session — relaunch to move yourself.
|
||||
@@ -359,6 +359,7 @@ These are how skills chain in practice:
|
||||
| **sbh** | execution | Disk-pressure defense for AI coding workloads. Use when: disk full, low space, ballast, cleanup, scan artifacts, emergency, sbh daemon, sbh status. |
|
||||
| **ubs** | execution | Use when reviewing code with UBS for bugs, security issues, AI-generated quality, or pre-commit checks. |
|
||||
| **vibing-with-ntm** | execution | Use when tending NTM agent swarms, unsticking panes, handling rate limits, or coordinating convergence. |
|
||||
| **account-rotation** | execution | "Use when you hit a usage/rate limit on a coding-agent subscription and need to switch accounts, or to spread swarm lanes across accounts. Routes by host+agent: macOS+Claude → claude-acct (Keychain swap); macOS+Codex/Gemini or any Linux/WSL → caam (file swap). One symptom, the right tool per host." |
|
||||
|
||||
### Internal Skills (8) — `metadata.internal: true`
|
||||
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
---
|
||||
name: account-rotation
|
||||
user-invocable: false
|
||||
skill_api_version: 1
|
||||
hexagonal_role: supporting
|
||||
metadata:
|
||||
tier: execution
|
||||
description: "Use when you hit a usage/rate limit on a coding-agent subscription and need to switch accounts, or to spread swarm lanes across accounts. Routes by host+agent: macOS+Claude → claude-acct (Keychain swap); macOS+Codex/Gemini or any Linux/WSL → caam (file swap). One symptom, the right tool per host."
|
||||
practices:
|
||||
- pragmatic-programmer
|
||||
---
|
||||
<!-- TOC: Quick Start | Why the Route Exists | claude-acct (Mac+Claude) | caam (everything else) | Capture Discipline | Live-Session Caveat | Swarm Lanes -->
|
||||
|
||||
# account-rotation — switch coding-agent accounts on a rate limit
|
||||
|
||||
> **The moment:** you hit a usage limit on a Claude Max / Codex Pro / Gemini
|
||||
> subscription and want to keep working on a fresh account, or you're spreading
|
||||
> swarm lanes across accounts for parallel quota. **The tool depends on the host**
|
||||
> — because the credential *layer* differs by OS+agent. This skill routes; the
|
||||
> tools do the swap.
|
||||
|
||||
## Quick Start — route first
|
||||
|
||||
```
|
||||
macOS + Claude → claude-acct (Keychain layer)
|
||||
macOS + Codex/Gemini → caam (file layer)
|
||||
Linux / WSL + anything → caam (file layer)
|
||||
```
|
||||
|
||||
## Why the route exists (the load-bearing fact)
|
||||
|
||||
caam swaps the auth **file** (`~/.claude/.credentials.json`, codex/gemini auth
|
||||
files). Correct for file-based auth — **Codex, Gemini, and Claude-on-Linux.** But
|
||||
current **Claude Code on macOS stores its token in the login Keychain** (`security`
|
||||
service `Claude Code-credentials`) and *ignores* that file. So `caam activate`/`next`
|
||||
for Claude on Mac are **no-ops** — they swap a file Claude doesn't read. That one
|
||||
exception is the whole reason this router exists.
|
||||
|
||||
## macOS + Claude → `claude-acct` (Keychain swap)
|
||||
|
||||
A full Claude account on Mac = **two pieces**, both swapped together: the Keychain
|
||||
**token** + the `~/.claude.json` **`.oauthAccount`** identity block (`claude auth
|
||||
status` reads the email from the latter; a token-only swap leaves the identity
|
||||
pinned to the last login → "only the current account works"). `claude-acct` swaps
|
||||
both via `security add/delete-generic-password -A` (`-A` = no GUI prompt, so
|
||||
headless workers don't stall) + a JSON splice of `.oauthAccount`.
|
||||
|
||||
```bash
|
||||
claude-acct list # captured accounts → real email each maps to
|
||||
claude-acct current # which account a NEW claude starts on
|
||||
claude-acct use <name> # swap (token + identity)
|
||||
claude-acct login <name> [email] # one-time capture (see Capture Discipline)
|
||||
```
|
||||
Tool: `dotfiles/bin/claude-acct`.
|
||||
|
||||
## macOS+Codex/Gemini & all Linux/WSL → `caam` (file swap)
|
||||
|
||||
caam is the adopted file-based rotator and is correct here. It self-documents
|
||||
(there is intentionally no caam skill — the CLI is the doc):
|
||||
|
||||
```bash
|
||||
caam status <tool> # vault + health
|
||||
caam next <tool> # rotate to next non-cooldown account
|
||||
caam use <tool> <profile>
|
||||
caam --help # full surface
|
||||
```
|
||||
On bushido (Ubuntu) this is the **only** rotator you need — file-based auth means
|
||||
caam's swap actually takes.
|
||||
|
||||
## Capture Discipline (the two traps — apply to both tools)
|
||||
|
||||
1. **Distinct token bytes ≠ distinct accounts.** OAuth re-issues a fresh token
|
||||
each login, so N logins to the *same* account produce N different hashes.
|
||||
Verify by **account email**, not token hash. (`claude-acct` warns on collision.)
|
||||
2. **The browser captures whichever account the provider is signed into.** Email
|
||||
login-hints are ignored when a session exists. **Log out (or use a
|
||||
Private/Incognito window) before each capture login**, or it re-grabs the
|
||||
current account.
|
||||
|
||||
## Live-Session Caveat
|
||||
|
||||
A running agent process holds its token in memory; rotation changes what a **new**
|
||||
process picks up, not the live session. To move the session you're in: rotate,
|
||||
then **relaunch** the CLI. Exactly right for spawning swarm lanes.
|
||||
|
||||
## Swarm Lanes (the real unlock)
|
||||
|
||||
Parallel quota = put each lane on a different account **before** launching it:
|
||||
|
||||
```bash
|
||||
# Mac (Claude)
|
||||
claude-acct use acct-a && <spawn lane A>; claude-acct use acct-b && <spawn lane B>
|
||||
# Linux / Codex
|
||||
caam use codex acct-a && <spawn lane A>; caam next codex && <spawn lane B>
|
||||
```
|
||||
A dispatcher's limit-hit hook calls `claude-acct use` on Mac / `caam next` on
|
||||
Linux, then re-dispatches the lane's work.
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "account-rotation",
|
||||
"skill_api_version": 1,
|
||||
"form": "A",
|
||||
"quality_score": 0.9,
|
||||
"sections": [
|
||||
{ "id": "title", "title": "account-rotation — switch coding-agent accounts on a rate limit", "type": "intro", "priority": "required" },
|
||||
{ "id": "quickstart", "title": "Quick Start", "type": "procedure", "priority": "required" },
|
||||
{ "id": "why", "title": "Why the Route Exists", "type": "overview", "priority": "required" },
|
||||
{ "id": "claude", "title": "macOS + Claude", "type": "procedure", "priority": "required" },
|
||||
{ "id": "caam", "title": "Codex/Gemini & Linux", "type": "procedure", "priority": "required" },
|
||||
{ "id": "capture", "title": "Capture Discipline", "type": "procedure", "priority": "required" },
|
||||
{ "id": "livecaveat", "title": "Live-Session Caveat", "type": "overview", "priority": "required" },
|
||||
{ "id": "swarm", "title": "Swarm Lanes", "type": "procedure", "priority": "standard" }
|
||||
],
|
||||
"references": [],
|
||||
"metadata": {
|
||||
"tier": "execution",
|
||||
"stability": "stable",
|
||||
"dependencies": [],
|
||||
"hexagonal_role": "supporting",
|
||||
"context_window": "inherit",
|
||||
"practices": ["pragmatic-programmer"],
|
||||
"triggers": [
|
||||
"rate limited switch account",
|
||||
"usage limit hit, rotate account",
|
||||
"switch coding-agent account",
|
||||
"rotate Claude Max / Codex Pro accounts",
|
||||
"spread swarm lanes across accounts",
|
||||
"caam doesn't switch Claude on Mac",
|
||||
"account-rotation"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
---
|
||||
name: caam
|
||||
user-invocable: false
|
||||
skill_api_version: 1
|
||||
hexagonal_role: supporting
|
||||
metadata:
|
||||
tier: execution
|
||||
description: "Use when switching AI coding CLI accounts quickly to recover from subscription rate limits or OAuth friction."
|
||||
practices:
|
||||
- pragmatic-programmer
|
||||
---
|
||||
<!-- TOC: Quick Start | Daily Operations | Rotation Doctrine | Flywheel Integration | References -->
|
||||
|
||||
# CAAM — Coding Agent Account Manager
|
||||
|
||||
> **Core Problem:** You hit rate limits on your $200/mo Claude Max subscription. Browser OAuth takes 30-60 seconds. CAAM swaps accounts in ~50ms.
|
||||
|
||||
**Don't re-learn the command surface here.** `caam --help` (and per-subcommand `--help`) self-describes every command and flag; the full catalog also lives in [COMMANDS.md](references/COMMANDS.md). This skill carries the operating doctrine: how to seed the vault, when to rotate vs cooldown, and how CAAM fits the agent fleet.
|
||||
|
||||
## How It Works (why it's safe)
|
||||
|
||||
Each AI CLI stores OAuth tokens in plain files (e.g. `~/.claude.json`, `~/.codex/auth.json`, `~/.gemini/oauth_credentials.json`). CAAM backs them up to a local vault and restores them on activate. **No daemons, no databases, no network calls** — just `cp` with extra steps. Vault layout: [VAULT.md](references/VAULT.md).
|
||||
|
||||
Supported tools: Claude Code, Codex CLI, Gemini CLI (each on its own subscription).
|
||||
|
||||
## Quick Start — Seeding the Vault
|
||||
|
||||
```bash
|
||||
# Install
|
||||
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/coding_agent_account_manager/main/install.sh?$(date +%s)" | bash
|
||||
|
||||
# Backup current account
|
||||
caam backup claude alice@gmail.com
|
||||
|
||||
# Clear, login with another account, backup that too
|
||||
caam clear claude
|
||||
claude # /login with bob@gmail.com
|
||||
caam backup claude bob@gmail.com
|
||||
|
||||
# Switch instantly forever
|
||||
caam activate claude alice@gmail.com # ~50ms, no browser
|
||||
```
|
||||
|
||||
A profile must be **backed up once** before it can ever be activated. Seed every account you own up front — mid-rate-limit is the wrong time to discover an empty vault.
|
||||
|
||||
## Daily Operations
|
||||
|
||||
The four moves that cover almost every session:
|
||||
|
||||
```bash
|
||||
caam status # which profile is active per tool (content-hash matched)
|
||||
caam activate claude --auto # rotation picks best profile (health, recency, cooldowns)
|
||||
caam cooldown set claude # mark current profile rate-limited (60min default); rotation skips it
|
||||
caam next claude # preview what rotation would select, without switching
|
||||
```
|
||||
|
||||
### Zero-Friction Aliases
|
||||
|
||||
```bash
|
||||
# Add to .bashrc/.zshrc
|
||||
alias claude='caam run claude --'
|
||||
alias codex='caam run codex --'
|
||||
alias gemini='caam run gemini --'
|
||||
|
||||
# Now these auto-failover on rate limits
|
||||
claude "explain this code"
|
||||
```
|
||||
|
||||
### Project Associations
|
||||
|
||||
Link profiles to directories so work and personal accounts never cross:
|
||||
|
||||
```bash
|
||||
cd ~/projects/work-app
|
||||
caam project set claude work@company.com
|
||||
caam activate claude # in this directory, auto-uses work@company.com
|
||||
```
|
||||
|
||||
## Rotation Doctrine
|
||||
|
||||
- **Hit a rate limit → `caam cooldown set <tool>` BEFORE switching.** Rotation can only skip profiles it knows are burned. Switching without marking the cooldown sends the next `--auto` right back into the limited account.
|
||||
- **Prefer `--auto` over hand-picking** once ≥2 profiles exist — the default `smart` algorithm weighs cooldown, health, recency, and jitter. (`round_robin`/`random` exist; details in [COMMANDS.md](references/COMMANDS.md).)
|
||||
- **Check `caam status` after any activate** — content-hash matching tells you what is actually live, not what you intended.
|
||||
- The interactive dashboard is `caam tui` (blocks the terminal — keybindings self-described in-app). Agents should stick to the non-interactive commands above.
|
||||
|
||||
## Flywheel Integration
|
||||
|
||||
| Tool | Integration |
|
||||
|------|-------------|
|
||||
| **NTM** | Each tmux pane uses a different account via isolated profiles — see [ISOLATED-PROFILES.md](references/ISOLATED-PROFILES.md) |
|
||||
| **Agent Mail** | Agents coordinate account switching across sessions |
|
||||
| **CASS** | Search sessions by account for usage patterns |
|
||||
|
||||
## References
|
||||
|
||||
| Topic | Reference |
|
||||
|-------|-----------|
|
||||
| Complete commands | [COMMANDS.md](references/COMMANDS.md) |
|
||||
| Isolated profiles | [ISOLATED-PROFILES.md](references/ISOLATED-PROFILES.md) |
|
||||
| Vault structure | [VAULT.md](references/VAULT.md) |
|
||||
|
||||
## Validation
|
||||
|
||||
```bash
|
||||
caam --version # verify installation
|
||||
caam status # check all profiles
|
||||
caam activate claude --auto && caam status # test switch
|
||||
```
|
||||
@@ -1,302 +0,0 @@
|
||||
# CAAM Complete Command Reference
|
||||
|
||||
## Table of Contents
|
||||
- [Auth File Swapping](#auth-file-swapping)
|
||||
- [Smart Profile Management](#smart-profile-management)
|
||||
- [Profile Isolation](#profile-isolation)
|
||||
- [Configuration](#configuration)
|
||||
|
||||
---
|
||||
|
||||
## Auth File Swapping
|
||||
|
||||
### backup
|
||||
|
||||
Save current auth files to vault.
|
||||
|
||||
```bash
|
||||
caam backup <tool> <email>
|
||||
```
|
||||
|
||||
**Example:**
|
||||
```bash
|
||||
caam backup claude alice@gmail.com
|
||||
```
|
||||
|
||||
### activate
|
||||
|
||||
Restore auth files from vault (instant switch).
|
||||
|
||||
```bash
|
||||
caam activate <tool> <email> [flags]
|
||||
```
|
||||
|
||||
**Flags:**
|
||||
| Flag | Description |
|
||||
|------|-------------|
|
||||
| `--auto` | Use rotation algorithm to pick best |
|
||||
| `--backup-current` | Backup current auth before switching |
|
||||
| `--force` | Activate even if in cooldown |
|
||||
|
||||
**Aliases:** `switch`, `use`
|
||||
|
||||
**Examples:**
|
||||
```bash
|
||||
caam activate claude bob@gmail.com
|
||||
caam activate claude --auto
|
||||
caam switch codex work@company.com --backup-current
|
||||
```
|
||||
|
||||
### status
|
||||
|
||||
Show which profile is currently active.
|
||||
|
||||
```bash
|
||||
caam status [tool]
|
||||
```
|
||||
|
||||
Uses content hashing to detect active profile, even if switched manually.
|
||||
|
||||
### ls
|
||||
|
||||
List all saved profiles in vault.
|
||||
|
||||
```bash
|
||||
caam ls [tool]
|
||||
```
|
||||
|
||||
### clear
|
||||
|
||||
Remove auth files (logout state).
|
||||
|
||||
```bash
|
||||
caam clear <tool>
|
||||
```
|
||||
|
||||
### delete
|
||||
|
||||
Remove a saved profile from vault.
|
||||
|
||||
```bash
|
||||
caam delete <tool> <email>
|
||||
```
|
||||
|
||||
### paths
|
||||
|
||||
Show auth file locations for each tool.
|
||||
|
||||
```bash
|
||||
caam paths [tool]
|
||||
```
|
||||
|
||||
Useful if tool updates change file locations.
|
||||
|
||||
### uninstall
|
||||
|
||||
Restore originals and remove caam data/config.
|
||||
|
||||
```bash
|
||||
caam uninstall [flags]
|
||||
```
|
||||
|
||||
**Flags:**
|
||||
| Flag | Description |
|
||||
|------|-------------|
|
||||
| `--dry-run` | Show what would be restored/removed |
|
||||
| `--keep-backups` | Keep vault after restoring originals |
|
||||
| `--force` | Skip confirmation prompt |
|
||||
|
||||
---
|
||||
|
||||
## Smart Profile Management
|
||||
|
||||
### cooldown set
|
||||
|
||||
Mark profile as rate-limited.
|
||||
|
||||
```bash
|
||||
caam cooldown set <provider/profile> [flags]
|
||||
```
|
||||
|
||||
**Flags:**
|
||||
| Flag | Default | Description |
|
||||
|------|---------|-------------|
|
||||
| `--minutes` | 60 | Cooldown duration |
|
||||
|
||||
**Examples:**
|
||||
```bash
|
||||
caam cooldown set claude # Current profile, 60min
|
||||
caam cooldown set claude/work@co.com --minutes 120
|
||||
```
|
||||
|
||||
### cooldown list
|
||||
|
||||
List active cooldowns with remaining time.
|
||||
|
||||
```bash
|
||||
caam cooldown list
|
||||
```
|
||||
|
||||
### cooldown clear
|
||||
|
||||
Clear cooldown for a profile.
|
||||
|
||||
```bash
|
||||
caam cooldown clear <provider/profile>
|
||||
caam cooldown clear --all
|
||||
```
|
||||
|
||||
### next
|
||||
|
||||
Preview which profile rotation would select.
|
||||
|
||||
```bash
|
||||
caam next <tool>
|
||||
```
|
||||
|
||||
**Output:**
|
||||
```
|
||||
Recommended: bob@gmail.com
|
||||
+ Healthy token (expires in 4h 32m)
|
||||
+ Not used recently (2h ago)
|
||||
|
||||
Alternatives:
|
||||
alice@gmail.com - Used recently (15m ago)
|
||||
|
||||
In cooldown:
|
||||
carol@gmail.com - In cooldown (45m remaining)
|
||||
```
|
||||
|
||||
### run
|
||||
|
||||
Wrap CLI with automatic failover on rate limits.
|
||||
|
||||
```bash
|
||||
caam run <tool> [flags] [-- args]
|
||||
```
|
||||
|
||||
**Flags:**
|
||||
| Flag | Default | Description |
|
||||
|------|---------|-------------|
|
||||
| `--max-retries` | 1 | Maximum retry attempts |
|
||||
| `--cooldown` | 60m | Cooldown after rate limit |
|
||||
| `--algorithm` | smart | Rotation algorithm |
|
||||
| `--quiet` | off | Suppress notifications |
|
||||
|
||||
**Example:**
|
||||
```bash
|
||||
caam run claude -- "explain this code"
|
||||
```
|
||||
|
||||
### project set
|
||||
|
||||
Associate current directory with a profile.
|
||||
|
||||
```bash
|
||||
caam project set <tool> <profile>
|
||||
```
|
||||
|
||||
**Example:**
|
||||
```bash
|
||||
cd ~/projects/work-app
|
||||
caam project set claude work@company.com
|
||||
```
|
||||
|
||||
### project get
|
||||
|
||||
Show project associations for current directory.
|
||||
|
||||
```bash
|
||||
caam project get [tool]
|
||||
```
|
||||
|
||||
### tui
|
||||
|
||||
Interactive TUI dashboard.
|
||||
|
||||
```bash
|
||||
caam tui
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Profile Isolation
|
||||
|
||||
For running multiple accounts simultaneously.
|
||||
|
||||
### profile add
|
||||
|
||||
Create isolated profile directory.
|
||||
|
||||
```bash
|
||||
caam profile add <tool> <email>
|
||||
```
|
||||
|
||||
### profile ls
|
||||
|
||||
List isolated profiles.
|
||||
|
||||
```bash
|
||||
caam profile ls [tool]
|
||||
```
|
||||
|
||||
### profile delete
|
||||
|
||||
Delete isolated profile.
|
||||
|
||||
```bash
|
||||
caam profile delete <tool> <email>
|
||||
```
|
||||
|
||||
### profile status
|
||||
|
||||
Show isolated profile status.
|
||||
|
||||
```bash
|
||||
caam profile status <tool> <email>
|
||||
```
|
||||
|
||||
### login
|
||||
|
||||
Run login flow for isolated profile.
|
||||
|
||||
```bash
|
||||
caam login <tool> <email>
|
||||
```
|
||||
|
||||
### exec
|
||||
|
||||
Run CLI with isolated profile.
|
||||
|
||||
```bash
|
||||
caam exec <tool> <email> [-- args]
|
||||
```
|
||||
|
||||
**Example:**
|
||||
```bash
|
||||
caam exec codex work@company.com -- "implement feature X"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Configuration
|
||||
|
||||
Config file: `~/.caam/config.yaml`
|
||||
|
||||
```yaml
|
||||
stealth:
|
||||
rotation:
|
||||
enabled: true
|
||||
algorithm: smart # smart | round_robin | random
|
||||
cooldown:
|
||||
enabled: true # Warn when activating cooldown profiles
|
||||
```
|
||||
|
||||
### config commands
|
||||
|
||||
```bash
|
||||
caam config --list # Show all config
|
||||
caam config --get key # Get specific value
|
||||
caam config --set key=value # Set value
|
||||
caam config --edit # Open in editor
|
||||
```
|
||||
@@ -1,158 +0,0 @@
|
||||
# Isolated Profiles — Running Multiple Accounts Simultaneously
|
||||
|
||||
## Table of Contents
|
||||
- [When to Use](#when-to-use)
|
||||
- [Setup](#setup)
|
||||
- [How It Works](#how-it-works)
|
||||
- [Workflow Examples](#workflow-examples)
|
||||
|
||||
---
|
||||
|
||||
## When to Use
|
||||
|
||||
| Mode | Use Case |
|
||||
|------|----------|
|
||||
| **Vault Profiles** | Switch between accounts sequentially (most common) |
|
||||
| **Isolated Profiles** | Run multiple accounts **at the same time** |
|
||||
|
||||
### Isolated Profile Use Cases
|
||||
|
||||
- Running work and personal accounts in parallel
|
||||
- Multi-agent swarm with different account pools
|
||||
- Testing across accounts simultaneously
|
||||
- NTM panes with different accounts per pane
|
||||
|
||||
---
|
||||
|
||||
## Setup
|
||||
|
||||
### 1. Create Isolated Profiles
|
||||
|
||||
```bash
|
||||
caam profile add codex work@company.com
|
||||
caam profile add codex personal@gmail.com
|
||||
```
|
||||
|
||||
### 2. Login to Each (One-Time)
|
||||
|
||||
```bash
|
||||
caam login codex work@company.com # Opens browser
|
||||
caam login codex personal@gmail.com # Opens browser
|
||||
```
|
||||
|
||||
### 3. Run Simultaneously
|
||||
|
||||
```bash
|
||||
# Terminal 1
|
||||
caam exec codex work@company.com -- "implement feature X"
|
||||
|
||||
# Terminal 2
|
||||
caam exec codex personal@gmail.com -- "review PR #123"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How It Works
|
||||
|
||||
Each isolated profile gets its own `$HOME` and tool-specific home:
|
||||
|
||||
```
|
||||
~/.local/share/caam/profiles/
|
||||
└── codex/
|
||||
└── work@company.com/
|
||||
├── profile.json # Profile metadata
|
||||
├── codex_home/ # Isolated CODEX_HOME
|
||||
│ └── auth.json
|
||||
└── home/ # Pseudo-HOME with symlinks
|
||||
├── .ssh -> ~/.ssh
|
||||
└── .gitconfig -> ~/.gitconfig
|
||||
```
|
||||
|
||||
When you run `caam exec`:
|
||||
1. Sets `$HOME` to the isolated home directory
|
||||
2. Sets tool-specific env (e.g., `$CODEX_HOME`)
|
||||
3. Symlinks your real `.ssh`, `.gitconfig`, etc.
|
||||
4. Auth files are isolated, everything else is shared
|
||||
|
||||
---
|
||||
|
||||
## Workflow Examples
|
||||
|
||||
### Parallel Development
|
||||
|
||||
```bash
|
||||
# Work project in one terminal
|
||||
caam exec codex work@company.com -- "implement auth system"
|
||||
|
||||
# Personal project in another
|
||||
caam exec codex personal@gmail.com -- "review my side project"
|
||||
```
|
||||
|
||||
### NTM Integration
|
||||
|
||||
```bash
|
||||
# Spawn agents with different accounts
|
||||
ntm spawn myproject --cc=2
|
||||
|
||||
# Pane 1: Use work account
|
||||
caam exec claude work@company.com -- "$(cat prompt.txt)"
|
||||
|
||||
# Pane 2: Use personal account
|
||||
caam exec claude personal@gmail.com -- "$(cat prompt.txt)"
|
||||
```
|
||||
|
||||
### Multi-Account Swarm
|
||||
|
||||
```bash
|
||||
# Create profiles for all accounts
|
||||
caam profile add claude alice@gmail.com
|
||||
caam profile add claude bob@gmail.com
|
||||
caam profile add claude carol@gmail.com
|
||||
|
||||
# Login to each
|
||||
caam login claude alice@gmail.com
|
||||
caam login claude bob@gmail.com
|
||||
caam login claude carol@gmail.com
|
||||
|
||||
# Run in parallel across multiple terminals
|
||||
for email in alice bob carol; do
|
||||
caam exec claude ${email}@gmail.com -- "$(cat swarm_prompt.txt)" &
|
||||
done
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | Description |
|
||||
|---------|-------------|
|
||||
| `caam profile add <tool> <email>` | Create isolated profile |
|
||||
| `caam profile ls [tool]` | List isolated profiles |
|
||||
| `caam profile delete <tool> <email>` | Delete profile |
|
||||
| `caam profile status <tool> <email>` | Show profile status |
|
||||
| `caam login <tool> <email>` | Run login for isolated profile |
|
||||
| `caam exec <tool> <email> [-- args]` | Run CLI with profile |
|
||||
|
||||
---
|
||||
|
||||
## Vault vs Isolated
|
||||
|
||||
| Feature | Vault | Isolated |
|
||||
|---------|-------|----------|
|
||||
| Accounts active | 1 at a time | Multiple simultaneously |
|
||||
| Setup complexity | Lower | Higher |
|
||||
| Switching speed | ~50ms | N/A (parallel) |
|
||||
| Directory isolation | No | Yes |
|
||||
| Use case | Sequential switching | Parallel execution |
|
||||
|
||||
### When to Use Each
|
||||
|
||||
**Use Vault Profiles when:**
|
||||
- You switch accounts throughout the day
|
||||
- Only one session active at a time
|
||||
- Want simplest setup
|
||||
|
||||
**Use Isolated Profiles when:**
|
||||
- You need accounts running in parallel
|
||||
- Multi-agent swarm with account diversity
|
||||
- Different accounts for different terminals
|
||||
@@ -1,195 +0,0 @@
|
||||
# Vault Structure and Internals
|
||||
|
||||
## Table of Contents
|
||||
- [Directory Layout](#directory-layout)
|
||||
- [Auth File Locations](#auth-file-locations)
|
||||
- [How Detection Works](#how-detection-works)
|
||||
- [Tips](#tips)
|
||||
|
||||
---
|
||||
|
||||
## Directory Layout
|
||||
|
||||
```
|
||||
~/.local/share/caam/
|
||||
├── vault/ # Saved auth profiles
|
||||
│ ├── claude/
|
||||
│ │ ├── alice@gmail.com/
|
||||
│ │ │ ├── .claude.json # Backed up auth
|
||||
│ │ │ ├── auth.json # From ~/.config/claude-code/
|
||||
│ │ │ └── meta.json # Timestamp, original paths
|
||||
│ │ └── bob@gmail.com/
|
||||
│ │ └── ...
|
||||
│ ├── codex/
|
||||
│ │ └── work@company.com/
|
||||
│ │ └── auth.json
|
||||
│ └── gemini/
|
||||
│ └── personal@gmail.com/
|
||||
│ ├── settings.json
|
||||
│ └── oauth_credentials.json
|
||||
│
|
||||
├── profiles/ # Isolated profiles (advanced)
|
||||
│ └── codex/
|
||||
│ └── work@company.com/
|
||||
│ ├── profile.json # Profile metadata
|
||||
│ ├── codex_home/ # Isolated CODEX_HOME
|
||||
│ │ └── auth.json
|
||||
│ └── home/ # Pseudo-HOME with symlinks
|
||||
│ ├── .ssh -> ~/.ssh
|
||||
│ └── .gitconfig -> ~/.gitconfig
|
||||
│
|
||||
├── state/ # Runtime state
|
||||
│ ├── cooldowns.json # Active cooldown tracking
|
||||
│ ├── health.json # Profile health scores
|
||||
│ └── usage.json # Usage analytics
|
||||
│
|
||||
└── config.yaml # User configuration
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Auth File Locations
|
||||
|
||||
### Claude Code (Claude Max)
|
||||
|
||||
| File | Location |
|
||||
|------|----------|
|
||||
| Main auth | `~/.claude.json` |
|
||||
| Claude Code auth | `~/.config/claude-code/auth.json` |
|
||||
| Settings | `~/.claude/settings.json` |
|
||||
|
||||
**Login:** `/login` inside CLI
|
||||
|
||||
### Codex CLI (GPT Pro)
|
||||
|
||||
| File | Location |
|
||||
|------|----------|
|
||||
| Auth | `~/.codex/auth.json` (or `$CODEX_HOME/auth.json`) |
|
||||
| Config | `~/.codex/config.toml` |
|
||||
|
||||
**Login:** `codex login` or `codex login --device-auth`
|
||||
|
||||
### Gemini CLI (Gemini Ultra)
|
||||
|
||||
| File | Location |
|
||||
|------|----------|
|
||||
| Settings | `~/.gemini/settings.json` |
|
||||
| OAuth | `~/.gemini/oauth_credentials.json` |
|
||||
| API Key | `~/.gemini/.env` |
|
||||
|
||||
**Login:** Start `gemini`, select "Login with Google"
|
||||
|
||||
---
|
||||
|
||||
## How Detection Works
|
||||
|
||||
`caam status` uses **content hashing**:
|
||||
|
||||
1. SHA-256 hash current auth files
|
||||
2. Compare against all vault profiles
|
||||
3. Match = that's what's active
|
||||
|
||||
### Benefits
|
||||
|
||||
- Profiles detected even if you switched manually
|
||||
- No hidden state files that can desync
|
||||
- Works correctly after reboots
|
||||
- Self-healing if state gets corrupted
|
||||
|
||||
### Example
|
||||
|
||||
```bash
|
||||
$ caam status
|
||||
claude: alice@gmail.com (active)
|
||||
Hash: a7f3b2c1d4...
|
||||
Last switch: 2h ago
|
||||
Health: 🟢 Healthy
|
||||
|
||||
codex: work@company.com (active)
|
||||
Hash: e9b1d4f5c6...
|
||||
Last switch: 30m ago
|
||||
Health: 🟡 Token expiring soon
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Tips
|
||||
|
||||
### Use Email as Profile Name
|
||||
|
||||
Self-documenting — you'll never forget which account is which.
|
||||
|
||||
```bash
|
||||
# Good
|
||||
caam backup claude alice@gmail.com
|
||||
|
||||
# Bad
|
||||
caam backup claude account1
|
||||
```
|
||||
|
||||
### Backup Before Clearing
|
||||
|
||||
```bash
|
||||
caam backup claude current@email.com && caam clear claude
|
||||
```
|
||||
|
||||
Or use the flag:
|
||||
```bash
|
||||
caam activate claude new@email.com --backup-current
|
||||
```
|
||||
|
||||
### Don't Sync Vault Across Machines
|
||||
|
||||
Auth tokens often contain machine-specific identifiers (device IDs). Backup and restore on each machine separately.
|
||||
|
||||
### Check Auth Paths After Tool Updates
|
||||
|
||||
```bash
|
||||
caam paths
|
||||
```
|
||||
|
||||
If locations change, CAAM will be updated. File an issue if you notice discrepancies.
|
||||
|
||||
---
|
||||
|
||||
## Meta File Format
|
||||
|
||||
Each vault profile includes `meta.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"email": "alice@gmail.com",
|
||||
"tool": "claude",
|
||||
"created_at": "2025-01-15T10:30:00Z",
|
||||
"last_activated": "2025-01-18T14:22:00Z",
|
||||
"original_paths": {
|
||||
".claude.json": "/home/user/.claude.json",
|
||||
"auth.json": "/home/user/.config/claude-code/auth.json"
|
||||
},
|
||||
"hash": "a7f3b2c1d4e5f6..."
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Config File
|
||||
|
||||
`~/.caam/config.yaml`:
|
||||
|
||||
```yaml
|
||||
stealth:
|
||||
rotation:
|
||||
enabled: true
|
||||
algorithm: smart # smart | round_robin | random
|
||||
cooldown:
|
||||
enabled: true # Warn when activating cooldown profiles
|
||||
default_minutes: 60
|
||||
|
||||
health:
|
||||
refresh_interval: 5m
|
||||
penalty_decay_rate: 0.2 # 20% reduction every 5 minutes
|
||||
|
||||
analytics:
|
||||
enabled: true
|
||||
retention_days: 30
|
||||
```
|
||||
@@ -1,59 +0,0 @@
|
||||
{
|
||||
"name": "caam",
|
||||
"skill_api_version": 1,
|
||||
"form": "A",
|
||||
"quality_score": 0.9,
|
||||
"sections": [
|
||||
{ "id": "title", "title": "CAAM — Coding Agent Account Manager", "type": "intro", "priority": "required" },
|
||||
{ "id": "quickstart", "title": "Quick Start", "type": "procedure", "priority": "required" },
|
||||
{ "id": "commands", "title": "THE EXACT PROMPT — Daily Commands", "type": "procedure", "priority": "required" },
|
||||
{ "id": "howitworks", "title": "How It Works", "type": "overview", "priority": "required" },
|
||||
{ "id": "tools", "title": "Supported Tools", "type": "table", "priority": "standard" },
|
||||
{ "id": "rotation", "title": "Smart Rotation", "type": "procedure", "priority": "standard" },
|
||||
{ "id": "cooldown", "title": "Cooldown Tracking", "type": "procedure", "priority": "standard" },
|
||||
{ "id": "tui", "title": "TUI Dashboard", "type": "table", "priority": "standard" },
|
||||
{ "id": "cmdref", "title": "Command Reference", "type": "table", "priority": "required" },
|
||||
{ "id": "flywheel", "title": "Flywheel Integration", "type": "routing", "priority": "standard" },
|
||||
{ "id": "references", "title": "References", "type": "routing", "priority": "required" },
|
||||
{ "id": "validation", "title": "Validation", "type": "procedure", "priority": "required" }
|
||||
],
|
||||
"references": [
|
||||
{ "file": "references/COMMANDS.md", "topic": "complete caam command reference" },
|
||||
{ "file": "references/ISOLATED-PROFILES.md", "topic": "per-pane isolated profiles for NTM swarms" },
|
||||
{ "file": "references/VAULT.md", "topic": "auth-file vault structure and layout" }
|
||||
],
|
||||
"metadata": {
|
||||
"tier": "execution",
|
||||
"stability": "stable",
|
||||
"dependencies": ["ntm", "agent-mail", "cass"],
|
||||
"hexagonal_role": "supporting",
|
||||
"context_window": "inherit",
|
||||
"practices": ["pragmatic-programmer"],
|
||||
"triggers": [
|
||||
"caam",
|
||||
"switch AI CLI account",
|
||||
"rate limit recovery",
|
||||
"rotate Claude Max accounts",
|
||||
"swap codex/gemini auth",
|
||||
"account activate",
|
||||
"OAuth friction",
|
||||
"cooldown rate-limited profile",
|
||||
"multi-account agent CLI"
|
||||
],
|
||||
"token_estimate": {
|
||||
"minimal": 60,
|
||||
"overview": 260,
|
||||
"standard": 900,
|
||||
"full": 1700
|
||||
}
|
||||
},
|
||||
"output_contract": "An activated CLI auth profile (~50ms swap from the vault), a cooldown/rotation state update, or `caam status` showing the active profile per tool. No browser OAuth round-trip.",
|
||||
"evidence": {
|
||||
"sources": [
|
||||
"skills/caam/SKILL.md",
|
||||
"skills/caam/references/COMMANDS.md",
|
||||
"skills/caam/references/ISOLATED-PROFILES.md",
|
||||
"skills/caam/references/VAULT.md"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user