al-development-collection
Version:
AI Native AL Development toolkit for Microsoft Dynamics 365 Business Central with GitHub Copilot integration
339 lines (245 loc) • 7.74 kB
Markdown
agent: agent
model: Claude Sonnet 4.5
description: 'Prepare a clean, documented pull request draft for AL features or fixes with summary, testing notes, and checklist.'
tools: ['runCommands', 'runTasks', 'github/*', 'microsoft-docs/*', 'edit', 'runNotebooks', 'search', 'new', 'Azure MCP/search', 'extensions', 'runSubagent', 'usages', 'vscodeAPI', 'problems', 'changes', 'testFailure', 'openSimpleBrowser', 'fetch', 'githubRepo', 'ms-dynamics-smb.al/al_download_symbols', 'ms-dynamics-smb.al/al_go', 'ms-dynamics-smb.al/al_generate_manifest', 'ms-dynamics-smb.al/al_generate_permission_set_for_extension_objects', 'ms-dynamics-smb.al/al_generate_permission_set_for_extension_objects_as_xml', 'todos', 'runTests']
# AL Pull Request Preparation
Your goal is to prepare a **pull request draft** for the branch `${input:Branch}` summarizing all modifications, test evidence, and validation steps.
## 🔒 Human Gate: Pre-PR Review
**Before generating PR draft document:**
1. **Review code changes** - Present summary of all modifications
2. **Security check** - Confirm no sensitive data in commits
3. **Quality validation** - Verify tests pass and build succeeds
4. **Human approval required** - Obtain confirmation before creating PR draft
## Process
### 1. Change Analysis
#### Inspect Branch Differences
Use `codebase` to analyze modifications:
```
codebase: Compare ${input:Branch} with main branch
```
Use `githubRepo` to gather context:
```
githubRepo: Get branch information and commit history
```
**Gather:**
- Modified files and line counts
- New files added
- Deleted files
- Commit messages and references
- Related issues or work items
#### Classify Changes
Categorize into:
1. **New Features** - New AL objects, functionality, APIs
2. **Bug Fixes** - Corrections, refactors, optimizations
3. **Tests** - Test codeunits, scenarios, data
4. **Configuration** - app.json, permissions, dependencies
5. **Documentation** - README, comments, API docs
### 2. Extract Metadata
**Find References:**
Scan commit messages for:
- Issue references (#123)
- Work item IDs
- Requirement numbers
**Pattern matching:**
- Fixes #123
- Closes #456
- Related to WORK-789
**Identify Reviewers:**
If `${input:Reviewer}` is specified, include in the draft.
### 3. Generate PR Draft
Create `/reports/pr-draft.md` with this structure:
```markdown
# Pull Request: [Feature/Fix Title]
**Branch:** `${input:Branch}`
**Target:** `main`
**Author:** [Author Name]
**Date:** [Current Date]
## Overview
[2-3 sentence description of changes]
**Type of Change:**
- [ ] New Feature
- [ ] Bug Fix
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Documentation
- [ ] Configuration Change
## Related Issues
- Closes #[issue-number]
- Relates to #[issue-number]
## Changes Summary
### File Changes
| Category | Files | +Lines | -Lines |
|----------|-------|--------|--------|
| New Features | [#] | [#] | [#] |
| Bug Fixes | [#] | [#] | [#] |
| Tests | [#] | [#] | [#] |
| Docs | [#] | [#] | [#] |
| **Total** | **[#]** | **[#]** | **[#]** |
### AL Objects Modified
#### New Objects
| Type | ID | Name | Purpose |
|------|----|----- |---------|
| Table | [ID] | [Name] | [Purpose] |
| Page | [ID] | [Name] | [Purpose] |
| Codeunit | [ID] | [Name] | [Purpose] |
#### Modified Objects
| Type | ID | Name | Changes |
|------|----|----- |---------|
| TableExt | [ID] | [Name] | [Description] |
| PageExt | [ID] | [Name] | [Description] |
#### Deleted Objects
| Type | ID | Name | Reason |
|------|----|----- |-------|
| [Type] | [ID] | [Name] | [Reason] |
## Technical Details
### Architecture Changes
[Describe design pattern or architecture changes]
### Dependencies
**New:** [List new dependencies]
**Modified:** [old version → new version]
**Removed:** [List removed dependencies]
### Database Changes
- [ ] New tables
- [ ] New fields
- [ ] Modified fields
- [ ] New keys
**Migration Notes:** [Any data migration needed]
### API Changes
**New Endpoints:**
- `GET /api/[endpoint]` - [Description]
**Modified Endpoints:**
- `[Method] /api/[endpoint]` - [Changes]
**Breaking Changes:** [List breaking changes]
### Events
**Published:** [New events and purpose]
**Subscribed:** [New subscribers and purpose]
## Testing
### Test Scenarios
1. **Scenario:** [Description]
- **Steps:** [How to test]
- **Expected:** [Expected result]
- **Result:** ✅ Pass / ❌ Fail
### Automated Tests
- ✅ Unit Tests: [X/Y passed]
- ✅ Integration Tests: [X/Y passed]
- ✅ Code Coverage: [X]%
### Performance Impact
- [ ] No impact
- [ ] Improvement: [Details]
- [ ] Potential impact: [Mitigation]
## Review Checklist
### Code Quality
- [ ] Follows AL naming conventions
- [ ] Follows AL style guidelines
- [ ] No compiler warnings
- [ ] Error handling implemented
- [ ] Logging adequate
### Security
- [ ] No hardcoded secrets
- [ ] Permissions reviewed
- [ ] Input validation
- [ ] No SQL injection risks
### Testing
- [ ] All tests pass
- [ ] New code has tests
- [ ] Edge cases tested
- [ ] Manual testing done
### Documentation
- [ ] Code comments added
- [ ] API docs updated
- [ ] README updated
- [ ] Help text added
### BC Specific
- [ ] Object IDs in range
- [ ] Event patterns correct
- [ ] Page layouts user-friendly
- [ ] Translations handled
### Deployment
- [ ] Build succeeds
- [ ] Package creates
- [ ] Deployment steps documented
- [ ] Rollback plan ready
## Deployment Notes
### Steps
1. [Deployment instructions]
2. [Configuration changes]
3. [Verification steps]
### Prerequisites
[Requirements for deployment]
### Rollback Plan
[How to rollback if needed]
## Screenshots
### Before
[Previous state]
### After
[New state]
## Additional Notes
### Known Issues
[Limitations or known issues]
### Future Enhancements
[Potential improvements]
### Breaking Changes
[Breaking changes affecting existing functionality]
## Reviewer Notes
**Suggested Reviewers:**
- ${input:Reviewer} - [Reason]
**Focus Areas:**
1. [Area to review carefully]
2. [Another focus area]
**Questions:**
[Specific questions or concerns]
**Generated by:** AL PR Preparation Workflow
**Generated on:** [Timestamp]
```
## Output
**Primary:** `/reports/pr-draft.md`
**Format:** Complete markdown document ready for PR creation
## Success Criteria
- ✅ PR draft file created under `/reports/pr-draft.md`
- ✅ Changes summarized by category
- ✅ All modified AL objects documented
- ✅ Related issues referenced
- ✅ Review checklist complete
- ✅ Deployment notes clear
## Common PR Patterns
### Feature Addition
- Emphasize new capabilities
- User benefit focus
- Comprehensive testing
- Document APIs/events
### Bug Fix
- Reference original issue
- Explain root cause
- Show before/after
- Include regression tests
### Refactoring
- Explain motivation
- Show no functional changes
- Highlight improvements
- Demonstrate coverage
### Performance Optimization
- Include benchmarks
- Show improvements
- Document approach
- Note trade-offs
## Tips
- Be concise but thorough
- Use tables for structure
- Include file names and line numbers
- Link to related documentation
- Provide context for changes
- Make reviewer's job easy
- Include visual evidence
- Anticipate questions
- Document decisions
- Keep security visible
## Next Steps
**For final validation:**
```
Switch to al-tester mode
```
**PR draft ready for GitHub submission.**