## Why agent-author produces agents/sources.md at plugin scope to record which research sources informed which agent files. agent-audit had no way to validate this chain, leaving stale or missing provenance undetected. ## Implementation Notes Validation is per-pair (the given agent file + its counterpart) rather than plugin-wide, keeping the scope consistent with validate.sh. The script exits 0 silently for non-plugin-scope agents. source_keys is top-level in both CC .md and Copilot .agent.md files (not under metadata:) to avoid conflict with Copilot's own metadata field semantics. Checks 0, 1, 2, 4, 5, 6 mirror the skill provenance set; upstream research-doc cross-reference checks (7, 8) are deferred. agent-author Steps 2, 3, and 4 updated to formally specify the agents/sources.md format and instruct authors to add source_keys to both files when research sources are in context. Refs: #60 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0147vXtL5sP6vorDdqXGJJU9
2.5 KiB
2.5 KiB
# GitHub Copilot CLI agent definition
# File extension MUST be .agent.md — a plain .md file is not picked up by Copilot.
# Fill in all FILL IN: placeholders. Remove or uncomment optional fields as needed.
name: AGENT_NAME
# Required. Kebab-case identifier. Home-directory version wins on name collision.
description: FILL IN: Action-first description of what this agent does and when to invoke it.
# Required. Used by the runtime for automatic agent selection — quality matters.
# Start with a verb: "Reviews...", "Analyzes...", "Generates..."
# Example: "Reviews pull request diffs for security issues."
# tools: ["read", "search", "edit"]
# Optional. Array of tool names. Omit = all available tools. [] = no tools.
# Copilot tool aliases (use these, not Claude Code names):
# execute — run shell commands (aliases: shell, Bash, powershell)
# read — read file contents (aliases: Read, NotebookRead)
# edit — modify files (aliases: Edit, MultiEdit, Write, NotebookEdit)
# search — search files (aliases: Grep, Glob)
# agent — invoke sub-agents (aliases: custom-agent, Task)
# web — web search and fetch (aliases: WebSearch, WebFetch)
# For MCP tools: "server-name/tool-name" or "server-name/*"
# target: github-copilot
# Optional. Which runtime loads this file.
# vscode — VS Code Copilot only
# github-copilot — Copilot CLI / cloud agents only
# both (default) — loaded by both runtimes
# user-invocable: true
# Optional. Set false to hide from manual invocation (auto-select only).
# disable-model-invocation: false
# Optional. Set true to require explicit user invocation; prevents auto-selection.
# model: claude-sonnet-4-5
# Optional. Model to run this agent on.
# source_keys:
# - slug-name
# Development-only. Add when research sources informed this agent (slugs must match agents/sources.md).
# Omit when no research was used. Not a Copilot runtime field — silently ignored.
# DO NOT include these Claude Code-only fields:
# maxTurns, isolation, memory, permissionMode, effort, hooks, mcpServers
FILL IN: System prompt body. Should match the Claude Code version — the agent's task is the same across providers.
You are a FILL IN: role description. When invoked, FILL IN: primary action.
Inputs
FILL IN: What inputs does this agent expect? (files, context, parameters)
Process
FILL IN: Steps the agent takes. Be specific about ordering if it matters.
Output
FILL IN: What does the agent produce? Format, location, structure.