- Update FormatCommitMessageStage to use centralized gitmoji module
- Replace 60+ line hardcoded emoji reference with format_type_list_for_prompt()
- Replace hardcoded validation regex with get_valid_types_regex()
- Eliminates duplication between analyze.py and format.py stages
- Single source of truth for commit types and emoji mappings in gitmoji.py
Benefits:
- Easier to maintain (update types in one place)
- Consistent type lists across analysis and formatting
- Reduced code duplication (~80 lines)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Update AnalyzeCommitStage to recognize 40+ specific commit types
- Add comprehensive gitmoji emoji mappings to FormatCommitMessageStage
- Support granular types: deps-upgrade, hotfix, security, db, infra, ui, etc.
- Update validation regex to accept expanded type list
- Enables more semantic and descriptive commit messages with appropriate emojis
Previously supported only 8 basic types (feat, fix, chore, etc.)
Now supports full gitmoji.dev standard for precise commit categorization
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove ReasonCommitMessageStage, add AnalyzeCommitStage and FormatCommitMessageStage.
Update version to 0.2.0 and architecture documentation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
BREAKING CHANGE: Replaces single ReasonCommitMessageStage with two stages
Architecture:
- AnalyzeCommitStage: Deep semantic analysis using 14B reasoning model
- FormatCommitMessageStage: Clean formatting using 3B instruct model
Benefits:
- Reasoning model does what it's good at: deep analysis
- Instruct model does what it's good at: clean formatted output
- No more fighting against model training (reasoning chains vs clean output)
Changes:
- Added CommitAnalysis model for structured analysis output
- Added commit_analyses field to pipeline context
- Created AnalyzeCommitStage (stages/analyze.py)
- Created FormatCommitMessageStage (stages/format.py)
- Updated orchestrator to use two-stage flow
- Removed deprecated ReasonCommitMessageStage
Version: 0.1.11 → 0.2.0 (major architecture change)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Removed complex REASONING:/COMMIT MESSAGE: structured format that the LLM
couldn't follow consistently. Now using simpler prompt that asks for just
the commit message line directly.
Changes:
- System prompt: Ask for single-line output only
- User prompt: Simplified instructions, removed structured format
- Extraction: Already handles both formats (fallback works)
This should be much easier for the model to follow correctly.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The LLM was generating "chore(shared): 🔧 REASONING:" instead of actual
descriptions. Added explicit WRONG and CORRECT examples to the system prompt
to show exactly what NOT to include in commit messages.
Now explicitly tells the model:
- DO NOT use meta-text like "REASONING:", "ANALYSIS:", "THINKING:"
- Shows 4 wrong examples of what it's currently doing
- Shows 4 correct examples of what it should do
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Previously, when LLM response included "COMMIT MESSAGE:" marker, the code
would return the first line after it without checking for reasoning patterns.
This caused commits like "chore(shared): 🔧 REASONING:" to be accepted.
Now the extraction properly filters reasoning patterns even in the marked
section, ensuring commit messages describe actual file changes.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixed contradiction where system prompt required REASONING:/COMMIT MESSAGE:
structure but user prompt said to output commit message directly.
Now both prompts consistently require the structured format.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated system prompts to explicitly instruct LLM to:
- Describe actual file changes in commit message (not reasoning process)
- Use REASONING: / COMMIT MESSAGE: structure for clear separation
- Focus on WHAT changed in the files, not analysis steps
Prevents commit messages like "**Chain-of-Thought Reasoning:**" when
they should say "Add quality test file" or similar.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add detection patterns for:
- Markdown bold markers (**)
- "chain-of-thought" / "reasoning" keywords
- Other reasoning text patterns
Prevents LLM reasoning text from being accepted as valid commit messages.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>