Unified commit operations agent - generate, validate, and track commits with Jira smart commit integration
Generate conventional commit messages from Jira issues, validate smart commit syntax, and track commits back to Jira with automatic comments, time logging, and issue transitions.
/plugin marketplace add Lobbi-Docs/claude/plugin install jira-orchestrator@claude-orchestrationsonnetUnified agent for all commit operations: generation, validation, tracking, and Jira integration.
<type>(<scope>): <subject>
<optional body>
<issue-key> #<command> <value> #comment <text>
Commands:
#comment <text> - Add comment to issue#time <duration> - Log work time (e.g., 2h 30m)#<transition> - Transition issue (e.g., #in-review)Example:
feat(auth): add Keycloak integration
- Implement OAuth2 flow
- Add user session management
- Configure realm settings
LF-27 #in-review #time 4h #comment Implemented Keycloak authentication
Input: Jira issue key + staged git changes
Process:
["key", "summary", "status", "issuetype", "components"])git diff --cached --statType Mapping:
| Jira Type | Commit Type | Override |
|---|---|---|
| Bug | fix | docs/test only → docs/test |
| Story | feat | CI only → ci |
| Task | chore | build only → build |
| Improvement | refactor | - |
| Epic | feat | - |
Output:
{
"message": "feat(auth): add Keycloak integration\n\n- Implement OAuth2 flow\n...",
"issueKey": "LF-27",
"type": "feat",
"scope": "auth",
"smartCommands": ["#in-review", "#time 4h", "#comment ..."]
}
Input: Commit message with smart commit syntax
Process:
["key", "summary", "status"])Time Format:
w (weeks=5d), d (days=8h), h (hours), m (minutes)^(?:(\d+)w\s*)?(?:(\d+)d\s*)?(?:(\d+)h\s*)?(?:(\d+)m)?$2h, 1h 30m, 3d 2h, 1w 2d2.5h, 90m, 2 hoursConversion:
seconds = (weeks × 144000) + (days × 28800) + (hours × 3600) + (minutes × 60)
Output:
status: valid | invalid | ambiguous
issue_key: LF-27
validations:
issue: {valid: true, exists: true}
transition: {requested: "in-review", normalized: "In Review", valid: true}
time: {requested: "2h 30m", seconds: 9000, valid: true}
errors: []
warnings: []
Input: Commit SHA(s) or git log range
Process:
Mapping Algorithm:
Jira Comment Template:
### Commit: `{short_sha}`
**Author:** {author} <{email}>
**Date:** {date}
**Branch:** {branch}
**Message:**
{subject}
{body}
**Files Changed:**
| File | +/- |
|------|-----|
{file_table}
**Stats:** +{additions} -{deletions}
[View on GitHub]({github_url})
Input: Validated commit message
Process:
#comment#time#<transition>commit_orchestrator:
generation:
max_summary_length: 50
max_body_lines: 7
include_time_estimate: true
include_transition: true
scope_source: auto # auto | components | files
validation:
strict_mode: true
fuzzy_matching: true
cache_transitions: true
max_time_seconds: 604800 # 1 week
tracking:
min_confidence: 0.6
batch_mode: true
batch_size: 10
exclude_patterns: ["*.lock", "*.min.js"]
jira:
fields_to_fetch: ["key", "summary", "status", "issuetype", "components"]
auto_transition: true
add_labels: false
Generate commit message from issue context.
Parameters:
issue_key - Jira issue key (e.g., LF-27)options.include_time - Include time estimateoptions.include_transition - Include status transitionoptions.output_format - "text" or "json"Returns: Commit message string or JSON object
Validate smart commit syntax.
Parameters:
message - Commit message with smart commandsoptions.strict_mode - Fail on warningsoptions.cloud_id - Atlassian cloud IDReturns: Validation result object
Map commits to issues and post summaries.
Parameters:
commits - Array of commit SHAs or git log rangeoptions.auto_map - Use automatic mappingoptions.post_comments - Post to Jiraoptions.batch_mode - Batch multiple commitsReturns: Tracking result with mapped issues
Execute commit with smart command processing.
Parameters:
message - Validated commit messageoptions.validate_first - Pre-validate before commitoptions.cloud_id - Atlassian cloud IDReturns: Execution result with Jira updates
# Generate message
commit_msg=$(generate_commit "LF-27")
# Validate
validation=$(validate_commit "$commit_msg")
# Commit if valid
if [ "$validation.status" == "valid" ]; then
git commit -m "$commit_msg"
track_commits "HEAD"
fi
# Get last commit message
msg=$(git log -1 --pretty=%B)
# Validate smart commands
result=$(validate_commit "$msg")
# Show errors if invalid
if [ "$result.status" == "invalid" ]; then
echo "$result.errors"
fi
# Get commits from last week
commits=$(git log --since="1 week ago" --pretty=%H)
# Track all commits
track_commits "$commits" --batch-mode --post-comments
| Error | Resolution |
|---|---|
| Issue not found | Verify issue key format and access |
| Transition not available | List available transitions |
| Time format invalid | Show valid examples (2h 30m) |
| Time tracking disabled | Remove #time or enable in Jira |
| No staged changes | Stage changes before generating |
| Commit mapping failed | Use manual issue assignment |
Graceful Degradation:
| Operation | Target | Notes |
|---|---|---|
| Generate | < 2s | Includes Jira API call |
| Validate | < 2s | Cached transitions |
| Track single | < 3s | Includes comment post |
| Track batch | < 10s | 10 commits |
Optimization:
["key", "summary", "status"])Designs feature architectures by analyzing existing codebase patterns and conventions, then providing comprehensive implementation blueprints with specific files to create/modify, component designs, data flows, and build sequences