agentme 0.36.0 → 0.37.0
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 +6 -9
- package/.xdrs/agentme/edrs/application/skills/{251-azure-devops-connector → azure-devops-connector}/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/{051-create-golang-project → create-golang-project}/SKILL.md +1 -1
- 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 +23 -24
- 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 +1 -1
- 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 +5 -8
- package/.xdrs/agentme/edrs/application/skills/{250-github-connector → github-connector}/SKILL.test.md +1 -1
- package/.xdrs/agentme/edrs/application/skills/{200-run-skill-tests → run-skill-tests}/SKILL.md +4 -4
- package/.xdrs/agentme/edrs/application/skills/{200-run-skill-tests → run-skill-tests}/SKILL.test.md +7 -7
- package/.xdrs/agentme/edrs/application/skills/{010-select-relevant-xdrs → select-relevant-xdrs}/SKILL.md +1 -1
- 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 +15 -15
- 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 +2 -8
- package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.test.md +2 -2
- package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.md +4 -11
- package/.xdrs/agentme/edrs/principles/skills/{151-refine-user-story → refine-user-story}/SKILL.test.md +17 -17
- 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 +108 -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
|
@@ -8,12 +8,12 @@ Propose changes via pull request. All changes must be verified for clarity and n
|
|
|
8
8
|
|
|
9
9
|
Foundational standards, principles, and guidelines.
|
|
10
10
|
|
|
11
|
-
- [
|
|
12
|
-
- [
|
|
13
|
-
- [
|
|
11
|
+
- [refine-plan-mode](principles/skills/refine-plan-mode/SKILL.md) - **Refine plan mode** — MANDATORY skill for ANY planning activity (plan, design, propose, outline, draft, brainstorm, architect). Read and follow in full before any execution begins. Must be read from XDRS even when not in `.agents/skills`. *(skill)*
|
|
12
|
+
- [refine-user-story](principles/skills/refine-user-story/SKILL.md) - **Refine user stories** — Refine, elaborate, study or develop the contents of a user story used to create a unit of work for an agile team. Runs a structured 10-phase refinement process: understand the request, qualify requirements, research context, review consistency, validate visually, challenge from 9 user-perspective angles (Phase 6), challenge from 8 implementer-perspective angles (Phase 7), produce a ready-to-implement story (Phase 8), and run a final readiness double-check (Phase 9). *(skill)*
|
|
13
|
+
- [resolve-pr-comments](principles/skills/resolve-pr-comments/SKILL.md) - **Resolve PR comments** — Helps the OWNER of a pull request work through comments left by others: fetches every comment (GitHub or Azure DevOps) from its URL, tracks them in a local file, and walks through triaging each one (reply, won't-fix, fix) at a human-chosen automation level -- from fully automatic to fully guided, with fine-grained free-text control over the mix -- while syncing back to the provider always stays its own explicitly confirmed step. A hands-on, mutating workflow to answer feedback and land fixes -- not a code-review skill. Delegates provider-specific reads/writes to `github-connector` or `azure-devops-connector`. *(skill)*
|
|
14
14
|
- [agentme-edr-012](principles/012-continuous-xdr-enrichment.md) - **Continuous xdr improvement policy** - Promote recurring delivery lessons into reusable XDRs
|
|
15
15
|
- [agentme-edr-016](principles/016-cross-language-module-structure.md) - **Cross-language module structure** - Organize modules consistently across supported languages
|
|
16
|
-
- [agentme-edr-017](principles/017-skill-testing.md) - **skill testing** - Mandates a `SKILL.test.md` co-located with every skill in scopes that follow agentme; defines test scenario format (trigger, expected behaviour, assertions) and requires execution before merging any skill change *(includes skill: [
|
|
16
|
+
- [agentme-edr-017](principles/017-skill-testing.md) - **skill testing** - Mandates a `SKILL.test.md` co-located with every skill in scopes that follow agentme; defines test scenario format (trigger, expected behaviour, assertions) and requires execution before merging any skill change *(includes skill: [run-skill-tests](application/skills/run-skill-tests/SKILL.md))*
|
|
17
17
|
|
|
18
18
|
## Articles
|
|
19
19
|
|
|
@@ -31,17 +31,17 @@ Language and framework-specific tooling and project structure.
|
|
|
31
31
|
- [agentme-edr-124](application/124-secrets-management.md) - **Secrets management** - Handle secrets securely using native keychains and cloud secret managers
|
|
32
32
|
- [agentme-edr-125](application/125-coding-abstraction-practices.md) - **Coding abstraction practices** - Define when abstractions are justified and when they must be inlined
|
|
33
33
|
- [agentme-edr-127](application/127-external-system-adapter-skills.md) - **External system adapter skills** - Priority-ordered approach and adapter skill authoring standards for automating interactions with external systems
|
|
34
|
-
- [
|
|
35
|
-
- [
|
|
34
|
+
- [github-connector](application/skills/github-connector/SKILL.md) - **GitHub connector** — Base connector providing authentication, read access, and write access to GitHub pull requests and their comments via the `gh` CLI. *(skill)*
|
|
35
|
+
- [azure-devops-connector](application/skills/azure-devops-connector/SKILL.md) - **Azure DevOps connector** — Base connector providing authentication, read access, and write access to Azure DevOps pull requests and their comment threads via the `az` CLI. *(skill)*
|
|
36
36
|
|
|
37
37
|
### Language and framework tooling
|
|
38
38
|
|
|
39
|
-
- [agentme-edr-101](application/101-javascript-project-tooling.md) - **JavaScript project tooling and structure** - Scaffold JavaScript libraries with the standard toolchain *(includes skill: [
|
|
40
|
-
- [agentme-edr-102](application/102-golang-project-tooling.md) - **Go project tooling and structure** - Scaffold Go CLIs and libraries with the standard layout *(includes skill: [
|
|
41
|
-
- [agentme-edr-103](application/103-python-project-tooling.md) - **Python project tooling and structure** - Scaffold Python packages and CLIs with the standard layout *(includes skill: [
|
|
39
|
+
- [agentme-edr-101](application/101-javascript-project-tooling.md) - **JavaScript project tooling and structure** - Scaffold JavaScript libraries with the standard toolchain *(includes skill: [create-javascript-project](application/skills/create-javascript-project/SKILL.md))*
|
|
40
|
+
- [agentme-edr-102](application/102-golang-project-tooling.md) - **Go project tooling and structure** - Scaffold Go CLIs and libraries with the standard layout *(includes skill: [create-golang-project](application/skills/create-golang-project/SKILL.md))*
|
|
41
|
+
- [agentme-edr-103](application/103-python-project-tooling.md) - **Python project tooling and structure** - Scaffold Python packages and CLIs with the standard layout *(includes skill: [create-python-project](application/skills/create-python-project/SKILL.md))*
|
|
42
42
|
- [agentme-edr-104](application/104-cli-tool-standards.md) - **CLI tool standards** - Define command UX and behavior for CLI tools
|
|
43
43
|
- [agentme-edr-126](application/126-pragmatic-hexagonal-architecture.md) - **Pragmatic hexagonal architecture** - Organize application layers as External/Adapters/Application with practical coupling rules
|
|
44
|
-
- [
|
|
44
|
+
- [select-relevant-xdrs](application/skills/select-relevant-xdrs/SKILL.md) - **Select relevant XDRs**
|
|
45
45
|
|
|
46
46
|
### AI development
|
|
47
47
|
|
|
@@ -75,7 +75,7 @@ Data layer implementation and data management decisions.
|
|
|
75
75
|
|
|
76
76
|
Infrastructure implementation, delivery pipeline, and developer environment decisions.
|
|
77
77
|
|
|
78
|
-
- [agentme-edr-301](platform/301-monorepo-structure.md) - **Monorepo structure** - Standardize monorepo layout, tooling, and package boundaries *(includes skill: [
|
|
78
|
+
- [agentme-edr-301](platform/301-monorepo-structure.md) - **Monorepo structure** - Standardize monorepo layout, tooling, and package boundaries *(includes skill: [monorepo-setup](platform/skills/monorepo-setup/SKILL.md))*
|
|
79
79
|
- [agentme-edr-302](platform/302-github-pipelines.md) - **GitHub CI/CD pipelines** - Define required CI stages and workflow structure
|
|
80
80
|
- [agentme-edr-303](platform/303-common-targets.md) - **Common development script names** - Reuse standard build, lint, and test target names
|
|
81
81
|
- [agentme-edr-304](platform/304-tool-execution-and-scripting.md) - **Tool execution and scripting** - Run tools consistently across shells, Makefiles, and CI
|
|
@@ -93,3 +93,8 @@ Contribution and collaboration standards shared across projects.
|
|
|
93
93
|
Production behavior and operational response decisions.
|
|
94
94
|
|
|
95
95
|
- [agentme-edr-401](operations/401-service-health-check-endpoint.md) - **Service health check endpoint** - Expose a standard runtime health-check endpoint for services
|
|
96
|
+
- [agentme-edr-402](operations/402-dora-metrics-framework.md) - **DORA metrics framework** - Per-service/team measurement, sub-metric composition, maturity tiers, and adoption order for DORA's four key metrics
|
|
97
|
+
- [agentme-edr-403](operations/403-dora-deployment-frequency.md) - **DORA deployment frequency** - Calculation, examples, and challenges for deploys-per-week, batch size, and automation ratio
|
|
98
|
+
- [agentme-edr-404](operations/404-dora-lead-time-for-changes.md) - **DORA lead time for changes** - Calculation, examples, and challenges for PR cycle time, review latency, deploy-pipeline time, and total lead time
|
|
99
|
+
- [agentme-edr-405](operations/405-dora-change-failure-rate.md) - **DORA change failure rate** - Calculation, examples, and challenges for hotfix/revert rate, incident-linked deploy rate, and escaped defect rate, including cross-team attribution
|
|
100
|
+
- [agentme-edr-406](operations/406-dora-time-to-restore-service.md) - **DORA time to restore service** - Calculation, examples, and challenges for total restore time, detection time, acknowledgement time, and resolution time
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentme-edr-policy-402-dora-metrics-framework
|
|
3
|
+
description: Defines the framework for measuring DORA's four software delivery metrics per team and service, including sub-metric composition, maturity-tier definition, distribution reporting, adoption order, and daily usage by role. Use when implementing or reviewing DORA metrics measurement, dashboards, or reporting.
|
|
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-402: DORA metrics framework
|
|
9
|
+
|
|
10
|
+
## Context and Problem Statement
|
|
11
|
+
|
|
12
|
+
Teams need objective signals of software delivery performance, but without a shared framework, teams measure different things, blend unlike services together, or reduce delivery health to one misleading number. How should DORA's four key metrics be scoped, combined into a maturity signal, and used across teams so results stay comparable, actionable, and resistant to gaming?
|
|
13
|
+
|
|
14
|
+
## Decision Outcome
|
|
15
|
+
|
|
16
|
+
**Adopt DORA's four key metrics, each measured per service and rolled up per team, decomposed into incrementally-adoptable sub-metrics defined in one companion policy per metric.**
|
|
17
|
+
|
|
18
|
+
Every team gets a maturity tier per metric plus one blended tier; company-wide reporting always shows a tier distribution, never a company-wide average.
|
|
19
|
+
|
|
20
|
+
### Details
|
|
21
|
+
|
|
22
|
+
#### 01-four-key-metrics
|
|
23
|
+
|
|
24
|
+
This framework covers DORA's four key metrics: Deployment Frequency ([agentme-edr-403](403-dora-deployment-frequency.md)), Lead Time for Changes ([agentme-edr-404](404-dora-lead-time-for-changes.md)), Change Failure Rate ([agentme-edr-405](405-dora-change-failure-rate.md)), and Time to Restore Service ([agentme-edr-406](406-dora-time-to-restore-service.md); DORA's current term is "Failed Deployment Recovery Time"). Sub-metrics MUST follow a hybrid composition model: Lead Time and Time to Restore sub-metrics are additive and sum to the parent value, while Deployment Frequency and Change Failure Rate sub-metrics are complementary signals that MUST NOT be summed. All time-based sub-metrics MUST use the median (p50) as the headline statistic instead of the mean, to resist outlier skew; percentile bands (p85/p95) MAY be added for distribution visibility.
|
|
25
|
+
|
|
26
|
+
#### 02-per-service-and-team-accounting
|
|
27
|
+
|
|
28
|
+
Every metric and sub-metric MUST be measured and reported per team, never only as an org-wide aggregate. The atomic unit of attribution MUST be the deployable service, not the team directly: a team's figures MUST be a rollup of its owned services, per [agentme-bdr-402](../../bdrs/operations/402-digital-product-roles.md)'s `01-product-team-purpose`/`02-product-team-scope-of-work` (a team owns its product's full lifecycle end-to-end). A change touching multiple services MUST be measured independently against each affected service's own timeline; it MUST NOT be flagged as cross-team or assigned to one majority owner.
|
|
29
|
+
|
|
30
|
+
#### 03-artifact-to-service-mapping
|
|
31
|
+
|
|
32
|
+
Code-path-based artifacts (pull requests, commits, deploy-workflow runs) MUST be attributed to a service using the repository's CODEOWNERS file, with path patterns defined at service-directory granularity. CODEOWNERS MUST NOT be used for GH Issues, since issues have no file path; issue-based sub-metrics MUST instead use an explicit label or component convention (for example a `service:<name>` label) cross-walked to the owning service.
|
|
33
|
+
|
|
34
|
+
#### 04-cross-team-incident-attribution
|
|
35
|
+
|
|
36
|
+
When an incident's root cause is traced to a different team's change, it MUST be counted against the root-cause team's Change Failure Rate ([agentme-edr-405](405-dora-change-failure-rate.md)) and, separately, tagged as a non-tiered visibility signal for the impacted team. It MUST NOT be double-counted into the impacted team's own numerator. Root-cause determination MUST follow [agentme-bdr-405](../../bdrs/operations/405-digital-product-roles-raci.md)'s `04-accountability-network-and-root-cause-tracing` methodology rather than a separate one defined here.
|
|
37
|
+
|
|
38
|
+
#### 05-maturity-level-definition
|
|
39
|
+
|
|
40
|
+
Each team MUST be assigned a named maturity tier (Elite, High, Medium, or Low, per DORA's current published bands, cited and dated rather than hardcoded here) for each of the four metrics. Each team MUST also receive one blended maturity label equal to the floor (worst) of its four per-metric tiers. This floor combination is this framework's own practical proxy, since DORA does not publish an official per-team combination formula; it is grounded in DORA's own finding that top performers tend to do well across all metrics. A Low tier on a metric with a genuine regulatory floor MUST NOT be treated as an excuse to stop improving the rest of that metric or any other metric within the team's control.
|
|
41
|
+
|
|
42
|
+
#### 06-maturity-level-distribution-reporting
|
|
43
|
+
|
|
44
|
+
Maturity level MUST NOT be averaged across teams into one company-wide figure. Company-wide reporting MUST show the percentage of teams at each blended tier as the headline view, with the four per-metric tier distributions available as a supporting drill-down. Distributions MUST NOT be used to rank or compete teams against each other, and individual team results MUST NOT be reported in a way that isolates one team's metrics from the others' — both patterns are documented by DORA as pitfalls that fuel finger-pointing and gaming.
|
|
45
|
+
|
|
46
|
+
#### 07-adoption-order
|
|
47
|
+
|
|
48
|
+
Teams SHOULD adopt the four metrics in this order: Deployment Frequency, then Lead Time for Changes, then Change Failure Rate, then Time to Restore Service. Each step needs one more data source or organizational capability than the last (deploy-workflow history only; then PR data; then a failure-labeling convention; then incident-management timestamps), and DORA's research shows that improving batch size and frequency first cascades into better lead time and stability. Each companion policy defines its own internal sub-metric adoption order using the same ease-plus-impact rationale.
|
|
49
|
+
|
|
50
|
+
#### 08-daily-usage-by-role
|
|
51
|
+
|
|
52
|
+
Roles SHOULD consult these metrics at the cadence below when carrying out their accountabilities as defined in [agentme-bdr-402](../../bdrs/operations/402-digital-product-roles.md), [agentme-bdr-404](../../bdrs/operations/404-team-roles-and-specialists.md), and [agentme-bdr-405](../../bdrs/operations/405-digital-product-roles-raci.md):
|
|
53
|
+
|
|
54
|
+
| Role | Cadence | Usage |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Tech Lead / AI Lead | Daily | Primary consumer; accountable for CI/CD pipeline health and incident response; reads review latency ([agentme-edr-404](404-dora-lead-time-for-changes.md) `02`) jointly with Change Failure Rate to catch rubber-stamping |
|
|
57
|
+
| PO | Weekly | Reads Deployment Frequency and Lead Time alongside Change Failure Rate before go-live approvals |
|
|
58
|
+
| EM | Weekly/quarterly | Cross-checks a sustained Low tier against the team's `agentme-bdr-402` `03-workforce-allocation` operations-and-controls capacity |
|
|
59
|
+
| PjM | As-needed | Investigates cross-team blockers when Lead Time or Change Failure Rate issues trace to cross-team dependencies |
|
|
60
|
+
| PM / Leadership | Quarterly | Reads the tier distribution from rule `06`, never a company-wide average |
|
|
61
|
+
|
|
62
|
+
## Considered Options
|
|
63
|
+
|
|
64
|
+
* (REJECTED) **Single composite delivery score** — blend all four metrics into one number
|
|
65
|
+
* Reason: Hides which metric needs attention; contradicts DORA's own guidance against "one metric to rule them all"
|
|
66
|
+
* (REJECTED) **Company-wide averaged maturity score** — one blended number across all teams
|
|
67
|
+
* Reason: Masks teams that need help; contradicts DORA's guidance against disparate comparisons and siloed competition
|
|
68
|
+
* (REJECTED) **Strict-composition redesign for Deployment Frequency and Change Failure Rate** — force all sub-metrics to sum to the parent value
|
|
69
|
+
* Reason: Would require dropping batch size (an orthogonal dimension) and escaped-defect-rate (different attribution lag) to force a clean sum
|
|
70
|
+
|
|
71
|
+
## References
|
|
72
|
+
|
|
73
|
+
- [DORA's software delivery performance metrics](https://dora.dev/guides/dora-metrics-four-keys/)
|
|
74
|
+
- [agentme-edr-403](403-dora-deployment-frequency.md) — Deployment Frequency
|
|
75
|
+
- [agentme-edr-404](404-dora-lead-time-for-changes.md) — Lead Time for Changes
|
|
76
|
+
- [agentme-edr-405](405-dora-change-failure-rate.md) — Change Failure Rate
|
|
77
|
+
- [agentme-edr-406](406-dora-time-to-restore-service.md) — Time to Restore Service
|
|
78
|
+
- [agentme-edr-401](401-service-health-check-endpoint.md) — Service health check endpoint
|
|
79
|
+
- [agentme-edr-302](../platform/302-github-pipelines.md) — GitHub CI/CD pipelines
|
|
80
|
+
- [agentme-bdr-402](../../bdrs/operations/402-digital-product-roles.md) — Digital product roles: org & cross-team
|
|
81
|
+
- [agentme-bdr-404](../../bdrs/operations/404-team-roles-and-specialists.md) — Digital product roles: team & specialists
|
|
82
|
+
- [agentme-bdr-405](../../bdrs/operations/405-digital-product-roles-raci.md) — Digital product roles: RACI
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentme-edr-policy-403-dora-deployment-frequency
|
|
3
|
+
description: Defines calculation, examples, and challenges for DORA's Deployment Frequency metric and its deploys-per-week, batch-size, and automation-ratio sub-metrics. Use when instrumenting or reviewing deployment frequency 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-403: DORA deployment frequency
|
|
9
|
+
|
|
10
|
+
## Context and Problem Statement
|
|
11
|
+
|
|
12
|
+
Deployment Frequency is the easiest of DORA's four metrics to start measuring, but teams need a concrete, per-service calculation method rather than just the concept. How should deploys-per-week, batch size, and automation ratio be calculated, and in what order should a team adopt them?
|
|
13
|
+
|
|
14
|
+
## Decision Outcome
|
|
15
|
+
|
|
16
|
+
**Measure three complementary, non-summing sub-metrics per deployable service, adopted in order of increasing data-source complexity.**
|
|
17
|
+
|
|
18
|
+
Each sub-metric MUST be scoped per [agentme-edr-402](402-dora-metrics-framework.md)'s `02-per-service-and-team-accounting` and rolled up per team; none of the three sum to a single formula.
|
|
19
|
+
|
|
20
|
+
### Details
|
|
21
|
+
|
|
22
|
+
#### 01-deploys-per-week
|
|
23
|
+
|
|
24
|
+
Deploys-per-week MUST be calculated by counting successful deploy-workflow runs on the service's default or release branch per week, using CODEOWNERS to attribute each run to its service. Example: a service with 12 successful deploy runs over 4 weeks has a Deployment Frequency of 3/week. Challenges: a change touching multiple services MUST be counted independently against each service's own timeline; the measurement window MUST span the service's own release-train or freeze-window cadence rather than a fixed calendar snapshot; "one deploy event" for canary, staged, or multi-region rollouts MUST be defined consistently per service (for example, pipeline-run start); re-run or retry executions of the same release MUST NOT inflate the count. This is the first sub-metric to adopt: it needs only deploy-workflow history as a single data source, and gives the fastest, most direct throughput signal.
|
|
25
|
+
|
|
26
|
+
#### 02-batch-size
|
|
27
|
+
|
|
28
|
+
Batch size MUST be calculated by counting commits or PRs merged between two consecutive deploys of the same service. Example: 8 PRs merged between deploy N and deploy N+1 gives a batch size of 8. Challenges: squash-merge collapses commit history, so the count MUST be based on merged PRs rather than raw commits. Teams SHOULD adopt this second: it needs no data source beyond `01`'s deploy history, and is a leading indicator for both Lead Time and Change Failure Rate risk (see [agentme-edr-402](402-dora-metrics-framework.md)'s `07-adoption-order`).
|
|
29
|
+
|
|
30
|
+
#### 03-automation-ratio
|
|
31
|
+
|
|
32
|
+
Automation ratio MUST be calculated by dividing automated deploy-workflow runs (triggered by merge, tag, or schedule) by all deploy-workflow runs for the service. Example: 18 automated of 20 total runs gives a 90% automation ratio. Challenges: a mandatory regulatory or manual QA approval gate MUST NOT be conflated with an ad-hoc manual deploy; only the latter counts against automation ratio. Teams SHOULD adopt this third, since it requires classifying trigger type per run and is most useful once volume and batch size are already understood.
|
|
33
|
+
|
|
34
|
+
## References
|
|
35
|
+
|
|
36
|
+
- [agentme-edr-402](402-dora-metrics-framework.md) — DORA metrics framework
|
|
37
|
+
- [DORA's software delivery performance metrics](https://dora.dev/guides/dora-metrics-four-keys/)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentme-edr-policy-404-dora-lead-time-for-changes
|
|
3
|
+
description: Defines calculation, examples, and challenges for DORA's Lead Time for Changes metric and its PR-cycle-time, review-latency, deploy-pipeline-time, and total-lead-time sub-metrics. Use when instrumenting or reviewing lead 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-404: DORA lead time for changes
|
|
9
|
+
|
|
10
|
+
## Context and Problem Statement
|
|
11
|
+
|
|
12
|
+
Lead Time for Changes is often reduced to one number that hides whether delay lives in review or in deployment. How should its phases be calculated so a team can see where time is actually spent, and how do the phases combine into a total?
|
|
13
|
+
|
|
14
|
+
## Decision Outcome
|
|
15
|
+
|
|
16
|
+
**Measure four additive sub-metrics per deployable service that sum to a total lead time, using the median (p50) as the headline statistic.**
|
|
17
|
+
|
|
18
|
+
Review latency is a phase inside PR cycle time; PR cycle time plus deploy-pipeline time MUST equal total lead time.
|
|
19
|
+
|
|
20
|
+
### Details
|
|
21
|
+
|
|
22
|
+
#### 01-pr-cycle-time
|
|
23
|
+
|
|
24
|
+
PR cycle time MUST be measured from a PR's first commit to its `merged_at` timestamp. Example: first commit at day 0, merged at day 2 gives a 2-day PR cycle time. Challenges: squash-merge loses the first-commit timestamp, so the PR's `created_at` SHOULD be used as a proxy; stacked PRs and long-lived branches with rebases distort the start time. Teams SHOULD adopt this first, since it uses a single data source (GitHub PRs) and is usually the dominant contributor to total lead time.
|
|
25
|
+
|
|
26
|
+
#### 02-review-latency
|
|
27
|
+
|
|
28
|
+
Review latency MUST be measured from a PR's `created_at` to its first review `submitted_at`, as a drill-down inside `01`. Example: PR opened at hour 0, first review at hour 20, gives 20 hours of review latency. Challenges: this is the sub-metric most at risk of being gamed by rubber-stamping; an unusually fast review latency MUST be read jointly with [agentme-edr-405](405-dora-change-failure-rate.md)'s Change Failure Rate rather than treated as a win on its own. Teams SHOULD adopt this second: it reuses `01`'s data source with one extra timestamp, and is usually the most common, most actionable bottleneck.
|
|
29
|
+
|
|
30
|
+
#### 03-deploy-pipeline-time
|
|
31
|
+
|
|
32
|
+
Deploy-pipeline time MUST be measured from merge to deploy completion for the affected service, covering any merge-to-deploy gate whether automated or manual (including mandatory regulatory or QA approval gates). Example: merged at hour 0, service deployed at hour 6, gives 6 hours of deploy-pipeline time. Challenges: a PR shipping to multiple services MUST have this computed once per affected service, since deploy timing differs by service; flaky CI re-runs inflate the measurement. Teams SHOULD adopt this third: it requires a second data source (deploy-workflow runs) correlated with PR data, and isolates exactly how much delay sits outside the team's own review process.
|
|
33
|
+
|
|
34
|
+
#### 04-total-lead-time
|
|
35
|
+
|
|
36
|
+
Total lead time MUST equal `01` plus `03` (with `02` already counted inside `01`), computed once per PR-and-affected-service pair and rolled up per team. Example: 2-day PR cycle time plus 6-hour deploy-pipeline time gives a total of roughly 2.25 days. Challenges: a handful of extreme outliers can skew a mean, which is why the median MUST be the headline statistic. Teams SHOULD adopt this last: it requires correlating both data sources together, the hardest sub-metric to compute reliably, but it is the single clearest measure of overall delivery speed.
|
|
37
|
+
|
|
38
|
+
## References
|
|
39
|
+
|
|
40
|
+
- [agentme-edr-402](402-dora-metrics-framework.md) — DORA metrics framework
|
|
41
|
+
- [DORA's software delivery performance metrics](https://dora.dev/guides/dora-metrics-four-keys/)
|
|
@@ -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
|
|
@@ -67,8 +67,8 @@ test:
|
|
|
67
67
|
$(foreach app,$(APPS),$(MAKE) -C $(app) test &&) true
|
|
68
68
|
|
|
69
69
|
clean:
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
$(foreach app,$(APPS),$(MAKE) -C $(app) clean &&) true
|
|
71
|
+
rm -rf .cache
|
|
72
72
|
|
|
73
73
|
setup:
|
|
74
74
|
@echo "Install Mise: https://mise.jdx.dev/getting-started.html"
|
|
@@ -220,16 +220,16 @@ For each module inside an application:
|
|
|
220
220
|
all: build lint test
|
|
221
221
|
|
|
222
222
|
build:
|
|
223
|
-
|
|
223
|
+
mise exec -- go build ./...
|
|
224
224
|
|
|
225
225
|
lint:
|
|
226
|
-
|
|
226
|
+
mise exec -- golangci-lint run ./...
|
|
227
227
|
|
|
228
228
|
test:
|
|
229
|
-
|
|
229
|
+
mise exec -- go test ./... -cover
|
|
230
230
|
|
|
231
231
|
clean:
|
|
232
|
-
|
|
232
|
+
rm -rf dist .cache
|
|
233
233
|
```
|
|
234
234
|
|
|
235
235
|
**Node.js / TypeScript:**
|
|
@@ -239,16 +239,16 @@ For each module inside an application:
|
|
|
239
239
|
all: build lint test
|
|
240
240
|
|
|
241
241
|
build:
|
|
242
|
-
|
|
242
|
+
mise exec -- pnpm exec tsc --project tsconfig.json
|
|
243
243
|
|
|
244
244
|
lint:
|
|
245
|
-
|
|
245
|
+
mise exec -- pnpm exec eslint ./src
|
|
246
246
|
|
|
247
247
|
test:
|
|
248
|
-
|
|
248
|
+
mise exec -- pnpm exec jest --verbose
|
|
249
249
|
|
|
250
250
|
clean:
|
|
251
|
-
|
|
251
|
+
rm -rf dist .cache
|
|
252
252
|
```
|
|
253
253
|
|
|
254
254
|
**Python:**
|
|
@@ -258,16 +258,16 @@ For each module inside an application:
|
|
|
258
258
|
all: build lint test
|
|
259
259
|
|
|
260
260
|
build:
|
|
261
|
-
|
|
261
|
+
mise exec -- uv build --project . --out-dir dist
|
|
262
262
|
|
|
263
263
|
lint:
|
|
264
|
-
|
|
264
|
+
mise exec -- uv run --project . ruff check .
|
|
265
265
|
|
|
266
266
|
test:
|
|
267
|
-
|
|
267
|
+
mise exec -- uv run --project . pytest
|
|
268
268
|
|
|
269
269
|
clean:
|
|
270
|
-
|
|
270
|
+
rm -rf dist .cache
|
|
271
271
|
```
|
|
272
272
|
|
|
273
273
|
4. **Add source files** appropriate to the language, placing them inside the module folder.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
skill: monorepo-setup
|
|
3
|
+
skill-version: "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 —
|
|
@@ -137,16 +137,10 @@ Checks to run in order:
|
|
|
137
137
|
- `"Check for more features I would probably need but that are not part of the plan. Ask questions."`
|
|
138
138
|
- `"What happens if the file doesn't exist? Ask questions."`
|
|
139
139
|
- `"Dry run if I send a file with 10GB in size"`
|
|
140
|
-
- `"What happens if we have 10 million files?"`
|
|
141
140
|
- `"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
141
|
- `"Verify all references in the plan. Ask questions."`
|
|
145
142
|
- `"Check for edge cases we didn't discuss yet. Ask questions."`
|
|
146
|
-
- `"Check for consistency and ask questions"`
|
|
147
143
|
- `"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
144
|
|
|
151
145
|
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
146
|
- **"Continue to Phase 5 — Visual Consistency Validation"** (recommended when all checks have converged) — advance.
|
|
@@ -276,7 +270,7 @@ If any features were placed in the **Deferred Features** list during Phase 2 Ste
|
|
|
276
270
|
This step is skipped if no features were deferred.
|
|
277
271
|
|
|
278
272
|
**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:** `
|
|
273
|
+
- `### 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
274
|
- 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
275
|
|
|
282
276
|
Before the final gate, add a step to the implementation plan to produce a concise feature documentation file. Use `vscode_askQuestions` to ask:
|
package/.xdrs/agentme/edrs/principles/skills/{150-refine-plan-mode → refine-plan-mode}/SKILL.test.md
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
skill:
|
|
2
|
+
skill: refine-plan-mode
|
|
3
3
|
skill-version: "3.0"
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -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
|
|