sonichi/sutando/skills/self-upgrade/SKILL.md
self-upgrade
Safely upgrade this Sutando checkout to the latest upstream code **without
- Source repository stars
- 359
- Declared platforms
- 0
- Static risk flags
- 1
- Last source update
- 2026-07-28
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
Safely upgrade this Sutando checkout to the latest upstream code without bricking the running core session — the "success path" distilled from a real 2026-07-20 upgrade that would otherwise hang (and did, the first time).
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/sonichi/sutando --skill "skills/self-upgrade"Inspect the Agent Skill "self-upgrade" from https://github.com/sonichi/sutando/blob/6a8f0fccd32e5aa620a3572c8885544f144bb6fe/skills/self-upgrade/SKILL.md at commit 6a8f0fccd32e5aa620a3572c8885544f144bb6fe. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Step 1 — Pull + durable restart handoff (mechanical)
Run the helper. It aborts safely on a dirty tree or a non-fast-forward, pulls --ff-only, and launches src/restart.sh in the persistent sutando-services tmux session:
Run the helper. It aborts safely on a dirty tree or a non-fast-forward, pulls --ff-only, and launches src/restart.sh in the persistent sutando-services tmux session:bash bash skills/self-upgrade/scripts/upgrade.sh origin/main - 02
Step 2 — Verify + report
Expect "All systems operational." Confirm the core survived (the restart log contains sutando-core already running — restart.sh never touches the core CLI), the managed sutando-core-watcher tmux session exists, and bridges came back on new PIDs. telegram-bridge / slack-bridge wa…
Expect "All systems operational." Confirm the core survived (the restart log contains sutando-core already running — restart.sh never touches the core CLI), the managed sutando-core-watcher tmux session exists, and brid…For live-path evidence, submit one task through POST /task, write its result, and confirm GET /result/ returns that exact body after the restart.Report to the owner: old → new commit, how many commits, whether a rebuild was needed, and that the core stayed up. - 03
Why this skill exists
A naive "pull + restart" self-upgrade gets stuck, because:
src/restart.sh ends with exec bash src/startup.sh.src/startup.sh runs foreground work — it rebuilds the Swift helpersSo running restart.sh inline from the core session never returns — - 04
On activation
Run the helper. It aborts safely on a dirty tree or a non-fast-forward, pulls --ff-only, and launches src/restart.sh in the persistent sutando-services tmux session:
Run the helper. It aborts safely on a dirty tree or a non-fast-forward, pulls --ff-only, and launches src/restart.sh in the persistent sutando-services tmux session:bash bash skills/self-upgrade/scripts/upgrade.sh origin/main - 05
bash skills/self-upgrade/scripts/upgrade.sh --no-restart pull only
bash python3 src/health-check.py
Never run restart.sh / startup.sh inline from the core session, andDo NOT hand-kill an active sutando-services session to "tidy up."Verify a process is actually yours before killing anything. pgrep -f
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
bash skills/self-upgrade/scripts/upgrade.sh # origin/mainRuns scripts
The documentation asks the agent to run terminal commands or scripts.
# bash skills/self-upgrade/scripts/upgrade.sh --no-restart # pull onlyEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 67/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 359 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- sonichi/sutando
- Skill path
- skills/self-upgrade/SKILL.md
- Commit
- 6a8f0fccd32e5aa620a3572c8885544f144bb6fe
- License
- MIT
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
Self-upgrade
Safely upgrade this Sutando checkout to the latest upstream code without bricking the running core session — the "success path" distilled from a real 2026-07-20 upgrade that would otherwise hang (and did, the first time).
Usage: /self-upgrade
Why this skill exists
A naive "pull + restart" self-upgrade gets stuck, because:
src/restart.shends withexec bash src/startup.sh.src/startup.shruns foreground work — it rebuilds the Swift helpers (ax-read,Sutando.app) and it foreground-parents the credential-proxy (atsxprocess that never exits).- So running
restart.shinline from the core session never returns — the Bash call hangs forever, the task never gets a result, and from the owner's side you've "gone stuck."
The fix is simple once you know it: hand the restart to the same durable tmux
server that owns the core. A plain nohup … & is not enough: the supported
Codex executor tears down that process tree when the tool call ends. A detached
tmux service pane survives that boundary, remains the parent of restarted
services, and lets startup recreate the managed task notifier.
On activation
Step 1 — Pull + durable restart handoff (mechanical)
Run the helper. It aborts safely on a dirty tree or a non-fast-forward, pulls
--ff-only, and launches src/restart.sh in the persistent
sutando-services tmux session:
bash skills/self-upgrade/scripts/upgrade.sh # origin/main
# bash skills/self-upgrade/scripts/upgrade.sh --no-restart # pull only
Exit 0 = upgraded (or already latest); exit 2 = aborted (dirty tree /
not a fast-forward) — surface the reason and stop.
If the diff touched package*.json / tsconfig / *.swift / requirements
(the script prints this), a rebuild may be needed — startup.sh handles the
Swift rebuild itself; for npm deps run npm ci before relying on the TS
services.
Step 2 — Verify + report
python3 src/health-check.py
Expect "All systems operational." Confirm the core survived (the restart
log contains sutando-core already running — restart.sh never touches the
core CLI), the managed sutando-core-watcher tmux session exists, and bridges
came back on new PIDs. telegram-bridge / slack-bridge warnings are fine
if they were already optional/unconfigured.
For live-path evidence, submit one task through POST /task, write its result,
and confirm GET /result/<id> returns that exact body after the restart.
Report to the owner: old → new commit, how many commits, whether a rebuild was needed, and that the core stayed up.
Guardrails (learned the hard way)
- Never run
restart.sh/startup.shinline from the core session, and do not rely on plainnohup … &. Inline = stuck; an executor may reap the nohup child. Use the helper's durable tmux handoff. - Do NOT hand-kill an active
sutando-servicessession to "tidy up." It deliberately parks after startup completes so background bridges keep their durable parent. The helper marks the sessiondoneand only replaces that completed session when a later upgrade actually needs another restart. - Verify a process is actually yours before killing anything.
pgrep -f watch-tasks-streamalso matches other installs (e.g. a/tmp/…checkout); match the full repo path, not a bare pattern. - Clean tree first. The helper aborts on uncommitted changes rather than clobber them; commit or stash before upgrading.
Iteration log
- v0.2.0 — 2026-07-23 — replace plain
nohupwith a durablesutando-servicestmux handoff that outlives task executors and keeps the bridge parent alive after startup; completion markers are isolated per tmux socket. - v0.1.0 — 2026-07-20 — initial. Distilled from a live self-upgrade (8 commits behind → 0) where the naive inline restart hung on startup.sh's foreground Swift build + credential-proxy hold.
Alternatives
Compare before choosing
coreyhaines31/marketingskills
ab-testing
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
event4u-app/agent-config
design-review
Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more.
K-Dense-AI/scientific-agent-skills
dask
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
K-Dense-AI/scientific-agent-skills
neurokit2
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.