agentme 0.27.0 → 0.29.0
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/.filedist-package.yml +1 -1
- package/.xdrs/agentme/edrs/application/{003-javascript-project-tooling.md → 101-javascript-project-tooling.md} +8 -8
- package/.xdrs/agentme/edrs/application/{010-golang-project-tooling.md → 102-golang-project-tooling.md} +6 -6
- package/.xdrs/agentme/edrs/application/{014-python-project-tooling.md → 103-python-project-tooling.md} +11 -11
- package/.xdrs/agentme/edrs/application/{015-cli-tool-standards.md → 104-cli-tool-standards.md} +13 -13
- package/.xdrs/agentme/edrs/{principles/002-coding-best-practices.md → application/121-coding-best-practices.md} +3 -12
- package/.xdrs/agentme/edrs/{principles/004-unit-test-requirements.md → application/122-unit-test-requirements.md} +2 -2
- package/.xdrs/agentme/edrs/{principles/009-error-handling.md → application/123-error-handling.md} +2 -2
- package/.xdrs/agentme/edrs/{principles/022-secrets-management.md → application/124-secrets-management.md} +5 -5
- package/.xdrs/agentme/edrs/{principles/023-coding-abstraction-practices.md → application/125-coding-abstraction-practices.md} +3 -3
- package/.xdrs/agentme/edrs/application/{026-pragmatic-hexagonal-architecture.md → 126-pragmatic-hexagonal-architecture.md} +9 -9
- package/.xdrs/agentme/edrs/application/{018-ai-llm-development-standards.md → 141-ai-llm-development-standards.md} +14 -14
- package/.xdrs/agentme/edrs/application/{019-ai-agents-development-standards.md → 142-ai-agents-development-standards.md} +11 -11
- package/.xdrs/agentme/edrs/application/{020-ai-agents-quality-standards.md → 143-ai-agents-quality-standards.md} +16 -16
- package/.xdrs/agentme/edrs/application/{021-ai-workflow-development-standards.md → 144-ai-workflow-development-standards.md} +28 -28
- package/.xdrs/agentme/edrs/application/{029-ai-workflow-naming-conventions.md → 145-ai-workflow-naming-conventions.md} +9 -9
- package/.xdrs/agentme/edrs/application/{025-ai-agent-xdrs-knowledge-layer.md → 146-ai-agent-xdrs-knowledge-layer.md} +7 -7
- package/.xdrs/agentme/edrs/application/{028-ai-eval-core-standards.md → 151-ai-eval-core-standards.md} +18 -17
- package/.xdrs/agentme/edrs/application/{030-ai-test-types-taxonomy.md → 152-ai-test-types-taxonomy.md} +27 -27
- package/.xdrs/agentme/edrs/application/{031-ai-eval-script.md → 153-ai-eval-script.md} +18 -18
- package/.xdrs/agentme/edrs/application/{032-ai-eval-report-format.md → 154-ai-eval-report-format.md} +6 -6
- package/.xdrs/agentme/edrs/application/{033-ai-eval-repeatability.md → 155-ai-eval-repeatability.md} +14 -14
- package/.xdrs/agentme/edrs/application/skills/001-create-javascript-project/SKILL.md +4 -4
- package/.xdrs/agentme/edrs/application/skills/003-create-golang-project/SKILL.md +3 -3
- package/.xdrs/agentme/edrs/application/skills/004-select-relevant-xdrs/SKILL.md +9 -9
- package/.xdrs/agentme/edrs/application/skills/005-create-python-project/SKILL.md +5 -5
- package/.xdrs/agentme/edrs/{application/024-ml-dataset-structure.md → data/201-ml-dataset-structure.md} +4 -4
- package/.xdrs/agentme/edrs/{principles/007-project-quality-standards.md → governance/501-project-quality-standards.md} +16 -16
- package/.xdrs/agentme/edrs/governance/{013-contributing-guide-requirements.md → 502-contributing-guide-requirements.md} +4 -4
- package/.xdrs/agentme/edrs/index.md +40 -34
- package/.xdrs/agentme/edrs/{observability/011-service-health-check-endpoint.md → operations/401-service-health-check-endpoint.md} +2 -2
- package/.xdrs/agentme/edrs/{devops/005-monorepo-structure.md → platform/301-monorepo-structure.md} +6 -4
- package/.xdrs/agentme/edrs/{devops/006-github-pipelines.md → platform/302-github-pipelines.md} +3 -3
- package/.xdrs/agentme/edrs/{devops/008-common-targets.md → platform/303-common-targets.md} +20 -20
- package/.xdrs/agentme/edrs/{devops/017-tool-execution-and-scripting.md → platform/304-tool-execution-and-scripting.md} +10 -10
- package/.xdrs/agentme/edrs/{devops/027-environment-variable-configuration.md → platform/305-environment-variable-configuration.md} +14 -14
- package/.xdrs/agentme/edrs/{devops → platform}/skills/002-monorepo-setup/SKILL.md +3 -3
- package/.xdrs/agentme/edrs/principles/012-continuous-xdr-enrichment.md +1 -1
- package/.xdrs/agentme/edrs/principles/016-cross-language-module-structure.md +4 -4
- package/package.json +2 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: agentme-edr-policy-
|
|
2
|
+
name: agentme-edr-policy-401-service-health-check-endpoint
|
|
3
3
|
description: Defines the required health endpoint contract for service availability and dependency readiness checks. Use when implementing or reviewing service health endpoints.
|
|
4
4
|
apply-to: Service projects with health endpoints
|
|
5
5
|
valid-from: 2026-05-25
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# agentme-edr-policy-
|
|
8
|
+
# agentme-edr-policy-401: Service health check endpoint
|
|
9
9
|
|
|
10
10
|
## Context and Problem Statement
|
|
11
11
|
|
package/.xdrs/agentme/edrs/{devops/005-monorepo-structure.md → platform/301-monorepo-structure.md}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: agentme-edr-policy-
|
|
2
|
+
name: agentme-edr-policy-301-monorepo-structure
|
|
3
3
|
description: Defines the standard monorepo layout, naming, and build conventions using shared areas, Mise, and Makefiles. Use when creating or reviewing monorepos.
|
|
4
4
|
apply-to: Monorepo projects
|
|
5
5
|
valid-from: 2026-05-25
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# agentme-edr-policy-
|
|
8
|
+
# agentme-edr-policy-301: Monorepo structure
|
|
9
9
|
|
|
10
10
|
## Context and Problem Statement
|
|
11
11
|
|
|
@@ -24,6 +24,8 @@ Module folder responsibilities, artifact locations, and test-folder conventions
|
|
|
24
24
|
|
|
25
25
|
#### 01-top-level-directory-layout
|
|
26
26
|
|
|
27
|
+
Every monorepo MUST follow this top-level directory layout:
|
|
28
|
+
|
|
27
29
|
```
|
|
28
30
|
/
|
|
29
31
|
├── .cache/ # Optional shared cache for repo-level tooling
|
|
@@ -76,7 +78,7 @@ Module folder responsibilities, artifact locations, and test-folder conventions
|
|
|
76
78
|
|
|
77
79
|
A `Makefile` MUST be present at the repository root, in every application folder, and in every module folder.
|
|
78
80
|
|
|
79
|
-
All Makefiles MUST use the shared target vocabulary from [agentme-edr-
|
|
81
|
+
All Makefiles MUST use the shared target vocabulary from [agentme-edr-303](303-common-targets.md).
|
|
80
82
|
|
|
81
83
|
Repository, application, and module Makefiles MUST define at minimum: `all`, `build`, `lint`, `test`, and `clean`.
|
|
82
84
|
|
|
@@ -92,7 +94,7 @@ The root `setup` target MUST run `mise install` and any small repository bootstr
|
|
|
92
94
|
- Every language runtime or CLI referenced by any module `Makefile`, CI workflow, or README command MUST be pinned in `.mise.toml`.
|
|
93
95
|
- Contributors and CI run `make setup` after cloning or checkout; this target MUST call `mise install`.
|
|
94
96
|
- Agents and contributors MUST check `.mise.toml` before using a system-installed compiler, runtime, or CLI.
|
|
95
|
-
- When `.mise.toml` exists, all build, test, lint, and code-generation commands MUST run through `make <target>`, and the Makefile recipes MUST execute the underlying tools via `mise exec -- <command>`, following [agentme-edr-
|
|
97
|
+
- When `.mise.toml` exists, all build, test, lint, and code-generation commands MUST run through `make <target>`, and the Makefile recipes MUST execute the underlying tools via `mise exec -- <command>`, following [agentme-edr-304](304-tool-execution-and-scripting.md).
|
|
96
98
|
- If a required tool is missing, the first remediation step MUST be to update `.mise.toml` or run `mise install`, not to install ad-hoc global tools with language-specific installers such as `go install`, `npm install -g`, `pip install --user`, or `cargo install`.
|
|
97
99
|
- Root and module `Makefile` targets MUST work when invoked as plain `make <target>` after `make setup`.
|
|
98
100
|
|
package/.xdrs/agentme/edrs/{devops/006-github-pipelines.md → platform/302-github-pipelines.md}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: agentme-edr-policy-
|
|
2
|
+
name: agentme-edr-policy-302-github-ci-cd-pipelines
|
|
3
3
|
description: Defines the standard GitHub Actions workflow split for CI, release tagging, and publishing. Use when configuring project automation.
|
|
4
4
|
apply-to: Projects using GitHub Actions
|
|
5
5
|
valid-from: 2026-05-25
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# agentme-edr-policy-
|
|
8
|
+
# agentme-edr-policy-302: GitHub CI/CD pipelines
|
|
9
9
|
|
|
10
10
|
## Context and Problem Statement
|
|
11
11
|
|
|
@@ -142,7 +142,7 @@ jobs:
|
|
|
142
142
|
|
|
143
143
|
*Why rebuild on publish:* The checkout is done from the exact tag commit. Rebuilding ensures the published artifact matches exactly what is tagged, rather than relying on a prior CI artifact.
|
|
144
144
|
|
|
145
|
-
*Why `id-token: write`:* Required for npm provenance attestation via `npm publish --provenance`, as specified in [agentme-edr-
|
|
145
|
+
*Why `id-token: write`:* Required for npm provenance attestation via `npm publish --provenance`, as specified in [agentme-edr-101](../application/101-javascript-project-tooling.md).
|
|
146
146
|
|
|
147
147
|
---
|
|
148
148
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: agentme-edr-policy-
|
|
2
|
+
name: agentme-edr-policy-303-common-development-script-names
|
|
3
3
|
description: Defines standard Makefile target names and the mandatory tool-execution flow using Mise. Use when designing build, lint, test, and release entry points.
|
|
4
4
|
apply-to: All projects with Makefiles
|
|
5
5
|
valid-from: 2026-05-25
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# agentme-edr-policy-
|
|
8
|
+
# agentme-edr-policy-303: Common development script names
|
|
9
9
|
|
|
10
10
|
## Context and Problem Statement
|
|
11
11
|
|
|
@@ -15,7 +15,7 @@ What standard set of Makefile target names and execution rules should projects a
|
|
|
15
15
|
|
|
16
16
|
## Decision Outcome
|
|
17
17
|
|
|
18
|
-
**Every project MUST expose its development actions through a root `Makefile` using a defined set of standardized target names. Target implementation and tool-execution rules follow [agentme-edr-
|
|
18
|
+
**Every project MUST expose its development actions through a root `Makefile` using a defined set of standardized target names. Target implementation and tool-execution rules follow [agentme-edr-304](304-tool-execution-and-scripting.md), which requires `mise exec --` before routine tool commands.**
|
|
19
19
|
|
|
20
20
|
Standardizing both the target names and the execution chain removes per-project guesswork, makes CI pipelines reusable, and keeps tooling behavior visible in one place.
|
|
21
21
|
|
|
@@ -49,7 +49,7 @@ make <target>
|
|
|
49
49
|
|
|
50
50
|
- The `setup` target MUST run `mise install` and any small project-specific bootstrap needed before normal targets work.
|
|
51
51
|
- Routine targets such as `build`, `lint`, `test`, `run`, and `publish` MUST be invoked as `make <target>` by both contributors and CI.
|
|
52
|
-
- Each Makefile recipe MUST call the real underlying command through `mise exec --`, following [agentme-edr-
|
|
52
|
+
- Each Makefile recipe MUST call the real underlying command through `mise exec --`, following [agentme-edr-304](304-tool-execution-and-scripting.md).
|
|
53
53
|
- Makefile recipes MUST NOT add extra script layers such as `npm run`, `pnpm run`, `yarn run`, `mise run`, `mise tasks`, or shell aliases when those layers only forward to another command.
|
|
54
54
|
- Calling the actual tool is allowed even when that tool itself launches another program as part of its normal interface.
|
|
55
55
|
- Allowed: `mise exec -- pnpm exec eslint ./src`
|
|
@@ -73,10 +73,10 @@ Targets are organized into five lifecycle groups. Projects MUST use these names
|
|
|
73
73
|
| Target | Purpose |
|
|
74
74
|
|--------|---------|
|
|
75
75
|
| `setup` | Run `mise install` and any small project bootstrap needed before normal targets work. This is the first command after checkout. |
|
|
76
|
-
| `all` | Alias that runs `build`, `lint`, and `test` in sequence.
|
|
76
|
+
| `all` | Alias that runs `build`, `lint`, and `test` in sequence. MUST be the default target (i.e., running `make` or the runner with no arguments invokes `all`). Used by developers as a fast pre-push check to verify the software meets minimum quality standards in one command. MUST only invoke targets that run **offline** — no external credentials, running servers, paid APIs, or environment-specific configuration outside the repository. |
|
|
77
77
|
| `clean` | Remove all temporary or generated files created during build, lint, or test (e.g., `node_modules`, virtual environments, compiled binaries, generated files). Used both locally and in CI for a clean slate. |
|
|
78
78
|
| `dev` | Run the software locally for development (e.g., start a Node.js API server, open a Jupyter notebook, launch a React dev server). May have debugging tools, verbose logging, or hot reloading features enabled. |
|
|
79
|
-
| `run` | Run the software in production mode (e.g., start a compiled binary, launch a production server). Debugging or development-only features
|
|
79
|
+
| `run` | Run the software in production mode (e.g., start a compiled binary, launch a production server). Debugging or development-only features SHOULD NOT be enabled. |
|
|
80
80
|
| `update-lockfile` | Update the dependency lockfile to reflect the latest resolved versions of all dependencies. |
|
|
81
81
|
|
|
82
82
|
##### Build group
|
|
@@ -93,17 +93,17 @@ Targets are organized into five lifecycle groups. Projects MUST use these names
|
|
|
93
93
|
|
|
94
94
|
| Target | Purpose |
|
|
95
95
|
|--------|---------|
|
|
96
|
-
| `lint` | Run **all static quality checks** outside of tests. This MUST include: code formatting validation, code style enforcement, code smell detection, static analysis, dependency audits for known CVEs, security vulnerability scans (e.g., SAST), and project/configuration structure checks. All checks
|
|
96
|
+
| `lint` | Run **all static quality checks** outside of tests. This MUST include: code formatting validation, code style enforcement, code smell detection, static analysis, dependency audits for known CVEs, security vulnerability scans (e.g., SAST), and project/configuration structure checks. All checks MUST be non-destructive (read-only); fixes are handled by `lint-fix`. MUST only invoke subtargets that run **offline** (no external credentials or services). |
|
|
97
97
|
| `lint-fix` | Automatically fix linting and formatting issues where possible. || `lint-format` | *(Optional)* Check code formatting only (e.g., Prettier, gofmt, Black). |
|
|
98
98
|
##### Test group
|
|
99
99
|
|
|
100
100
|
| Target | Purpose |
|
|
101
101
|
|--------|---------|
|
|
102
|
-
| `test` | Run **all offline tests** required for the project. This MUST include unit tests (with coverage enforcement — the build MUST fail if coverage thresholds are not met) and any integration or end-to-end tests that run **offline** (no external servers, credentials, or paid APIs). Normally delegates to `test-unit` and, when offline, `test-integration` in sequence. Suffixed targets that require external dependencies
|
|
102
|
+
| `test` | Run **all offline tests** required for the project. This MUST include unit tests (with coverage enforcement — the build MUST fail if coverage thresholds are not met) and any integration or end-to-end tests that run **offline** (no external servers, credentials, or paid APIs). Normally delegates to `test-unit` and, when offline, `test-integration` in sequence. Suffixed targets that require external dependencies MUST NOT be invoked automatically — see rule 08. |
|
|
103
103
|
| `test-unit` | Run unit tests only, including coverage report generation and coverage threshold enforcement. |
|
|
104
104
|
| `test-integration` | *(Optional)* Run integration and end-to-end tests only. Projects without integration tests MAY omit this target. |
|
|
105
105
|
| `test-smoke` | *(Optional)* Run a fast, minimal subset of tests to verify the software is basically functional. Useful as a post-deploy health check. |
|
|
106
|
-
| `eval` | *(Optional)* Run **all evaluations** for the module. Used alongside `test` to measure the accuracy and performance of statistical systems such as ML models, AI agents, or noisy systems. Typically runs against a live or near-live system (similar to an integration test) and produces a performance analysis report (e.g., F1 score, Accuracy, Precision, Recall).
|
|
106
|
+
| `eval` | *(Optional)* Run **all evaluations** for the module. Used alongside `test` to measure the accuracy and performance of statistical systems such as ML models, AI agents, or noisy systems. Typically runs against a live or near-live system (similar to an integration test) and produces a performance analysis report (e.g., F1 score, Accuracy, Precision, Recall). MUST NOT be included in `test` or `all` — evals are opt-in because they require live dependencies and MAY be slow or costly to run. Individual evaluations MUST follow the prefix convention: `eval-<qualifier>` (e.g., `eval-simple`, `eval-complex`). |
|
|
107
107
|
|
|
108
108
|
##### Release group
|
|
109
109
|
|
|
@@ -119,18 +119,18 @@ Targets are organized into five lifecycle groups. Projects MUST use these names
|
|
|
119
119
|
|
|
120
120
|
#### 04-standard-environment-variables
|
|
121
121
|
|
|
122
|
-
Two environment variables have defined semantics and
|
|
122
|
+
Two environment variables have defined semantics and MUST be used consistently.
|
|
123
123
|
|
|
124
124
|
| Variable | Purpose |
|
|
125
125
|
|----------|---------|
|
|
126
|
-
| `STAGE` | Identifies the runtime environment. Format: `[prefix][-variant]`. Common prefixes: `dev`, `tst`, `acc`, `prd`. Examples: `dev`, `dev-pr123`, `tst`, `prd-blue`.
|
|
126
|
+
| `STAGE` | Identifies the runtime environment. Format: `[prefix][-variant]`. Common prefixes: `dev`, `tst`, `acc`, `prd`. Examples: `dev`, `dev-pr123`, `tst`, `prd-blue`. MAY be required by any target that is environment-aware (build, lint, deploy, etc.). |
|
|
127
127
|
| `VERSION` | Sets the explicit version used during packaging and deployment. Used when there is no automatic version-tagging utility, or to override it. |
|
|
128
128
|
|
|
129
129
|
---
|
|
130
130
|
|
|
131
131
|
#### 05-extending-targets-with-prefixes
|
|
132
132
|
|
|
133
|
-
Projects
|
|
133
|
+
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.
|
|
134
134
|
|
|
135
135
|
**Examples:**
|
|
136
136
|
|
|
@@ -152,7 +152,7 @@ The prefix convention ensures developers can infer the purpose of any target wit
|
|
|
152
152
|
|
|
153
153
|
#### 06-monorepo-usage
|
|
154
154
|
|
|
155
|
-
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
|
|
155
|
+
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 --`.
|
|
156
156
|
|
|
157
157
|
```makefile
|
|
158
158
|
# root Makefile — delegates to all modules
|
|
@@ -165,9 +165,9 @@ test:
|
|
|
165
165
|
$(MAKE) -C module-b test
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
A developer can run `make test` at the repo root to test everything, or `cd module-a && make test` to test a single module. Both
|
|
168
|
+
A developer can run `make test` at the repo root to test everything, or `cd module-a && make test` to test a single module. Both MUST work.
|
|
169
169
|
|
|
170
|
-
**Reference:** See [agentme-edr-
|
|
170
|
+
**Reference:** See [agentme-edr-301](301-monorepo-structure.md) for the full monorepo layout convention.
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
@@ -220,15 +220,15 @@ make all
|
|
|
220
220
|
|
|
221
221
|
#### 08-default-targets-must-only-include-offline-subtargets
|
|
222
222
|
|
|
223
|
-
`make all`, `make test`, and `make lint`
|
|
223
|
+
`make all`, `make test`, and `make lint` MUST include every subtarget that runs **offline** — meaning it requires no external credentials, no running servers, no paid APIs, and no environment-specific configuration outside the repository.
|
|
224
224
|
|
|
225
|
-
Subtargets that require external dependencies (e.g., `test-integration` against a live database, `test-e2e` against a staging environment, `lint-api` against a remote schema registry)
|
|
225
|
+
Subtargets that require external dependencies (e.g., `test-integration` against a live database, `test-e2e` against a staging environment, `lint-api` against a remote schema registry) MUST exist as named targets so developers can invoke them explicitly, but MUST NOT be invoked from `all`, `test`, or `lint`.
|
|
226
226
|
|
|
227
227
|
---
|
|
228
228
|
|
|
229
229
|
#### 09-ai-project-dev-targets
|
|
230
230
|
|
|
231
|
-
AI-based projects (LLM, Agent, and Workflow tiers as defined in [agentme-edr-
|
|
231
|
+
AI-based projects (LLM, Agent, and Workflow tiers as defined in [agentme-edr-141](../application/141-ai-llm-development-standards.md)) MUST expose a `dev-mlflow` target that starts a local MLflow tracking server for development inspection.
|
|
232
232
|
|
|
233
233
|
**Example implementation:**
|
|
234
234
|
|
|
@@ -251,5 +251,5 @@ dev-mlflow:
|
|
|
251
251
|
|
|
252
252
|
## References
|
|
253
253
|
|
|
254
|
-
- [agentme-edr-
|
|
255
|
-
- [agentme-edr-
|
|
254
|
+
- [agentme-edr-301](301-monorepo-structure.md) - Monorepo layout and delegation structure
|
|
255
|
+
- [agentme-edr-304](304-tool-execution-and-scripting.md) - Tool-execution rules for Makefile targets and CI
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: agentme-edr-policy-
|
|
2
|
+
name: agentme-edr-policy-304-tool-execution-and-scripting
|
|
3
3
|
description: Defines how Makefiles, CI pipelines, and optional wrapper scripts execute project commands. Use when designing project automation or command entry points.
|
|
4
4
|
apply-to: All projects with Makefiles and CI pipelines
|
|
5
5
|
valid-from: 2026-05-25
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# agentme-edr-policy-
|
|
8
|
+
# agentme-edr-policy-304: Tool execution and scripting
|
|
9
9
|
|
|
10
10
|
## Context and Problem Statement
|
|
11
11
|
|
|
@@ -15,14 +15,14 @@ How should projects execute development commands so the command surface stays pr
|
|
|
15
15
|
|
|
16
16
|
## Decision Outcome
|
|
17
17
|
|
|
18
|
-
**Use Makefiles as the only authoritative command entry point, with targets named by [agentme-edr-
|
|
18
|
+
**Use Makefiles as the only authoritative command entry point, with targets named by [agentme-edr-303](303-common-targets.md) and implemented with `mise exec --` before the real tool command.**
|
|
19
19
|
|
|
20
20
|
This keeps local development and CI aligned, reduces indirection, and lets contributors understand project behavior by reading one command surface.
|
|
21
21
|
|
|
22
22
|
### Details
|
|
23
23
|
|
|
24
24
|
- Every project MUST use a root `Makefile` as the authoritative entry point for developer and pipeline commands.
|
|
25
|
-
- The target names in that `Makefile` MUST follow [agentme-edr-
|
|
25
|
+
- The target names in that `Makefile` MUST follow [agentme-edr-303](303-common-targets.md).
|
|
26
26
|
- CI pipelines MUST run `make <target>` from the relevant root instead of calling language-specific scripts such as `npm run`, `pnpm run`, shell wrappers, or secondary task runners.
|
|
27
27
|
- A Makefile target MUST execute the real operation through `mise exec --` before invoking the tool itself, so it MUST use the version pinned in `.mise.toml`. Avoid intermediate script layers that hide the actual command.
|
|
28
28
|
- Every Makefile target MUST start by echoing a concise summary of the target and folder or context, using fewer than 10 words. When delegating to another Makefile, echo the child path and delegated target before invoking it.
|
|
@@ -58,9 +58,9 @@ Disallowed:
|
|
|
58
58
|
|
|
59
59
|
## References
|
|
60
60
|
|
|
61
|
-
- [agentme-edr-
|
|
62
|
-
- [agentme-edr-
|
|
63
|
-
- [agentme-edr-
|
|
64
|
-
- [agentme-edr-
|
|
65
|
-
- [agentme-edr-
|
|
66
|
-
- [agentme-edr-
|
|
61
|
+
- [agentme-edr-301](301-monorepo-structure.md) - Monorepo layout and Makefile hierarchy
|
|
62
|
+
- [agentme-edr-302](302-github-pipelines.md) - CI/CD workflows should call Make targets
|
|
63
|
+
- [agentme-edr-303](303-common-targets.md) - Standard target names
|
|
64
|
+
- [agentme-edr-101](../application/101-javascript-project-tooling.md) - JavaScript tooling commands inside Makefiles
|
|
65
|
+
- [agentme-edr-102](../application/102-golang-project-tooling.md) - Go tooling commands inside Makefiles
|
|
66
|
+
- [agentme-edr-103](../application/103-python-project-tooling.md) - Python tooling commands inside Makefiles
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: agentme-edr-policy-
|
|
2
|
+
name: agentme-edr-policy-305-environment-variable-configuration-files
|
|
3
3
|
description: Defines when to use YAML config files versus .env files for configuration, how to combine them, and how .env is loaded for spawned processes. Use when setting up project configuration for any application, CLI, or library.
|
|
4
4
|
apply-to: All projects that use environment variables for configuration
|
|
5
5
|
valid-from: 2026-06-09
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# agentme-edr-policy-
|
|
8
|
+
# agentme-edr-policy-305: Environment variable configuration files
|
|
9
9
|
|
|
10
10
|
## Context and Problem Statement
|
|
11
11
|
|
|
@@ -19,7 +19,7 @@ How should projects manage environment variable configuration and CLI invocation
|
|
|
19
19
|
|
|
20
20
|
**Use YAML config files for CLI invocation configuration with multiple attributes; use `.env` files to supply environment variables to spawned processes and to hold uncommitted values referenced by config files. Load `.env` exclusively at process launch time — MUST NOT be loaded inside application code.**
|
|
21
21
|
|
|
22
|
-
Secrets (API keys, passwords, tokens) MUST NOT be placed in `.env` files. Those are handled by [agentme-edr-
|
|
22
|
+
Secrets (API keys, passwords, tokens) MUST NOT be placed in `.env` files. Those are handled by [agentme-edr-124](../application/124-secrets-management.md).
|
|
23
23
|
|
|
24
24
|
### Details
|
|
25
25
|
|
|
@@ -28,7 +28,7 @@ Secrets (API keys, passwords, tokens) MUST NOT be placed in `.env` files. Those
|
|
|
28
28
|
A `.env` file MUST be used when either of the following is true:
|
|
29
29
|
|
|
30
30
|
1. **Spawned process needs env vars** — the project launches a process (a deployable service, background worker, or shell script) that reads configuration from OS environment variables such as port numbers or API endpoint URLs.
|
|
31
|
-
2. **Value
|
|
31
|
+
2. **Value MUST NOT be committed** — a configuration value used in a YAML config file (see rule 07) is environment-specific or sensitive enough to exclude from version control. In that case, store the value in `.env` and reference it from the YAML file using env var substitution (see rule 08).
|
|
32
32
|
|
|
33
33
|
Do not use `.env` as a general-purpose configuration store when a YAML config file is the right tool (see rule 07).
|
|
34
34
|
|
|
@@ -64,7 +64,7 @@ FEATURE_FLAG_NEW_UI=false
|
|
|
64
64
|
|
|
65
65
|
Stage-specific overrides MUST use the naming convention `.env.[stage]` (e.g., `.env.production`, `.env.staging`, `.env.test`). These files may be committed to the repository because they carry deployment-stage configuration rather than local developer configuration. They are used during deployment pipelines where the stage is known and explicit.
|
|
66
66
|
|
|
67
|
-
The generic `.env`
|
|
67
|
+
The generic `.env` MUST NOT be committed. The distinction is: `.env` is for local, ad-hoc, standalone use; `.env.[stage]` is for deployment pipelines with a defined environment identity.
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
@@ -85,7 +85,7 @@ This ensures all variables in `.env` are available as environment variables to e
|
|
|
85
85
|
|
|
86
86
|
#### 06-no-application-level-dotenv-loading
|
|
87
87
|
|
|
88
|
-
Applications MUST NOT load `.env` files directly inside their own code using dotenv libraries or equivalent mechanisms. Configuration
|
|
88
|
+
Applications MUST NOT load `.env` files directly inside their own code using dotenv libraries or equivalent mechanisms. Configuration MUST enter the process exclusively as OS-level environment variables, set before the process is launched (by the Makefile, a shell script, CI, or a container runtime).
|
|
89
89
|
|
|
90
90
|
Prohibited patterns:
|
|
91
91
|
|
|
@@ -116,9 +116,9 @@ This rule prevents two parallel loading paths — OS env and file-based env —
|
|
|
116
116
|
|
|
117
117
|
CLI adapters with multiple configuration attributes MUST use a YAML config file rather than env vars or flags for those attributes. This applies whenever configuration is nested, repetitive, or too verbose for flags alone.
|
|
118
118
|
|
|
119
|
-
The CLI layer is responsible for loading and parsing the YAML file and passing the resolved values to the application layer. The application layer
|
|
119
|
+
The CLI layer is responsible for loading and parsing the YAML file and passing the resolved values to the application layer. The application layer MUST NOT read the config file directly.
|
|
120
120
|
|
|
121
|
-
Default config file discovery
|
|
121
|
+
Default config file discovery SHOULD follow the pattern defined in [agentme-edr-104](../application/104-cli-tool-standards.md): load `[cwd]/[tool-name].yml` by default, or an explicit path provided via `--config`.
|
|
122
122
|
|
|
123
123
|
Example `myconfig.yml`:
|
|
124
124
|
```yaml
|
|
@@ -131,7 +131,7 @@ max_retries: 3
|
|
|
131
131
|
|
|
132
132
|
#### 08-env-var-substitution-in-config-files
|
|
133
133
|
|
|
134
|
-
When a YAML config file contains a value that MUST NOT be committed (such as a real endpoint URL, a username, or any other environment-specific value), that value
|
|
134
|
+
When a YAML config file contains a value that MUST NOT be committed (such as a real endpoint URL, a username, or any other environment-specific value), that value MUST be expressed as an environment variable reference using `${VAR_NAME}` syntax, and the actual value MUST be defined in `.env`.
|
|
135
135
|
|
|
136
136
|
This keeps the YAML file committable while keeping the environment-specific value out of the repository.
|
|
137
137
|
|
|
@@ -148,11 +148,11 @@ openapi_endpoint: ${OPENAPI_ENDPOINT}
|
|
|
148
148
|
log_level: debug
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
The `.env` file
|
|
151
|
+
The `.env` file MUST be loaded in the Makefile before launching the process (see rule 05) so the variable is available when the CLI or process reads the config file.
|
|
152
152
|
|
|
153
153
|
## References
|
|
154
154
|
|
|
155
|
-
- [agentme-edr-
|
|
156
|
-
- [agentme-edr-
|
|
157
|
-
- [agentme-edr-
|
|
158
|
-
- [agentme-edr-
|
|
155
|
+
- [agentme-edr-124](../application/124-secrets-management.md) - Secrets must use OS keychains or cloud secret managers, not `.env` files
|
|
156
|
+
- [agentme-edr-304](304-tool-execution-and-scripting.md) - Makefiles are the authoritative command entry point; rule 05 above integrates with that standard
|
|
157
|
+
- [agentme-edr-303](303-common-targets.md) - Standard Makefile target names
|
|
158
|
+
- [agentme-edr-104](../application/104-cli-tool-standards.md) - CLI config file discovery and CLI-to-application separation
|
|
@@ -3,7 +3,7 @@ name: 002-monorepo-setup
|
|
|
3
3
|
description: >
|
|
4
4
|
Step-by-step instructions for setting up and scaffolding a new monorepo following the standard
|
|
5
5
|
layout, naming conventions, Makefiles, Mise tooling, and README requirements defined in
|
|
6
|
-
agentme-edr-
|
|
6
|
+
agentme-edr-301. Activate this skill when the user asks to create, initialize, or set up a
|
|
7
7
|
monorepo, add a new application or module to an existing monorepo, or verify that a monorepo
|
|
8
8
|
complies with the standard structure.
|
|
9
9
|
metadata:
|
|
@@ -13,12 +13,12 @@ metadata:
|
|
|
13
13
|
|
|
14
14
|
## Overview
|
|
15
15
|
|
|
16
|
-
Creates or extends a monorepo that follows the standard layout from [agentme-edr-
|
|
16
|
+
Creates or extends a monorepo that follows the standard layout from [agentme-edr-301](../../301-monorepo-structure.md):
|
|
17
17
|
top-level application folders, independent module roots, sibling example and multi-module test
|
|
18
18
|
areas, Mise-managed tooling, and Makefiles at every level so any contributor can build, lint, and
|
|
19
19
|
test any part of the monorepo with a single, predictable command.
|
|
20
20
|
|
|
21
|
-
Related EDRs: [agentme-edr-
|
|
21
|
+
Related EDRs: [agentme-edr-301](../../301-monorepo-structure.md), [agentme-edr-502](../../../governance/502-contributing-guide-requirements.md), [agentme-edr-016](../../../principles/016-cross-language-module-structure.md)
|
|
22
22
|
|
|
23
23
|
## Instructions
|
|
24
24
|
|
|
@@ -35,7 +35,7 @@ When developers or coding agents need too much detailed steering to complete a t
|
|
|
35
35
|
|
|
36
36
|
#### 04-coverage-target-should-be-80-percent
|
|
37
37
|
|
|
38
|
-
Teams SHOULD aim to keep at least 80% of big coding decisions covered by accepted XDRs. Big decisions include framework or tool selection, overall code organization, monorepo structure, complex business flows, and coding standards. If a big decision is not yet covered, developers SHOULD either propose a new XDR or document why the decision is intentionally local and
|
|
38
|
+
Teams SHOULD aim to keep at least 80% of big coding decisions covered by accepted XDRs. Big decisions include framework or tool selection, overall code organization, monorepo structure, complex business flows, and coding standards. If a big decision is not yet covered, developers SHOULD either propose a new XDR or document why the decision is intentionally local and SHOULD NOT be shared.
|
|
39
39
|
|
|
40
40
|
#### 05-leaders-must-review-xdr-proposals
|
|
41
41
|
|
|
@@ -25,7 +25,7 @@ Language-specific EDRs MAY add ecosystem details, but they MUST NOT redefine the
|
|
|
25
25
|
|
|
26
26
|
A module is the smallest independently buildable, testable, or publishable unit. It MUST live in its own folder and that folder MUST contain:
|
|
27
27
|
|
|
28
|
-
- a `Makefile` following [agentme-edr-
|
|
28
|
+
- a `Makefile` following [agentme-edr-303](../platform/303-common-targets.md)
|
|
29
29
|
- a `README.md` for the module itself
|
|
30
30
|
- all configuration files needed to build, lint, test, package, or publish that module
|
|
31
31
|
- its generated `dist/` directory when the module produces distributable artifacts
|
|
@@ -127,9 +127,9 @@ Benchmark tests MUST live in one of these locations:
|
|
|
127
127
|
|
|
128
128
|
#### 08-module-makefiles-must-expose-shared-targets
|
|
129
129
|
|
|
130
|
-
Every module `Makefile` MUST expose the common target names from [agentme-edr-
|
|
130
|
+
Every module `Makefile` MUST expose the common target names from [agentme-edr-303](../platform/303-common-targets.md). At minimum, modules MUST provide `build`, `lint`, and `test`, and SHOULD also provide `all`, `clean`, and `lint-fix` when meaningful.
|
|
131
131
|
|
|
132
132
|
## References
|
|
133
133
|
|
|
134
|
-
- [agentme-edr-
|
|
135
|
-
- [agentme-edr-
|
|
134
|
+
- [agentme-edr-301](../platform/301-monorepo-structure.md) - Monorepo aggregation and delegation rules
|
|
135
|
+
- [agentme-edr-303](../platform/303-common-targets.md) - Shared Makefile target names
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"filedist": "^0.39.0"
|
|
@@ -18,6 +18,6 @@
|
|
|
18
18
|
"url": "https://github.com/flaviostutz/agentme.git"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"xdrs-core": "^0.
|
|
21
|
+
"xdrs-core": "^0.41.0"
|
|
22
22
|
}
|
|
23
23
|
}
|