🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

devflow-kit

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

devflow-kit - npm Package Compare versions

Comparing version
1.3.3
to
1.4.0
+14
-0
CHANGELOG.md

@@ -8,2 +8,15 @@ # Changelog

## [1.4.0] - 2026-03-09
### Added
- **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`)
### Fixed
- **Code review file detection** — Corrected file detection and skill check logic in `/code-review`
### Changed
- **Author standardization** — Unified author name to Dean0x across marketplace and plugin manifests
---
## [1.3.3] - 2026-03-09

@@ -844,2 +857,3 @@

[1.4.0]: https://github.com/dean0x/devflow/compare/v1.3.3...v1.4.0
[1.3.3]: https://github.com/dean0x/devflow/compare/v1.3.2...v1.3.3

@@ -846,0 +860,0 @@ [1.3.2]: https://github.com/dean0x/devflow/compare/v1.3.1...v1.3.2

+1
-1
{
"name": "devflow-kit",
"version": "1.3.3",
"version": "1.4.0",
"description": "Agentic Development Toolkit for Claude Code - Enhance AI-assisted development with intelligent commands and workflows",

@@ -5,0 +5,0 @@ "type": "module",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

{
"name": "devflow-ambient",
"description": "Ambient mode — auto-loads relevant skills for every prompt",
"version": "1.3.3",
"author": {
"name": "Dean0x"
},
"version": "1.4.0",
"agents": [],

@@ -6,0 +9,0 @@ "skills": [

{
"name": "devflow-audit-claude",
"description": "Audit CLAUDE.md files against Anthropic best practices",
"version": "1.3.3",
"author": {
"name": "Dean0x"
},
"version": "1.4.0",
"agents": [],
"skills": []
}

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -24,3 +24,3 @@ ---

| `validate-branch` | Pre-flight for /resolve: check branch state | - |
| `setup-task` | Create feature branch and fetch issue | `TASK_ID`, `BASE_BRANCH`, `ISSUE_INPUT` (optional) |
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |

@@ -105,21 +105,26 @@ | `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |

Set up task environment: create feature branch and optionally fetch issue.
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
**Input:**
- `TASK_ID`: Unique task identifier (becomes branch name)
- `BASE_BRANCH`: Branch to create from (track this for PR target)
- `ISSUE_INPUT` (optional): Issue number to fetch
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
**Process:**
1. Record current branch as BASE_BRANCH for later PR targeting
2. Create and checkout feature branch: `git checkout -b {TASK_ID}`
3. If ISSUE_INPUT provided, fetch issue details via GitHub API
4. Return setup summary with BASE_BRANCH recorded
2. **Derive branch name:**
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
- 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)
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
4. Return setup summary with branch name and BASE_BRANCH recorded
**Output:**
```markdown
## Task Setup: {TASK_ID}
## Task Setup: {branch-name}
### Branch
- **Feature branch**: {TASK_ID}
- **Branch name**: {derived-branch-name}
- **Base branch**: {BASE_BRANCH} (PR target)

@@ -126,0 +131,0 @@

@@ -41,5 +41,5 @@ ---

|-----------|-----------------|
| .ts/.tsx files | typescript |
| .tsx/.jsx files | react |
| .tsx/.jsx files | accessibility |
| Any .ts or .tsx files | typescript |
| .tsx or .jsx files (React components) | react |
| .tsx or .jsx files (React components) | accessibility |
| .tsx/.jsx/.css/.scss files | frontend-design |

@@ -54,3 +54,3 @@ | .go files | go |

**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 (use Glob). If the skill file doesn't exist, **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.
**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.

@@ -57,0 +57,0 @@ ### Phase 2: Spawn Review Team

@@ -41,5 +41,5 @@ ---

|-----------|-------------|
| .ts/.tsx files | typescript |
| .tsx/.jsx files | react |
| .tsx/.jsx files | accessibility |
| Any .ts or .tsx files | typescript |
| .tsx or .jsx files (React components) | react |
| .tsx or .jsx files (React components) | accessibility |
| .tsx/.jsx/.css/.scss files | frontend-design |

@@ -54,3 +54,3 @@ | .go files | go |

**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 (use Glob). If the skill file doesn't exist, **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.
**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.

@@ -57,0 +57,0 @@ ### Phase 2: Run Reviews (Parallel)

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -24,3 +24,3 @@ ---

| `validate-branch` | Pre-flight for /resolve: check branch state | - |
| `setup-task` | Create feature branch and fetch issue | `TASK_ID`, `BASE_BRANCH`, `ISSUE_INPUT` (optional) |
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |

@@ -105,21 +105,26 @@ | `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |

