mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
Requested by @majdyz ### Why / What / How **Why:** PR descriptions currently explain the *what* and *how* but not the *why*. Without motivation context, reviewers can't judge whether an approach fits the problem. Nick flagged this in standup: "The PR descriptions you use are explaining the what not the why." **What:** Adds a consistent Why / What / How structure to PR descriptions across the entire workflow — template, CLAUDE.md guidance, and all PR-related skills (`/pr-review`, `/pr-test`, `/pr-address`). **How:** - **`.github/PULL_REQUEST_TEMPLATE.md`**: Replaced the old vague `Changes` heading with a single `Why / What / How` section with guiding comments - **`autogpt_platform/CLAUDE.md`**: Added bullet under "Creating Pull Requests" requiring the Why/What/How structure - **`.claude/skills/pr-review/SKILL.md`**: Added "Read the PR description" step before reading the diff, and "Description quality" to the review checklist - **`.claude/skills/pr-test/SKILL.md`**: Updated Step 1 to read the PR description and understand Why/What/How before testing - **`.claude/skills/pr-address/SKILL.md`**: Added "Read the PR description" step before fetching comments ## Test plan - [x] All five files reviewed for correct formatting and consistency --- Co-authored-by: Zamil Majdy (@majdyz) <zamil.majdy@agpt.co>
5.0 KiB
5.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Repository Overview
AutoGPT Platform is a monorepo containing:
- Backend (
backend): Python FastAPI server with async support - Frontend (
frontend): Next.js React application - Shared Libraries (
autogpt_libs): Common Python utilities
Component Documentation
- Backend: See @backend/CLAUDE.md for backend-specific commands, architecture, and development tasks
- Frontend: See @frontend/CLAUDE.md for frontend-specific commands, architecture, and development patterns
Key Concepts
- Agent Graphs: Workflow definitions stored as JSON, executed by the backend
- Blocks: Reusable components in
backend/backend/blocks/that perform specific tasks - Integrations: OAuth and API connections stored per user
- Store: Marketplace for sharing agent templates
- Virus Scanning: ClamAV integration for file upload security
Environment Configuration
Configuration Files
- Backend:
backend/.env.default(defaults) →backend/.env(user overrides) - Frontend:
frontend/.env.default(defaults) →frontend/.env(user overrides) - Platform:
.env.default(Supabase/shared defaults) →.env(user overrides)
Docker Environment Loading Order
.env.defaultfiles provide base configuration (tracked in git).envfiles provide user-specific overrides (gitignored)- Docker Compose
environment:sections provide service-specific overrides - Shell environment variables have highest precedence
Key Points
- All services use hardcoded defaults in docker-compose files (no
${VARIABLE}substitutions) - The
env_filedirective loads variables INTO containers at runtime - Backend/Frontend services use YAML anchors for consistent configuration
- Supabase services (
db/docker/docker-compose.yml) follow the same pattern
Branching Strategy
devis the main development branch. All PRs should targetdev.masteris the production branch. Only used for production releases.
Creating Pull Requests
- Create the PR against the
devbranch of the repository. - Ensure the branch name is descriptive (e.g.,
feature/add-new-block) - Use conventional commit messages (see below)
- Structure the PR description with Why / What / How — Why: the motivation (what problem it solves, what's broken/missing without it); What: high-level summary of changes; How: approach, key implementation details, or architecture decisions. Reviewers need all three to judge whether the approach fits the problem.
- Fill out the .github/PULL_REQUEST_TEMPLATE.md template as the PR description
- Always use
--body-fileto pass PR body — avoids shell interpretation of backticks and special characters:PR_BODY=$(mktemp) cat > "$PR_BODY" << 'PREOF' ## Summary - use `backticks` freely here PREOF gh pr create --title "..." --body-file "$PR_BODY" --base dev rm "$PR_BODY" - Run the github pre-commit hooks to ensure code quality.
Test-Driven Development (TDD)
When fixing a bug or adding a feature, follow a test-first approach:
- Write a failing test first — create a test that reproduces the bug or validates the new behavior, marked with
@pytest.mark.xfail(backend) or.fixme(Playwright). Run it to confirm it fails for the right reason. - Implement the fix/feature — write the minimal code to make the test pass.
- Remove the xfail marker — once the test passes, remove the
xfail/.fixmeannotation and run the full test suite to confirm nothing else broke.
This ensures every change is covered by a test and that the test actually validates the intended behavior.
Reviewing/Revising Pull Requests
Use /pr-review to review a PR or /pr-address to address comments.
When fetching comments manually:
gh api repos/Significant-Gravitas/AutoGPT/pulls/{N}/reviews --paginate— top-level reviewsgh api repos/Significant-Gravitas/AutoGPT/pulls/{N}/comments --paginate— inline review comments (always paginate to avoid missing comments beyond page 1)gh api repos/Significant-Gravitas/AutoGPT/issues/{N}/comments— PR conversation comments
Conventional Commits
Use this format for commit messages and Pull Request titles:
Conventional Commit Types:
feat: Introduces a new feature to the codebasefix: Patches a bug in the codebaserefactor: Code change that neither fixes a bug nor adds a feature; also applies to removing featuresci: Changes to CI configurationdocs: Documentation-only changesdx: Improvements to the developer experience
Recommended Base Scopes:
platform: Changes affecting both frontend and backendfrontendbackendinfrablocks: Modifications/additions of individual blocks
Subscope Examples:
backend/executorbackend/dbfrontend/builder(includes changes to the block UI component)infra/prod
Use these scopes and subscopes for clarity and consistency in commit messages.