skills/yeet/SKILL.md
End-to-end "ship it to the remote": read worktree, classify changes, tidy debris, split semantic commits, and push. Judgment layer over git, not a wrapper; decides what belongs and how reviewers should read the diff. Use when: "yeet", "yeet this", "commit and push", "ship local changes", "tidy and commit", "wrap this up and push", "get this off my machine". Trigger: /yeet, /ship-local (alias).
npx skillsauth add phrazzld/agent-skills yeetInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Take the current worktree state → one or more conventional commits → remote. One command. Executive authority. No approval gates.
/yeet is not done while visible paths
remain. Shared Closeout applies; resolve every path by commit, ignore, move
out of the repo, or delete. See harnesses/shared/AGENTS.md (Closeout).
Local commits also count as unfinished until pushed or explicitly blocked;
verify the final local/remote divergence instead of assuming git push
succeeded.delegate on judgment per the shared Roster contract: native subagents
by default; add cross-model critics, roster providers, or sprite lanes
(/sprites) only when they answer a distinct question. See
harnesses/shared/AGENTS.md (Roster).
Local lane guidance: Use lanes for diff classification and risk review; withhold final commit intent until synthesis, then the lead owns staging, messages, verification, and receipts.
--dry-run: report the plan (commit boundaries, messages, skips), do not execute.--single-commit: skip the split pass; one commit for everything that belongs.--no-push: commit locally but don't push. Useful when the user wants to
amend before going remote.git status --short (untracked, modified, staged — full picture, don't truncate)git diff --stat + git diff --stat --cached (sizes + files)git log -5 --oneline (recent commit style)git rev-parse --abbrev-ref HEAD (branch, for push target)git status for rebase/merge/cherry-pick in progress (see Refuse Conditions)If the tree is clean, say so and exit.
For each changed / untracked path, assign one of:
| Class | Meaning | Action |
|---|---|---|
| signal | Work the user meant to do | Include in a commit |
| debris | Unambiguous trash (.DS_Store, *.log scratch, .orig, editor swap files, node_modules that slipped the gitignore) | Delete outright |
| drift | Unrelated work from another concern / earlier session | Separate commit, move out of repo, or ignore with explicit rationale; never leave it unresolved |
| evidence | Logs, screenshots, walkthrough artifacts relevant to the feature | Include if the branch convention tracks them; otherwise move to the evidence dir |
| scratch | Half-written notes, TODO files, planning docs | Move to a vault/scratch dir outside the repo, or delete if trivial |
| secret-risk | Contains plausible credentials / tokens / .env-like content | REFUSE the commit, surface to user |
Heuristics:
.gitignore templates (node_modules, pycache, *.pyc, dist/) → debris..DS_Store, Thumbs.db, *.swp, *.swo, *~, .#* → debris..env* not in .gitignore → secret-risk, refuse.-----BEGIN.*PRIVATE KEY-----, api[_-]?key.*=.*["'][^"']{20,},
(AKIA|ghp_|github_pat_|sk-)[A-Za-z0-9]{16,} → secret-risk, refuse.walkthrough/, .evidence/, etc.).Group rules:
If the user passed --single-commit, skip grouping; everything signal-class
becomes one commit.
Conventional Commits. Format:
<type>(<scope>): <imperative subject under 72 chars>
<optional body: why, not what. Wrap at 72.>
<optional footer: BREAKING CHANGE, refs, co-author>
Types: feat, fix, refactor, perf, test, docs, build, ci,
chore, style. No wip, no misc, no update.
Scope: match the convention in the last 20 commits on the branch. If
the log shows feat(attacker): …, use attacker, not red-team-attacker
or orchestrator.
Subject rules:
Body rules:
Co-author: Append when the session did real implementation work. Match the project's existing co-author line.
git add only the signal paths for each commit (path-by-path, not git add -A).git commit per group. Allow hooks to run (lefthook, pre-commit). If
a hook fails, investigate and fix the underlying issue — do not --no-verify.git push. If the upstream isn't set, git push -u origin <branch>.git push is rejected (upstream moved), pull-rebase (if linear) and retry
once. Do NOT force-push on retry.git status --short --untracked-files=all. If any path
still appears, continue classifying and resolve it. /yeet exits only on a
clean worktree; ignored files are acceptable, visible status entries are not.git rev-list --left-right --count <branch>...<upstream>.
/yeet exits only when the intended branch reports 0 0, or when it
refuses with the exact upstream blocker. Unpushed commits are action items,
not residual risk.What got committed (one line per commit: sha, type, subject).
What got removed, ignored, or moved and why.
Push target + result.
Final worktree status (clean or refuse).
Final remote-sync status (0 0 or refuse).
Stop and surface to the user instead of committing:
.git/MERGE_HEAD, .git/CHERRY_PICK_HEAD, or rebase-* dir exists — mid-operation.<<<<<<<, =======, >>>>>>>).secret-risk.main / master / default protected branch AND push would
write to that branch (absent explicit user request).--no-verify to bypass hooks.git add -A at the repo root without classifying first.git clean -fdx or delete directories without individual-file classification.git status --short still shows paths./refactor concern, not /yeet.chore: commits
without scopes, don't retroactively add chore(orchestrator):. Read
git log -20 and match.git add doesn't recurse into
new dirs by default unless you pass the dir path. Do classify new dirs
directory-by-directory.stage_fixed: true
mutates files during commit, they're still part of that commit — good.
Don't panic and re-stage.Co-Authored-By
before deciding.## /yeet Report
Classified 42 paths: 35 signal, 3 debris, 2 drift, 2 evidence.
Deleted: .DS_Store, orchestrator/scratch.md, test.log
Ignored: orchestrator/walkthrough/qa-audit/ (local QA evidence)
Moved out of repo: notes/todo.md → ~/vault/vulcan/todo.md
Commits:
abc1234 refactor(attacker): consolidate NetworkPolicyRule type
def5678 fix(attacker): ledger-backed scheduled task + kill-switch
9012345 ci(dagger): scaffold Dagger pipeline; thin GHA to pointer
Pushed feat/014-red-team-attacker-sprite → origin (3 new commits).
Worktree: clean
Remote: origin/feat/014-red-team-attacker-sprite 0 0
On refuse:
## /yeet — REFUSED
Reason: orchestrator/.env.prod contains plausible secret
(matches /sk-[A-Za-z0-9]{32}/ at line 12).
Action: remove or gitignore the file before re-running.
Semantic waiver: /yeet is a git-state classifier whose proof is the produced
commit stack, push result, and clean worktree. Each run must cite
git status --short --untracked-files=all, created commits, ignored/deleted
debris, pushed branch/ref, and local/remote divergence count.
tools
Enumerates the peer AI agent CLIs installed on this machine (codex, claude, pi, opencode, cursor-agent, grok, agy, hermes, thinktank) and how to invoke each headlessly. A capability map, not a quota: useful for fresh-context adversarial review on a different model family, second opinions, competing attempts, and wide benches. Use when: "ask codex", "ask another model", "second opinion", "cross-model review", "what AI tools do I have", "other agents", "different model family", "adversarial critique from another provider". Trigger: /roster.
development
Run lane cards on Fly Sprites: remote, isolated, scale-to-zero sandboxes for heavy or parallel agent work. Golden-checkpoint provisioning so lanes start on a ready sprite with zero setup tokens. Use when: "run this on a sprite", "remote lane", "offload to a sandbox", "dispatch to sprites", "bake a sprite", "sprite fleet", heavy/long-running/parallel sub-agent work that should not run on this machine. Trigger: /sprites, /sprite-lane.
testing
Compose and launch roster-backed specialist lanes with prompt-native lane cards and receipts. Use when: "dispatch agents", "use subagents", "compose a team", "run provider lanes", "make lane cards". Trigger: /dispatch, /subagents, /lanes.
tools
Fast session-start repository orientation from live local evidence. Use when: "orient yourself", "start of session", "new session", "where are we", "catch me up before acting", "what should I do next", after compaction, after switching worktrees, or before choosing a Harness Kit workflow. Trigger: /orient, /ground, /session-start.