Set up task environment: create feature branch and optionally fetch issue.
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
**Input:**
- `TASK_ID`: Unique task identifier (becomes branch name)
- `BASE_BRANCH`: Branch to create from (track this for PR target)
- `ISSUE_INPUT` (optional): Issue number to fetch
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
**Process:**
1. Record current branch as BASE_BRANCH for later PR targeting
2. Create and checkout feature branch: `git checkout -b {TASK_ID}`
3. If ISSUE_INPUT provided, fetch issue details via GitHub API
4. Return setup summary with BASE_BRANCH recorded
2. **Derive branch name:**
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
- 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)
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
4. Return setup summary with branch name and BASE_BRANCH recorded
**Output:**
```markdown
## Task Setup: {TASK_ID}
## Task Setup: {branch-name}
### Branch
- **Feature branch**: {TASK_ID}
- **Branch name**: {derived-branch-name}
- **Base branch**: {BASE_BRANCH} (PR target)

@@ -126,0 +131,0 @@

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -24,3 +24,3 @@ ---

| `validate-branch` | Pre-flight for /resolve: check branch state | - |
| `setup-task` | Create feature branch and fetch issue | `TASK_ID`, `BASE_BRANCH`, `ISSUE_INPUT` (optional) |
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |

@@ -105,21 +105,26 @@ | `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |

