agentme 0.36.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 (56) hide show
  1. package/.filedist-package.yml +1 -1
  2. package/.xdrs/agentme/bdrs/index.md +2 -1
  3. package/.xdrs/agentme/bdrs/operations/{401-epic-feature-story-planning.md → 401-plan-epic-feature-story.md} +2 -2
  4. package/.xdrs/agentme/bdrs/operations/402-digital-product-roles.md +15 -19
  5. package/.xdrs/agentme/bdrs/operations/403-product-team-composition.md +3 -0
  6. package/.xdrs/agentme/bdrs/operations/404-team-roles-and-specialists.md +61 -82
  7. package/.xdrs/agentme/bdrs/operations/405-digital-product-roles-raci.md +131 -0
  8. package/.xdrs/agentme/bdrs/principles/002-okr-framework.md +1 -1
  9. package/.xdrs/agentme/bdrs/principles/003-product-delivery-value-flow.md +3 -2
  10. package/.xdrs/agentme/edrs/application/101-javascript-project-tooling.md +1 -1
  11. package/.xdrs/agentme/edrs/application/102-golang-project-tooling.md +1 -1
  12. package/.xdrs/agentme/edrs/application/103-python-project-tooling.md +1 -1
  13. package/.xdrs/agentme/edrs/application/127-external-system-adapter-skills.md +2 -0
  14. package/.xdrs/agentme/edrs/application/skills/{251-azure-devops-connector → azure-devops-connector}/SKILL.md +40 -9
  15. package/.xdrs/agentme/edrs/application/skills/{251-azure-devops-connector → azure-devops-connector}/SKILL.test.md +2 -2
  16. package/.xdrs/agentme/edrs/application/skills/{051-create-golang-project → create-golang-project}/SKILL.md +55 -2
  17. package/.xdrs/agentme/edrs/application/skills/create-golang-project/SKILL.test.md +72 -0
  18. package/.xdrs/agentme/edrs/application/skills/{050-create-javascript-project → create-javascript-project}/SKILL.md +57 -25
  19. package/.xdrs/agentme/edrs/application/skills/create-javascript-project/SKILL.test.md +72 -0
  20. package/.xdrs/agentme/edrs/application/skills/{052-create-python-project → create-python-project}/SKILL.md +36 -2
  21. package/.xdrs/agentme/edrs/application/skills/create-python-project/SKILL.test.md +79 -0
  22. package/.xdrs/agentme/edrs/application/skills/{250-github-connector → github-connector}/SKILL.md +39 -8
  23. package/.xdrs/agentme/edrs/application/skills/{250-github-connector → github-connector}/SKILL.test.md +2 -2
  24. package/.xdrs/agentme/edrs/application/skills/{200-run-skill-tests → run-skill-tests}/SKILL.md +39 -5
  25. package/.xdrs/agentme/edrs/application/skills/{200-run-skill-tests → run-skill-tests}/SKILL.test.md +8 -8
  26. package/.xdrs/agentme/edrs/application/skills/{010-select-relevant-xdrs → select-relevant-xdrs}/SKILL.md +36 -2
  27. package/.xdrs/agentme/edrs/application/skills/select-relevant-xdrs/SKILL.test.md +73 -0
  28. package/.xdrs/agentme/edrs/governance/502-contributing-guide-requirements.md +1 -1
  29. package/.xdrs/agentme/edrs/index.md +16 -11
  30. package/.xdrs/agentme/edrs/operations/402-dora-metrics-framework.md +82 -0
  31. package/.xdrs/agentme/edrs/operations/403-dora-deployment-frequency.md +37 -0
  32. package/.xdrs/agentme/edrs/operations/404-dora-lead-time-for-changes.md +41 -0
  33. package/.xdrs/agentme/edrs/operations/405-dora-change-failure-rate.md +42 -0
  34. package/.xdrs/agentme/edrs/operations/406-dora-time-to-restore-service.md +42 -0
  35. package/.xdrs/agentme/edrs/platform/301-monorepo-structure.md +1 -1
  36. package/.xdrs/agentme/edrs/platform/skills/{053-monorepo-setup → monorepo-setup}/SKILL.md +50 -16
  37. package/.xdrs/agentme/edrs/platform/skills/monorepo-setup/SKILL.test.md +80 -0
  38. package/.xdrs/agentme/edrs/principles/012-continuous-xdr-enrichment.md +1 -1
  39. package/.xdrs/agentme/edrs/principles/017-skill-testing.md +4 -4
  40. package/.xdrs/agentme/edrs/principles/articles/001-continuous-xdr-improvement.md +1 -1
  41. package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.md +43 -17
  42. package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.test.md +3 -3
  43. package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.md +42 -15
  44. package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.test.md +18 -18
  45. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/Makefile +1 -1
  46. package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/SKILL.md +662 -0
  47. package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/SKILL.test.md +165 -0
  48. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-azure-devops.js +3 -3
  49. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-azure-devops.test.js +5 -5
  50. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-github.js +3 -3
  51. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-github.test.js +4 -4
  52. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/update-section.js +84 -3
  53. package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/update-section.test.js +125 -1
  54. package/package.json +2 -2
  55. package/.xdrs/agentme/edrs/principles/skills/400-pr-owner-assistant/SKILL.md +0 -633
  56. package/.xdrs/agentme/edrs/principles/skills/400-pr-owner-assistant/SKILL.test.md +0 -174
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: agentme-edr-policy-405-dora-change-failure-rate
3
+ description: Defines calculation, examples, and challenges for DORA's Change Failure Rate metric and its hotfix/revert-rate, incident-linked-deploy-rate, and escaped-defect-rate sub-metrics, including cross-team root-cause attribution. Use when instrumenting or reviewing change failure rate measurement.
4
+ apply-to: Teams and organizations measuring, reporting, or improving software delivery performance using DORA's four key metrics
5
+ valid-from: 2026-09-18
6
+ ---
7
+
8
+ # agentme-edr-policy-405: DORA change failure rate
9
+
10
+ ## Context and Problem Statement
11
+
12
+ Failure shows up in different ways — an immediate rollback, an incident without a rollback, a defect found later — and no single detection method catches all of them. How should each be calculated, and how should a failure whose root cause spans multiple teams be attributed?
13
+
14
+ ## Decision Outcome
15
+
16
+ **Measure three complementary, non-summing detection signals per deployable service, and attribute cross-team-caused incidents to both the root-cause team and the impacted team.**
17
+
18
+ The three sub-metrics MUST NOT be summed; a team MAY treat one as primary as it matures, but all three remain independent signals.
19
+
20
+ ### Details
21
+
22
+ #### 01-hotfix-revert-rate
23
+
24
+ Hotfix/revert rate MUST be calculated by dividing PRs titled or labeled `revert` merged shortly after a deploy by total deploys for the service, using CODEOWNERS for attribution. Example: 2 reverts following 40 deploys gives a 5% hotfix/revert rate. Challenges: a hotfix that itself gets reverted MUST NOT be double-counted as two separate failures. Teams SHOULD adopt this first, since it catches the most severe, most obvious failures using a single data source.
25
+
26
+ #### 02-incident-linked-deploy-rate
27
+
28
+ Incident-linked deploy rate MUST be calculated by dividing GH Issues labeled `incident` that reference a deploy by total deploys for the service, using the issue-label/component convention from [agentme-edr-402](402-dora-metrics-framework.md)'s `03-artifact-to-service-mapping` (CODEOWNERS does not apply to Issues). Example: 3 incident-linked issues following 40 deploys gives 7.5%. Challenges: deploy-to-incident attribution lag, and label-discipline under-reporting when incidents go untagged. Teams SHOULD adopt this second: it reuses `01`'s deploy count with one additional label convention, and catches real failures that did not need a rollback but still affected users.
29
+
30
+ #### 03-escaped-defect-rate
31
+
32
+ Escaped defect rate MUST be calculated by dividing GH Issues labeled `bug` and `production`, opened after a release and attributed to the service, by total deploys. Example: 4 escaped defects following 40 deploys gives 10%. Challenges: attribution lag across period boundaries when a defect surfaces well after the causing deploy. Teams SHOULD adopt this third: it reuses the same issue-label convention as `02`, and catches slower-to-surface failures the first two signals miss.
33
+
34
+ #### 04-cross-team-and-shared-root-cause-attribution
35
+
36
+ When an incident's root cause is a different team's change, it MUST be counted against the root-cause team's numerator here, per [agentme-edr-402](402-dora-metrics-framework.md)'s `04-cross-team-incident-attribution`; the impacted team MUST instead receive a separate, non-tiered visibility tag rather than a numerator hit. An incident traced to one shared root cause but manifesting across several teams' trackers MUST be linked to a single root-cause record and MUST NOT be counted independently as multiple failures.
37
+
38
+ ## References
39
+
40
+ - [agentme-edr-402](402-dora-metrics-framework.md) — DORA metrics framework
41
+ - [agentme-bdr-405](../../bdrs/operations/405-digital-product-roles-raci.md) — Digital product roles: RACI (root-cause tracing methodology)
42
+ - [DORA's software delivery performance metrics](https://dora.dev/guides/dora-metrics-four-keys/)
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: agentme-edr-policy-406-dora-time-to-restore-service
3
+ description: Defines calculation, examples, and challenges for DORA's Time to Restore Service metric and its total-restore-time, detection-time, acknowledgement-time, and resolution-time sub-metrics, using GitHub Issues as the worked example. Use when instrumenting or reviewing incident restore-time measurement.
4
+ apply-to: Teams and organizations measuring, reporting, or improving software delivery performance using DORA's four key metrics
5
+ valid-from: 2026-09-18
6
+ ---
7
+
8
+ # agentme-edr-policy-406: DORA time to restore service
9
+
10
+ ## Context and Problem Statement
11
+
12
+ Restoring service after a failed deployment is DORA's safety-net metric (DORA's current term is "Failed Deployment Recovery Time"), but a single total-time figure hides whether delay lives in detection, response, or the fix itself. How should the total and its phases be calculated in a tool-agnostic way?
13
+
14
+ ## Decision Outcome
15
+
16
+ **Measure a total restore time plus three additive phase sub-metrics per impacted service, using any incident-management tool with equivalent timestamps; GitHub Issues is the worked example.**
17
+
18
+ The total MUST be tracked standalone, and the three phases decompose it, always attributed to the impacted or owning service regardless of where the root cause is traced.
19
+
20
+ ### Details
21
+
22
+ #### 01-total-restore-time
23
+
24
+ Total restore time MUST be measured from an incident's opened timestamp to its closed timestamp, attributed via the issue-label/component convention from [agentme-edr-402](402-dora-metrics-framework.md)'s `03-artifact-to-service-mapping` to the service that was down or degraded. Example: opened at 10:00, closed at 11:30, gives 90 minutes. Challenges: partial-vs-full restores and reopened incidents. Teams SHOULD adopt this first: it needs only two timestamps on one incident record, no extra tracked event, and gives an immediate, if coarse, restore-time signal.
25
+
26
+ #### 02-detection-time
27
+
28
+ Detection time MUST be measured from the underlying failure's occurrence to the incident's detected timestamp, a tracked event distinct from "opened." Example: failure at 10:00, detected at 10:05, gives 5 minutes. Challenges: without paging or monitoring, detection relies on user reports and is easy to under-track. Teams SHOULD adopt this second: it requires one additional tracked "detected" event, and exposes how much time is lost before anyone notices, a leading indicator for monitoring coverage gaps.
29
+
30
+ #### 03-acknowledgement-time
31
+
32
+ Acknowledgement time MUST be measured from detected to acknowledged or assigned. Example: detected at 10:05, acknowledged at 10:10, gives 5 minutes. Challenges: on-call handoff and timezone gaps. Teams SHOULD adopt this third: it requires one additional tracked "acknowledged" event, and exposes on-call responsiveness separately from the fix itself.
33
+
34
+ #### 04-resolution-time
35
+
36
+ Resolution time MUST be measured from acknowledged to actually-fixed, not merely issue-closed. Example: acknowledged at 10:10, fixed at 11:30, gives 80 minutes. Challenges: extensive or mandatory manual rollout testing can gate the fix itself, extending this phase. Rules `02`, `03`, and `04` MUST sum to the total measured in `01`. Teams SHOULD adopt this last: it requires a reliable "fixed" event, the hardest to track consistently, but it isolates how long the actual fix takes once someone is engaged.
37
+
38
+ ## References
39
+
40
+ - [agentme-edr-402](402-dora-metrics-framework.md) — DORA metrics framework
41
+ - [agentme-bdr-405](../../bdrs/operations/405-digital-product-roles-raci.md) — Digital product roles: RACI (incident-response accountability)
42
+ - [DORA's software delivery performance metrics](https://dora.dev/guides/dora-metrics-four-keys/)
@@ -17,7 +17,7 @@ What monorepo structure, naming conventions, tooling, and build standards should
17
17
 
18
18
  **Adopt a standardized monorepo layout with top-level application folders that aggregate independent module roots, shared parent-level example and test areas, Mise-managed tooling, and Makefiles at every level.**
19
19
 
20
- For step-by-step scaffolding instructions see [skill 053-monorepo-setup](skills/053-monorepo-setup/SKILL.md).
20
+ For step-by-step scaffolding instructions see [skill monorepo-setup](skills/monorepo-setup/SKILL.md).
21
21
  Module folder responsibilities, artifact locations, and test-folder conventions follow [agentme-edr-016](../principles/016-cross-language-module-structure.md).
22
22
 
23
23
  ### Details
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 053-monorepo-setup
2
+ name: monorepo-setup
3
3
  description: >
4
4
  Step-by-step instructions for setting up and scaffolding a new monorepo following the standard
5
5
  layout, naming conventions, Makefiles, Mise tooling, and README requirements defined in
@@ -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
@@ -67,8 +89,8 @@ test:
67
89
  $(foreach app,$(APPS),$(MAKE) -C $(app) test &&) true
68
90
 
69
91
  clean:
70
- $(foreach app,$(APPS),$(MAKE) -C $(app) clean &&) true
71
- rm -rf .cache
92
+ $(foreach app,$(APPS),$(MAKE) -C $(app) clean &&) true
93
+ rm -rf .cache
72
94
 
73
95
  setup:
74
96
  @echo "Install Mise: https://mise.jdx.dev/getting-started.html"
@@ -220,16 +242,16 @@ For each module inside an application:
220
242
  all: build lint test
221
243
 
222
244
  build:
223
- mise exec -- go build ./...
245
+ mise exec -- go build ./...
224
246
 
225
247
  lint:
226
- mise exec -- golangci-lint run ./...
248
+ mise exec -- golangci-lint run ./...
227
249
 
228
250
  test:
229
- mise exec -- go test ./... -cover
251
+ mise exec -- go test ./... -cover
230
252
 
231
253
  clean:
232
- rm -rf dist .cache
254
+ rm -rf dist .cache
233
255
  ```
234
256
 
235
257
  **Node.js / TypeScript:**
@@ -239,16 +261,16 @@ For each module inside an application:
239
261
  all: build lint test
240
262
 
241
263
  build:
242
- mise exec -- pnpm exec tsc --project tsconfig.json
264
+ mise exec -- pnpm exec tsc --project tsconfig.json
243
265
 
244
266
  lint:
245
- mise exec -- pnpm exec eslint ./src
267
+ mise exec -- pnpm exec eslint ./src
246
268
 
247
269
  test:
248
- mise exec -- pnpm exec jest --verbose
270
+ mise exec -- pnpm exec jest --verbose
249
271
 
250
272
  clean:
251
- rm -rf dist .cache
273
+ rm -rf dist .cache
252
274
  ```
253
275
 
254
276
  **Python:**
@@ -258,16 +280,16 @@ For each module inside an application:
258
280
  all: build lint test
259
281
 
260
282
  build:
261
- mise exec -- uv build --project . --out-dir dist
283
+ mise exec -- uv build --project . --out-dir dist
262
284
 
263
285
  lint:
264
- mise exec -- uv run --project . ruff check .
286
+ mise exec -- uv run --project . ruff check .
265
287
 
266
288
  test:
267
- mise exec -- uv run --project . pytest
289
+ mise exec -- uv run --project . pytest
268
290
 
269
291
  clean:
270
- rm -rf dist .cache
292
+ rm -rf dist .cache
271
293
  ```
272
294
 
273
295
  4. **Add source files** appropriate to the language, placing them inside the module folder.
@@ -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.
@@ -0,0 +1,80 @@
1
+ ---
2
+ skill: monorepo-setup
3
+ skill-version: "1.1.0"
4
+ ---
5
+
6
+ ## Test Scenarios
7
+
8
+ ### Scenario 1: Scaffold a two-application monorepo, happy path
9
+
10
+ **Trigger / Input**
11
+
12
+ "Set up a new monorepo called `platform-tools` with two applications: `ingest` (Go, one module
13
+ named `collector`) and `dashboard` (Node.js/TypeScript, one module named `web`)."
14
+
15
+ **Expected Behaviour**
16
+
17
+ 1. Phase 1 gathers or infers applications, modules, primary languages, and tool versions.
18
+ 2. Phase 2 creates the root `.mise.toml`, root `Makefile` (delegating `build`/`lint`/`test`/`clean`
19
+ to every application via `$(MAKE) -C $(app) $@`), root `.gitignore` ignoring `dist/` and
20
+ `.cache/`, root `README.md` with Overview/Machine setup/Quickstart/Repository map, and root
21
+ `CONTRIBUTING.md`.
22
+ 3. Phase 3 creates the `shared/` area (`libs/`, `scripts/`).
23
+ 4. Phase 4 scaffolds `ingest/` and `dashboard/` each with a `README.md` and a `Makefile` that
24
+ delegates to their modules.
25
+ 5. Phase 5 scaffolds `ingest/collector/Makefile` using the Go recipe (`mise exec -- go build
26
+ ./...`, `golangci-lint run ./...`, `go test ./... -cover`) and `dashboard/web/Makefile` using
27
+ the Node.js/TypeScript recipe (`mise exec -- pnpm exec tsc`, `eslint`, `jest`).
28
+ 6. Phase 6 verifies root `make build`, `make lint`, and `make test` succeed and reports the
29
+ Phase 6 checklist before finishing.
30
+
31
+ **Assertions**
32
+
33
+ - [ ] Output creates a root `Makefile` whose `build`, `lint`, and `test` targets delegate to each
34
+ application with `$(MAKE) -C $(app) $@`.
35
+ - [ ] Output generates `ingest/collector/Makefile` with Go recipe commands and
36
+ `dashboard/web/Makefile` with Node.js/TypeScript recipe commands, each matching the
37
+ language-specific block for that module.
38
+ - [ ] Output reports that root `make build`, `make lint`, and `make test` succeed before declaring
39
+ the scaffold complete.
40
+ - [ ] Output includes a root `CONTRIBUTING.md` covering bugs, feature discussion, pull requests,
41
+ Conventional Comments, and small focused changes.
42
+
43
+ ### Scenario 2: Cross-application dependency request is refused
44
+
45
+ **Trigger / Input**
46
+
47
+ "Make the `web` module in `dashboard` import a function directly from the `collector` module in
48
+ `ingest`."
49
+
50
+ **Expected Behaviour**
51
+
52
+ Per the Edge Cases entry for cross-application dependencies, the skill refuses to wire a direct
53
+ import between two different applications' modules and instead proposes extracting the shared
54
+ code into `shared/libs/` as a published library that both applications can depend on.
55
+
56
+ **Assertions**
57
+
58
+ - [ ] Output refuses to create a direct import from `dashboard/web` into `ingest/collector`.
59
+ - [ ] Output proposes moving the shared logic into `shared/libs/` instead of a cross-application
60
+ import.
61
+
62
+ ### Scenario 3: Existing root Makefile is never silently overwritten
63
+
64
+ **Trigger / Input**
65
+
66
+ "Add a new application called `reports` to this monorepo." The repository already has a root
67
+ `Makefile` with custom targets not generated by this skill.
68
+
69
+ **Expected Behaviour**
70
+
71
+ Per the Edge Cases entry for existing files, the skill does not overwrite the existing root
72
+ `Makefile` (or `README.md`/`CONTRIBUTING.md`) without explicit user confirmation. It diffs the
73
+ existing file against the standard layout and proposes additions instead.
74
+
75
+ **Assertions**
76
+
77
+ - [ ] Output does not overwrite the existing root `Makefile` without first asking for explicit
78
+ user confirmation.
79
+ - [ ] Output presents a diff or a proposed set of additions rather than replacing the file
80
+ silently.
@@ -61,4 +61,4 @@ In SDD, specifications describe the feature being built; XDRs describe reusable
61
61
  - [_core-adr-001](../../../_core/adrs/principles/001-xdrs-standards.md)
62
62
  - [_core-article-001](../../../_core/adrs/principles/articles/001-xdrs-overview.md)
63
63
  - [agentme-article-001](articles/001-continuous-xdr-improvement.md)
64
- - [002-write-policy skill](../../../_core/adrs/principles/skills/002-write-policy/SKILL.md)
64
+ - [write-policy skill](../../../_core/adrs/principles/skills/write-policy/SKILL.md)
@@ -2,7 +2,7 @@
2
2
  name: agentme-edr-policy-017-skill-testing
3
3
  description: >
4
4
  Mandates a SKILL.test.md test file co-located with every skill, defines the test file format (scenarios with trigger, expected behaviour, and assertions), and requires execution before merging any change to the skill. Use when creating, updating, or reviewing skills.
5
- apply-to: contributors working in any scope that directly or transitively follows or extends agentme
5
+ apply-to: the agentme scope itself, and any scope that directly or transitively follows or extends agentme
6
6
  valid-from: 2026-08-06
7
7
  ---
8
8
 
@@ -16,7 +16,7 @@ How should skill correctness be verified after every change, in a way that is co
16
16
 
17
17
  ## Decision Outcome
18
18
 
19
- **Every skill MUST have a `SKILL.test.md` file in the same directory as its `SKILL.md`. The file defines test scenarios with explicit input triggers and falsifiable assertions. It MUST be executed — using the `200-run-skill-tests` skill or manually — before merging any PR that modifies the skill or its test file.**
19
+ **Every skill MUST have a `SKILL.test.md` file in the same directory as its `SKILL.md`. The file defines test scenarios with explicit input triggers and falsifiable assertions. It MUST be executed — using the `run-skill-tests` skill or manually — before merging any PR that modifies the skill or its test file.**
20
20
 
21
21
  ### Details
22
22
 
@@ -71,7 +71,7 @@ Rules:
71
71
 
72
72
  `SKILL.test.md` MUST be executed before merging any PR that modifies the skill or its test file. Execution means running each scenario and verifying all assertions pass.
73
73
 
74
- Use the `200-run-skill-tests` skill to execute the file, or run each scenario manually when automation is not available.
74
+ Use the `run-skill-tests` skill to execute the file, or run each scenario manually when automation is not available.
75
75
 
76
76
 
77
77
  ## Considered Options
@@ -83,4 +83,4 @@ Use the `200-run-skill-tests` skill to execute the file, or run each scenario ma
83
83
  ## References
84
84
 
85
85
  - [`_core-adr-policy-003`](../../../_core/adrs/principles/003-skill-standards.md) — Skill package standards and folder layout
86
- - [`200-run-skill-tests`](../application/skills/200-run-skill-tests/SKILL.md) — Runner skill that executes `SKILL.test.md` scenarios
86
+ - [`run-skill-tests`](../application/skills/run-skill-tests/SKILL.md) — Runner skill that executes `SKILL.test.md` scenarios
@@ -90,4 +90,4 @@ If the same clarification would likely be needed in another feature, by another
90
90
  - [_core-adr-001](../../../../_core/adrs/principles/001-xdrs-standards.md) - XDR structure, numbering, and mandatory template
91
91
  - [_core-article-001](../../../../_core/adrs/principles/articles/001-xdrs-overview.md) - XDR introduction and general adoption guidance
92
92
  - [agentme-edr-012](../012-continuous-xdr-enrichment.md) - Shared-first XDR enrichment policy and 80% coverage target
93
- - [002-write-policy skill](../../../../_core/adrs/principles/skills/002-write-policy/SKILL.md) - Step-by-step procedure for drafting new XDRs
93
+ - [write-policy skill](../../../../_core/adrs/principles/skills/write-policy/SKILL.md) - Step-by-step procedure for drafting new XDRs
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 150-refine-plan-mode
2
+ name: refine-plan-mode
3
3
  description: >
4
4
  MANDATORY for ANY planning activity. Read and follow this skill in full whenever the user asks
5
5
  to plan, design, propose, outline, draft, brainstorm, architect, or think through anything —
@@ -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:
@@ -137,16 +159,10 @@ Checks to run in order:
137
159
  - `"Check for more features I would probably need but that are not part of the plan. Ask questions."`
138
160
  - `"What happens if the file doesn't exist? Ask questions."`
139
161
  - `"Dry run if I send a file with 10GB in size"`
140
- - `"What happens if we have 10 million files?"`
141
162
  - `"Explore if all types of input would work with this utility"`
142
- - `"Is the plan doing everything we asked in the beginning?"`
143
- - `"How are you making sure those things are implemented correctly?"`
144
163
  - `"Verify all references in the plan. Ask questions."`
145
164
  - `"Check for edge cases we didn't discuss yet. Ask questions."`
146
- - `"Check for consistency and ask questions"`
147
165
  - `"Show me a diagram explaining the overall feature structure"`
148
- - `"Explain to me what this utility does"`
149
- - `"How could I distribute this utility?"`
150
166
 
151
167
  After all checks (a–i) converge, use `vscode_askQuestions` (per Phase gate UI rule) to present the Phase 4 gate with at least these options:
152
168
  - **"Continue to Phase 5 — Visual Consistency Validation"** (recommended when all checks have converged) — advance.
@@ -276,7 +292,7 @@ If any features were placed in the **Deferred Features** list during Phase 2 Ste
276
292
  This step is skipped if no features were deferred.
277
293
 
278
294
  **Deferred Features entry template** — always append a new `### Group:` section per split (never merge with a same-titled prior group); a group can have as few as 1 part:
279
- - `### Group: [original request title] — deferred [YYYY-MM-DD]` — with **Origin:** `150-refine-plan-mode — Phase 2 Step 5`, **Original objective:** the one-sentence value of the whole request before splitting, and **Split rationale:** why it was split.
295
+ - `### Group: [original request title] — deferred [YYYY-MM-DD]` — with **Origin:** `refine-plan-mode — Phase 2 Step 5`, **Original objective:** the one-sentence value of the whole request before splitting, and **Split rationale:** why it was split.
280
296
  - One `#### [part title]` subsection per deferred part, each with **Objective:** (this part's specific value), **Scope:** (bullet list of what's included), **Context captured so far:** (bullet list of key decisions/answers/constraints already gathered before deferral), and **Suggested prompt to resume:** (a ready-to-paste prompt naming plan mode and summarizing the objective and known constraints so a future session can resume without re-reading the whole conversation).
281
297
 
282
298
  Before the final gate, add a step to the implementation plan to produce a concise feature documentation file. Use `vscode_askQuestions` to ask:
@@ -307,14 +323,24 @@ Do not start execution to escape planning discomfort — only start when confide
307
323
 
308
324
  ## Anti-Patterns
309
325
 
310
- Avoid these common failure modes:
311
-
312
- - **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.
313
- - **Scope creep silence**: the plan grows beyond the original request without the human noticing. Every addition must be flagged explicitly.
314
- - **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.
315
- - **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.
316
- - **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.
317
- - **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.
318
344
 
319
345
  ## Re-Plan Triggers
320
346
 
@@ -1,6 +1,6 @@
1
1
  ---
2
- skill: 150-refine-plan-mode
3
- skill-version: "3.0"
2
+ skill: refine-plan-mode
3
+ skill-version: "3.1.0"
4
4
  ---
5
5
 
6
6
  ## Test Scenarios
@@ -118,7 +118,7 @@ Phase 2 Step 4 surfaces roughly 24 distinct in-scope items across the three subs
118
118
 
119
119
  **Trigger / Input**
120
120
 
121
- A user runs the full 150-refine-plan-mode workflow across multiple rounds — including at least one re-run of a phase gate (e.g., "Re-run Phase 4: Consistency Checks — deeper pass") and one Phase 2 Step 5 scope split with a deferred part — before reaching Phase 7 and confirming "Hand off to implementation".
121
+ A user runs the full refine-plan-mode workflow across multiple rounds — including at least one re-run of a phase gate (e.g., "Re-run Phase 4: Consistency Checks — deeper pass") and one Phase 2 Step 5 scope split with a deferred part — before reaching Phase 7 and confirming "Hand off to implementation".
122
122
 
123
123
  **Expected Behaviour**
124
124
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 151-refine-user-story
2
+ name: refine-user-story
3
3
  description: >
4
4
  Refine, elaborate, study or develop the contents of a user story used to create a unit of work
5
5
  for an agile team. Use when you need to write, refine, clarify requirements, ask follow-up
@@ -7,12 +7,13 @@ 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
14
15
 
15
- Turns a vague request or rough draft into an implementation-ready user story by running a structured 9-phase refinement process: establishing initiative context and gathering external information to ground the analysis (Phase 1), analysing the request and qualifying requirements with a scope size check (Phase 2), researching existing context and drafting a story skeleton (Phase 3), checking consistency and scope completeness (Phase 4), validating visually with a user journey diagram (Phase 5), challenging from 9 user-perspective angles (Phase 6), challenging from 8 implementer-perspective angles (Phase 7), producing a final ready-to-implement story with a readiness checklist (Phase 8), and running a final readiness double-check (Phase 9).
16
+ Turns a vague request or rough draft into an implementation-ready user story via a structured 9-phase process: initiative context and external information gathering (Phase 1); request analysis and requirements qualification (Phase 2); context research and story drafting (Phase 3); consistency and scope review (Phase 4); visual validation via a user journey diagram (Phase 5); a 9-angle user-perspective challenge (Phase 6); an 8-angle implementer-perspective challenge (Phase 7); final story output with a readiness checklist (Phase 8); and a final readiness re-validation (Phase 9).
16
17
 
17
18
  Activate when:
18
19
  - The request is vague, incomplete, or internally inconsistent.
@@ -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,14 +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 following protocol. The Phase navigation rule (convergence, Skip, Backtracking) governs loop control on top of this protocol.
302
-
303
- 1. Generate 10–20 specific questions about that angle **in the context of this story** (grounded in what has been gathered, not generic).
304
- 2. Attempt to answer each question from the current story contents.
305
- 3. For every question that cannot be answered, is unanswered, or reveals a gap or inconsistency: elaborate the finding and ask the user via `vscode_askQuestions`.
306
- 4. Apply the Context Probe rule: if any gap could be resolved by an external spec, API reference, interface contract, or other artifact, ask for it specifically.
307
- 5. Only mark the angle complete when all questions are answered or explicitly deferred as named risks.
308
- 6. Do not resolve choice points unilaterally.
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.
309
324
 
310
325
  **1. Verifiable acceptance criteria**
311
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?
@@ -500,8 +515,20 @@ Apply the same 4 criteria from Phase 2 Step 3. If two or more are met, the story
500
515
  - **Request spans multiple independent user outcomes**: always split into separate vertical-slice stories rather than merging into one broad story.
501
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.
502
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
+
503
530
  ## References
504
531
 
505
532
  - [`agentme-edr-012`](../../012-continuous-xdr-enrichment.md) — Continuous XDR enrichment policy
506
533
  - [`agentme-edr-017`](../../017-skill-testing.md) — Skill testing mandate
507
- - [`agentme-bdr-401`](../../../../bdrs/operations/401-epic-feature-story-planning.md) — Epic/feature/user story planning structure (policy source for the inline reference in Phase 1)
534
+ - [`agentme-bdr-401`](../../../../bdrs/operations/401-plan-epic-feature-story.md) — Epic/feature/user story planning structure (policy source for the inline reference in Phase 1)