--- description: Generate conventional commit subject line with type, scope, and description --- # Operation: Generate Subject Line Create a properly formatted subject line following the conventional commits standard: `(): ` ## Parameters from $ARGUMENTS **Required:** - `type:` - Commit type (feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert) - `description:` - Brief description of changes **Optional:** - `scope:` - Affected module/component - `max_length:` - Maximum length (default: 50, hard limit: 72) **Format:** `subject type:feat scope:auth description:"add OAuth authentication"` ## Workflow ### Step 1: Parse Parameters Extract parameters from $ARGUMENTS: ```bash # Parse key:value pairs type=$(echo "$ARGUMENTS" | grep -oP 'type:\K[^ ]+') scope=$(echo "$ARGUMENTS" | grep -oP 'scope:\K[^ ]+') description=$(echo "$ARGUMENTS" | grep -oP 'description:"\K[^"]+' || echo "$ARGUMENTS" | grep -oP 'description:\K[^ ]+') max_length=$(echo "$ARGUMENTS" | grep -oP 'max_length:\K[0-9]+' || echo "50") ``` ### Step 2: Validate Parameters **Check required parameters:** ```bash if [ -z "$type" ]; then echo "ERROR: type parameter is required" echo "Usage: subject type: description:\"\" [scope:]" exit 1 fi if [ -z "$description" ]; then echo "ERROR: description parameter is required" echo "Usage: subject type: description:\"\" [scope:]" exit 1 fi ``` **Validate type:** ```bash valid_types="feat fix docs style refactor perf test build ci chore revert" if ! echo "$valid_types" | grep -qw "$type"; then echo "ERROR: Invalid type '$type'" echo "Valid types: $valid_types" exit 1 fi ``` ### Step 3: Invoke Subject Generator Script Pass parameters to the utility script for intelligent formatting: ```bash # Prepare JSON input cat <(): Length: XX/50 characters VALIDATION: ─────────────────────────────────────────────── ✓ Type is valid ✓ Imperative mood used ✓ No capitalization after colon ✓ No period at end ✓ Within character limit SUGGESTIONS: ─────────────────────────────────────────────── - - ═══════════════════════════════════════════════ ``` ## Output Format Return structured output: - Generated subject line - Character count - Validation results - Suggestions for improvement (if any) ## Error Handling **Missing required parameters:** ``` ERROR: Missing required parameter 'type' Usage: subject type: description:"" [scope:] Example: subject type:feat description:"add user authentication" ``` **Invalid type:** ``` ERROR: Invalid type 'feature' Valid types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert ``` **Description too long:** ``` WARNING: Subject line exceeds 50 characters (XX chars) Current: (): Suggestion: Shorten description or move details to body Recommended: (): ``` **Non-imperative mood:** ``` WARNING: Use imperative mood Current: "added authentication" Correct: "add authentication" ``` ## Subject Line Rules **Imperative Mood:** - ✅ "add feature" (correct) - ❌ "added feature" (past tense) - ❌ "adds feature" (present tense) **Capitalization:** - ✅ "feat: add login" (lowercase after colon) - ❌ "feat: Add login" (uppercase after colon) **Punctuation:** - ✅ "fix: resolve crash" (no period) - ❌ "fix: resolve crash." (period at end) **Length:** - Target: 50 characters maximum - Hard limit: 72 characters - Include type, scope, colon, and description ## Integration with Agent The commit-assistant agent uses this operation to: 1. Generate subject lines during commit message creation 2. Validate subject line format 3. Suggest improvements for clarity 4. Ensure conventional commits compliance ## Usage Examples ### Example 1: Basic Subject ```bash # Input /message-generation subject type:feat description:"add user authentication" # Output Subject: feat: add user authentication Length: 30/50 characters Status: ✓ Valid ``` ### Example 2: Subject with Scope ```bash # Input /message-generation subject type:fix scope:api description:"resolve null pointer" # Output Subject: fix(api): resolve null pointer Length: 30/50 characters Status: ✓ Valid ``` ### Example 3: Long Description Warning ```bash # Input /message-generation subject type:feat description:"add comprehensive OAuth2 authentication with multiple providers" # Output WARNING: Subject exceeds 50 characters (69 chars) Suggested: feat: add OAuth2 authentication Move details to body: "with multiple providers" ``` ### Example 4: Mood Correction ```bash # Input /message-generation subject type:fix description:"fixed login bug" # Output Subject: fix: fix login bug WARNING: Use imperative mood Suggested: fix: resolve login bug ``` ## Best Practices **Be Specific:** - ✅ "add OAuth authentication" - ❌ "update code" **Focus on What:** - ✅ "fix crash on login" - ❌ "fix issue with the login button that crashes when clicked" **Omit Implementation:** - ✅ "improve query performance" - ❌ "add database index to users table" **Use Conventional Types:** - ✅ "feat: add feature" - ❌ "feature: add feature"