Set up task environment: create feature branch and optionally fetch issue.
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
**Input:**
- `TASK_ID`: Unique task identifier (becomes branch name)
- `BASE_BRANCH`: Branch to create from (track this for PR target)
- `ISSUE_INPUT` (optional): Issue number to fetch
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
**Process:**
1. Record current branch as BASE_BRANCH for later PR targeting
2. Create and checkout feature branch: `git checkout -b {TASK_ID}`
3. If ISSUE_INPUT provided, fetch issue details via GitHub API
4. Return setup summary with BASE_BRANCH recorded
2. **Derive branch name:**
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
- 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)
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
4. Return setup summary with branch name and BASE_BRANCH recorded
**Output:**
```markdown
## Task Setup: {TASK_ID}
## Task Setup: {branch-name}
### Branch
- **Feature branch**: {TASK_ID}
- **Branch name**: {derived-branch-name}
- **Base branch**: {BASE_BRANCH} (PR target)

@@ -126,0 +131,0 @@

@@ -30,13 +30,11 @@ ---

Generate a unique `TASK_ID`: `task-{YYYY-MM-DD_HHMM}` (e.g., `task-2025-01-15_1430`).
Spawn Git agent to set up task environment. The Git agent derives the branch name automatically from the issue or task description:
Spawn Git agent to set up task environment:
```
Task(subagent_type="Git"):
"OPERATION: setup-task
TASK_ID: {task-id}
BASE_BRANCH: {current branch name}
ISSUE_INPUT: {issue number if provided, otherwise omit}
Create feature branch and fetch issue if specified.
ISSUE_INPUT: {issue number if $ARGUMENTS starts with #, otherwise omit}
TASK_DESCRIPTION: {task description from $ARGUMENTS if not an issue number, otherwise omit}
Derive branch name from issue or description, create feature branch, and fetch issue if specified.
Return the branch setup summary."

@@ -46,2 +44,3 @@ ```

**Capture from Git agent output** (used throughout flow):
- `TASK_ID`: The branch name created by Git agent (use as TASK_ID for rest of flow)
- `BASE_BRANCH`: Branch this feature was created from (for PR target)

@@ -48,0 +47,0 @@ - `ISSUE_NUMBER`: GitHub issue number (if provided)

@@ -30,13 +30,11 @@ ---

Generate a unique `TASK_ID`: `task-{YYYY-MM-DD_HHMM}` (e.g., `task-2025-01-15_1430`).
Spawn Git agent to set up task environment. The Git agent derives the branch name automatically from the issue or task description:
Spawn Git agent to set up task environment:
```
Task(subagent_type="Git"):
"OPERATION: setup-task
TASK_ID: {task-id}
BASE_BRANCH: {current branch name}
ISSUE_INPUT: {issue number if provided, otherwise omit}
Create feature branch and fetch issue if specified.
ISSUE_INPUT: {issue number if $ARGUMENTS starts with #, otherwise omit}
TASK_DESCRIPTION: {task description from $ARGUMENTS if not an issue number, otherwise omit}
Derive branch name from issue or description, create feature branch, and fetch issue if specified.
Return the branch setup summary."

@@ -46,2 +44,3 @@ ```

**Capture from Git agent output** (used throughout flow):
- `TASK_ID`: The branch name created by Git agent (use as TASK_ID for rest of flow)
- `BASE_BRANCH`: Branch this feature was created from (for PR target)

@@ -48,0 +47,0 @@ - `ISSUE_NUMBER`: GitHub issue number (if provided)

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -24,3 +24,3 @@ ---

| `validate-branch` | Pre-flight for /resolve: check branch state | - |
| `setup-task` | Create feature branch and fetch issue | `TASK_ID`, `BASE_BRANCH`, `ISSUE_INPUT` (optional) |
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |

@@ -105,21 +105,26 @@ | `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |

Set up task environment: create feature branch and optionally fetch issue.
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
**Input:**
- `TASK_ID`: Unique task identifier (becomes branch name)
- `BASE_BRANCH`: Branch to create from (track this for PR target)
- `ISSUE_INPUT` (optional): Issue number to fetch
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
**Process:**
1. Record current branch as BASE_BRANCH for later PR targeting
2. Create and checkout feature branch: `git checkout -b {TASK_ID}`
3. If ISSUE_INPUT provided, fetch issue details via GitHub API
4. Return setup summary with BASE_BRANCH recorded
2. **Derive branch name:**
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
- 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)
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
4. Return setup summary with branch name and BASE_BRANCH recorded
**Output:**
```markdown
## Task Setup: {TASK_ID}
## Task Setup: {branch-name}
### Branch
- **Feature branch**: {TASK_ID}
- **Branch name**: {derived-branch-name}
- **Base branch**: {BASE_BRANCH} (PR target)

@@ -126,0 +131,0 @@

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

{
"name": "devflow-self-review",
"description": "Self-review workflow: Simplifier + Scrutinizer for code quality",
"version": "1.3.3",
"author": {
"name": "Dean0x"
},
"version": "1.4.0",
"agents": [

@@ -6,0 +9,0 @@ "simplifier",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -5,6 +5,5 @@ {

"author": {
"name": "DevFlow Contributors",
"email": "dean@keren.dev"
"name": "Dean0x"
},
"version": "1.3.3",
"version": "1.4.0",
"homepage": "https://github.com/dean0x/devflow",

@@ -11,0 +10,0 @@ "repository": "https://github.com/dean0x/devflow",

@@ -24,3 +24,3 @@ ---

| `validate-branch` | Pre-flight for /resolve: check branch state | - |
| `setup-task` | Create feature branch and fetch issue | `TASK_ID`, `BASE_BRANCH`, `ISSUE_INPUT` (optional) |
| `setup-task` | Create feature branch and fetch issue | `BASE_BRANCH`, `ISSUE_INPUT` (optional), `TASK_DESCRIPTION` (optional) |
| `fetch-issue` | Fetch GitHub issue for implementation | `ISSUE_INPUT` (number or search term) |

@@ -105,21 +105,26 @@ | `comment-pr` | Create PR inline comments for review findings | `PR_NUMBER`, `REVIEW_BASE_DIR`, `TIMESTAMP` |

Set up task environment: create feature branch and optionally fetch issue.
Set up task environment: derive branch name, create feature branch, and optionally fetch issue.
**Input:**
- `TASK_ID`: Unique task identifier (becomes branch name)
- `BASE_BRANCH`: Branch to create from (track this for PR target)
- `ISSUE_INPUT` (optional): Issue number to fetch
- `TASK_DESCRIPTION` (optional): Free-text task description (when no issue)
**Process:**
1. Record current branch as BASE_BRANCH for later PR targeting
2. Create and checkout feature branch: `git checkout -b {TASK_ID}`
3. If ISSUE_INPUT provided, fetch issue details via GitHub API
4. Return setup summary with BASE_BRANCH recorded
2. **Derive branch name:**
- If `ISSUE_INPUT` provided: fetch issue via GitHub API first, then derive branch name as `{type}/{number}-{slug}` where:
- `type` is inferred from issue labels: `bug` → `fix`, `documentation` or `docs` → `docs`, `refactor` → `refactor`, `chore` or `maintenance` → `chore`, default → `feature`
- `slug` is the issue title: lowercased, non-alphanumeric replaced with hyphens, consecutive hyphens collapsed, trimmed, max 40 characters
- 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)
- If neither: fallback to `task-{YYYY-MM-DD_HHMM}`
3. Create and checkout feature branch: `git checkout -b {derived-branch-name}`
4. Return setup summary with branch name and BASE_BRANCH recorded
**Output:**
```markdown
## Task Setup: {TASK_ID}
## Task Setup: {branch-name}
### Branch
- **Feature branch**: {TASK_ID}
- **Branch name**: {derived-branch-name}
- **Base branch**: {BASE_BRANCH} (PR target)

@@ -126,0 +131,0 @@