agentme 0.7.0 → 0.7.3
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/application/014-python-project-tooling.md +1 -1
- package/.xdrs/agentme/edrs/devops/005-monorepo-structure.md +1 -1
- package/.xdrs/agentme/edrs/devops/008-common-targets.md +11 -5
- package/.xdrs/agentme/edrs/devops/017-tool-execution-and-scripting.md +64 -0
- package/.xdrs/agentme/edrs/index.md +16 -15
- package/.xdrs/agentme/edrs/principles/articles/001-continuous-xdr-improvement.md +1 -1
- package/.xdrs/index.md +1 -0
- package/package.json +2 -2
|
@@ -30,7 +30,7 @@ Clear, consistent tooling and layout enable fast onboarding, reliable CI pipelin
|
|
|
30
30
|
| **eslint** | Linting — code style and quality enforcement |
|
|
31
31
|
| **jest** | Testing — unit and integration test runner |
|
|
32
32
|
|
|
33
|
-
All commands are run exclusively through Makefiles, not through `package.json` scripts. The repository root MUST define a `.mise.toml` that pins at least Node.js and pnpm. Contributors and CI MUST bootstrap with `make setup` or `mise install`, then invoke routine work with `make <target>`. Each Makefile recipe MUST execute the underlying tool through `mise exec -- <tool>
|
|
33
|
+
All commands are run exclusively through Makefiles, not through `package.json` scripts. The repository root MUST define a `.mise.toml` that pins at least Node.js and pnpm. Contributors and CI MUST bootstrap with `make setup` or `mise install`, then invoke routine work with `make <target>`. Each Makefile recipe MUST execute the underlying tool through `mise exec -- <tool> ...`, following [agentme-edr-017](../devops/017-tool-execution-and-scripting.md). Calling project tools directly in docs, CI, or daily workflows instead of `make <target>` is not allowed.
|
|
34
34
|
|
|
35
35
|
#### ESLint
|
|
36
36
|
|
|
@@ -28,7 +28,7 @@ A predictable layout and minimal external tooling keep Go projects approachable,
|
|
|
28
28
|
| **golangci-lint** | Linting — aggregates many linters in one fast run; configured via `.golangci.yml` |
|
|
29
29
|
| **monotag** | Version tagging from git history for the `publish` target |
|
|
30
30
|
|
|
31
|
-
All commands are run exclusively through the Makefile, never ad-hoc. The project root **MUST** define a `.mise.toml` that pins `go`, `golangci-lint`, and any other Go-related CLIs used by the project. Contributors and CI **MUST** bootstrap with `make setup` or `mise install`, then invoke routine work with `make <target>`. Each Makefile recipe **MUST** execute the underlying tool through `mise exec -- <tool>
|
|
31
|
+
All commands are run exclusively through the Makefile, never ad-hoc. The project root **MUST** define a `.mise.toml` that pins `go`, `golangci-lint`, and any other Go-related CLIs used by the project. Contributors and CI **MUST** bootstrap with `make setup` or `mise install`, then invoke routine work with `make <target>`. Each Makefile recipe **MUST** execute the underlying tool through `mise exec -- <tool> ...`, following [agentme-edr-017](../devops/017-tool-execution-and-scripting.md).
|
|
32
32
|
Direct installation of project-required Go CLIs with `go install ...@latest` as a repair step is **NOT** allowed unless an XDR for that repository explicitly permits it.
|
|
33
33
|
|
|
34
34
|
#### Project structure
|
|
@@ -34,7 +34,7 @@ A single dependency manager, isolated package internals under `lib/`, and a stan
|
|
|
34
34
|
|
|
35
35
|
All routine commands must run through the project `Makefile`, never by calling `uv`, `ruff`, `pytest`, or `pyright` directly in docs, CI, or daily development workflows.
|
|
36
36
|
|
|
37
|
-
The repository root MUST define a `.mise.toml` that pins Python and uv. Contributors and CI MUST bootstrap with `make setup` or `mise install`, then invoke routine work with `make <target>`. Each Makefile recipe MUST execute the underlying tool through `mise exec -- <tool>
|
|
37
|
+
The repository root MUST define a `.mise.toml` that pins Python and uv. Contributors and CI MUST bootstrap with `make setup` or `mise install`, then invoke routine work with `make <target>`. Each Makefile recipe MUST execute the underlying tool through `mise exec -- <tool> ...`, following [agentme-edr-017](../devops/017-tool-execution-and-scripting.md). Using routine project CLI commands directly outside the Makefile contract is not allowed.
|
|
38
38
|
|
|
39
39
|
The root `.venv/` is the canonical environment location for both the library and all examples. Subdirectory commands must set `UV_PROJECT_ENVIRONMENT` to the workspace root `.venv/` instead of creating nested virtual environments.
|
|
40
40
|
|
|
@@ -94,7 +94,7 @@ The root `setup` target **MUST** run `mise install` and any small repository boo
|
|
|
94
94
|
- Every language runtime or CLI referenced by any module `Makefile`, CI workflow, or README command **MUST** be pinned in `.mise.toml`.
|
|
95
95
|
- Contributors and CI run `make setup` after cloning or checkout; this target must call `mise install`.
|
|
96
96
|
- Agents and contributors **MUST** check `.mise.toml` before using a system-installed compiler, runtime, or CLI.
|
|
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
|
|
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-017](017-tool-execution-and-scripting.md).
|
|
98
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`.
|
|
99
99
|
- Root and module `Makefile` targets **MUST** work when invoked as plain `make <target>` after `make setup`.
|
|
100
100
|
|
|
@@ -13,7 +13,7 @@ What standard set of Makefile target names and execution rules should projects a
|
|
|
13
13
|
|
|
14
14
|
## Decision Outcome
|
|
15
15
|
|
|
16
|
-
**Every project must expose its development actions through a root `Makefile` using a defined set of standardized target names.
|
|
16
|
+
**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-017](017-tool-execution-and-scripting.md), which requires `mise exec --` before routine tool commands.**
|
|
17
17
|
|
|
18
18
|
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.
|
|
19
19
|
|
|
@@ -34,9 +34,9 @@ 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
|
-
#### 2. Makefile recipes MUST use the
|
|
37
|
+
#### 2. Makefile recipes MUST use the shared Mise execution rules
|
|
38
38
|
|
|
39
|
-
After a checkout, the
|
|
39
|
+
After a checkout, the shared execution flow is:
|
|
40
40
|
|
|
41
41
|
```text
|
|
42
42
|
make <target>
|
|
@@ -47,13 +47,14 @@ make <target>
|
|
|
47
47
|
|
|
48
48
|
- The `setup` target must run `mise install` and any small project-specific bootstrap needed before normal targets work.
|
|
49
49
|
- Routine targets such as `build`, `lint`, `test`, `run`, and `publish` must be invoked as `make <target>` by both contributors and CI.
|
|
50
|
-
- Each Makefile recipe must call the real underlying command
|
|
50
|
+
- Each Makefile recipe must call the real underlying command through `mise exec --`, following [agentme-edr-017](017-tool-execution-and-scripting.md).
|
|
51
51
|
- 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.
|
|
52
52
|
- Calling the actual tool is allowed even when that tool itself launches another program as part of its normal interface.
|
|
53
53
|
- Allowed: `mise exec -- pnpm exec eslint ./src`
|
|
54
54
|
- Allowed: `mise exec -- go test -cover ./...`
|
|
55
55
|
- Allowed: `mise exec -- uv run --project . pytest`
|
|
56
|
-
- Disallowed: `
|
|
56
|
+
- Disallowed: `pnpm run lint`
|
|
57
|
+
- Disallowed: `pnpm exec eslint ./src`
|
|
57
58
|
- Disallowed: `mise run lint`
|
|
58
59
|
- Disallowed: `make lint` implemented as `./scripts/lint.sh` when the shell script only forwards to one visible tool command
|
|
59
60
|
|
|
@@ -219,3 +220,8 @@ make all
|
|
|
219
220
|
|
|
220
221
|
* (CHOSEN) **Standardized Makefile targets with Mise-managed explicit tool execution** - Use `make <target>` as the only routine entry point, keep target names standard, and run the actual underlying tool commands through `mise exec --`
|
|
221
222
|
* Reason: This keeps names, execution flow, and tool versions equally predictable while avoiding script indirection.
|
|
223
|
+
|
|
224
|
+
## References
|
|
225
|
+
|
|
226
|
+
- [agentme-edr-005](005-monorepo-structure.md) - Monorepo layout and delegation structure
|
|
227
|
+
- [agentme-edr-017](017-tool-execution-and-scripting.md) - Tool-execution rules for Makefile targets and CI
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentme-edr-017-tool-execution-and-scripting
|
|
3
|
+
description: Defines how Makefiles, CI pipelines, and optional wrapper scripts execute project commands. Use when designing project automation or command entry points.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# agentme-edr-017: Tool execution and scripting
|
|
7
|
+
|
|
8
|
+
## Context and Problem Statement
|
|
9
|
+
|
|
10
|
+
Projects often hide build, lint, and test behavior behind multiple scripting layers, making it hard for developers and CI pipelines to see what actually runs.
|
|
11
|
+
|
|
12
|
+
How should projects execute development commands so the command surface stays predictable and the underlying operations stay obvious?
|
|
13
|
+
|
|
14
|
+
## Decision Outcome
|
|
15
|
+
|
|
16
|
+
**Use Makefiles as the only authoritative command entry point, with targets named by [agentme-edr-008](008-common-targets.md) and implemented with `mise exec --` before the real tool command.**
|
|
17
|
+
|
|
18
|
+
This keeps local development and CI aligned, reduces indirection, and lets contributors understand project behavior by reading one command surface.
|
|
19
|
+
|
|
20
|
+
### Implementation Details
|
|
21
|
+
|
|
22
|
+
- Every project MUST use a root `Makefile` as the authoritative entry point for developer and pipeline commands.
|
|
23
|
+
- The target names in that `Makefile` MUST follow [agentme-edr-008](008-common-targets.md).
|
|
24
|
+
- 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.
|
|
25
|
+
- A Makefile target MUST execute the real operation through `mise exec --` before invoking the tool itself, so it always uses the version pinned in `.mise.toml`. Avoid intermediate script layers that hide the actual command.
|
|
26
|
+
- 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.
|
|
27
|
+
- Direct delegation to another Makefile is allowed when traversing repo, app, or module boundaries, for example `$(MAKE) -C lib build`.
|
|
28
|
+
- Calling the actual tool binary through its native executable launcher is allowed when that is the direct command under `mise exec --`, for example `mise exec -- pnpm exec eslint ./src`, `mise exec -- uv run pyright`, `mise exec -- go test`, or `mise exec -- npx -y monotag`.
|
|
29
|
+
- Makefile targets MUST use `mise exec --` consistently before routine tool commands and MUST NOT call `npm run`, `pnpm run`, `yarn run`, `just`, `task`, or similar abstraction layers for routine project commands.
|
|
30
|
+
- Tool installation and environment preparation MUST be handled explicitly in developer setup instructions and CI workflow steps, using ecosystem-specific installation steps such as `actions/setup-node`, `actions/setup-go`, `astral-sh/setup-uv`, system package managers, or pinned install commands such as `mise install`.
|
|
31
|
+
- `package.json` scripts are optional and MAY exist only as direct reverse-compatibility aliases to one Make target, for example `"test": "make test"`. They MUST stay one-to-one and add no extra orchestration.
|
|
32
|
+
- README examples, contributing guides, and pipeline snippets SHOULD show `make <target>` as the primary way to operate the project.
|
|
33
|
+
|
|
34
|
+
Allowed:
|
|
35
|
+
|
|
36
|
+
- `make lint` running `mise exec -- pnpm exec eslint ./src`
|
|
37
|
+
- `make test` running `mise exec -- go test ./...`
|
|
38
|
+
- `make build` running `mise exec -- uv build --project . --out-dir dist`
|
|
39
|
+
- Root Makefile delegating to module Makefiles with `$(MAKE) -C <module> <target>`
|
|
40
|
+
- A target beginning with `echo ">>> ./lib: lint"`
|
|
41
|
+
|
|
42
|
+
Disallowed:
|
|
43
|
+
|
|
44
|
+
- `make lint` running `pnpm run lint`
|
|
45
|
+
- `make test` running `mise exec -- make test`
|
|
46
|
+
- `make lint` running `pnpm exec eslint ./src` without `mise exec --`
|
|
47
|
+
- CI running `npm run build` when the project already defines `make build`
|
|
48
|
+
- `package.json` scripts that chain multiple operations instead of forwarding to one Make target
|
|
49
|
+
|
|
50
|
+
## Considered Options
|
|
51
|
+
|
|
52
|
+
* (REJECTED) **Runner-agnostic command entry points** - Allow Makefiles, package-manager scripts, shell wrappers, and task runners as equivalent project entry points.
|
|
53
|
+
* Reason: Preserves multiple abstraction layers and weakens the guarantee that developers and CI execute the same visible commands.
|
|
54
|
+
* (CHOSEN) **Makefile-first Mise-managed execution** - Standardize on Makefiles for entry points and require targets to run the underlying commands through `mise exec --`.
|
|
55
|
+
* Reason: Keeps the command surface small, readable, and consistent across languages while ensuring the pinned tool versions from `.mise.toml` are always used.
|
|
56
|
+
|
|
57
|
+
## References
|
|
58
|
+
|
|
59
|
+
- [agentme-edr-005](005-monorepo-structure.md) - Monorepo layout and Makefile hierarchy
|
|
60
|
+
- [agentme-edr-006](006-github-pipelines.md) - CI/CD workflows should call Make targets
|
|
61
|
+
- [agentme-edr-008](008-common-targets.md) - Standard target names
|
|
62
|
+
- [agentme-edr-003](../application/003-javascript-project-tooling.md) - JavaScript tooling commands inside Makefiles
|
|
63
|
+
- [agentme-edr-010](../application/010-golang-project-tooling.md) - Go tooling commands inside Makefiles
|
|
64
|
+
- [agentme-edr-014](../application/014-python-project-tooling.md) - Python tooling commands inside Makefiles
|
|
@@ -8,12 +8,12 @@ Propose changes via pull request. All changes must be verified for clarity and n
|
|
|
8
8
|
|
|
9
9
|
Foundational standards, principles, and guidelines.
|
|
10
10
|
|
|
11
|
-
- [agentme-edr-002](principles/002-coding-best-practices.md) - **Coding best practices**
|
|
12
|
-
- [agentme-edr-004](principles/004-unit-test-requirements.md) - **Unit test requirements**
|
|
13
|
-
- [agentme-edr-007](principles/007-project-quality-standards.md) - **Project quality standards**
|
|
14
|
-
- [agentme-edr-009](principles/009-error-handling.md) - **Error handling**
|
|
15
|
-
- [agentme-edr-012](principles/012-continuous-xdr-enrichment.md) - **Continuous xdr improvement policy**
|
|
16
|
-
- [agentme-edr-016](principles/016-cross-language-module-structure.md) - **Cross-language module structure**
|
|
11
|
+
- [agentme-edr-002](principles/002-coding-best-practices.md) - **Coding best practices** - Keep files small, tests nearby, and docs synchronized
|
|
12
|
+
- [agentme-edr-004](principles/004-unit-test-requirements.md) - **Unit test requirements** - Define minimum unit-test coverage and naming expectations
|
|
13
|
+
- [agentme-edr-007](principles/007-project-quality-standards.md) - **Project quality standards** - Require build, lint, and test verification before completion
|
|
14
|
+
- [agentme-edr-009](principles/009-error-handling.md) - **Error handling** - Standardize explicit errors, logging, and propagation rules
|
|
15
|
+
- [agentme-edr-012](principles/012-continuous-xdr-enrichment.md) - **Continuous xdr improvement policy** - Promote recurring delivery lessons into reusable XDRs
|
|
16
|
+
- [agentme-edr-016](principles/016-cross-language-module-structure.md) - **Cross-language module structure** - Organize modules consistently across supported languages
|
|
17
17
|
|
|
18
18
|
## Articles
|
|
19
19
|
|
|
@@ -25,28 +25,29 @@ Synthetic views combining agentme XDRs and skills around a specific topic.
|
|
|
25
25
|
|
|
26
26
|
Language and framework-specific tooling and project structure.
|
|
27
27
|
|
|
28
|
-
- [agentme-edr-003](application/003-javascript-project-tooling.md) - **JavaScript project tooling and structure** *(includes skill: [001-create-javascript-project](application/skills/001-create-javascript-project/SKILL.md))*
|
|
29
|
-
- [agentme-edr-010](application/010-golang-project-tooling.md) - **Go project tooling and structure** *(includes skill: [003-create-golang-project](application/skills/003-create-golang-project/SKILL.md))*
|
|
30
|
-
- [agentme-edr-014](application/014-python-project-tooling.md) - **Python project tooling and structure** *(includes skill: [005-create-python-project](application/skills/005-create-python-project/SKILL.md))*
|
|
31
|
-
- [agentme-edr-015](application/015-cli-tool-standards.md) - **CLI tool standards**
|
|
28
|
+
- [agentme-edr-003](application/003-javascript-project-tooling.md) - **JavaScript project tooling and structure** - Scaffold JavaScript libraries with the standard toolchain *(includes skill: [001-create-javascript-project](application/skills/001-create-javascript-project/SKILL.md))*
|
|
29
|
+
- [agentme-edr-010](application/010-golang-project-tooling.md) - **Go project tooling and structure** - Scaffold Go CLIs and libraries with the standard layout *(includes skill: [003-create-golang-project](application/skills/003-create-golang-project/SKILL.md))*
|
|
30
|
+
- [agentme-edr-014](application/014-python-project-tooling.md) - **Python project tooling and structure** - Scaffold Python packages and CLIs with the standard layout *(includes skill: [005-create-python-project](application/skills/005-create-python-project/SKILL.md))*
|
|
31
|
+
- [agentme-edr-015](application/015-cli-tool-standards.md) - **CLI tool standards** - Define command UX and behavior for CLI tools
|
|
32
32
|
- [004-select-relevant-xdrs](application/skills/004-select-relevant-xdrs/SKILL.md) - **Select relevant XDRs**
|
|
33
33
|
|
|
34
34
|
## Devops
|
|
35
35
|
|
|
36
36
|
Repository structure, build conventions, and CI/CD pipelines.
|
|
37
37
|
|
|
38
|
-
- [agentme-edr-005](devops/005-monorepo-structure.md) - **Monorepo structure** *(includes skill: [002-monorepo-setup](devops/skills/002-monorepo-setup/SKILL.md))*
|
|
39
|
-
- [agentme-edr-006](devops/006-github-pipelines.md) - **GitHub CI/CD pipelines**
|
|
40
|
-
- [agentme-edr-008](devops/008-common-targets.md) - **Common development script names**
|
|
38
|
+
- [agentme-edr-005](devops/005-monorepo-structure.md) - **Monorepo structure** - Standardize monorepo layout, tooling, and package boundaries *(includes skill: [002-monorepo-setup](devops/skills/002-monorepo-setup/SKILL.md))*
|
|
39
|
+
- [agentme-edr-006](devops/006-github-pipelines.md) - **GitHub CI/CD pipelines** - Define required CI stages and workflow structure
|
|
40
|
+
- [agentme-edr-008](devops/008-common-targets.md) - **Common development script names** - Reuse standard build, lint, and test target names
|
|
41
|
+
- [agentme-edr-017](devops/017-tool-execution-and-scripting.md) - **Tool execution and scripting** - Run tools consistently across shells, Makefiles, and CI
|
|
41
42
|
|
|
42
43
|
## Governance
|
|
43
44
|
|
|
44
45
|
Contribution and collaboration standards shared across projects.
|
|
45
46
|
|
|
46
|
-
- [agentme-edr-013](governance/013-contributing-guide-requirements.md) - **Contributing guide requirements**
|
|
47
|
+
- [agentme-edr-013](governance/013-contributing-guide-requirements.md) - **Contributing guide requirements** - Define the minimum structure for CONTRIBUTING guides
|
|
47
48
|
|
|
48
49
|
## Observability
|
|
49
50
|
|
|
50
51
|
Health, metrics, logging, and monitoring standards.
|
|
51
52
|
|
|
52
|
-
- [agentme-edr-011](observability/011-service-health-check-endpoint.md) - **Service health check endpoint**
|
|
53
|
+
- [agentme-edr-011](observability/011-service-health-check-endpoint.md) - **Service health check endpoint** - Expose a standard runtime health-check endpoint for services
|
|
@@ -51,7 +51,7 @@ Good opening questions:
|
|
|
51
51
|
|
|
52
52
|
### How should you organize the XDR?
|
|
53
53
|
|
|
54
|
-
Follow the XDR template from [_core-adr-
|
|
54
|
+
Follow the XDR template from [_core-adr-002](../../../../_core/adrs/principles/002-xdr-standards.md). Keep the document small, explicit, and decision-focused.
|
|
55
55
|
|
|
56
56
|
Use this checklist:
|
|
57
57
|
|
package/.xdrs/index.md
CHANGED
package/package.json
CHANGED