xdrs-core 0.52.3 → 0.53.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.
@@ -111,7 +111,7 @@ All Policies MUST follow this template
111
111
  ---
112
112
  name: [scope]-[type]-policy-[number]-[short-title]
113
113
  description: [What this decision is about and when to use it]
114
- apply-to: [Required. Contexts this decision applies to, under 40 words. Use "All scopes" when broadly applicable.]
114
+ apply-to: [Required. Contexts this decision applies to, <40 words. Use "All scopes" when broadly applicable.]
115
115
  valid-from: [Required. ISO date YYYY-MM-DD from when enforcement begins. Defaults to creation date.]
116
116
  license: [Optional. SPDX license expression]
117
117
  metadata:
@@ -121,7 +121,7 @@ Brief description of the skill goal.
121
121
  ### Outputs
122
122
 
123
123
  #### Contents
124
- - Generated files or chat-delivered results, one bullet per item, or "None".
124
+ - Generated files or chat-delivered results, one bullet per item, or "None" (e.g., `Release notes (<300 words)`).
125
125
 
126
126
  #### Changes
127
127
  - External system mutations that are part of the skill's main objective, one bullet per item, or "None".
@@ -202,6 +202,17 @@ Generative skills — those producing a deliverable document (Policy, Skill, Art
202
202
 
203
203
  Skills MUST halt on missing required input, dubious/ambiguous input, or insufficient agent confidence, unless the user explicitly instructs the agent to proceed anyway. This override applies generally; a skill's own `## Halt Conditions` list does not need to restate it.
204
204
 
205
+ **Generated content caps**
206
+
207
+ Every natural-language content a skill generates MUST declare a hard word cap written exactly as `<N words`, whether a human or an agent executes the skill. This covers files, templates, reports, intermediate chat messages, HITL questions, final summaries, and text posted to external systems (e.g., PR comments, commit messages).
208
+ - Exempt, with no marker: code (including its comments), structured data (JSON, YAML, tracking files), verbatim copies, and frontmatter fields already limited in characters by a spec or Policy.
209
+ - Caps MUST be in words; other limits MAY coexist but never replace them.
210
+ - Declare each cap once: in the template placeholder (including templates in `references/` or `.assets/`), else in the Instructions step producing the content, else in its `#### Contents` bullet.
211
+ - A blanket statement MAY cover a content class (e.g., all intermediate messages); a more specific cap overrides it.
212
+ - Write the number inline; a Policy reference is optional.
213
+ - Content whose size cannot be bounded MUST be marked `(uncapped: <reason>)`, the reason explaining why.
214
+ - Caps are hard: condense, or split into another item only where the skill allows it; never split one logical item across messages. An explicit user request lifts the cap for that item only.
215
+
205
216
  **Validation**
206
217
 
207
218
  Use the [skills-ref](https://github.com/agentskills/agentskills/tree/main/skills-ref) CLI to validate before committing:
@@ -86,32 +86,32 @@ All research documents MUST follow this template:
86
86
 
87
87
  ## Abstract
88
88
 
89
- [Single paragraph summarizing the goal, methods, results, and conclusion. Goal: let a quick technical reader understand the question, method, main result, and takeaway. Under 200 words.]
89
+ [Single paragraph summarizing the goal, methods, results, and conclusion. Goal: let a quick technical reader understand the question, method, main result, and takeaway. <200 words.]
90
90
 
91
91
  ## Introduction
92
92
 
93
93
  [Describe the problem, context, constraints, known facts, experiences, gaps, assumptions, and objectives.
94
- Prefer markdown structures (bullets, tables, headings) first; for diagrams see _core-adr-policy-020. Goal: explain the investigated problem, operating context, constraints, and why the subject matters. Under 700 words.]
94
+ Prefer markdown structures (bullets, tables, headings) first; for diagrams see _core-adr-policy-020. Goal: explain the investigated problem, operating context, constraints, and why the subject matters. <700 words.]
95
95
 
96
96
  Question: [Central question of the research]?
97
97
 
98
98
  ## Methods
99
99
 
100
100
  [Explain how the study was conducted, including design, tools, data sources, and test conditions.
101
- Include enough detail for an experienced professional to reproduce the relevant parts. Goal: make the important parts of the study reproducible. Under 1200 words.]
101
+ Include enough detail for an experienced professional to reproduce the relevant parts. Goal: make the important parts of the study reproducible. <1200 words.]
102
102
 
103
103
  ## Results
104
104
 
105
105
  [Report findings, data, trends, quantitative results, code artifacts, and option comparisons.
106
- Prefer tables and bullet lists for simple comparisons; for diagrams see _core-adr-policy-020. If multiple options solve the same problem, add comparison tables and explicit pros and cons for each option. Focus on raw findings, not interpretation. Goal: present the raw findings with minimal interpretation. Under 1800 words.]
106
+ Prefer tables and bullet lists for simple comparisons; for diagrams see _core-adr-policy-020. If multiple options solve the same problem, add comparison tables and explicit pros and cons for each option. Focus on raw findings, not interpretation. Goal: present the raw findings with minimal interpretation. <1800 words.]
107
107
 
108
108
  ## Discussion
109
109
 
110
- [Interpret the results, explain significance, trade-offs, performance considerations, limitations, and implications. Goal: interpret the findings for technical readers. Keep this section technically engaged and under 1000 words.]
110
+ [Interpret the results, explain significance, trade-offs, performance considerations, limitations, and implications. Goal: interpret the findings for technical readers. Keep this section technically engaged. <1000 words.]
111
111
 
112
112
  ## Conclusion
113
113
 
114
- [Summarize the main findings, practical takeaway, applicability boundaries, and important open questions. Goal: summarize the main findings and what they mean in practice. Under 400 words.]
114
+ [Summarize the main findings, practical takeaway, applicability boundaries, and important open questions. Goal: summarize the main findings and what they mean in practice. <400 words.]
115
115
 
116
116
  ## References
117
117
 
@@ -66,39 +66,39 @@ All initiatives MUST follow this template:
66
66
 
67
67
  ## Executive Summary
68
68
 
69
- [Required. A summary of all sections below using bullet points, focused on the most important items. Under 500 words.]
69
+ [Required. A summary of all sections below using bullet points, focused on the most important items. <500 words.]
70
70
 
71
71
  ## Context and Problem Statement
72
72
 
