Skip to content

Commit 1038a7b

Browse files
CopilotPureWeenkubaflo
authored
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

14 files changed

+1916
-391
lines changed

.github/agents/learn-from-pr.md

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
---
2+
name: learn-from-pr
3+
description: Analyzes completed PRs for lessons learned, then applies improvements to instruction files, skills, and documentation.
4+
---
5+
6+
# Learn From PR Agent
7+
8+
Extracts lessons from completed PRs and **applies** improvements to the repository.
9+
10+
## When to Invoke
11+
12+
- "Learn from PR #XXXXX and apply improvements"
13+
- "Update the repo based on what we learned from PR #XXXXX"
14+
- After any PR with agent involvement (failed, slow success, or quick success)
15+
16+
## When NOT to Invoke
17+
18+
- For analysis only without applying changes → use `/learn-from-pr` skill
19+
- Before PR is finalized
20+
- For trivial PRs with no learning value
21+
22+
---
23+
24+
## Workflow
25+
26+
### Phase 1: Analysis
27+
28+
Run the `/learn-from-pr` skill workflow (Steps 1-6) to generate recommendations.
29+
30+
The skill covers three outcome types:
31+
- **Agent failed** - What was missing that caused wrong attempts
32+
- **Agent succeeded slowly** - What would have gotten to solution faster
33+
- **Agent succeeded quickly** - What patterns to reinforce
34+
35+
### Phase 2: Apply Changes
36+
37+
For each **High or Medium priority** recommendation:
38+
39+
| Category | Action |
40+
|----------|--------|
41+
| Instruction file | Edit existing or create new `.github/instructions/*.instructions.md` |
42+
| Skill enhancement | Edit `.github/skills/*/SKILL.md` |
43+
| Architecture doc | Edit `/docs/design/*.md` (detailed) or create quick-reference in `.github/architecture/` |
44+
| General AI guidance | Edit `.github/copilot-instructions.md` |
45+
| Code comment | Add comment to source file (don't modify behavior) |
46+
47+
**Before each edit:**
48+
- Read the target file first
49+
- Check for existing similar content (don't duplicate)
50+
- Match the existing style/format
51+
- Find the appropriate section
52+
53+
**Skip applying if:**
54+
- Content already exists
55+
- Recommendation is too vague
56+
- Would require major restructuring
57+
58+
### Phase 2.5: Verify Changes
59+
60+
After applying changes:
61+
62+
1. Run `git diff` to review all edits
63+
2. Verify no syntax errors in modified files (valid markdown)
64+
3. Confirm style matches existing content
65+
4. If issues found, fix or revert before reporting
66+
67+
### Phase 3: Report
68+
69+
Present a summary:
70+
71+
```markdown
72+
## Changes Applied
73+
74+
| File | Change |
75+
|------|--------|
76+
| [path] | [what was added/modified] |
77+
78+
## Not Applied
79+
80+
| Recommendation | Reason |
81+
|----------------|--------|
82+
| [rec] | [why skipped] |
83+
```
84+
85+
---
86+
87+
## Error Handling
88+
89+
| Situation | Action |
90+
|-----------|--------|
91+
| PR not found | Ask user to verify PR number |
92+
| No session markdown | Proceed with PR diff analysis only |
93+
| Target file doesn't exist | Create if instruction/architecture doc, skip if code |
94+
| Duplicate content exists | Skip, note in report |
95+
| Unclear where to add | Ask user for guidance |
96+
97+
## Constraints
98+
99+
- **Only apply High/Medium priority** - Report Low priority without applying
100+
- **Don't duplicate** - Check existing content first
101+
- **Match style** - Read file before editing
102+
- **Code comments only** - Never modify code behavior
103+
- **No linter implementation** - File issue instead of building analyzers
104+
105+
---
106+
107+
## Difference from Skill
108+
109+
| Aspect | `/learn-from-pr` Skill | This Agent |
110+
|--------|------------------------|------------|
111+
| Output | Recommendations to discuss | Applied changes |
112+
| Mode | Analysis only | Autonomous |
113+
| Use when | Want to review without applying | CI automation |

.github/agents/pr.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,23 @@ After Gate passes, read `.github/agents/pr/post-gate.md` for **Phases 4-5**.
3939
└─────────────────────────────────────────┘ └─────────────────────────────────────────────┘
4040
```
4141

42+
---
43+
44+
## Phase Completion Protocol (CRITICAL)
45+
46+
**Before changing ANY phase status to ✅ COMPLETE:**
47+
48+
1. **Read the state file section** for the phase you're completing
49+
2. **Find ALL ⏳ PENDING and [PENDING] fields** in that section
50+
3. **Fill in every field** with actual content
51+
4. **Verify no pending markers remain** in your section
52+
5. **Commit the state file** with complete content
53+
6. **Then change status** to ✅ COMPLETE
54+
55+
**Rule:** Status ✅ means "documentation complete", not "I finished thinking about it"
56+
57+
---
58+
4259
### 🚨 CRITICAL: Phase 4 Always Uses `try-fix` Skill
4360

4461
**Even when a PR already has a fix**, Phase 4 requires running the `try-fix` skill to:
@@ -326,6 +343,14 @@ The test result will be updated to `✅ PASS (Gate)` after Gate passes.
326343
3. Add edge cases and any disagreements (if PR exists)
327344
4. Change 🧪 Tests status to `▶️ IN PROGRESS`
328345

346+
**Before marking ✅ COMPLETE, verify state file contains:**
347+
- [ ] Issue summary filled (not [PENDING])
348+
- [ ] Platform checkboxes marked
349+
- [ ] Files Changed table populated (if PR exists)
350+
- [ ] PR Discussion Summary documented (if PR exists)
351+
- [ ] All [PENDING] placeholders replaced
352+
- [ ] State file committed
353+
329354
---
330355

331356
## 🧪 TESTS: Create/Verify Reproduction Tests (Phase 2)
@@ -385,6 +410,12 @@ The script auto-detects mode based on git diff. If only test files changed, it v
385410
4. Change 🧪 Tests status to `✅ COMPLETE`
386411
5. Change 🚦 Gate status to `▶️ IN PROGRESS`
387412

413+
**Before marking ✅ COMPLETE, verify state file contains:**
414+
- [ ] Test file paths documented
415+
- [ ] "Tests verified to FAIL" note added
416+
- [ ] Test category identified
417+
- [ ] State file committed
418+
388419
---
389420

390421
## 🚦 GATE: Verify Tests Catch the Issue (Phase 3)
@@ -432,6 +463,12 @@ pwsh .github/skills/verify-tests-fail-without-fix/scripts/verify-tests-fail.ps1
432463
2. Change 🚦 Gate status to `✅ PASSED`
433464
3. Proceed to Phase 4
434465

466+
**Before marking ✅ PASSED, verify state file contains:**
467+
- [ ] Result shows PASSED ✅ or FAILED ❌
468+
- [ ] Test behavior documented
469+
- [ ] Platform tested noted
470+
- [ ] State file committed
471+
435472
---
436473

437474
## ⛔ STOP HERE

.github/agents/pr/post-gate.md

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,21 @@ If Gate is not passed, go back to `.github/agents/pr.md` and complete phases 1-3
1515

1616
---
1717

18+
## Phase Completion Protocol (CRITICAL)
19+
20+
**Before changing ANY phase status to ✅ COMPLETE:**
21+
22+
1. **Read the state file section** for the phase you're completing
23+
2. **Find ALL ⏳ PENDING and [PENDING] fields** in that section
24+
3. **Fill in every field** with actual content
25+
4. **Verify no pending markers remain** in your section
26+
5. **Commit the state file** with complete content
27+
6. **Then change status** to ✅ COMPLETE
28+
29+
**Rule:** Status ✅ means "documentation complete", not "I finished thinking about it"
30+
31+
---
32+
1833
## 🔧 FIX: Explore and Select Fix (Phase 4)
1934

2035
> **SCOPE**: Explore independent fix alternatives using `try-fix` skill, compare with PR's fix, select the best approach.
@@ -37,25 +52,37 @@ The purpose of Phase 4 is NOT to re-test the PR's fix, but to:
3752

3853
Invoke the `try-fix` skill repeatedly. The skill handles one fix attempt per invocation.
3954

55+
**IMPORTANT:** Always pass the `state_file` parameter so try-fix can record its results:
56+
```
57+
state_file: .github/agent-pr-session/pr-XXXXX.md
58+
```
59+
60+
try-fix will automatically append rows to the Fix Candidates table and set the "Exhausted" field. You remain responsible for:
61+
- Setting "Selected Fix" field with reasoning
62+
- Updating phase status to ✅ COMPLETE
63+
4064
```
4165
┌─────────────────────────────────────────────────────────────┐
4266
│ Agent orchestration loop │
4367
├─────────────────────────────────────────────────────────────┤
4468
│ │
4569
│ attempts = 0 │
4670
│ max_attempts = 5 │
71+
│ state_file = ".github/agent-pr-session/pr-XXXXX.md" │
4772
│ │
4873
│ while (attempts < max_attempts): │
49-
│ result = invoke try-fix skill
74+
│ result = invoke try-fix skill (with state_file)
5075
│ attempts++ │
5176
│ │
5277
│ if result.exhausted: │
5378
│ break # try-fix has no more ideas │
5479
│ │
5580
│ # result.passed indicates if this attempt worked │
81+
│ # try-fix already recorded to state file │
5682
│ # Continue loop to explore more alternatives │
5783
│ │
5884
│ # After loop: compare all try-fix results vs PR's fix │
85+
│ # Update "Exhausted" and "Selected Fix" fields │
5986
│ │
6087
└─────────────────────────────────────────────────────────────┘
6188
```
@@ -73,8 +100,9 @@ Each `try-fix` invocation:
73100
3. Proposes ONE new independent fix idea
74101
4. Implements and tests it
75102
5. Records result (with failure analysis if it failed)
76-
6. Reverts all changes (restores PR's fix)
77-
7. Returns `{passed: bool, exhausted: bool}`
103+
6. **Updates state file** (appends row to Fix Candidates table if state_file provided)
104+
7. Reverts all changes (restores PR's fix)
105+
8. Returns `{passed: bool, exhausted: bool}`
78106

79107
See `.github/skills/try-fix/SKILL.md` for full details.
80108

@@ -134,6 +162,15 @@ Update the state file:
134162
4. Change 🔧 Fix status to `✅ COMPLETE`
135163
5. Change 📋 Report status to `▶️ IN PROGRESS`
136164

165+
**Before marking ✅ COMPLETE, verify state file contains:**
166+
- [ ] Root Cause Analysis filled in (if applicable)
167+
- [ ] Fix Candidates table has numbered rows for each try-fix attempt
168+
- [ ] Each row has: approach, test result, files changed, notes
169+
- [ ] "Exhausted" field set (Yes/No)
170+
- [ ] "Selected Fix" populated with reasoning
171+
- [ ] No ⏳ PENDING markers remain in Fix section
172+
- [ ] State file committed
173+
137174
---
138175

139176
## 📋 REPORT: Final Report (Phase 5)
@@ -233,6 +270,13 @@ Update all phase statuses to complete.
233270
2. Update all phases to `✅ COMPLETE` or `✅ PASSED`
234271
3. Present final result to user
235272

273+
**Before marking ✅ COMPLETE, verify state file contains:**
274+
- [ ] Final recommendation (APPROVE/REQUEST_CHANGES/COMMENT)
275+
- [ ] Summary of findings
276+
- [ ] Key technical insights documented
277+
- [ ] Overall status changed to final recommendation
278+
- [ ] State file committed
279+
236280
---
237281

238282
## Common Mistakes in Post-Gate Phases

.github/copilot-instructions.md

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ description: "Guidance for GitHub Copilot when working on the .NET MAUI reposito
66

77
This document provides specific guidance for GitHub Copilot when working on the .NET MAUI repository. It serves as context for understanding the project structure, development workflow, and best practices.
88

9+
## Code Review Instructions
10+
11+
When performing a code review on PRs that change functional code, run the pr-finalize skill to verify that the PR title and description accurately match the actual implementation. This ensures proper documentation and helps maintain high-quality commit messages.
12+
913
## Repository Overview
1014

1115
**.NET MAUI** is a cross-platform framework for creating mobile and desktop applications with C# and XAML. This repository contains the core framework code that enables development for Android, iOS, iPadOS, macOS, and Windows from a single shared codebase.
@@ -177,9 +181,18 @@ Always put that at the top, without the block quotes. Without it, users will NOT
177181

178182

179183

180-
## Custom Agents
184+
## Custom Agents and Skills
185+
186+
The repository includes specialized custom agents and reusable skills for specific tasks.
187+
188+
### Skills vs Agents
181189

182-
The repository includes specialized custom agents for specific tasks. These agents are available to GitHub Copilot and can be invoked for their respective specializations:
190+
| Aspect | Skills | Agents |
191+
|--------|--------|--------|
192+
| **Invoke** | `/skill-name` or direct request | Delegate to agent |
193+
| **Output** | Analysis, recommendations | Actions, changes applied |
194+
| **Interaction** | Interactive discussion | Autonomous workflow |
195+
| **Example** | `/learn-from-pr` → recommendations | learn-from-pr agent → applies changes |
183196

184197
### Available Custom Agents
185198

@@ -200,15 +213,65 @@ The repository includes specialized custom agents for specific tasks. These agen
200213
- **Trigger phrases**: "test this PR", "validate PR #XXXXX in Sandbox", "reproduce issue #XXXXX", "try out in Sandbox"
201214
- **Do NOT use for**: Code review (use pr agent), writing automated tests (use uitest-coding-agent)
202215

216+
4. **learn-from-pr** - Extracts lessons from PRs and applies improvements to the repository
217+
- **Use when**: After complex PR, want to improve instruction files/skills based on lessons learned
218+
- **Capabilities**: Analyzes PR, identifies failure modes, applies improvements to instruction files, skills, code comments
219+
- **Trigger phrases**: "learn from PR #XXXXX and apply improvements", "improve repo based on what we learned", "update skills based on PR"
220+
- **Output**: Applied changes to instruction files, skills, architecture docs, code comments
221+
- **Do NOT use for**: Analysis only without applying changes → Use `/learn-from-pr` skill instead
222+
203223
### Reusable Skills
204224

205225
Skills are modular capabilities that can be invoked directly or used by agents. Located in `.github/skills/`:
206226

227+
#### User-Facing Skills
228+
207229
1. **issue-triage** (`.github/skills/issue-triage/SKILL.md`)
208230
- **Purpose**: Query and triage open issues that need milestones, labels, or investigation
209-
- **Trigger phrases**: "find issues to triage", "show me old Android issues", "what issues need attention", "triage Android issues"
231+
- **Trigger phrases**: "find issues to triage", "show me old Android issues", "what issues need attention"
210232
- **Scripts**: `init-triage-session.ps1`, `query-issues.ps1`, `record-triage.ps1`
211-
- **Used by**: Any agent or direct invocation
233+
234+
2. **find-reviewable-pr** (`.github/skills/find-reviewable-pr/SKILL.md`)
235+
- **Purpose**: Finds open PRs in dotnet/maui and dotnet/docs-maui that need review
236+
- **Trigger phrases**: "find PRs to review", "show milestoned PRs", "find partner PRs"
237+
- **Scripts**: `query-reviewable-prs.ps1`
238+
- **Categories**: P/0, milestoned, partner, community, recent, docs-maui
239+
240+
3. **pr-finalize** (`.github/skills/pr-finalize/SKILL.md`)
241+
- **Purpose**: Verifies PR title and description match actual implementation. Works on any PR. Optionally updates agent session markdown if present.
242+
- **Trigger phrases**: "finalize PR #XXXXX", "check PR description for #XXXXX", "review commit message"
243+
- **Used by**: Before merging any PR, when description may be stale
244+
- **Note**: Does NOT require agent involvement or session markdown - works on any PR
245+
246+
4. **learn-from-pr** (`.github/skills/learn-from-pr/SKILL.md`)
247+
- **Purpose**: Analyzes completed PR to identify repository improvements (analysis only, no changes applied)
248+
- **Trigger phrases**: "what can we learn from PR #XXXXX?", "how can we improve agents based on PR #XXXXX?"
249+
- **Used by**: After complex PRs, when agent struggled to find solution
250+
- **Output**: Prioritized recommendations for instruction files, skills, code comments
251+
- **Note**: For applying changes automatically, use the learn-from-pr agent instead
252+
253+
5. **write-tests** (`.github/skills/write-tests/SKILL.md`)
254+
- **Purpose**: Creates UI tests for GitHub issues and verifies they reproduce the bug
255+
- **Trigger phrases**: "write tests for #XXXXX", "create test for issue", "add UI test coverage"
256+
- **Output**: Test files that fail without fix, pass with fix
257+
258+
6. **verify-tests-fail-without-fix** (`.github/skills/verify-tests-fail-without-fix/SKILL.md`)
259+
- **Purpose**: Verifies UI tests catch the bug before fix and pass with fix
260+
- **Two modes**: Verify failure only (test creation) or full verification (test + fix)
261+
- **Used by**: After creating tests, before considering PR complete
262+
263+
7. **pr-build-status** (`.github/skills/pr-build-status/SKILL.md`)
264+
- **Purpose**: Retrieves Azure DevOps build information for PRs (build IDs, stage status, failed jobs)
265+
- **Trigger phrases**: "check build for PR #XXXXX", "why did PR build fail", "get build status"
266+
- **Used by**: When investigating CI failures
267+
268+
#### Internal Skills (Used by Agents)
269+
270+
8. **try-fix** (`.github/skills/try-fix/SKILL.md`)
271+
- **Purpose**: Proposes ONE independent fix approach, applies it, tests, records result with failure analysis, then reverts
272+
- **Used by**: pr agent Phase 3 (Fix phase) - rarely invoked directly by users
273+
- **Behavior**: Reads prior attempts to learn from failures. Max 5 attempts per session.
274+
- **Output**: Updates session markdown with attempt results and failure analysis
212275

213276
### Using Custom Agents
214277

0 commit comments

Comments
 (0)