Initial commit
This commit is contained in:
138
commands/atomic-commit/analyze-splitting.md
Normal file
138
commands/atomic-commit/analyze-splitting.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# Operation: Analyze Splitting
|
||||
|
||||
Determine if current changes should be split into multiple commits.
|
||||
|
||||
## Parameters from $ARGUMENTS
|
||||
|
||||
- `verbose:true|false` - Detailed analysis output (default: false)
|
||||
- `threshold:number` - File count threshold for splitting (default: 10)
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Get Current Changes
|
||||
|
||||
Invoke Bash to get git status and diff:
|
||||
```bash
|
||||
git status --porcelain
|
||||
git diff --cached --stat
|
||||
git diff --cached --numstat
|
||||
```
|
||||
|
||||
Capture:
|
||||
- List of modified files
|
||||
- Number of files changed
|
||||
- Additions/deletions per file
|
||||
|
||||
### Step 2: Run Split Analyzer
|
||||
|
||||
Execute the split analyzer script:
|
||||
```bash
|
||||
.claude/plugins/git-commit-assistant/commands/atomic-commit/.scripts/split-analyzer.py
|
||||
```
|
||||
|
||||
The script analyzes:
|
||||
1. **Type diversity**: Multiple commit types (feat, fix, docs, etc.)
|
||||
2. **Scope diversity**: Multiple modules/components affected
|
||||
3. **File count**: Too many files changed
|
||||
4. **Concern separation**: Mixed concerns in changes
|
||||
|
||||
### Step 3: Analyze Results
|
||||
|
||||
Parse analyzer output to determine:
|
||||
|
||||
**Should Split if:**
|
||||
- Multiple commit types detected (feat + fix + docs)
|
||||
- Multiple scopes detected (auth + api + ui)
|
||||
- File count exceeds threshold (>10 files)
|
||||
- Mixed concerns detected (feature + unrelated refactoring)
|
||||
|
||||
**Keep Together if:**
|
||||
- Single logical change
|
||||
- All files serve same purpose
|
||||
- Interdependent changes
|
||||
- Reasonable file count (≤10)
|
||||
|
||||
### Step 4: Generate Recommendation
|
||||
|
||||
Create actionable recommendation:
|
||||
|
||||
**If should split:**
|
||||
```
|
||||
🔀 SPLIT RECOMMENDED
|
||||
|
||||
Reason: Multiple types detected (feat, fix, docs)
|
||||
Files affected: 15
|
||||
Detected types: feat (8 files), fix (5 files), docs (2 files)
|
||||
|
||||
Recommendation: Split into 3 commits
|
||||
- Commit 1: feat changes (8 files)
|
||||
- Commit 2: fix changes (5 files)
|
||||
- Commit 3: docs changes (2 files)
|
||||
|
||||
Next steps:
|
||||
1. Run: /atomic-commit group strategy:type
|
||||
2. Review groupings
|
||||
3. Run: /atomic-commit suggest
|
||||
```
|
||||
|
||||
**If already atomic:**
|
||||
```
|
||||
✅ ATOMIC COMMIT
|
||||
|
||||
Changes represent single logical unit:
|
||||
- Single type: feat
|
||||
- Single scope: auth
|
||||
- File count: 5 files
|
||||
- Logically cohesive: OAuth implementation
|
||||
|
||||
No splitting needed. Proceed with commit.
|
||||
```
|
||||
|
||||
## Output Format
|
||||
|
||||
Return structured analysis:
|
||||
```yaml
|
||||
should_split: true|false
|
||||
reason: "Primary reason for recommendation"
|
||||
metrics:
|
||||
file_count: number
|
||||
types_detected: [list]
|
||||
scopes_detected: [list]
|
||||
concerns: [list]
|
||||
recommendation: "Action to take"
|
||||
next_steps: [ordered list of commands]
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
- **No changes**: "No staged or unstaged changes detected. Make changes first."
|
||||
- **Script failure**: "Analysis failed. Check git repository status."
|
||||
- **Invalid parameters**: "Invalid parameter. Use verbose:true or threshold:number"
|
||||
|
||||
## MCP Tool Integration
|
||||
|
||||
Use workspace-mcp for script execution:
|
||||
- Spawn isolated workspace if needed
|
||||
- Execute analyzer script
|
||||
- Parse and return results
|
||||
- Clean up temporary files
|
||||
|
||||
## Examples
|
||||
|
||||
**Example 1: Large feature**
|
||||
```bash
|
||||
/atomic-commit analyze
|
||||
→ Should split: 15 files, multiple types
|
||||
```
|
||||
|
||||
**Example 2: Bug fix**
|
||||
```bash
|
||||
/atomic-commit analyze verbose:true
|
||||
→ Atomic: 3 files, single fix
|
||||
```
|
||||
|
||||
**Example 3: Custom threshold**
|
||||
```bash
|
||||
/atomic-commit analyze threshold:5
|
||||
→ Should split: 8 files exceeds threshold
|
||||
```
|
||||
Reference in New Issue
Block a user