Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{
"name": "devflow",
"description": "A Claude Code plugin powering structured development workflows \u2014 skills for building, reviewing, responding, and debugging. Includes core workflow skills (build, review, respond, debug), utility skills, custom agents, workflow automation hooks, and output styles.",
"version": "1.9.0",
"license": "MIT",
"keywords": [
"skills",
"devflow",
"multi-agent",
"agent-teams",
"pr-review",
"debug",
"productivity",
"workflow"
],
"author": {
"name": "kobig",
"url": "https://github.com/wasikarn"
},
"homepage": "https://github.com/wasikarn/devflow#readme",
"repository": "https://github.com/wasikarn/devflow"
}
"name": "devflow",
"description": "A Claude Code plugin powering structured development workflows \u2014 skills for building, reviewing, responding, and debugging. Includes core workflow skills (build, review, respond, debug), utility skills, custom agents, workflow automation hooks, and output styles.",
"version": "1.10.0",
"license": "MIT",
"keywords": [
"skills",
"devflow",
"multi-agent",
"agent-teams",
"pr-review",
"debug",
"productivity",
"workflow"
],
"author": {
"name": "kobig",
"url": "https://github.com/wasikarn"
},
"homepage": "https://github.com/wasikarn/devflow#readme",
"repository": "https://github.com/wasikarn/devflow"
}
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

All notable changes to this project will be documented in this file.

## [1.10.0] — 2026-04-17

### df-merge-pr auto-confirm + docs

- feat: `--yes` / `-y` flag on `/df-merge-pr` — skips the Confirmation Gate, CI-failing prompt, and concurrent-hotfix prompt; hard aborts (dirty tree, draft PR, rebase conflict, tag exists) still fire
- docs: SKILL.md documents `{auto_confirm}` behavior explicitly; workflow-feature.md and workflow-deploy.md gates follow the same bypass
- docs: deploy workflow notes that `--yes` does not bypass tag-exists / rebase-conflict aborts — only the confirmation prompt

## [1.9.0] — 2026-04-14

### Advisor Strategy mode for df-review
Expand Down
28 changes: 21 additions & 7 deletions skills/df-merge-pr/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: df-merge
description: "Automated git-flow merge and deploy — feature, hotfix, and release modes with pre-merge safety checks. Use to merge a branch to main/develop."
argument-hint: "[pr-number?] [--hotfix?] [--release?] [jira-key?]"
argument-hint: "[pr-number?] [--hotfix?] [--release?] [--yes?] [jira-key?]"
effort: medium
compatibility: "Requires gh CLI (authenticated) and a git repository with a GitHub remote."
allowed-tools: Bash(git *), Bash(gh *), Read, Edit, Grep, AskUserQuestion, mcp__mcp-atlassian__jira_add_comment
Expand Down Expand Up @@ -44,6 +44,18 @@ Parse args for position-independent flags:

PR number: extract non-flag token from $ARGUMENTS, else auto-detect with `gh pr view --json number --jq '.number'`.

### Auto-confirm (`--yes` / `-y`)

Set `{auto_confirm}=true` when `--yes` or `-y` is present in `$ARGUMENTS`. When true:

- Confirmation Gate → print the summary block but **do not** call `AskUserQuestion`; proceed directly
- CI-failing warning → print a warning line and proceed (relies on `--admin` bypass)
- Concurrent-hotfix warning → print a warning line and proceed

When `{auto_confirm}` is false (default), every AskUserQuestion in this skill still fires as before.

`--yes` does **not** bypass hard aborts (dirty tree, draft PR, rebase conflict, tag exists, etc.) — those still stop the run.

---

## Pre-execution Safety Checks
Expand All @@ -56,9 +68,9 @@ Run all checks before any merge operation. Abort immediately on failure unless n
| 1 | Clean working tree | `git status --porcelain` | output non-empty — uncommitted changes break rebase |
| 2 | Fetch remote | `git fetch origin` | fails — stale state causes wrong rebase decisions |
| 3 | PR status | `gh pr view --json isDraft,state,mergeable --jq '{isDraft,state,mergeable}'` | isDraft=true, state=MERGED, or mergeable=CONFLICTING |
| 4 | CI checks | `gh pr checks` | any failing → **warn** via `AskUserQuestion` ("CI failing — --admin will bypass. Continue?") |
| 4 | CI checks | `gh pr checks` | any failing → **warn** via `AskUserQuestion` ("CI failing — --admin will bypass. Continue?"). If `{auto_confirm}` → print warning line and proceed. |
| 5 | No PR found | (if auto-detect returns empty) | prompt user for PR number |
| 6 | Mode 2/3: concurrent hotfix | see command below table | any result → **warn** via `AskUserQuestion` ("Found open hotfix PR. Proceed anyway?") |
| 6 | Mode 2/3: concurrent hotfix | see command below table | any result → **warn** via `AskUserQuestion` ("Found open hotfix PR. Proceed anyway?"). If `{auto_confirm}` → print warning line and proceed. |

