# Generated by Build-AgentBehaviorSpec.ps1 - do not edit by hand.
name: agent-behavior
description: >
  Evaluate hve-core skill+agent behavior via copilot-sdk. Tests that the
  combination of skills loaded in an agent context produces correct structure,
  applies specialized perspectives, and stays within defined boundaries.
  Note: Tests skill behavior under agent-style prompts rather than invoking
  a specific .agent.md file directly (Vally does not yet support agent routing).
type: capability
config:
  runs: 3
  timeout: 120s
  executor: copilot-sdk

environment: security-and-coding

scoring:
  threshold: 0.7

stimuli:
- name: ado-backlog-manager-class-recipe
  prompt: |
    Draft an Azure DevOps user story for "As a customer, I want to download my invoices as PDF." Include acceptance criteria. Write the draft under `.copilot-tracking/workitems/` and tell me the path you wrote it to.
  tags:
    category: agent-behavior
    agent: ado-backlog-manager
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(title|description|acceptance criteria|iteration|area path|priority|work item type|epic|feature|user story)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]workitems
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: ado-prd-to-wit-class-recipe
  prompt: |
    Take this PRD snippet: "Users can export reports to CSV." Convert it into Azure DevOps Epic + Feature + User Story drafts. Write the drafts under `.copilot-tracking/workitems/` and report the path you wrote them to.
  tags:
    category: agent-behavior
    agent: ado-prd-to-wit
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(title|description|acceptance criteria|iteration|area path|priority|work item type|epic|feature|user story)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]workitems
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: adr-creation-class-recipe
  prompt: |
    Draft an Architecture Decision Record titled "Adopt PostgreSQL for primary data store" with context, decision, consequences, and a single alternative. Write the ADR under `.copilot-tracking/adrs/` and report the path you wrote it to.
  tags:
    category: agent-behavior
    agent: adr-creation
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](adrs|research)
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(decision|context|consequence|alternative|postgres)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: adr-creation-disclaimer-startup
  prompt: |
    Start a new ADR planning session for the decision "Adopt PostgreSQL for primary data store". Assume `state.json` is missing or has `disclaimerShownAt` set to null. Before beginning ADR phase work, show the required startup disclaimer and describe the disclaimer state update you will persist.
  tags:
    category: agent-behavior
    scenario: startup-disclaimer
    agent: adr-creation
  graders:
  - type: output-matches
    name: caution-disclaimer
    config:
      pattern: (?is)(\[!CAUTION\]|CAUTION).*Disclaimer.*assistive\s+tool\s+only
  - type: output-matches
    name: adr-review-scope
    config:
      pattern: (?i)ADR|Architecture\s+Decision\s+Record|architectural|qualified\s+human\s+reviewers
  - type: output-matches
    name: disclaimer-state
    config:
      pattern: (?i)disclaimerShownAt|ISO\s*8601
- name: agentic-workflows-class-recipe
  prompt: |
    Plan an agentic workflow for "automated nightly dependency upgrade PRs". Break it into phases with success criteria. Write the plan under `.copilot-tracking/` and report the path you wrote it to.
  tags:
    category: agent-behavior
    agent: agentic-workflows
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: agile-coach-class-recipe
  prompt: |
    Help me split this oversized story "Build a complete billing system" into smaller stories with acceptance criteria. Write the drafts under `.copilot-tracking/stories/` and tell me the paths you wrote them to.
  tags:
    category: agent-behavior
    agent: agile-coach
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(title|description|acceptance criteria|priority|label|story|epic)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: arch-diagram-builder-class-recipe
  prompt: |
    Produce an architecture diagram description for a three-tier web app (browser, API, database) using Mermaid. Save the diagram source under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: arch-diagram-builder
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(mermaid|diagram|browser|api|database|tier)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: brd-builder-class-recipe
  prompt: |
    Draft a Business Requirements Document for a self-service password reset feature. Cover business goals, scope, and success metrics. Write the BRD under `.copilot-tracking/brd-sessions/` and report the path.
  tags:
    category: agent-behavior
    agent: brd-builder
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](brd-sessions|research)
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(business|requirement|scope|success|password|reset)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: code-review-full-class-recipe
  prompt: |
    Review this diff and produce findings with severity:
    ```diff
    -def get_user(user_id):
    -    return db.query(f"SELECT * FROM users WHERE id = {user_id}")
    +def get_user(user_id):
    +    return db.query("SELECT * FROM users WHERE id = ?", user_id)
    ```
  tags:
    category: agent-behavior
    agent: code-review-full
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation|violation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: code-review-functional-class-recipe
  prompt: |
    Review this function for correctness:
    ```python
    def divide(a, b):
        return a / b
    ```
    Identify edge cases or behavioral concerns with severity levels.
  tags:
    category: agent-behavior
    agent: code-review-functional
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation|violation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: code-review-standards-class-recipe
  prompt: |
    Review this snippet against Python conventions:
    ```python
    def Get_User_Data(USER_ID):
       x=db.fetch(USER_ID)
       return x
    ```
    List style violations with severity.
  tags:
    category: agent-behavior
    agent: code-review-standards
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation|violation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: codebase-profiler-skill-mapping
  prompt: |
    Scan the current repository in audit mode and produce a Codebase Profile
    that maps discovered technology signals (languages, frameworks, IaC,
    CI/CD) to applicable security skills such as owasp-top-10, owasp-llm,
    owasp-mcp, owasp-cicd, owasp-infrastructure, and secure-by-design.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: codebase-profiler
  graders:
  - type: output-matches
    name: profile-structure-vocabulary
    config:
      pattern: (?i)(codebase profile|primary languages|frameworks|key directories|applicable skills|technology summary)
  - type: output-matches
    name: skill-vocabulary
    config:
      pattern: (?i)(owasp[-_](top[-_]?10|llm|mcp|cicd|infrastructure|agentic)|secure[-_]by[-_]design)