73
- [Required. Describe clearly why we are executing this initiative. What is the impact? Who is impacted? Why is this important? Under 200 words.
73
+ [Required. Describe clearly why we are executing this initiative. What is the impact? Who is impacted? Why is this important? <200 words.
74
74
  E.g.: Our checkout abandon rate is 50%, and it's increasing over time.]
75
75
 
76
76
  ## Proposed Solution
77
77
 
78
- [Required. What we expect to achieve to solve the problem described above. Under 200 words.
78
+ [Required. What we expect to achieve to solve the problem described above. <200 words.
79
79
  E.g.: Reduce payment time in our App by 30% and fix the 3 most impactful bugs.]
80
80
 
81
81
  Expected end date: YYYY-MM-DD
82
82
 
83
83
  ## Acceptance Criteria
84
84
 
85
- [Optional. Used to make it clear what the expected result is and to create a way to verify when the goal is achieved. May include a short checklist. Under 100 words.]
85
+ [Optional. Used to make it clear what the expected result is and to create a way to verify when the goal is achieved. May include a short checklist. <100 words.]
86
86
 
87
87
  ## Approach
88
88
 
89
- [Optional. High level description about how to achieve the result and the strategy used, including how to engage people, projects, organize the work, how to learn unknowns, deal with risks, and distribute workload. May include a WBS with the hierarchy of the work. Under 300 words.]
89
+ [Optional. High level description about how to achieve the result and the strategy used, including how to engage people, projects, organize the work, how to learn unknowns, deal with risks, and distribute workload. May include a WBS with the hierarchy of the work. <300 words.]
90
90
 
91
91
  ## Key Deliverables
92
92
 
93
- [Optional. List of the main features, goods, artifacts, data, articles, skills, decisions, training, programs, events etc that will be important to achieve the expected result. Under 300 words.]
93
+ [Optional. List of the main features, goods, artifacts, data, articles, skills, decisions, training, programs, events etc that will be important to achieve the expected result. <300 words.]
94
94
 
95
95
  ## Key Resources
96
96
 
97
- [Optional. List of equipment, people, other project results, budget, areas or dependencies that need to be engaged or allocated for this initiative to be implemented. Under 100 words.]
97
+ [Optional. List of equipment, people, other project results, budget, areas or dependencies that need to be engaged or allocated for this initiative to be implemented. <100 words.]
98
98
 
99
99
  ## Milestones
100
100
 
101
- [Optional. List of goals to be followed along with an optional acceptance criteria, owner and due date. Each milestone may have a checklist used as acceptance criteria verification. Key tasks and risks can be listed as part of a milestone. Under 1000 words per milestone.]
101
+ [Optional. List of goals to be followed along with an optional acceptance criteria, owner and due date. Each milestone may have a checklist used as acceptance criteria verification. Key tasks and risks can be listed as part of a milestone. <1000 words per milestone.]
102
102
 
103
103
  ### Milestone 1: [Title]
104
104
  Owner: [name or team]
@@ -118,7 +118,7 @@ Due date: YYYY-MM-DD
118
118
 
119
119
  ## Risks Identified
120
120
 
121
- [Optional. List of risks along with a short description and mitigation strategy. Under 1000 words.]
121
+ [Optional. List of risks along with a short description and mitigation strategy. <1000 words.]
122
122
 
123
123
  ## References
124
124
 
@@ -53,7 +53,7 @@ Each rule MUST be written as a level-4 heading with a two-digit zero-padded sequ
53
53
 
54
54
  ```markdown
55
55
  #### [NN]-[short-rule-title-in-kebab-case]
56
- [Rule body using normative language per _core-adr-policy-001. Under 500 words.]
56
+ [Rule body using normative language per _core-adr-policy-001. <500 words.]
57
57
  ```
58
58
 
59
59
  #### 09-citations-must-use-dot-notation
@@ -4,8 +4,8 @@ description: >
4
4
  Compiles or updates any scope declaring `scope-type: compiled` from its configured external sources. Reads compilation meta-policies to discover sources, fetches content (git clone, local copy, or web scrape), plans policy changes, migrates policies one at a time with structured format, `## Source` sections, and `**compilation-note:**` markers, then runs lint and review. Documents source inconsistencies without inventing fixes. Activate when the user asks to compile, update, sync, refresh, or recompile a compiled scope.
5
5
  metadata:
6
6
  author: flaviostutz
7
- version: "1.0.0"
8
- updated: 2026-09-19
7
+ version: "1.1.0"
8
+ updated: 2026-09-24
9
9
  ---
10
10
 
11
11
  ## Overview
@@ -50,6 +50,8 @@ Performs a full compilation cycle for any scope declaring `scope-type: compiled`
50
50
 
51
51
  ## Instructions
52
52
 
53
+ Keep every question and intermediate message <100 words and the final summary <150 words.
54
+
53
55
  ### Phase 0: Prerequisites Gate
54
56
 
55
57
  1. Identify the target scope. Verify its `index.md` declares `scope-type: compiled` (alone or combined with other types). If not, output: `FAIL — [scope-name] does not declare scope-type: compiled. This skill only applies to compiled scopes.`
@@ -93,7 +95,7 @@ Performs a full compilation cycle for any scope declaring `scope-type: compiled`
93
95
  1. For each type folder governed by a meta-policy (from Phase 0), apply the `## Selectors` rules to the fetched staging content to determine which portions to include.
94
96
  2. List all existing policies in the scope under each governed type folder.
95
97
  3. If `.assets/sources/[name]/` already holds a previous persisted snapshot, diff the newly selected staging content against it (for example, by content hash per file) to pre-seed which policies are likely unaffected.
96
- 4. Analyse the selected content and produce a TODO list showing for each expected policy:
98
+ 4. Analyse the selected content and produce a TODO list (uncapped: one line per expected policy; each line <30 words) showing for each expected policy:
97
99
  - **CREATE** — new policy to be compiled from source (does not yet exist in scope)
98
100
  - **UPDATE** — existing policy whose source content has changed
99
101
  - **REMOVE** — existing policy whose source content no longer exists or is excluded by selectors
@@ -104,12 +106,12 @@ Performs a full compilation cycle for any scope declaring `scope-type: compiled`
104
106
 
105
107
  For each TODO item marked CREATE or UPDATE, in sequence:
106
108
 
107
- 1. **Write the policy file** following `_core-adr-policy-019` and `_core-adr-policy-008`:
108
- - Use standard policy frontmatter: `name`, `description`, `apply-to`, `valid-from`. Generate these from the source text; they are exempt from the no-invented-content rule per policy-019 rule 05.
109
+ 1. **Write the policy file** (<2600 words, per `_core-adr-policy-002`) following `_core-adr-policy-019` and `_core-adr-policy-008`:
110
+ - Use standard policy frontmatter: `name`, `description`, `apply-to` (<40 words), `valid-from`. Generate these from the source text; they are exempt from the no-invented-content rule per policy-019 rule 05.
109
111
  - Use structured numbered rule blocks for all claims (per `_core-adr-policy-008`).
110
112
  - Transcribe source content faithfully. Do NOT invent, infer beyond what the source states, or fill gaps. Preserve ambiguities as-is.
111
113
 
112
- 2. **Add a `**compilation-note:**` marker** inside a rule body only when the mapping from source to rule is not obvious — for example: indirect references, conclusions drawn by connecting multiple source sections, interpretations that required judgment, or cases where the same source passage could be read differently. Do NOT add a marker when the rule is a direct, literal transcription of a single source statement. Place the marker as a new sentence at the end of the rule body. Example:
114
+ 2. **Add a `**compilation-note:**` marker** inside a rule body only when the mapping from source to rule is not obvious — for example: indirect references, conclusions drawn by connecting multiple source sections, interpretations that required judgment, or cases where the same source passage could be read differently. Do NOT add a marker when the rule is a direct, literal transcription of a single source statement. Place the marker as a new sentence at the end of the rule body and keep it <60 words. Example:
113
115
  ```
114
116
  All API keys MUST be rotated every 90 days. **compilation-note:** derived from [api-guidelines/security/api-guidelines.md section 4.2] — "Keys should be invalidated and replaced quarterly"; frequency inferred as 90 days from the term "quarterly".
115
117
  ```
@@ -154,7 +156,7 @@ After writing each policy:
154
156
  1. Collect all inconsistencies noted during Phases 4, 5, and 7.
155
157
  2. If any inconsistencies exist:
156
158
  - Determine the next available policy number in the `001–100` principles block for the relevant type folder.
157
- - Create or update `[type]/principles/NNN-inconsistencies-from-source.md` in the scope.
159
+ - Create or update `[type]/principles/NNN-inconsistencies-from-source.md` (<2600 words) in the scope.
158
160
  - The policy `name` field MUST be `[scope]-[type]-policy-NNN-inconsistencies-from-source`.
159
161
  - List each inconsistency with: source file path, affected compiled policy, and a description of the inconsistency.
160
162
  - Do NOT propose or include fixes.
@@ -6,8 +6,8 @@ description: >
6
6
  Also activate when you identify a need to check compliance with Policies during implementation.
7
7
  metadata:
8
8
  author: flaviostutz
9
- version: "1.0.0"
10
- updated: 2026-09-19
9
+ version: "1.1.0"
10
+ updated: 2026-09-24
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -28,7 +28,7 @@ Performs a structured review of code changes or files against the Policies in th
28
28
 
29
29
  #### Contents
30
30
 
31
- - Structured ERROR/WARNING findings report in chat.
31
+ - Findings report in chat (uncapped: one per finding).
32
32
 
33
33
  #### Changes
34
34
 
@@ -48,6 +48,8 @@ Performs a structured review of code changes or files against the Policies in th
48
48
 
49
49
  ## Instructions
50
50
 
51
+ Keep every question and intermediate message <100 words.
52
+
51
53
  ### Phase 1: Code Gathering
52
54
 
53
55
  1. Identify changes based on requested scope:
@@ -113,18 +115,18 @@ Performs a structured review of code changes or files against the Policies in th
113
115
 
114
116
  ### Phase 6: Reporting
115
117
 
116
- **Report template**
118
+ **Report template** (keep `## Summary` <50 words)
117
119
  ```text
118
120
  ### Code Review Against Policies
119
121
  Scope: [scope identifier]
120
122
 
121
123
  ## Findings
122
124
  ### 1. [ERROR|WARNING] - [filename:line_number](filename:line_number)
123
- - Title of the finding (<=15 words)
125
+ - Title of the finding (<15 words)
124
126
  - Policy reference: [policy-file:line_number](policy-file:line_number)
125
- - Why: Brief description of the issue in 20 words
126
- - Fix: Specific action to fix this issue in 15 words
127
- - Relevance: Why this matters / What to watch for in 15 words
127
+ - Why: Brief description of the issue (<20 words)
128
+ - Fix: Specific action to fix this issue (<15 words)
129
+ - Relevance: Why this matters / What to watch for (<15 words)
128
130
 
129
131
  ### 2. [second finding etc]
130
132
 
@@ -4,8 +4,8 @@ description: >
4
4
  Creates a new article document following XDRS article standards: selects scope, type, subject, and number; then writes a focused synthetic text that combines and links multiple Policies, Research documents, and Skills around a topic. Activate this skill when the user asks to create, add, or write a new article, guide, or overview document within an XDRS project.
5
5
  metadata:
6
6
  author: flaviostutz
7
- version: "1.0.0"
8
- updated: 2026-09-19
7
+ version: "1.1.0"
8
+ updated: 2026-09-24
9
9
  ---
10
10
 
11
11
  ## Overview
@@ -42,6 +42,8 @@ Guides the creation of a well-structured article by following `_core-adr-policy-
42
42
 
43
43
  ## Instructions
44
44
 
45
+ Keep every question and intermediate message <100 words and the final summary <150 words.
46
+
45
47
  ### Phase 0: Clarify Intent
46
48
 
47
49
  Before reading any standards, ask the user clarifying questions to gather the information needed to proceed. Use the `vscode_askQuestions` tool with all questions in a single call.
@@ -108,16 +110,16 @@ Use the mandatory template from `004-article-standards`:
108
110
 
109
111
  ## Overview
110
112
 
111
- [Brief description of what this article covers and its intended audience. Under 40 words.]
113
+ [Brief description of what this article covers and its intended audience. <40 words.]
112
114
 
113
115
  ## Content
114
116
 
115
117
  [Synthetic text combining and explaining the topic. Use links to Policies, Research documents, and Skills
116
- when referencing information from those documents. Keep under 1950 words total.]
118
+ when referencing information from those documents. <1950 words total.]
117
119
 
118
120
  ## References
119
121
 
120
- - [Policy id or Skill name](relative/path/to/file.md) - Brief description of relevance
122
+ - [Policy id or Skill name](relative/path/to/file.md) - Brief description of relevance (<15 words)
121
123
  ```
122
124
 
123
125
  Rules to apply while drafting:
@@ -130,15 +132,15 @@ Rules to apply while drafting:
130
132
  - For diagrams and non-Markdown assets, follow `_core-adr-policy-020`: prefer plain Markdown tables/lists first, then ASCII art for very simple cases, then Mermaid.js (sequence, state, activity, entity diagrams) for complex ones, then draw.io when Mermaid is insufficient — save as Editable Vector (File → Save As → Editable Vector) and store as `.svg` in the sibling `.assets/` folder.
131
133
  - If the article genuinely needs local images or supporting files, store them in `.xdrs/[scope]/[type]/[subject]/articles/.assets/` and link them using a same-folder relative path (e.g., `.assets/image.png`).
132
134
  - Use relative paths for all links; never use absolute paths starting with `/`.
133
- - Target under 1950 words for best reader engagement (SHOULD). If content grows beyond that, break it into separate chapter articles rather than expanding a single file. The hard limit is 8000 words.
135
+ - When content would exceed the Content cap, break it into separate chapter articles rather than expanding a single file.
134
136
  - Use lowercase file names. Never use emojis.
135
137
  - If a conflict exists between the article and a Policy, note it and defer to the Policy.
136
138
 
137
139
  ### Phase 6: Place and Register
138
140
 
139
141
  1. Save the file at `.xdrs/[scope]/[type]/[subject]/articles/[number]-[short-title].md`.
140
- 2. Add a link to the article in the canonical index for that scope+type (`.xdrs/[scope]/[type]/index.md`).
141
- 3. Add back-references in the Policies, Research documents, and Skills that the article synthesizes, under their `## References`
142
+ 2. Add a link to the article in the canonical index for that scope+type (`.xdrs/[scope]/[type]/index.md`), with a description <15 words.
143
+ 3. Add back-references (<15 words each) in the Policies, Research documents, and Skills that the article synthesizes, under their `## References`
142
144
  section.
143
145
  4. Evaluate whether the scope index at `.xdrs/[scope]/index.md` should be updated to reflect the new article. If the scope index does not exist, create it following article standards and the scope index rules in `_core-adr-policy-001`.
144
146
  5. **Meta-policy compliance**: Run the shared module at `.xdrs/_core/adrs/principles/skills/.assets/meta-policy-compliance.md`. Substitute `[DOCUMENT]` with `article`.
@@ -169,7 +171,7 @@ Follow the lint verification steps in `.xdrs/_core/adrs/principles/skills/.asset
169
171
  - **Cross-subject topic** — place the article in `principles`, not in any single subject folder.
170
172
  - **No existing articles folder** — create it; it is optional in the folder layout.
171
173
  - **Conflicting information found** — note the conflict in the article and always defer to the Policy.
172
- - **Article approaches 2000 words** — split the content into separate chapter articles (e.g., `001-topic-overview.md`, `002-topic-deep-dive.md`) so each can be read and understood independently. Move detailed content to a Research, Skill, or Policy and link back. The hard ceiling is 8000 words; never exceed it.
174
+ - **Article would exceed the Content cap** — split the content into separate chapter articles (e.g., `001-topic-overview.md`, `002-topic-deep-dive.md`) so each can be read and understood independently. Move detailed content to a Research, Skill, or Policy and link back.
173
175
  - **Article is part of a series** — add the series position line immediately after the heading (e.g., `_This is article 2/4 of the "Engineering Practices" series. | Previous: ... | Next: ..._`) and link to the adjacent articles. When creating a new article that splits an existing one, update the neighbouring articles to reflect the new total and add or correct their navigation links.
174
176
 
175
177
  ## Constraints
@@ -188,7 +190,7 @@ Follow the lint verification steps in `.xdrs/_core/adrs/principles/skills/.asset
188
190
 
189
191
  - **Mistake:** Writing an article that spans multiple unrelated subjects without splitting it into chapters.
190
192
  **Why it happens:** A broad topic feels easier to cover in one long document.
191
- **Instead:** Once content approaches ~2000 words or covers distinct sub-topics, split into separate chapter articles per Phase 5/Edge Cases guidance.
193
+ **Instead:** Once content approaches the Content cap or covers distinct sub-topics, split into separate chapter articles per Phase 5/Edge Cases guidance.
192
194
 
193
195
  - **Mistake:** Skipping Phase 0 clarifying questions (topic/audience/scope) because the request seems clear.
194
196
  **Why it happens:** The request looks self-explanatory, so asking feels like unnecessary friction.
@@ -6,8 +6,8 @@ description: >
6
6
  Activate this skill when the user asks to create, add, or write an initiative, plan, project plan, roadmap, or execution plan within an XDRS project.
7
7
  metadata:
8
8
  author: flaviostutz
9
- version: "1.0.0"
10
- updated: 2026-09-19
9
+ version: "1.1.0"
10
+ updated: 2026-09-24
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -44,6 +44,8 @@ Guides the creation of a well-structured initiative document by following `_core
44
44
 
45
45
  ## Instructions
46
46
 
47
+ Keep every question and intermediate message <100 words and the final summary <150 words.
48
+
47
49
  ### Phase 0: Scope Placement and Prerequisites Gate — MUST complete before writing
48
50
 
49
51
  1. Run the scope placement analysis from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/scope-placement.md` to determine and confirm the target scope.
@@ -98,45 +100,45 @@ Use the mandatory template from `007-initiative-standards`:
98
100
 
99
101
  ## Executive Summary
100
102
 
101
- [Required. Bullet points summarizing all sections below. Under 500 words.]
103
+ [Required. Bullet points summarizing all sections below. <500 words.]
102
104
 
103
105
  ## Context and Problem Statement
104
106
 
105
- [Required. Why are we executing this initiative? What is the impact? Who is impacted? Under 200 words.]
107
+ [Required. Why are we executing this initiative? What is the impact? Who is impacted? <200 words.]
106
108
 
107
109
  ## Proposed Solution
108
110
 
109
- [Required. What we expect to achieve. Under 200 words.]
111
+ [Required. What we expect to achieve. <200 words.]
110
112
 
111
113
  Expected end date: YYYY-MM-DD
112
114
 
113
115
  ## Acceptance Criteria
114
116
 
115
- [Optional. Expected result and how to verify the goal is achieved. Under 100 words.]
117
+ [Optional. Expected result and how to verify the goal is achieved. <100 words.]
116
118
 
117
119
  ## Approach
118
120
 
119
- [Optional. Strategy and high-level how. Under 300 words.]
121
+ [Optional. Strategy and high-level how. <300 words.]
120
122
 
121
123
  ## Key Deliverables
122
124
 
123
- [Optional. Main outputs needed. Under 300 words.]
125
+ [Optional. Main outputs needed. <300 words.]
124
126
 
125
127
  ## Key Resources
126
128
 
127
- [Optional. Equipment, people, budget, dependencies. Under 100 words.]
129
+ [Optional. Equipment, people, budget, dependencies. <100 words.]
128
130
 
129
131
  ## Milestones
130
132
 
131
- [Optional. Goals with acceptance criteria, owners, and due dates. Under 1000 words per milestone.]
133
+ [Optional. Goals with acceptance criteria, owners, and due dates. <1000 words per milestone.]
132
134
 
133
135
  ## Risks Identified
134
136
 
135
- [Optional. Risks with description and mitigation strategy. Under 1000 words.]
137
+ [Optional. Risks with description and mitigation strategy. <1000 words.]
136
138
 
137
139
  ## References
138
140
 
139
- - [Related Policy or artifact](relative/path.md) - Brief description of relevance
141
+ - [Related Policy or artifact](relative/path.md) - Brief description of relevance (<15 words)
140
142
  ```
141
143
 
142
144
  Rules to apply while drafting:
@@ -154,8 +156,8 @@ Rules to apply while drafting:
154
156
  ### Phase 6: Place and Register
155
157
 
156
158
  1. Save the file at `.xdrs/[scope]/[type]/[subject]/initiatives/[number]-[short-title].md`.
157
- 2. Add a link to the initiative in the canonical index for that scope+type (`.xdrs/[scope]/[type]/index.md`).
158
- 3. Add back-references in the Policies, Research documents, and Skills that the initiative relates to, under their `## References` section.
159
+ 2. Add a link to the initiative in the canonical index for that scope+type (`.xdrs/[scope]/[type]/index.md`), with a description <15 words.
160
+ 3. Add back-references (<15 words each) in the Policies, Research documents, and Skills that the initiative relates to, under their `## References` section.
159
161
  4. Evaluate whether the scope index at `.xdrs/[scope]/index.md` should be updated to reflect the new initiative. If the scope index does not exist, create it following article standards and the scope index rules in `_core-adr-policy-001`.
160
162
  5. **Meta-policy compliance**: Run the shared module at `.xdrs/_core/adrs/principles/skills/.assets/meta-policy-compliance.md`. Substitute `[DOCUMENT]` with `initiative`.
161
163
 
@@ -5,8 +5,8 @@ description: >
5
5
  Activate this skill when the user asks to create, add, or write a new Policy (ADR, BDR, or EDR).
6
6
  metadata:
7
7
  author: flaviostutz
8
- version: "1.0.0"
9
- updated: 2026-09-19
8
+ version: "1.1.0"
9
+ updated: 2026-09-24
10
10
  ---
11
11
 
12
12
  ## Overview
@@ -27,7 +27,7 @@ Guides the creation of a well-structured Policy by following the standards in `_
27
27
 
28
28
  #### Contents
29
29
 
30
- - A new Policy file.
30
+ - A new Policy file (<1300 words; complex <2600).
31
31
 
32
32
  #### Changes
33
33
 
@@ -43,6 +43,8 @@ Guides the creation of a well-structured Policy by following the standards in `_
43
43
 
44
44
  ## Instructions
45
45
 
46
+ Keep every question and intermediate message <100 words and the final summary <150 words.
47
+
46
48
  ### Phase 0: Scope Placement and Prerequisites Gate — MUST complete before writing
47
49
 
48
50
  1. Run the scope placement analysis from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/scope-placement.md` to determine and confirm the target scope.
@@ -137,22 +139,22 @@ Refer to `_core-adr-policy-008-policy-structured-standards` for full requirement
137
139
  ---
138
140
  name: [scope]-[type]-[number]-[short-title]
139
141
  description: [What this decision is about and when to use it]
140
- apply-to: [Required. Contexts this decision applies to, under 40 words. Use "All scopes" when broadly applicable.]
142
+ apply-to: [Required. Contexts this decision applies to, <40 words. Use "All scopes" when broadly applicable.]
141
143
  valid-from: [Required. ISO date YYYY-MM-DD. Defaults to today's date when not specified by the user.]
142
144
  ---
143
145
 
144
146
  # [scope]-[type]-[number]: [Short Title]
145
147
 
146
148
  ## Context and Problem Statement
147
- [background, who is impacted, and the explicit question being answered - under 40 words]
149
+ [background, who is impacted, and the explicit question being answered - <40 words]
148
150
 
149
151
  ## Decision Outcome
150
152
 
151
153
  **[Chosen Option Title]**
152
- [One sentence: what is the decision - under 30 words]
154
+ [One sentence: what is the decision - <30 words]
153
155
 
154
156
  ### Details
155
- [Rules, applicability boundaries, concise examples, and optional do/don't guidance — under 1300 words]
157
+ [Rules, applicability boundaries, concise examples, and optional do/don't guidance — <1300 words]
156
158
 
157
159
  ## Considered Options (only if the user explicitly indicated multiple options)
158
160
 
@@ -164,7 +166,7 @@ valid-from: [Required. ISO date YYYY-MM-DD. Defaults to today's date when not sp
164
166
  Mandatory rules to apply while drafting:
165
167
  - Always include frontmatter `apply-to:`. Use `All scopes` when the decision applies broadly, or a more specific description when the decision is narrowly scoped.
166
168
  - Always include frontmatter `valid-from:`. Use today's date in `YYYY-MM-DD` format when the user does not specify a date.
167
- - Keep `apply-to:` under 40 words and use `valid-from:` only with `YYYY-MM-DD` ISO format.
169
+ - Use `valid-from:` only with `YYYY-MM-DD` ISO format.
168
170
  - When frontmatter metadata is present, write it so a reader can decide whether the Policy should be used for the current case without guessing. `valid-from:` sets a convergence date for adoption, `apply-to:` narrows the contexts where the decision applies, and the decision text defines any remaining boundaries.
169
171
  - Use mandatory language ("must", "always", "never") only for hard requirements; use advisory language ("should", "recommended") for guidance.
170
172
  - Do not duplicate content already in referenced Policies — link instead.
@@ -175,13 +177,12 @@ Mandatory rules to apply while drafting:
175
177
  - If the Policy genuinely needs local images or supporting files, store them in `.xdrs/[scope]/[type]/[subject]/.assets/` and link them using a same-folder relative path (e.g., `.assets/image.png`).
176
178
  - Use relative paths for all links; never use absolute paths starting with `/`.
177
179
  - No emojis. Lowercase filenames.
178
- - Target under 1300 words total; under 2600 words for complex decisions.
179
180
 
180
181
  ### Phase 7: Review the Draft
181
182
 
182
183
  Check every item before finalizing:
183
184
 
184
- 1. **Length**: Is it under 1300 words? Trim verbose explanations. Move detailed skills to a separate file and link.
185
+ 1. **Length**: Is it within the Policy file cap and every template section cap? Trim verbose explanations. Move detailed skills to a separate file and link.
185
186
  2. **Frontmatter**: Are `apply-to:` and `valid-from:` both present? `apply-to:` must describe the applicable context (use `All scopes` when broadly applicable). `valid-from:` must be set (use today's date if the user did not specify one).
186
187
  3. **Normative language**: Does every normative requirement in the Details and Decision Outcome sections use uppercase BCP 14 keywords per `_core-adr-policy-001`? Replace any lowercase `must`/`should`/`may` that express requirements, prohibitions, or permissions with MUST/MUST NOT, SHOULD/SHOULD NOT, or MAY/OPTIONAL respectively. Lowercase forms are only acceptable in Context sections, question statements, or when used with their ordinary English meaning.
187
188
  4. **Originality**: Does every sentence add value that cannot be found in a generic web search? Remove obvious advice. Keep only the project-specific decision.
@@ -196,7 +197,7 @@ If any check fails, revise and re-run this phase before proceeding.
196
197
  ### Phase 8: Write Files
197
198
 
198
199
  1. Create the Policy file at `[xdrs-root]/[scope]/[type]/[subject]/[number]-[short-title].md` (default root: `.xdrs/`).
199
- 2. Add an entry to `[xdrs-root]/[scope]/[type]/index.md` (create the file if it does not exist).
200
+ 2. Add an entry to `[xdrs-root]/[scope]/[type]/index.md` (create the file if it does not exist); keep its description <15 words.
200
201
  3. Add or verify the scope entry in the Policy root `index.md` (exactly one link per scope; when the scope index declares `extends-only: true`, append the tag `` `extends-only` `` right after the link and make sure the legend line is present, see `_core-adr-policy-022`).
201
202
  4. If significant research was produced or already exists, link it from the Policy `## Considered Options` section.
202
203
  5. If concise rules, examples, or do/don't bullets help readers apply the decision correctly, add them inside `### Details` without turning the Policy into a long procedure.
@@ -5,8 +5,8 @@ description: >
5
5
  Activate this skill when the user asks to create slides, a presentation, or a slide deck for an XDRS document.
6
6
  metadata:
7
7
  author: flaviostutz
8
- version: "1.0.0"
9
- updated: 2026-09-19
8
+ version: "1.1.0"
9
+ updated: 2026-09-24
10
10
  ---
11
11
 
12
12
  ## Overview
@@ -47,6 +47,8 @@ Guides the creation of a Marp Markdown slide presentation that supports an exist
47
47
 
48
48
  ## Instructions
49
49
 
50
+ Keep every question and intermediate message <100 words and the final summary <150 words.
51
+
50
52
  ### Phase 0: Prerequisites Gate — MUST complete before writing
51
53
 
52
54
  Identify the target scope from the parent document's path or the user's request; use `_local` if none is specified. Then run the prerequisites gate from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/prerequisites-gate.md`. Substitute `[DOCUMENT TYPE]` with `presentation`.
@@ -135,7 +137,7 @@ Rules:
135
137
  - The first line of YAML frontmatter must be `marp: true`. Additional Marp keys (`theme`, `paginate`, `header`, `footer`) may be added after.
136
138
  - Use `---` as the slide separator (standard Marp syntax).
137
139
  - The last slide must contain links back to the parent document and any other related documents.
138
- - Minimize text per slide. Prefer visual elements and short statements.
140
+ - Minimize text per slide: each slide <80 words. Prefer visual elements and short statements.
139
141
  - Stress central questions, answers, doubts, decisions, and risks from the parent document.
140
142
  - No emojis.
141
143
  - Use relative paths for all links.
@@ -6,8 +6,8 @@ description: >
6
6
  Activate this skill when the user asks to create, add, or write a research document that backs a decision.
7
7
  metadata:
8
8
  author: flaviostutz
9
- version: "1.4.0"
10
- updated: 2026-09-19
9
+ version: "1.5.0"
10
+ updated: 2026-09-24
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -30,7 +30,7 @@ This skill is interactive by design. Ask clarifying questions to the user at eac
30
30
 
31
31
  #### Contents
32
32
 
33
- - A standalone IMRAD research document.
33
+ - A standalone IMRAD research document (<5000 words).
34
34
 
35
35
  #### Changes
36
36
 
@@ -50,6 +50,8 @@ This skill is interactive by design. Ask clarifying questions to the user at eac
50
50
 
51
51
  ## Instructions
52
52
 
53
+ Keep every question and intermediate message <100 words and the final summary <150 words.
54
+
53
55
  ### Phase 0: Scope Placement and Prerequisites Gate — MUST complete before writing
54
56
 
55
57
  1. Run the scope placement analysis from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/scope-placement.md` to determine and confirm the target scope.
@@ -129,39 +131,39 @@ Use the mandatory template from `006-research-standards`:
129
131
 
130
132
  ## Abstract
131
133
 
132
- [Single paragraph summarizing the goal, methods, results, and conclusion. Goal: let a quick technical reader understand the question, method, main result, and takeaway. Under 200 words.]
134
+ [Single paragraph summarizing the goal, methods, results, and conclusion. Goal: let a quick technical reader understand the question, method, main result, and takeaway. <200 words.]
133
135
 
134
136
  ## Introduction
135
137
 
136
138
  [Describe the problem, context, constraints, known facts, experiences, gaps, assumptions, and objectives.
137
- Use visuals, bullets, graphs, or diagrams when helpful. Goal: explain the investigated problem, operating context, constraints, and why the subject matters. Under 700 words.]
139
+ Use visuals, bullets, graphs, or diagrams when helpful. Goal: explain the investigated problem, operating context, constraints, and why the subject matters. <700 words.]
138
140
 
139
141
  Question: [Central question of the research]?
140
142
 
141
143
  ## Methods
142
144
 
143
145
  [Explain how the study was conducted, including design, tools, data sources, and test conditions.
144
- Include enough detail for an experienced professional to reproduce the relevant parts. Goal: make the important parts of the study reproducible. Under 1200 words.]
146
+ Include enough detail for an experienced professional to reproduce the relevant parts. Goal: make the important parts of the study reproducible. <1200 words.]
145
147
 
