* feat: add hooks authoring instruction
Add hooks.instructions.md with portable guidance for writing GitHub Copilot hooks:
- Folder structure, config schema, and all field documentation
- Script contract: stdin JSON, exit codes, stdout/stderr channels
- Payload schemas for all common events (sessionStart, sessionEnd, userPromptSubmitted, preToolUse, postToolUse, errorOccurred, agentStop)
- Per-event deny mechanisms (structured JSON for preToolUse, non-zero exit for others)
- Matcher support for host-level tool filtering
- Three impactful examples: commit gate, auto-format, dangerous command blocker
- Bash and PowerShell templates
- Cross-platform guidance (Python through both entries)
- Anti-patterns, design rules, and portability notes (GitHub Copilot vs Claude Code)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: address PR review comments
- Document both toolArgs (JSON string) and tool_input/toolInput (object) variants with defensive parsing
- Update sessionStart stdout to reflect additionalContext injection support
- Document preToolUse stdout output fields: modifiedArgs/updatedInput, additionalContext
- Add matcher field note about local verification
- Remove undocumented notification event from event table
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: address round 2 review comments
- Defensive toolArgs parsing in all 3 example scripts (handle toolArgs string, tool_input, toolInput)
- PowerShell type check: test -is [string] before ConvertFrom-Json, init to null
- commit-gate.sh: add package.json existence guard before jq
- block-dangerous.sh: truncate command in deny reason and stderr to avoid leaking secrets
- Consistent defensive parsing helper across all Bash examples
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: handle toolArgs as string or object in jq, fix short_cmd scoping
- All 3 Bash example jq blocks now check toolArgs type before fromjson
- short_cmd defined before the deny/log branch to avoid set -u error
- Consistent defensive pattern across commit-gate, format-on-save, block-dangerous
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: remove accidentally committed agency.toml
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: expand Portability Note into CLI vs VS Code vs Cloud Agent section
Address Aaron's review: replace the thin portability bullet points with
a concrete comparison table covering what is the same (config schema,
event name casing, fields) and what differs (hook loading, shell
environment, tool argument field names). Add a 'How to write portable
hooks' checklist. Separate Claude Code into its own subsection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: simplify to toolArgs-only parsing, clean portability section
- toolArgs is the documented contract — remove tool_input/toolInput defensive
fallbacks from all examples and the Script Contract template
- Simplify portability section: same config everywhere, one-line note about
cloud agent requiring default branch
- All 3 example scripts now use simple toolArgs pipe parsing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Improve agent skills instructions with quality authoring patterns
Add practical, platform-agnostic authoring guidance to
agent-skills.instructions.md based on community best practices:
- Expand applyTo to cover all skills/**/SKILL.md paths
- Add writing guidance for every recommended body section with examples
(When to Use, Prerequisites, Step-by-Step Workflows, Gotchas,
Troubleshooting, References)
- Add 'Writing High-Impact Skills' section with 5 principles:
- Focus on what the agent doesn't know
- Context budget awareness for descriptions
- Gotchas as highest-signal content
- Flexible guidelines over rigid steps
- Progressive disclosure for large skills
- Fix description constraints: add 10-char minimum, single-quote wrapping
- Reconcile Step-by-Step Workflows with Flexible Guidelines advice
- Consolidate Workflow Execution Pattern under Common Patterns
- Standardize terminology (agent vs AI agent)
- Align line thresholds (200 soft / 500 hard)
- Update validation checklist with new quality criteria
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update instructions/agent-skills.instructions.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Address PR review: make instructions platform-agnostic
- Replace 'GitHub Copilot'-specific language with generic 'the agent'
- Add skills/<skill-name>/ to Directory Structure table for repo layouts
- Fix relative path in flexible guidelines example (./references/)
- Update description and intro to be platform-neutral
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert terminology changes per reviewer feedback
Restore 'Copilot' and 'AI agent' terminology to match
the original doc's conventions. Keep new substantive content
(Writing High-Impact Skills, Gotchas, expanded examples).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Aaron Powell <me@aaron-powell.com>
* feat: add winmd-api-search skill for Windows desktop API discovery
Add a skill that helps find and explore Windows desktop APIs (WinRT/WinAppSDK).
It searches a local WinMD metadata cache to discover APIs for platform capabilities
like camera, file access, notifications, UI controls, AI/ML, sensors, and networking.
Includes bundled scripts:
- Update-WinMdCache.ps1: generates the JSON cache from SDK and NuGet packages
- Invoke-WinMdQuery.ps1: searches types, members, enums, and namespaces
- cache-generator: .NET tool that parses WinMD files into JSON
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: sync winmd-api-search with latest upstream changes
Updates from PowerToys source branch:
- Detect installed WinAppSDK runtime via Get-AppxPackage
- Respect NUGET_PACKAGES env var for global packages path
- Use OS architecture for runtime package detection
- Fix method/event visibility to use MemberAccessMask equality
- Fix EnumerationOptions, TypeSpecification decoding, search sort
- Robust scan with case-insensitive dedup and multi-path search
- Deduplicate packages by (Id, Version)
- Fix assets.json selection and pin SRM version
- Fix SDK version sorting and global namespace handling
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: remove en-us locale from Microsoft Learn URLs
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat: filter assets.json by package type; unique scan-mode manifests
- Filter assets.json libraries by type==package to skip project references
- Append short path hash to manifest names in scan mode to avoid collisions
- Support prefix match in query script for scan-mode manifest names
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>