20a7856820
Replace the full JSON baseline with a simple text file listing capability names per package. Add caps.sh script to generate and check the baseline. Document in CONTRIBUTING.md and AGENTS.md that PRs increasing capabilities are unlikely to be accepted. https://claude.ai/code/session_01HwDXpKevFLhE5EfrR6JrBn
2.9 KiB
2.9 KiB
Agent Guidelines for go-toml
This file provides guidelines for AI agents contributing to go-toml. All agents must follow these rules derived from CONTRIBUTING.md.
Project Overview
go-toml is a TOML library for Go. The goal is to provide an easy-to-use and efficient TOML implementation that gets the job done without getting in the way.
Code Change Rules
Backward Compatibility
- No backward-incompatible changes unless explicitly discussed and approved
- Avoid breaking people's programs unless absolutely necessary
Testing Requirements
- All bug fixes must include regression tests
- All new code must be tested
- Run tests before submitting:
go test -race ./... - Test coverage must not decrease. Check with:
go test -covermode=atomic -coverprofile=coverage.out go tool cover -func=coverage.out - All lines of code touched by changes should be covered by tests
Performance Requirements
- go-toml aims to stay efficient; avoid performance regressions
- Run benchmarks to verify:
go test ./... -bench=. -count=10 - Compare results using benchstat
Documentation
- New features or feature extensions must include documentation
- Documentation lives in README.md and throughout source code
Code Style
- Follow existing code format and structure
- Code must pass
go fmt - Code must pass linting with the same golangci-lint version as CI (see version in
.github/workflows/lint.yml):# Install specific version (check lint.yml for current version) curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin <version> # Run linter golangci-lint run ./...
Commit Messages
- Commit messages must explain why the change is needed
- Keep messages clear and informative even if details are in the PR description
Capabilities
go-toml tracks system-level capabilities using capslock. The baseline is in capability_baseline.txt and CI enforces that it does not grow.
- Do not introduce new capabilities. PRs that increase the capability set (e.g., adding network access, subprocess execution, syscalls) are unlikely to be accepted.
- If a change causes the capabilities check to fail, do not update the baseline to make it pass. Instead, rethink the approach to avoid requiring new capabilities.
- To check locally:
./caps.sh check(requirescapslockinstalled viago install github.com/google/capslock/cmd/capslock@latest)
Pull Request Checklist
Before submitting:
- Tests pass (
go test -race ./...) - No backward-incompatible changes (unless discussed)
- Relevant documentation added/updated
- No performance regression (verify with benchmarks)
- Capabilities are not increasing (
./caps.sh check) - Title is clear and understandable for changelog