Check 6 command (concurrent hotfix detection):

Expand Down Expand Up @@ -96,7 +108,7 @@ concurrent hotfixes). Review the report before proceeding to the Confirmation Ga

## Confirmation Gate

Before any merge, tag, or delete operation, show this summary then use `AskUserQuestion` with Yes/No options:
Before any merge, tag, or delete operation, show this summary:

```text
=== merge-pr: Ready to execute ===
Expand All @@ -108,7 +120,9 @@ Backport: {backport_target} (Mode 2/3 only)
PR: #{pr_number}
```

Call `AskUserQuestion` with:
**If `{auto_confirm}` is true** (user passed `--yes`/`-y`): append `Auto-confirm: on — proceeding without prompt.` and proceed. Do **not** call `AskUserQuestion`.

**Otherwise** call `AskUserQuestion` with:

- question: "Proceed with merge?"
- header: "Confirm"
Expand Down Expand Up @@ -160,11 +174,11 @@ Done
| Dirty working tree | Abort: "Uncommitted changes. Commit or stash first." |
| Draft PR | Abort: "PR is still draft. Mark ready for review first." |
| PR already merged | Abort: "PR already merged. Nothing to do." |
| CI checks failing | Warn via `AskUserQuestion`: "CI failing — --admin will bypass. Continue?" (Yes/No) |
| CI checks failing | Warn via `AskUserQuestion`: "CI failing — --admin will bypass. Continue?" (Yes/No). With `--yes` → print warning and proceed. |
| No PR found for branch | Prompt user for PR number or offer `gh pr list` |
| Rebase conflict | Abort: "Rebase conflict. Resolve manually then re-run /merge-pr" |
| Tag already exists | Abort: "Tag v{version} already exists. Bump version manually first." |
| Concurrent open hotfix PR | Warn via `AskUserQuestion`: "Found open hotfix PR #{n}. Proceed anyway?" (Yes/No) |
| Concurrent open hotfix PR | Warn via `AskUserQuestion`: "Found open hotfix PR #{n}. Proceed anyway?" (Yes/No). With `--yes` → print warning and proceed. |
| Active release branch during hotfix | Auto-detect and backport to release branch instead of develop |
| Backport cherry-pick conflict | Create PR but don't auto-merge: "Backport has conflicts — manual resolution needed." |
| No GitHub remote | Abort: "No GitHub remote found. Cannot use gh CLI." |
Expand Down
9 changes: 7 additions & 2 deletions skills/df-merge-pr/references/workflow-deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,13 @@ Backport: {backport_target}
PR: #{pr_number}
```

Call `AskUserQuestion` (question: "Proceed with merge?", header: "Confirm",
options: Yes/No as defined in SKILL.md § Confirmation Gate). Abort if "No, abort".
Follow SKILL.md § Confirmation Gate. If `{auto_confirm}` (`--yes`/`-y` in `$ARGUMENTS`), append
`Auto-confirm: on — proceeding without prompt.` and skip `AskUserQuestion`. Otherwise call
`AskUserQuestion` (question: "Proceed with merge?", header: "Confirm", Yes/No). Abort if "No, abort".

**Safety note:** `--yes` skips only the confirmation prompt — it does **not** bypass tag-exists,
rebase-conflict, or dirty-tree aborts. Mode 2/3 tag a release that cannot be easily undone, so
only use `--yes` when the version bump and CHANGELOG have already been reviewed.

---

Expand Down
5 changes: 3 additions & 2 deletions skills/df-merge-pr/references/workflow-feature.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,9 @@ Branch: {branch} → develop
PR: #{pr_number}
```

Call `AskUserQuestion` (question: "Proceed with merge?", header: "Confirm",
options: Yes/No as defined in SKILL.md § Confirmation Gate). Abort if "No, abort".
Follow SKILL.md § Confirmation Gate. If `{auto_confirm}` (`--yes`/`-y` in `$ARGUMENTS`), append
`Auto-confirm: on — proceeding without prompt.` and skip `AskUserQuestion`. Otherwise call
`AskUserQuestion` (question: "Proceed with merge?", header: "Confirm", Yes/No). Abort if "No, abort".

**[5/6] Merge PR**

Expand Down
Loading