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.
- package/.filedist-package.yml +1 -1
- package/.xdrs/agentme/bdrs/index.md +2 -1
- package/.xdrs/agentme/bdrs/operations/{401-epic-feature-story-planning.md → 401-plan-epic-feature-story.md} +2 -2
- package/.xdrs/agentme/bdrs/operations/402-digital-product-roles.md +15 -19
- package/.xdrs/agentme/bdrs/operations/403-product-team-composition.md +3 -0
- package/.xdrs/agentme/bdrs/operations/404-team-roles-and-specialists.md +61 -82
- package/.xdrs/agentme/bdrs/operations/405-digital-product-roles-raci.md +131 -0
- package/.xdrs/agentme/bdrs/principles/002-okr-framework.md +1 -1
- package/.xdrs/agentme/bdrs/principles/003-product-delivery-value-flow.md +3 -2
- package/.xdrs/agentme/edrs/application/101-javascript-project-tooling.md +1 -1
- package/.xdrs/agentme/edrs/application/102-golang-project-tooling.md +1 -1
- package/.xdrs/agentme/edrs/application/103-python-project-tooling.md +1 -1
- package/.xdrs/agentme/edrs/application/127-external-system-adapter-skills.md +2 -0
- package/.xdrs/agentme/edrs/application/skills/{251-azure-devops-connector → azure-devops-connector}/SKILL.md +40 -9
- package/.xdrs/agentme/edrs/application/skills/{251-azure-devops-connector → azure-devops-connector}/SKILL.test.md +2 -2
- package/.xdrs/agentme/edrs/application/skills/{051-create-golang-project → create-golang-project}/SKILL.md +55 -2
- package/.xdrs/agentme/edrs/application/skills/create-golang-project/SKILL.test.md +72 -0
- package/.xdrs/agentme/edrs/application/skills/{050-create-javascript-project → create-javascript-project}/SKILL.md +57 -25
- package/.xdrs/agentme/edrs/application/skills/create-javascript-project/SKILL.test.md +72 -0
- package/.xdrs/agentme/edrs/application/skills/{052-create-python-project → create-python-project}/SKILL.md +36 -2
- package/.xdrs/agentme/edrs/application/skills/create-python-project/SKILL.test.md +79 -0
- package/.xdrs/agentme/edrs/application/skills/{250-github-connector → github-connector}/SKILL.md +39 -8
- package/.xdrs/agentme/edrs/application/skills/{250-github-connector → github-connector}/SKILL.test.md +2 -2
- package/.xdrs/agentme/edrs/application/skills/{200-run-skill-tests → run-skill-tests}/SKILL.md +39 -5
- package/.xdrs/agentme/edrs/application/skills/{200-run-skill-tests → run-skill-tests}/SKILL.test.md +8 -8
- package/.xdrs/agentme/edrs/application/skills/{010-select-relevant-xdrs → select-relevant-xdrs}/SKILL.md +36 -2
- package/.xdrs/agentme/edrs/application/skills/select-relevant-xdrs/SKILL.test.md +73 -0
- package/.xdrs/agentme/edrs/governance/502-contributing-guide-requirements.md +1 -1
- package/.xdrs/agentme/edrs/index.md +16 -11
- package/.xdrs/agentme/edrs/operations/402-dora-metrics-framework.md +82 -0
- package/.xdrs/agentme/edrs/operations/403-dora-deployment-frequency.md +37 -0
- package/.xdrs/agentme/edrs/operations/404-dora-lead-time-for-changes.md +41 -0
- package/.xdrs/agentme/edrs/operations/405-dora-change-failure-rate.md +42 -0
- package/.xdrs/agentme/edrs/operations/406-dora-time-to-restore-service.md +42 -0
- package/.xdrs/agentme/edrs/platform/301-monorepo-structure.md +1 -1
- package/.xdrs/agentme/edrs/platform/skills/{053-monorepo-setup → monorepo-setup}/SKILL.md +50 -16
- package/.xdrs/agentme/edrs/platform/skills/monorepo-setup/SKILL.test.md +80 -0
- package/.xdrs/agentme/edrs/principles/012-continuous-xdr-enrichment.md +1 -1
- package/.xdrs/agentme/edrs/principles/017-skill-testing.md +4 -4
- package/.xdrs/agentme/edrs/principles/articles/001-continuous-xdr-improvement.md +1 -1
- package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.md +43 -17
- package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.test.md +3 -3
- package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.md +42 -15
- package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.test.md +18 -18
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/Makefile +1 -1
- package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/SKILL.md +662 -0
- package/.xdrs/agentme/edrs/principles/skills/resolve-pr-comments/SKILL.test.md +165 -0
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-azure-devops.js +3 -3
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-azure-devops.test.js +5 -5
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-github.js +3 -3
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/post-replies-github.test.js +4 -4
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/update-section.js +84 -3
- package/.xdrs/agentme/edrs/principles/skills/{400-pr-owner-assistant → resolve-pr-comments}/scripts/update-section.test.js +125 -1
- package/package.json +2 -2
- package/.xdrs/agentme/edrs/principles/skills/400-pr-owner-assistant/SKILL.md +0 -633
- 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
|
|
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:
|
|
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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
245
|
+
mise exec -- go build ./...
|
|
224
246
|
|
|
225
247
|
lint:
|
|
226
|
-
|
|
248
|
+
mise exec -- golangci-lint run ./...
|
|
227
249
|
|
|
228
250
|
test:
|
|
229
|
-
|
|
251
|
+
mise exec -- go test ./... -cover
|
|
230
252
|
|
|
231
253
|
clean:
|
|
232
|
-
|
|
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
|
-
|
|
264
|
+
mise exec -- pnpm exec tsc --project tsconfig.json
|
|
243
265
|
|
|
244
266
|
lint:
|
|
245
|
-
|
|
267
|
+
mise exec -- pnpm exec eslint ./src
|
|
246
268
|
|
|
247
269
|
test:
|
|
248
|
-
|
|
270
|
+
mise exec -- pnpm exec jest --verbose
|
|
249
271
|
|
|
250
272
|
clean:
|
|
251
|
-
|
|
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
|
-
|
|
283
|
+
mise exec -- uv build --project . --out-dir dist
|
|
262
284
|
|
|
263
285
|
lint:
|
|
264
|
-
|
|
286
|
+
mise exec -- uv run --project . ruff check .
|
|
265
287
|
|
|
266
288
|
test:
|
|
267
|
-
|
|
289
|
+
mise exec -- uv run --project . pytest
|
|
268
290
|
|
|
269
291
|
clean:
|
|
270
|
-
|
|
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
|
-
- [
|
|
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:
|
|
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 `
|
|
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 `
|
|
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
|
-
- [`
|
|
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
|
-
- [
|
|
93
|
+
- [write-policy skill](../../../../_core/adrs/principles/skills/write-policy/SKILL.md) - Step-by-step procedure for drafting new XDRs
|
package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.md
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
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:** `
|
|
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
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
- **
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
- **
|
|
317
|
-
|
|
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
|
|
package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.test.md
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill:
|
|
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
|
|
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
|
|
package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.md
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
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.
|
|
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
|
|
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
|
|
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,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
|
|
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
|
|
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)
|