draft-commit by aiskillstore
Create a thoughtful, supportive commit message from your staged changes.
Content & Writing
85 Stars
2 Forks
Updated Jan 19, 2026, 04:39 AM
Why Use This
This skill provides specialized capabilities for aiskillstore's codebase.
Use Cases
- Developing new features in the aiskillstore repository
- Refactoring existing code to follow aiskillstore standards
- Understanding and working with aiskillstore's codebase structure
Install Guide
2 steps- 1
Skip this step if Ananke is already installed.
- 2
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Skill Stats
SKILL.md 407 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: draft-commit
description: Create a thoughtful, supportive commit message from your staged changes.
---
# Draft a Commit
Create a thoughtful, supportive commit message from your staged changes.
## Welcome
Writing good commit messages is an art. This skill helps you capture the essence of your changes in a clear, inviting way that your future self (and teammates) will appreciate.
Your staged changes tell a story. Let's write that story together.
---
## What You're Doing
You're about to:
1. Review what you've staged
2. Understand the nature of your changes
3. Create a commit message that captures both what AND why
4. Copy that message and use it when you commit
---
## How It Works
### Step 1: Analyzing Staged Changes
First, we'll look at your staged changes using `git diff --cached`.
This shows us:
- **What files changed**: Which files did you touch?
- **What changed in them**: Added lines? Deleted? Refactored?
- **Patterns**: Can we detect what you were working on?
### Step 2: Understanding Intent
From the changes, we infer:
- **Type of work**: Feature? Bug fix? Refactoring? Documentation?
- **Scope**: Which part of the system?
- **Impact**: What improves? What does this enable?
### Step 3: Drafting the Message
We craft a message that:
- **Is specific**: Not "Update files" but "Add StandardsRepository abstraction"
- **Explains why**: Not just what changed, but why it matters
- **Shows confidence**: Your changes are worth celebrating
- **Invites understanding**: Future readers will understand your intent
### Step 4: Sharing with You
We display the drafted message so you can:
- Review it
- Copy it
- Use it in your git commit command
---
## Configuration
### Loading Configuration
The skill reads from `.claude/skills/draft-commit/config.json`:
- **style**: How the message sounds ("supportive" or "concise")
- **format**: Message structure ("descriptive" or "conventional")
- **messageLength**: How much detail ("concise" or "detailed")
- **includeContext**: Add explanatory context (true/false)
- **includeFileCounts**: Show file/line counts (true/false)
### Customizing Behavior
Edit `config.json` to change defaults:
```json
{
"style": "supportive", // or "concise"
"format": "descriptive", // or "conventional"
"messageLength": "concise", // or "detailed"
"includeContext": true,
"includeFileCounts": true
}
```
---
## Process
### Get Staged Changes
```
Run: git diff --cached
Returns: All staged changes in unified diff format
```
### Categorize Changes
Analyze the diff to understand:
- Added files, deleted files, modified files
- Lines added, lines deleted
- Change patterns (new feature, bug fix, refactoring, docs, etc.)
### Infer Work Type
From patterns, detect:
- `feat` — New functionality
- `fix` — Bug fixes
- `docs` — Documentation changes
- `refactor` — Code structure improvements
- `test` — Test additions/changes
- `chore` — Dependency updates, config changes
- `style` — Formatting, cleanup
- `perf` — Performance improvements
### Determine Scope
Identify what part of the system:
- Components affected
- Modules changed
- Features impacted
### Draft the Message
#### For Supportive Style + Descriptive Format
**Template**:
```
[Brief description of what you did]
[Why this matters — what improves or what it enables]
[Optional: More context if helpful]
[Optional: File counts if configured]
```
**Example**:
```
Add StandardsRepository abstraction
Centralizes standards access into a single, reliable interface.
This eliminates duplication and makes the system easier to maintain.
Files:
- Added: lib/standards-repository.md, lib/schemas/standards-schema.json
- Modified: 7 agent/skill files updated to use new pattern
Why: Standards were scattered across multiple files, creating duplication
and coupling. Now there's one clear way to access standards with validation.
```
#### For Concise Style
**Template**:
```
[Concise description]
[Brief context if needed]
```
**Example**:
```
Centralize standards access
Standards scattered across 7 files now use single repository pattern.
```
#### For Conventional Format
**Template**:
```
[type]: [description]
[Why this matters / additional context]
```
**Example**:
```
refactor: Centralize standards access with repository pattern
Consolidates standards loading into single interface.
Eliminates duplication and improves testability.
```
---
## Output Format
The skill displays the drafted message like this:
```markdown
## 📝 Drafted Commit Message
[The actual message, ready to copy]
---
## How to Use It
1. Copy the message above
2. Stage your changes: `git add .` (or select specific files)
3. Create the commit: `git commit -m "your message"`
Or paste into your editor's commit message prompt.
---
**Changes analyzed**:
- [X files] changed
- [+Y lines] added
- [-Z lines] deleted
```
---
## Important Notes
### What This Does
- Analyzes your **staged** changes only
- Drafts a message for you to review
- Shows the message in chat for easy copying
- Does NOT commit automatically
### What This Doesn't Do
- Does NOT make the commit (you do that)
- Does NOT stage changes (you do that)
- Does NOT modify your repository
### Why This Matters
This keeps you in control. You:
1. Stage your changes carefully
2. See what we're proposing
3. Decide if it's right
4. Make the commit yourself
---
## Error Handling
If we encounter issues:
- **No staged changes**: We'll let you know and suggest staging first
- **Unclear intent**: We'll ask for clarification or offer suggestions
- **Config issues**: We'll use defaults and let you know
---
## Tips for Great Commit Messages
1. **Stage intentionally**: Group related changes together
2. **Small commits**: Easier to understand and review
3. **Specific**: "Add validation" not "Update files"
4. **Why matters**: Explain the reasoning, not just the changes
5. **Present tense**: "Add feature" not "Added feature"
---
## Examples
### Example 1: Feature Addition
**Staged changes**: New function + tests + docs
**Drafted message**:
```
Add user authentication module
Implements JWT-based authentication for API.
Includes token generation, validation, and refresh logic.
Files:
- auth/jwt-handler.ts (main implementation)
- auth/__tests__/jwt-handler.test.ts (comprehensive tests)
- docs/AUTHENTICATION.md (usage guide)
Why: Enables secure API access. Provides foundation for role-based access control.
```
### Example 2: Bug Fix
**Staged changes**: Fixed bug in error handler
**Drafted message**:
```
Fix error handling in API response middleware
Error messages weren't being properly serialized, causing 500 errors
to appear as malformed JSON. Now returns clean error objects.
Files:
- middleware/error-handler.ts (fixed serialization)
- __tests__/error-handler.test.ts (added test case)
This fixes issue #245.
```
### Example 3: Documentation
**Staged changes**: Added README and guides
**Drafted message**:
```
Document setup and deployment process
Adds comprehensive guides for:
- Local development setup
- Running tests
- Building for production
- Deployment procedures
Files:
- SETUP.md (new)
- DEPLOYMENT.md (new)
- README.md (updated with links)
Why: New contributors need clear guidance. This reduces time to productivity.
```
---
## Configuration Examples
### For Conventional Commits
```json
{
"style": "concise",
"format": "conventional",
"messageLength": "concise",
"includeContext": true,
"includeFileCounts": false
}
```
Output: `feat: Add authentication module`
### For Detailed Messages
```json
{
"style": "supportive",
"format": "descriptive",
"messageLength": "detailed",
"includeContext": true,
"includeFileCounts": true
}
```
Output: Long, detailed message with full context
### For Concise Updates
```json
{
"style": "concise",
"format": "descriptive",
"messageLength": "concise",
"includeContext": false,
"includeFileCounts": false
}
```
Output: Brief, to-the-point message
---
## Troubleshooting
**Q: What if I staged wrong changes?**
A: Unstage them with `git reset HEAD <file>` and run `/dac` again.
**Q: Can I edit the drafted message?**
A: Absolutely! Copy it, edit it, and use your version. It's a draft!
**Q: Does this work with conventional commits?**
A: Yes! Set `format: "conventional"` in config.json.
**Q: Can I configure it differently per project?**
A: Yes! Each project's config.json is independent. Just edit the file.
---
## Integration with HQB
This skill demonstrates HQB patterns:
- **Supportive tone**: Guides without judgment
- **Focused clarity**: One clear purpose
- **Considerate approach**: Respects your autonomy
- **Skill architecture**: Reusable, configurable logic
---
## Next Steps After Using This
1. Copy the drafted message
2. Review your changes one more time
3. Make your commit with `git commit -m "your message"`
4. Continue building awesome things!
--- Name Size