agentme 0.37.0 → 0.37.1
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/skills/azure-devops-connector/SKILL.md +35 -1
- package/.xdrs/agentme/edrs/application/skills/azure-devops-connector/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/create-golang-project/SKILL.md +54 -1
- package/.xdrs/agentme/edrs/application/skills/create-golang-project/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/create-javascript-project/SKILL.md +34 -1
- package/.xdrs/agentme/edrs/application/skills/create-javascript-project/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/create-python-project/SKILL.md +35 -1
- package/.xdrs/agentme/edrs/application/skills/create-python-project/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/github-connector/SKILL.md +35 -1
- package/.xdrs/agentme/edrs/application/skills/github-connector/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/run-skill-tests/SKILL.md +35 -1
- package/.xdrs/agentme/edrs/application/skills/run-skill-tests/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/select-relevant-xdrs/SKILL.md +35 -1
- package/.xdrs/agentme/edrs/application/skills/select-relevant-xdrs/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/platform/skills/monorepo-setup/SKILL.md +35 -1
- package/.xdrs/agentme/edrs/platform/skills/monorepo-setup/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/principles/skills/refine-plan-mode/SKILL.md +41 -9
- package/.xdrs/agentme/edrs/principles/skills/refine-plan-mode/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/principles/skills/refine-user-story/SKILL.md +39 -5
- package/.xdrs/agentme/edrs/principles/skills/refine-user-story/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/scripts/update-section.test.js +17 -0
- package/package.json +1 -1
|
@@ -8,7 +8,8 @@ description: >
|
|
|
8
8
|
DevOps.
|
|
9
9
|
metadata:
|
|
10
10
|
author: flaviostutz
|
|
11
|
-
version: "1.
|
|
11
|
+
version: "1.2.0"
|
|
12
|
+
updated: 2026-09-21
|
|
12
13
|
---
|
|
13
14
|
|
|
14
15
|
## Overview
|
|
@@ -21,6 +22,27 @@ dedicated subcommand. Contains no business logic (per rule 05): it only reads an
|
|
|
21
22
|
data and normalizes it to the shape consumed by
|
|
22
23
|
[`resolve-pr-comments`](../../../principles/skills/resolve-pr-comments/SKILL.md).
|
|
23
24
|
|
|
25
|
+
### Inputs
|
|
26
|
+
|
|
27
|
+
#### Required
|
|
28
|
+
- PR identifier (org/project/repo + number) and operation
|
|
29
|
+
|
|
30
|
+
#### Optional
|
|
31
|
+
- Thread/comment id (replies, status changes)
|
|
32
|
+
|
|
33
|
+
### Outputs
|
|
34
|
+
|
|
35
|
+
#### Contents
|
|
36
|
+
- Normalized thread/comment records; write confirmation
|
|
37
|
+
|
|
38
|
+
#### Changes
|
|
39
|
+
- PR thread comments or thread status (writes only)
|
|
40
|
+
|
|
41
|
+
### Halt Conditions
|
|
42
|
+
- `az`/`azure-devops` extension missing or unauthenticated
|
|
43
|
+
- Write operation lacks explicit human confirmation
|
|
44
|
+
- Only a non-`az` HTTP fallback is available
|
|
45
|
+
|
|
24
46
|
## Instructions
|
|
25
47
|
|
|
26
48
|
### Authentication check
|
|
@@ -195,6 +217,18 @@ threads/comments `POST`, then updates thread status via the `PATCH` call.
|
|
|
195
217
|
organization before relying on it; degrade to the PR's own URL with no anchor when
|
|
196
218
|
uncertain, rather than guessing at a format that might mislead the human.
|
|
197
219
|
|
|
220
|
+
## Anti-Patterns
|
|
221
|
+
|
|
222
|
+
- **Mistake:** Trusting a zero exit code from `az rest` as proof a write persisted.
|
|
223
|
+
**Why it happens:** `az rest` can silently fall back to an anonymous identity and still exit 0.
|
|
224
|
+
**Instead:** Always pass `--resource ...` explicitly and re-read the thread to confirm.
|
|
225
|
+
- **Mistake:** Falling back to `curl`/web-UI scraping when `az` is missing or unauthenticated.
|
|
226
|
+
**Why it happens:** The target data often looks read-only, so a workaround feels harmless.
|
|
227
|
+
**Instead:** Stop at the Authentication check and wait for the human to fix `az`.
|
|
228
|
+
- **Mistake:** Emitting a `"review-summary"` kind or fabricating a `diff_hunk` for Azure DevOps.
|
|
229
|
+
**Why it happens:** Callers modeled on GitHub's shape expect those fields to exist.
|
|
230
|
+
**Instead:** Normalize to `"thread-comment"` and leave `diff_hunk` null when absent.
|
|
231
|
+
|
|
198
232
|
## References
|
|
199
233
|
|
|
200
234
|
- [`resolve-pr-comments`](../../../principles/skills/resolve-pr-comments/SKILL.md) -- consumes this connector's normalized output.
|
|
@@ -6,7 +6,8 @@ description: >
|
|
|
6
6
|
asks to create, scaffold, or initialize a new Go project, CLI binary, or Go module.
|
|
7
7
|
metadata:
|
|
8
8
|
author: flaviostutz
|
|
9
|
-
version: "1.0"
|
|
9
|
+
version: "1.1.0"
|
|
10
|
+
updated: 2026-09-21
|
|
10
11
|
compatibility: Go 1.21+
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -16,6 +17,27 @@ Creates a complete Go project from scratch, following the layout from [agentme-e
|
|
|
16
17
|
|
|
17
18
|
Related EDRs: [agentme-edr-102](../../102-golang-project-tooling.md), [agentme-edr-016](../../../principles/016-cross-language-module-structure.md), [agentme-edr-126](../../126-pragmatic-hexagonal-architecture.md)
|
|
18
19
|
|
|
20
|
+
### Inputs
|
|
21
|
+
|
|
22
|
+
#### Required
|
|
23
|
+
- Go module path (e.g. `github.com/<owner>/<project>`)
|
|
24
|
+
|
|
25
|
+
#### Optional
|
|
26
|
+
- Binary name, description, author, Go version, feature name
|
|
27
|
+
|
|
28
|
+
### Outputs
|
|
29
|
+
|
|
30
|
+
#### Contents
|
|
31
|
+
- `go.mod`, `main.go`, Makefile, `.golangci.yml`, `app/<feature>/`, `adapters/cli/`
|
|
32
|
+
|
|
33
|
+
#### Changes
|
|
34
|
+
- None
|
|
35
|
+
|
|
36
|
+
### Halt Conditions
|
|
37
|
+
- Module path not specified and not inferable from context
|
|
38
|
+
- Business logic requested inside `main.go` or `adapters/cli/`
|
|
39
|
+
- Unsure whether an `internal/` package is justified
|
|
40
|
+
|
|
19
41
|
## Instructions
|
|
20
42
|
|
|
21
43
|
### Phase 1: Gather information
|
|
@@ -352,3 +374,34 @@ Fix any compile or lint errors before finishing.
|
|
|
352
374
|
- All development tasks go through `make` targets. The Makefile recipes call `mise exec -- go ...` and related tools directly.
|
|
353
375
|
- Do not create an `internal/` package unless explicitly justified (importability is preferred).
|
|
354
376
|
- If the project is a reusable library, place consumer examples in a sibling `examples/` folder outside the module root and keep them on the public module import path.
|
|
377
|
+
|
|
378
|
+
## Examples
|
|
379
|
+
|
|
380
|
+
**Input:** "Create a Go CLI project called `logscan` for parsing log files"
|
|
381
|
+
- Module `github.com/<owner>/logscan`, binary `logscan`, feature package `parse`
|
|
382
|
+
- Creates `main.go`, `Makefile`, `.mise.toml`, `.golangci.yml`, `go.mod`
|
|
383
|
+
- Creates `app/parse/parse.go` plus test, `adapters/cli/parse.go`
|
|
384
|
+
- Verifies with `make setup && make all`
|
|
385
|
+
|
|
386
|
+
**Input:** "Scaffold a Go module inside an existing monorepo"
|
|
387
|
+
- Uses the workspace module path plus the project subdirectory as the module name
|
|
388
|
+
- Reuses the monorepo's shared Makefile conventions instead of duplicating them
|
|
389
|
+
|
|
390
|
+
## Edge Cases
|
|
391
|
+
|
|
392
|
+
- **Existing files** — skip creation; adapt references to the existing structure.
|
|
393
|
+
- **Library instead of CLI** — omit `adapters/cli/` and `main.go`; place consumer examples in a sibling `examples/` folder.
|
|
394
|
+
- **Multiple features from the start** — scaffold each as its own `app/<feature>/` package; do not merge unrelated logic into one package.
|
|
395
|
+
- **Outbound integration needed** — add `adapters/connectors/<resource>/` rather than calling external services from `app/`.
|
|
396
|
+
|
|
397
|
+
## Anti-Patterns
|
|
398
|
+
|
|
399
|
+
- **Mistake:** Putting business logic directly in `main.go` or `adapters/cli/`.
|
|
400
|
+
**Why it happens:** It is the fastest path to a working binary during scaffolding.
|
|
401
|
+
**Instead:** Keep `main.go`/CLI adapters thin; put logic in `app/<feature>/`.
|
|
402
|
+
- **Mistake:** Using `fmt.Println` for diagnostic or debug output.
|
|
403
|
+
**Why it happens:** It is the simplest way to print while writing new code.
|
|
404
|
+
**Instead:** Log with `logrus` at the appropriate level instead.
|
|
405
|
+
- **Mistake:** Creating an `internal/` package by default.
|
|
406
|
+
**Why it happens:** It feels like a safe default that blocks unwanted external imports.
|
|
407
|
+
**Instead:** Keep packages importable unless there is an explicit justification.
|
|
@@ -7,7 +7,8 @@ description: >
|
|
|
7
7
|
package, or similar project structure.
|
|
8
8
|
metadata:
|
|
9
9
|
author: flaviostutz
|
|
10
|
-
version: "1.0"
|
|
10
|
+
version: "1.1.0"
|
|
11
|
+
updated: 2026-09-21
|
|
11
12
|
compatibility: JavaScript/TypeScript, Node.js 18+
|
|
12
13
|
---
|
|
13
14
|
|
|
@@ -22,6 +23,26 @@ into `.cache/`, and uses Makefiles as the only entry points. Boilerplate is deri
|
|
|
22
23
|
|
|
23
24
|
Related EDRs: [agentme-edr-101](../../101-javascript-project-tooling.md), [agentme-edr-016](../../../principles/016-cross-language-module-structure.md), [agentme-edr-126](../../126-pragmatic-hexagonal-architecture.md)
|
|
24
25
|
|
|
26
|
+
### Inputs
|
|
27
|
+
|
|
28
|
+
#### Required
|
|
29
|
+
- Package name (npm-compatible)
|
|
30
|
+
|
|
31
|
+
#### Optional
|
|
32
|
+
- Description, author, Node.js version, CLI vs. library
|
|
33
|
+
|
|
34
|
+
### Outputs
|
|
35
|
+
|
|
36
|
+
#### Contents
|
|
37
|
+
- Root/`lib`/`examples` Makefiles, `package.json`, `src/`
|
|
38
|
+
|
|
39
|
+
#### Changes
|
|
40
|
+
- None
|
|
41
|
+
|
|
42
|
+
### Halt Conditions
|
|
43
|
+
- Package name not specified and not inferable from context
|
|
44
|
+
- Unclear whether the project needs CLI bundling or examples
|
|
45
|
+
|
|
25
46
|
## Instructions
|
|
26
47
|
|
|
27
48
|
### Phase 1: Gather information
|
|
@@ -446,3 +467,15 @@ All `[package-name]` replaced with `retry-client`.
|
|
|
446
467
|
- **CLI tool** — add `"bin": "dist/main.js"` to `package.json` and create `lib/src/main.ts` as the CLI entry point; add `esbuild` bundle target in `lib/Makefile`
|
|
447
468
|
- **No examples needed** — omit the `examples/` directory; remove the `examples` delegation from root `Makefile`
|
|
448
469
|
- **Binary bundling (Lambda/browser)** — add an esbuild step to `lib/Makefile`: `pnpm exec esbuild src/main.ts --bundle --platform=node --outfile=dist/bundle.js`
|
|
470
|
+
|
|
471
|
+
## Anti-Patterns
|
|
472
|
+
|
|
473
|
+
- **Mistake:** Creating `examples/` even when the user said no examples were needed.
|
|
474
|
+
**Why it happens:** The scaffolding template always includes an `examples/` folder by default.
|
|
475
|
+
**Instead:** Omit `examples/` and remove its delegation from the root `Makefile`.
|
|
476
|
+
- **Mistake:** Adding a CLI `bin` entry without an `esbuild` bundle target.
|
|
477
|
+
**Why it happens:** `package.json`'s `bin` field is easy to add but easy to forget bundling for.
|
|
478
|
+
**Instead:** Always pair a CLI entry point with an `esbuild` bundle target in `lib/Makefile`.
|
|
479
|
+
- **Mistake:** Leaving `[package-name]` placeholders unreplaced in generated files.
|
|
480
|
+
**Why it happens:** Placeholders are copied from boilerplate across many files at once.
|
|
481
|
+
**Instead:** Verify every `[package-name]` occurrence was replaced before finishing.
|
|
@@ -6,7 +6,8 @@ description: >
|
|
|
6
6
|
scaffold, or initialize a new Python package, CLI, or similar project structure.
|
|
7
7
|
metadata:
|
|
8
8
|
author: flaviostutz
|
|
9
|
-
version: "1.0"
|
|
9
|
+
version: "1.1.0"
|
|
10
|
+
updated: 2026-09-21
|
|
10
11
|
compatibility: Python 3.12+
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -20,6 +21,27 @@ organizes internal code following [agentme-edr-126](../../126-pragmatic-hexagona
|
|
|
20
21
|
|
|
21
22
|
Related EDRs: [agentme-edr-103](../../103-python-project-tooling.md), [agentme-edr-016](../../../principles/016-cross-language-module-structure.md), [agentme-edr-126](../../126-pragmatic-hexagonal-architecture.md)
|
|
22
23
|
|
|
24
|
+
### Inputs
|
|
25
|
+
|
|
26
|
+
#### Required
|
|
27
|
+
- Package name (Python distribution/import name)
|
|
28
|
+
|
|
29
|
+
#### Optional
|
|
30
|
+
- Description, author, Python version, entry point, repo URL
|
|
31
|
+
|
|
32
|
+
### Outputs
|
|
33
|
+
|
|
34
|
+
#### Contents
|
|
35
|
+
- Root/`lib/` Makefiles, `pyproject.toml`, `src/`, `tests/`, examples
|
|
36
|
+
|
|
37
|
+
#### Changes
|
|
38
|
+
- None
|
|
39
|
+
|
|
40
|
+
### Halt Conditions
|
|
41
|
+
- Package name not specified and not inferable from context
|
|
42
|
+
- Framework-specific request conflicts with the baseline layout
|
|
43
|
+
- Unsure whether the spike/experiment lint exemption applies
|
|
44
|
+
|
|
23
45
|
## Instructions
|
|
24
46
|
|
|
25
47
|
### Phase 1: Gather information
|
|
@@ -404,6 +426,18 @@ After creating the files:
|
|
|
404
426
|
- If an example needs extra dependencies, keep them in that example's `pyproject.toml`; do not move them into `lib/pyproject.toml` unless the library truly needs them.
|
|
405
427
|
- If the user asks for an app with framework-specific needs such as FastAPI or Django, keep this baseline and add the framework config on top instead of replacing it.
|
|
406
428
|
|
|
429
|
+
## Anti-Patterns
|
|
430
|
+
|
|
431
|
+
- **Mistake:** Assuming host-installed Python/`uv` instead of pinning versions in `.mise.toml`.
|
|
432
|
+
**Why it happens:** The host tools appear to work fine during local testing.
|
|
433
|
+
**Instead:** Always pin the Python and `uv` versions in the root `.mise.toml`.
|
|
434
|
+
- **Mistake:** Moving an example's extra dependencies into `lib/pyproject.toml`.
|
|
435
|
+
**Why it happens:** One shared dependency list looks simpler than several.
|
|
436
|
+
**Instead:** Keep example-only dependencies in that example's own `pyproject.toml`.
|
|
437
|
+
- **Mistake:** Skipping examples and linting for any project that feels small.
|
|
438
|
+
**Why it happens:** "Small project" is treated as sufficient justification on its own.
|
|
439
|
+
**Instead:** Only skip when the project is under 100 lines AND another XDR explicitly allows it.
|
|
440
|
+
|
|
407
441
|
## References
|
|
408
442
|
|
|
409
443
|
- [agentme-edr-103](../../103-python-project-tooling.md)
|
|
@@ -7,7 +7,8 @@ description: >
|
|
|
7
7
|
post PR comments, resolve review threads, or check out a PR branch on GitHub.
|
|
8
8
|
metadata:
|
|
9
9
|
author: flaviostutz
|
|
10
|
-
version: "1.
|
|
10
|
+
version: "1.2.0"
|
|
11
|
+
updated: 2026-09-21
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
## Overview
|
|
@@ -20,6 +21,27 @@ rule 05): it does not decide what a comment means, what action to take, or when
|
|
|
20
21
|
it only reads and writes data and normalizes it to the shape consumed by
|
|
21
22
|
[`resolve-pr-comments`](../../../principles/skills/resolve-pr-comments/SKILL.md).
|
|
22
23
|
|
|
24
|
+
### Inputs
|
|
25
|
+
|
|
26
|
+
#### Required
|
|
27
|
+
- PR identifier (`owner/repo` + number) and operation
|
|
28
|
+
|
|
29
|
+
#### Optional
|
|
30
|
+
- Comment/thread id (replies, resolution)
|
|
31
|
+
|
|
32
|
+
### Outputs
|
|
33
|
+
|
|
34
|
+
#### Contents
|
|
35
|
+
- Normalized comment/thread records; write confirmation
|
|
36
|
+
|
|
37
|
+
#### Changes
|
|
38
|
+
- PR comments, replies, thread resolution (writes only)
|
|
39
|
+
|
|
40
|
+
### Halt Conditions
|
|
41
|
+
- `gh` CLI missing or unauthenticated
|
|
42
|
+
- Write operation lacks explicit human confirmation
|
|
43
|
+
- Only a non-`gh` HTTP fallback is available
|
|
44
|
+
|
|
23
45
|
## Instructions
|
|
24
46
|
|
|
25
47
|
### Authentication check
|
|
@@ -177,6 +199,18 @@ thread via the GraphQL mutation using that comment's thread node id.
|
|
|
177
199
|
`GH_PAGER=cat gh api repos/{owner}/{repo}/issues/{n}/comments`) when running non-
|
|
178
200
|
interactively, which disables `gh`'s pager unconditionally.
|
|
179
201
|
|
|
202
|
+
## Anti-Patterns
|
|
203
|
+
|
|
204
|
+
- **Mistake:** Falling back to `curl`/HTML scraping when `gh` is missing or unauthenticated.
|
|
205
|
+
**Why it happens:** The target data is often technically public, so a workaround feels harmless.
|
|
206
|
+
**Instead:** Stop at the Authentication check and wait for the human to fix `gh`.
|
|
207
|
+
- **Mistake:** Assuming a numeric REST comment/review id also works for GraphQL mutations.
|
|
208
|
+
**Why it happens:** Both values look like ordinary identifiers for the same comment.
|
|
209
|
+
**Instead:** Always resolve the thread's GraphQL node id first via `reviewThreads`.
|
|
210
|
+
- **Mistake:** Posting a write without showing the mandatory confirmation summary.
|
|
211
|
+
**Why it happens:** The payload already looks correct, so confirmation feels redundant.
|
|
212
|
+
**Instead:** Always show System/Operation/Fields/Impact and wait for explicit confirmation.
|
|
213
|
+
|
|
180
214
|
## References
|
|
181
215
|
|
|
182
216
|
- [`resolve-pr-comments`](../../../principles/skills/resolve-pr-comments/SKILL.md) -- consumes this connector's normalized output.
|
|
@@ -6,13 +6,35 @@ description: >
|
|
|
6
6
|
or validate a skill, or before merging a PR that modifies a skill or its SKILL.test.md.
|
|
7
7
|
metadata:
|
|
8
8
|
author: flaviostutz
|
|
9
|
-
version: "1.0"
|
|
9
|
+
version: "1.1.0"
|
|
10
|
+
updated: 2026-09-21
|
|
10
11
|
---
|
|
11
12
|
|
|
12
13
|
## Overview
|
|
13
14
|
|
|
14
15
|
Loads `SKILL.test.md` from a skill directory, runs each scenario by invoking the target skill with the specified trigger, evaluates every assertion against the output, and produces a structured test report.
|
|
15
16
|
|
|
17
|
+
### Inputs
|
|
18
|
+
|
|
19
|
+
#### Required
|
|
20
|
+
- Path to the skill directory to test
|
|
21
|
+
|
|
22
|
+
#### Optional
|
|
23
|
+
- None
|
|
24
|
+
|
|
25
|
+
### Outputs
|
|
26
|
+
|
|
27
|
+
#### Contents
|
|
28
|
+
- Structured PASS/FAIL test report, per scenario and assertion
|
|
29
|
+
|
|
30
|
+
#### Changes
|
|
31
|
+
- None (read-only; never modifies the skill or test file)
|
|
32
|
+
|
|
33
|
+
### Halt Conditions
|
|
34
|
+
- Skill path not provided and not inferable from context
|
|
35
|
+
- Skill directory or `SKILL.test.md` not found
|
|
36
|
+
- `SKILL.test.md` has no scenarios
|
|
37
|
+
|
|
16
38
|
## Instructions
|
|
17
39
|
|
|
18
40
|
### Phase 1: Locate and Validate SKILL.test.md
|
|
@@ -111,6 +133,18 @@ A scenario passes only when every one of its assertions passes. The overall outc
|
|
|
111
133
|
- If the target skill fails to activate (e.g., not registered in VS Code), note this in the report as FAIL with reason "skill could not be activated" and continue to remaining scenarios.
|
|
112
134
|
- If `skill-version` in `SKILL.test.md` does not match `SKILL.md`, emit a WARNING at the top of the report but do not halt.
|
|
113
135
|
|
|
136
|
+
## Anti-Patterns
|
|
137
|
+
|
|
138
|
+
- **Mistake:** Modifying the skill or its test file while testing it.
|
|
139
|
+
**Why it happens:** An obvious bug seen mid-test is tempting to fix right away.
|
|
140
|
+
**Instead:** Never modify either file; only report the FAIL and evidence.
|
|
141
|
+
- **Mistake:** Treating an INCONCLUSIVE assertion as a pass.
|
|
142
|
+
**Why it happens:** An ambiguous result can feel close enough to success.
|
|
143
|
+
**Instead:** Always treat INCONCLUSIVE the same as FAIL, with a reason.
|
|
144
|
+
- **Mistake:** Silently continuing when `skill-version` mismatches `SKILL.md`.
|
|
145
|
+
**Why it happens:** A version-string mismatch looks cosmetic and unimportant.
|
|
146
|
+
**Instead:** Emit a visible WARNING at the top of the report.
|
|
147
|
+
|
|
114
148
|
## References
|
|
115
149
|
|
|
116
150
|
- [`agentme-edr-policy-017`](../../../principles/017-skill-testing.md) — Skill testing mandate and SKILL.test.md format specification
|
|
@@ -7,7 +7,8 @@ description: >
|
|
|
7
7
|
bootstrap agentme guidance into a repository without manually deciding which records to keep.
|
|
8
8
|
metadata:
|
|
9
9
|
author: flaviostutz
|
|
10
|
-
version: "1.0"
|
|
10
|
+
version: "1.1.0"
|
|
11
|
+
updated: 2026-09-21
|
|
11
12
|
compatibility: Node.js 18+
|
|
12
13
|
---
|
|
13
14
|
|
|
@@ -17,6 +18,27 @@ Installs the full agentme XDR set for a repository through the published CLI, th
|
|
|
17
18
|
records that clearly do not fit the target project by passing explicit `--exclude` flags during
|
|
18
19
|
extraction.
|
|
19
20
|
|
|
21
|
+
### Inputs
|
|
22
|
+
|
|
23
|
+
#### Required
|
|
24
|
+
- Target repository to install/update agentme XDRs into
|
|
25
|
+
|
|
26
|
+
#### Optional
|
|
27
|
+
- Explicit list of XDRs to keep or exclude
|
|
28
|
+
|
|
29
|
+
### Outputs
|
|
30
|
+
|
|
31
|
+
#### Contents
|
|
32
|
+
- Installed `.xdrs/` tree, minus excluded records
|
|
33
|
+
|
|
34
|
+
#### Changes
|
|
35
|
+
- Existing `.xdrs/` merged/updated in place
|
|
36
|
+
|
|
37
|
+
### Halt Conditions
|
|
38
|
+
- Package does not expose enough metadata to enumerate shipped XDRs
|
|
39
|
+
- Extraction would overwrite locally customized agent files
|
|
40
|
+
- Candidate exclusion is debatable (keep instead of guessing)
|
|
41
|
+
|
|
20
42
|
## Instructions
|
|
21
43
|
|
|
22
44
|
### Phase 1: Discover the available extractable artifacts
|
|
@@ -131,6 +153,18 @@ Input: "Set up agentme for this repo"
|
|
|
131
153
|
- If the repository is a spike or intentionally minimal experiment, still prefer the smallest preset
|
|
132
154
|
set of workflow artifacts and avoid adding scaffolding that the project will not use.
|
|
133
155
|
|
|
156
|
+
## Anti-Patterns
|
|
157
|
+
|
|
158
|
+
- **Mistake:** Excluding an XDR whenever its fit is merely debatable.
|
|
159
|
+
**Why it happens:** Fewer records feels like a cleaner, more tailored result.
|
|
160
|
+
**Instead:** Keep the XDR; exclude only records that clearly do not fit.
|
|
161
|
+
- **Mistake:** Overwriting locally customized agent files during extraction.
|
|
162
|
+
**Why it happens:** Preset extraction defaults to replacing existing files.
|
|
163
|
+
**Instead:** Warn the user first and describe the likely merge points.
|
|
164
|
+
- **Mistake:** Failing immediately when the CLI cannot list shipped XDRs directly.
|
|
165
|
+
**Why it happens:** The direct enumeration path is the expected happy path.
|
|
166
|
+
**Instead:** Fall back to published package metadata or the README inventory.
|
|
167
|
+
|
|
134
168
|
## References
|
|
135
169
|
|
|
136
170
|
- [agentme README](../../../../../../README.md)
|
|
@@ -8,7 +8,8 @@ description: >
|
|
|
8
8
|
complies with the standard structure.
|
|
9
9
|
metadata:
|
|
10
10
|
author: flaviostutz
|
|
11
|
-
version: "1.0"
|
|
11
|
+
version: "1.1.0"
|
|
12
|
+
updated: 2026-09-21
|
|
12
13
|
---
|
|
13
14
|
|
|
14
15
|
## Overview
|
|
@@ -20,6 +21,27 @@ test any part of the monorepo with a single, predictable command.
|
|
|
20
21
|
|
|
21
22
|
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
23
|
|
|
24
|
+
### Inputs
|
|
25
|
+
|
|
26
|
+
#### Required
|
|
27
|
+
- Applications and modules to scaffold or extend
|
|
28
|
+
|
|
29
|
+
#### Optional
|
|
30
|
+
- Primary language(s), tool versions, target directory
|
|
31
|
+
|
|
32
|
+
### Outputs
|
|
33
|
+
|
|
34
|
+
#### Contents
|
|
35
|
+
- Root/app/module Makefiles, READMEs, `.mise.toml`, `.gitignore`
|
|
36
|
+
|
|
37
|
+
#### Changes
|
|
38
|
+
- None
|
|
39
|
+
|
|
40
|
+
### Halt Conditions
|
|
41
|
+
- Applications/modules not specified and not inferable from context
|
|
42
|
+
- Cross-application dependency requested (ambiguous boundary)
|
|
43
|
+
- Existing README/Makefile found without explicit confirmation
|
|
44
|
+
|
|
23
45
|
## Instructions
|
|
24
46
|
|
|
25
47
|
### Phase 1: Gather information
|
|
@@ -338,3 +360,15 @@ test:
|
|
|
338
360
|
- **Module with no compilable output (e.g., pure scripts):** Still create the Makefile; `build` can be a no-op (`@true`) but the target must exist.
|
|
339
361
|
- **Language not listed above:** Mirror the pattern — `build` produces an artifact, `lint` runs static analysis, `test` runs tests. Adapt commands to the actual toolchain.
|
|
340
362
|
- **Existing files:** Never overwrite existing `README.md`, `CONTRIBUTING.md`, or `Makefile` files without user confirmation. Diff and propose additions instead.
|
|
363
|
+
|
|
364
|
+
## Anti-Patterns
|
|
365
|
+
|
|
366
|
+
- **Mistake:** Letting one application import another application's code directly.
|
|
367
|
+
**Why it happens:** Reaching across app folders feels faster than publishing a shared library.
|
|
368
|
+
**Instead:** Refuse the direct import and move the shared code into `shared/libs/`.
|
|
369
|
+
- **Mistake:** Silently overwriting an existing `README.md`, `CONTRIBUTING.md`, or `Makefile`.
|
|
370
|
+
**Why it happens:** Scaffolding logic assumes a clean, empty target directory.
|
|
371
|
+
**Instead:** Diff against the existing file and propose additions instead of overwriting.
|
|
372
|
+
- **Mistake:** Skipping the `Makefile` for a module with no compilable output.
|
|
373
|
+
**Why it happens:** A pure-script module seems to need no build step at all.
|
|
374
|
+
**Instead:** Still create the Makefile with a no-op `build` target (`@true`) for consistency.
|
|
@@ -8,7 +8,8 @@ description: >
|
|
|
8
8
|
the XDRS repository even when not directly exposed in the .agents skills folder.
|
|
9
9
|
metadata:
|
|
10
10
|
author: flaviostutz
|
|
11
|
-
version: "3.0"
|
|
11
|
+
version: "3.1.0"
|
|
12
|
+
updated: 2026-09-21
|
|
12
13
|
---
|
|
13
14
|
|
|
14
15
|
## Overview
|
|
@@ -29,6 +30,27 @@ Ensures that every plan is deeply validated through iterative consistency checks
|
|
|
29
30
|
|
|
30
31
|
**Artifact rule**: The plan is a single continuously-edited final artifact, not an append-only log. Process detail — Q&A rounds, phase-gate confirmations, todo-list tracking — never enters the deliverable; todos stay in the agent's todo-list tool. When a later phase reverses an earlier decision or section, edit it in place — never leave the superseded content beside the replacement. The final artifact's structure follows the **Final Plan Artifact Template** below.
|
|
31
32
|
|
|
33
|
+
### Inputs
|
|
34
|
+
|
|
35
|
+
#### Required
|
|
36
|
+
- Task, feature, or decision to plan
|
|
37
|
+
|
|
38
|
+
#### Optional
|
|
39
|
+
- Constraints, prior art, related decisions
|
|
40
|
+
|
|
41
|
+
### Outputs
|
|
42
|
+
|
|
43
|
+
#### Contents
|
|
44
|
+
- Final Plan Artifact (steps, verification, decisions)
|
|
45
|
+
|
|
46
|
+
#### Changes
|
|
47
|
+
- None until Phase 7 handoff
|
|
48
|
+
|
|
49
|
+
### Halt Conditions
|
|
50
|
+
- Unresolved ambiguity or open assumption remains
|
|
51
|
+
- Human has not confirmed phase convergence
|
|
52
|
+
- Low confidence in a subjective/domain decision
|
|
53
|
+
|
|
32
54
|
## Final Plan Artifact Template
|
|
33
55
|
|
|
34
56
|
The **final artifact** (Phase 7 handoff) uses this exact section order, no competing top-level sections — matching GitHub Copilot's native Plan Mode output shape:
|
|
@@ -301,14 +323,24 @@ Do not start execution to escape planning discomfort — only start when confide
|
|
|
301
323
|
|
|
302
324
|
## Anti-Patterns
|
|
303
325
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
- **
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
- **
|
|
311
|
-
|
|
326
|
+
- **Mistake:** Running Q&A rounds that only confirm the plan against itself.
|
|
327
|
+
**Why it happens:** Frequent questions look thorough even when they validate rather than challenge.
|
|
328
|
+
**Instead:** Ask questions that challenge assumptions, not ones that just self-validate.
|
|
329
|
+
- **Mistake:** Letting the plan grow beyond the original request unnoticed.
|
|
330
|
+
**Why it happens:** Small additions feel harmless one at a time.
|
|
331
|
+
**Instead:** Flag every addition to the human explicitly.
|
|
332
|
+
- **Mistake:** Answering subjective or domain questions on the agent's own and proceeding.
|
|
333
|
+
**Why it happens:** It feels faster than waiting for human input.
|
|
334
|
+
**Instead:** Treat the human as the oracle for domain and subjective decisions.
|
|
335
|
+
- **Mistake:** Treating the agent's own certainty as proof the plan is correct.
|
|
336
|
+
**Why it happens:** A confident tone feels like validation on its own.
|
|
337
|
+
**Instead:** Run every check regardless of how confident the agent sounds.
|
|
338
|
+
- **Mistake:** Citing files, APIs, statistics, or sources without verifying they exist.
|
|
339
|
+
**Why it happens:** Plausible-sounding references are mistaken for confirmed ones.
|
|
340
|
+
**Instead:** Verify immediately, or list in Unverified References with a first-step check.
|
|
341
|
+
- **Mistake:** Letting the plan accumulate Q&A rounds, gate confirmations, and superseded drafts.
|
|
342
|
+
**Why it happens:** Process narrative is easy to leave behind when editing in a hurry.
|
|
343
|
+
**Instead:** Keep the plan a continuously-edited deliverable matching the Final Plan Artifact Template.
|
|
312
344
|
|
|
313
345
|
## Re-Plan Triggers
|
|
314
346
|
|
|
@@ -7,7 +7,8 @@ description: >
|
|
|
7
7
|
complete, and ready for implementation.
|
|
8
8
|
metadata:
|
|
9
9
|
author: flaviostutz
|
|
10
|
-
version: "4.
|
|
10
|
+
version: "4.2.0"
|
|
11
|
+
updated: 2026-09-21
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
## Overview
|
|
@@ -20,6 +21,27 @@ Activate when:
|
|
|
20
21
|
- The change may affect multiple parts of a system and needs a vertical-slice check.
|
|
21
22
|
- A requirement needs to be refined into a clear, testable story.
|
|
22
23
|
|
|
24
|
+
### Inputs
|
|
25
|
+
|
|
26
|
+
#### Required
|
|
27
|
+
- Story request or draft to refine
|
|
28
|
+
|
|
29
|
+
#### Optional
|
|
30
|
+
- Initiative/epic context, related docs
|
|
31
|
+
|
|
32
|
+
### Outputs
|
|
33
|
+
|
|
34
|
+
#### Contents
|
|
35
|
+
- Implementation-ready story, or split stories
|
|
36
|
+
|
|
37
|
+
#### Changes
|
|
38
|
+
- Story/initiative files under `.assets/`
|
|
39
|
+
|
|
40
|
+
### Halt Conditions
|
|
41
|
+
- Unresolved ambiguity or open decision remains
|
|
42
|
+
- Human declines to answer a required question
|
|
43
|
+
- Story still too large after a split is proposed
|
|
44
|
+
|
|
23
45
|
## Instructions
|
|
24
46
|
|
|
25
47
|
### Core Rules
|
|
@@ -144,7 +166,7 @@ Before beginning analysis, gather factual context about the system, process, or
|
|
|
144
166
|
|
|
145
167
|
#### Step 2 — Requirements loop
|
|
146
168
|
|
|
147
|
-
Loop asking questions across the 6 areas below until convergence. Apply the Phase navigation rule
|
|
169
|
+
Loop asking questions across the 6 areas below until convergence. Apply the Phase navigation rule and the Core Rules hard gate — a detailed-looking input does not exempt this loop.
|
|
148
170
|
|
|
149
171
|
**Apply Context Probe rule** throughout this step: whenever a gap in any area could be resolved by an external document, spec, URL, screenshot, or artifact not yet in the Context Summary, ask for it specifically.
|
|
150
172
|
|
|
@@ -157,9 +179,9 @@ Loop asking questions across the 6 areas below until convergence. Apply the Phas
|
|
|
157
179
|
| Edge cases | What unusual but valid scenarios must work? What invalid inputs or error paths must be handled? What happens on retries, duplicates, partial failure, or missing data? |
|
|
158
180
|
| Dependencies | What upstream or downstream systems affect the change? Are there required approvals, sequencing, or external decisions? Does any migration, rollout, or compatibility concern exist? Is there a real named person — a domain expert, business owner, or decision maker — who can be contacted during implementation if questions arise? (Capture name and role only when they are an actual known person; never fabricate a contact.) |
|
|
159
181
|
|
|
160
|
-
**Interface and integration scan** (apply Context Probe rule
|
|
182
|
+
**Interface and integration scan** (apply Context Probe rule): before closing Step 2, check for external APIs (endpoints, methods, payloads, auth), I/O data (fields, types, formats, constraints), docs/runbooks, contact names/roles, and business rules tied to the story. Ask targeted questions, or apply the Context Probe rule, for anything missing.
|
|
161
183
|
|
|
162
|
-
Do not proceed to Step 3 while any open decision
|
|
184
|
+
Do not proceed to Step 3 while any open decision or ambiguous rule remains (Core Rules hard gate).
|
|
163
185
|
|
|
164
186
|
#### Step 3 — Scope size evaluation
|
|
165
187
|
|
|
@@ -298,7 +320,7 @@ After all 9 angles converge, use `vscode_askQuestions` (per Phase gate UI rule)
|
|
|
298
320
|
|
|
299
321
|
### Phase 7: Implementer-Perspective Challenge
|
|
300
322
|
|
|
301
|
-
For each angle, apply the
|
|
323
|
+
For each angle, apply the Phase 6 per-angle protocol: 10–20 grounded questions, answer what's known, ask the user about gaps via `vscode_askQuestions`, apply the Context Probe rule for implementer artifacts (specs, API references, contracts), and never resolve a choice point unilaterally. The Phase navigation rule governs loop control.
|
|
302
324
|
|
|
303
325
|
**1. Verifiable acceptance criteria**
|
|
304
326
|
Can every acceptance criterion be independently tested by a developer without ambiguity? Is "done" unambiguous for each item, with no subjective interpretation required? Are criteria specific enough to write automated tests against?
|
|
@@ -493,6 +515,18 @@ Apply the same 4 criteria from Phase 2 Step 3. If two or more are met, the story
|
|
|
493
515
|
- **Request spans multiple independent user outcomes**: always split into separate vertical-slice stories rather than merging into one broad story.
|
|
494
516
|
- **Diagram cannot be generated**: describe the user journey in a plain-language step-by-step walkthrough. The intent of Phase 5 is to externalize the journey — the medium is secondary.
|
|
495
517
|
|
|
518
|
+
## Anti-Patterns
|
|
519
|
+
|
|
520
|
+
- **Mistake:** Producing output while a decision is still open.
|
|
521
|
+
**Why it happens:** The input already looks detailed enough.
|
|
522
|
+
**Instead:** Apply the hard gate; resolve it via questions first.
|
|
523
|
+
- **Mistake:** Merging independent user outcomes into one story.
|
|
524
|
+
**Why it happens:** One story feels simpler than several.
|
|
525
|
+
**Instead:** Split into independently releasable vertical slices.
|
|
526
|
+
- **Mistake:** Treating a skipped Context Probe as unresolved.
|
|
527
|
+
**Why it happens:** Missing context feels like an open ambiguity.
|
|
528
|
+
**Instead:** Record it as "not provided," not a blocker.
|
|
529
|
+
|
|
496
530
|
## References
|
|
497
531
|
|
|
498
532
|
- [`agentme-edr-012`](../../012-continuous-xdr-enrichment.md) — Continuous XDR enrichment policy
|
package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/scripts/update-section.test.js
CHANGED
|
@@ -90,6 +90,23 @@ test('list renders one bullet block per section, not tab-aligned columns', () =>
|
|
|
90
90
|
assert.match(stdout, /^ {2}similar-to: review-comment\/333$/m);
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
+
test('list --json renders one JSON object per section with the same fields', () => {
|
|
94
|
+
const file = writeFixture();
|
|
95
|
+
const { status, stdout } = run(['list', file, '--json']);
|
|
96
|
+
assert.equal(status, 0);
|
|
97
|
+
const rows = JSON.parse(stdout);
|
|
98
|
+
assert.equal(rows.length, 2);
|
|
99
|
+
assert.equal(rows[0].id, 'issue-comment/111');
|
|
100
|
+
assert.equal(rows[0].title, 'Contributor offers to help');
|
|
101
|
+
assert.equal(rows[1].id, 'review-comment/222');
|
|
102
|
+
assert.equal(rows[1]['author-raw'], 'octocat');
|
|
103
|
+
assert.equal(rows[1].criticality, 'medium');
|
|
104
|
+
assert.equal(rows[1]['automation-suggestion'], 'fully-auto');
|
|
105
|
+
assert.equal(rows[1].action, 'fix');
|
|
106
|
+
assert.equal(rows[1]['pending-reply'], 'drafted');
|
|
107
|
+
assert.equal(rows[1]['similar-to'], 'review-comment/333');
|
|
108
|
+
});
|
|
109
|
+
|
|
93
110
|
test('get returns a scalar field value', () => {
|
|
94
111
|
const file = writeFixture();
|
|
95
112
|
const { status, stdout } = run(['get', file, 'review-comment/222', 'status']);
|