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.
Files changed (22) hide show
  1. package/.xdrs/agentme/edrs/application/skills/azure-devops-connector/SKILL.md +35 -1
  2. package/.xdrs/agentme/edrs/application/skills/azure-devops-connector/SKILL.test.md +1 -1
  3. package/.xdrs/agentme/edrs/application/skills/create-golang-project/SKILL.md +54 -1
  4. package/.xdrs/agentme/edrs/application/skills/create-golang-project/SKILL.test.md +1 -1
  5. package/.xdrs/agentme/edrs/application/skills/create-javascript-project/SKILL.md +34 -1
  6. package/.xdrs/agentme/edrs/application/skills/create-javascript-project/SKILL.test.md +1 -1
  7. package/.xdrs/agentme/edrs/application/skills/create-python-project/SKILL.md +35 -1
  8. package/.xdrs/agentme/edrs/application/skills/create-python-project/SKILL.test.md +1 -1
  9. package/.xdrs/agentme/edrs/application/skills/github-connector/SKILL.md +35 -1
  10. package/.xdrs/agentme/edrs/application/skills/github-connector/SKILL.test.md +1 -1
  11. package/.xdrs/agentme/edrs/application/skills/run-skill-tests/SKILL.md +35 -1
  12. package/.xdrs/agentme/edrs/application/skills/run-skill-tests/SKILL.test.md +1 -1
  13. package/.xdrs/agentme/edrs/application/skills/select-relevant-xdrs/SKILL.md +35 -1
  14. package/.xdrs/agentme/edrs/application/skills/select-relevant-xdrs/SKILL.test.md +1 -1
  15. package/.xdrs/agentme/edrs/platform/skills/monorepo-setup/SKILL.md +35 -1
  16. package/.xdrs/agentme/edrs/platform/skills/monorepo-setup/SKILL.test.md +1 -1
  17. package/.xdrs/agentme/edrs/principles/skills/refine-plan-mode/SKILL.md +41 -9
  18. package/.xdrs/agentme/edrs/principles/skills/refine-plan-mode/SKILL.test.md +1 -1
  19. package/.xdrs/agentme/edrs/principles/skills/refine-user-story/SKILL.md +39 -5
  20. package/.xdrs/agentme/edrs/principles/skills/refine-user-story/SKILL.test.md +1 -1
  21. package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/scripts/update-section.test.js +17 -0
  22. package/package.json +1 -1
@@ -8,7 +8,8 @@ description: >
8
8
  DevOps.
9
9
  metadata:
10
10
  author: flaviostutz
11
- version: "1.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: azure-devops-connector
3
- skill-version: "1.0"
3
+ skill-version: "1.2.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: create-golang-project
3
- skill-version: "1.0"
3
+ skill-version: "1.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: create-javascript-project
3
- skill-version: "1.0"
3
+ skill-version: "1.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: create-python-project
3
- skill-version: "1.0"
3
+ skill-version: "1.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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.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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: github-connector
3
- skill-version: "1.0"
3
+ skill-version: "1.2.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: run-skill-tests
3
- skill-version: "1.0"
3
+ skill-version: "1.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: select-relevant-xdrs
3
- skill-version: "1.0"
3
+ skill-version: "1.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: monorepo-setup
3
- skill-version: "1.0"
3
+ skill-version: "1.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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
- Avoid these common failure modes:
305
-
306
- - **Planning theater**: running rounds without real critical thinking. Asking many questions is correct behavior — the anti-pattern is asking hollow, self-validating questions, not asking frequently. Rounds that confirm the plan against itself add false confidence — checks must challenge assumptions, not validate them.
307
- - **Scope creep silence**: the plan grows beyond the original request without the human noticing. Every addition must be flagged explicitly.
308
- - **Agent self-validation**: the agent answers its own questions on subjective, domain, or intent-based decisions and proceeds without asking the human. The human is the oracle for domain knowledge, intent, and subjective decisions — the agent must not self-resolve those unilaterally.
309
- - **Confidence as a proxy for correctness**: an agent expressing certainty does not mean the plan is correct. Run all checks regardless of how confident the agent sounds.
310
- - **Treating unverified references as facts**: the agent references files, CLIs, statistics, library APIs, quoted sources, or named organizations without a tool call or direct inspection to confirm they exist. All high-risk references must be verified immediately or explicitly listed in the Unverified References section with a mandatory first-step check before use.
311
- - **Artifact bloat**: the final plan accretes process narrative (Q&A rounds, phase-gate confirmations, todo-list tracking, superseded drafts) instead of converging to the **Final Plan Artifact Template**. It's a continuously-edited deliverable, not an append-only log.
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
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: refine-plan-mode
3
- skill-version: "3.0"
3
+ skill-version: "3.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -7,7 +7,8 @@ description: >
7
7
  complete, and ready for implementation.
8
8
  metadata:
9
9
  author: flaviostutz
10
- version: "4.1"
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. A detailed or well-structured input does NOT exempt you from the question loop treat apparent completeness as a signal to look harder for hidden ambiguities.
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 here): before closing Step 2, explicitly check for: external APIs invoked (endpoints, HTTP methods, request/response payloads, authentication, behavior); input/output data (field names, types, formats, valid values, meanings, constraints); documentation links (specs, API references, runbooks); contact names and roles (owners of external systems or business rules); process rules or business logic tied to the story. For any missing detail, ask targeted questions or apply the Context Probe rule to request external sources.
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, unresolved assumption, or ambiguous rule exists. If you find yourself wanting to write "or X" / "TBD" / "to be documented" anywhere, that is a sign you skipped a question.
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 same per-angle protocol defined in Phase 6: generate 10–20 questions about that angle grounded in the current story contents (not generic); attempt to answer each from what has been gathered; for every unanswered question or one that reveals a gap, ask the user via `vscode_askQuestions`; apply the Context Probe rule using implementer-relevant artifacts (an external spec, API reference, interface contract, or similar) when a gap could be resolved by one; mark the angle complete only when every question is answered or explicitly deferred as a named risk; and never resolve a choice point unilaterally. The Phase navigation rule (convergence, Skip, Backtracking) governs loop control on top of this protocol.
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
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  skill: refine-user-story
3
- skill-version: "4.1"
3
+ skill-version: "4.2.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -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']);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentme",
3
- "version": "0.37.0",
3
+ "version": "0.37.1",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "filedist": "^0.39.0"