devflow-kit 1.3.3 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/plugins/devflow-accessibility/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-ambient/.claude-plugin/plugin.json +4 -1
- package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +4 -1
- package/plugins/devflow-code-review/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-code-review/agents/git.md +13 -8
- package/plugins/devflow-code-review/commands/code-review-teams.md +4 -4
- package/plugins/devflow-code-review/commands/code-review.md +4 -4
- package/plugins/devflow-core-skills/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-debug/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-debug/agents/git.md +13 -8
- package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-go/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-implement/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-implement/agents/git.md +13 -8
- package/plugins/devflow-implement/commands/implement-teams.md +5 -6
- package/plugins/devflow-implement/commands/implement.md +5 -6
- package/plugins/devflow-java/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-python/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-react/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-resolve/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-resolve/agents/git.md +13 -8
- package/plugins/devflow-rust/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-self-review/.claude-plugin/plugin.json +4 -1
- package/plugins/devflow-specify/.claude-plugin/plugin.json +2 -3
- package/plugins/devflow-typescript/.claude-plugin/plugin.json +2 -3
- package/shared/agents/git.md +13 -8
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ All notable changes to DevFlow will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.0] - 2026-03-09
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **Smart branch naming** — `/implement #42` auto-derives branch names from issue labels and title (e.g., `feature/42-add-jwt-auth`); free-text tasks infer type from keywords (e.g., `/implement fix login bug` → `fix/login-bug`)
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **Code review file detection** — Corrected file detection and skill check logic in `/code-review`
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- **Author standardization** — Unified author name to Dean0x across marketplace and plugin manifests
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
8
21
|
## [1.3.3] - 2026-03-09
|
|
9
22
|
|
|
10
23
|
### Changed
|
|
@@ -840,6 +853,7 @@ devflow init
|
|
|
840
853
|
|
|
841
854
|
---
|
|
842
855
|
|
|
856
|
+
[1.4.0]: https://github.com/dean0x/devflow/compare/v1.3.3...v1.4.0
|
|
843
857
|
[1.3.3]: https://github.com/dean0x/devflow/compare/v1.3.2...v1.3.3
|
|
844
858
|
[1.3.2]: https://github.com/dean0x/devflow/compare/v1.3.1...v1.3.2
|
|
845
859
|
[1.3.1]: https://github.com/dean0x/devflow/compare/v1.3.0...v1.3.1
|
package/package.json
CHANGED
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-accessibility",
|
|
3
3
|
"description": "Web accessibility patterns - WCAG compliance, ARIA roles, keyboard navigation, focus management",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-code-review",
|
|
3
3
|
"description": "Comprehensive code review with parallel specialized agents covering security, architecture, performance, and more",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@ The orchestrator provides:
|
|
|
21
21
|
|-----------|---------|----------------|
|
|
22
22
|
| `ensure-pr-ready` | Pre-flight for /review: commit, push, create PR | - |
|
|
23
23
|
| `validate-branch` | Pre-flight for /resolve: check branch state | - |
|
|
24
|
-
| `setup-task` | Create feature branch and fetch issue | `
|
|
24
|
+
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
|
|
25
25
|
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |
|
|
26
26
|
| `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |
|
|
27
27
|
| `manage-debt` | Update tech debt backlog with pre-existing issues | `REVIEW_DIR`, `TIMESTAMP` |
|
|
@@ -101,25 +101,30 @@ Pre-flight validation for `/resolve`. Checks branch state without modifications.
|
|
|
101
101
|
|
|
102
102
|
## Operation: setup-task
|
|
103
103
|
|
|
104
|
-
Set up task environment: create feature branch and optionally fetch issue.
|
|
104
|
+
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
|
|
105
105
|
|
|
106
106
|
**Input:**
|
|
107
|
-
- `TASK_ID`: Unique task identifier (becomes branch name)
|
|
108
107
|
- `BASE_BRANCH`: Branch to create from (track this for PR target)
|
|
109
108
|
- `ISSUE_INPUT` (optional): Issue number to fetch
|
|
109
|
+
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
|
|
110
110
|
|
|
111
111
|
**Process:**
|
|
112
112
|
1. Record current branch as BASE_BRANCH for later PR targeting
|
|
113
|
-
2.
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
2. **Derive branch name:**
|
|
114
|
+
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
|
|
115
|
+
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
|
|
116
|
+
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
|
|
117
|
+
- If `TASK_DESCRIPTION` provided (no issue): infer type from description keywords (e.g., "fix login bug" → `fix`, "refactor auth" → `refactor`, "add JWT" → `feature`, "update docs" → `docs`, "chore: cleanup" → `chore`), then slugify description as `{type}/{slug}` (max 40 chars)
|
|
118
|
+
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
|
|
119
|
+
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
|
|
120
|
+
4. Return setup summary with branch name and BASE_BRANCH recorded
|
|
116
121
|
|
|
117
122
|
**Output:**
|
|
118
123
|
```markdown
|
|
119
|
-
## Task Setup: {
|
|
124
|
+
## Task Setup: {branch-name}
|
|
120
125
|
|
|
121
126
|
### Branch
|
|
122
|
-
- **
|
|
127
|
+
- **Branch name**: {derived-branch-name}
|
|
123
128
|
- **Base branch**: {BASE_BRANCH} (PR target)
|
|
124
129
|
|
|
125
130
|
### Issue (if fetched)
|
|
@@ -38,9 +38,9 @@ Detect file types in diff to determine conditional reviews:
|
|
|
38
38
|
|
|
39
39
|
| Condition | Adds Perspective |
|
|
40
40
|
|-----------|-----------------|
|
|
41
|
-
| .ts
|
|
42
|
-
| .tsx
|
|
43
|
-
| .tsx
|
|
41
|
+
| Any .ts or .tsx files | typescript |
|
|
42
|
+
| .tsx or .jsx files (React components) | react |
|
|
43
|
+
| .tsx or .jsx files (React components) | accessibility |
|
|
44
44
|
| .tsx/.jsx/.css/.scss files | frontend-design |
|
|
45
45
|
| .go files | go |
|
|
46
46
|
| .java files | java |
|
|
@@ -50,7 +50,7 @@ Detect file types in diff to determine conditional reviews:
|
|
|
50
50
|
| Dependency files changed | dependencies |
|
|
51
51
|
| Docs or significant code | documentation |
|
|
52
52
|
|
|
53
|
-
**Skill availability check**: Language/ecosystem reviews (typescript, react, accessibility, frontend-design, go, java, python, rust) require their optional skill plugin to be installed. Before adding a conditional perspective, check if `~/.claude/skills/{focus}/SKILL.md` exists
|
|
53
|
+
**Skill availability check**: Language/ecosystem reviews (typescript, react, accessibility, frontend-design, go, java, python, rust) require their optional skill plugin to be installed. Before adding a conditional perspective, use Read to check if `~/.claude/skills/{focus}/SKILL.md` exists. If Read returns an error (file not found), **skip that perspective** — the language plugin isn't installed. Non-language reviews (database, dependencies, documentation) use skills bundled with this plugin and are always available.
|
|
54
54
|
|
|
55
55
|
### Phase 2: Spawn Review Team
|
|
56
56
|
|
|
@@ -38,9 +38,9 @@ Detect file types in diff to determine conditional reviews:
|
|
|
38
38
|
|
|
39
39
|
| Condition | Adds Review |
|
|
40
40
|
|-----------|-------------|
|
|
41
|
-
| .ts
|
|
42
|
-
| .tsx
|
|
43
|
-
| .tsx
|
|
41
|
+
| Any .ts or .tsx files | typescript |
|
|
42
|
+
| .tsx or .jsx files (React components) | react |
|
|
43
|
+
| .tsx or .jsx files (React components) | accessibility |
|
|
44
44
|
| .tsx/.jsx/.css/.scss files | frontend-design |
|
|
45
45
|
| .go files | go |
|
|
46
46
|
| .java files | java |
|
|
@@ -50,7 +50,7 @@ Detect file types in diff to determine conditional reviews:
|
|
|
50
50
|
| Dependency files changed | dependencies |
|
|
51
51
|
| Docs or significant code | documentation |
|
|
52
52
|
|
|
53
|
-
**Skill availability check**: Language/ecosystem reviews (typescript, react, accessibility, frontend-design, go, java, python, rust) require their optional skill plugin to be installed. Before spawning a conditional Reviewer for these focuses, check if `~/.claude/skills/{focus}/SKILL.md` exists
|
|
53
|
+
**Skill availability check**: Language/ecosystem reviews (typescript, react, accessibility, frontend-design, go, java, python, rust) require their optional skill plugin to be installed. Before spawning a conditional Reviewer for these focuses, use Read to check if `~/.claude/skills/{focus}/SKILL.md` exists. If Read returns an error (file not found), **skip that review** — the language plugin isn't installed. Non-language reviews (database, dependencies, documentation) use skills bundled with this plugin and are always available.
|
|
54
54
|
|
|
55
55
|
### Phase 2: Run Reviews (Parallel)
|
|
56
56
|
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-core-skills",
|
|
3
3
|
"description": "Auto-activating quality enforcement skills - foundation layer for all DevFlow plugins",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-debug",
|
|
3
3
|
"description": "Debugging workflows with competing hypothesis investigation using agent teams",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@ The orchestrator provides:
|
|
|
21
21
|
|-----------|---------|----------------|
|
|
22
22
|
| `ensure-pr-ready` | Pre-flight for /review: commit, push, create PR | - |
|
|
23
23
|
| `validate-branch` | Pre-flight for /resolve: check branch state | - |
|
|
24
|
-
| `setup-task` | Create feature branch and fetch issue | `
|
|
24
|
+
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
|
|
25
25
|
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |
|
|
26
26
|
| `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |
|
|
27
27
|
| `manage-debt` | Update tech debt backlog with pre-existing issues | `REVIEW_DIR`, `TIMESTAMP` |
|
|
@@ -101,25 +101,30 @@ Pre-flight validation for `/resolve`. Checks branch state without modifications.
|
|
|
101
101
|
|
|
102
102
|
## Operation: setup-task
|
|
103
103
|
|
|
104
|
-
Set up task environment: create feature branch and optionally fetch issue.
|
|
104
|
+
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
|
|
105
105
|
|
|
106
106
|
**Input:**
|
|
107
|
-
- `TASK_ID`: Unique task identifier (becomes branch name)
|
|
108
107
|
- `BASE_BRANCH`: Branch to create from (track this for PR target)
|
|
109
108
|
- `ISSUE_INPUT` (optional): Issue number to fetch
|
|
109
|
+
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
|
|
110
110
|
|
|
111
111
|
**Process:**
|
|
112
112
|
1. Record current branch as BASE_BRANCH for later PR targeting
|
|
113
|
-
2.
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
2. **Derive branch name:**
|
|
114
|
+
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
|
|
115
|
+
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
|
|
116
|
+
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
|
|
117
|
+
- If `TASK_DESCRIPTION` provided (no issue): infer type from description keywords (e.g., "fix login bug" → `fix`, "refactor auth" → `refactor`, "add JWT" → `feature`, "update docs" → `docs`, "chore: cleanup" → `chore`), then slugify description as `{type}/{slug}` (max 40 chars)
|
|
118
|
+
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
|
|
119
|
+
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
|
|
120
|
+
4. Return setup summary with branch name and BASE_BRANCH recorded
|
|
116
121
|
|
|
117
122
|
**Output:**
|
|
118
123
|
```markdown
|
|
119
|
-
## Task Setup: {
|
|
124
|
+
## Task Setup: {branch-name}
|
|
120
125
|
|
|
121
126
|
### Branch
|
|
122
|
-
- **
|
|
127
|
+
- **Branch name**: {derived-branch-name}
|
|
123
128
|
- **Base branch**: {BASE_BRANCH} (PR target)
|
|
124
129
|
|
|
125
130
|
### Issue (if fetched)
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-frontend-design",
|
|
3
3
|
"description": "Frontend design patterns - typography, color systems, spacing, motion, responsive design",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-go",
|
|
3
3
|
"description": "Go language patterns - error handling, interfaces, concurrency, package design",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-implement",
|
|
3
3
|
"description": "Complete task implementation workflow - orchestrates exploration, planning, coding, validation, and PR creation",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@ The orchestrator provides:
|
|
|
21
21
|
|-----------|---------|----------------|
|
|
22
22
|
| `ensure-pr-ready` | Pre-flight for /review: commit, push, create PR | - |
|
|
23
23
|
| `validate-branch` | Pre-flight for /resolve: check branch state | - |
|
|
24
|
-
| `setup-task` | Create feature branch and fetch issue | `
|
|
24
|
+
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
|
|
25
25
|
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |
|
|
26
26
|
| `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |
|
|
27
27
|
| `manage-debt` | Update tech debt backlog with pre-existing issues | `REVIEW_DIR`, `TIMESTAMP` |
|
|
@@ -101,25 +101,30 @@ Pre-flight validation for `/resolve`. Checks branch state without modifications.
|
|
|
101
101
|
|
|
102
102
|
## Operation: setup-task
|
|
103
103
|
|
|
104
|
-
Set up task environment: create feature branch and optionally fetch issue.
|
|
104
|
+
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
|
|
105
105
|
|
|
106
106
|
**Input:**
|
|
107
|
-
- `TASK_ID`: Unique task identifier (becomes branch name)
|
|
108
107
|
- `BASE_BRANCH`: Branch to create from (track this for PR target)
|
|
109
108
|
- `ISSUE_INPUT` (optional): Issue number to fetch
|
|
109
|
+
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
|
|
110
110
|
|
|
111
111
|
**Process:**
|
|
112
112
|
1. Record current branch as BASE_BRANCH for later PR targeting
|
|
113
|
-
2.
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
2. **Derive branch name:**
|
|
114
|
+
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
|
|
115
|
+
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
|
|
116
|
+
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
|
|
117
|
+
- If `TASK_DESCRIPTION` provided (no issue): infer type from description keywords (e.g., "fix login bug" → `fix`, "refactor auth" → `refactor`, "add JWT" → `feature`, "update docs" → `docs`, "chore: cleanup" → `chore`), then slugify description as `{type}/{slug}` (max 40 chars)
|
|
118
|
+
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
|
|
119
|
+
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
|
|
120
|
+
4. Return setup summary with branch name and BASE_BRANCH recorded
|
|
116
121
|
|
|
117
122
|
**Output:**
|
|
118
123
|
```markdown
|
|
119
|
-
## Task Setup: {
|
|
124
|
+
## Task Setup: {branch-name}
|
|
120
125
|
|
|
121
126
|
### Branch
|
|
122
|
-
- **
|
|
127
|
+
- **Branch name**: {derived-branch-name}
|
|
123
128
|
- **Base branch**: {BASE_BRANCH} (PR target)
|
|
124
129
|
|
|
125
130
|
### Issue (if fetched)
|
|
@@ -27,21 +27,20 @@ Orchestrate a single task from exploration through implementation by spawning sp
|
|
|
27
27
|
|
|
28
28
|
Record the current branch name as `BASE_BRANCH` - this will be the PR target.
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Spawn Git agent to set up task environment:
|
|
30
|
+
Spawn Git agent to set up task environment. The Git agent derives the branch name automatically from the issue or task description:
|
|
33
31
|
|
|
34
32
|
```
|
|
35
33
|
Task(subagent_type="Git"):
|
|
36
34
|
"OPERATION: setup-task
|
|
37
|
-
TASK_ID: {task-id}
|
|
38
35
|
BASE_BRANCH: {current branch name}
|
|
39
|
-
ISSUE_INPUT: {issue number if
|
|
40
|
-
|
|
36
|
+
ISSUE_INPUT: {issue number if $ARGUMENTS starts with #, otherwise omit}
|
|
37
|
+
TASK_DESCRIPTION: {task description from $ARGUMENTS if not an issue number, otherwise omit}
|
|
38
|
+
Derive branch name from issue or description, create feature branch, and fetch issue if specified.
|
|
41
39
|
Return the branch setup summary."
|
|
42
40
|
```
|
|
43
41
|
|
|
44
42
|
**Capture from Git agent output** (used throughout flow):
|
|
43
|
+
- `TASK_ID`: The branch name created by Git agent (use as TASK_ID for rest of flow)
|
|
45
44
|
- `BASE_BRANCH`: Branch this feature was created from (for PR target)
|
|
46
45
|
- `ISSUE_NUMBER`: GitHub issue number (if provided)
|
|
47
46
|
- `ISSUE_CONTENT`: Full issue body including description (if provided)
|
|
@@ -27,21 +27,20 @@ Orchestrate a single task from exploration through implementation by spawning sp
|
|
|
27
27
|
|
|
28
28
|
Record the current branch name as `BASE_BRANCH` - this will be the PR target.
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Spawn Git agent to set up task environment:
|
|
30
|
+
Spawn Git agent to set up task environment. The Git agent derives the branch name automatically from the issue or task description:
|
|
33
31
|
|
|
34
32
|
```
|
|
35
33
|
Task(subagent_type="Git"):
|
|
36
34
|
"OPERATION: setup-task
|
|
37
|
-
TASK_ID: {task-id}
|
|
38
35
|
BASE_BRANCH: {current branch name}
|
|
39
|
-
ISSUE_INPUT: {issue number if
|
|
40
|
-
|
|
36
|
+
ISSUE_INPUT: {issue number if $ARGUMENTS starts with #, otherwise omit}
|
|
37
|
+
TASK_DESCRIPTION: {task description from $ARGUMENTS if not an issue number, otherwise omit}
|
|
38
|
+
Derive branch name from issue or description, create feature branch, and fetch issue if specified.
|
|
41
39
|
Return the branch setup summary."
|
|
42
40
|
```
|
|
43
41
|
|
|
44
42
|
**Capture from Git agent output** (used throughout flow):
|
|
43
|
+
- `TASK_ID`: The branch name created by Git agent (use as TASK_ID for rest of flow)
|
|
45
44
|
- `BASE_BRANCH`: Branch this feature was created from (for PR target)
|
|
46
45
|
- `ISSUE_NUMBER`: GitHub issue number (if provided)
|
|
47
46
|
- `ISSUE_CONTENT`: Full issue body including description (if provided)
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-java",
|
|
3
3
|
"description": "Java language patterns - records, sealed classes, composition, modern Java features",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-python",
|
|
3
3
|
"description": "Python language patterns - type hints, protocols, dataclasses, async programming",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-react",
|
|
3
3
|
"description": "React framework patterns - hooks, state management, composition, performance",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-resolve",
|
|
3
3
|
"description": "Process and fix code review issues with risk assessment - decides FIX vs TECH_DEBT based on impact",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -21,7 +21,7 @@ The orchestrator provides:
|
|
|
21
21
|
|-----------|---------|----------------|
|
|
22
22
|
| `ensure-pr-ready` | Pre-flight for /review: commit, push, create PR | - |
|
|
23
23
|
| `validate-branch` | Pre-flight for /resolve: check branch state | - |
|
|
24
|
-
| `setup-task` | Create feature branch and fetch issue | `
|
|
24
|
+
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
|
|
25
25
|
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |
|
|
26
26
|
| `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |
|
|
27
27
|
| `manage-debt` | Update tech debt backlog with pre-existing issues | `REVIEW_DIR`, `TIMESTAMP` |
|
|
@@ -101,25 +101,30 @@ Pre-flight validation for `/resolve`. Checks branch state without modifications.
|
|
|
101
101
|
|
|
102
102
|
## Operation: setup-task
|
|
103
103
|
|
|
104
|
-
Set up task environment: create feature branch and optionally fetch issue.
|
|
104
|
+
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
|
|
105
105
|
|
|
106
106
|
**Input:**
|
|
107
|
-
- `TASK_ID`: Unique task identifier (becomes branch name)
|
|
108
107
|
- `BASE_BRANCH`: Branch to create from (track this for PR target)
|
|
109
108
|
- `ISSUE_INPUT` (optional): Issue number to fetch
|
|
109
|
+
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
|
|
110
110
|
|
|
111
111
|
**Process:**
|
|
112
112
|
1. Record current branch as BASE_BRANCH for later PR targeting
|
|
113
|
-
2.
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
2. **Derive branch name:**
|
|
114
|
+
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
|
|
115
|
+
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
|
|
116
|
+
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
|
|
117
|
+
- If `TASK_DESCRIPTION` provided (no issue): infer type from description keywords (e.g., "fix login bug" → `fix`, "refactor auth" → `refactor`, "add JWT" → `feature`, "update docs" → `docs`, "chore: cleanup" → `chore`), then slugify description as `{type}/{slug}` (max 40 chars)
|
|
118
|
+
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
|
|
119
|
+
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
|
|
120
|
+
4. Return setup summary with branch name and BASE_BRANCH recorded
|
|
116
121
|
|
|
117
122
|
**Output:**
|
|
118
123
|
```markdown
|
|
119
|
-
## Task Setup: {
|
|
124
|
+
## Task Setup: {branch-name}
|
|
120
125
|
|
|
121
126
|
### Branch
|
|
122
|
-
- **
|
|
127
|
+
- **Branch name**: {derived-branch-name}
|
|
123
128
|
- **Base branch**: {BASE_BRANCH} (PR target)
|
|
124
129
|
|
|
125
130
|
### Issue (if fetched)
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-rust",
|
|
3
3
|
"description": "Rust language patterns - ownership, borrowing, error handling, type-driven design",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-specify",
|
|
3
3
|
"description": "Interactive feature specification - creates well-defined GitHub issues through requirements exploration and clarification",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
"name": "devflow-typescript",
|
|
3
3
|
"description": "TypeScript language patterns - type safety, generics, utility types, type guards",
|
|
4
4
|
"author": {
|
|
5
|
-
"name": "
|
|
6
|
-
"email": "dean@keren.dev"
|
|
5
|
+
"name": "Dean0x"
|
|
7
6
|
},
|
|
8
|
-
"version": "1.
|
|
7
|
+
"version": "1.4.0",
|
|
9
8
|
"homepage": "https://github.com/dean0x/devflow",
|
|
10
9
|
"repository": "https://github.com/dean0x/devflow",
|
|
11
10
|
"license": "MIT",
|
package/shared/agents/git.md
CHANGED
|
@@ -21,7 +21,7 @@ The orchestrator provides:
|
|
|
21
21
|
|-----------|---------|----------------|
|
|
22
22
|
| `ensure-pr-ready` | Pre-flight for /review: commit, push, create PR | - |
|
|
23
23
|
| `validate-branch` | Pre-flight for /resolve: check branch state | - |
|
|
24
|
-
| `setup-task` | Create feature branch and fetch issue | `
|
|
24
|
+
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
|
|
25
25
|
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |
|
|
26
26
|
| `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |
|
|
27
27
|
| `manage-debt` | Update tech debt backlog with pre-existing issues | `REVIEW_DIR`, `TIMESTAMP` |
|
|
@@ -101,25 +101,30 @@ Pre-flight validation for `/resolve`. Checks branch state without modifications.
|
|
|
101
101
|
|
|
102
102
|
## Operation: setup-task
|
|
103
103
|
|
|
104
|
-
Set up task environment: create feature branch and optionally fetch issue.
|
|
104
|
+
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
|
|
105
105
|
|
|
106
106
|
**Input:**
|
|
107
|
-
- `TASK_ID`: Unique task identifier (becomes branch name)
|
|
108
107
|
- `BASE_BRANCH`: Branch to create from (track this for PR target)
|
|
109
108
|
- `ISSUE_INPUT` (optional): Issue number to fetch
|
|
109
|
+
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
|
|
110
110
|
|
|
111
111
|
**Process:**
|
|
112
112
|
1. Record current branch as BASE_BRANCH for later PR targeting
|
|
113
|
-
2.
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
2. **Derive branch name:**
|
|
114
|
+
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
|
|
115
|
+
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
|
|
116
|
+
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
|
|
117
|
+
- If `TASK_DESCRIPTION` provided (no issue): infer type from description keywords (e.g., "fix login bug" → `fix`, "refactor auth" → `refactor`, "add JWT" → `feature`, "update docs" → `docs`, "chore: cleanup" → `chore`), then slugify description as `{type}/{slug}` (max 40 chars)
|
|
118
|
+
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
|
|
119
|
+
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
|
|
120
|
+
4. Return setup summary with branch name and BASE_BRANCH recorded
|
|
116
121
|
|
|
117
122
|
**Output:**
|
|
118
123
|
```markdown
|
|
119
|
-
## Task Setup: {
|
|
124
|
+
## Task Setup: {branch-name}
|
|
120
125
|
|
|
121
126
|
### Branch
|
|
122
|
-
- **
|
|
127
|
+
- **Branch name**: {derived-branch-name}
|
|
123
128
|
- **Base branch**: {BASE_BRANCH} (PR target)
|
|
124
129
|
|
|
125
130
|
### Issue (if fetched)
|