code-change-summarizer
Scannednpx machina-cli add skill ArabelaTso/Skills-4-SE/code-change-summarizer --openclawCode Change Summarizer
Generate clear, structured pull request descriptions from code changes.
Workflow
1. Analyze Code Changes
Gather code changes:
- Git diff output
- Modified files list
- Commit messages
- Related issue numbers
Understand the changes:
- Read through all modified files
- Identify what changed (added/modified/removed/fixed)
- Understand the purpose of changes
- Note any patterns or themes
Categorize changes:
- Feature additions: New functionality
- Bug fixes: Issue resolutions
- Refactoring: Code improvements without behavior changes
- Documentation: Doc updates
- Tests: Test additions or modifications
- Dependencies: Package updates
- Configuration: Config or build changes
2. Create Initial Summary
Write a clear title:
Format: [Type] Brief description (max 72 characters)
Types:
feat:New featurefix:Bug fixrefactor:Code refactoringdocs:Documentationtest:Testschore:Maintenanceperf:Performancestyle:Code styleci:CI/CDbuild:Build system
Examples:
feat: Add user authentication with OAuth2fix: Resolve memory leak in data processorrefactor: Simplify error handling logic
Write summary paragraph:
- 2-3 sentences
- Explain what and why
- Use active voice
- Be concise and clear
Example:
This PR adds OAuth2 authentication to the user login system. The change
improves security by using industry-standard authentication and enables
single sign-on with external providers.
3. Document Changes
List changes by category:
Added:
- New features or functionality
- New files or components
- New API endpoints
Modified:
- Changed behavior or implementation
- Updated configuration
- Refactored code
Removed:
- Deprecated features
- Deleted files
- Removed dependencies
Fixed:
- Bug fixes
- Issue resolutions
- Error corrections
Example:
## Changes
### Added
- OAuth2 authentication flow
- User session management
- Login/logout endpoints
### Modified
- User model to include OAuth tokens
- Authentication middleware
- Database schema
### Fixed
- Session timeout not working correctly
- Memory leak in token refresh
4. Identify Breaking Changes
Check for breaking changes:
- API signature changes
- Removed functionality
- Changed behavior
- Configuration changes
- Database schema changes
- Dependency updates with breaking changes
Document each breaking change:
Format:
## Breaking Changes
⚠️ **[Breaking change description]**
**Impact:** [Who/what is affected]
**Migration Guide:**
1. [Step 1]
2. [Step 2]
**Before:**
```[language]
// Old code
After:
// New code
**Example:**
```markdown
## Breaking Changes
⚠️ **Authentication endpoint signature changed**
**Impact:** All API clients must update their authentication calls.
**Migration Guide:**
1. Update authentication endpoint from `/auth/login` to `/auth/oauth/login`
2. Include `provider` parameter in request body
3. Handle new response format with OAuth tokens
**Before:**
```javascript
POST /auth/login
{ "username": "user", "password": "pass" }
After:
POST /auth/oauth/login
{ "username": "user", "password": "pass", "provider": "google" }
### 5. Add Technical Details
**Explain implementation approach:**
- High-level technical approach
- Key algorithms or patterns used
- Important implementation details
**Document design decisions:**
- Why this approach was chosen
- Alternatives considered
- Trade-offs made
**Note architecture changes:**
- New components or modules
- Changed relationships
- Updated data flow
**Example:**
```markdown
## Technical Details
### Implementation Approach
Implemented OAuth2 using the Authorization Code flow with PKCE for enhanced
security. The authentication flow is handled by a new `AuthService` that
manages token exchange and refresh.
### Key Design Decisions
- **OAuth2 over SAML:** Chose OAuth2 for better mobile support and simpler
implementation
- **PKCE extension:** Added PKCE to protect against authorization code
interception attacks
- **Token storage:** Store refresh tokens in secure HTTP-only cookies
### Architecture Changes
- Added new `AuthService` layer between controllers and OAuth provider
- Introduced `TokenManager` for token lifecycle management
- Updated database schema to store OAuth provider information
6. Document Dependencies
List dependency changes:
Added dependencies:
- Package name and version
- Why it was added
- What it's used for
Updated dependencies:
- Old version → New version
- Why it was updated
- Any breaking changes
Removed dependencies:
- Package name
- Why it was removed
- What replaced it (if anything)
Example:
## Dependencies
### Added
- `passport@0.6.0` - OAuth2 authentication library
- `passport-google-oauth20@2.0.0` - Google OAuth2 strategy
### Updated
- `express@4.17.1` → `express@4.18.2` - Security patches and bug fixes
- `jsonwebtoken@8.5.1` → `jsonwebtoken@9.0.0` - Updated for Node 18 support
### Removed
- `bcrypt@5.0.1` - Replaced by OAuth2, no longer needed for password hashing
7. Provide Testing Instructions
Write step-by-step testing guide:
Format:
## Testing
### How to Test
1. [Setup step]
2. [Action to perform]
3. [Expected result]
4. [Edge case to verify]
### Test Coverage
- Added [X] unit tests
- Added [Y] integration tests
- Current coverage: [Z]%
### Manual Testing Checklist
- [ ] Test scenario 1
- [ ] Test scenario 2
- [ ] Test edge case 1
Example:
## Testing
### How to Test
1. Start the application: `npm start`
2. Navigate to `/login`
3. Click "Sign in with Google"
4. Complete OAuth flow in popup
5. Verify you're redirected back and logged in
6. Check that session persists after page refresh
### Test Coverage
- Added 15 unit tests for AuthService
- Added 8 integration tests for OAuth flow
- Current coverage: 87% (up from 82%)
### Manual Testing Checklist
- [ ] Google OAuth login works
- [ ] Session persists across page refreshes
- [ ] Logout clears session correctly
- [ ] Token refresh works when token expires
- [ ] Error handling for failed OAuth
8. Enhance with Context
Add security considerations:
- Security improvements made
- Security implications
- Vulnerabilities addressed
- Security review status
Add performance impact:
- Expected performance changes
- Benchmark results
- Optimization details
- Resource usage changes
Add architecture notes:
- Architectural patterns used
- System design changes
- Integration points
- Scalability considerations
Example:
## Security Considerations
### Improvements
- ✅ Implemented PKCE to prevent authorization code interception
- ✅ Store refresh tokens in HTTP-only cookies to prevent XSS
- ✅ Added rate limiting on authentication endpoints
- ✅ Validate OAuth state parameter to prevent CSRF
### Security Review
- [ ] Security team review pending
- [ ] Penetration testing scheduled
## Performance Impact
### Expected Changes
- Login time: ~500ms (OAuth redirect adds latency)
- Token validation: <10ms (cached in memory)
- Database queries: +2 per login (OAuth token storage)
### Optimizations
- Implemented token caching to reduce database hits
- Added connection pooling for OAuth provider requests
## Architecture Notes
### Patterns Used
- **Strategy Pattern:** Different OAuth providers (Google, GitHub, etc.)
- **Factory Pattern:** Token creation and validation
- **Middleware Pattern:** Authentication checks
### Integration Points
- Integrates with existing User model
- Hooks into session management middleware
- Compatible with existing authorization system
9. Add Documentation Notes
List documentation updates:
## Documentation
- [ ] Updated README with OAuth setup instructions
- [ ] Added API documentation for new endpoints
- [ ] Updated environment variables guide
- [ ] Added OAuth provider configuration guide
- [ ] Updated changelog
10. Link Related Issues
Reference related issues:
## Related Issues
Closes #123
Fixes #456
Related to #789
11. Review and Refine
Review the PR description:
- Is the summary clear?
- Are all changes documented?
- Are breaking changes highlighted?
- Are testing instructions complete?
- Is context sufficient?
Refine for clarity:
- Remove unnecessary details
- Add missing information
- Improve wording
- Fix formatting
Verify completeness:
- All sections filled out
- No placeholders left
- Links work
- Code examples correct
Output Format
Generate a complete PR description in Markdown:
# [Type] Brief description
## Summary
[2-3 sentence overview]
## Changes
### Added
- [Item 1]
- [Item 2]
### Modified
- [Item 1]
### Fixed
- [Item 1]
## Breaking Changes
[If any, with migration guide]
## Technical Details
### Implementation Approach
[Explanation]
### Key Design Decisions
- [Decision 1]
- [Decision 2]
### Architecture Changes
[Description]
## Dependencies
### Added
- [Package] - [Reason]
### Updated
- [Package] - [Reason]
## Testing
### How to Test
1. [Step 1]
2. [Step 2]
### Test Coverage
- [Details]
### Manual Testing Checklist
- [ ] [Item 1]
- [ ] [Item 2]
## Security Considerations
[Details]
## Performance Impact
[Details]
## Architecture Notes
[Details]
## Documentation
- [ ] [Item 1]
- [ ] [Item 2]
## Related Issues
Closes #[number]
## Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] All tests passing
See pr-templates.md for detailed templates.
Best Practices
Summary
- Keep it concise (2-3 sentences)
- Explain what and why
- Use active voice
- Be specific
Changes
- Group by type (Added/Modified/Removed/Fixed)
- Be specific but concise
- Use bullet points
- Link to related issues
Breaking Changes
- Clearly mark with ⚠️
- Provide migration guide
- Show before/after examples
- Explain impact
Technical Details
- Explain approach
- Document decisions
- Note architecture changes
- Keep it relevant
Testing
- Provide clear instructions
- Include expected results
- List edge cases
- Note coverage changes
Context
- Add security notes
- Note performance impact
- Explain architecture changes
- Document dependencies
Common Scenarios
Scenario 1: Feature Addition
Input: Code adding user authentication
Output:
# feat: Add user authentication with OAuth2
## Summary
This PR implements OAuth2 authentication for user login. Users can now
sign in using their Google or GitHub accounts, improving security and
user experience.
## Changes
### Added
- OAuth2 authentication flow
- Google and GitHub OAuth providers
- User session management
- Login/logout endpoints
### Modified
- User model to include OAuth tokens
- Database schema for OAuth data
## Testing
### How to Test
1. Start app: `npm start`
2. Navigate to `/login`
3. Click "Sign in with Google"
4. Complete OAuth flow
5. Verify successful login
### Test Coverage
- Added 15 unit tests
- Added 8 integration tests
- Coverage: 87%
Scenario 2: Bug Fix
Input: Code fixing memory leak
Output:
# fix: Resolve memory leak in data processor
## Summary
This PR fixes a memory leak in the data processor that was causing
memory usage to grow unbounded during long-running operations.
## Changes
### Fixed
- Memory leak in DataProcessor.process()
- Improper cleanup of event listeners
- Unclosed database connections
## Technical Details
### Root Cause
Event listeners were not being removed after processing completed,
causing references to processed data to remain in memory.
### Solution
- Added proper cleanup in finally block
- Implemented connection pooling
- Added memory monitoring
## Testing
### How to Test
1. Run long-running process: `npm run process-large-dataset`
2. Monitor memory usage
3. Verify memory stays stable
Fixes #456
Scenario 3: Refactoring
Input: Code refactoring error handling
Output:
# refactor: Simplify error handling logic
## Summary
This PR refactors error handling across the application to use a
consistent pattern, improving maintainability and reducing code
duplication.
## Changes
### Modified
- Centralized error handling in ErrorHandler class
- Updated all controllers to use new error handling
- Simplified error response format
### Removed
- Duplicate error handling code in controllers
- Inconsistent error response formats
## Technical Details
### Implementation Approach
Introduced a centralized ErrorHandler class that provides consistent
error handling and response formatting across all endpoints.
### Benefits
- Reduced code duplication by 40%
- Consistent error responses
- Easier to maintain and extend
## Testing
### Behavior Verification
All existing tests pass, confirming no behavior changes.
### Test Coverage
- Updated 25 existing tests
- Coverage maintained at 85%
Troubleshooting
Issue: Not enough context in code changes
Solution:
- Ask for commit messages
- Request related issue descriptions
- Check for comments in code
- Ask user for context
Issue: Unclear what changed
Solution:
- Review git diff carefully
- Look for patterns in changes
- Check file names for clues
- Ask user for clarification
Issue: Can't determine breaking changes
Solution:
- Look for API signature changes
- Check for removed functionality
- Review dependency updates
- Ask user if unsure
Issue: Missing testing information
Solution:
- Suggest basic testing steps
- Recommend test coverage goals
- Provide testing checklist template
- Ask user for specific test scenarios
Source
git clone https://github.com/ArabelaTso/Skills-4-SE/blob/main/skills/code-change-summarizer/SKILL.mdView on GitHub Overview
Code-change-summarizer analyzes diffs, commits, and related issues to produce a structured pull request description. It classifies changes (Added, Modified, Fixed, etc.), documents what changed and why, and appends sections for breaking changes, testing, security, performance, and architecture notes.
How This Skill Works
It ingests git diff output, modified files, and commit messages; then categorizes changes and creates an initial summary with a type tag. It then renders a Markdown PR body with sections for Changes, Breaking Changes, Technical Details, Testing, and Notes.
When to Use It
- Generate a PR description directly from git diffs or code changes.
- Summarize what changed and why for future maintainers and reviewers.
- Document breaking changes with a migration guide.
- Add technical details, design decisions, security, performance, and architecture notes.
- Document dependency changes and provide testing instructions.
Quick Start
- Step 1: Provide git diff output, list of modified files, and related commit messages.
- Step 2: Run the Code Change Summarizer to generate a Markdown PR description.
- Step 3: Paste the generated description into the PR and adjust as needed.
Best Practices
- Provide a clear PR type tag (feat, fix, refactor, docs, test, chore, perf, style, ci, build).
- Write a concise 2-3 sentence summary explaining what changed and why.
- List changes under Added, Modified, Removed, and Fixed with concrete items.
- Document breaking changes with a migration guide and before/after examples if applicable.
- Include testing instructions and security/performance considerations.
Example Use Cases
- feat: Add OAuth2 authentication flow with migration notes and testing steps
- fix: Resolve memory leak in data processor and update related tests
- refactor: Simplify error handling logic and improve observability
- docs: Update API reference with new endpoints and usage examples
- chore: Bump dependencies and add security scan notes