[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AE08PR4JGEKVNP17M4VT0F":3,"skill-same:01M6AE08PR4JGEKVNP17M4VT0F":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6AE08PR4JGEKVNP17M4VT0F","pr-screenshots",null,"Embed before\u002Fafter screenshots and annotated images in pull request descriptions. Covers PR description patterns, image upload for Azure DevOps and GitHub, and sizing best practices.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41046,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fpr-screenshots\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,9],"screenshots","pr","pr screenshots","request","image","for","embed","upload","patterns","images","devops","pull","best practices","pr description","pull request","azure","azure devops","2026-11-10 10:12:30",false,"---\nname: pr-screenshots\ndescription: 'Embed before\u002Fafter screenshots and annotated images in pull request descriptions. Covers PR description patterns, image upload for Azure DevOps and GitHub, and sizing best practices.'\n---\n\n# PR Screenshots\n\nEmbed before\u002Fafter screenshots in pull request descriptions so reviewers can see the visual change without checking out the branch.\n\n## When to Use This Skill\n\nUse this skill when a PR changes something visible:\n\n- Layout, styling, CSS\n- Charts, dashboards, data visualizations\n- UI components, forms, modals\n- Error messages, CLI output, log formatting\n\n## PR Description Pattern\n\nPlace screenshots directly in the PR description body. Avoid wrapping them in `\u003Cdetails>` collapse — reviewers are more likely to look at images they can see without clicking.\n\n```markdown\n**Before** — brief description of the problem:\n\n![before](url-to-before-image)\n\n**After** — brief description of the fix:\n\n![after](url-to-after-image)\n```\n\nKeep the text brief. A sentence or two per image describing what the reader should notice. Let the image carry most of the communication.\n\n### Multiple changes\n\nFor PRs with several visual changes, use separate before\u002Fafter pairs with headings:\n\n```markdown\n## Filter bar alignment\n\n**Before** — 1px border clash between adjacent buttons:\n\n![before-filters](url)\n\n**After** — borders overlap cleanly, hover tint added:\n\n![after-filters](url)\n\n## Chart tooltip\n\n**Before** — tooltip clipped at container edge:\n\n![before-tooltip](url)\n\n**After** — tooltip repositions to stay visible:\n\n![after-tooltip](url)\n```\n\n## Image Sizing\n\n- **Take screenshots at native 1x resolution** — don't resize with PIL (creates artifacts)\n- **Control display size in HTML** when images are too large:\n  ```html\n  \u003Cimg src=\"url\" width=\"600\" alt=\"description\">\n  ```\n- **Before\u002Fafter pairs must use the same viewport width and crop** — otherwise the comparison is meaningless\n\n## Uploading Images\n\n### Azure DevOps\n\nUpload images as PR attachments via the REST API:\n\n```powershell\n$token = az account get-access-token `\n    --resource \"499b84ac-1321-427f-aa17-267ca6975798\" `\n    --query accessToken -o tsv\n\n$base = \"https:\u002F\u002F{org}.visualstudio.com\u002F{projectId}\u002F_apis\u002Fgit\u002Frepositories\u002F{repoId}\"\n$url = \"$base\u002FpullRequests\u002F{prId}\u002Fattachments\u002Fscreenshot.png?api-version=7.1-preview.1\"\n\n# Use HttpClient — Invoke-RestMethod can corrupt binary data\n$client = New-Object System.Net.Http.HttpClient\n$client.DefaultRequestHeaders.Authorization = `\n    New-Object System.Net.Http.Headers.AuthenticationHeaderValue(\"Bearer\", $token)\n$content = New-Object System.Net.Http.ByteArrayContent(\n    , [System.IO.File]::ReadAllBytes(\"screenshot.png\")\n)\n$content.Headers.ContentType = `\n    [System.Net.Http.Headers.MediaTypeHeaderValue]::new(\"application\u002Foctet-stream\")\n$resp = $client.PostAsync($url, $content).Result\n```\n\nReference in the PR description:\n\n```markdown\n![description](https:\u002F\u002F{org}.visualstudio.com\u002F{projectId}\u002F_apis\u002Fgit\u002Frepositories\u002F{repoId}\u002FpullRequests\u002F{prId}\u002Fattachments\u002Fscreenshot.png)\n```\n\n**Azure DevOps gotchas:**\n\n- **Use `{org}.visualstudio.com` NOT `dev.azure.com\u002F{org}`** — AzDO's markdown renderer uses `.visualstudio.com`. The `dev.azure.com` format loads noticeably slower\n- Use `POST` not `PUT` (PUT returns 405)\n- API version must be `7.1-preview.1`\n- Can't re-upload with the same filename — use a new name (e.g. `screenshot-v2.png`)\n- Use `HttpClient` not `Invoke-RestMethod` — IRM can corrupt binary data\n- Repo-relative paths don't work in PR descriptions — must use full URLs\n- Don't commit images to the branch just for PR screenshots\n\n### GitHub\n\n> **⚠️ Work in progress.** GitHub's drag-and-drop image upload uses internal endpoints that require browser cookies. There's no clean public API for uploading images to PR descriptions yet.\n\n**Current workaround:** Commit images to a `pr-assets` orphan branch and reference via blob URLs (`github.com\u002F{owner}\u002F{repo}\u002Fblob\u002Fpr-assets\u002F{file}?raw=true`). It works but is clunky — contributions for a better approach are welcome.\n\n## Guidelines\n\n1. **Capture before state BEFORE making changes** — it's easy to forget, and reconstructing the original state later is slow and error-prone\n2. **Keep descriptions brief** — a sentence or two per image pointing out what changed is enough\n3. **Prefer visible images over collapsed sections** — screenshots behind `\u003Cdetails>` tags are easy to skip\n4. **Annotate when the change is subtle** — use the `image-annotations` skill to add callouts when the difference isn't immediately obvious\n5. **Match viewport and crop** between before\u002Fafter pairs so the comparison is meaningful\n\n## Limitations\n\n- GitHub image upload requires workarounds (no public API for PR description images)\n- Azure DevOps attachment filenames can't be reused — plan naming ahead\n- Very large images (>10MB) may not render inline on some platforms\n","# PR Screenshots\n\nEmbed before\u002Fafter screenshots in pull request descriptions so reviewers can see the visual change without checking out the branch.\n\n## When to Use This Skill\n\nUse this skill when a PR changes something visible:\n\n- Layout, styling, CSS\n- Charts, dashboards, data visualizations\n- UI components, forms, modals\n- Error messages, CLI output, log formatting\n\n## PR Description Pattern\n\nPlace screenshots directly in the PR description body. Avoid wrapping them in `\u003Cdetails>` collapse — reviewers are more likely to look at images they can see without clicking.\n\n```markdown\n**Before** — brief description of the problem:\n\n![before](url-to-before-image)\n\n**After** — brief description of the fix:\n\n![after](url-to-after-image)\n```\n\nKeep the text brief. A sentence or two per image describing what the reader should notice. Let the image carry most of the communication.\n\n### Multiple changes\n\nFor PRs with several visual changes, use separate before\u002Fafter pairs with headings:\n\n```markdown\n## Filter bar alignment\n\n**Before** — 1px border clash between adjacent buttons:\n\n![before-filters](url)\n\n**After** — borders overlap cleanly, hover tint added:\n\n![after-filters](url)\n\n## Chart tooltip\n\n**Before** — tooltip clipped at container edge:\n\n![before-tooltip](url)\n\n**After** — tooltip repositions to stay visible:\n\n![after-tooltip](url)\n```\n\n## Image Sizing\n\n- **Take screenshots at native 1x resolution** — don't resize with PIL (creates artifacts)\n- **Control display size in HTML** when images are too large:\n  ```html\n  \u003Cimg src=\"url\" width=\"600\" alt=\"description\">\n  ```\n- **Before\u002Fafter pairs must use the same viewport width and crop** — otherwise the comparison is meaningless\n\n## Uploading Images\n\n### Azure DevOps\n\nUpload images as PR attachments via the REST API:\n\n```powershell\n$token = az account get-access-token `\n    --resource \"499b84ac-1321-427f-aa17-267ca6975798\" `\n    --query accessToken -o tsv\n\n$base = \"https:\u002F\u002F{org}.visualstudio.com\u002F{projectId}\u002F_apis\u002Fgit\u002Frepositories\u002F{repoId}\"\n$url = \"$base\u002FpullRequests\u002F{prId}\u002Fattachments\u002Fscreenshot.png?api-version=7.1-preview.1\"\n\n# Use HttpClient — Invoke-RestMethod can corrupt binary data\n$client = New-Object System.Net.Http.HttpClient\n$client.DefaultRequestHeaders.Authorization = `\n    New-Object System.Net.Http.Headers.AuthenticationHeaderValue(\"Bearer\", $token)\n$content = New-Object System.Net.Http.ByteArrayContent(\n    , [System.IO.File]::ReadAllBytes(\"screenshot.png\")\n)\n$content.Headers.ContentType = `\n    [System.Net.Http.Headers.MediaTypeHeaderValue]::new(\"application\u002Foctet-stream\")\n$resp = $client.PostAsync($url, $content).Result\n```\n\nReference in the PR description:\n\n```markdown\n![description](https:\u002F\u002F{org}.visualstudio.com\u002F{projectId}\u002F_apis\u002Fgit\u002Frepositories\u002F{repoId}\u002FpullRequests\u002F{prId}\u002Fattachments\u002Fscreenshot.png)\n```\n\n**Azure DevOps gotchas:**\n\n- **Use `{org}.visualstudio.com` NOT `dev.azure.com\u002F{org}`** — AzDO's markdown renderer uses `.visualstudio.com`. The `dev.azure.com` format loads noticeably slower\n- Use `POST` not `PUT` (PUT returns 405)\n- API version must be `7.1-preview.1`\n- Can't re-upload with the same filename — use a new name (e.g. `screenshot-v2.png`)\n- Use `HttpClient` not `Invoke-RestMethod` — IRM can corrupt binary data\n- Repo-relative paths don't work in PR descriptions — must use full URLs\n- Don't commit images to the branch just for PR screenshots\n\n### GitHub\n\n> **⚠️ Work in progress.** GitHub's drag-and-drop image upload uses internal endpoints that require browser cookies. There's no clean public API for uploading images to PR descriptions yet.\n\n**Current workaround:** Commit images to a `pr-assets` orphan branch and reference via blob URLs (`github.com\u002F{owner}\u002F{repo}\u002Fblob\u002Fpr-assets\u002F{file}?raw=true`). It works but is clunky — contributions for a better approach are welcome.\n\n## Guidelines\n\n1. **Capture before state BEFORE making changes** — it's easy to forget, and reconstructing the original state later is slow and error-prone\n2. **Keep descriptions brief** — a sentence or two per image pointing out what changed is enough\n3. **Prefer visible images over collapsed sections** — screenshots behind `\u003Cdetails>` tags are easy to skip\n4. **Annotate when the change is subtle** — use the `image-annotations` skill to add callouts when the difference isn't immediately obvious\n5. **Match viewport and crop** between before\u002Fafter pairs so the comparison is meaningful\n\n## Limitations\n\n- GitHub image upload requires workarounds (no public API for PR description images)\n- Azure DevOps attachment filenames can't be reused — plan naming ahead\n- Very large images (>10MB) may not render inline on some platforms\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fpr-screenshots",5340,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot","https:\u002F\u002Fawesome-copilot.github.com\u002F","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-11 13:41:32",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add github\u002Fawesome-copilot --skill pr-screenshots",{"tool":62,"command":63},"bunx","bunx skills add github\u002Fawesome-copilot --skill pr-screenshots",{"tool":65,"command":66},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill pr-screenshots","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fpr-screenshots\u002FSKILL.md",true,[],[71,104,131,160,194,209],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":83,"publishedAt":41},"01M70KXZNX9ES38N2A8M58ZZMZ","supabase-rls-policies","Write, review, and test Supabase Row Level Security (RLS) policies so that one user cannot read or change another user's rows. Use when creating or changing tables, policies, views, or security definer functions in a Supabase project, when reviewing a migration that touches RLS, or when asked to prove user isolation with pgTAP tests that sign in as two users.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fsupabase-rls-policies\u002FSKILL.md",[77,80],{"categoryNo":78,"categoryName":79,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":81,"categoryName":82,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"supabase","rls","supabase rls","supabase rls policies","project","when","review","change","read","write","security","isolation","tables","as","tests","prove","use","users","functions","with",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":111,"publishedAt":41},"01M70KWA5YWXDV6V8DZ19E3T2Y","skill-distribution-audit","Audit a skill collection before release or investigate installer omissions, archived\u002Ftemplate leakage, duplicate identities, and manifest drift. Reconcile the intended public source set, distribution manifest, and actual discovery output for a specified consumer version. Includes a deterministic set-comparison helper.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fskill-distribution-audit\u002FSKILL.md",[110],{"categoryNo":81,"categoryName":82,"taxonomyType":21,"taxonomyTypeDesc":22},[112,113,114,115,116,117,29,118,119,120,121,122,123,124,125,126,127,128,129,130],"distribution","skill distribution audit","audit","SET","deterministic","installer","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":135,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":41},"01M70KCJPFVW7PPQ49CC5R8JGK","logicapps-custom-code-net10-migration","Migrate Azure Logic Apps Standard local-function custom-code projects from .NET 8 to .NET 10. Use for legacy Logic Apps custom-code workspace upgrades, project\u002Fpackage configuration, custom-worker settings, publication, and integrated VS Code debugging. Not for ordinary .NET applications, standalone Azure Functions, Consumption workflows, or cloud deployment.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[144,145,146,147,148,149,29,88,150,151,152,39,153,154,155,100,156,157,158,159],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","worker","upgrades","package","apps","Legacy","debugging","workflows",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":164,"sourceHtmlUrl":165,"categories":166,"keywords":171,"publishedAt":41},"01M6AEBN37RQMXJ3298PEY7PG1","winmd-api-search","Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI\u002FML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FSKILL.md",[167,170],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},[172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,89,187,188,189,190,191,29,192,193],"winmd api search","search","api","windows","desktop","file access","enumeration","ui","ml","file","networking","capabilities","notifications","explore","access","features","full","camera","events","platform","methods","controls",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":198,"licenseFileUrl":199,"sourceHtmlUrl":200,"categories":201,"keywords":205,"publishedAt":41},"01M6AE571R3SC1ZGE202B3NB5S","resemble-detect","Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FSKILL.md",[202,203,204],{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":81,"categoryName":82,"taxonomyType":21,"taxonomyTypeDesc":22},[206,115,181,207,208],"resemble detect","https","identity",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":198,"licenseFileUrl":213,"sourceHtmlUrl":214,"categories":215,"keywords":220,"publishedAt":41},"01M6AE30BSK2HCY4TQQ22Z8JRD","quality-playbook","Run a complete quality engineering audit on any codebase. Derives behavioral requirements from the code, generates spec-traced functional tests, runs a three-pass code review with regression tests, executes a multi-model spec audit (Council of Three), and produces a consolidated bug report with TDD-verified patches. Finds the 35% of real defects that structural code review alone cannot catch. Works with any language. Trigger on 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', or 'coverage theater'.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FSKILL.md",[216,219],{"categoryNo":217,"categoryName":218,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":81,"categoryName":82,"taxonomyType":21,"taxonomyTypeDesc":22},[221,222,223,224,145,90,9,114,225,226,207,227,228,229,230,231,232,233,234,235,236,237,98,238,239,240,241],"playbook","quality playbook","quality","code review","tdd","run","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","model","regression","structural"]