From miranda
Merges multiple ready dependency PRs into a common base branch for GitHub issues with 2+ dependencies, verifies checks, closes deps, and updates target issue. Use when no single base blocks auto-stacking.
npx claudepluginhub open-horizon-labs/mirandaThis skill uses the workspace's default tool permissions.
Use this skill when an issue has 2+ open dependencies and scheduler cannot auto-stack because there is no single base branch.
Merges open PRs in dependency order after CI/approval checks, closes linked issues from PRs or .claude-harness/features/active.json, deletes feature branches locally/remotely, prunes refs, and reports summary. Use for completing features, post-review merges, or release cycles.
Manages GitHub issue hierarchies: add/remove/create sub-issues, check completion status/progress, list deps, set blocking/blocked-by relationships.
Consolidates open Dependabot PRs into an integration branch via gh CLI, squash-merges them handling conflicts, and creates a summary PR to main.
Share bugs, ideas, or general feedback.
Use this skill when an issue has 2+ open dependencies and scheduler cannot auto-stack because there is no single base branch.
/oh-join <issue-number>
<issue-number>: target GitHub issue (for example 1178 or #1178)For target issue #X:
Depends on: dependenciesLoad issue and dependencies
gh issue view <issue-number> --json number,title,body,state,url
Depends on: lines.blocked (not a join case).Discover open PRs for dependency issues
gh pr list --state open --json number,title,headRefName,baseRefName,body,url
issue/<N> or issue-<N>Closes #N / Fixes #N / Resolves #Nblocked and list missing deps.Determine common base branch
baseRefName across dependency PRs.blocked and report conflicting bases.Readiness checks for each dependency PR For each dep PR:
gh pr checks <pr-number> --fail-on-error
gh pr view <pr-number> --json reviewDecision,isDraft,mergeable
CHANGES_REQUESTED
If any fail: stop with blocked and report specific PR reasons.Merge dependency PRs in deterministic order and close their issues
(issue #D, PR #P) in order:
gh pr merge <pr-number> --squash
gh issue close <dep-issue-number> --comment "Closed via oh-join after merging PR #<pr-number> into <base-branch>."
Closes #N.signal_completion(status: "error", error: "...")Update target issue dependencies
Depends on: to one explicit scheduler-readable base dependency.issue/<B> or issue-<B>; then set: **Depends on:** #<B>main/master), stop with blocked and do NOT rewrite dependencies to none.~~#N~~) form — remove them completely.<!-- oh-join -->
Joined deps: #A (PR #PA), #B (PR #PB)
Base branch: <branch>
Updated: <ISO timestamp>
gh issue edit <issue-number> --body-file <temp-file>
Completion signaling
signal_completion(status: "success", message: "Merged dep PRs #... into <base>; updated issue #<issue-number> dependencies")
signal_completion(status: "blocked", blocker: "<reason>")
signal_completion(status: "error", error: "<reason>")
Depends on: #<base-issue> when base is an issue branch.You MUST call signal_completion as your final action.
If the tool is unavailable, end with one line:
COMPLETION: status=success message=<...>COMPLETION: status=blocked blocker=<...>COMPLETION: status=error error=<...>