|
1 | 1 | # AGENTS.md: A Guide for AI Assistants |
2 | 2 |
|
3 | | -Hello, AI assistant! This file is your guide to understanding and working with the `base` repository. Please read it carefully before making any changes. |
| 3 | +Hello, AI assistant! |
| 4 | +This file is your guide to understanding and working with the `base` |
| 5 | +repository. |
| 6 | +Please read it carefully before making any changes. |
4 | 7 |
|
5 | 8 | ## Core Philosophy |
6 | 9 |
|
7 | | -The `base` repository serves as a high-quality, professional, and language-agnostic template for creating new software projects. Its core principles are: |
| 10 | +The `base` repository serves as a high-quality, professional, and |
| 11 | +language-agnostic template for creating new software projects. |
| 12 | +Its core principles are: |
8 | 13 |
|
9 | | -1. **Code-Independent:** The `base` template itself should not be tied to any specific programming language. The included Docker environment is based on Ubuntu and NGINX to be as generic as possible. |
| 14 | +1. **Code-Independent:** The `base` template itself should not be tied to any |
| 15 | + specific programming language. |
| 16 | + The included Docker environment is based on Ubuntu and NGINX to be as |
| 17 | + generic as possible. |
10 | 18 |
|
11 | | -- **Well-Documented:** Every feature, configuration file, and workflow should have corresponding documentation in the [`/docs`](./docs) directory. The goal is to leave no part of the repository unexplained. |
12 | | -- **Guidance over Prescription:** For files like [`CONTRIBUTING.md`](./CONTRIBUTING.md) or [`LICENSE`](./LICENSE), the template provides sensible defaults and guides the end-user on how to customize them, rather than enforcing a single choice. |
| 19 | +- **Well-Documented:** Every feature, configuration file, and workflow should |
| 20 | + have corresponding documentation in the [`/docs`](./docs) directory. |
| 21 | + The goal is to leave no part of the repository unexplained. |
| 22 | +- **Guidance over Prescription:** For files like |
| 23 | + [`CONTRIBUTING.md`](./CONTRIBUTING.md) or [`LICENSE`](./LICENSE), the |
| 24 | + template provides sensible defaults and guides the end-user on how to |
| 25 | + customize them, rather than enforcing a single choice. |
13 | 26 |
|
14 | | -4. **Automation:** The repository leverages GitHub Actions for CI, deployment, and releases to automate common developer tasks. |
| 27 | +4. **Automation:** The repository leverages GitHub Actions for CI, |
| 28 | + deployment, and releases to automate common developer tasks. |
15 | 29 |
|
16 | 30 | ## Repository Structure |
17 | 31 |
|
18 | | -This is a breakdown of the most important files and directories in this repository: |
| 32 | +This is a breakdown of the most important files and directories in this |
| 33 | +repository: |
19 | 34 |
|
20 | 35 | - **[`.github/`](./.github/)**: Contains all GitHub-specific configurations. |
21 | 36 | - `workflows/`: Houses the GitHub Actions workflows. |
22 | | - - [`ci.yml`](./.github/workflows/ci.yml): Lints configuration files for syntax and style. |
23 | | - - [`pages.yml`](./.github/workflows/pages.yml): Deploys the documentation to GitHub Pages. |
24 | | - - [`release-on-tag.yml`](./.github/workflows/release-on-tag.yml): Automates the creation of GitHub Releases from a git tag. |
25 | | - - [`ISSUE_TEMPLATE/`](./.github/ISSUE_TEMPLATE/) & [`PULL_REQUEST_TEMPLATE.md`](./.github/PULL_REQUEST_TEMPLATE.md): Templates for contributors. |
26 | | - - [`RELEASE_TITLE.txt`](./.github/RELEASE_TITLE.txt) & [`RELEASE_BODY.md`](./.github/RELEASE_BODY.md): User-editable files for customizing release notes. |
27 | | - - [`SECURITY.md`](./.github/SECURITY.md): A template for the user's security policy. |
28 | | - |
29 | | -- **[`docs/`](./docs/)**: Contains all documentation for the project. Each major feature or component has its own corresponding `.md` file in this directory. |
| 37 | + - [`ci.yml`](./.github/workflows/ci.yml): Lints configuration files for |
| 38 | + syntax and style. |
| 39 | + - [`pages.yml`](./.github/workflows/pages.yml): Deploys the documentation |
| 40 | + to GitHub Pages. |
| 41 | + - [`release-on-tag.yml`](./.github/workflows/release-on-tag.yml): |
| 42 | + Automates the creation of GitHub Releases from a git tag. |
| 43 | + - [`ISSUE_TEMPLATE/`](./.github/ISSUE_TEMPLATE/) & |
| 44 | + [`PULL_REQUEST_TEMPLATE.md`](./.github/PULL_REQUEST_TEMPLATE.md): |
| 45 | + Templates for contributors. |
| 46 | + - [`RELEASE_TITLE.txt`](./.github/RELEASE_TITLE.txt) & |
| 47 | + [`RELEASE_BODY.md`](./.github/RELEASE_BODY.md): User-editable files for |
| 48 | + customizing release notes. |
| 49 | + - [`SECURITY.md`](./.github/SECURITY.md): A template for the user's |
| 50 | + security policy. |
| 51 | + |
| 52 | +- **[`docs/`](./docs/)**: Contains all documentation for the project. |
| 53 | + Each major feature or component has its own corresponding `.md` file in this |
| 54 | + directory. |
30 | 55 |
|
31 | 56 | - **[`docker/`](./docker/)**: Contains the development environment. |
32 | | - - [`Dockerfile`](./docker/Dockerfile): Builds a generic Ubuntu + NGINX environment. |
33 | | - - [`nginx.conf`](./docker/nginx.conf) & [`html/index.html`](./docker/html/index.html): A simple web server that acts as a health check. |
| 57 | + - [`Dockerfile`](./docker/Dockerfile): Builds a generic Ubuntu + NGINX |
| 58 | + environment. |
| 59 | + - [`nginx.conf`](./docker/nginx.conf) & |
| 60 | + [`html/index.html`](./docker/html/index.html): A simple web server that |
| 61 | + acts as a health check. |
34 | 62 |
|
35 | | -- **[`.devcontainer/`](./.devcontainer/)**: Configuration for GitHub Codespaces, making it easy to spin up the development environment in the cloud. |
| 63 | +- **[`.devcontainer/`](./.devcontainer/)**: Configuration for GitHub |
| 64 | + Codespaces, making it easy to spin up the development environment in the |
| 65 | + cloud. |
36 | 66 |
|
37 | 67 | - **Root Files**: |
38 | 68 | - [`AGENTS.md`](./AGENTS.md): This file! |
39 | | - - [`README.md`](./README.md): The main entry point, which links to the documentation. |
40 | | - - [`CONTRIBUTING.md`](./CONTRIBUTING.md), [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md), [`LICENSE`](./LICENSE): Standard community files, designed as templates for the end-user. |
41 | | - - [`.gitignore`](./.gitignore), [`.editorconfig`](./.editorconfig), [`.gitattributes`](./.gitattributes), [`.prettierrc`](./.prettierrc): Configuration files for git and code styling. |
42 | | - - [`docker-compose.yml`](./docker-compose.yml): Used to build and run the Docker-based development environment. |
43 | | - - [`render.yaml`](./render.yaml): Infrastructure-as-code for deploying the application to Render.com. |
44 | | - - [`_config.yml`](./_config.yml): Configuration for the Jekyll build for GitHub Pages. |
| 69 | + - [`README.md`](./README.md): The main entry point, which links to the |
| 70 | + documentation. |
| 71 | + - [`CONTRIBUTING.md`](./CONTRIBUTING.md), |
| 72 | + [`CODE_OF_CONDUCT.md`](./CODE_OF_CONDUCT.md), [`LICENSE`](./LICENSE): |
| 73 | + Standard community files, designed as templates for the end-user. |
| 74 | + - [`.gitignore`](./.gitignore), [`.editorconfig`](./.editorconfig), |
| 75 | + [`.gitattributes`](./.gitattributes), [`.prettierrc`](./.prettierrc): |
| 76 | + Configuration files for git and code styling. |
| 77 | + - [`docker-compose.yml`](./docker-compose.yml): Used to build and run the |
| 78 | + Docker-based development environment. |
| 79 | + - [`render.yaml`](./render.yaml): Infrastructure-as-code for deploying the |
| 80 | + application to Render.com. |
| 81 | + - [`_config.yml`](./_config.yml): Configuration for the Jekyll build for |
| 82 | + GitHub Pages. |
45 | 83 |
|
46 | 84 | ## Guidelines for Modification |
47 | 85 |
|
48 | | -- **Maintain the Philosophy:** When adding or changing features, always adhere to the core principles, especially being code-independent. |
49 | | -- **Update Documentation:** If you change a feature, you **must** update its corresponding documentation in the [`docs/`](./docs/) directory. If you add a new feature, you **must** create a new documentation file for it. |
50 | | -- **Verify Your Work:** After creating or modifying a file, use a read-only tool like `read_file` or `ls` to confirm your changes were applied correctly before marking a step as complete. |
| 86 | +- **Maintain the Philosophy:** When adding or changing features, always adhere |
| 87 | + to the core principles, especially being code-independent. |
| 88 | +- **Update Documentation:** If you change a feature, you **must** update its |
| 89 | + corresponding documentation in the [`docs/`](./docs/) directory. |
| 90 | + If you add a new feature, you **must** create a new documentation file for |
| 91 | + it. |
| 92 | +- **Verify Your Work:** After creating or modifying a file, use a read-only |
| 93 | + tool like `read_file` or `ls` to confirm your changes were applied |
| 94 | + correctly before marking a step as complete. |
51 | 95 |
|
52 | 96 | Thank you for your help in maintaining and improving this repository! |
53 | 97 |
|
54 | 98 | ## For Jules: Specific Instructions |
55 | 99 |
|
56 | | -As an advanced AI assistant, you have a unique responsibility to uphold the quality and philosophy of this repository. The following guidelines are tailored to you. |
| 100 | +As an advanced AI assistant, you have a unique responsibility to uphold the |
| 101 | +quality and philosophy of this repository. |
| 102 | +The following guidelines are tailored to you. |
57 | 103 |
|
58 | 104 | ### 1. Onboarding & Planning |
59 | 105 |
|
60 | | -- **Initial Read-Through:** Always start by reading this file ([`AGENTS.md`](./AGENTS.md)) and the main [`README.md`](./README.md) in their entirety. |
61 | | -- **Documentation-First Planning:** Your plan **must** include steps for updating or creating documentation. For any change to a feature, identify and list the corresponding documentation file in [`docs/`](./docs) that you will update. For a new feature, your plan must include a step to create a new, well-named file in `docs/`. |
| 106 | +- **Initial Read-Through:** Always start by reading this file |
| 107 | + ([`AGENTS.md`](./AGENTS.md)) and the main [`README.md`](./README.md) in |
| 108 | + their entirety. |
| 109 | +- **Documentation-First Planning:** Your plan **must** include steps for |
| 110 | + updating or creating documentation. |
| 111 | + For any change to a feature, identify and list the corresponding |
| 112 | + documentation file in [`docs/`](./docs) that you will update. |
| 113 | + For a new feature, your plan must include a step to create a new, |
| 114 | + well-named file in `docs/`. |
62 | 115 |
|
63 | 116 | ### 2. Upholding Core Philosophy |
64 | 117 |
|
65 | | -- **Code-Independence:** If a user asks you to add language-specific code (e.g., Python, JavaScript), you must first ask for clarification. Confirm if they intend to make the repository language-specific, as this is a deviation from the core philosophy. Propose language-agnostic solutions where possible (e.g., shell scripts, Docker configurations, GitHub Actions). |
66 | | -- **Automation:** When adding or modifying workflows in [`.github/workflows/`](./.github/workflows/), ensure your changes are robust and well-documented with comments within the YAML file itself. |
| 118 | +- **Code-Independence:** If a user asks you to add language-specific code |
| 119 | + (e.g., Python, JavaScript), you must first ask for clarification. |
| 120 | + Confirm if they intend to make the repository language-specific, as this is |
| 121 | + a deviation from the core philosophy. |
| 122 | + Propose language-agnostic solutions where possible (e.g., shell scripts, |
| 123 | + Docker configurations, GitHub Actions). |
| 124 | +- **Automation:** When adding or modifying workflows in |
| 125 | + [`.github/workflows/`](./.github/workflows/), ensure your changes are robust |
| 126 | + and well-documented with comments within the YAML file itself. |
67 | 127 |
|
68 | 128 | ### 3. Verification & Testing |
69 | 129 |
|
70 | | -- **Use the CI:** This repository has a [`ci.yml`](./.github/workflows/ci.yml) workflow that lints common configuration files. If you modify files like [`docker-compose.yml`](./docker-compose.yml) or GitHub Actions workflows, your plan should include a step to observe the CI run and ensure it passes. |
71 | | -- **Targeted Testing:** Since the repository is language-agnostic, your testing approach must be specific to the changes you make. |
72 | | - - **Docker Changes:** If you modify [`docker/Dockerfile`](./docker/Dockerfile) or [`docker-compose.yml`](./docker-compose.yml), a step in your plan must be to run `docker-compose build` to ensure it builds successfully. |
73 | | - - **GitHub Actions:** If you change a workflow file, your verification should involve checking the "Actions" tab on the repository to confirm the run was successful. |
| 130 | +- **Use the CI:** This repository has a |
| 131 | + [`ci.yml`](./.github/workflows/ci.yml) workflow that lints common |
| 132 | + configuration files. |
| 133 | + If you modify files like [`docker-compose.yml`](./docker-compose.yml) or |
| 134 | + GitHub Actions workflows, your plan should include a step to observe the CI |
| 135 | + run and ensure it passes. |
| 136 | +- **Targeted Testing:** Since the repository is language-agnostic, your |
| 137 | + testing approach must be specific to the changes you make. |
| 138 | + - **Docker Changes:** If you modify [`docker/Dockerfile`](./docker/Dockerfile) |
| 139 | + or [`docker-compose.yml`](./docker-compose.yml), a step in your plan must |
| 140 | + be to run `docker-compose build` to ensure it builds successfully. |
| 141 | + - **GitHub Actions:** If you change a workflow file, your verification |
| 142 | + should involve checking the "Actions" tab on the repository to confirm the |
| 143 | + run was successful. |
74 | 144 |
|
75 | 145 | ### 4. Submitting Your Work |
76 | 146 |
|
77 | | -- **Run Prettier:** Before requesting a review, run `npx prettier --write .` to ensure all files are formatted correctly. |
78 | | -- **Mandatory Code Review:** You **must** call `request_code_review()` before submitting any change. |
79 | | -- **Descriptive Commit Messages:** Your commit messages should be clear and follow conventions. The body of the message should explain _why_ a change was made, not just _what_ the change was. |
| 147 | +- **Run Prettier:** Before requesting a review, run `npx prettier --write .` |
| 148 | + to ensure all files are formatted correctly. |
| 149 | +- **Mandatory Code Review:** You **must** call `request_code_review()` before |
| 150 | + submitting any change. |
| 151 | +- **Descriptive Commit Messages:** Your commit messages should be clear and |
| 152 | + follow conventions. |
| 153 | + The body of the message should explain _why_ a change was made, not just |
| 154 | + _what_ the change was. |
0 commit comments