146
148
  ## Results
147
149
 
148
150
  [Report findings, data, trends, quantitative results, code artifacts, and option comparisons.
149
- Use figures, tables, or bullets when useful. If multiple options solve the same problem, add comparison tables and explicit pros and cons for each option. Focus on raw findings, not interpretation. Goal: present the raw findings with minimal interpretation. Under 1800 words.]
151
+ Use figures, tables, or bullets when useful. If multiple options solve the same problem, add comparison tables and explicit pros and cons for each option. Focus on raw findings, not interpretation. Goal: present the raw findings with minimal interpretation. <1800 words.]
150
152
 
151
153
  ## Discussion
152
154
 
153
- [Interpret the results, explain significance, trade-offs, performance considerations, limitations, and implications. Goal: interpret the findings for technical readers. Keep this section technically engaged and under 1000 words.]
155
+ [Interpret the results, explain significance, trade-offs, performance considerations, limitations, and implications. Goal: interpret the findings for technical readers. Keep this section technically engaged. <1000 words.]
154
156
 
155
157
  ## Conclusion
156
158
 
157
- [Summarize the main findings, practical takeaway, applicability boundaries, and important open questions. Goal: summarize the main findings and what they mean in practice. Under 400 words.]
159
+ [Summarize the main findings, practical takeaway, applicability boundaries, and important open questions. Goal: summarize the main findings and what they mean in practice. <400 words.]
158
160
 
