8.4 KiB
AGENTS
I created this AGENTS.md to help agentic coding assistants work in this repository. It contains
- Build / lint / test commands (including how to run a single test) and
- Code style guidelines and conventions to follow when editing code here.
Repository state
- This repository contains shell scripts for Linux Mint XFCE post-installation setup.
- Main scripts are located in
post_installation_script/directory. - Testing infrastructure is in
post_installation_script_test/(Docker/Podman test containers). - No build system, package.json, Makefile, or language-specific project files were detected.
- There are no Cursor rules or Copilot instruction files in the repo (checked paths below).
.cursor/rules/: not found.cursorrules: not found.github/copilot-instructions.md: not found
If you add new code (Go, Python, Node, Rust, Java, etc.), follow the per-ecosystem quick commands below.
- Build / Lint / Test commands
-
General notes
- Run commands from the repository root unless a submodule or service has its own README.
- Prefer local, repo-scoped toolchains (venv, node_modules/.bin, go modules, cargo) to avoid global state.
-
Shell scripts
- Quick check:
shellcheck scripts/*.sh(installshellcheckfirst). - Run an individual script:
bash path/to/script.shor./script.sh(ensure executable bit set). - Syntax check:
bash -n path/to/script.sh - Trace execution:
bash -x path/to/script.sh(shows each command as it runs)
- Quick check:
-
Testing shell scripts
- See
post_installation_script_test/README.mdfor detailed container-based testing instructions. - Quick start:
- Build image:
./post_installation_script_test/01_create_image.sh - Start container:
./post_installation_script_test/02_start_container_with_image.sh
- Build image:
- See
-
Python (if added)
- Install:
python -m venv .venv && source .venv/bin/activate && pip install -r requirements.txt - Lint:
ruff .orflake8 . - Format:
black . - Test all:
pytest -q - Run a single test:
pytest path/to/test_file.py::TestClass::test_method -q
- Install:
-
Node / JavaScript / TypeScript (if added)
- Install:
npm ciorpnpm install/yarn install - Lint:
npm run lint(ornpx eslint .) - Format:
npx prettier --write . - Test all:
npm test(ornpx vitest/npx jest) - Run a single test:
- Jest:
npx jest path/to/file.test.js -t "test name regex" - Vitest:
npx vitest run path/to/file.spec.ts -t "test name"
- Jest:
- Install:
-
Go (if added)
- Build:
go build ./... - Lint:
golangci-lint run(if configured) - Test all:
go test ./... - Run a single test:
go test ./pkg/name -run TestFunctionName
- Build:
-
Rust (if added)
- Build:
cargo build - Lint:
cargo clippy - Test all:
cargo test - Run a single test:
cargo test test_name -- --exact
- Build:
-
Java / Maven (if added)
- Build:
mvn -DskipTests package - Lint/format: use
spotless/checkstyleif configured - Test all:
mvn test - Run a single test:
mvn -Dtest=ClassName#methodName test
- Build:
-
.NET (if added)
- Build:
dotnet build - Test all:
dotnet test - Run a single test:
dotnet test --filter FullyQualifiedName~Namespace.ClassName.MethodName
- Build:
-
CI / Automation
- If you add GitHub Actions, keep workflows idempotent and cache dependencies carefully.
- Avoid secrets in workflows; read sensitive values from repository/organization secrets.
- Code style guidelines
The guidance below is intentionally general and focuses on consistency, readability and safety so agentic tools can make changes predictably across multiple languages.
-
Formatting
- Use an automated formatter for the language (Black for Python, Prettier for JS/TS, gofmt/gofmt -s for Go, rustfmt for Rust). Commit formatted code only.
- Use an editorconfig file for basic whitespace/indentation rules when possible.
-
Imports / dependencies
- Keep imports explicit and minimal: import only what you use.
- Group imports in a logical order (language default + third-party + local project). Leave a blank line between groups.
- Don’t commit unused dependencies; remove them from lock files / manifests and run the linter.
-
Types / typing
- Prefer explicit types where the language supports them (TypeScript types, Python type hints, Go static types).
- Add types for public interfaces and complex logic; internal simple helper functions may rely on inference.
-
Naming conventions
- Use clear, descriptive names. Prefer
calculate_total,prepare_connection,user_idstyle for snake_case languages. - For camelCase languages (JS/TS):
calculateTotal,prepareConnection. - Types and classes: use PascalCase/UpperCamelCase:
UserService,HttpClient. - Constants: use UPPER_SNAKE_CASE or language-specific constant conventions.
- Use clear, descriptive names. Prefer
-
Functions and modules
- Keep functions small (ideally < 40 lines) and single-responsibility.
- Prefer pure functions where possible; keep side effects explicit and isolated.
- Organize modules by feature/domain, not solely by type (avoid monolithic god-modules).
-
Error handling
- Fail fast and return/raise errors with context (message + cause) rather than swallowing them.
- Avoid logging raw errors in library code; return errors to callers and let the application layer decide logging.
- Use typed error types when the language supports it (Go error types, custom exceptions in Python/JS).
- Clean up resources with
finally/deferequivalents to avoid leaks.
-
Tests
- Prefer small, deterministic unit tests. Mock external IO and network where reasonable.
- Use explicit fixtures and avoid implicit global state between tests.
- Name tests with the behavior they assert:
test_calculate_total_with_discountsorshouldReturn400WhenMissingField.
-
Logging and observability
- Use structured logging where available (JSON structured logs for services).
- Avoid printing raw stack traces to stdout in production code; include them at debug level.
-
Security and secrets
- Never commit secrets, API keys, or credentials. Use environment variables and vaults.
- Validate and sanitize external input at the boundaries of the system.
-
Performance
- Measure before optimizing. Prefer clarity over micro-optimizations unless a hotspot is identified.
- Code review / commit guidance for agents
- Make small, focused commits and include a one-line summary plus a short description of the why.
- When changing behavior, add or update tests that verify the new/changed behavior.
- If you reformat files automatically, include the formatter command in the commit message to make CI reproduction easy.
- Repo housekeeping checks (recommended for agents)
- When adding a new language or framework, add an entry to this file with the exact commands required to build/test.
- Add CI workflows to run lint + tests on PRs and enable branch protection rules if this becomes a shared repo.
- Session storage: Store session logs and working notes in
.agents/sessions/folder for future reference. Use descriptive filenames (e.g.,session-<date>-<topic>.md).
- Cursor / Copilot rules
- Cursor rules: none present at
.cursor/rules/or.cursorrulesin this repository. - GitHub Copilot instructions: none present at
.github/copilot-instructions.md.
If you add any of these files, update this document and include the exact file path and relevant sections for agents to follow.
Quick checklist for an agent making changes
- Run local linter/formatter configured for the language before opening a PR.
- Run the test suite and the single-test command for any tests you added/changed.
- Do not add secrets to the tree; use placeholders and document required environment variables.
Next steps (recommended)
- Add a minimal
Makefileorpackage.jsonscripts for common tasks so agents can runmake test/npm test. - If the project will contain multiple services, add per-service README files and CI workflows.
- Add EditorConfig + language-specific formatter configs (pyproject.toml, .prettierrc, rustfmt.toml) to lock formatting rules.
Files referenced
- Root
README.md post_installation_script/README.md- main script usagepost_installation_script_test/README.md- testing instructions.cursor/rules/(not present).cursorrules(not present).github/copilot-instructions.md(not present)
If anything in this file needs to be stricter or you want another style (for example a fully opinionated TS style), say which language or style and I will update AGENTS.md accordingly.