GitHub Agents Md Maintainer
OpenHands/extensions
Create an automation that keeps AGENTS.md current in one or more GitHub repositories.
Analyzes a finished pull request that involved an agent to find what slowed or helped it, and recommends specific changes to instruction files, skills and docs.
$ npx skills add dotnet/maui --skill learn-from-pr -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dotnet/maui learn-from-pr --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/learn-from-pr .claude/skills/learn-from-pr && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "learn-from-pr" agent skill from https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-pr into .claude/skills/learn-from-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learn-from-pr", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-prType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dotnet/maui --skill learn-from-pr -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dotnet/maui learn-from-pr --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/learn-from-pr .agents/skills/learn-from-pr && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "learn-from-pr" agent skill from https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-pr into .agents/skills/learn-from-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learn-from-pr", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/maui --skill learn-from-pr -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dotnet/maui learn-from-pr --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/learn-from-pr .cursor/skills/learn-from-pr && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "learn-from-pr" agent skill from https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-pr into .cursor/skills/learn-from-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learn-from-pr", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dotnet/maui.git --path .github/skills/learn-from-pr--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dotnet/maui --skill learn-from-pr -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dotnet/maui learn-from-pr --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/learn-from-pr .gemini/skills/learn-from-pr && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "learn-from-pr" agent skill from https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-pr into .gemini/skills/learn-from-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learn-from-pr", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dotnet/maui learn-from-prInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dotnet/maui --skill learn-from-pr -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/learn-from-pr .github/skills/learn-from-pr && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "learn-from-pr" agent skill from https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-pr into .github/skills/learn-from-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learn-from-pr", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/maui --skill learn-from-pr -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dotnet/maui learn-from-pr --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/maui.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/learn-from-pr .opencode/skills/learn-from-pr && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "learn-from-pr" agent skill from https://github.com/dotnet/maui/tree/main/.github/skills/learn-from-pr into .opencode/skills/learn-from-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learn-from-pr", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
learn-from-prAnalyzes a finished pull request that involved an agent to find what slowed or helped it, and recommends specific changes to instruction files, skills and docs.
Given a PR or issue number, the agent gathers the diff and metadata with the GitHub CLI, reads the discussion, commit history, code complexity and similar past issues, and asks what would have helped an agent find the fix faster. A key step compares the files the agent attempted with the files the final fix touched. Different files are flagged as a major learning opportunity, with questions about why the agent chose them and what search would have found the right one.
The outcome is then sorted into scenarios: the agent failed, succeeded slowly or succeeded quickly, each with patterns to look for. The output is a structured analysis covering what happened, fix location, failure modes and prioritized recommendations, each with a category, priority, location, specific change and reason. The skill counts as done once at least one concrete recommendation is presented. It is not meant for PRs that are not finalized, trivial PRs or PRs without agent involvement.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b926f05. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires GitHub CLI (gh)
From compatibility in the SKILL.md frontmatter.
Learn From PR loads about 2.5k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 1,078 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from dotnet/maui at commit b926f05, republished under its MIT licence (© dotnet). 1,078 words, ~2,463 tokens.
.claude/skills/learn-from-pr/SKILL.md (or your agent's skills folder).Extracts lessons learned from a completed PR to improve repository documentation and agent capabilities.
| Input | Required | Source |
|---|---|---|
| PR number or Issue number | Yes | User provides (e.g., "PR #33352" or "issue 33352") |
Learning Analysis - Structured markdown with:
Actionable Recommendations - Each with:
The skill is complete when you have:
pr-finalize first)# Required: Get PR info
gh pr view XXXXX --json title,body,files
gh pr diff XXXXXAnalyze the PR to extract learning:
Focus on: "What would have helped an agent find this fix faster?"
Critical question: Did agent attempts target the same files as the final fix?
# Where did final fix go?
gh pr view XXXXX --json files --jq '.files[].path' | grep -v test| Scenario | Implication |
|---|---|
| Same files | Agent found right location |
| Different files | Major learning opportunity - document why |
If different files: Answer these questions:
Determine which scenario applies and look for the relevant patterns:
| Pattern | Indicator |
|---|---|
| Wrong file entirely | All attempts in File A, fix in File B |
| Tunnel vision | Only looked at file mentioned in error |
| Trusted issue title | Issue said "crash in X" so only looked at X |
| Pattern not generalized | Fixed one instance, missed others |
| Didn't search codebase | Never found similar code patterns |
| Missing platform knowledge | Didn't know iOS/Android/Windows specifics |
| Wrong abstraction layer | Fixed handler when problem was in core |
| Misread error message | Error pointed to symptom, not cause |
| Incomplete context | Didn't read enough surrounding code |
| Over-engineered | Complex fix when simple one existed |
| Pattern | Indicator |
|---|---|
| Correct file, wrong approach | Found right file but tried wrong fixes first |
| Needed multiple iterations | Each attempt got closer but wasn't quite right |
| Discovery was slow | Eventually found it but search was inefficient |
| Missing domain knowledge | Had to learn something that could be documented |
Key question: What would have gotten agent to the solution faster?
| Pattern | Indicator |
|---|---|
| Good search strategy | Found right file immediately |
| Understood the pattern | Recognized similar issues from past |
| Documentation helped | Existing docs pointed to solution |
| Simple, minimal fix | Didn't over-engineer |
Key question: What made this work? Should we reinforce this pattern?
# Discover where agent guidance lives
find .github/instructions -name "*.instructions.md" 2>/dev/null
find .github/skills -name "SKILL.md" 2>/dev/null
ls docs/design/ 2>/dev/null
ls .github/copilot-instructions.md 2>/dev/null| Location | When to Add Here |
|---|---|
.github/instructions/*.instructions.md | Domain-specific AI guidance (testing patterns, platform rules) |
.github/skills/*/SKILL.md | Skill needs new step, checklist, or improved workflow |
/docs/design/*.md | Detailed architectural documentation |
.github/copilot-instructions.md | General AI workflow guidance |
| Code comments | Non-obvious code behavior |
For each recommendation, provide:
Prioritization factors:
Pattern-to-Improvement Mapping (Failures/Slow Success):
| Pattern | Likely Improvement |
|---|---|
| Wrong file entirely | Check /docs/design/ for component relationships |
| Tunnel vision | Instruction file: "Always search for pattern across codebase" |
| Missing platform knowledge | Platform-specific instruction file |
| Wrong abstraction layer | Reference /docs/design/HandlerResolution.md |
| Misread error message | Code comment explaining the real cause |
| Over-engineered | Skill enhancement: "Try simplest fix first" |
Pattern-to-Improvement Mapping (Quick Success - reinforce):
| Pattern | Improvement |
|---|---|
| Good search strategy | Document the search pattern that worked in skills |
| Documentation helped | Note which docs were valuable, ensure they stay updated |
| Recognized pattern | Add to instruction files as known pattern |
Present your analysis covering:
| Situation | Action |
|---|---|
| PR not found | Ask user to verify PR number |
| No agent involvement evident | Ask user if they still want analysis |
| Can't determine failure mode | State "insufficient data" and what's missing |
PR #33352 - TraitCollectionDidChange crash on MacCatalyst
What happened:
ShellSectionRootRenderer.csPageViewController.csFailure Mode: Trusted issue title instead of searching for pattern.
Recommendation:
.github/instructions/ios-debugging.instructions.mdPR #34567 - CollectionView scroll position not preserved
What happened:
Pattern: Wrong abstraction layer - fixed handler when problem was in core.
Recommendation:
.github/architecture/handler-vs-core.mdPR #35678 - Button disabled state not updating
What happened:
Pattern: Good search strategy - recognized pattern from similar code.
Recommendation:
.github/skills/try-fix/SKILL.mdFor automated application of recommendations, use the learn-from-pr agent instead.
© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/learn-from-pr of dotnet/maui.
Open the folder on GitHubat commit b926f05
Learn From PR next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Learn From PR this skilldotnet/maui | 23k | — | ~2.5k | Automated safety check: Pass | MIT | |
| GitHub Agents Md MaintainerOpenHands/extensions | 158 | — | ~3k | Automated safety check: Pass | MIT | |
| Openiap Workflowshyodotdev/openiap | 154 | — | ~2k | Automated safety check: Pass | MIT | |
| Mariadb Operator PR Reviewmariadb-operator/mariadb-operator | 1k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Commit And PR389ds/389-ds-base | 294 | — | ~1k | Automated safety check: Pass | Custom licence | |
| Code Reviewsortie-ai/sortie | 196 | — | ~2.9k | Automated safety check: Pass | MIT |
OpenHands/extensions
Create an automation that keeps AGENTS.md current in one or more GitHub repositories.
hyodotdev/openiap
A skill your agent uses for OpenIAP monorepo work that should follow the repository's shared agent workflows, including review-pr, audit-code, audit-security, audit-iapkit, compile-knowledge…
mariadb-operator/mariadb-operator
Perform a structured maintainer-style PR review for the mariadb-operator repository.
389ds/389-ds-base
Commit and open a PR the 389-ds-base way — "Issue NNNN - summary" subject, Bug Description/Fix Description body, Fixes:/Relates: trailer, AI-attribution trailer, and squash-merge etiquette.
sortie-ai/sortie
Reviews pull requests in this repository for the defect classes a mechanical checklist misses: documentation that outlived the code it describes, reaction and retry state that leaks or clobbers a…
timothywarner-org/claude-code
Review uncommitted local changes in the current git working tree for bugs, smells, missing tests, and CLAUDE.md voice violations.
dotnet/maui
Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.
dotnet/maui
Reviews the tests added in a pull request for fix coverage, quality, edge cases and test type, and recommends lighter test types where they would do.
dotnet/maui
Produces evidence-backed ship-readiness verdicts for .NET MAUI Servicing Releases and Previews, and drafts public-safe release handoff pages from the result.
dotnet/maui
Interprets pinned managed benchmark evidence for a dotnet/maui pull request and writes a narrative for the performance review workflow, without running or publishing anything.
dotnet/maui
Checks that a pull request's title and description match its implementation and reviews the code for best practices before merge, without posting anything.
dotnet/maui
Adds MAUI-specific guardrails on top of the maestro-cli skill and Maestro MCP tools for darc, BAR, and channel or feed lookups in dotnet/maui.
Works with
Categories
Analyzes a finished pull request that involved an agent to find what slowed or helped it, and recommends specific changes to instruction files, skills and docs. Given a PR or issue number, the agent gathers the diff and metadata with the GitHub CLI, reads the discussion, commit history, code complexity and similar past issues, and asks what would have helped an agent find the fix faster. A key step compares the files the agent attempted with the files the final fix touched.
Learn From PR fits situations like: reviewing a merged PR where the agent needed many attempts; working out why an agent edited the wrong files before the real fix; studying a fast agent success to repeat what worked; turning PR lessons into updates for instruction files and docs.
Run `npx skills add dotnet/maui --skill learn-from-pr -a claude-code`. Or copy the skill folder (.github/skills/learn-from-pr in dotnet/maui) into .claude/skills/learn-from-pr in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dotnet/maui --skill learn-from-pr -a codex`. Or copy the skill folder (.github/skills/learn-from-pr in dotnet/maui) into .agents/skills/learn-from-pr in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/maui --skill learn-from-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/learn-from-pr, .gemini/skills/learn-from-pr, .github/skills/learn-from-pr and .opencode/skills/learn-from-pr in your project.
Going by SKILL.md and its folder, Learn From PR needs the command-line tools its instructions call (gh). Our summary lists: The GitHub CLI (`gh`). Compatibility (from SKILL.md): Requires GitHub CLI (gh).
SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Learn From PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 9.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Learn From PR: GitHub Agents Md Maintainer (OpenHands/extensions, 158 stars), Openiap Workflows (hyodotdev/openiap, 154 stars), Mariadb Operator PR Review (mariadb-operator/mariadb-operator, 1k stars) and Commit And PR (389ds/389-ds-base, 294 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dotnet (a GitHub organization, an official publisher) maintains it in dotnet/maui, which has 23,321 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 8, 2026.
Source: dotnet/maui on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.