How this command is triggered — by the user, by Claude, or both
Slash command
/jira:startThe summary Claude sees in its command listing — used to decide when to auto-load this command
# Start Jira Issue Start working on a Jira issue by creating a branch, updating status, and syncing Notion. ## Usage If no issue key provided, shows list of available issues. ## Step 0: Load Configuration ### 0.1 Load Workflow Config If not exists or `jira.enabled` is false: Extract: - `jira.cloudId` - Cloud ID for API calls - `jira.projectKey` - Project key - `jira.includeInBranch` - Include issue key in branch - `notion.enabled` - Whether to sync to Notion ### 0.2 Load Notion Config (if notion.enabled) Extract: - `todo.id` - TODO database ID (user-level config) ## Step 1:...
Start working on a Jira issue by creating a branch, updating status, and syncing Notion.
/jira:start [issue-key]
If no issue key provided, shows list of available issues.
cat .claude/workflow.json 2>/dev/null
If not exists or jira.enabled is false:
✗ Jira integration not configured.
Run /workflow:init to set up Jira integration.
Extract:
jira.cloudId - Cloud ID for API callsjira.projectKey - Project keyjira.includeInBranch - Include issue key in branchnotion.enabled - Whether to sync to Notioncat ~/.claude/notion.json 2>/dev/null
Extract:
todo.id - TODO database ID (user-level config)If issue key not provided as argument:
Call mcp__atlassian__searchJiraIssuesUsingJql:
jql: "project = {projectKey} AND assignee = currentUser() AND status = 'To Do' ORDER BY priority DESC"
fields: ["summary", "status", "issuetype", "priority"]
maxResults: 10
Display issues using Cascading Selection (4-option limit):
Round 1:
| Option | Description |
|---|---|
| {issue1.key} | {issue1.summary} |
| {issue2.key} | {issue2.summary} |
| {issue3.key} | {issue3.summary} |
| More... | Show more issues |
Round 2 (if More...):
| Option | Description |
|---|---|
| {issue4.key} | {issue4.summary} |
| {issue5.key} | {issue5.summary} |
| {issue6.key} | {issue6.summary} |
| Enter key | Enter issue key manually |
Call mcp__atlassian__getJiraIssue:
cloudId: {jira.cloudId}
issueIdOrKey: {selected_issue_key}
fields: ["summary", "status", "issuetype", "priority", "description", "customfield_10015"]
Verify issue exists and extract:
issueKey - e.g., CP-1summary - Issue titleissueType - Bug, Task, Story, Epicstatus - Current statusstartDate - Existing start date (customfield_10015), may be nullGet available transitions:
Call mcp__atlassian__getTransitionsForJiraIssue:
cloudId: {jira.cloudId}
issueIdOrKey: {issueKey}
Find transition to "In Progress" status and execute:
Call mcp__atlassian__transitionJiraIssue:
cloudId: {jira.cloudId}
issueIdOrKey: {issueKey}
transition: {"id": "{transition_id}"}
Only set Start Date if not already set:
If startDate from Step 2 is null/empty:
Get current date:
date +%Y-%m-%d
Store as {today_date}.
Set the start date field in Jira:
Call mcp__atlassian__editJiraIssue:
cloudId: {jira.cloudId}
issueIdOrKey: {issueKey}
fields: {
"customfield_10015": "{today_date}"
}
If startDate already exists:
startDate for displayNote: Start Date field name may vary by project:
customfield_10015, customfield_10014, Start dateMap issue type to branch type:
bugfixfeaturefeaturefeatureConvert summary to kebab-case description:
Internally call /git:branch with parameters:
This creates branch: {type}/{issueKey}-{description}
Example: feature/CP-1-add-user-authentication
If notion.enabled is true:
Search for existing TODO item by Jira link:
Call mcp__notion__notion-search:
query: "{issueKey}"
filter: {"property": "object", "value": "page"}
If found, update status (and start date if not already set):
If Start Date was not set (from Step 3.2):
Call mcp__notion__notion-update-page:
data: {
"page_id": "{found_page_id}",
"command": "update_properties",
"properties": {
"Status": "In Progress",
"date:Period:start": "{today_date}",
"date:Period:is_datetime": 0
}
}
If Start Date already exists:
Call mcp__notion__notion-update-page:
data: {
"page_id": "{found_page_id}",
"command": "update_properties",
"properties": {
"Status": "In Progress"
}
}
✓ Issue started: {issueKey}
Summary: {summary}
Type: {issueType}
Status: To Do → In Progress
Start Date: {today_date} # or "{existing_date} (already set)"
Branch: {branch_name}
├─ Created via /git:branch
└─ Checked out automatically
{if notion synced}
✓ Notion TODO updated
├─ Status: Todo → In Progress
└─ Period: {today_date} → (end)
{/if}
Next steps:
- Make your changes
- /git:commit - Commit with [{issueKey}] in message
- /jira:done - Complete the issue and create PR
✗ Issue not found: {issueKey}
Check the issue key and try again.
Use /jira:backlog to see available issues.
⚠ Issue started with warnings
Branch created: {branch_name}
Status change failed: {error}
Issue may already be In Progress or transition not available.
✗ Failed to start issue: {error}
Possible causes:
- Uncommitted changes in current branch
- Branch already exists
- Invalid branch name
Fix the issue and try again.
npx claudepluginhub minukHwang/claude-plugins --plugin jira/syncBi-directionally syncs local dev progress with Jira: pulls issue details/changes, pushes comments/status/PRs, detects/resolves conflicts, updates checkpoints.
/issue-createCreates a new ticket/issue in configured backend (Gitea, GitHub, Jira, Linear, or local files) with title, optional description, labels, assignee, priority, milestone, and regression check. Returns issue number, URL, or file path.
/startImplements Manus-style file-based planning for complex tasks by creating task_plan.md, findings.md, and progress.md. Supports automatic session recovery after /clear.
/startOrchestrates provided tasks using three agents (task-orchestrator, decomposer, dependency-analyzer) to generate execution plans, tracking directories, dependency graphs, and coordination documents.
/startOrchestrates provided tasks using three agents (task-orchestrator, decomposer, dependency-analyzer) to generate execution plans, tracking directories, dependency graphs, and coordination documents.
/startStarts ClaudeClaw heartbeat daemon: blocks home-dir starts, installs Bun/Node if needed, checks/runs interactive config for model, heartbeat, Telegram/Discord/security.