# dxw Development Standards (GEMINI.md) This document provides project-level instructions and context for Gemini CLI agents, ensuring adherence to dxw's development standards and practices. ## Core Principles - **Secure by Design**: Prioritize security at every stage. Follow OWASP Top Ten guidelines. - **High Quality**: Deliver stable, readable, and well-tested code. - **Transparency**: Use clear commit messages, detailed PRs, and document architectural decisions. ## Workflow & Task Management - **Prerequisites**: Ensure you have a clear understanding of requirements and acceptance criteria before starting work. - **Branching**: - Always create a new branch for each task. - Naming convention: `[ticket-number]/[short-description]` or `[type]/[ticket-number]-[short-description]` (e.g., `123/add-login-validation`). - Avoid using personal names in branch identifiers. - **TDD (Test-Driven Development)**: - Develop code and tests concurrently. - Aim for full test coverage. - Ensure the test suite passes before every commit. ## Version Control (Git) - **Atomic Commits**: Make small, focused, and self-contained commits. - **Commit Messages**: - Use the imperative mood (e.g., "Add validation" not "Added validation"). - Explain *what*, *why*, and *how*. - Reference ticket numbers if available. - **History Management**: - Regularly rebase on the main development branch. - Tidy up commit history (e.g., via interactive rebase) before requesting a code review. - Prevent accidental commitment of sensitive data (API keys, credentials). ## Code Review & Pull Requests - **Mandatory Review**: All production code changes require review by at least two people (author + reviewer). - **PR Content**: - Link to the relevant ticket. - Describe the problem and the solution. - Highlight any specific difficulties or trade-offs. - Include screenshots for UI changes. - Clarify met acceptance criteria and any follow-up work. ## Deployment & CI/CD - **Continuous Delivery**: Automate builds, tests, and deployments (e.g., via GitHub Actions). - **Versioning**: - Application code: No explicit versioning required. - Reusable components (libraries, gems, plugins): Must follow [Semantic Versioning](https://semver.org/). ## Documentation - **Changelog**: Maintain a `CHANGELOG.md` in the repository root for versioned components, following [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **ADRs**: Document significant architectural decisions using Architectural Decision Records (ADRs). --- ## Agent-Specific Instructions When working in this repository, you **must**: 1. **Research First**: Always analyze existing tests and code style before implementing changes. 2. **Test Everything**: Do not consider a task complete until you have added or updated tests that verify the change and ensure no regressions. 3. **Commit Atomically**: Do not bundle unrelated changes. Use `git add -p` logic to stage only what is necessary for a specific commit. 4. **Rebase Frequently**: Before proposing a change, ensure your branch is rebased on the latest `main`. 5. **Detailed Explanations**: When explaining your work, focus on the "why" and "how" behind your technical decisions. 6. **Security Audit**: Proactively check for OWASP Top Ten vulnerabilities in any code you write or modify. 7. **No Secrets**: Never output or commit anything that looks like a secret or credential.