goose/.github/copilot-instructions.md
Angie Jones 6ce41cb21c
Some checks are pending
Canary / Prepare Version (push) Waiting to run
Canary / build-cli (push) Blocked by required conditions
Canary / Upload Install Script (push) Blocked by required conditions
Canary / bundle-desktop (push) Blocked by required conditions
Canary / bundle-desktop-linux (push) Blocked by required conditions
Canary / bundle-desktop-windows (push) Blocked by required conditions
Canary / Release (push) Blocked by required conditions
CI / changes (push) Waiting to run
CI / Check Rust Code Format (push) Blocked by required conditions
CI / Build and Test Rust Project (push) Blocked by required conditions
CI / Test and Lint Electron Desktop App (push) Blocked by required conditions
Live Provider Tests / check-fork (push) Waiting to run
Live Provider Tests / changes (push) Blocked by required conditions
Live Provider Tests / Build Release Binary (push) Blocked by required conditions
Live Provider Tests / Smoke Tests (push) Blocked by required conditions
Documentation Site Preview / deploy (push) Waiting to run
Publish Docker Image / docker (push) Waiting to run
silence copilot on minor text issues (#5665)
2025-11-10 19:47:36 -06:00

3.1 KiB

GitHub Copilot Code Review Instructions

Review Philosophy

  • Only comment when you have HIGH CONFIDENCE (>80%) that an issue exists
  • Be concise: one sentence per comment when possible
  • Focus on actionable feedback, not observations
  • Skip comments on style that clippy/rustfmt will catch
  • When reviewing text, only comment on clarity issues if the text is genuinely confusing or could lead to errors. "Could be clearer" is not the same as "is confusing" - stay silent unless HIGH confidence it will cause problems

Priority Areas (Review These)

Security & Safety

  • Unsafe code blocks without justification
  • Command injection risks (shell commands, user input)
  • Path traversal vulnerabilities
  • Credential exposure or hardcoded secrets
  • Missing input validation on external data
  • Improper error handling that could leak sensitive info

Correctness Issues

  • Logic errors that could cause panics or incorrect behavior
  • Race conditions in async code
  • Resource leaks (files, connections, memory)
  • Off-by-one errors or boundary conditions
  • Incorrect error propagation (using unwrap() inappropriately)
  • Optional types that don't need to be optional
  • Booleans that should default to false but are set as optional
  • Error context that doesn't add useful information (e.g., .context("Failed to do X") when error already says it failed)
  • Overly defensive code that adds unnecessary checks
  • Unnecessary comments that just restate what the code already shows (remove them)

Architecture & Patterns

  • Code that violates existing patterns in the codebase
  • Missing error handling (should use anyhow::Result)
  • Async/await misuse or blocking operations in async contexts
  • Improper trait implementations

Skip These (Low Value)

  • Style issues (rustfmt handles this)
  • Clippy warnings (CI catches these)
  • Minor naming suggestions unless truly confusing
  • Obvious code that doesn't need explanation
  • Suggestions to add comments for self-documenting code
  • Refactoring suggestions unless there's a clear bug or maintainability issue
  • Listing multiple potential issues in one comment (choose the single most critical issue)
  • Suggestions to add logging statements, unless for errors or security events (the codebase needs less logging, not more)

Response Format

When you identify an issue:

  1. State the problem (1 sentence)
  2. Why it matters (1 sentence, only if not obvious)
  3. Suggested fix (code snippet or specific action)

Example:

This could panic if the vector is empty. Consider using `.get(0)` or add a length check.

Project-Specific Context

  • This is a Rust project using cargo workspaces
  • Core crates: goose (agent logic), goose-cli (CLI), goose-server (backend), goose-mcp (MCP servers)
  • Error handling: Use anyhow::Result, not unwrap() in production code
  • Async runtime: tokio
  • All code must pass: cargo fmt, ./scripts/clippy-lint.sh, and tests
  • See HOWTOAI.md for AI-assisted code standards
  • MCP protocol implementations require extra scrutiny

When to Stay Silent

If you're uncertain whether something is an issue, don't comment. False positives create noise and reduce trust in the review process.