This file provides guidance for AI agents (e.g., GitHub Copilot, MCP, or LLM-based assistants) interacting with the Azure SDK for Go repository.
For a comprehensive overview of this repository, see the README.md.
- Main README - Getting started, package information, and repository structure
- Contributing Guide - Contribution guidelines and PR requirements
- Developer Setup - Environment setup for SDK development
- Release Documentation - Package release process
- Copilot Instructions - Copilot-specific guidance
The SDK is compatible with the two most recent major Go releases, following Go's official support policy.
AI agents can assist with the following activities:
- Reading and understanding code: Browse SDK packages, understand APIs, and explain functionality
- Code suggestions: Propose improvements, bug fixes, or new features following Azure Go SDK Guidelines
- Testing: Write or update unit tests using
github.com/stretchr/testify/require - Examples: Create example code in
example*_test.gofiles following the Go examples guidelines
- README updates: Improve module READMEs and documentation
- Code comments: Add or improve GoDoc comments following documentation style
- CHANGELOG updates: Document changes in CHANGELOG.md files
- Issue triage: Review issues, suggest labels, identify duplicates
- PR review assistance: Analyze PRs, suggest improvements, check for guideline compliance
- Question answering: Help developers with SDK usage questions
AI agents should NOT perform the following actions without human approval:
- Triggering releases: Only humans should use
CheckPackageReleaseReadinessandReleasePackageMCP tools - Modifying CI/CD pipelines: Changes to
ci.yml, Azure Pipelines configurations, or workflow files require careful review - Approving releases: Release stage approvals in pipelines must be done by authorized humans
- Regenerating SDK code: Most packages in
sdk/are generated from Azure API specs using TypeSpec and should not be manually modified - TypeSpec changes: SDK generation from specifications requires specific tools and workflows (see code generation docs)
- CODEOWNERS modifications: Changes require following CODEOWNERS validation workflow
- Security issues: Must be reported privately to secure@microsoft.com, not in public issues
- License changes: No modifications to licensing without explicit approval
# Navigate to the SDK module you want to work with
cd sdk/azcore # or any other module
# Build the module
go build ./...
# Run tests
go test ./...For modules with tsp-location.yaml:
# Install prerequisites
npm install -g @typespec/compiler
npm install -g @azure-tools/typespec-client-generator-cli
# Navigate to the module directory
cd sdk/<service>/<module>
# Regenerate the SDK from TypeSpec
tsp-client updateSee TypeSpec location instructions for details.
For detailed contribution guidelines, see CONTRIBUTING.md.
Key steps:
- Fork and clone the repository
- Create a feature branch from
main - Make changes following the Go SDK Guidelines
- Add tests to ensure CI catches future regressions
- Update documentation (README, CHANGELOG, examples)
- Run tests locally to verify changes
- Submit a PR with a descriptive title and reference to related issues
- Address review feedback in additional commits
For comprehensive PR requirements, see the Pull Requests section in CONTRIBUTING.md.
Agents can help verify PRs meet key requirements:
- Code follows Go SDK Guidelines
- Tests are added/updated with proper assertions
- CHANGELOG.md is updated with changes
- Examples are provided for new APIs
- All CI checks pass
Most SDK modules follow this structure:
sdk/<service>/<module>/
├── ci.yml # CI/CD pipeline configuration
├── CHANGELOG.md # Version history and changes
├── README.md # Module documentation
├── go.mod # Go module dependencies
├── *_client.go # Client implementation
├── models.go # Data models
├── options.go # Client options
├── responses.go # Response types
├── *_test.go # Unit tests
├── example*_test.go # Example code
└── testdata/ # Test fixtures
- Use
github.com/stretchr/testify/requirefor assertions - Environment variables for live testing go in
.envfiles at module root - Look for
recording.Getenv()oros.Getenv()calls to find required environment variables - See Go tests guidelines
- go.mod should only have direct references to:
- Azure SDK modules (
github.com/Azure/azure-sdk-for-go/sdk/...) golang.org/x/...modules
- Azure SDK modules (
- Exception:
github.com/stretchr/testifycan be an indirect dependency - See Go mod standards
- Acronyms in exported names should be uppercased (e.g.,
UserID, notUserId) - All Go files should have a copyright header
- Error handling should use descriptive messages
- See Go code guidelines
- Issues: File issues via GitHub Issues
- Stack Overflow: Ask questions with tags
azureandgo - Slack: Chat in #Azure SDK channel on Gophers Slack
- Teams: Contact the Go team via "Language - Go" channel under "Azure SDK" team
- Use CODEOWNERS file to find module owners
- Owners may be listed for parent folders due to wildcards
- Service owners handle issues; source owners handle PRs
- Read before writing: Always review existing code and documentation before suggesting changes
- Follow patterns: Match the style and patterns used in the repository
- Test assertions: Use the same testing patterns as existing tests
- Small changes: Prefer small, focused changes over large refactorings
- Explain decisions: Provide context for why changes are being suggested
- Reference guidelines: Link to relevant guidelines when suggesting changes
- Verify compatibility: Ensure changes don't break backward compatibility without explicit approval
When assisting with code reviews:
- Check compliance with Azure Go SDK Guidelines
- Verify tests are comprehensive and use proper assertions
- Ensure documentation is complete and accurate
- Check for potential breaking changes
- Verify CHANGELOG entries describe the changes clearly
- Look for security concerns or potential issues
When working with tests:
- Run tests locally before suggesting they're complete
- Check for required environment variables in
.envfiles - Use
requirepackage for assertions, notassert - Ensure tests are repeatable and don't depend on external state
- Add error messages to assertions to help debugging
- Azure Go SDK Guidelines - Primary reference for SDK development
- API Design Guidelines - API design principles
- Developer Setup - Machine setup for development
- Release Guidelines - Package release process
- Migration Guide - Migrating from track 1 to track 2
- Breaking Changes Guide - Handling breaking changes
- Code Generation - SDK generation from specs
- Engineering System - Build and CI/CD systems
This AGENTS.md file follows the emerging AGENTS.md standard to provide consistent AI agent guidance across Azure SDK repositories.
Maintainers: Azure SDK Go Team