Added comprehensive documentation for agentic AI assistants, including build/test/lint commands, code style guidelines per language (Rust, Go, Python, R, Bash), naming conventions, error handling strategies, documentation practices, and integration rules for Cursor/Copilot. Also includes hooks configuration and MCP server setup details.
4.2 KiB
4.2 KiB
AGENTS.md
This file documents the project's coding standards, build/test/lint commands, and operational guidelines for agentic AI assistants.
Build, Lint, and Test Commands
- Rust:
cargo build --all-targets && cargo test --all-targets - Go:
go build ./... && go vet ./... && go test ./... - Python:
python -m pytest tests/(single test:python -m pytest tests/test_module.py::test_function) - R:
Rscript -e "devtools::test()"(single test:Rscript -e "testthat::test_file('tests/testthat/test_module.R')") - Bash: Run tests directly or use
bash -n script.shfor syntax check
For all languages: run linters before committing (see hooks in .claude/hooks/)
Code Style Guidelines
General Principles
- Follow language-specific idioms and conventions
- Prioritize readability over cleverness
- Use descriptive names for variables, functions, and types
- Keep functions small and focused on a single responsibility
Imports and Dependencies
- Rust: Use
usestatements at top of file; group std, external crates, and local modules - Go: Import blocks organized: standard library, then external packages, then local packages
- Python: Standard library imports first, then third-party, then local imports
- R: Attach packages with
library()at top of script; usepkg::function()for occasional calls - Bash: Source local modules with absolute paths or relative from script location
Naming Conventions
- Rust: Types/CamelCase, functions/snake_case, constants/SCREAMING_SNAKE_CASE
- Go: Exported names start with uppercase, unexported with lowercase; use CamelCase for acronyms
- Python: Classes/CamelCase, functions/variables/snake_case; use _private for internal
- R: Functions/lowercase_with_underscores; avoid naming conflicts with base R functions
- Bash: Functions/snake_case; variables lowercase; constants UPPERCASE
Error Handling
- Rust: Use
Result<T, E>and?operator; define custom error types for libraries - Go: Return
(result, error)tuple; handle errors immediately after function call - Python: Raise specific exception types; catch only what you can handle meaningfully
- R: Use
stop()for errors,warning()for warnings; consider tryCatch for recovery - Bash: Check return codes with
$?; useset -efor strict error handling
Types and Documentation
- Rust: Specify all types explicitly; use
cargo docfor documentation - Go: Document exported functions with comments; use type aliases for clarity
- Python: Use type hints (PEP 484); docstrings with Google or NumPy style
- R: Use roxygen2 for function documentation; document all exported functions
- Bash: Comment complex logic; use
set -xfor debugging trace
Cursor Rules
- Run linters after any file write (see
.claude/hooks/post-write-lint.sh) - For Rust/Go projects, run
cargo clippyorgo vetbefore committing - Verify tests pass after changes:
cargo test,go test,pytest - When modifying multiple files, run full test suite before finalizing
Copilot Rules
- Delegation: Use Qwen3-Coder for atomic tasks via MCP server at port 1248
- Code review: Invoke code-reviewer agent for PRs and significant changes
- Planning: Use task-planner to break complex tasks into atomic steps
- Always verify agent outputs before committing or pushing
Hooks and Automation
- post-write-lint.sh: Runs linters after file writes
- subagent-stop-log.sh: Logs subagent completion and exit codes
- pre-bash-guard.sh: Validates bash scripts before execution
MCP Server Configuration
- Endpoint:
http://localhost:1248 - Model:
qwen/qwen3-coder-next - Local agent loop:
.claude/mcp/qwen3-mcp/agent_lm.py - Server script:
.claude/mcp/qwen3-mcp/server.py
Project Structure
.claude/agents/- Agent definitions (qwen3-worker, code-reviewer, task-planner).claude/skills/- Domain-specific skills and conventions.claude/hooks/- Git hooks for automated checks.claude/mcp/qwen3-mcp/- MCP server and agent integration
Testing Strategy
- Run tests after any code change
- For single test execution, use language-specific commands above
- CI/CD should run full test suite on every push
- Code coverage targets: 80% minimum for production code