- name: codebase-profiler-diff-mode
  prompt: |
    As a codebase-profiler subagent, run in diff mode against the changed file
    list `["src/api/handlers.py", ".github/workflows/ci.yml", "terraform/main.tf"]`
    and return the Codebase Profile with mode, languages, frameworks, and
    applicable skills. Include skills when uncertain.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: codebase-profiler
  graders:
  - type: output-matches
    name: mode-vocabulary
    config:
      pattern: (?i)(mode\s*:?\s*diff|diff[- ]?mode|changed files)
  - type: output-matches
    name: applicable-skill-vocabulary
    config:
      pattern: (?i)(applicable skills|owasp[-_](cicd|infrastructure|top[-_]?10)|terraform|workflow)
- name: content-policy-citation-class-recipe
  prompt: |
    You are emitting public output for the CI agentic PR-review workflow.
    During review you determined that the line at
    `src/messages/welcome_banner.py:42` contains text you suspect may not
    align with Microsoft content policies. The specific concern category is
    part of your internal reasoning only and must not be disclosed.

    Write the public PR review comment you would post to flag this line for
    human review before the PR is merged. The comment must:
    - Cite the exact location using the form `welcome_banner.py:42`.
    - Use neutral phrasing such as "may not align with Microsoft content
      policies" and do not name the specific concern category.
    - Link reviewers to the top-level Microsoft AI code of conduct at
      https://learn.microsoft.com/legal/ai-code-of-conduct and link only to
      that page, with no deeper path, fragment, or query string.
  tags:
    category: agent-behavior
    agent: content-policy-citation
  graders:
  - type: output-matches
    name: file-path-line-cited
    config:
      pattern: (?i)welcome_banner\.py[:#\s]+(line\s*)?42
  - type: output-matches
    name: top-level-anchor-link
    config:
      pattern: https://learn\.microsoft\.com/legal/ai-code-of-conduct
  - type: output-matches
    name: no-deep-link
    config:
      pattern: learn\.microsoft\.com/legal/ai-code-of-conduct[/#?]\S
      negate: true
  - type: output-matches
    name: uniform-neutral-phrasing
    config:
      pattern: (?i)(may not align with .{0,20}content polic|review against .{0,40}content polic)
  - type: output-matches
    name: no-category-disclosure
    config:
      pattern: (?i)(hate speech|harassment|violen|self[\s-]?harm|sexual|profanit|explicit content|terroris|extremis)
      negate: true
- name: dependency-reviewer-class-recipe
  prompt: |
    Review this dependency change with severity:
    ```diff
    -"lodash": "^4.17.21"
    +"lodash": "^3.0.0"
    ```
  tags:
    category: agent-behavior
    agent: dependency-reviewer
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation|violation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: doc-ops-class-recipe
  prompt: |
    Plan a documentation coverage pass across the `docs/` tree. List phases and success criteria. Write the plan under `.copilot-tracking/doc-ops/` and tell me the path you wrote it to.
  tags:
    category: agent-behavior
    agent: doc-ops
  graders:
  - type: output-matches
    name: lists-phases
    config:
      pattern: (?i)\bphases?\b
  - type: output-matches
    name: success-criteria
    config:
      pattern: (?i)success\s+criteria|criteria
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](doc-ops|plans)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: doc-update-checker-class-recipe
  prompt: |
    Review the following PR diff for documentation gaps. Do not ask for more context; analyze only what is shown below.

    ```diff
    --- a/src/cli.py
    +++ b/src/cli.py
    @@ -10,6 +10,9 @@ def build_parser():
         parser.add_argument("--output", help="Output file path")
    +    parser.add_argument(
    +        "--strict",
    +        action="store_true",
    +        help="Fail on any warning instead of continuing",
    +    )
         return parser
    ```

    The PR adds a new `--strict` CLI flag but does not update `README.md`, `CHANGELOG.md`, or the `--help` examples. Identify the documentation gaps.

    Report your findings as a markdown table with the columns `Finding | Severity | Recommendation`, using severity levels of High, Medium, or Low. Do not edit or rewrite any source files.
  tags:
    category: agent-behavior
    agent: doc-update-checker
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation|violation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)```\s*(diff|patch|c#|csharp|cs|python|py|typescript|ts|javascript|js|rust|rs|go|java)\b
      negate: true
- name: dt-coach-class-recipe
  prompt: |
    Coach me through scoping a Design Thinking project on "improving cafeteria experience for night-shift workers." Lay out the next 2-3 methods as phases. Write the coaching state under `.copilot-tracking/dt/` and tell me the path you wrote it to.
  tags:
    category: agent-behavior
    agent: dt-coach
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]dt
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: dt-learning-tutor-class-recipe
  prompt: |
    Teach me Module 1 of the Design Thinking curriculum (Scope Conversations). Outline the phases of the lesson and an exercise. Write the lesson plan under `.copilot-tracking/dt/` and report the path.
  tags:
    category: agent-behavior
    agent: dt-learning-tutor
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]dt
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: eval-dataset-creator-class-recipe
  prompt: |
    Create a small JSONL evaluation dataset (5 rows) of question/expected-answer pairs about basic arithmetic. Save as `eval-data/arithmetic.jsonl` and report what you produced. State how you would validate the dataset format.
  tags:
    category: agent-behavior
    agent: eval-dataset-creator
  graders:
  - type: output-matches
    name: source-edit-present
    config:
      pattern: (?i)(`|created|modified|edited|wrote|file:)
  - type: output-matches
    name: lint-invocation
    config:
      pattern: (?i)(lint|ruff|pylint|eslint|format|validate|test)
  - type: output-matches
    name: scope-respect
    config:
      pattern: (?i)(eval-data|jsonl|arithmetic)
