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/spellbook 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).Delegation floor applies: probe the roster first; dispatch two or more
providers for substantive work; direct solo only for mechanical, emergency,
user-forbidden, or fewer-than-two-providers cases. 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.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).
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
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.
development
Lightweight evidence-backed retro and catch-up reports for a current repo, branch, PR, backlog slice, or recent agent session. Use when the user asks for a debrief, catch me up, what changed, why it matters, product implications, end-user implications, developer experience implications, current app state, backlog state, workspace state, alternatives considered, or context rebuild after losing the thread. Trigger: /debrief.
testing
Capture agent-session work records as local JSONL audit evidence. Links a backlog/spec, branch, commits, review verdicts, QA/demo evidence, transcript refs, and shipped ref without storing raw private transcripts. Use when: "trace this work", "write work record", "agent session trace", "journal this delivery", "link transcript evidence". Trigger: /trace, /journal.
data-ai
Turn proven agent-session patterns into first-party Harness Kit skills. Use when: "skillify this conversation", "make this into a skill", "generate a skill from current transcript", "extract reusable workflow". Trigger: /skillify.
testing
Run one targeted, read-only architecture or quality critique through a named lens from the shared rubric. Use when: "critique this module", "run an Ousterhout pass", "lens critique", "architecture critique". Trigger: /critique.