159
161
  ## References
160
162
 
161
163
  [A list of all cited literature, websites, tutorials, documentation, discussions, and related artifacts. Goal: make all cited sources and supporting artifacts traceable.]
162
164
 
163
- - [Related Policy or artifact](relative/path.md) - Why it matters
164
- - [Another related Policy if this research informed multiple decisions](relative/path.md) - Why it matters
165
+ - [Related Policy or artifact](relative/path.md) - Why it matters (<15 words)
166
+ - [Another related Policy if this research informed multiple decisions](relative/path.md) - Why it matters (<15 words)
165
167
  ```
166
168
 
167
169
  Rules:
@@ -175,13 +177,13 @@ Rules:
175
177
  - For diagrams and non-Markdown assets, follow `_core-adr-policy-020`: prefer plain Markdown tables/lists and bullet points first, then ASCII art for very simple cases, then Mermaid.js (sequence, state, activity, entity diagrams) for complex ones, then draw.io when Mermaid is insufficient — save as Editable Vector (File → Save As → Editable Vector) and store as `.svg` in the sibling `.assets/` folder.
176
178
  - If the research genuinely needs local images or supporting files, store them in `.xdrs/[scope]/[type]/[subject]/researches/.assets/` and link them using a same-folder relative path (e.g., `.assets/image.png`).
177
179
  - Use relative paths for all links; never use absolute paths starting with `/`.
178
- - Keep section word limits within the standard and keep the document under 5000 words total unless the introduction explicitly states that a very detailed analysis is required.
180
+ - Keep every section within its template cap; exceed the document cap only when the introduction explicitly states that a very detailed analysis is required.
179
181
 
180
182
  ### Phase 8: Check Section Goals
181
183
 
182
184
  Before the final review, verify each section against its specific goal:
183
185
 
184
- 1. **Abstract goal**: Does it let a quick technical reader understand the question, method, main result, and takeaway, in one paragraph and under 200 words?
186
+ 1. **Abstract goal**: Does it let a quick technical reader understand the question, method, main result, and takeaway, in one paragraph and within its cap?
185
187
  2. **Introduction goal**: Does it explain the investigated problem and context, stay within scope, and end with `Question: ...?`?
186
188
  3. **Methods goal**: Could an experienced professional reproduce the important parts that materially affect the conclusion?
187
189
  4. **Results goal**: Are the findings concrete and minimally interpreted, with comparisons and pros/cons when multiple options exist?
@@ -279,8 +281,8 @@ If any check fails, revise before continuing.
279
281
  ### Phase 11: Write Files
280
282
 
281
283
  1. Create the research file at `.xdrs/[scope]/[type]/[subject]/researches/[number]-[short-title].md`.
282
- 2. Add an entry to `.xdrs/[scope]/[type]/index.md`.
283
- 3. Add back-references from the related Policy, article, or skill when the relationship is important for discovery.
284
+ 2. Add an entry to `.xdrs/[scope]/[type]/index.md`, with a description <15 words.
285
+ 3. Add back-references (<15 words each) from the related Policy, article, or skill when the relationship is important for discovery.
284
286
  4. Evaluate whether the scope index at `.xdrs/[scope]/index.md` should be updated to reflect the new research. If the scope index does not exist, create it following article standards and the scope index rules in `_core-adr-policy-001`.
285
287
 
286
288
  ### Phase 12: Verify with Lint
@@ -6,8 +6,8 @@ description: >
6
6
  Activate this skill when the user asks to create, add, or write a new skill, agent skill, or SKILL.md file.
7
7
  metadata:
8
8
  author: flaviostutz
9
- version: "1.0.0"
10
- updated: 2026-09-19
9
+ version: "1.1.0"
10
+ updated: 2026-09-24
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -28,7 +28,7 @@ Guides the creation of a well-structured skill package by following `_core-adr-p
28
28
 
