Commit 1038a7b
Add learn-from-pr agent and enhance skills framework structure (#33579)
## Progress: Addressed Code Review Feedback
### Completed Tasks
- [x] Removed SUMMARY.md helper file from repository
- [x] Added SUMMARY.md to .gitignore
- [x] Refined code review instruction to avoid circular dependency
### Changes Made
**1. Removed SUMMARY.md**
- This was a temporary helper file for PR creation
- Should not be committed to the repository
- Now added to .gitignore alongside other PR helper files
**2. Updated .gitignore**
- Added `SUMMARY.md` to the PR helper files section
- Prevents accidental commits of temporary documentation
**3. Refined Code Review Instruction**
(`.github/copilot-instructions.md`)
- Changed from "always run" to "run the pr-finalize skill" for
functional code PRs
- Removed "always" to avoid circular dependency issues
- Clarified this applies specifically to "PRs that change functional
code"
- Avoids triggering on documentation-only or configuration-only PRs like
this one
### Before
```
When performing a code review, always run the pr-finalize skill...
```
### After
```
When performing a code review on PRs that change functional code, run the pr-finalize skill...
```
### Impact
- SUMMARY.md no longer clutters the repository
- Code review instruction is more appropriate and avoids circular
dependency
- pr-finalize skill will be used for functional code reviews where it
adds the most value
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
this branch is ready for a PR can you create a PR for this branch please
<analysis>
[Chronological Review]
- Session started with user providing summary of work on PR #33353
(MacCatalyst crash fix)
- User asked to run reproduction test 10 times - completed successfully
- Extensive debugging to get correct app version running (wrong folder
issue discovered)
- Test logic restored, confirmed reproduction working
- Explored 11 different fix approaches using try-fix skill
- User provided final fix: remove ShellSectionRootRenderer code, enhance
PageViewController with window.Handler check
- Applied fix to PageViewController with window disposal detection
- Created/updated test files (Issue33352.cs)
- Committed changes, created PR #33552 for multi-window support
- Added learn-from-pr skill and agent based on lessons from PR #33353
- Updated pr-finalize skill with enhanced structure
- Added missing skills to copilot-instructions.md
- Latest: Running pr-finalize skill on PR #33353, creating
recommendation files
[Intent Mapping]
- Original: "run the repro 10 times" - validate crash reproduction
- "restore the full test logic from backup" - get back on track after
testing wrong app
- "run try-fix skill 10 times" - explore different fix approaches
- "retrofit this fix to the PR" - apply window.Handler check to
PageViewController
- "cleanup all the debug logging" - remove temporary debug code
- "commit changes and push" - finalize PR
- "can you create a new branch" - separate multi-window changes to
different PR
- "create a learn-from-pr skill" - build learning flywheel for future
agents
- "analyze the latest changes and let me know if you agree" (multiple
times) - validate skill/agent improvements
- "run pr-finalizer skill against this PR" - prepare PR for merge
- "output recommended updates to separate markdown files" - make PR
updates easier
- "open the two markdown files" - user will update PR
- "is there anything in these files that refer to claude or anthropic?"
- check for AI vendor references
[Technical Inventory]
- Platform: MacCatalyst, iOS
- Key technologies: .NET MAUI, UIKit, Appium, Azure DevOps
- Testing: UI tests via Appium Mac2 driver, NUnit
- Issue: ObjectDisposedException in TraitCollectionDidChange on window
disposal
- Architecture: Core vs Controls layer separation
- Skills created/updated: pr-finalize, learn-from-pr (skill + agent),
try-fix
- Tools: gh CLI, git, PowerShell scripts
- Window disposal sequence: Window.Destroying() →
Handler.DisconnectHandler() → DisposeWindowScope()
[Code Archaeology]
- `src/Core/src/Platform/iOS/PageViewController.cs` - Added
window?.Handler null check + try-catch in TraitCollectionDidChange
(lines 60-88)
-
`src/Controls/src/Core/Compatibility/Handlers/Shell/iOS/ShellSectionRootRenderer.cs`
- REMOVED TraitCollectionDidChange override (lines 144-151 deleted)
- `src/Controls/tests/TestCases.HostApp/Issues/Issue33352.cs` - Test
page (629 lines)
- `src/Controls/tests/TestCases.Shared.Tests/Tests/Issues/Issue33352.cs`
- UI test automation (159 lines)
- `.github/agent-pr-session/issue-33352.md` - Complete session
documentation with 11 try-fix attempts, final fix, lessons learned
- `.github/skills/pr-finalize/SKILL.md` - Restructured with
Inputs/Outputs/Completion Criteria (274 lines changed)
- `.github/skills/learn-from-pr/SKILL.md` - Created comprehensive
analysis framework (230 lines)
- `.github/agents/learn-from-pr.md` - Created agent wrapper that applies
improvements (171 lines)
- `.github/skills/try-fix/SKILL.md` - Added structure:
Inputs/Outputs/Completion Criteria/Error Handling (+49 lines)
- `.github/copilot-instructions.md` - Added Skills vs Agents table,
documented 7 skills, learn-from-pr agent (+61 lines)
- `CustomAgentLogsTmp/pr-finalize-33353/` - Created 4 recommendation
files for PR updates
[Progress Assessment]
Completed:
- ✅ Reproduced crash consistently
- ✅ Explored 11 fix approaches via try-fix
- ✅ Applied final fix (remove Controls code, enhance Core with
window.Handler check)
- ✅ Created comprehensive tests
- ✅ Fixed compilation error
- ✅ Committed changes to PR #33353
- ✅ Created separate PR #33552 for multi-window support
- ✅ Built learning flywheel: pr-finalize skill enhanced, learn-from-pr
skill + agent created
- ✅ Documented all skills in copilot-instructions.md
- ✅ Finalized session markdown (issue-33352.md) with complete ACTUAL
IMPLEMENTED FIX section
- ✅ Ran pr-finalize skill on PR #33353
- ✅ Created 4 recommendation markdown files
Pending:
- 📝 User needs to update PR #33353 title and description on GitHub
- 📝 Decide whether to remove "Claude Sonnet 4.5" references from session
markdown
[Context Validation]
All critical context preserved:
- PR #33353 ready except title/description need updates
- PR #33552 created for multi-window support (already merged/updated)
- Session markdown complete and exemplary
- All skills/agents documented and production-ready
- Recommendation files created in CustomAgentLogsTmp/pr-finalize-33353/
- User aske...
</details>
<!-- START COPILOT CODING AGENT SUFFIX -->
Created from Copilot CLI via the copilot delegate command.
<!-- START COPILOT CODING AGENT TIPS -->
---
💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.
---------
Co-authored-by: Shane Neuville <shneuvil@microsoft.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: PureWeen <5375137+PureWeen@users.noreply.github.com>
Co-authored-by: Jakub Florkowski <kubaflo123@gmail.com>1 parent e74d699 commit 1038a7b
File tree
14 files changed
+1916
-391
lines changed- .github
- agents
- pr
- scripts
- tests
- skills
- find-reviewable-pr
- learn-from-pr
- pr-finalize
- try-fix
- verify-tests-fail-without-fix
- scripts
- write-tests
14 files changed
+1916
-391
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
42 | 59 | | |
43 | 60 | | |
44 | 61 | | |
| |||
326 | 343 | | |
327 | 344 | | |
328 | 345 | | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
329 | 354 | | |
330 | 355 | | |
331 | 356 | | |
| |||
385 | 410 | | |
386 | 411 | | |
387 | 412 | | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
388 | 419 | | |
389 | 420 | | |
390 | 421 | | |
| |||
432 | 463 | | |
433 | 464 | | |
434 | 465 | | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
435 | 472 | | |
436 | 473 | | |
437 | 474 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
18 | 33 | | |
19 | 34 | | |
20 | 35 | | |
| |||
37 | 52 | | |
38 | 53 | | |
39 | 54 | | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
40 | 64 | | |
41 | 65 | | |
42 | 66 | | |
43 | 67 | | |
44 | 68 | | |
45 | 69 | | |
46 | 70 | | |
| 71 | + | |
47 | 72 | | |
48 | 73 | | |
49 | | - | |
| 74 | + | |
50 | 75 | | |
51 | 76 | | |
52 | 77 | | |
53 | 78 | | |
54 | 79 | | |
55 | 80 | | |
| 81 | + | |
56 | 82 | | |
57 | 83 | | |
58 | 84 | | |
| 85 | + | |
59 | 86 | | |
60 | 87 | | |
61 | 88 | | |
| |||
73 | 100 | | |
74 | 101 | | |
75 | 102 | | |
76 | | - | |
77 | | - | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
78 | 106 | | |
79 | 107 | | |
80 | 108 | | |
| |||
134 | 162 | | |
135 | 163 | | |
136 | 164 | | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
137 | 174 | | |
138 | 175 | | |
139 | 176 | | |
| |||
233 | 270 | | |
234 | 271 | | |
235 | 272 | | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
236 | 280 | | |
237 | 281 | | |
238 | 282 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
9 | 13 | | |
10 | 14 | | |
11 | 15 | | |
| |||
177 | 181 | | |
178 | 182 | | |
179 | 183 | | |
180 | | - | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
181 | 189 | | |
182 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
183 | 196 | | |
184 | 197 | | |
185 | 198 | | |
| |||
200 | 213 | | |
201 | 214 | | |
202 | 215 | | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
203 | 223 | | |
204 | 224 | | |
205 | 225 | | |
206 | 226 | | |
| 227 | + | |
| 228 | + | |
207 | 229 | | |
208 | 230 | | |
209 | | - | |
| 231 | + | |
210 | 232 | | |
211 | | - | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
212 | 275 | | |
213 | 276 | | |
214 | 277 | | |
| |||
0 commit comments