agentme 0.7.3 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.xdrs/agentme/edrs/application/003-javascript-project-tooling.md +1 -1
- package/.xdrs/agentme/edrs/application/010-golang-project-tooling.md +1 -1
- package/.xdrs/agentme/edrs/devops/005-monorepo-structure.md +11 -11
- package/.xdrs/agentme/edrs/devops/006-github-pipelines.md +9 -3
- package/.xdrs/agentme/edrs/devops/008-common-targets.md +7 -7
- package/.xdrs/agentme/edrs/principles/002-coding-best-practices.md +5 -5
- package/.xdrs/agentme/edrs/principles/004-unit-test-requirements.md +5 -5
- package/.xdrs/agentme/edrs/principles/007-project-quality-standards.md +7 -7
- package/.xdrs/agentme/edrs/principles/009-error-handling.md +5 -5
- package/.xdrs/agentme/edrs/principles/016-cross-language-module-structure.md +8 -8
- package/.xdrs/agentme/index.md +21 -0
- package/.xdrs/index.md +2 -3
- package/package.json +2 -2
|
@@ -116,7 +116,7 @@ Benchmarks belong in `lib/tests_benchmark/` when they require dedicated harnesse
|
|
|
116
116
|
|
|
117
117
|
The examples folder MUST exist for any libraries and utilities that are published or have more than 500 lines of code
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
## References
|
|
120
120
|
|
|
121
121
|
- [001-create-javascript-project](skills/001-create-javascript-project/SKILL.md) — scaffolds a new project following this structure
|
|
122
122
|
|
|
@@ -151,6 +151,6 @@ Use `github.com/sirupsen/logrus` for structured logging. Set the log level from
|
|
|
151
151
|
|
|
152
152
|
Use the standard library `flag` package for CLI flags. Each `cli/<feature>` package defines its own `FlagSet`, parses it from `os.Args[2:]`, and calls the corresponding domain function.
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
## References
|
|
155
155
|
|
|
156
156
|
- [003-create-golang-project](skills/003-create-golang-project/SKILL.md) — scaffolds a new Go project following this structure
|
|
@@ -18,9 +18,9 @@ What monorepo structure, naming conventions, tooling, and build standards should
|
|
|
18
18
|
For step-by-step scaffolding instructions see [skill 002-monorepo-setup](skills/002-monorepo-setup/SKILL.md).
|
|
19
19
|
Module folder responsibilities, artifact locations, and test-folder conventions follow [agentme-edr-016](../principles/016-cross-language-module-structure.md).
|
|
20
20
|
|
|
21
|
-
###
|
|
21
|
+
### Implementation Details
|
|
22
22
|
|
|
23
|
-
####
|
|
23
|
+
#### 01-top-level-directory-layout
|
|
24
24
|
|
|
25
25
|
```
|
|
26
26
|
/
|
|
@@ -48,7 +48,7 @@ Module folder responsibilities, artifact locations, and test-folder conventions
|
|
|
48
48
|
└── .mise.toml # Mise tool version configuration
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
####
|
|
51
|
+
#### 02-application-folders
|
|
52
52
|
|
|
53
53
|
- Represent a cohesive unit with its own lifecycle (e.g., `mymobileapp`, `graph-visualizer`).
|
|
54
54
|
- **MUST** depend only on resources in `/shared/`. Direct cross-application dependencies are forbidden; use published artifacts (container images, published libraries) instead.
|
|
@@ -57,7 +57,7 @@ Module folder responsibilities, artifact locations, and test-folder conventions
|
|
|
57
57
|
|
|
58
58
|
*Why:* Isolating applications prevents implicit coupling and makes the `shared/` boundary explicit and intentional.
|
|
59
59
|
|
|
60
|
-
####
|
|
60
|
+
#### 03-module-folders
|
|
61
61
|
|
|
62
62
|
- A module is a subfolder inside an application that is independently compilable and produces a build artifact.
|
|
63
63
|
- May depend on sibling modules within the same application or on `/shared/` resources.
|
|
@@ -66,13 +66,13 @@ Module folder responsibilities, artifact locations, and test-folder conventions
|
|
|
66
66
|
- **MUST** keep build outputs under `dist/` and persistent caches under `.cache/`, following [agentme-edr-016](../principles/016-cross-language-module-structure.md).
|
|
67
67
|
- **MUST NOT** keep consumer examples inside the module folder; those belong in a sibling `examples/` folder at the nearest parent aggregation root.
|
|
68
68
|
|
|
69
|
-
####
|
|
69
|
+
#### 04-naming-conventions
|
|
70
70
|
|
|
71
71
|
- All folder and file names **MUST** be **lowercase**.
|
|
72
72
|
- Use hyphens (`-`) to separate words (e.g., `data-loader`, `graph-visualizer`).
|
|
73
73
|
- Avoid abbreviations unless universally understood in the domain (e.g., `cli`, `api`).
|
|
74
74
|
|
|
75
|
-
####
|
|
75
|
+
#### 05-makefiles-at-every-level
|
|
76
76
|
|
|
77
77
|
A `Makefile` **MUST** be present at the repository root, in every application folder, and in every module folder.
|
|
78
78
|
|
|
@@ -87,7 +87,7 @@ The root `setup` target **MUST** run `mise install` and any small repository boo
|
|
|
87
87
|
|
|
88
88
|
*Why:* Makefiles provide a universal, stack-agnostic entry point regardless of programming language.
|
|
89
89
|
|
|
90
|
-
####
|
|
90
|
+
#### 06-mise-for-tooling-management
|
|
91
91
|
|
|
92
92
|
- [Mise](https://mise.jdx.dev/) **MUST** be used to pin all tool versions (compilers, runtimes, CLI tools).
|
|
93
93
|
- A `.mise.toml` **MUST** exist at the repository root.
|
|
@@ -100,15 +100,15 @@ The root `setup` target **MUST** run `mise install` and any small repository boo
|
|
|
100
100
|
|
|
101
101
|
*Why:* Eliminates "works on my machine" build failures by ensuring identical tool versions across all environments.
|
|
102
102
|
|
|
103
|
-
####
|
|
103
|
+
#### 07-root-readme
|
|
104
104
|
|
|
105
105
|
The root `README.md` **MUST** include: overview, machine setup, quickstart, and a repository map.
|
|
106
106
|
|
|
107
|
-
####
|
|
107
|
+
#### 08-root-gitignore
|
|
108
108
|
|
|
109
109
|
The repository root **MUST** ignore `dist/` and `.cache/` so module artifacts and tool caches are never committed accidentally.
|
|
110
110
|
|
|
111
|
-
####
|
|
111
|
+
#### 09-git-tagging-and-artifact-versioning
|
|
112
112
|
|
|
113
113
|
All releases **MUST** be tagged using the format `<module-name>/<semver>` (e.g., `graphvisualizer/renderer/1.0.0`, `shared/libs/mylib/2.1.0`).
|
|
114
114
|
|
|
@@ -118,7 +118,7 @@ All releases **MUST** be tagged using the format `<module-name>/<semver>` (e.g.,
|
|
|
118
118
|
|
|
119
119
|
---
|
|
120
120
|
|
|
121
|
-
#### 11
|
|
121
|
+
#### 11-summary-of-requirements
|
|
122
122
|
|
|
123
123
|
| Requirement | Scope | Mandatory |
|
|
124
124
|
|---|---|---|
|
|
@@ -31,7 +31,9 @@ All workflows run on `ubuntu-latest`. Tool versions MUST be managed by Mise via
|
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
####
|
|
34
|
+
#### 01-ci-workflow
|
|
35
|
+
|
|
36
|
+
File: `.github/workflows/ci.yml`
|
|
35
37
|
|
|
36
38
|
Triggered on every PR targeting `main` and every push to `main`. Runs the standard `build`, `lint`, and `test` targets from the root Makefile and fails the workflow if any step exits non-zero.
|
|
37
39
|
|
|
@@ -59,7 +61,9 @@ jobs:
|
|
|
59
61
|
|
|
60
62
|
---
|
|
61
63
|
|
|
62
|
-
####
|
|
64
|
+
#### 02-release-workflow
|
|
65
|
+
|
|
66
|
+
File: `.github/workflows/release.yml`
|
|
63
67
|
|
|
64
68
|
Manually dispatched (`workflow_dispatch`). Calculates the next semantic version tag using **monotag** and pushes that tag to the repository. Pushing the tag then automatically triggers the publish workflow.
|
|
65
69
|
|
|
@@ -102,7 +106,9 @@ jobs:
|
|
|
102
106
|
|
|
103
107
|
---
|
|
104
108
|
|
|
105
|
-
####
|
|
109
|
+
#### 03-publish-workflow
|
|
110
|
+
|
|
111
|
+
File: `.github/workflows/publish.yml`
|
|
106
112
|
|
|
107
113
|
Triggered exclusively when a tag matching `v*.*.*` is pushed to the repository. This ensures only explicitly tagged commits produce published artifacts. Runs `make publish` against the tagged commit.
|
|
108
114
|
|
|
@@ -19,7 +19,7 @@ Standardizing both the target names and the execution chain removes per-project
|
|
|
19
19
|
|
|
20
20
|
### Implementation Details
|
|
21
21
|
|
|
22
|
-
####
|
|
22
|
+
#### 01-every-project-must-have-root-makefile
|
|
23
23
|
|
|
24
24
|
The project root must contain a single authoritative `Makefile` that exposes the standard target names defined in rule 3. Developers and CI pipelines must invoke routine actions through this `Makefile`, never by calling underlying tools directly in documentation, CI, or daily workflow commands.
|
|
25
25
|
|
|
@@ -34,7 +34,7 @@ The project root must contain a single authoritative `Makefile` that exposes the
|
|
|
34
34
|
|
|
35
35
|
*Why:* The project entry point must stay language-agnostic and obvious. A developer should be able to inspect the `Makefile` and immediately see which real tool commands will run.
|
|
36
36
|
|
|
37
|
-
####
|
|
37
|
+
#### 02-makefile-recipes-must-use-mise
|
|
38
38
|
|
|
39
39
|
After a checkout, the shared execution flow is:
|
|
40
40
|
|
|
@@ -62,7 +62,7 @@ make <target>
|
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
65
|
-
####
|
|
65
|
+
#### 03-standard-target-groups-and-names
|
|
66
66
|
|
|
67
67
|
Targets are organized into five lifecycle groups. Projects must use these names unchanged. Extensions are allowed (see rule 5) but the core names must not be repurposed.
|
|
68
68
|
|
|
@@ -114,7 +114,7 @@ Targets are organized into five lifecycle groups. Projects must use these names
|
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
117
|
-
####
|
|
117
|
+
#### 04-standard-environment-variables
|
|
118
118
|
|
|
119
119
|
Two environment variables have defined semantics and must be used consistently.
|
|
120
120
|
|
|
@@ -125,7 +125,7 @@ Two environment variables have defined semantics and must be used consistently.
|
|
|
125
125
|
|
|
126
126
|
---
|
|
127
127
|
|
|
128
|
-
####
|
|
128
|
+
#### 05-extending-targets-with-prefixes
|
|
129
129
|
|
|
130
130
|
Projects may add custom targets beyond the standard set. Custom targets must be named by prefixing a standard target name with a descriptive qualifier, keeping the naming intuitive and consistent with the group it belongs to.
|
|
131
131
|
|
|
@@ -147,7 +147,7 @@ The prefix convention ensures developers can infer the purpose of any target wit
|
|
|
147
147
|
|
|
148
148
|
---
|
|
149
149
|
|
|
150
|
-
####
|
|
150
|
+
#### 06-monorepo-usage
|
|
151
151
|
|
|
152
152
|
In a monorepo, each module has its own `Makefile` with its own `build`, `lint`, `test`, and `deploy` targets scoped to that module. Parent-level Makefiles (at the application or repo root) delegate to child Makefiles in sequence. The parent Makefile should call `$(MAKE) -C <child> <target>` directly, while each child `Makefile` runs its actual tool commands through `mise exec --`.
|
|
153
153
|
|
|
@@ -168,7 +168,7 @@ A developer can run `make test` at the repo root to test everything, or `cd modu
|
|
|
168
168
|
|
|
169
169
|
---
|
|
170
170
|
|
|
171
|
-
####
|
|
171
|
+
#### 07-quick-reference
|
|
172
172
|
|
|
173
173
|
Any project following this EDR supports the following actions through the root `Makefile`.
|
|
174
174
|
|
|
@@ -17,7 +17,7 @@ What coding practices should be followed across all languages and projects to ke
|
|
|
17
17
|
|
|
18
18
|
### Implementation Details
|
|
19
19
|
|
|
20
|
-
####
|
|
20
|
+
#### 01-keep-files-short
|
|
21
21
|
|
|
22
22
|
A file must not exceed **400 lines**. When a file grows beyond this limit, split related functions or types into separate, focused modules.
|
|
23
23
|
|
|
@@ -44,7 +44,7 @@ src/
|
|
|
44
44
|
|
|
45
45
|
---
|
|
46
46
|
|
|
47
|
-
####
|
|
47
|
+
#### 02-apply-template-method-pattern
|
|
48
48
|
|
|
49
49
|
When a function's main logic contains well-defined sections and **any individual section exceeds ~20 lines**, extract each section into its own named function. The outer function becomes an orchestrator that calls the extracted helpers in sequence.
|
|
50
50
|
|
|
@@ -81,7 +81,7 @@ def _persist_order(order, total): ...
|
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
84
|
-
####
|
|
84
|
+
#### 03-keep-readme-tests-and-examples-in-sync
|
|
85
85
|
|
|
86
86
|
Every change to a public interface, behavior, or configuration option must be reflected in:
|
|
87
87
|
|
|
@@ -93,7 +93,7 @@ Every change to a public interface, behavior, or configuration option must be re
|
|
|
93
93
|
|
|
94
94
|
---
|
|
95
95
|
|
|
96
|
-
####
|
|
96
|
+
#### 04-declare-types-in-file-where-used
|
|
97
97
|
|
|
98
98
|
If a type (struct, interface, class, typedef, etc.) is used in only **one** file, declare it in that same file. Move a type to a shared module only when it is referenced in two or more files.
|
|
99
99
|
|
|
@@ -101,7 +101,7 @@ If a type (struct, interface, class, typedef, etc.) is used in only **one** file
|
|
|
101
101
|
|
|
102
102
|
---
|
|
103
103
|
|
|
104
|
-
####
|
|
104
|
+
#### 05-keep-test-files-next-to-source
|
|
105
105
|
|
|
106
106
|
Where the language ecosystem supports it (e.g. JavaScript/TypeScript, Go, Rust), place test files **beside** the source file they cover and use a consistent naming convention rather than mirroring the source tree in a separate `tests/` folder.
|
|
107
107
|
|
|
@@ -17,7 +17,7 @@ What unit testing practices should be followed to ensure tests are meaningful, r
|
|
|
17
17
|
|
|
18
18
|
### Implementation Details
|
|
19
19
|
|
|
20
|
-
####
|
|
20
|
+
#### 01-must-have-at-least-one-assertion-per-test
|
|
21
21
|
|
|
22
22
|
```typescript
|
|
23
23
|
// bad — no assertion; passes even when code is broken
|
|
@@ -32,7 +32,7 @@ it("processes the order and returns a confirmation id", () => {
|
|
|
32
32
|
|
|
33
33
|
---
|
|
34
34
|
|
|
35
|
-
####
|
|
35
|
+
#### 02-must-run-offline
|
|
36
36
|
|
|
37
37
|
Unit tests must not depend on any external resources: no network calls, no running databases, no external APIs, no file system paths outside the repo. Tests must pass with only static code available.
|
|
38
38
|
|
|
@@ -53,7 +53,7 @@ it("fetches user", async () => {
|
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
56
|
-
####
|
|
56
|
+
#### 03-must-maintain-80-percent-coverage
|
|
57
57
|
|
|
58
58
|
```typescript
|
|
59
59
|
// vitest.config.ts
|
|
@@ -66,7 +66,7 @@ Builds that miss the threshold must not be merged.
|
|
|
66
66
|
|
|
67
67
|
---
|
|
68
68
|
|
|
69
|
-
####
|
|
69
|
+
#### 04-should-extract-shared-setup
|
|
70
70
|
|
|
71
71
|
When setup logic is repeated across two or more test files, centralize it (`src/test-utils/`, `internal/testutil/`, `tests/conftest.py`).
|
|
72
72
|
|
|
@@ -79,7 +79,7 @@ export function makeOrder(overrides: Partial<Order> = {}): Order {
|
|
|
79
79
|
|
|
80
80
|
---
|
|
81
81
|
|
|
82
|
-
####
|
|
82
|
+
#### 05-should-avoid-mocks
|
|
83
83
|
|
|
84
84
|
Use the lowest-cost alternative that exercises real behavior:
|
|
85
85
|
|
|
@@ -17,9 +17,9 @@ Every project must meet six minimum quality standards: a Getting Started section
|
|
|
17
17
|
|
|
18
18
|
These standards form a non-negotiable baseline. Individual projects may raise the bar but must never fall below it.
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
### Implementation Details
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
#### 01-readme-must-have-getting-started
|
|
23
23
|
|
|
24
24
|
`README.md` must include a **Getting Started** section in the first 20 lines with the minimal steps to install and use the project.
|
|
25
25
|
|
|
@@ -48,7 +48,7 @@ myFunction({ input: "value" });
|
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
#### 02-unit-tests-must-run-on-every-release
|
|
52
52
|
|
|
53
53
|
A unit test suite must run automatically before every release. Failing tests must block the release — no silent skips or overrides.
|
|
54
54
|
|
|
@@ -63,7 +63,7 @@ A unit test suite must run automatically before every release. Failing tests mus
|
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
#### 03-project-must-comply-with-xdrs
|
|
67
67
|
|
|
68
68
|
All XDRs that apply to the project's scope (as listed in [.xdrs/index.md](../../../index.md)) must be followed. A deviation requires a project-local XDR documenting the override.
|
|
69
69
|
|
|
@@ -73,7 +73,7 @@ All XDRs that apply to the project's scope (as listed in [.xdrs/index.md](../../
|
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
#### 04-project-must-have-linting
|
|
77
77
|
|
|
78
78
|
Projects larger than 10 files or 200 lines of code must have a linter configured and actively enforced. Lint failures block CI builds.
|
|
79
79
|
|
|
@@ -89,7 +89,7 @@ Projects larger than 10 files or 200 lines of code must have a linter configured
|
|
|
89
89
|
|
|
90
90
|
---
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
#### 05-project-structure-must-be-clear
|
|
93
93
|
|
|
94
94
|
Directory and file layout must be self-explanatory: source code, tests, configuration, and examples must be clearly separated and named.
|
|
95
95
|
|
|
@@ -114,7 +114,7 @@ Directory and file layout must be self-explanatory: source code, tests, configur
|
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
#### 06-libraries-must-have-runnable-examples
|
|
118
118
|
|
|
119
119
|
Projects that are libraries or shared utilities must include an `examples/` directory. Each subdirectory represents a usage scenario and must be independently runnable. Examples are executed as part of `make test`.
|
|
120
120
|
|
|
@@ -17,7 +17,7 @@ What error handling practices should be followed across all languages and projec
|
|
|
17
17
|
|
|
18
18
|
### Implementation Details
|
|
19
19
|
|
|
20
|
-
####
|
|
20
|
+
#### 01-catch-only-where-handled
|
|
21
21
|
|
|
22
22
|
Never catch an exception unless the catching site can genuinely recover from it, translate it into a meaningful domain error, or enrich it with context before re-throwing. Do **not** swallow exceptions silently. When suppressing an exception is intentional, always add a comment explaining exactly why, or log it at an appropriate level.
|
|
23
23
|
|
|
@@ -73,7 +73,7 @@ except CacheError:
|
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
-
####
|
|
76
|
+
#### 02-avoid-exceptions-in-public-interfaces
|
|
77
77
|
|
|
78
78
|
At module and service boundaries, prefer returning a value that signals success or failure (e.g., a result type, a discriminated union, or a `(value, error)` tuple as in Go) over throwing exceptions. This forces callers to explicitly acknowledge and handle the error case before using the result.
|
|
79
79
|
|
|
@@ -157,7 +157,7 @@ def fetch_user(user_id: str) -> Ok[User] | Err:
|
|
|
157
157
|
|
|
158
158
|
---
|
|
159
159
|
|
|
160
|
-
####
|
|
160
|
+
#### 03-centralise-repetitive-catch-logic
|
|
161
161
|
|
|
162
162
|
If the same `try/catch` pattern (e.g., logging, classifying HTTP errors, wrapping exceptions) appears in multiple places, extract it into a shared utility. Do not copy-paste catch blocks across the codebase.
|
|
163
163
|
|
|
@@ -209,7 +209,7 @@ def save_order(order: Order): ...
|
|
|
209
209
|
|
|
210
210
|
---
|
|
211
211
|
|
|
212
|
-
####
|
|
212
|
+
#### 04-communicate-failure-at-boundaries
|
|
213
213
|
|
|
214
214
|
Every system boundary must signal failure explicitly:
|
|
215
215
|
|
|
@@ -272,7 +272,7 @@ def create_order_endpoint(payload: OrderRequest):
|
|
|
272
272
|
|
|
273
273
|
---
|
|
274
274
|
|
|
275
|
-
####
|
|
275
|
+
#### 05-write-test-cases-for-error-scenarios
|
|
276
276
|
|
|
277
277
|
Every module that handles errors must have dedicated test cases that verify the error paths. Do not only test the happy path.
|
|
278
278
|
|
|
@@ -19,7 +19,7 @@ Language-specific EDRs may add ecosystem details, but they must not redefine the
|
|
|
19
19
|
|
|
20
20
|
### Implementation Details
|
|
21
21
|
|
|
22
|
-
####
|
|
22
|
+
#### 01-module-must-own-folder-root
|
|
23
23
|
|
|
24
24
|
A module is the smallest independently buildable, testable, or publishable unit. It MUST live in its own folder and that folder MUST contain:
|
|
25
25
|
|
|
@@ -40,7 +40,7 @@ Example module root:
|
|
|
40
40
|
└── ... language-specific sources and config ...
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
####
|
|
43
|
+
#### 02-parent-folders-are-aggregation-roots
|
|
44
44
|
|
|
45
45
|
Parent folders such as a repository root, an application folder, or `lib/` may aggregate multiple modules. They may also hold shared consumer examples or multi-module test harnesses.
|
|
46
46
|
|
|
@@ -57,13 +57,13 @@ Recommended aggregation pattern:
|
|
|
57
57
|
└── tests_benchmark/
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
####
|
|
60
|
+
#### 03-build-outputs-must-go-to-dist
|
|
61
61
|
|
|
62
62
|
Distributable outputs such as packages, wheels, archives, generated binaries, or packed example inputs MUST be written under the module's `dist/` folder.
|
|
63
63
|
|
|
64
64
|
`dist/` MUST be gitignored.
|
|
65
65
|
|
|
66
|
-
####
|
|
66
|
+
#### 04-persistent-caches-must-live-under-cache
|
|
67
67
|
|
|
68
68
|
Tool-generated caches and disposable machine-local state MUST be redirected into the nearest intended `.cache/` folder, either at monorepo level or module level.
|
|
69
69
|
|
|
@@ -79,7 +79,7 @@ If a tool cannot natively choose its cache path, the module `Makefile` MUST wrap
|
|
|
79
79
|
|
|
80
80
|
`.cache/` MUST be gitignored.
|
|
81
81
|
|
|
82
|
-
####
|
|
82
|
+
#### 05-consumer-examples-must-sit-outside-module
|
|
83
83
|
|
|
84
84
|
Examples that demonstrate how to consume a library or reusable module MUST live in a sibling `examples/` folder under the nearest aggregation root, not inside the module folder itself.
|
|
85
85
|
|
|
@@ -98,7 +98,7 @@ examples/
|
|
|
98
98
|
└── using-mymodule/
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
####
|
|
101
|
+
#### 06-module-readme-must-explain-usage-and-development
|
|
102
102
|
|
|
103
103
|
Each module MUST contain a `README.md` that shows how to use the module as a consumer.
|
|
104
104
|
|
|
@@ -106,7 +106,7 @@ The end of the README MUST also include short developer instructions for that mo
|
|
|
106
106
|
|
|
107
107
|
Repository-level READMEs may describe the workspace, but they do not replace the module README.
|
|
108
108
|
|
|
109
|
-
####
|
|
109
|
+
#### 07-tests-use-predictable-locations
|
|
110
110
|
|
|
111
111
|
Unit tests SHOULD be co-located with the file they exercise when that is idiomatic and common for the language.
|
|
112
112
|
|
|
@@ -123,7 +123,7 @@ Benchmark tests MUST live in one of these locations:
|
|
|
123
123
|
- `<module>/tests_benchmark/` for module-specific harnesses or datasets
|
|
124
124
|
- `<parent>/tests_benchmark/` when they cover multiple sibling modules
|
|
125
125
|
|
|
126
|
-
####
|
|
126
|
+
#### 08-module-makefiles-must-expose-shared-targets
|
|
127
127
|
|
|
128
128
|
Every module `Makefile` MUST expose the common target names from [agentme-edr-008](../devops/008-common-targets.md). At minimum, modules MUST provide `build`, `lint`, and `test`, and SHOULD also provide `all`, `clean`, and `lint-fix` when meaningful.
|
|
129
129
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# agentme Scope Overview
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `agentme` scope is a curated library of XDRs and skills encoding best practices for AI coding agents. It covers architectural, engineering, and tooling decisions relevant to AI-assisted software development and is intended for consumption by external projects.
|
|
6
|
+
|
|
7
|
+
## Content
|
|
8
|
+
|
|
9
|
+
### What this scope covers
|
|
10
|
+
|
|
11
|
+
The `agentme` scope provides opinionated, reusable guidance on how to scaffold, build, test, and ship software projects. It targets AI coding agents and human developers who want consistent, high-quality defaults across JavaScript, Go, and Python projects.
|
|
12
|
+
|
|
13
|
+
All content in this scope is published and consumed by external projects. Changes must be clear, backwards-compatible where possible, and thoroughly reviewed before merging.
|
|
14
|
+
|
|
15
|
+
### Engineering decisions
|
|
16
|
+
|
|
17
|
+
The `agentme` EDRs cover project tooling and structure for each supported language, CLI standards, monorepo layout, CI/CD pipelines, and observability. See the full list in the [EDRs Index](edrs/index.md).
|
|
18
|
+
|
|
19
|
+
## Type Indexes
|
|
20
|
+
|
|
21
|
+
- [EDRs Index](edrs/index.md) - Engineering decisions for coding best practices and project tooling
|
package/.xdrs/index.md
CHANGED
|
@@ -9,8 +9,7 @@ XDRs in scopes listed last override the ones listed first
|
|
|
9
9
|
### _core
|
|
10
10
|
|
|
11
11
|
Decisions about how XDRs work
|
|
12
|
-
[View _core
|
|
13
|
-
[View _core BDRs Index](_core/bdrs/index.md)
|
|
12
|
+
[View _core Scope Index](_core/index.md)
|
|
14
13
|
|
|
15
14
|
---
|
|
16
15
|
|
|
@@ -18,7 +17,7 @@ Decisions about how XDRs work
|
|
|
18
17
|
|
|
19
18
|
Opiniated set of decisions and skills for common development tasks
|
|
20
19
|
|
|
21
|
-
[View agentme
|
|
20
|
+
[View agentme Scope Index](agentme/index.md)
|
|
22
21
|
|
|
23
22
|
---
|
|
24
23
|
|
package/package.json
CHANGED