29
29
  #### Contents
30
30
 
31
- - A complete SKILL.md file
31
+ - A complete SKILL.md file (<7000 words)
32
32
 
33
33
  #### Changes
34
34
 
@@ -48,6 +48,8 @@ Guides the creation of a well-structured skill package by following `_core-adr-p
48
48
 
49
49
  ## Instructions
50
50
 
51
+ Keep every question and intermediate message <100 words and the final summary <150 words.
52
+
51
53
  ### Phase 0: Scope Placement and Prerequisites Gate — MUST complete before writing
52
54
 
53
55
  1. Run the scope placement analysis from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/scope-placement.md` to determine and confirm the target scope.
@@ -109,29 +111,29 @@ metadata:
109
111
 
110
112
  #### Required
111
113
 
112
- [Bare-minimum bullets needed to invoke the skill, or a single "None" bullet. Each under 10 words.]
114
+ [Bare-minimum bullets needed to invoke the skill, or a single "None" bullet. Each <10 words.]
113
115
 
114
116
  #### Optional
115
117
 
116
- [Extra helpful-context bullets, or a single "None" bullet. Each under 10 words.]
118
+ [Extra helpful-context bullets, or a single "None" bullet. Each <10 words.]
117
119
 
118
120
  ### Outputs
119
121
 
120
122
  #### Contents
121
123
 
122
- [End-objective files/chat text produced, or a single "None" bullet. Each under 10 words.]
124
+ [End-objective files/chat text produced, or a single "None" bullet. Each <10 words. Append "(<N words)" or "(uncapped: <reason>)" to natural-language items not capped in a template or step, e.g. "Release notes (<300 words)". Code and structured data get no marker.]
123
125
 
124
126
  #### Changes
125
127
 
126
- [End-objective external system mutations, or a single "None" bullet. Each under 10 words.]
128
+ [End-objective external system mutations, or a single "None" bullet. Each <10 words.]
127
129
 
128
130
  ### Halt Conditions
129
131
 
