Skip to content

Development

phpbotscout is built on go-tool-base (GTB) and follows the phpboyscout Go conventions. The authoritative instructions for both humans and AI agents live in AGENTS.md at the repository root — read it before making a change.

Spec-driven development

No non-trivial change begins without an approved specification. The governing requirements document is phpbotscout: draft requirements; every feature spec cites the R-* requirement identifiers it implements.

See Feature Specifications for the process and format.

The local quality gate

just ci     # tidy, generate, test, test-race, lint

Run it before opening a merge request. CI should confirm your work, not discover it.

Conventions in brief

  • Library-first. Features land in pkg/ as reusable components before the CLI wires them up.
  • TDD. Tests derive from the spec's public API and error cases, and are written first.
  • BDD for workflows. CLI commands, multi-step user workflows, and service lifecycle changes need Gherkin scenarios in features/.
  • No package-level mocking hooks. They race under t.Parallel(). Inject dependencies through functional options, struct fields, or config.
  • ≥90% coverage on new pkg/ code.
  • Conventional Commits, always scoped. No AI attribution. No @-mentions in anything pushed to a forge.