swain-helm
Start, stop, and monitor the swain-helm bridge system (VISION-006). The watchdog manages project bridges that route Zulip messages to opencode serve, enabling session control from any device. Triggers on: 'helm', 'bridge', 'untethered', 'start bridge', 'stop bridge', 'helm status', 'helm logs', 'is the bridge running'.
What this skill does
<!-- swain-model-hint: haiku, effort: low -->
# swain-helm
Manages the swain-helm bridge system: starts the watchdog daemon, registers projects, monitors health, and tears down cleanly. The watchdog is a persistent process that reconciles desired state — ensuring project bridges and opencode serve are running.
## Locate the CLI
```bash
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
HELM="$REPO_ROOT/bin/swain-helm"
```
If not found at that path, glob for `**/bin/swain-helm`.
## Runtime files
| File | Purpose |
|------|---------|
| `~/.config/swain-helm/run/watchdog.pid` | Watchdog process PID. |
| `~/.config/swain-helm/run/bridges/<name>.pid` | Per-project bridge PID. |
| `~/.config/swain-helm/run/opencode-instances.json` | Discovered/tracked opencode serve instances. |
| `~/.config/swain-helm/helm.config.json` | Global config (chat credentials, opencode auth). |
| `~/.config/swain-helm/projects/<name>.json` | Per-project desired state. |
## Commands
### host up ("start bridge" / "helm up" / default)
Start the watchdog daemon. Resolves 1Password credentials at startup (requires biometric unlock):
```bash
swain-helm host up
```
Foreground mode for debugging:
```bash
swain-helm host up --foreground
```
The watchdog discovers project configs, starts bridges, and finds or starts opencode serve. If 1Password is locked, the command fails with a clear error.
### host down ("stop bridge" / "helm down" / "shut down bridge")
```bash
swain-helm host down
```
Stops the watchdog and all project bridges. Use `--project <name>` to stop only one bridge:
```bash
swain-helm host down --project swain
```
### host status ("helm status" / "is the bridge running" / "bridge health")
```bash
swain-helm host status
```
Reports: watchdog PID, each bridge PID and health, opencode serve port/health/auth status.
### host provision ("provision bridge" / "setup bridge")
One-time setup: registers Zulip bot, creates stream, writes `helm.config.json`:
```bash
swain-helm host provision
```
### project add ("add project" / "register project")
Register a project for the watchdog to manage:
```bash
swain-helm project add ./ # current directory (rejects if no .git/)
swain-helm project add ~/code/swain # absolute path
```
Writes `~/.config/swain-helm/projects/<name>.json`. The watchdog picks it up on the next reconciliation cycle (every 30s).
### project remove ("remove project")
```bash
swain-helm project remove --project swain
```
Removes the project config. The watchdog stops the bridge on the next cycle.
### project list ("list projects")
```bash
swain-helm project list
```
Shows all registered projects with their running status.
### logs ("helm logs" / "show bridge logs" / "what is the bridge doing")
Tail the watchdog log:
```bash
tail -50 /tmp/swain-helm.log
```
For continuous streaming, tell the operator to run `tail -f /tmp/swain-helm.log` in their terminal.
### restart ("restart bridge" / "helm restart")
Stop then start:
```bash
swain-helm host down && swain-helm host up
```
## After starting
Show the operator:
1. Bridge status (from `host status` output).
2. How to attach: `opencode attach http://127.0.0.1:<PORT>`.
3. Zulip stream to use for sending prompts.
4. Log path for monitoring: `/tmp/swain-helm.log`.
## Error handling
- If `bin/swain-helm` is not found, tell the operator the untethered package may not be installed and point to RUNBOOK-004.
- If 1Password is locked at startup, report clearly: "Unlock 1Password and retry."
- If opencode serve fails the health check, show the last 20 lines of `/tmp/opencode-serve.log`.
- Never fail silently — always report what was attempted and what failed.Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.