Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:20:25 +08:00
commit 0d6226e0d8
69 changed files with 20934 additions and 0 deletions

View 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
```