Orcakit
My personal collection of AI agent skills; the *kit family. Portable, one install away.
npx -y skills add mimukit/skills --skill orcakitAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 26 days oldThe repository was created 26 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Bridge a GitHub issue to an Orca worktree and back — turn a `ready` issue into an isolated Orca worktree branched off origin/main with its label flipped, then reconcile the tracker and remove the worktree once the PR lands. Use when the user says "start issue #N", "spin up a worktree for #N", "finish #N", "orcakit", or wants an issue's isolated workspace created or torn down.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
10.0 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
orcakit
Thin glue between two systems that each own half of "take an issue from ready to landed": a GitHub issue tracker (labels say what is workable) and Orca worktrees (an isolated branch + workspace is where it gets worked). orcakit doesn't add tracker or worktree behavior — it sequences the two at the two moments they meet: start <n> and finish <n>.
It leans on two companion skills where they exist — issuekit for the GitHub lifecycle and orca-cli for worktree operations — but hard-depends on neither: everything runs through the gh and orca CLIs directly, so orcakit works with just those installed.
When this fires
The user wants to move an issue between "ready to work" and "landed":
- start — "start issue #12", "spin up a worktree for #12", "begin #12", "orcakit start 12".
- finish — "finish #12", "wrap up #12 now the PR merged", "tear down #12's worktree", "orcakit finish 12".
If they name neither action explicitly but reference an issue and a worktree, ask which. orcakit never implements — it only prepares or tears down the workspace; writing code inside the worktree is a separate step.
Preflight
Confirm both CLIs are ready before mutating anything:
gh --version && gh auth status # GitHub CLI installed + authenticated
gh repo view --json nameWithOwner -q .nameWithOwner # inside a repo
- If
ghis missing or unauthenticated, say so and point tohttps://cli.github.com/gh auth login— don't work around it. - Resolve and drive the Orca CLI through the orca-cli skill's guidance (it picks the right executable for the session and loads the version-matched command reference). Orca's flags can shift between releases, so treat the exact
orcainvocations below as a known-good shape, not gospel — if a flag is rejected, consultorca worktree create --helpor the orca-cli guide rather than guessing. - Portability. orcakit is repo-agnostic: never hard-code a repo-id.
orcainfers the repo from the current worktree/cwd, so run these from inside the target repo's checkout.
The safety property
orcakit never creates a worktree for an issue that isn't labeled ready. This one guard is the whole point: because an issue only moves blocked → ready when its prerequisite lands (via issuekit sync), and only reaches ready from the pre-work needs-planning state once a human has grilled it, refusing to start anything not-ready enforces both the dependency graph and the human-grill gate for free — Orca can never get ahead of the tracker or ahead of human judgment. Everything else is mechanical.
The lifecycle labels orcakit reads and writes — ready, in-progress, in-review, and blocked — are provisioned by repokit, not created here. If a required label is absent, stop and point the user at repokit or give the exact fallback command, for example gh label create ready --color 0E8A16 --description "specified and independent — safe to take into its own worktree now" and gh label create in-progress --color 1D76DB --description "actively being worked in a worktree".
Action: start <n>
The start-event glue. Runs straight through after the guard — its steps are cheap and reversible, so no per-step confirmation. In order:
-
Guard — read the issue's labels (
gh issue view <n> --json labels); refuse unless it carriesready. This is the safety property. -
Adopt check — look for an existing worktree for #N before making one: first any whose linked issue is N, then any named
issue-<n>-…(orca worktree list --json). If one exists, report it and stop — never recreate or error. This makes re-runningstartsafe. (Detection is bounded to those two signals; orcakit does not fuzzy-match arbitrary names — see Notes for the off-convention case.) -
Derive the branch name —
issue-<n>-<slug>from the conventional issue titletype(scope): summary: strip thetype(scope):prefix, kebab-case the summary, cap ~50 chars at a word boundary, drop any trailing hyphen. If the slug comes out empty, use bareissue-<n>. The<n>prefix guarantees uniqueness across issues, so no tie-break is needed. -
Create the worktree + seed a checkpoint — one call — off fresh
origin/main, with a real Orca→GitHub link:orca worktree create --name issue-<n>-<slug> --base-branch origin/main \ --issue <n> --no-parent --comment "starting #<n> (<title>)"--issuepopulates the live worktree↔issue link;--base-branch origin/mainguarantees a clean base every time (never branch off a sibling feature branch);--commentrecords the checkpoint in one shot.--no-parentkeeps the worktree a top-level sibling: without it,orcainfers a parent from whatever terminal you run in (typically the main checkout) and records a spurious child lineage — cosmetic, but it nests every issue worktree under the main one. Each issue is independent parallel work, so it should never inherit a parent. -
Flip the label
ready → in-progress(inlinegh, trivial):gh issue edit <n> --remove-label ready --add-label in-progress
Report the worktree and the label move. Do not launch an agent or start implementing — that's a separate step run inside the worktree.
Action: finish <n>
The land-event glue. Its steps are destructive and outward-facing, so it previews and waits for an OK before mutating.
-
Confirm the PR merged for this issue (
gh pr list --search "…" --state merged/gh pr view). A merged PR is a hard precondition: if none is found — no PR, or the PR is still open —finishdoes nothing to the tracker or the worktree and reports exactly what's blocking (PR #X still open/no PR found for #N). A forced teardown stays a deliberate manualorca worktree rmthe user runs themselves. -
Preview + confirm — show what will happen (
PR #X merged → close #N, tick parent checklist, remove worktree <name>) and wait for the OK. -
Reconcile the tracker — close #N, tick the parent epic's checklist, and flip any dependents
blocked → ready. This is exactly issuekit'ssyncjob: invoke the issuekit skill when it's installed; otherwise fall back to the equivalentghcalls yourself:gh issue close <n> --comment "Closed by #<pr> (merged)." gh issue edit <n> --remove-label in-review --remove-label in-progress # if a task-list parent contains "- [ ] #<n>", read its body, replace that # marker with "- [x] #<n>", and write the updated body back: gh issue view <parent> --json body -q .body gh issue edit <parent> --body-file <updated-body> # for each dependent whose body says "Blocked by #<n>": gh issue edit <dep> --remove-label blocked --add-label ready -
Resolve, then remove the worktree via orca-cli. Don't remove by a single selector — resolve the target the same two ways
start's Adopt check detects it, thenrmby the selector that actually matched. Theissue:<n>selector resolves only through the stored Orca→GitHub link, so it fails withselector_not_foundon any worktree whoselinkedIssueisnull— a real case (see Notes). Match on either signal fromorca worktree list --json:linkedIssue == <n>first, then adisplayNamematchingissue-<n>-….# Resolve the worktree the same way `start` detects it: linked issue N first, # then a name matching `issue-<n>-…`, from `orca worktree list --json`. # Remove by the selector that actually matched — `issue:<n>` only works when the # `--issue` link is present; `name:<displayName>` always works. orca worktree rm --worktree name:issue-<n>-<slug> --json # or issue:<n> when linkedRule: prefer
issue:<n>when the link is present; onselector_not_found, fall back toname:issue-<n>-…resolved from the list. If nothing matches either signal, report "worktree already gone / off-convention" rather than erroring — teardown is idempotent, same spirit asstart's adopt-and-stop. (Other valid selectors:name:<displayName>,branch:<branch>,path:<path>,id:<repo-id>::<path>. A bare positional id is rejected asUnknown command.)
Report what changed: issue closed, dependents unblocked, worktree removed.
Notes
- Off-convention / legacy worktrees. A worktree that predates orcakit — following neither the
issue-<n>-…name nor the--issuelink — won't be seen by adopt-detection, sostartwould spawn a second one beside it. Don't teachstartto guess; migrate the old worktree once by hand (set--issue <n>on it, or recreate it to the naming convention) and note it as a manual step. The same gap bitesfinishmore narrowly: a worktree that does follow theissue-<n>-…name but is missing its--issuelink (linkedIssue: null) is invisible to theissue:<n>selector, so itsrmfails withselector_not_found—finishmust fall back to the name signal in its Resolve, then remove the worktree step to remove it. - Non-goals. orcakit does not implement the feature (that's a separate step inside the worktree), does not launch agents by default, does not poll-and-spawn or run fleet automation, and adds no tracker or worktree behavior of its own — it only sequences
ghandorca. - No shell / CLI available (e.g. a browser-based agent)? You can't run
ghororca. Reason from what the user provides and print the exact commands — the guard check, theorca worktree create …line, and the label edits — as a codeblock for them to run.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.