codex/skills/join/SKILL.md
PR autopilot via `gh` only: create/manage PRs, keep branches current, enforce required CI gates, apply surgical code patches, and publish merge-ready handoff without merging. Use when asked to run or monitor PR automation, fix failing required checks, keep local/remote branch state clean, or prepare branch/PR cleanup for human merge.
npx skillsauth add tkersey/dotfiles joinInstall 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.
Run a continuous PR operator using gh commands only. Keep PRs created, green, and merge-ready with minimal-incision fixes. Do not approve or merge PRs unless explicitly instructed by the user.
gh CLI commands (gh pr, gh run, gh api, gh repo).git or any non-gh command.gh alone, apply auto:hold and leave a blocking comment.gh auth status succeeds.auto:manage, auto:hold.gh auth statusgh repo view <owner>/<repo> --json nameWithOwner --jq .nameWithOwnerauto:hold on affected PRs (or emit hold outcome in cloud loop when no PR is selected yet).auth_unavailable.auto:manage: opt-in to automation.auto:hold: pause automation.Contributor guidance:
auto:manage to opt in.auto:hold to stop the operator.gh api without an open PR, create a PR.assets/pr-template.md.gh pr create --fill and apply auto:manage.Use one mode only:
gh-only remote mode: no local checkout assumptions and no local workspace mutations.$puff + seq -> join)Use this when running Join as a cloud subagent loop:
$puff join-operator.gh pr view <num> --json files): target_pr_hint (+5.0), touched_entities overlap (+0..4.5), changed_paths overlap (+0..3.0), base-branch match (+1.5), and issue_refs (+0.5 each, max +1.0). Compute confidence as min(0.99, (raw_score / 12.0) * risk_multiplier) where risk_multiplier={low:1.00, medium:0.95, high:0.80, critical:0.65}.$seq first to recover intent/context. Routing gates are: confidence below effective threshold (threshold * risk_threshold_multiplier where risk_threshold_multiplier={low:0.95, medium:1.00, high:1.15, critical:1.25}), top-two score margin < 0.75, no entity/path/hint signal, manifest entities exist but no entity match, or risk_level is high|critical.$join for gh-only PR operations and CI/handoff behavior.Launch recipe:
"$PUFF_SCRIPT" join-operator --env <env-id-or-label> --repo <owner/repo> --patch-inbox <locator>"$PUFF_SCRIPT" join-operator --env <env-id-or-label> --repo <owner/repo> --patch-inbox <locator> --canaryCloud auth note:
GH_TOKEN (or GITHUB_TOKEN) with repo-scoped permissions needed for join operations.Patch producers should emit a manifest that validates against:
assets/cloud-join-manifest.schema.jsonassets/cloud-join-manifest.example.minimal.json (copy-ready minimal example)assets/cloud-join-manifest.example.full.json (copy-ready full example)Required fields:
patch_idproducerrepo (owner/repo)base_branchchanged_paths (non-empty)intent_summaryOptional routing hints:
target_pr_hintissue_refstouched_entities (array of objects with entity; optional file and kind)risk_level (low|medium|high|critical)confidencepatch_fileProcess PRs sequentially (blocking per PR on CI):
gh pr list --state open --json number,title,headRefName,labels,isDraft.auto:hold.auto:manage and not agent-created.gh pr ready <num>.gh pr update-branch <num> --rebase when available.gh pr checks --required). Optional checks do not block handoff.gh pr checks <num> --required --json name returns an empty list, treat CI as green and proceed to handoff.gh pr checks <num> --required --watch --fail-fastname, bucket, startedAt, completedAt).gh pr checks <num> --required --json name,bucket,startedAt,completedAt.bucket=pass, apply auto:hold and leave a summary comment with links to the stuck checks.bucket=pending, bucket=skipping, and bucket=cancel as “not green” (blocked) until resolved; do not mark as handoff-ready through them.gh pr checks <num> --required --json name,bucket,link,workflowgh run list --branch <headRefName> --limit 10gh run watch <run-id> --compact --exit-statusgh run view <run-id> --log-failedSmallest change that makes CI green using gh only:
gh api on the PR head branch.gh pr checks <num> --required --json name,bucket).auto:hold, and publish hold_reason=regression_floor_worsened.auto:hold, and publish hold_reason=regression_floor_no_improvement.auto:hold.gh pr merge (any flags).gh pr review --approve unless explicitly instructed by the user.gh pr view <num> --json state,mergeStateStatus,reviewDecisionJoin Operator.raw_scorescore_breakdown (target_pr_hint, entity_overlap, entity_hits, path_overlap, base_branch_match, issue_refs, risk_multiplier)threshold_decision (confidence_threshold, effective_confidence_threshold, risk_threshold_multiplier, score_margin, needs_seq_reasons)conflict_kind (none|routing|merge|policy|permission|ci)complexity (low|medium|high)confidence (0.00-1.00)resolution_hint (actionable next step; none only when resolved)action_takenstatus (applied|hold|failed|no_match)hold_reasonJoin Operator: gh-only automation block
This PR needs an action outside the gh-only boundary (for example, manual conflict resolution or a local-only edit path).
Apply the needed commit manually, then remove `auto:hold`.
Join Operator: required checks stalled
Required checks showed no progress for 10 minutes.
Investigate the linked runs, unblock CI, then remove `auto:hold`.
gh repo view --json defaultBranchRef --jq .defaultBranchRef.namegh api repos/<owner>/<repo>/branches --paginate --jq '.[].name'gh pr create --fill --head <branch> --label auto:managegh pr list --state open --json number,title,headRefName,labels,isDraftgh pr ready <num>gh pr update-branch <num> --rebasegh pr view <num> --json headRefOid --jq .headRefOidgh pr checks <num> --requiredgh pr checks <num> --required --watch --fail-fastgh pr checks <num> --required --json name,bucket,link,workflowgh run list --branch <branch> --limit 10gh run view <run-id> --log-failedgh pr review <num> --request-changes --body "<reason>"gh pr view <num> --json state,mergeStateStatus,reviewDecisiongh pr comment <num> --body "Join Operator: required checks are green; ready for human merge."assets/pr-template.mdassets/cloud-join-manifest.schema.jsonassets/cloud-join-manifest.example.minimal.jsonassets/cloud-join-manifest.example.full.jsonassets/cloud-join-operator-prompt.mdscripts/build_cloud_join_prompt.pyscripts/manifest_router.pytesting
Use before local patching when bugs, regressions, malformed state, crashes, parser failures, migrations, cache drift, protocol problems, compatibility requests, tolerant readers, fallbacks, coercions, retries, catch-and-continue logic, or local workarounds may broaden accepted invalid state.
testing
Use for bug reports, PR/issue prose, reviewer comments, user diagnoses, generated summaries, memories, retrieved context, public tracker context, claimed root causes, proposed fixes, fake-minimal repro risk, or any investigation where natural-language context could anchor the implementation scope.
development
Use when non-trivial work needs Challenge Escalation, latent-intelligence activation, frame-market selection, doctrine operators, dominant-move selection, ablation/surface-tax judgment, reification, review comment law, negative capability, route receipts, or proof-bearing refusal to mutate.
development
Apply Algebra-Driven Design. Use for ADD, denotational design, combinator models, law-driven architecture, domain algebra, property tests, codebase modeling, event sourcing, workflow design, or agentic skill design. If the canonical bundle is unavailable, use this wrapper as the minimal ADD kernel and report the missing bundle path.