handsoff
Contract for hands-off mode — the ultrapack workflow variant that minimizes user prompts after Design, takes the safest reversible path, and logs every…
Skill by btseytlin
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/btseytlin-handsoff
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, design, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/handsoff
What's inside
- Skill name
handsoff- Description
- Contract for hands-off mode — the ultrapack workflow variant that minimizes user prompts after Design, takes the safest reversible path, and logs every auto-choice for one end-of-task review. Referenced by the workflow entry point and child skills (udesign, uplan, uexecute, uverify, ureview). Read when the task file's **Mode:** header is `hands-off`.
- License
- WTFPL
- Instructions
- 99 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Hands-off mode
The contract every ultrapack skill honors when the task file's `**Mode:**` header is `hands-off`. One home for the rules so child skills don't duplicate them.
## When this applies
The task file header names the mode:
```
**Mode:** hands-off
```
If absent or set to `interactive`, ignore this skill entirely — normal interactive flow.
## What hands-off is for
The user has said "run the full workflow and don't ask me each step." This is permission to proceed, not permission to guess. Hands-off **reduces prompts**; it does not **expand authority**. Two directives:
1. **Fewer questions after Design.** Don't gate progress on "should I fix this?" or "approve the plan?" — just do it.
2. **Safest reversible path, least assumptions.** When two routes both work, pick the one easier to undo. When a choice lacks an obvious conservative default, don't invent one — defer.
The user trades per-step approval for one end-of-task review against the decision log.
## Safety principles
<required>
In hands-off, every stage picks the **most reversible** path available. The user isn't there to catch a destructive move. Specifically:
- **Always work on a dedicated branch + worktree.** Never edit `main` / `master` directly in hands-off. If `git-worktrees` cannot provision one, log under `### Deferred (needs user input)` and stop — do not fall back to working on the main branch.
- Make direct, scoped edits. Preserve reversibility through version control.
- **Never destructive git operations.** No `reset --hard`, no `branch -D`, no force-push, no `clean -f`, no overwriting of uncommitted work. If a clean state is needed, stash.
- **Never push to remote.** Pushing is always user-initiated, even in hands-off. The end-of-task step offers push/PR as an option; it does not execute it.
- **Never skip hooks or bypass signing** (`--no-verify`, `--no-gpg-sign`). If a hook fails, fix the underlying issue, not the hook-skip.
- **No mass deletes or rewrites.** If the plan calls for deleting many files, flag it and proceed one at a time with commits between. Keep the rollback surface.
- **External spec files are read-only.** Same rule as interactive.
- **Never auto-mark `done` on an unconfirmed Goal.** If the Goal needs a real-world run or an outcome the agent can't observe (training works at scale), the task ends at `validating`: list the remaining steps under `### Deferred (needs user input)` and surface them at end-of-task. The user confirms the Goal later; hands-off does not.
</required>
Conservative ≠ inventive. When unsure whether an action is reversible, assume it isn't and defer.
## The decision log
Every auto-choice that would normally have prompted the user lands in the task file's Conclusion under:
```
### Hands-off decisions
- <stage>: <choice> — <rationale>
```
`<stage>` is the skill name (`make`, `udesign`, `uplan`, `uexecute`, `ureview`). Every entry is one line. The list is what the user reviews at end-of-task.
## The deferred log
When a choice has no conservative default — a required argument with no rigid fallback, a failing worktree provision, a smoke test that can't run, an ambiguous finding — do **not** guess. Append:
```
### Deferred (needs user input)
- <what was skipped> — <why> — <what the user needs to decide>
```
Then keep going on the rest, or stop and ask if the blocker is structural. The task can still finish with deferred items open; they're the agenda for the end-of-task prompt.
## No-default rule
If a value is required and neither the user nor the plan specified one:
- **Don't invent a "safe-looking" default.** `timeout=30` is not safe — it's invented. The user may have meant 5, or 300.
- **Don't pick a "common" value.** Commonness is not authorization.
- **Either:** the rigid path ("same as before", "as the user wrote it"), if one exists.
- **Or:** defer under `### Deferred (needs user input)`.
This rule is strictly stronger than the interactive-mode `uexecute` rule ("no silent fallbacks"). Hands-off keeps it loud.
## End-of-task summary
At the end of [make](../make/SKILL.md), present the `### Hands-off decisions` list and any `### Deferred (needs user input)` items before offering finish actions. Use this prompt:
> Here's what I did to make it hands-off. Want to change anything?
Only after the user responds does the workflow offer merge/PR/cleanup options. This is the single required interaction between Design and finish.
## Per-stage behavior (summary — see each SKILL.md for details)
- **make** — auto-classifies size (default Medium), auto-picks branch + worktree (default: new branch + worktree), logs the picks.
- **udesign** — runs as normal; relaxes "one question per message" to "ask only when genuinely blocking"; logs conservative defaults.
- **uplan** — skips the approval wait; logs `- uplan: plan auto-approved`.
- **uexecute** — behavior unchanged (the interactive rules already match hands-off's safety intent); stop-and-ask list now logs under Deferred.
- **uverify** — behavior unchanged; infeasible smoke tests log under Deferred.
- **ureview** — high-confidence actionable findings are announced-and-applied (no pause); low-confidence / ambiguous findings log under Deferred instead of being auto-fixed.
## Rules
- Reversibility over speed: a slower path that leaves rollback intact beats a faster path that doesn't.
- Log over guess: one line in the decision log always beats an inferred default.
- The task-file `**Mode:**` header is the single source of truth; no environment flags, no in-session memory.
- `### Hands-off decisions` must exist in every hands-off task's Conclusion and be surfaced at end-of-task.
- If the header is missing, behave as interactive. Do not assume hands-off from other signals.From btseytlin/ultrapack, WTFPL.
More from btseytlin/ultrapack
- 0.658score
expand
btseytlin
Turn one user criticism into a principle-level fix: find the violated principle, every similar occurrence, and fix the shared cause.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
uexecute
btseytlin
Use to implement an approved plan.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
uverify
btseytlin
Use after execute to attack the change and demonstrate how it's broken.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
make
btseytlin
Orchestrate the full Ultrapack workflow in Codex and Pi: create or resume a task file, design, plan, execute, verify, review, and validate the observable goal.
SkillAFreshness: A★ 46Claude Code +9 - 0.655score
udesign
btseytlin
Use before any creative work — features, components, behavior changes.
SkillAFreshness: A★ 46Claude Code +9 - 0.618score
udocument
btseytlin
Use when writing or editing documentation — project docs, CLAUDE.md, READMEs, SKILL.md, docstrings, inline comments.
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
qplan
btseytlin
Quickly design and plan, wait for plan approval, then execute sequential phases with focused verification and a manual try.
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
git-worktrees
btseytlin
Use when a task needs an isolated checkout.
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
ureview
btseytlin
Use after verify passes for the future maintainer's audit — sit in the chair of the person who'll touch this code in 3-6 months and ask "what will bite us…
SkillBFreshness: B★ 46Claude Code +9 - 0.618score
attack-loop
btseytlin
Run a bounded implement-attack-repair loop for a user-specified task.
SkillBFreshness: B★ 46Claude Code +9 - 0.615score
udebug
btseytlin
Use on any bug, test failure, or unexpected behavior before proposing a fix.
SkillBFreshness: B★ 46Claude Code +9 - 0.615score
uplan
btseytlin
Use after design to turn a validated spec into a lean implementation plan.
SkillBFreshness: B★ 46Claude Code +9
Signals
- Stars
- 46
- Forks
- 12
- Open issues
- 1
- Last commit (this folder)
- Sep 9, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- WTFPL
- Repository
- github.com/btseytlin/ultrapack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from btseytlin
- 0.658score
uverify
btseytlin
Use after execute to attack the change and demonstrate how it's broken.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
expand
btseytlin
Turn one user criticism into a principle-level fix: find the violated principle, every similar occurrence, and fix the shared cause.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
uexecute
btseytlin
Use to implement an approved plan.
SkillAFreshness: A★ 46Claude Code +9 - 0.658score
make
btseytlin
Orchestrate the full Ultrapack workflow in Codex and Pi: create or resume a task file, design, plan, execute, verify, review, and validate the observable goal.
SkillAFreshness: A★ 46Claude Code +9 - 0.655score
udesign
btseytlin
Use before any creative work — features, components, behavior changes.
SkillAFreshness: A★ 46Claude Code +9 - 0.618score
attack-loop
btseytlin
Run a bounded implement-attack-repair loop for a user-specified task.
SkillBFreshness: B★ 46Claude Code +9
Cite this page
handsoff skill. Agent Mart. https://agentmart.dev/skills/btseytlin-handsoff (last updated 2026-10-24)