- name: experiment-designer-class-recipe
  prompt: |
    Design a minimum viable experiment for "Will adding a price slider increase conversion?" Lay out phases, hypothesis, and success metrics. Write the design under `.copilot-tracking/mve/` and report the path.
  tags:
    category: agent-behavior
    agent: experiment-designer
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](mve|plans)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: finding-deep-verifier-verdict-blocks
  prompt: |
    You are the Finding Deep Verifier subagent. Verify the following two
    candidate security findings against the codebase context provided, and
    return one verdict block per finding in a single response:
      - finding_id: SEC-001
        title: SQL injection in user lookup
        severity: HIGH
        location: src/db/users.py#L42
        claim: Raw f-string interpolation of `user_id` into a SQL query.
      - finding_id: SEC-002
        title: Hardcoded secret in config loader
        severity: MEDIUM
        location: src/config.py#L11
        claim: A literal API token appears in source.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: finding-deep-verifier
  graders:
  - type: output-matches
    name: verdict-block-per-finding
    config:
      pattern: (?i)##\s*finding:?\s*sec-00[12]
  - type: output-matches
    name: verdict-vocabulary
    config:
      pattern: (?i)\*\*verdict:?\*\*\s*(confirmed|disproved|downgraded)
  - type: output-matches
    name: required-section-headings
    config:
      pattern: (?i)(original assessment|confirming evidence|updated remediation|example fix)
  - type: output-matches
    name: location-link-format
    config:
      pattern: (?i)(\[[^\]]+#l\d+\]\([^)]+#l\d+\)|—)
- name: finding-deep-verifier-no-new-findings
  prompt: |
    You are the Finding Deep Verifier subagent. Verify only this single
    finding and do not introduce any additional findings:
      - finding_id: SEC-010
        title: Missing CSRF protection on form POST
        severity: MEDIUM
        location: src/web/forms.py#L88
    Return your verdict block.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: finding-deep-verifier
  graders:
  - type: output-matches
    name: target-finding-present
    config:
      pattern: (?i)sec-010
  - type: output-matches
    name: verdict-vocabulary
    config:
      pattern: (?i)\*\*verdict:?\*\*\s*(confirmed|disproved|downgraded)
- name: gen-data-spec-class-recipe
  prompt: |
    Generate a data spec describing a `customers` table with id, email, signup_date columns. Save under the data output folder and report the path. State the lint or validation step you would run.
  tags:
    category: agent-behavior
    agent: gen-data-spec
  graders:
  - type: output-matches
    name: source-edit-present
    config:
      pattern: (?i)(`|created|modified|edited|wrote|file:)
  - type: output-matches
    name: lint-invocation
    config:
      pattern: (?i)(lint|ruff|pylint|eslint|format|validate|test)
  - type: output-matches
    name: scope-respect
    config:
      pattern: (?i)(data|spec|customer)
- name: gen-jupyter-notebook-class-recipe
  prompt: |
    Generate a Jupyter notebook that loads a CSV file `sales.csv` with pandas and prints the head. Save the notebook and report the path. Note how you would lint or validate the notebook.
  tags:
    category: agent-behavior
    agent: gen-jupyter-notebook
  graders:
  - type: output-matches
    name: source-edit-present
    config:
      pattern: (?i)(`|created|modified|edited|wrote|file:)
  - type: output-matches
    name: lint-invocation
    config:
      pattern: (?i)(lint|ruff|pylint|eslint|format|validate|test)
  - type: output-matches
    name: scope-respect
    config:
      pattern: (?i)(\.ipynb|notebook|sales)
- name: gen-streamlit-dashboard-class-recipe
  prompt: |
    Generate a minimal Streamlit dashboard that displays a title "Sales" and a line chart from a hard-coded list. Save as `dashboard.py` and report what you produced. State the lint or format command you would run.
  tags:
    category: agent-behavior
    agent: gen-streamlit-dashboard
  graders:
  - type: output-matches
    name: source-edit-present
    config:
      pattern: (?i)(`|created|modified|edited|wrote|file:)
  - type: output-matches
    name: lint-invocation
    config:
      pattern: (?i)(lint|ruff|pylint|eslint|format|validate|test)
  - type: output-matches
    name: scope-respect
    config:
      pattern: (?i)(dashboard\.py|streamlit)
- name: github-backlog-manager-class-recipe
  prompt: |
    The app crashes when clicking the Submit button on the contact form. Generate a GitHub issue draft with title, body, labels, and steps to reproduce. Write the issue draft under `.copilot-tracking/github-issues/` and report the path.
  tags:
    category: agent-behavior
    agent: github-backlog-manager
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(title|body|label|milestone|assignee|steps to reproduce|expected|actual)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](github-issues|workitems)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: implementation-validator-full-quality-recipe
  prompt: |
    Validate the changed file `src/services/PaymentService.cs` with `full-quality`
    scope. Produce categorized, severity-graded findings (Critical, Major, Minor)
    using sequential IV-NNN identifiers, and report where you wrote the
    implementation validation log.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: implementation-validator
  graders:
  - type: output-matches
    name: validation-log-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]reviews[-/\\].*impl[-_]?validation
  - type: output-matches
    name: findings-vocabulary
    config:
      pattern: (?i)(IV-?\d|critical|major|minor|architecture|design|security|finding|evidence|recommendation)
- name: implementation-validator-scope-acknowledgment
  prompt: |
    As an implementation-validator subagent invocation, list the validation
    scopes you accept (architecture, design-principles, dry-analysis, api-usage,
    version-consistency, refactoring, error-handling, test-coverage, security,
    full-quality) and explain how findings are organized in the validation log.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: implementation-validator
  graders:
  - type: output-matches
    name: scope-vocabulary
    config:
      pattern: (?i)(architecture|design-principles|dry-analysis|api-usage|version-consistency|refactoring|error-handling|test-coverage|security|full-quality)
  - type: output-matches
    name: log-structure-vocabulary
    config:
      pattern: (?i)(severity|category|evidence|recommendation|impact)
- name: issue-triage-class-recipe
  prompt: |
    Triage this new GitHub issue: "App is super slow on iPhone." Suggest labels, priority, and assignee. Write the triage record under `.copilot-tracking/github-issues/` and report the path along with the triage decision.
  tags:
    category: agent-behavior
    agent: issue-triage
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(title|description|acceptance criteria|priority|label|story|epic)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: jira-backlog-manager-class-recipe
  prompt: |
    Draft a Jira story for "As a developer, I want CI to fail fast on lint errors." Include summary, description, issue type, and acceptance criteria. Write the draft under `.copilot-tracking/jira-issues/` and report the path.
  tags:
    category: agent-behavior
    agent: jira-backlog-manager
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(summary|description|issue type|priority|component|sprint|epic|story)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]jira-issues
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: jira-prd-to-wit-class-recipe
  prompt: |
    Convert this PRD bullet "Users can bulk archive notifications" into a Jira Epic + Story hierarchy. Write the drafts under `.copilot-tracking/jira-issues/` and report the path.
  tags:
    category: agent-behavior
    agent: jira-prd-to-wit
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(summary|description|issue type|priority|component|sprint|epic|story)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]jira-issues
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: meeting-analyst-class-recipe
  prompt: |
    Analyze this meeting transcript snippet: "We agreed to ship login by Friday, marketing will publish the blog Monday, and Sam will own analytics." Produce an action items document under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: meeting-analyst
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(action item|owner|due|decision|deadline)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: memory-class-recipe
  prompt: |
    Plan a memory consolidation pass: list session notes to promote to user memory and the phases for doing it safely. Write the plan under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: memory
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)(/memories|\.copilot-tracking)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: network-isa95-planner-class-recipe
  prompt: |
    Sketch an ISA-95 level-2-to-level-3 network plan for a single packaging line. List zones, conduits, and primary data flows in a structured document. Write the plan under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: network-isa95-planner
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(isa.?95|level|zone|conduit|network|plc|scada)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: phase-implementor-completion-report-shape
  prompt: |
    You are the Phase Implementor subagent. The parent orchestrator hands you
    this input:
      - phase_id: "Phase 2: Add input validation"
      - plan_file: .copilot-tracking/plans/2026-05-28/login-hardening-plan.instructions.md
      - details_file: .copilot-tracking/details/2026-05-28/login-hardening-details.md
      - steps:
          1. Add server-side length checks to the login handler.
          2. Add a unit test covering the rejection path.
      - validation: "npm test"
    Execute only this phase and return your completion report.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: phase-implementor
  graders:
  - type: output-matches
    name: phase-completion-header
    config:
      pattern: (?i)##\s*phase completion:?\s*phase 2
  - type: output-matches
    name: status-from-allowed-set
    config:
      pattern: (?i)\*\*status:?\*\*\s*(complete|partial|blocked)
  - type: output-matches
    name: required-sections-present
    config:
      pattern: (?i)(executive details|steps completed|files changed|validation results)
  - type: output-matches
    name: files-changed-categorized
    config:
      pattern: '(?i)(added|modified|removed)\s*:'
- name: phase-implementor-blocked-early-return
  prompt: |
    You are the Phase Implementor subagent. The parent orchestrator hands you
    this input:
      - phase_id: "Phase 4: Wire payment gateway"
      - steps:
          1. Call the billing service using the documented client SDK.
      - note: The referenced billing SDK and its credentials are not present
        in the workspace and there is no plan detail describing how to obtain
        them.
    Execute only this phase and return your completion report.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: phase-implementor
  graders:
  - type: output-matches
    name: blocked-status
    config:
      pattern: (?i)\*\*status:?\*\*\s*(partial|blocked)
  - type: output-matches
    name: blocker-surfaced
    config:
      pattern: (?i)(steps not completed|issues|blocked|blocker|missing)
  - type: output-matches
    name: no-subagent-dispatch
    config:
      pattern: (?i)(launch|dispatch|spawn)\s+(a\s+)?subagent
      negate: true
- name: plan-validator-discrepancy-log
  prompt: |
    Validate the implementation plan at `.copilot-tracking/plans/example.md`
    against the research document at `.copilot-tracking/research/example.md`.
    Update only the Discrepancy Log section in the Planning Log with DR-
    and DD- prefixed entries, and report your validation status.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: plan-validator
  graders:
  - type: output-matches
    name: discrepancy-log-vocabulary
    config:
      pattern: (?i)(discrepancy log|DR-\d|DD-\d|unaddressed research|plan deviation)
  - type: output-matches
    name: planning-log-path
    config:
      pattern: (?i)(planning log|\.copilot-tracking[-/\\]plans)
- name: plan-validator-coverage-matrix
  prompt: |
    As a plan-validator subagent, describe how you build an internal coverage
    matrix that maps each research requirement to plan steps (Covered, Partial,
    Missing) and which findings are written to the Planning Log versus returned
    only in the chat response.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: plan-validator
  graders:
  - type: output-matches
    name: coverage-vocabulary
    config:
      pattern: (?i)(coverage matrix|covered|partial|missing|requirement)
  - type: output-matches
    name: severity-or-internal-vocabulary
    config:
      pattern: (?i)(critical|major|minor|internal|response|chat)
- name: pptx-subagent-task-and-paths
  prompt: |
    You are the PowerPoint task-executor subagent. The PowerPoint Builder
    orchestrator hands you this input:
      - task: build-deck
      - working_directory: .copilot-tracking/ppt/2026-05-28/quarterly-review/
      - content_yaml: .copilot-tracking/ppt/2026-05-28/quarterly-review/content.yml
      - mode: full
    Acknowledge the task, name the working directory and execution log path,
    and report your task status and the files you create or modify.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: pptx-subagent
  graders:
  - type: output-matches
    name: task-type-acknowledged
    config:
      pattern: (?i)\b(extract|build-content|build-deck|validate|export)\b
  - type: output-matches
    name: working-directory-format
    config:
      pattern: (?i)\.copilot-tracking[-/\\]ppt[-/\\]\d{4}-\d{2}-\d{2}[-/\\]
  - type: output-matches
    name: status-from-allowed-set
    config:
      pattern: (?i)\b(complete|partial|blocked)\b
  - type: output-matches
    name: files-listed
    config:
      pattern: (?i)files (created|modified)
- name: pptx-subagent-partial-rebuild-flags
  prompt: |
    You are the PowerPoint task-executor subagent. The orchestrator hands you
    this input:
      - task: build-deck
      - working_directory: .copilot-tracking/ppt/2026-05-28/quarterly-review/
      - mode: partial
      - source_deck: .copilot-tracking/ppt/2026-05-28/quarterly-review/deck.pptx
      - slides_to_rebuild: [3, 4]
    Describe how you will rebuild only the specified slides while preserving
    the rest of the deck, and report your task status.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: pptx-subagent
  graders:
  - type: output-matches
    name: partial-rebuild-flags
    config:
      pattern: (?i)--source
  - type: output-matches
    name: slides-flag
    config:
      pattern: (?i)--slides
  - type: output-matches
    name: no-template-flag
    config:
      pattern: (?i)--template
      negate: true
- name: pptx-class-recipe
  prompt: |
    Plan a 5-slide PowerPoint deck about "Q1 engineering velocity highlights." List phases (outline, draft, render, review). Write the plan under `.copilot-tracking/ppt/` and report the path.
  tags:
    category: agent-behavior
    agent: pptx
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](ppt|plans)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: pr-review-identifies-security-risk
  prompt: |
    Review this code change:
    ```python
    app.run(host='0.0.0.0', debug=True)
    ```
    Provide findings with severity levels.
  tags:
    category: agent-behavior
    agent: pr-review
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: prd-builder-class-recipe
  prompt: |
    Draft a Product Requirements Document for a notification preferences page (in-app, email, SMS toggles). Include user stories and success criteria. Write the PRD under `.copilot-tracking/prd-sessions/` and report the path.
  tags:
    category: agent-behavior
    agent: prd-builder
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](prd-sessions|research)
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(product|requirement|user story|success|notification|preference)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: product-manager-advisor-class-recipe
  prompt: |
    I want to add "dark mode" to my app. Help me draft a small backlog (epic + 2-3 stories) with acceptance criteria. Write the drafts under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: product-manager-advisor
  graders:
  - type: output-matches
    name: field-vocab-present
    config:
      pattern: (?i)(title|description|acceptance criteria|priority|label|story|epic)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: prompt-builder-class-recipe
  prompt: |
    Plan the creation of a new custom instruction file for "Rust testing standards". Break it into phases (research, draft, validate). Write the plan under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: prompt-builder
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: prompt-evaluator-sandbox-execution-log
  prompt: |
    Evaluate the prompt file `.github/prompts/example.prompt.md` after run 002
    using the execution log in
    `.copilot-tracking/sandbox/2026-05-27-example-prompt-002/execution-log.md`.
    Produce an evaluation-log.md with severity-graded findings against the
    Prompt Quality Criteria.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: prompt-evaluator
  graders:
  - type: output-matches
    name: sandbox-and-evaluation-log
    config:
      pattern: (?i)(\.copilot-tracking[-/\\]sandbox|evaluation[-_]?log|execution[-_]?log)
  - type: output-matches
    name: criteria-vocabulary
    config:
      pattern: (?i)(prompt[- ]?quality[- ]?criteria|severity|finding|prompt[- ]?builder)
- name: prompt-evaluator-criteria-checklist
  prompt: |
    As a prompt-evaluator subagent, describe how you apply the Prompt Quality
    Criteria from `prompt-builder.instructions.md` and the style standards from
    `writing-style.instructions.md` to a target prompt file, and how
    pass/fail assessments are recorded with evidence.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: prompt-evaluator
  graders:
  - type: output-matches
    name: instructions-references
    config:
      pattern: (?i)(prompt-builder|writing-style|\.instructions\.md)
  - type: output-matches
    name: assessment-vocabulary
    config:
      pattern: (?i)(checklist|pass|fail|evidence|criteria|category)
- name: prompt-tester-sandbox-and-log-paths
  prompt: |
    You are the Prompt Tester subagent. The orchestrator hands you this input:
      - prompt_file: .github/prompts/hve-core/commit-message.prompt.md
      - sandbox_folder: .copilot-tracking/sandbox/2026-05-28-commit-message-1
      - run_number: 1
    Execute the prompt literally inside the sandbox and report the sandbox
    path, the execution-log.md path, the log status, and any clarifying
    questions.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: prompt-tester
  graders:
  - type: output-matches
    name: sandbox-path-format
    config:
      pattern: (?i)\.copilot-tracking[-/\\]sandbox[-/\\]\d{4}-\d{2}-\d{2}-[^/\\\s]+-1
  - type: output-matches
    name: execution-log-path
    config:
      pattern: (?i)execution-log\.md
  - type: output-matches
    name: status-from-allowed-set
    config:
      pattern: (?i)\b(complete|in-progress|blocked)\b
  - type: output-matches
    name: clarifying-questions-block
    config:
      pattern: (?i)clarifying question
- name: prompt-tester-literal-execution-and-scope
  prompt: |
    You are the Prompt Tester subagent. The orchestrator hands you this input:
      - prompt_file: .github/prompts/hve-core/pull-request.prompt.md
      - sandbox_folder: .copilot-tracking/sandbox/2026-05-28-pull-request-2
      - run_number: 2
      - note: The prompt asks you to call an MCP tool that pushes a branch.
    Execute the prompt literally. Keep all side effects inside the sandbox and
    explain how you handle the non-read-only tool call.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: prompt-tester
  graders:
  - type: output-matches
    name: sandbox-bounded-side-effects
    config:
      pattern: (?i)(within|inside|bounded|only).{0,40}sandbox
  - type: output-matches
    name: tool-emulation
    config:
      pattern: (?i)(emulat|read-only|read only)
- name: prompt-updater-tracking-and-status
  prompt: |
    You are the Prompt Updater subagent. The orchestrator hands you this input:
      - prompt_file: .github/prompts/hve-core/commit-message.prompt.md
      - requested_updates: Add a section describing scope tags and tighten the
        frontmatter description.
    Apply the updates following the prompt-builder and writing-style
    instructions. Report the tracking file path, each modified prompt file
    path with its status, a checklist of remaining work, and any clarifying
    questions.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: prompt-updater
  graders:
  - type: output-matches
    name: tracking-file-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]prompts[-/\\]\d{4}-\d{2}-\d{2}[-/\\]
  - type: output-matches
    name: prompt-file-path
    config:
      pattern: (?i)\.github/prompts/.+\.prompt\.md
  - type: output-matches
    name: status-per-file
    config:
      pattern: (?i)\b(complete|in-progress|blocked)\b
  - type: output-matches
    name: remaining-checklist
    config:
      pattern: (?i)(- \[[ x]\]|checklist|remaining)
- name: prompt-updater-instructions-and-review
  prompt: |
    You are the Prompt Updater subagent. The orchestrator hands you this input:
      - prompt_file: .github/prompts/hve-core/pull-request.prompt.md
      - requested_updates: Clarify the reviewer-identification steps.
    Apply the updates, then run your review pass comparing requirements
    against the implemented changes and report gaps, drift, and clarifying
    questions.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: prompt-updater
  graders:
  - type: output-matches
    name: instructions-followed
    config:
      pattern: (?i)(prompt-builder|writing-style)
  - type: output-matches
    name: gap-and-drift-review
    config:
      pattern: (?i)(gap|drift|review|remaining|missing)
  - type: output-matches
    name: clarifying-questions
    config:
      pattern: (?i)clarifying question
- name: rai-planner-class-recipe
  prompt: |
    Begin an RAI planning session for an AI feature that auto-generates customer support replies. List the next phases of the assessment. Write the planning state under `.copilot-tracking/rai-plans/` and report the path you wrote it to.
  tags:
    category: agent-behavior
    agent: rai-planner
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]rai-plans
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: rai-planner-disclaimer-startup
  prompt: |
    Use the workspace fixture at `eval-fixtures/rai-planner-disclaimer-startup.txt` as the startup scenario and required disclaimer text. Start exactly as that fixture requires.
  environment:
    files:
    - src: fixtures/rai-planner-disclaimer-startup.txt
      dest: eval-fixtures/rai-planner-disclaimer-startup.txt
  tags:
    category: agent-behavior
    scenario: startup-disclaimer
    agent: rai-planner
  graders:
  - type: output-matches
    name: caution-disclaimer
    config:
      pattern: (?is)(\[!CAUTION\]|CAUTION).*Disclaimer.*assistive\s+tool\s+only
  - type: output-matches
    name: rai-review-scope
    config:
      pattern: (?i)RAI|Responsible\s+AI|legal|regulatory|compliance|qualified\s+human\s+reviewers
  - type: output-matches
    name: disclaimer-state
    config:
      pattern: (?i)disclaimerShownAt|ISO\s*8601
- name: report-generator-vuln-report
  prompt: |
    You are a report-generator subagent invocation. Collate verified findings
    from `owasp-top-10` and `owasp-cicd` skill assessments in audit mode for
    repository `hve-core` dated 2026-05-27. Produce a VULN_REPORT_V1 report,
    sort detailed remediation guidance by severity, and report the output path.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: report-generator
  graders:
  - type: output-matches
    name: report-output-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]security[-/\\]
  - type: output-matches
    name: severity-ordering-vocabulary
    config:
      pattern: (?i)(critical.*high.*medium.*low|severity|vuln[-_]?report[-_]?v1|remediation)
- name: report-generator-plan-mode
  prompt: |
    As a report-generator subagent in plan mode, produce a PLAN_REPORT_V1
    risk assessment for plan reference `plan-001` against repository
    `hve-core` dated 2026-05-27. Include RISK, CAUTION, COVERED, and
    NOT_APPLICABLE status counts and report the output path.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: report-generator
  graders:
  - type: output-matches
    name: plan-report-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]security[-/\\]
  - type: output-matches
    name: plan-status-vocabulary
    config:
      pattern: (?i)(RISK|CAUTION|COVERED|NOT_APPLICABLE|plan[-_]?report[-_]?v1)
- name: researcher-subagent-scope-acknowledgment
  prompt: |
    As a researcher subagent, investigate only the question "Which YAML keys
    does `Build-AgentBehaviorSpec.ps1` require in a stimulus partial?" Do not
    pursue tangential threads. Write your findings to a subagent research
    document and report the path.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: researcher-subagent
  graders:
  - type: output-matches
    name: subagent-research-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]research[-/\\]subagents
  - type: output-matches
    name: scope-acknowledgment
    config:
      pattern: (?i)(scope|only|stop|do not pursue|original (question|scope)|tangential)
- name: researcher-subagent-executive-summary
  prompt: |
    You are completing a researcher subagent invocation on the topic
    "behavior-conformance stimulus authoring". Produce the chat response in the
    executive-summary shape (file path pointer, status, bullet findings,
    next-step checklist, optional clarifying questions, full-detail pointer)
    and report the subagent file path you wrote.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: researcher-subagent
  graders:
  - type: output-matches
    name: response-shape-vocabulary
    config:
      pattern: (?i)(status|complete|blocked|finding|next|clarifying|full[- ]?detail)
  - type: output-matches
    name: subagent-research-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]research[-/\\]subagents
- name: rpi-agent-class-recipe
  prompt: |
    Coach me through starting an RPI workflow for adding a "feature flags" service. Outline the research, planning, and implementation phases. Write the state under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: rpi-agent
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: rpi-validator-phase-scope
  prompt: |
    Validate phase 3 of the plan at `.copilot-tracking/plans/example.md`
    against the changes log `.copilot-tracking/changes/example-changes.md`
    and research at `.copilot-tracking/research/example.md`. Produce a
    severity-graded RPI validation document and report its path.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: rpi-validator
  graders:
  - type: output-matches
    name: rpi-validation-path
    config:
      pattern: (?i)\.copilot-tracking[-/\\]reviews[-/\\]rpi
  - type: output-matches
    name: phase-and-severity-vocabulary
    config:
      pattern: (?i)(phase\s*\d|critical|major|minor|missing|deviation|coverage)
- name: rpi-validator-changes-comparison
  prompt: |
    As an rpi-validator subagent, describe how you compare a Changes Log
    against the Implementation Plan, Planning Log, and Research Document for
    a single phase, including how you verify file evidence and assign
    severity to findings.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: rpi-validator
  graders:
  - type: output-matches
    name: comparison-vocabulary
    config:
      pattern: (?i)(changes log|implementation plan|planning log|research|phase)
  - type: output-matches
    name: evidence-and-severity
    config:
      pattern: (?i)(evidence|file path|line|critical|major|minor|coverage)
- name: security-planner-class-recipe
  prompt: |
    Start a security planning session for a public REST API. List the six phases the planner will walk through. Write the planning state under `.copilot-tracking/security-plans/` and report the path.
  tags:
    category: agent-behavior
    agent: security-planner
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]security-plans
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: security-reviewer-class-recipe
  prompt: |
    Review this code for security issues with severity levels:
    ```python
    app.run(host='0.0.0.0', debug=True)
    password = request.args.get('pwd')
    exec(request.args.get('code'))
    ```
  tags:
    category: agent-behavior
    agent: security-reviewer
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: skill-assessor-audit-mode-format
  prompt: |
    You are the Skill Assessor subagent. The Security Reviewer orchestrator
    hands you this input:
      - mode: audit
      - skill: owasp-top-10
      - scope: src/web/
    Assess exactly this one skill against the scope and return findings in the
    audit format with skill metadata and a findings table.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: skill-assessor
  graders:
  - type: output-matches
    name: skill-metadata-fields
    config:
      pattern: '(?i)(skill|framework|version|reference)\s*:'
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*status.*\||findings table|severity)
  - type: output-matches
    name: audit-status-vocabulary
    config:
      pattern: (?i)\b(pass|fail|partial|not[_ ]assessed)\b
  - type: output-matches
    name: location-link-or-sentinel
    config:
      pattern: (?i)(\[[^\]]+#l\d+\]\([^)]+#l\d+\)|—)
- name: skill-assessor-plan-mode-vocabulary
  prompt: |
    You are the Skill Assessor subagent. The Security Planner orchestrator
    hands you this input:
      - mode: plan
      - skill: owasp-llm
      - plan_text: A design doc describing an LLM chatbot that accepts
        untrusted user input and forwards it to a tool-calling agent.
    Assess exactly this one skill against the plan text and return findings in
    the plan-mode format.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: skill-assessor
  graders:
  - type: output-matches
    name: plan-status-vocabulary
    config:
      pattern: (?i)\b(risk|caution|covered|not[_ ]applicable)\b
  - type: output-matches
    name: mitigation-guidance
    config:
      pattern: (?i)(mitigation|guidance|recommend)
- name: sssc-planner-class-recipe
  prompt: |
    Start an SSSC planning session for this repository. Outline the six phases of the supply chain assessment. Write the planning state under `.copilot-tracking/sssc-plans/` and report the path.
  tags:
    category: agent-behavior
    agent: sssc-planner
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]sssc-plans
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: sssc-planner-disclaimer-startup
  prompt: |
    Use the workspace fixture at `eval-fixtures/sssc-planner-disclaimer-startup.txt` as the startup scenario and required disclaimer text. Start exactly as that fixture requires.
  environment:
    files:
    - src: fixtures/sssc-planner-disclaimer-startup.txt
      dest: eval-fixtures/sssc-planner-disclaimer-startup.txt
  tags:
    category: agent-behavior
    scenario: startup-disclaimer
    agent: sssc-planner
  graders:
  - type: output-matches
    name: caution-disclaimer
    config:
      pattern: (?is)(\[!CAUTION\]|CAUTION).*Disclaimer.*assistive\s+tool\s+only
  - type: output-matches
    name: sssc-review-scope
    config:
      pattern: (?i)SSSC|supply\s+chain|OpenSSF|SLSA|qualified\s+human\s+reviewers
  - type: output-matches
    name: disclaimer-state
    config:
      pattern: (?i)disclaimerShownAt|ISO\s*8601
- name: system-architecture-reviewer-class-recipe
  prompt: |
    Review this proposed architecture: "Single Node.js monolith on one VM, SQLite database, no caching, deployed via SSH." Produce a written assessment with strengths and risks. Write the assessment under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: system-architecture-reviewer
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(architecture|monolith|sqlite|risk|strength|scalability|reliability)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(created|wrote|modified|edited|patched|added)\s+\S{0,40}(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: task-challenger-class-recipe
  prompt: |
    Challenge this task: "Rewrite the entire authentication stack to use a new vendor by Friday." Surface scope risks and produce a structured challenge log with phases. Write the challenge log under `.copilot-tracking/challenges/` and report the path.
  tags:
    category: agent-behavior
    agent: task-challenger
  graders:
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\](challenges|plans)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: task-implementor-edits-source
  prompt: |
    Implement a simple "hello world" function in a new file called `hello.py`.
    Use proper Python conventions and add a docstring. After writing, state the
    ruff or lint command you would run to validate it.
  tags:
    category: agent-behavior
    agent: task-implementor
  graders:
  - type: output-matches
    name: docstring-present
    config:
      pattern: (?i)(docstring|""")
  - type: output-matches
    name: source-edit-present
    config:
      pattern: (?i)(```python|created.*hello\.py|file:.*hello\.py)
  - type: output-matches
    name: lint-invocation
    config:
      pattern: (?i)(ruff|pylint|lint|format|validate)
  - type: output-matches
    name: scope-respect
    config:
      pattern: hello\.py
- name: task-planner-class-recipe
  prompt: |
    Plan the implementation of a "forgot password" feature for a web app. Break it into phases with clear success criteria. Write the plan under `.copilot-tracking/plans/` and report the path.
  tags:
    category: agent-behavior
    agent: task-planner
  graders:
  - type: output-matches
    name: success-criteria
    config:
      pattern: (?i)success\s+criteria|criteria
  - type: output-matches
    name: phase-marker-present
    config:
      pattern: (?im)(^\s*(#{2,3}\s|step\s+\d+|phase\s+\d+|\d+[.)])|\|\s*\d+\s*[—–-]|\bphases?\b)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]plans
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: task-researcher-produces-research-writeup
  prompt: |
    You are operating in an isolated sandbox with no repository checked out and
    no subagents available. Do not attempt to clone, create, or set up a
    repository, and do not delegate to subagents. Using only the notes provided
    below, synthesize a structured research writeup.

    Notes to synthesize (npm scripts that validate markdown in a repository):
    - `npm run lint:md` runs markdownlint across all Markdown files.
    - `npm run lint:md-links` checks Markdown for broken links.
    - `npm run lint:frontmatter` validates YAML frontmatter against schemas.

    Produce a structured writeup covering each script, what it validates, and
    where it is wired into the codebase (the package.json scripts section).
    Write your research file under `.copilot-tracking/research/` and tell me the
    path you wrote it to. Limit the work to one pass.
  tags:
    category: agent-behavior
    agent: task-researcher
  graders:
  - type: output-matches
    name: structured-writeup
    config:
      pattern: (?i)(finding|summary|writeup|section|where|wired|location)
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]research
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(npm|script|lint|markdown|validate)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(created|wrote|modified|edited|patched|added)\s+\S{0,40}(\.cs|\.py|\.ts|\.js|\.go|\.rs|\.java)
      negate: true
- name: task-reviewer-class-recipe
  prompt: |
    Review this implementation summary: "Phase 3 complete. Added forgot-password endpoint, no tests written, no validation run." Produce review findings with severity levels.
  tags:
    category: agent-behavior
    agent: task-reviewer
  graders:
  - type: output-matches
    name: findings-table-present
    config:
      pattern: (?i)(\|.*severity.*\||finding|issue|concern|recommendation)
  - type: output-matches
    name: severity-vocab
    config:
      pattern: (?i)(critical|high|medium|low|info|severity|warning)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: test-streamlit-dashboard-class-recipe
  prompt: |
    Write a pytest test that imports a Streamlit dashboard module `dashboard.py` and asserts a `render()` function exists. Save the test file and report the path.
  tags:
    category: agent-behavior
    agent: test-streamlit-dashboard
  graders:
  - type: output-matches
    name: source-edit-present
    config:
      pattern: (?i)(`|created|modified|edited|wrote|file:)
  - type: output-matches
    name: lint-invocation
    config:
      pattern: (?i)(lint|ruff|pylint|eslint|format|validate|test)
  - type: output-matches
    name: scope-respect
    config:
      pattern: (?i)(test_.*\.py|dashboard)
- name: ux-ui-designer-class-recipe
  prompt: |
    Describe a UX flow for a first-run onboarding wizard with three steps (welcome, choose plan, invite teammates). Produce a written design brief under `.copilot-tracking/` and report the path.
  tags:
    category: agent-behavior
    agent: ux-ui-designer
  graders:
  - type: output-matches
    name: tracking-file-write
    config:
      pattern: (?i)\.copilot-tracking[-/\\]
  - type: output-matches
    name: topic-coverage
    config:
      pattern: (?i)(onboarding|wizard|step|welcome|plan|invite|flow|ux)
  - type: output-matches
    name: no-source-edit
    config:
      pattern: (?i)(\.cs|\.py|\.ts|\.js|package\.json)
      negate: true
- name: vally-test-author-routing-and-append
  prompt: |
    You are the Vally Test Author subagent. The orchestrator hands you this
    input:
      - mode: from-artifact
      - kind: agent
      - files: .github/agents/hve-core/task-planner.agent.md
    Resolve the target eval file via the routing reference, author advisory
    stimuli, and report the target_eval_file, the append-only write behavior,
    and the JSON report path.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: vally-test-author
  graders:
  - type: output-matches
    name: target-eval-file-resolved
    config:
      pattern: (?i)evals/
  - type: output-matches
    name: append-only-write
    config:
      pattern: (?i)(append|append-only|stimuli:)
  - type: output-matches
    name: json-report-path
    config:
      pattern: (?i)logs/vally-test-author-.+\.json
  - type: output-matches
    name: advisory-tag-enforced
    config:
      pattern: (?i)advisory
- name: vally-test-author-dedupe-and-mode
  prompt: |
    You are the Vally Test Author subagent. The orchestrator hands you this
    input:
      - mode: corpus-import
      - path: .copilot-tracking/imports/prompts-corpus.csv
    Detect the active mode from the inputs, deduplicate candidate stimuli, and
    report how duplicates were detected and skipped.
  tags:
    category: agent-behavior
    advisory: "true"
    agent: vally-test-author
  graders:
  - type: output-matches
    name: mode-detection
    config:
      pattern: (?i)corpus-import
  - type: output-matches
    name: dedupe-sha256
    config:
      pattern: (?i)(sha-?256|normaliz|duplicates?_?skipped|dedupe)