130
- [This skill's specific stop-before-completing triggers, or a single "None" bullet. Each under 10 words.]
132
+ [This skill's specific stop-before-completing triggers, or a single "None" bullet. Each <10 words.]
131
133
 
132
134
  ### User Interaction
133
135
 
134
- [Optional. Human-in-the-loop exchanges during execution: clarifying questions or approval gates, or a single "None" bullet. Each under 10 words. Omit the whole section if none apply.]
136
+ [Optional. Human-in-the-loop exchanges during execution: clarifying questions or approval gates, or a single "None" bullet. Each <10 words. Omit the whole section if none apply.]
135
137
 
136
138
  ### Runtime Requirements
137
139
 
@@ -139,8 +141,10 @@ metadata:
139
141
 
140
142
  ## Instructions
141
143
 
144
+ [Blanket cap line, e.g. "Keep every question and intermediate message <100 words and the final summary <150 words."]
145
+
142
146
  ### Phase 1: …
143
- [Step-by-step agent instructions organized into named phases. Use imperative language and include verification or acceptance criteria at the end of the task or major phases.]
147
+ [Step-by-step agent instructions organized into named phases. Use imperative language and include verification or acceptance criteria at the end of the task or major phases. State "<N words" in each step that produces natural-language content not covered by the blanket line or a template.]
144
148
 
145
149
  ## Examples
146
150
 
@@ -166,13 +170,14 @@ Rules:
166
170
  - The `description` field must state both *what* the skill does and *when* to activate it.
167
171
  - Keep the skill task-oriented. It should have a clear starting trigger and a concrete ending result.
168
172
  - Mention tools or prerequisites when they are required to complete the task reliably.
173
+ - Declare a "<N words" cap, or "(uncapped: <reason>)", exactly once for every natural-language content the skill generates, per **Generated content caps** in `_core-adr-policy-003`.
169
174
  - Do not duplicate content from referenced Policies — link instead.
170
175
  - Do not present the skill itself as policy; mandatory behavior must come from referenced Policies or other policy artifacts.
171
176
  - When the skill depends on Policies, make the activation logic and instructions consistent with the Policy metadata so the skill does not operationalize inactive or out-of-scope decisions.
172
177
  - For diagrams and non-Markdown assets, follow `_core-adr-policy-020`: prefer plain Markdown tables/lists first, then ASCII art for very simple cases, then Mermaid.js (sequence, state, activity, entity diagrams) for complex ones, then draw.io when Mermaid is insufficient — save as Editable Vector (File → Save As → Editable Vector) and store as `.svg` in the sibling `.assets/` folder.
173
178
  - If `SKILL.md` genuinely needs local images or supporting files, store them in `.xdrs/[scope]/[type]/[subject]/skills/[skill-name]/.assets/` and link them using a same-folder relative path (e.g., `.assets/image.png`).
174
179
  - Use relative paths for all links; never use absolute paths starting with `/`.
175
- - No emojis. Lowercase filenames. Target under 7000 words.
180
+ - No emojis. Lowercase filenames.
176
181
 
177
182
  ### Phase 5: Review the Draft
178
183
 
@@ -180,12 +185,13 @@ Before writing files, verify:
180
185
 
181
186
  1. **Activation criteria**: Is it unambiguous when this skill loads vs. when it should not?
182
187
  2. **Completeness**: Does every phase have actionable steps?
183
- 3. **Length**: Under 7000 words? Trim verbose explanations.
188
+ 3. **Length**: Within the SKILL.md word cap? Trim verbose explanations.
184
189
  4. **Duplication**: Does this overlap an existing skill? If yes, revise.
185
190
  5. **References**: Are all related XDRs and skills linked, including the cases where the skill operationalizes multiple XDRs?
186
191
  6. **Anti-Patterns**: Does the skill include at least 3 genuine, domain-specific `## Anti-Patterns` entries (not generic filler)?
187
192
  7. **Required sections**: Does `## Overview` contain nested `### Inputs` (Required/Optional bullets), `### Outputs` (Contents/Changes bullets), and `### Halt Conditions` listing this skill's specific stop triggers — each bullet under 10 words or a single "None"?
188
193
  8. **Meta-policy compliance**: Run the shared module at `.xdrs/_core/adrs/principles/skills/.assets/meta-policy-compliance.md`. Substitute `[DOCUMENT]` with `skill`.
194
+ 9. **Output caps**: Does every natural-language content the skill generates (files, messages, questions, summaries, external posts) have exactly one "<N words" cap or "(uncapped: <reason>)" marker, with code and structured data unmarked?
189
195
 
190
196
  If any check fails, revise before continuing.
191
197
 
@@ -213,6 +219,8 @@ Follow the lint verification steps in `.xdrs/_core/adrs/principles/skills/.asset
213
219
  - MUST include a References section linking to `003-skill-standards`.
214
220
  - MUST include nested `### Inputs`, `### Outputs`, and `### Halt Conditions` subsections inside `## Overview` with skill-specific content.
215
221
 
222
+ ## Examples
223
+
216
224
  **Input**: "Create a skill to help debug CI pipelines"
217
225
  - Type: EDR (engineering workflow)
218
226
  - Scope: `_local`
@@ -5,8 +5,8 @@ description: >
5
5
  Activate this skill when the user asks to create or write any XDRS element.
6
6
  metadata:
7
7
  author: flaviostutz
8
- version: "1.0.0"
9
- updated: 2026-09-19
8
+ version: "1.1.0"
9
+ updated: 2026-09-24
10
10
  ---
11
11
 
12
12
  ## Overview
@@ -47,6 +47,8 @@ Routes the request to the appropriate XDRS authoring skill based on the type of
47
47
 
48
48
  ## Instructions
49
49
 
50
+ Keep every question and intermediate message <100 words and the final summary <150 words.
51
+
50
52
  ### Phase 1: Infer Document Type
51
53
 
52
54
  1. Infer the target document type from the user's request and context using the mapping below. Do not ask the user unless the type is genuinely ambiguous after reading the request.
package/README.md CHANGED
@@ -12,7 +12,7 @@ After preparation those elements can be downloaded anywhere and used to compose
12
12
 
13
13
  Policies capture Architectural (ADR), Business (BDR), and Engineering (EDR) decisions. As organizations grow, hundreds of decisions accumulate across teams, levels, and domains. Without a consistent structure, AI agents cannot efficiently locate the right decisions for a given context, and humans cannot maintain or evolve them sustainably.
14
14
 
15
- This project defines a standard for organizing XDRS that satisfies the following requirements.
15
+ This project defines a standard for organizing XDRS that addresses this problem (see [Features](#features)).
16
16
 
17
17
  ## Overview
18
18
 
@@ -35,6 +35,20 @@ The XDRS framework separates these concerns into different document types, each
35
35
  - **Articles** — Synthetic explanatory texts that combine information from multiple Policies, Research documents, and Skills around a specific topic or audience. They never replace Policies as source of truth.
36
36
  - **Initiatives** — Ephemeral execution documents that describe a problem, proposed solution, and the approach and activities needed to solve it. Initiatives have a clear start and end and must be deleted after full implementation. Lasting outputs are captured as Policies, Skills, Articles, or other artifacts.
37
37
 
38
+ ```mermaid
39
+ flowchart LR
40
+ DR["Raw Decision Record<br/>ADR / BDR / EDR"]
41
+ DR -- why --> R[Research]
42
+ DR -- what --> P["Policy<br/>source of truth"]
43
+ DR -- how --> S[Skill]
44
+ DR -- when --> I["Initiative<br/>ephemeral"]
45
+ DR -- view --> A[Article]
46
+ R -. backs .-> P
47
+ S -. complies with .-> P
48
+ I -. implements .-> P
49
+ A -. explains .-> P
50
+ ```
51
+
38
52
  The compilation process of a raw Decision Record is to distribute it into those different documents and create links between them. You can also use the framework standalone, generating these elements individually directly during the writing process without starting from a raw Decision Record.
39
53
 
40
54
  ## Getting started
@@ -43,9 +57,11 @@ The compilation process of a raw Decision Record is to distribute it into those
43
57
 
44
58
  2. On the workspace root folder, run `npx xdrs-core`
45
59
 
46
- The basic xdrs tooling should be installed in your workspace along with:
47
- - AGENTS.md pointing to the Policies structure
48
- - XDRS related skills and prompts for Copilot
60
+ This installs:
61
+ - `AGENTS.md` instructing agents to consult Policies before every request
62
+ - `.xdrs/_core/` with the framework Policies, skills and articles
63
+ - `.xdrs/index.md` root index, installed unmanaged so you own it and list your scopes there
64
+ - `.agents/skills/review` and `.agents/skills/write-xdrs-doc` symlinks so agents discover the main skills
49
65
 
50
66
  3. Run a prompt such as:
51
67
 
@@ -53,10 +69,28 @@ The compilation process of a raw Decision Record is to distribute it into those
53
69
 
54
70
  > Compile ADR 043-python-package-manager into the XDRS structure
55
71
 
72
+ > Review my changes against our Policies
73
+
74
+ 4. Validate the result with `npx xdrs-core lint .`
75
+
76
+ ### Bundled skills
77
+
78
+ | Skill | Purpose |
79
+ |---|---|
80
+ | `write-xdrs-doc` | Router: infers the document type from your request and delegates to the right skill below |
81
+ | `write-policy`, `write-skill`, `write-article`, `write-research`, `write-initiative` | Author each XDRS element type |
82
+ | `write-presentation` | Create Marp slide decks backing XDRS documents |
83
+ | `review` | Review code or documents against applicable Policies and report violations |
84
+ | `compile-scope` | Fetch and compile a `compiled`-type scope from external sources |
85
+
86
+ See [.xdrs/_core/adrs/index.md](.xdrs/_core/adrs/index.md) for the full list of `_core` Policies, skills and articles.
87
+
56
88
  ## Examples
57
89
 
58
90
  - [examples/basic-usage](examples/basic-usage) shows the minimal consumer flow for installing the packaged `xdrs-core` tarball, extracting files, checking drift, and linting the resulting tree.
59
91
  - [examples/mydevkit](examples/mydevkit) shows a reusable extension package that uses `.filedistrc` as its package config source, composes `xdrs-core`, and ships its own named scope.
92
+ - [examples/typed-scope](examples/typed-scope) shows `core`, `reference`, `platform` and `_local` scopes, a custom `business-area` scope type, and `follows`.
93
+ - [examples/load-test](examples/load-test) generates a large synthetic XDRS tree to exercise the linter at scale.
60
94
  - For a fuller real-world package built on the same distribution model, see [flaviostutz/agentme](https://github.com/flaviostutz/agentme).
61
95
 
62
96
 
@@ -66,7 +100,7 @@ The compilation process of a raw Decision Record is to distribute it into those
66
100
 
67
101
  Different teams at different organizational levels make decisions that apply to different audiences. XDRS are organized by scope (e.g. `_core`, `business-x`, `business-y-mobileapp`) so that each team owns its own decision space. Scopes can extend or override policies from broader scopes, with explicit precedence rules: scopes listed later in an index override those listed earlier.
68
102
 
69
- ### Scope types and `follows`
103
+ ### Scope types
70
104
 
71
105
  Every scope declares a `scope-type` in its `index.md` frontmatter. The six built-in types are `core`, `reference`, `platform`, `compiled`, `standard`, and `_local`, each with different governance rules. Custom types (e.g. `business-area`) can be introduced by adding a `{type}-scope-type` policy to any `core`-type scope.
72
106
 
@@ -79,11 +113,7 @@ Every scope declares a `scope-type` in its `index.md` frontmatter. The six built
79
113
  | `standard` | Business areas, products, teams, or any general-purpose scope. Default type when nothing else fits. | Any valid scope name (e.g. `checkout`, `mobile-app`) | 4th |
80
114
  | `_local` | Workspace-local overrides. Reserved exclusively for the `_local` scope. Never distributed. | `_local` (reserved) | last |
81
115
 
82
- **`core` scopes** carry meta-policies — authoring standards, scope-type definitions, and governance conventions. `_core` is the built-in foundation; teams add their own `core` scope (e.g. `myorg-core`) to extend it with organisation-level standards. A `core`-type scope MUST NOT contain consumable policies intended for other teams to follow.
83
-
84
- **`reference` scopes** hold read-only material to adopt or map against: industry frameworks, regulatory requirements, vendor best-practice patterns, business procedure standards. Content describes how something should be done — not what is currently running.
85
-
86
- **`platform` scopes** document what already exists and is ready to use. A scope is of type `platform` when its content describes a live operational capability — what is available, how to access it, and what constraints apply.
116
+ `_core` is the built-in `core` scope; teams can add their own (e.g. `myorg-core`) with organisation-level authoring standards.
87
117
 
88
118
  **`compiled` scopes** hold policies compiled directly from external authoritative sources. All content must trace back to the source; no invented content is allowed. A `compiled` scope requires a local meta-policy with source URLs and compilation configuration, and uses the `compile-scope` skill to fetch, compile, and keep content up to date. The `compiled` type may be combined with another type (e.g. `scope-type: compiled, reference`) when the combined type's governance also applies.
89
119
 
@@ -102,9 +132,7 @@ Include A01–A10 risk entries only.
102
132
 
103
133
  By default, fetched and selected source content persists under `.assets/sources/[name]/` so later compilations can re-sync incrementally instead of always refetching; set `Source storage: temporary` in `## Sync Settings` to discard the bulk content after each run instead (only the per-source tracking file persists in that mode). Either way, `.assets/sources/` content is never authoritative on its own — only the compiled policies are.
104
134
 
105
- **`standard` scopes** are the default. Use them for team, product, or business-area scopes that do not fit the other types.
106
-
107
- **`_local` scopes** hold workspace-specific content such as local tooling decisions, transition overrides, or temporary decisions. This content is never packaged or distributed.
135
+ ### Scope relationships: `follows` and `extends`
108
136
 
109
137
  The `follows` field in a scope's `index.md` links it to one or more `core` scopes whose standards it must respect (beyond `_core`). This models organisational hierarchies: a team scope can follow a business-area `core` scope, which in turn follows `_core`.
110
138
 
@@ -118,11 +146,37 @@ description: Checkout team decisions
118
146
  ---
119
147
  ```
120
148
 
121
- The recommended ordering in `.xdrs/index.md` is: `core → reference → platform → compiled/standard → _local`. Scopes listed later override earlier ones on the same topic.
149
+ The `extends` field makes a scope inherit all **policy documents** (not skills, articles, research or initiatives) of other scopes, as if authored locally. Use it to adopt a `reference` scope and override only what differs. When scopes are related by `extends`, the chain decides conflicts instead of root index ordering. A scope cannot list the same scope in both `follows` and `extends`, cannot extend `_core`/`_local` or itself, and cannot form cycles.
150
+
151
+ ```yaml
152
+ # .xdrs/payments/index.md
153
+ ---
154
+ scope-type: standard
155
+ name: payments
156
+ extends: ecomm-ref-payments # inherit its policies, override locally when needed
157
+ ---
158
+ ```
159
+
160
+ A scope can also hold its own authoring rules in a local meta-policy (`[type]/principles/NNN-core.md`) without creating a separate `-core` scope. See [_core-adr-policy-010](.xdrs/_core/adrs/principles/010-scope-governance.md) for the full precedence chain.
161
+
162
+ ```mermaid
163
+ flowchart LR
164
+ ecore["ecomm-core<br/>core"]
165
+ ref["ecomm-ref-payments<br/>reference, extends-only"]
166
+ checkout["checkout<br/>standard"]
167
+ payments["payments<br/>standard"]
168
+ local["_local<br/>workspace only"]
169
+
170
+ checkout -- "follows: respects authoring rules" --> ecore
171
+ payments -- follows --> ecore
172
+ payments -- "extends: inherits policies" --> ref
173
+ local -- overrides --> checkout
174
+ local -- overrides --> payments
175
+ ```
122
176
 
123
- Custom scope types can be introduced by adding a `{type}-scope-type` policy to any `core`-type scope. The `checkout` scope in [examples/typed-scope](examples/typed-scope) uses a custom `business-area` type defined in `ecomm-core`.
177
+ `_core` applies implicitly to every scope, so it is never listed in `follows` or `extends`.
124
178
 
125
- See [examples/typed-scope](examples/typed-scope) for a full working example covering all five scope types and a custom `business-area` type.
179
+ The `checkout` scope in [examples/typed-scope](examples/typed-scope) uses a custom `business-area` type defined in `ecomm-core` and declares `follows: ecomm-core`.
126
180
 
127
181
  ### Scope activation
128
182
 
@@ -158,13 +212,27 @@ XDRS packages are versioned and distributed via the npm registry. This allows te
158
212
 
159
213
  The folder layout, file naming, and document format are designed so that AI agents can efficiently work with hundreds of decisions:
160
214
 
161
- - Each Policy is a small, focused Markdown file (target under 1300 words), covering a set of rules or statements.
215
+ - Each Policy is a small, focused Markdown file (target under 1300 words, hard limit 2600), covering a set of rules or statements.
216
+ - Policies that need external citation can expose individually numbered rules (e.g. `_core-adr-policy-010.28-extends-disjoint`), see [_core-adr-policy-008](.xdrs/_core/adrs/principles/008-policy-structured-standards.md).
162
217
  - The canonical index per scope and type lists all XDRS elements with short descriptions, enabling agents to identify relevant records without reading every file.
163
218
  - The root index at `.xdrs/index.md` provides a single entry point for discovery.
164
219
  - Policy metadata gives agents a first-pass filter: check `valid-from` for the convergence date, then check `apply-to`, and finally the decision text itself to confirm the decision should be used in the current context. All documents present in the collection are considered active.
165
220
  - Decisions cross-reference each other by Policy ID rather than duplicating content, keeping individual files concise.
166
221
  - Subject folders reduce the search space when a query maps to a known domain.
167
222
 
223
+ How an agent finds the Policies that apply to a request:
224
+
225
+ ```mermaid
226
+ flowchart LR
227
+ Q([Request]) --> AG[AGENTS.md]
228
+ AG --> RI[".xdrs/index.md<br/>scope order and activation"]
229
+ RI --> TI["scope type indexes<br/>one line per document"]
230
+ TI --> F{"apply-to and<br/>valid-from match?"}
231
+ F -- yes --> P["Read Policy<br/>and linked Skills"]
232
+ F -- no --> X[Skip]
233
+ P --> W([Act and verify])
234
+ ```
235
+
168
236
  ### Multi-agent framework support
169
237
 
170
238
  Policies and skills must be usable by any type of AI agent, not only coding agents (e.g. GitHub Copilot, Cursor, Cline). General-purpose agent frameworks such as LangGraph, CrewAI, AutoGen, and similar orchestration runtimes must be able to consume Policies without relying on IDE-specific tooling or conventions.
@@ -197,15 +265,13 @@ This is especially important for BDRs: because business rules govern decisions t
197
265
  .assets/
198
266
  ```
199
267
 
200
- Document types:
268
+ Types:
201
269
 
202
270
  - **ADR** - Architectural Decision Record: architectural and technical decisions
203
271
  - **BDR** - Business Decision Record: business process and strategy decisions
204
272
  - **EDR** - Engineering Decision Record: engineering workflow and tooling decisions
205
- - **Research** - Exploratory support material used while evaluating or updating a decision. Research captures constraints, findings, options, and proposal tradeoffs, but it is not the source of truth.
206
- - **Skills** - Step-by-step procedural guides that can be followed by humans, AI agents, or both. Must comply with Policies, but add the execution detail they lack. Skills are not mandatory by themselves unless referenced by a Policy or another policy artifact. A skill may start as a fully manual human procedure and evolve incrementally toward partial or full AI automation without being restructured. Co-located with the Policies they implement inside `skills/` sub-directories.
207
- - **Articles** - Synthetic views that explain concepts or combine information from multiple Policies, Research documents, and Skills into a coherent text for a specific topic or audience. Articles are not the source of truth; Policies take precedence when there is a conflict. Useful as navigational indexes that link related artifacts around a specific aspect.
208
- - **Initiatives** - Ephemeral execution documents that describe a problem, proposed solution, and the approach and activities needed to solve it. Initiatives have a clear start and end and must be deleted after full implementation. Lasting outputs are captured as Policies, Skills, Articles, or other artifacts. Co-located with Policies inside `initiatives/` sub-directories.
273
+
274
+ Each type has a fixed set of allowed subjects (e.g. `principles`, `application`, `data` for ADRs), see [_core-adr-policy-016](.xdrs/_core/adrs/principles/016-policy-subjects.md). Element types are described in [XDRS elements](#xdrs-elements).
209
275
 
210
276
  See [.xdrs/index.md](.xdrs/index.md) for the full list of active policies.
211
277
 
@@ -232,38 +298,37 @@ A project that wants to follow a scope's decisions adds the corresponding npm pa
232
298
 
233
299
  Multiple scope packages can be combined in the same workspace by listing them as separate dependencies. Scope precedence (defined in `.xdrs/index.md`) determines which decisions take effect when scopes overlap.
234
300
 
235
- ```
236
- [Scope repo] --> npm publish --> [npm registry] --> npm install --> [Project workspace]
237
- .xdrs/[scope]/ versioned pkg .xdrs/[scope]/
238
- adrs/ bdrs/ edrs/ adrs/ bdrs/ edrs/
239
- [subject]/ [subject]/
240
- *.md *.md
241
- researches/ researches/
242
- skills/ skills/
243
- articles/ articles/
301
+ ```mermaid
302
+ flowchart LR
303
+ subgraph owners[Scope owner repositories]
304
+ A[".xdrs/ecomm-core/"]
305
+ B[".xdrs/checkout/"]
306
+ end
307
+ A -- pack and publish --> NPM[("npm registry<br/>versioned packages")]
308
+ B -- pack and publish --> NPM
309
+ NPM -- "install (filedist)" --> WS
310
+ subgraph WS[Project workspace]
311
+ M[".xdrs/_core, ecomm-core, checkout<br/>managed, pinned in .filedist.lock"]
312
+ X[".xdrs/index.md<br/>owned by the project"]
313
+ L[".xdrs/_local<br/>never published"]
314
+ end
315
+ WS -- "xdrs-core lint / check" --> CI([CI])
244
316
  ```
245
317
 
246
318
  ## CLI
247
319
 
248
320
  The published package exposes the `xdrs-core` CLI.
249
321
 
250
- - Bootstrap or extract managed XDRS files with the existing `filedist`-backed commands such as `npx -y xdrs-core extract` and `npx -y xdrs-core check`.
251
- - Lint a Policy tree with `npx -y xdrs-core lint .`. By default, scopes whose files are listed in the workspace root `.filedist.lock` file are treated as external and skipped; use `--all` to include them.
322
+ - `npx -y xdrs-core` (or `install`) installs or updates the managed XDRS files; `npx -y xdrs-core check` fails if managed files drifted from the package. Both are delegated to [filedist](https://github.com/flaviostutz/filedist) (run `--help` for all options).
323
+ - `npx -y xdrs-core lint [path]` validates the XDRS tree. Scopes listed in the workspace `.filedist.lock` are treated as external and skipped; use `--all` to include them.
252
324
 
253
- The `lint` command reads `./.xdrs/**` from the given workspace path and checks common consistency rules, including:
325
+ The `lint` command reads `.xdrs/**` (or `[path]` directly when it contains an `index.md`) and reports errors citing the violated Policy rule. It checks:
254
326
 
255
- - allowed scope, type, and subject folder structure
256
- - Policy numbering uniqueness per `scope/type`
257
- - article numbering uniqueness per `scope/type/subject/articles`
258
- - research numbering uniqueness per `scope/type/subject/researches`
259
- - initiative numbering uniqueness per `scope/type/subject/initiatives`
260
- - initiative `Expected end date:` field presence and ISO date format
261
- - canonical index presence and link consistency
262
- - root index coverage for all discovered canonical indexes
263
- - root index completeness: every scope folder linked exactly once, activation tags (`extends-only`, `disabled`) valid, coherent with the scope's `extends-only` field, and explained by the legend line when used
264
- - Policy metadata section placement and `valid-from` / `apply-to` field format
265
- - local markdown links between Policy documents, skills, articles, researches, and initiatives (excluding fenced code blocks)
266
- - local image and `.assets/` links resolving inside the sibling `.assets/` folder for each document
327
+ - **Structure**: allowed scope, type and subject folders; canonical indexes present and linking every document; root index linking every scope exactly once with valid activation tags
328
+ - **Numbering**: unique numbers per element type, subject-based numbering ranges ([_core-adr-policy-017](.xdrs/_core/adrs/principles/017-policy-numbering-ranges.md))
329
+ - **Document format**: Policy metadata (`valid-from`, `apply-to`), structured rule syntax, initiative `Expected end date`, skill `README.md`, word limits per element type
330
+ - **Scope governance**: scope-type definitions and naming conventions, `follows`/`extends` targets, cycles and conflicts, local meta-policies, `compiled` scope meta-policy
331
+ - **Links**: local markdown links and `.assets/` references resolve (fenced code blocks are ignored)
267
332
 
268
333
  Examples:
269
334
 
@@ -279,30 +344,61 @@ The package also exposes a reusable behavior-test library for Jest or any other
279
344
 
280
345
  Main exports:
281
346
 
282
- - `testPrompt(config, inputPrompt, judgePrompt)` runs the task prompt, evaluates the result in a fresh judge session, and returns an empty string on success or a markdown bullet list on failure.
283
- - `runPromptTest(config, inputPrompt, judgePrompt)` returns the structured result object when you need access to captured output and the agent-reported changed file list.
284
- - `copilotCmd(workspaceRoot)` returns a ready-to-use `promptCmd` template for the Copilot CLI in headless mode (`--autopilot`, full tool/url permissions, and `--no-ask-user`). The library uses that same command template for both the task and judge phases. If `workspaceRoot` is omitted it defaults to the current git repository root.
285
- - `config.workspaceRoot`, when set, is the authoritative workspace under test. If omitted, the library uses the current git repository root.
347
+ - `async testPrompt(config, inputPrompt, judgePrompt, id?, verbose?)` runs the task prompt, evaluates the result with a judge prompt, and resolves to an empty string on success or a markdown bullet list of findings on failure. Passing results are cached (see below).
348
+ - `async runPromptTest(config, inputPrompt, judgePrompt, verbose?)` resolves to the structured result (`passed`, `findings`, `taskOutput`, `agentReportedChanges`, `contextFiles`, `workspace`), without caching.
349
+ - `copilotCmd(workspaceRoot?)` returns a partial config for the Copilot CLI in headless mode (`promptCmd`, `promptCmdContinueFlag`, `workspaceFilter`, `workspaceExclude`). Spread it into your config. `workspaceRoot` defaults to the current git repository root.
350
+
351
+ Main `config` fields:
352
+
353
+ | Field | Description |
354
+ |---|---|
355
+ | `promptCmd` | Command as string array or JSON array string; must include a `{PROMPT}` placeholder |
356
+ | `promptCmdContinueFlag` | Flag inserted before the prompt to continue the previous session (e.g. `--continue`) |
357
+ | `workspaceRoot` | Workspace under test (default: current git repository root) |
358
+ | `workspaceMode` | `copy` (default, runs in a temp copy honoring `.gitignore`, without git metadata) or `in-place` |
359
+ | `workspaceFilter` / `workspaceExclude` | Globs selecting which files are copied |
360
+ | `taskTimeoutMs` / `judgeTimeoutMs` | Timeouts per phase |
361
+ | `env` | Extra environment variables for the command |
362
+ | `reportFile` | Cache file of passing tests (default: `<test-file>.report` next to the calling test); `null` disables caching |
363
+ | `checkOnly` | Do not run prompts; fail unless a matching passing entry exists in `reportFile` (useful in CI) |
364
+ | `model` | Model name, included in the cache hash |
286
365
 
287
366
  Execution model:
288
367
 
289
- - phase 1 runs the task prompt and captures final output text plus the files the agent says it changed
290
- - phase 2 runs an independent judge prompt in a fresh invocation of `promptCmd` against the original task prompt, task output, the agent-reported changed file list, and the current workspace state
291
- - the judge trusts that reported file list as the authoritative change report and reads file contents from the workspace directly when needed
292
- - when `workspaceMode: 'copy'` is used, the temporary workspace honors nested `.gitignore` rules and skips git metadata files during the copy
293
-
294
- `promptCmd` accepts either a string array or a JSON array string and must include a `{PROMPT}` placeholder.
368
+ 1. **Task**: runs the task prompt and captures the final output
369
+ 2. **Files**: continues the same session to collect the files the agent read and changed
370
+ 3. **Judge**: continues the same session and evaluates the task output, changed files and workspace state against the judge prompt
371
+
372
+ A passing result is stored in `reportFile` with a hash of the model, prompts and the files the agent read. Later runs are skipped while that hash is unchanged, so tests re-run only when relevant context changes.
373
+
374
+ ```mermaid
375
+ sequenceDiagram
376
+ participant T as Test
377
+ participant L as testPrompt
378
+ participant A as Agent CLI
379
+ T->>L: testPrompt(config, task, judge)
380
+ alt hash matches reportFile entry
381
+ L-->>T: empty string (cached pass)
382
+ else run
383
+ L->>A: 1. task prompt (temp workspace copy)
384
+ L->>A: 2. continue: list files read and changed
385
+ L->>A: 3. continue: judge prompt
386
+ A-->>L: pass and findings
387
+ L->>L: store hash when passed
388
+ L-->>T: empty string or findings markdown
389
+ end
390
+ ```
295
391
 
296
392
  Example with Jest:
297
393
 
298
394
  ```js
299
395
  const { copilotCmd, testPrompt } = require('xdrs-core');
300
396
 
301
- test('creates hello.md', () => {
302
- const err = testPrompt(
397
+ test('creates hello.md', async () => {
398
+ const err = await testPrompt(
303
399
  {
400
+ ...copilotCmd(process.cwd()),
304
401
  workspaceRoot: process.cwd(),
305
- promptCmd: copilotCmd(process.cwd()),
306
402
  workspaceMode: 'copy'
307
403
  },
308
404
  "Create a nice markdown file at hello.md saying 'hello!'",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xdrs-core",
3
- "version": "0.52.3",
3
+ "version": "0.53.0",
4
4
  "description": "XDRS (eXtensible Decision Record System): a framework to structure, compile and distribute Architectural (ADR), Business (BDR), and Engineering (EDR) decision records contents so that AI agents and humans can reliably find and use them with hierarchical scopes and controlled rollout in the format of distributable versioned packages.",
5
5
  "repository": {
6
6
  "type": "git",