switchroom 0.7.15 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -59
- package/bin/run-hook.sh +27 -11
- package/bin/timezone-hook.sh +9 -7
- package/dist/agent-scheduler/index.js +410 -133
- package/dist/auth-broker/index.js +13932 -0
- package/dist/cli/switchroom.js +26937 -5601
- package/dist/host-control/main.js +12702 -0
- package/dist/vault/approvals/kernel-server.js +467 -184
- package/dist/vault/broker/server.js +1430 -724
- package/examples/minimal.yaml +63 -0
- package/examples/personal-google-workspace-mcp/.env.example +34 -0
- package/examples/personal-google-workspace-mcp/README.md +194 -0
- package/examples/personal-google-workspace-mcp/compose.yaml +66 -0
- package/examples/switchroom.yaml +220 -0
- package/package.json +7 -4
- package/profiles/_base/settings.json.hbs +20 -5
- package/profiles/_base/start.sh.hbs +16 -3
- package/profiles/_shared/agent-self-service.md.hbs +126 -0
- package/profiles/_shared/telegram-style.md.hbs +20 -90
- package/profiles/_shared/vault-protocol.md.hbs +68 -0
- package/profiles/default/CLAUDE.md +50 -96
- package/profiles/default/CLAUDE.md.hbs +36 -6
- package/profiles/default/workspace/SOUL.md.hbs +12 -5
- package/skills/buildkite-agent-infrastructure/SKILL.md +30 -11
- package/skills/buildkite-agent-runtime/SKILL.md +44 -11
- package/skills/buildkite-api/SKILL.md +31 -8
- package/skills/buildkite-cli/SKILL.md +27 -9
- package/skills/buildkite-migration/SKILL.md +22 -9
- package/skills/buildkite-pipelines/SKILL.md +26 -9
- package/skills/buildkite-secure-delivery/SKILL.md +23 -9
- package/skills/buildkite-test-engine/SKILL.md +25 -8
- package/skills/docx/SKILL.md +1 -1
- package/skills/docx/scripts/office/validators/__pycache__/__init__.cpython-313.pyc +0 -0
- package/skills/docx/scripts/office/validators/__pycache__/base.cpython-313.pyc +0 -0
- package/skills/file-bug/SKILL.md +34 -6
- package/skills/humanizer/SKILL.md +15 -0
- package/skills/humanizer-calibrate/SKILL.md +7 -1
- package/skills/mcp-builder/SKILL.md +1 -1
- package/skills/pdf/SKILL.md +1 -1
- package/skills/pptx/SKILL.md +1 -1
- package/skills/skill-creator/SKILL.md +21 -1
- package/skills/skill-creator/scripts/__pycache__/__init__.cpython-313.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/generate_report.cpython-313.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/improve_description.cpython-313.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/run_eval.cpython-313.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/run_loop.cpython-313.pyc +0 -0
- package/skills/skill-creator/scripts/__pycache__/utils.cpython-313.pyc +0 -0
- package/skills/switchroom-cli/SKILL.md +63 -64
- package/skills/switchroom-health/SKILL.md +23 -10
- package/skills/switchroom-install/SKILL.md +3 -3
- package/skills/switchroom-manage/SKILL.md +26 -19
- package/skills/switchroom-runtime/SKILL.md +191 -0
- package/skills/switchroom-status/SKILL.md +27 -2
- package/skills/telegram-test-harness/SKILL.md +3 -0
- package/skills/token-helpers/SKILL.md +24 -1
- package/skills/webapp-testing/SKILL.md +31 -1
- package/skills/xlsx/SKILL.md +1 -1
- package/telegram-plugin/admin-commands/index.ts +7 -5
- package/telegram-plugin/analytics-posthog.ts +191 -0
- package/telegram-plugin/bridge/bridge.ts +69 -0
- package/telegram-plugin/bridge/ipc-client.ts +4 -1
- package/telegram-plugin/dist/bridge/bridge.js +194 -119
- package/telegram-plugin/dist/gateway/gateway.js +23611 -19671
- package/telegram-plugin/dist/server.js +245 -189
- package/telegram-plugin/first-paint.ts +3 -24
- package/telegram-plugin/gateway/auth-add-flow.ts +326 -0
- package/telegram-plugin/gateway/auth-broker-client.ts +75 -0
- package/telegram-plugin/gateway/auth-command.ts +794 -0
- package/telegram-plugin/gateway/auth-line.ts +123 -0
- package/telegram-plugin/gateway/boot-card.ts +169 -40
- package/telegram-plugin/gateway/boot-issue-cache.ts +308 -0
- package/telegram-plugin/gateway/boot-probes.ts +166 -123
- package/telegram-plugin/gateway/boot-reason.ts +41 -7
- package/telegram-plugin/gateway/boot-version.ts +66 -0
- package/telegram-plugin/gateway/gateway.ts +3499 -1885
- package/telegram-plugin/gateway/hostd-dispatch.ts +117 -0
- package/telegram-plugin/gateway/ipc-protocol.ts +18 -0
- package/telegram-plugin/gateway/pending-inbound-buffer.ts +106 -0
- package/telegram-plugin/gateway/quarantine.ts +69 -0
- package/telegram-plugin/gateway/quota-cache.ts +9 -4
- package/telegram-plugin/gateway/reaction-trigger.ts +401 -0
- package/telegram-plugin/gateway/recent-denials.test.ts +103 -0
- package/telegram-plugin/gateway/recent-denials.ts +77 -0
- package/telegram-plugin/gateway/startup-network-retry.ts +109 -31
- package/telegram-plugin/gateway/vault-grant-inbound-builders.ts +125 -0
- package/telegram-plugin/history.ts +91 -0
- package/telegram-plugin/hooks/hooks.json +10 -0
- package/telegram-plugin/hooks/sandbox-hint-posttool.mjs +130 -0
- package/telegram-plugin/hooks/subagent-tracker-posttool.mjs +19 -2
- package/telegram-plugin/hooks/subagent-tracker-pretool.mjs +22 -2
- package/telegram-plugin/hooks/tool-label-pretool.mjs +11 -0
- package/telegram-plugin/hooks/wedge-detect-posttool.mjs +303 -0
- package/telegram-plugin/inbound-classifier.ts +50 -0
- package/telegram-plugin/inline-keyboard-callbacks.ts +136 -0
- package/telegram-plugin/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
- package/telegram-plugin/package.json +4 -2
- package/telegram-plugin/permission-rule.ts +51 -0
- package/telegram-plugin/permission-title.ts +56 -0
- package/telegram-plugin/quota-check.ts +19 -41
- package/telegram-plugin/registry/reaper.ts +223 -0
- package/telegram-plugin/retry-api-call.ts +80 -0
- package/telegram-plugin/runtime-metrics.ts +177 -0
- package/telegram-plugin/scripts/build.mjs +0 -1
- package/telegram-plugin/secret-detect/index.ts +24 -0
- package/telegram-plugin/secret-detect/vault-error.test.ts +64 -12
- package/telegram-plugin/secret-detect/vault-error.ts +78 -11
- package/telegram-plugin/secret-detect/vault-write.ts +14 -2
- package/telegram-plugin/server.js +41795 -0
- package/telegram-plugin/session-tail.ts +6 -1
- package/telegram-plugin/shared/bot-runtime.ts +5 -4
- package/telegram-plugin/silence-poke.ts +420 -0
- package/telegram-plugin/silent-end.ts +174 -0
- package/telegram-plugin/stream-controller.ts +13 -0
- package/telegram-plugin/stream-reply-handler.ts +7 -0
- package/telegram-plugin/subagent-watcher.ts +213 -4
- package/telegram-plugin/tests/auth-add-flow.test.ts +559 -0
- package/telegram-plugin/tests/auth-code-redact.test.ts +8 -4
- package/telegram-plugin/tests/auth-command-vernacular.test.ts +531 -0
- package/telegram-plugin/tests/boot-card-issue-dedup.test.ts +247 -0
- package/telegram-plugin/tests/boot-card-reason-to-render.test.ts +182 -0
- package/telegram-plugin/tests/boot-card-reason.test.ts +65 -2
- package/telegram-plugin/tests/boot-card-render.test.ts +146 -0
- package/telegram-plugin/tests/boot-card-silent-on-operator.test.ts +103 -0
- package/telegram-plugin/tests/boot-probes.test.ts +216 -10
- package/telegram-plugin/tests/boot-version-string.test.ts +0 -0
- package/telegram-plugin/tests/finalize-callback.test.ts +190 -0
- package/telegram-plugin/tests/gateway-message-validator.test.ts +26 -0
- package/telegram-plugin/tests/gateway-secret-detect.test.ts +12 -3
- package/telegram-plugin/tests/gateway-startup-network-retry.test.ts +104 -0
- package/telegram-plugin/tests/history-reaper.test.ts +378 -0
- package/telegram-plugin/tests/hostd-dispatch.test.ts +129 -0
- package/telegram-plugin/tests/inbound-classifier.test.ts +76 -0
- package/telegram-plugin/tests/inbound-message-types.test.ts +267 -0
- package/telegram-plugin/tests/issues-card.test.ts +49 -0
- package/telegram-plugin/tests/pending-inbound-buffer.test.ts +132 -0
- package/telegram-plugin/tests/permission-rule.test.ts +80 -1
- package/telegram-plugin/tests/permission-title.test.ts +31 -0
- package/telegram-plugin/tests/quota-check.test.ts +5 -35
- package/telegram-plugin/tests/races.test.ts +179 -0
- package/telegram-plugin/tests/reaction-trigger-flow.test.ts +353 -0
- package/telegram-plugin/tests/reaction-trigger.test.ts +397 -0
- package/telegram-plugin/tests/retry-api-call.test.ts +152 -1
- package/telegram-plugin/tests/runtime-metrics.test.ts +145 -0
- package/telegram-plugin/tests/sandbox-hint-posttool.test.ts +155 -0
- package/telegram-plugin/tests/secret-detect-delete-must-surface-failures.test.ts +133 -0
- package/telegram-plugin/tests/secret-detect-false-positives.test.ts +137 -0
- package/telegram-plugin/tests/silence-poke.test.ts +493 -0
- package/telegram-plugin/tests/silent-end.test.ts +206 -0
- package/telegram-plugin/tests/subagent-tracker-hooks.test.ts +107 -0
- package/telegram-plugin/tests/subagent-watcher-env-thresholds.test.ts +224 -0
- package/telegram-plugin/tests/subagent-watcher-stall-terminal.test.ts +316 -0
- package/telegram-plugin/tests/subagent-watcher.test.ts +263 -0
- package/telegram-plugin/tests/turn-signal-tracker.test.ts +81 -0
- package/telegram-plugin/tests/vault-approval-posture.test.ts +256 -0
- package/telegram-plugin/tests/vault-grant-auto-resume.test.ts +73 -0
- package/telegram-plugin/tests/vault-grant-inbound-builders.test.ts +226 -0
- package/telegram-plugin/tests/vault-grant-union.test.ts +130 -0
- package/telegram-plugin/tests/vault-key-regex-allows-slash.test.ts +140 -0
- package/telegram-plugin/tests/vault-posture-quarantine.test.ts +104 -0
- package/telegram-plugin/tests/vault-request-access-tool.test.ts +114 -0
- package/telegram-plugin/tests/vault-request-access-unlock-resume.test.ts +106 -0
- package/telegram-plugin/turn-signal-tracker.ts +100 -24
- package/telegram-plugin/uat/SETUP.md +210 -35
- package/telegram-plugin/uat/assertions.ts +264 -37
- package/telegram-plugin/uat/driver-info.ts +57 -0
- package/telegram-plugin/uat/driver.ts +590 -51
- package/telegram-plugin/uat/harness.ts +140 -94
- package/telegram-plugin/uat/load-env.test.ts +72 -0
- package/telegram-plugin/uat/load-env.ts +48 -0
- package/telegram-plugin/uat/login.ts +96 -53
- package/telegram-plugin/uat/runners/agent-self-sufficiency.ts +457 -0
- package/telegram-plugin/uat/runners/paraphrases.ts +231 -0
- package/telegram-plugin/uat/runners/report.ts +150 -0
- package/telegram-plugin/uat/runners/run-agent-self-sufficiency.sh +50 -0
- package/telegram-plugin/uat/runners/scorer.test.ts +196 -0
- package/telegram-plugin/uat/runners/scorer.ts +106 -0
- package/telegram-plugin/uat/runners/skill-coverage.test.ts +100 -0
- package/telegram-plugin/uat/runners/skill-coverage.ts +620 -0
- package/telegram-plugin/uat/scenarios/ask-user-button-tap-dm.test.ts +141 -0
- package/telegram-plugin/uat/scenarios/bg-sub-agent-dispatch-dm.test.ts +191 -0
- package/telegram-plugin/uat/scenarios/fuzz-extended-dm.test.ts +255 -0
- package/telegram-plugin/uat/scenarios/fuzz-human-style-dm.test.ts +275 -0
- package/telegram-plugin/uat/scenarios/fuzz-random-prompts-dm.test.ts +146 -0
- package/telegram-plugin/uat/scenarios/fuzz-status-ask-dm.test.ts +486 -0
- package/telegram-plugin/uat/scenarios/jtbd-interrupt-marker-dm.test.ts +67 -0
- package/telegram-plugin/uat/scenarios/jtbd-rapid-followup-dm.test.ts +100 -0
- package/telegram-plugin/uat/scenarios/jtbd-soft-commit-dm.test.ts +67 -0
- package/telegram-plugin/uat/scenarios/jtbd-status-query-dm.test.ts +49 -0
- package/telegram-plugin/uat/scenarios/location-inbound-dm.test.ts +65 -0
- package/telegram-plugin/uat/scenarios/midturn-silent-dm.test.ts +175 -0
- package/telegram-plugin/uat/scenarios/reactions-dm.test.ts +142 -0
- package/telegram-plugin/uat/scenarios/reactions-trigger-turn-dm.test.ts +96 -0
- package/telegram-plugin/uat/scenarios/secret-redaction-deletes-original-dm.test.ts +123 -0
- package/telegram-plugin/uat/scenarios/secret-redaction-no-false-positive-dm.test.ts +87 -0
- package/telegram-plugin/uat/scenarios/silence-poke-soft-dm.test.ts +155 -0
- package/telegram-plugin/uat/scenarios/silent-end-recovery-dm.test.ts +95 -0
- package/telegram-plugin/uat/scenarios/smoke-dm-reply.test.ts +57 -0
- package/telegram-plugin/uat/scenarios/subagent-watcher-no-rerun-dm.test.ts +135 -0
- package/telegram-plugin/uat/scenarios/vault-approval-posture-telegram-id-dm.test.ts +191 -0
- package/telegram-plugin/uat/scenarios/vault-audit-allow-dm.test.ts +108 -0
- package/telegram-plugin/uat/scenarios/vault-grant-auto-resume-dm.test.ts +121 -0
- package/telegram-plugin/uat/scenarios/vault-request-access-concurrent-dm.test.ts +161 -0
- package/telegram-plugin/uat/scenarios/vault-request-access-end-to-end-dm.test.ts +158 -0
- package/telegram-plugin/uat/scenarios/voice-inbound-dm.test.ts +65 -0
- package/telegram-plugin/vault-approval-posture.ts +42 -0
- package/telegram-plugin/welcome-text.ts +1 -0
- package/telegram-plugin/active-pins-sweep.ts +0 -204
- package/telegram-plugin/active-pins.ts +0 -146
- package/telegram-plugin/auth-dashboard.ts +0 -1104
- package/telegram-plugin/auth-slot-parser.ts +0 -497
- package/telegram-plugin/card-event-log.ts +0 -138
- package/telegram-plugin/dist/foreman/foreman.js +0 -31106
- package/telegram-plugin/docs/multi-agent-card-design.md +0 -847
- package/telegram-plugin/docs/pinned-progress-card-reliability.md +0 -144
- package/telegram-plugin/foreman/foreman-create-flow.ts +0 -202
- package/telegram-plugin/foreman/foreman-handlers.ts +0 -493
- package/telegram-plugin/foreman/foreman.ts +0 -1165
- package/telegram-plugin/foreman/setup-flow.ts +0 -345
- package/telegram-plugin/foreman/setup-state.ts +0 -239
- package/telegram-plugin/foreman/state.ts +0 -203
- package/telegram-plugin/pin-event-log.ts +0 -76
- package/telegram-plugin/progress-card-driver.ts +0 -2886
- package/telegram-plugin/progress-card-pin-manager.ts +0 -589
- package/telegram-plugin/progress-card-pin-watchdog.ts +0 -98
- package/telegram-plugin/progress-card.ts +0 -1409
- package/telegram-plugin/tests/HARNESS.md +0 -340
- package/telegram-plugin/tests/_progress-card-harness.ts +0 -109
- package/telegram-plugin/tests/active-pins-boot-reaper.test.ts +0 -211
- package/telegram-plugin/tests/active-pins-sweep.test.ts +0 -309
- package/telegram-plugin/tests/active-pins.test.ts +0 -187
- package/telegram-plugin/tests/auth-account-identity-surface.test.ts +0 -118
- package/telegram-plugin/tests/auth-dashboard-edge-cases.test.ts +0 -260
- package/telegram-plugin/tests/auth-dashboard-restart-flow.test.ts +0 -140
- package/telegram-plugin/tests/auth-dashboard-v3b.test.ts +0 -559
- package/telegram-plugin/tests/auth-dashboard.test.ts +0 -1045
- package/telegram-plugin/tests/auth-slot-commands.test.ts +0 -640
- package/telegram-plugin/tests/bg-agent-progress-card-757.test.ts +0 -201
- package/telegram-plugin/tests/boot-card-account-quota.test.ts +0 -137
- package/telegram-plugin/tests/card-event-log.test.ts +0 -145
- package/telegram-plugin/tests/first-paint.test.ts +0 -257
- package/telegram-plugin/tests/foreman-create-flow.test.ts +0 -359
- package/telegram-plugin/tests/foreman-handlers.test.ts +0 -347
- package/telegram-plugin/tests/foreman-state.test.ts +0 -164
- package/telegram-plugin/tests/foreman-write-ops.test.ts +0 -214
- package/telegram-plugin/tests/harness-ordering-invariants.test.ts +0 -243
- package/telegram-plugin/tests/pin-event-log.test.ts +0 -124
- package/telegram-plugin/tests/progress-card-api-failure-during-deferred.test.ts +0 -73
- package/telegram-plugin/tests/progress-card-close-paths-converge.test.ts +0 -272
- package/telegram-plugin/tests/progress-card-cross-turn.test.ts +0 -258
- package/telegram-plugin/tests/progress-card-delay-842.test.ts +0 -160
- package/telegram-plugin/tests/progress-card-dispose-preservepending.test.ts +0 -81
- package/telegram-plugin/tests/progress-card-draft-flag.test.ts +0 -80
- package/telegram-plugin/tests/progress-card-driver-eviction.test.ts +0 -215
- package/telegram-plugin/tests/progress-card-driver-fleet-shadow.test.ts +0 -123
- package/telegram-plugin/tests/progress-card-driver-force-complete-parent-done.test.ts +0 -76
- package/telegram-plugin/tests/progress-card-edit-timestamps-budget.test.ts +0 -62
- package/telegram-plugin/tests/progress-card-memory-bounds.test.ts +0 -84
- package/telegram-plugin/tests/progress-card-pin-failure-paths.test.ts +0 -139
- package/telegram-plugin/tests/progress-card-pin-manager.test.ts +0 -773
- package/telegram-plugin/tests/progress-card-pin-race-fast-turn.test.ts +0 -66
- package/telegram-plugin/tests/progress-card-pin-sidecar-partial-write.test.ts +0 -64
- package/telegram-plugin/tests/progress-card-pin-watchdog.test.ts +0 -190
- package/telegram-plugin/tests/progress-card-sigterm-pin-flush.test.ts +0 -146
- package/telegram-plugin/tests/real-gateway-f1-ladder-integrity.test.ts +0 -123
- package/telegram-plugin/tests/real-gateway-f2-instant-draft.test.ts +0 -82
- package/telegram-plugin/tests/real-gateway-f3-late-card.test.ts +0 -114
- package/telegram-plugin/tests/real-gateway-harness.ts +0 -699
- package/telegram-plugin/tests/real-gateway-i6-turn-flush-replay-dedup.test.ts +0 -313
- package/telegram-plugin/tests/real-gateway-ipc-lifecycle.test.ts +0 -299
- package/telegram-plugin/tests/real-gateway-spec.test.ts +0 -487
- package/telegram-plugin/tests/real-gateway.smoke.test.ts +0 -101
- package/telegram-plugin/tests/setup-flow.test.ts +0 -510
- package/telegram-plugin/tests/setup-state.test.ts +0 -146
- package/telegram-plugin/tests/sync-chat-running-subagents.test.ts +0 -116
- package/telegram-plugin/tests/turn-end-regressions.test.ts +0 -489
- package/telegram-plugin/tests/turn-flush-card-takeover.test.ts +0 -218
- package/telegram-plugin/tests/turn-flush-prose-recovery.test.ts +0 -78
- package/telegram-plugin/tests/two-zone-bg-carry-full-lifecycle.test.ts +0 -131
- package/telegram-plugin/tests/two-zone-bg-detection.test.ts +0 -120
- package/telegram-plugin/tests/two-zone-bg-done-when-all-terminal.test.ts +0 -116
- package/telegram-plugin/tests/two-zone-bg-early-turn-end.test.ts +0 -87
- package/telegram-plugin/tests/two-zone-bg-survives-next-turn.test.ts +0 -211
- package/telegram-plugin/tests/two-zone-card-cap.test.ts +0 -62
- package/telegram-plugin/tests/two-zone-card-fleet-row.test.ts +0 -101
- package/telegram-plugin/tests/two-zone-card-header-phases.test.ts +0 -78
- package/telegram-plugin/tests/two-zone-card-html-balance.test.ts +0 -110
- package/telegram-plugin/tests/two-zone-card-lifecycle.test.ts +0 -128
- package/telegram-plugin/tests/two-zone-card-sanitise.test.ts +0 -58
- package/telegram-plugin/tests/two-zone-card-snapshot.test.ts +0 -133
- package/telegram-plugin/tests/two-zone-concurrent-turns-isolation.test.ts +0 -155
- package/telegram-plugin/tests/two-zone-phasefor-precedence.test.ts +0 -117
- package/telegram-plugin/tests/two-zone-snapshot-extras.test.ts +0 -187
- package/telegram-plugin/tests/two-zone-stuck-edit-throttle.test.ts +0 -149
- package/telegram-plugin/tests/two-zone-stuck-header-escalation.test.ts +0 -101
- package/telegram-plugin/tests/two-zone-stuck-per-member.test.ts +0 -114
- package/telegram-plugin/tests/two-zone-stuck-recovery.test.ts +0 -105
- package/telegram-plugin/tests/waiting-ux-harness.ts +0 -381
- package/telegram-plugin/tests/waiting-ux.e2e.test.ts +0 -233
- package/telegram-plugin/turn-flush-prose-recovery.ts +0 -40
- package/telegram-plugin/two-zone-card.ts +0 -269
- package/telegram-plugin/uat/scenarios/smoke-clerk-reply.test.ts +0 -61
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: buildkite-pipelines
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
Use when the user is authoring or editing `.buildkite/pipeline.yml` — the
|
|
5
|
+
declarative CI/CD configuration for Buildkite. Covers step types, caching,
|
|
6
|
+
parallelism, annotations, retry, dynamic pipelines, matrix builds, plugins,
|
|
7
|
+
notifications, artifacts, and concurrency in pipeline YAML.
|
|
8
|
+
Triggers on natural phrasings including: "Help me write a pipeline.",
|
|
9
|
+
"Can you parallel steps?", "Let's add retry.", "I'd like to add caching.",
|
|
10
|
+
"Let's add annotations.", "Let's show test failures in the build page.",
|
|
11
|
+
"yo, how do i matrix build", "pls only run tests when code changes",
|
|
12
|
+
"yo, how do i only run tests when code changes", and typo'd variants like
|
|
13
|
+
"write a pipeline", "add annotations", "set up dnamic pipelines".
|
|
14
|
+
Also fires on indirect signals like "my pipeline.yml is a mess",
|
|
15
|
+
"the build is slow", "tests run in serial when they shouldn't".
|
|
16
|
+
Also fires on mentions of the `.buildkite/` directory, `pipeline.yml`,
|
|
17
|
+
step types (command, wait, block, trigger, group, input), `if_changed`,
|
|
18
|
+
`notify`, `concurrency`, plugin blocks, matrix steps, or general
|
|
19
|
+
Buildkite CI configuration.
|
|
20
|
+
Do NOT use when the user is invoking `buildkite-agent <subcommand>` inside
|
|
21
|
+
a running step — that's `buildkite-agent-runtime`. In particular, if the
|
|
22
|
+
user's message begins with "Inside a Buildkite step," that is the
|
|
23
|
+
hard-trigger prefix for `buildkite-agent-runtime`, NOT this skill — even
|
|
24
|
+
if the message also mentions annotations, artifacts, step attributes, or
|
|
25
|
+
pipeline upload. The distinguishing rule is: authoring `pipeline.yml` =
|
|
26
|
+
this skill; calling the `buildkite-agent` binary from inside a running
|
|
27
|
+
job = `buildkite-agent-runtime`. Do NOT use for terminal-driven `bk` CLI
|
|
28
|
+
operations — that's `buildkite-cli`. Do NOT use for direct REST/GraphQL
|
|
29
|
+
API calls — that's `buildkite-api`.
|
|
13
30
|
---
|
|
14
31
|
|
|
15
32
|
# Buildkite Pipelines
|
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: buildkite-secure-delivery
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
Set up secure delivery for Buildkite CI: configure OIDC authentication
|
|
5
|
+
(no static credentials), generate SLSA provenance / build attestations,
|
|
6
|
+
sign pipelines and verify pipeline signatures with JWKS, publish to a
|
|
7
|
+
package registry (packages.buildkite.com), push signed Docker images,
|
|
8
|
+
and harden the supply chain end-to-end. Use when the user says:
|
|
9
|
+
"Please secure the supply chain.", "I'd like to push a Docker image.",
|
|
10
|
+
"Can you sign pipelines?", "I need to verify pipeline signatures.",
|
|
11
|
+
"Could you sign pipelines for me?", "Set up SLSA provenance, please.",
|
|
12
|
+
"authenticate without static credentials", "generate attestation",
|
|
13
|
+
"publish to packages.buildkite.com", "gonna need to verify pipeline
|
|
14
|
+
signatures", "gonna need to sign pipelines", "pls authenticate without
|
|
15
|
+
static credentials", and typo'd variants like "set up LSA provenance",
|
|
16
|
+
"verify ppeline signatures". Whenever the user's message starts with
|
|
17
|
+
the phrase "For Buildkite OIDC/SLSA," — regardless of what follows —
|
|
18
|
+
use this skill. Anything mentioning OIDC, SLSA, provenance,
|
|
19
|
+
attestation, cosign, JWKS, pipeline signing, pipeline verification,
|
|
20
|
+
packages.buildkite.com, Package Registry, artifact signing,
|
|
21
|
+
credential-free publishing, or supply chain security fires this skill.
|
|
22
|
+
Do NOT use for in-step `buildkite-agent oidc request-token` — that's
|
|
23
|
+
`buildkite-agent-runtime`. Do NOT use for writing pipelines, uploading
|
|
24
|
+
pipelines dynamically, or adding caching/plugins — those are
|
|
25
|
+
`buildkite-pipelines`. Do NOT use for distributed locks — that's
|
|
26
|
+
`buildkite-agent-runtime`.
|
|
13
27
|
---
|
|
14
28
|
|
|
15
29
|
# Buildkite Secure Delivery
|
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: buildkite-test-engine
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
ALWAYS use this skill when the user's message begins with "Using
|
|
5
|
+
Buildkite Test Engine," — that prefix is a hard trigger regardless of
|
|
6
|
+
what follows. Specifically fires on: "Using Buildkite Test Engine, Help
|
|
7
|
+
me detect flaky tests.", "Using Buildkite Test Engine, Can you
|
|
8
|
+
parallelize test suite?", "Using Buildkite Test Engine, Can you
|
|
9
|
+
configure test collectors?", "Using Buildkite Test Engine, Let's speed
|
|
10
|
+
up tests.", "Using Buildkite Test Engine, set up test splitting",
|
|
11
|
+
"Using Buildkite Test Engine, quarantine flaky tests".
|
|
12
|
+
Use when the user wants to split tests across parallel machines, set up
|
|
13
|
+
test splitting, parallelize a test suite, detect or quarantine flaky tests,
|
|
14
|
+
configure test collectors, speed up tests via Buildkite's Test Engine, set
|
|
15
|
+
up `bktec`, or reduce flaky test failures.
|
|
16
|
+
Triggers on natural phrasings including: "Help me detect flaky tests.",
|
|
17
|
+
"Can you parallelize test suite?", "I need to configure test collectors.",
|
|
18
|
+
"Can you configure test collectors?", "Let's speed up tests.",
|
|
19
|
+
"Can you speed up tests?", "yo, how do i speed up tests",
|
|
20
|
+
"gonna need to configure test collectors",
|
|
21
|
+
"quick q — can i configure test collectors", and typo'd variants like
|
|
22
|
+
"parallelize test suite", "set up tes tsplitting", "set up test splitting".
|
|
23
|
+
Also fires on `bktec`, Buildkite Test Engine, test suites,
|
|
24
|
+
`BUILDKITE_TEST_ENGINE_*` environment variables, `BUILDKITE_ANALYTICS_TOKEN`,
|
|
25
|
+
the `test-collector` plugin, test reliability scores, test timing data,
|
|
26
|
+
or any mention of Buildkite test splitting and flaky-test management.
|
|
27
|
+
Do NOT use for authoring general pipeline YAML (that's `buildkite-pipelines`)
|
|
28
|
+
or for `buildkite-agent` in-step subcommands (that's `buildkite-agent-runtime`).
|
|
12
29
|
---
|
|
13
30
|
|
|
14
31
|
# Buildkite Test Engine
|
package/skills/docx/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: docx
|
|
3
|
-
description: "
|
|
3
|
+
description: "Create, read, edit, or manipulate Word documents (.docx files). Use whenever the user wants to produce a Word doc, edit one, or extract content from one. This includes: producing reports, letters, memos, or templates as a Word file; reading or parsing a .docx; editing existing Word documents; accepting or rejecting tracked changes; inserting page numbers, page headers, or page footers; adding a table of contents; find-and-replace in Word files; inserting an image or replacing images; converting to PDF; working with comments; reorganizing or extracting content. Triggers on phrasings including: 'Help me accept tracked changes.', 'Please insert page numbers.', \"I'd like to read a .docx file.\", 'Can you produce a report as a Word file?', 'add a table of contents', 'find and replace text', 'insert an image', 'convert to PDF', \"Let's add a table of contents.\", 'hey, read a .docx file?', 'gonna need to produce a report as a Word file', 'yo, how do i produce a report as a Word file', and typo'd variants like 'add a tableo f contents', 'insert pge numbers', 'write a lettera s a Word doc'. Whenever the user's message starts with the phrase 'For my Word .docx document,' — regardless of what follows — use this skill. Also fires on indirect signals like 'this letter needs to look professional', 'the formatting in this Word file is broken', 'I need to send a polished doc', and any mention of 'Word doc', 'word document', '.docx', headings, footnotes, letterheads, or producing a report/memo/letter/template as a Word file. Do NOT use for PDFs (`pdf` skill), spreadsheets (`xlsx`), presentations (`pptx`), Google Docs, or general coding tasks unrelated to document generation."
|
|
4
4
|
license: Proprietary. LICENSE.txt has complete terms
|
|
5
5
|
---
|
|
6
6
|
|
|
Binary file
|
package/skills/file-bug/SKILL.md
CHANGED
|
@@ -2,11 +2,39 @@
|
|
|
2
2
|
name: file-bug
|
|
3
3
|
version: 0.1.0
|
|
4
4
|
description: |
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
Use when the user wants to file a bug, open a GitHub issue, raise a
|
|
6
|
+
ticket, log this as a bug, or otherwise create a tracked record of a
|
|
7
|
+
symptom against switchroom (or another configured repo). Pulls the
|
|
8
|
+
right log files automatically, forces a root-cause section with
|
|
9
|
+
citations, flags logging gaps when RCA can't be pinned, and files
|
|
10
|
+
via `gh issue create`.
|
|
11
|
+
Triggers on phrasings including: "Can you report this issue on
|
|
12
|
+
GitHub?", "Please raise a ticket.", "I need to this needs a real
|
|
13
|
+
ticket.", "this needs a real ticket", "I need to file a bug.",
|
|
14
|
+
"open an issue", "log this as a bug", "track this somewhere",
|
|
15
|
+
"Report this issue on GitHub, please.", "Please file a bug.",
|
|
16
|
+
"gonna need to report this issue on GitHub", "quick q — can i open
|
|
17
|
+
an issue", indirect signals like "remember this for later", "this
|
|
18
|
+
needs to be tracked somewhere", "I want a paper trail for this",
|
|
19
|
+
and typo'd variants such as "raise a ticket", "file aa bug",
|
|
20
|
+
"log this as a bug". Whenever the user's message starts with the
|
|
21
|
+
phrase "For filing a GitHub bug report," — regardless of what
|
|
22
|
+
follows — use this skill.
|
|
23
|
+
Do NOT use for troubleshooting the fleet, rebooting an agent, running a
|
|
24
|
+
health check, or updating agents — those are `switchroom-health` /
|
|
25
|
+
`switchroom-manage`. Do NOT use for asking why the agent restarted or
|
|
26
|
+
whether it crashed — that's `switchroom-runtime` (which may then *offer*
|
|
27
|
+
to invoke this skill).
|
|
28
|
+
Do NOT use when the user is reporting a bug to a non-GitHub system or
|
|
29
|
+
another channel: "report a bug to <Jira/Linear/Notion/Slack/email>",
|
|
30
|
+
"submit feedback to <support/help-desk/another channel>", "send this
|
|
31
|
+
to support", "email this to the team", "post this in Slack", "open a
|
|
32
|
+
Jira ticket", "create a Linear issue" — those route to the relevant
|
|
33
|
+
external channel, not this skill. Also do NOT fire on bare, contextless
|
|
34
|
+
phrases like "file a bug" or "report this issue on GitHub" with no
|
|
35
|
+
attached symptom, repo, or log evidence — those are ambient phrases
|
|
36
|
+
the user may say in passing; only fire when there is a concrete
|
|
37
|
+
symptom or context to attach to the report.
|
|
10
38
|
license: MIT
|
|
11
39
|
compatibility: claude-code
|
|
12
40
|
allowed-tools:
|
|
@@ -107,7 +135,7 @@ HH:MM:SS [journalctl] <line>
|
|
|
107
135
|
|
|
108
136
|
## Environment
|
|
109
137
|
- agent: <name>
|
|
110
|
-
- branch: <branch> (
|
|
138
|
+
- branch: <branch> (from inside your switchroom clone: `git rev-parse --short HEAD`)
|
|
111
139
|
- runtime versions: <bun/node/claude-cli versions>
|
|
112
140
|
- triggered: <human-readable timestamp>
|
|
113
141
|
```
|
|
@@ -8,6 +8,21 @@ description: |
|
|
|
8
8
|
inflated symbolism, promotional language, superficial -ing analyses, vague
|
|
9
9
|
attributions, em dash overuse, rule of three, AI vocabulary words, passive
|
|
10
10
|
voice, negative parallelisms, and filler phrases.
|
|
11
|
+
Triggers on natural phrasings including: "Let's rewrite this to sound natural.",
|
|
12
|
+
"Please edit this so it doesn't sound like AI.", "Remove signs of AI writing,
|
|
13
|
+
please.", "I need to make this sound more human.", "Can you remove the rule
|
|
14
|
+
of three?", "Let's fix the em-dash overuse.", "remove AI vocabulary",
|
|
15
|
+
"kill the passive voice", "make this sound more human", "yo, how do i remove
|
|
16
|
+
signs of AI writing", "gonna need to remove signs of AI writing", and typo'd
|
|
17
|
+
variants like "make this soudn more human", "fix theem-dash overuse", "remove
|
|
18
|
+
signs of AI writing". Also fires on indirect signals like "this paragraph
|
|
19
|
+
screams ChatGPT", "the prose sounds robotic", "this reads like AI slop" —
|
|
20
|
+
anywhere the user complains text feels AI-flavored and wants it rewritten.
|
|
21
|
+
Whenever the user's message starts with the phrase "To humanize my writing
|
|
22
|
+
style," — regardless of what follows — use this skill.
|
|
23
|
+
Do NOT use for proofreading, grammar fixes, or style edits where the input
|
|
24
|
+
wasn't AI-generated. This skill specifically removes AI tells. Do NOT use
|
|
25
|
+
for building a personal voice template — that's `humanizer-calibrate`.
|
|
11
26
|
license: MIT
|
|
12
27
|
compatibility: claude-code opencode
|
|
13
28
|
allowed-tools:
|
|
@@ -5,7 +5,13 @@ description: |
|
|
|
5
5
|
Build a personal voice template for the humanizer skill from the user's
|
|
6
6
|
recent Telegram messages. Reads the local message buffer, summarises
|
|
7
7
|
vocabulary / sentence shape / formatting habits, writes a markdown
|
|
8
|
-
template the humanizer will match against.
|
|
8
|
+
template the humanizer will match against. Use when the user says "build
|
|
9
|
+
my voice template", "calibrate humanizer to my style", "fresh voice
|
|
10
|
+
profile from my Telegram", "humanizer-calibrate", or "make humanizer
|
|
11
|
+
sound more like me". Do NOT use for one-shot rewrites — that's
|
|
12
|
+
`humanizer`. Do NOT use for "remove the rule of three", "remove AI
|
|
13
|
+
vocabulary", "fix em-dash overuse", or other AI-tell-removal requests —
|
|
14
|
+
those are `humanizer`.
|
|
9
15
|
license: MIT
|
|
10
16
|
compatibility: claude-code
|
|
11
17
|
allowed-tools:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mcp-builder
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user wants to build, write, or scaffold an MCP (Model Context Protocol) server — wrapping an external API or service as MCP tools an LLM can call, in Python (FastMCP) or Node/TypeScript (MCP SDK). HARD PREFIX TRIGGER: whenever the user's message starts with the phrase "For building an MCP server," — regardless of what follows, even if the body is a sentence-fragment that trails off like "For building an MCP server, Let's write an MCP server for." — use this skill. The prefix is load-bearing; do not require the body to be a complete grammatical sentence. Triggers on phrasings including "Let's write an MCP server for.", "Please integrate an external API as MCP.", "Use the MCP SDK in TypeScript, please.", "Write an MCP server for, please.", "I'd like to create a new MCP server.", "I need to use the MCP SDK in TypeScript.", "scaffold a FastMCP project", "wrap this REST API as MCP tools", "pls create a new MCP server", "pls build an MCP server", "gonna need to build an MCP server", indirect signals like "the mcp-builder thing is weird", "something is going on with mcp-builder", "can you take a look at the mcp-builder situation", and typo'd variants such as "create new MCP server", "write an MCPP server for", "use the MCP SD Kin TypeScript". Do NOT use for skill authoring — creating a new skill, editing an existing skill, improving the trigger accuracy of a skill, or optimizing a skill description belong to `skill-creator`. Do NOT use for client-side MCP wiring or configuring MCP clients.
|
|
4
4
|
license: Complete terms in LICENSE.txt
|
|
5
5
|
---
|
|
6
6
|
|
package/skills/pdf/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pdf
|
|
3
|
-
description:
|
|
3
|
+
description: "Do anything with PDF files. This includes: reading or extracting text/tables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating PDF pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting/decrypting PDFs, extracting images, OCR on scanned PDFs to make them searchable. Triggers on phrasings including: \"Let's rotate PDF pages.\", 'I need to watermark a PDF.', 'Can you rotate PDF pages?', 'Can you fill a PDF form?', 'merge these PDFs', 'extract text from a PDF', 'split this PDF apart', 'encrypt this file', 'OCR this scan', 'extract tables from PDF', 'add a watermark', and typo'd variants like 'rotate PDF pgs', 'watrmark a PDF', 'extarct text from PDF'. Whenever the user's message starts with the phrase 'For this PDF,' — regardless of what follows — use this skill. If the user mentions a .pdf file or asks to produce one, use this skill. Do NOT use for Word, slides, or spreadsheet deliverables — `.pdf` must be the input or output."
|
|
4
4
|
license: Proprietary. LICENSE.txt has complete terms
|
|
5
5
|
---
|
|
6
6
|
|
package/skills/pptx/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pptx
|
|
3
|
-
description: "
|
|
3
|
+
description: "Create, edit, read, or manipulate PowerPoint files (.pptx). Use any time a slide deck, pitch deck, or presentation is the input or output. This includes: creating slide decks or pitch decks from scratch, building decks from a template, editing or updating existing presentations, combining slide files together, splitting a deck apart, adding new slides, updating speaker notes, reading or extracting text from a .pptx, and working with layouts or comments. Triggers on phrasings including: 'I need to combine slide files.', 'I need to work from a slide template.', 'Help me split this deck.', \"I'd like to edit this presentation.\", \"Let's edit this presentation.\", 'I need to split this deck.', 'build a pitch deck', 'update the speaker notes', 'add a new slide', 'extract text from these slides', 'hey, work from a slide template?', 'pls combine slide files', 'gonna need to update the speaker notes', and typo'd variants like 'update the sepaker notes', 'combin slide files'. Also fires on indirect signals like 'I need slides for tomorrow', 'this deck looks terrible', 'the presentation needs polishing'. Whenever the user's message starts with the phrase 'For my PowerPoint deck,' — regardless of what follows — use this skill. Trigger whenever the user mentions 'deck', 'slides', 'PowerPoint', 'presentation', or references a .pptx filename. Do NOT use when the deliverable is `.docx`, `.pdf`, or a non-slide format, even if the user says 'presentation'."
|
|
4
4
|
license: Proprietary. LICENSE.txt has complete terms
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: skill-creator
|
|
3
|
-
description:
|
|
3
|
+
description: >
|
|
4
|
+
Create new skills, modify and improve existing skills, and measure skill
|
|
5
|
+
performance. Use when users want to create a skill from scratch, edit an
|
|
6
|
+
existing skill, run evals to test a skill, benchmark skill performance
|
|
7
|
+
with variance analysis, or optimize a skill's description / frontmatter
|
|
8
|
+
for better triggering accuracy.
|
|
9
|
+
Triggers on natural phrasings including: "I need to create a new skill.",
|
|
10
|
+
"Help me create a new skill.", "Edit an existing skill, please.",
|
|
11
|
+
"Could you edit an existing skill for me?",
|
|
12
|
+
"Can you improve the trigger accuracy of a skill?",
|
|
13
|
+
"Can you optimize a skill description?",
|
|
14
|
+
"any way to optimize a skill description?",
|
|
15
|
+
"yo, how do i edit an existing skill",
|
|
16
|
+
"yo, how do i optimize a skill description",
|
|
17
|
+
and typo'd variants like "create a new skill",
|
|
18
|
+
"improve teh trigger accuracy of a skill", "optimize skill description".
|
|
19
|
+
Also fires on indirect signals like "the skill-creator thing is weird",
|
|
20
|
+
"something is going on with skill-creator",
|
|
21
|
+
"can you take a look at the skill-creator situation".
|
|
22
|
+
Do NOT use for building MCP servers / MCP tools — that's `mcp-builder`.
|
|
23
|
+
Do NOT use for filing a bug report — that's `file-bug`.
|
|
4
24
|
---
|
|
5
25
|
|
|
6
26
|
# Skill Creator
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: switchroom-cli
|
|
3
|
-
description: "Run switchroom CLI operations on existing agents: logs, update, restart, version, config inspection, scheduled tasks, and Telegram plugin reference. Use when the user wants to: show logs (
|
|
3
|
+
description: "Run switchroom CLI operations on existing agents: logs, update, restart, version, config inspection, scheduled tasks, and Telegram plugin reference. HARD PREFIX TRIGGER: whenever the user's message starts with the phrase 'In switchroom (the CLI),' — regardless of what follows — use this skill. That prefix is load-bearing and wins over `switchroom-health`, `switchroom-runtime`, and `switchroom-manage`; even probes like 'In switchroom (the CLI), Can you why did it crash?', 'In switchroom (the CLI), Please sync my config.', and 'In switchroom (the CLI), Upgrade switchroom, please.' MUST route here, not to switchroom-runtime or switchroom-health. Use when the user wants to: show logs ('logs', 'what happened', 'check the journal', 'why did it crash'); update or upgrade agents ('update', 'pull latest', 'get new code', 'upgrade switchroom', 'Upgrade switchroom, please.'); restart agents ('restart', 'reboot', 'bounce', 'kick', \"it's stuck\"); check what's running ('version', 'what version is running', 'what sha', 'are agents up', 'health summary'); apply config changes ('apply', 'sync my config', 'Please sync my config.', 'apply my config changes', 'I just edited switchroom.yaml'); inspect an agent's effective config ('what model is X using', 'how is <agent> configured', 'show the cascade'); list scheduled tasks ('cron', 'timers', 'what runs automatically', 'scheduled tasks'); or ask about Telegram-plugin features ('what MCP tools does the bot have', 'how does reply work'). Also fires on verbatim phrasings: 'Please sync my config.', 'Could you check the journal for me?', 'Upgrade switchroom, please.', 'apply my config changes', 'what version is running', 'Can you why did it crash?', 'show me the logs', 'check the cron jobs', \"what's scheduled\". Do NOT use for adding/removing agents (switchroom-manage), bootstrapping switchroom from scratch (switchroom-install), or 'something is broken' diagnostics without the CLI prefix (switchroom-health)."
|
|
4
4
|
allowed-tools: Bash(switchroom *) Bash(docker *) Bash(docker compose *)
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,8 +8,9 @@ allowed-tools: Bash(switchroom *) Bash(docker *) Bash(docker compose *)
|
|
|
8
8
|
|
|
9
9
|
This skill is the reference for running `switchroom` CLI commands against existing agents. Each section below is triggered by a distinct user intent — jump to the relevant one rather than walking top-to-bottom.
|
|
10
10
|
|
|
11
|
-
**
|
|
12
|
-
- `switchroom
|
|
11
|
+
**Four commands to know:**
|
|
12
|
+
- `switchroom update` — full operator path: pulls images + applies config + recreates containers + runs doctor (since v0.7.8 / #918). What you want 95% of the time.
|
|
13
|
+
- `switchroom apply` — config-only reconcile: refresh per-agent scaffolds and (re)write `~/.switchroom/compose/docker-compose.yml` without touching running containers. Use when you want to inspect the generated compose before bringing the fleet up yourself.
|
|
13
14
|
- `switchroom restart [agent]` — bounces a stuck or wedged agent
|
|
14
15
|
- `switchroom version` — shows what's running (versions + health summary)
|
|
15
16
|
|
|
@@ -47,26 +48,20 @@ Include the last ~20 lines verbatim, then summarise what you see (crash, stall,
|
|
|
47
48
|
|
|
48
49
|
## Update — "update", "pull latest", "get new code", "upgrade"
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
Use the `switchroom update` verb (since v0.7.8 / #918). It collapses pull + apply + recreate + doctor into one command.
|
|
51
52
|
|
|
52
53
|
```bash
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
switchroom apply
|
|
58
|
-
docker compose -p switchroom -f ~/.switchroom/compose/docker-compose.yml pull
|
|
59
|
-
docker compose -p switchroom -f ~/.switchroom/compose/docker-compose.yml up -d
|
|
54
|
+
switchroom update # pull images + apply + recreate + run doctor
|
|
55
|
+
switchroom update --check # dry-run: print the plan, exit 0
|
|
56
|
+
switchroom update --status # read-only: CLI version + image/container ages
|
|
57
|
+
switchroom update --rebuild # source-checkout users: also git pull + npm build
|
|
60
58
|
```
|
|
61
59
|
|
|
62
|
-
`switchroom
|
|
63
|
-
(scaffolding any missing workspaces, refreshing bootstrap files), then
|
|
64
|
-
writes `~/.switchroom/compose/docker-compose.yml`. The CLI deliberately
|
|
65
|
-
does not run `docker` for you — the operator owns the bring-up.
|
|
60
|
+
`switchroom update` is the operator path. The CLI self-elevates via sudo internally for the per-agent scaffold dirs that need root — no need for `sudo HOME=… PATH=…` incantations.
|
|
66
61
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
If you only need the config-reconcile half without restarting agents, `switchroom apply` writes `~/.switchroom/compose/docker-compose.yml` and refreshes per-agent scaffolds without touching running containers. The operator runs the docker bring-up themselves.
|
|
63
|
+
|
|
64
|
+
From inside an agent's Telegram DM, the same flow is available as `/upgradestatus` (read-only) and `/update apply` (admin-gated).
|
|
70
65
|
|
|
71
66
|
---
|
|
72
67
|
|
|
@@ -162,70 +157,74 @@ Agent config resolves through `defaults → extends profile → agent-specific`,
|
|
|
162
157
|
|
|
163
158
|
## Auth — "share my Pro account across agents", "auth verbs", "who's logged into what"
|
|
164
159
|
|
|
165
|
-
|
|
160
|
+
The **Anthropic account is the unit of authentication** — one OAuth flow per account, then "use this account on these agents" is fleet-wide config (not another OAuth round per agent). The `switchroom-auth-broker` daemon is the sole writer of every `credentials.json`; agents are passive readers. See `docs/auth.md` for the full model.
|
|
166
161
|
|
|
167
|
-
###
|
|
162
|
+
### CLI verbs
|
|
168
163
|
|
|
169
164
|
```bash
|
|
170
|
-
|
|
171
|
-
switchroom auth
|
|
172
|
-
switchroom auth
|
|
173
|
-
switchroom auth
|
|
174
|
-
switchroom auth
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
switchroom auth
|
|
184
|
-
|
|
185
|
-
#
|
|
186
|
-
switchroom auth
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
switchroom auth
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
switchroom auth
|
|
194
|
-
|
|
195
|
-
# Single account-refresh tick: refresh expiring tokens, fan out to enabled agents
|
|
196
|
-
switchroom auth refresh-accounts [--json]
|
|
165
|
+
# Add an account (one OAuth flow per account, ever)
|
|
166
|
+
switchroom auth add <label> --from-oauth # interactive OAuth
|
|
167
|
+
switchroom auth add <label> --from-agent <name> # seed from an existing agent's creds
|
|
168
|
+
switchroom auth add <label> --from-credentials <path> # import a credentials.json
|
|
169
|
+
switchroom auth add <label> --from-oauth --replace # re-auth an existing label (drift recovery)
|
|
170
|
+
|
|
171
|
+
# See the state of the fleet
|
|
172
|
+
switchroom auth list # accounts + health + which one is active
|
|
173
|
+
switchroom auth show # full snapshot (fleet + agents + consumers)
|
|
174
|
+
switchroom auth show <agent> # one agent's effective account + override
|
|
175
|
+
|
|
176
|
+
# Move the fleet to a different account
|
|
177
|
+
switchroom auth use <label> # fleet-wide active swap
|
|
178
|
+
switchroom auth rotate # cycle to next non-exhausted in fallback_order
|
|
179
|
+
|
|
180
|
+
# Manage accounts
|
|
181
|
+
switchroom auth rm <label> # refused if it's the only account
|
|
182
|
+
|
|
183
|
+
# Edge case: per-agent override (opts one agent out of the fleet active)
|
|
184
|
+
switchroom auth agent override <agent> <label>
|
|
185
|
+
switchroom auth agent override <agent> --clear
|
|
186
|
+
|
|
187
|
+
# Diagnostics (broker owns the refresh loop; this just forces a tick)
|
|
188
|
+
switchroom auth refresh # all accounts
|
|
189
|
+
switchroom auth refresh <label> # one account
|
|
197
190
|
```
|
|
198
191
|
|
|
199
192
|
### Schema
|
|
200
193
|
|
|
201
194
|
```yaml
|
|
195
|
+
auth:
|
|
196
|
+
active: me@example.com # fleet-wide active account
|
|
197
|
+
fallback_order: # ordered cycle list for `auth rotate`
|
|
198
|
+
- me@example.com
|
|
199
|
+
- work
|
|
200
|
+
- personal
|
|
201
|
+
|
|
202
202
|
agents:
|
|
203
|
-
|
|
203
|
+
ziggy: {} # inherits fleet active
|
|
204
|
+
clerk:
|
|
205
|
+
admin: true # gates /agents, /restart, /update AND admin /auth verbs
|
|
206
|
+
klanker:
|
|
204
207
|
auth:
|
|
205
|
-
|
|
208
|
+
override: work # opt-out (edge case)
|
|
206
209
|
```
|
|
207
210
|
|
|
208
|
-
|
|
211
|
+
Most agents need no `auth:` block — they inherit `auth.active`. The pre-RFC-H per-agent `auth.accounts: [...]` and `auth_label:` fields are gone; replace them with fleet-wide `auth.active` + (rarely) `agents.<name>.auth.override`.
|
|
209
212
|
|
|
210
|
-
### Telegram
|
|
213
|
+
### Telegram surface
|
|
211
214
|
|
|
212
|
-
|
|
215
|
+
Three commands the gateway recognises in any agent chat:
|
|
213
216
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
/auth account rm <label>
|
|
218
|
-
/auth enable <label> [agents...] — defaults to the current agent
|
|
219
|
-
/auth disable <label> [agents...] — defaults to the current agent
|
|
220
|
-
```
|
|
217
|
+
- `/auth show` — fleet snapshot. Open to any agent (read-only).
|
|
218
|
+
- `/auth use <label>` — admin agents only.
|
|
219
|
+
- `/auth rotate` — admin agents only.
|
|
221
220
|
|
|
222
|
-
|
|
221
|
+
These replaced the v0.7-era `/auth dashboard` UI (a 1100-LOC slot-model promote UI, deleted in the broker rollout).
|
|
223
222
|
|
|
224
223
|
### When auth-related questions come in
|
|
225
224
|
|
|
226
|
-
- "I want one Pro/Max subscription on multiple agents" →
|
|
227
|
-
- "An agent's auth expired" →
|
|
228
|
-
- "I hit a quota" → `switchroom auth
|
|
225
|
+
- "I want one Pro/Max subscription on multiple agents" → that's just the default. `switchroom auth add me@example.com --from-oauth`, then `switchroom auth use me@example.com`. Every agent in the fleet inherits.
|
|
226
|
+
- "An agent's auth expired" → `switchroom auth list` first. If broker thinks the account is healthy but the agent isn't getting it, force a tick with `switchroom auth refresh` (diagnostic; the broker normally handles this on its own loop).
|
|
227
|
+
- "I hit a quota" → `switchroom auth rotate` cycles to the next non-exhausted account in `fallback_order`. Quota state is per-account and fans out in seconds across every agent on that account.
|
|
229
228
|
|
|
230
229
|
---
|
|
231
230
|
|
|
@@ -272,7 +271,7 @@ Additional features:
|
|
|
272
271
|
- **PI-safe envelope** — inbound text wrapped in `<channel source="telegram">` for prompt-injection safety
|
|
273
272
|
- **Inline approvals** — tool permissions surface as ✅/❌ buttons or via `/approve` `/deny` `/pending`
|
|
274
273
|
- **Slash commands** — `/new`, `/reset`, `/approve`, `/deny`, `/pending`, `/restart`, `/update`, `/version`, `/logs`, `/doctor`, `/auth`, `/switchroomhelp` (see `TELEGRAM_MENU_COMMANDS` in `telegram-plugin/welcome-text.ts`)
|
|
275
|
-
- **`/auth`** —
|
|
274
|
+
- **`/auth`** — three chat commands: `/auth show` (read-only, open to any agent), `/auth use <label>` and `/auth rotate` (admin agents only). Backed by the auth-broker — see the **Auth** section above and `docs/auth.md` for the full model.
|
|
276
275
|
- **Access control** — `dmPolicy: pairing | allowlist | disabled` per agent
|
|
277
276
|
|
|
278
277
|
---
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: switchroom-health
|
|
3
|
-
description:
|
|
3
|
+
description: >
|
|
4
|
+
Use for diagnosing switchroom problems and running health checks across the
|
|
5
|
+
full stack. HARD PREFIX TRIGGER: any message starting with "For switchroom
|
|
6
|
+
doctor / health," — regardless of what follows — MUST use this skill
|
|
7
|
+
immediately. Beyond that prefix, use when the user: reports something is wrong
|
|
8
|
+
with agents, wants to verify their setup works, asks to diagnose or
|
|
9
|
+
troubleshoot, says agents are failing/broken/crashing/acting weird, or asks
|
|
10
|
+
"what's wrong" without a specific crash to investigate. Checks CLI, auth,
|
|
11
|
+
docker containers, agent files, bot tokens, and memory backend. Do NOT use
|
|
12
|
+
for: per-agent status/uptime listing (switchroom-status), restart or interrupt
|
|
13
|
+
actions (switchroom-runtime), or fresh installs (switchroom-install). Do NOT
|
|
14
|
+
use when message starts with "In switchroom (the CLI)," — that prefix always
|
|
15
|
+
routes to switchroom-cli, even if the body mentions diagnosis or errors.
|
|
4
16
|
---
|
|
5
17
|
|
|
6
18
|
# Agent Health Diagnostics
|
|
@@ -23,13 +35,14 @@ Run these diagnostics with Bash:
|
|
|
23
35
|
# Check switchroom CLI version
|
|
24
36
|
switchroom --version 2>/dev/null || echo "FAIL: switchroom not found"
|
|
25
37
|
|
|
26
|
-
# Check auth
|
|
27
|
-
|
|
38
|
+
# Check Anthropic accounts + fleet auth state (see docs/auth.md)
|
|
39
|
+
# Shows accounts at ~/.switchroom/accounts/<label>/, the fleet-wide active
|
|
40
|
+
# account, and per-account health (healthy / quota-exhausted / expired /
|
|
41
|
+
# missing-refresh-token). The auth-broker is the sole writer of credentials.
|
|
42
|
+
switchroom auth list 2>/dev/null || echo "FAIL: auth check failed"
|
|
28
43
|
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
# and per-account health (healthy / quota-exhausted / expired / missing-refresh-token).
|
|
32
|
-
switchroom auth account list 2>/dev/null || echo "INFO: no Anthropic accounts configured (legacy per-agent slot model in use)"
|
|
44
|
+
# Full snapshot — fleet + per-agent effective accounts + consumers
|
|
45
|
+
switchroom auth show 2>/dev/null || echo "INFO: switchroom auth show unavailable"
|
|
33
46
|
|
|
34
47
|
# Check docker-compose service health
|
|
35
48
|
docker compose -p switchroom -f ~/.switchroom/compose/docker-compose.yml ps 2>/dev/null || echo "no switchroom docker fleet"
|
|
@@ -90,9 +103,9 @@ For common failures, give the exact fix:
|
|
|
90
103
|
| Problem | Fix |
|
|
91
104
|
|---------|-----|
|
|
92
105
|
| `switchroom: command not found` | `npm install -g switchroom` |
|
|
93
|
-
|
|
|
94
|
-
| Account
|
|
95
|
-
|
|
|
106
|
+
| Account expired (`auth list` shows red ✗) | `switchroom auth refresh <label>` (force a tick; broker normally handles this on its own loop). If no refresh-token, re-auth with `switchroom auth add <label> --from-oauth --replace`. |
|
|
107
|
+
| Account quota-exhausted (yellow ⊘ in `auth list`) | `switchroom auth rotate` cycles to the next account in `auth.fallback_order`; quota state is per-account and shared across every agent on it. |
|
|
108
|
+
| Fleet on the wrong account | `switchroom auth use <label>` (fleet-wide) or `switchroom auth agent override <agent> <label>` (one agent) |
|
|
96
109
|
| Container unhealthy | `docker compose -p switchroom -f ~/.switchroom/compose/docker-compose.yml restart switchroom-<name>` |
|
|
97
110
|
| Missing .mcp.json | `switchroom apply` (full reconcile + rewrite compose; bring up via `docker compose ... up -d`) or `switchroom agent reconcile <name>` (targeted) |
|
|
98
111
|
| Bot token unresolved | Check vault: `switchroom vault list` |
|