Gate Push
Run /dh:gate-push <branch-name> to resolve branch context into a /dh:complete-implementation input and execute that quality-gate pipeline.
Required input
branch_name = $ARGUMENTS(must be non-empty)
If empty: stop with:
COMPLETION BLOCKED — Missing required argument <branch-name>.
Then re-run:
/dh:gate-push <branch-name>
Branch → backlog lookup algorithm
- Normalize
branch_nameinto a lookup slug:- Strip leading branch type prefix when present (
feature/,fix/,chore/, etc.) by removing only the prefix up to and including the first/character - Then replace any remaining
/,_, and-with spaces (for examplefeature/auth/login-fix→auth login fix) - Trim whitespace
- Store the result as
normalized_slug - Expected pattern is
type/slug(e.g.,feature/foo-bar); multi-segment branches (type/segment1/segment2) are supported and normalize with the same replacement rule
- Strip leading branch type prefix when present (
- Strategy 1 (title match):
mcp__plugin_dh_backlog__backlog_list(title="<normalized_slug>")
- Strategy 2 (topic match fallback, only if Strategy 1 has zero results):
mcp__plugin_dh_backlog__backlog_list(topic="<normalized_slug>")
- If exactly one item is returned, use it as
match. - If multiple items are returned, do not guess — stop and follow the No-match / unresolved fallback procedure below.
Resolve complete-implementation input
From match, resolve in this order:
- If
match.issueexists (issue number field from backlog output) →target = #<match.issue> - Else if
match.planexists and non-empty →target = <match.plan>(use the backlog item's plan field directly) - Else no resolvable target
Execute gate pipeline
If target is resolved:
Skill(skill: "dh:complete-implementation", args: "<target>")
/dh:complete-implementation is the source of truth for the quality-gate phases and final push/PR behavior. Do not duplicate its gate logic here.
No-match / unresolved fallback
If no backlog match is found, a match exists but has neither issue nor plan, or multiple matches are found:
- Do not prompt mid-loop.
- Stop with:
COMPLETION BLOCKED — Branch cannot be resolved to a single backlog issue/plan.
Required precondition:
- Ensure branch-to-backlog mapping is decided at workflow start (for example via `/dh:work-backlog-item --auto ...`) or at the start of `/dh:implement-feature`.
- Ensure the matched backlog item has either an issue number or a linked plan.
Then re-run:
/dh:gate-push <branch-name>
Success check
After successful completion, verify PR visibility for the branch.
GitHub backend only — this step requires a GitHub remote configured with the gh CLI.
For beads and other non-GitHub backends, skip this step and verify via your backend's native
tooling (e.g., bd show <issue-id> for merge-request state).
if gh repo view --json name >/dev/null 2>&1; then
gh pr list --head <branch-name>
else
echo "Remote is not a GitHub repository — PR visibility check not applicable for this backend."
fi
Use the original input branch (branch_name), not normalized_slug, for --head.