6.1 KiB
6.1 KiB
Operation: Analyze Commit Style
Purpose: Analyze recent commit history to learn the project's commit message style, conventions, and patterns.
Parameters
From $ARGUMENTS (after operation name):
count:N- Number of commits to analyze (default: 50)branch:name- Branch to analyze (default: current branch)format:json|text- Output format (default: text)
Workflow
1. Validate Repository
# Check if in git repository
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "Error: Not in a git repository"
exit 1
fi
# Check if has commits
if ! git log -1 >/dev/null 2>&1; then
echo "Error: No commit history found"
exit 1
fi
2. Execute Style Analysis Script
Invoke the style-analyzer.sh utility script:
./.scripts/style-analyzer.sh <count> <branch>
The script will:
- Fetch recent commits from git log
- Analyze commit message formats
- Calculate statistics (average length, type distribution, etc.)
- Detect conventional commits usage
- Identify common patterns
3. Process Analysis Results
The script returns JSON output with:
{
"project_style": {
"uses_conventional_commits": true,
"conventional_commits_percentage": 87,
"average_subject_length": 47,
"subject_length_stddev": 8,
"common_types": [
{"type": "feat", "count": 45, "percentage": 35.4},
{"type": "fix", "count": 38, "percentage": 29.9},
{"type": "docs", "count": 20, "percentage": 15.7}
],
"common_scopes": [
{"scope": "auth", "count": 23, "percentage": 18.1},
{"scope": "api", "count": 19, "percentage": 14.9},
{"scope": "ui", "count": 15, "percentage": 11.8}
],
"imperative_mood_percentage": 92,
"has_body_percentage": 34,
"references_issues_percentage": 67,
"consistency_score": 85,
"sample_commits": [
"feat(auth): implement OAuth2 authentication",
"fix(api): handle null pointer in user endpoint",
"docs: update API documentation"
]
}
}
4. Generate Recommendations
Based on analysis results, provide:
Style Recommendations:
- Conventional commits adherence level
- Recommended message format
- Typical subject line length
- Body usage patterns
- Issue reference patterns
Type Recommendations:
- Most commonly used types
- Type usage frequency
- Recommended types for new commits
Scope Recommendations:
- Commonly used scopes
- Scope naming patterns
- When to use which scope
Consistency Recommendations:
- Areas of good consistency
- Areas needing improvement
- Specific guidance for better consistency
5. Format Output
Text Format (default):
Git Commit Style Analysis
=========================
Commits Analyzed: 50
Branch: main
Conventional Commits: 87% (43/50)
Consistency Score: 85/100
Subject Lines:
Average Length: 47 characters
Recommended: Keep under 50 characters
Common Types:
1. feat - 35.4% (45 commits) - New features
2. fix - 29.9% (38 commits) - Bug fixes
3. docs - 15.7% (20 commits) - Documentation
Common Scopes:
1. auth - 18.1% (23 commits) - Authentication/authorization
2. api - 14.9% (19 commits) - API endpoints
3. ui - 11.8% (15 commits) - User interface
Patterns Detected:
✓ Uses imperative mood (92%)
✓ References issues frequently (67%)
○ Body usage moderate (34%)
Recommendations:
• Continue using conventional commits format
• Consider 'auth' scope for authentication changes
• Keep subject lines under 50 characters
• Use imperative mood (e.g., "add" not "added")
• Reference issues when applicable (#123)
Sample Commits (project style):
feat(auth): implement OAuth2 authentication
fix(api): handle null pointer in user endpoint
docs: update API documentation
JSON Format:
{
"analysis_type": "commit_style",
"commits_analyzed": 50,
"branch": "main",
"results": { ... },
"recommendations": [ ... ],
"confidence": "high"
}
Error Handling
No git repository:
- Error: "Not in a git repository. Run this command from within a git project."
- Exit code: 1
No commits:
- Error: "No commit history found. This appears to be a new repository."
- Exit code: 1
Branch doesn't exist:
- Error: "Branch 'branch-name' not found. Check branch name and try again."
- Exit code: 1
Insufficient commits:
- Warning: "Only X commits found. Analysis may be less accurate."
- Proceed with available commits
Git command fails:
- Error: "Git command failed: {error message}"
- Provide troubleshooting steps
Integration Usage
By commit-assistant agent:
User requests: "commit my changes"
→ Agent invokes: /history-analysis analyze-style
→ Learns: Project uses conventional commits, common scope: "auth"
→ Agent generates message matching project style
By message-generation skill:
Before generating message:
→ Invoke: /history-analysis analyze-style format:json
→ Extract: common_types, common_scopes, average_length
→ Use in: message generation to match project conventions
Output Examples
High Consistency Project (score: 95):
✓ Excellent consistency across commits
✓ Strong conventional commits adherence (98%)
✓ Clear scope usage patterns
→ Continue current practices
Medium Consistency Project (score: 65):
○ Moderate consistency
○ Mixed conventional commits usage (64%)
○ Inconsistent scope patterns
→ Recommend adopting conventional commits
→ Define standard scopes for the project
Low Consistency Project (score: 35):
✗ Low consistency across commits
✗ Minimal conventional commits usage (12%)
✗ No clear patterns
→ Consider establishing commit message guidelines
→ Define project-specific conventions
→ Use this tool to enforce standards
Success Criteria
Operation succeeds when:
- Git repository validated
- Commits successfully analyzed
- Statistics calculated accurately
- Patterns detected correctly
- Recommendations generated
- Output formatted properly
- Results match project reality
Performance
- Analysis Time: ~1-2 seconds for 50 commits
- Memory Usage: Minimal (processes line-by-line)
- Git Operations: Read-only, no modifications