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.
- package/.xdrs/_core/adrs/principles/002-policy-standards.md +1 -1
- package/.xdrs/_core/adrs/principles/003-skill-standards.md +12 -1
- package/.xdrs/_core/adrs/principles/006-research-standards.md +6 -6
- package/.xdrs/_core/adrs/principles/007-initiative-standards.md +9 -9
- package/.xdrs/_core/adrs/principles/008-policy-structured-standards.md +1 -1
- package/.xdrs/_core/adrs/principles/skills/compile-scope/SKILL.md +9 -7
- package/.xdrs/_core/adrs/principles/skills/review/SKILL.md +10 -8
- package/.xdrs/_core/adrs/principles/skills/write-article/SKILL.md +12 -10
- package/.xdrs/_core/adrs/principles/skills/write-initiative/SKILL.md +16 -14
- package/.xdrs/_core/adrs/principles/skills/write-policy/SKILL.md +12 -11
- package/.xdrs/_core/adrs/principles/skills/write-presentation/SKILL.md +5 -3
- package/.xdrs/_core/adrs/principles/skills/write-research/SKILL.md +17 -15
- package/.xdrs/_core/adrs/principles/skills/write-skill/SKILL.md +20 -12
- package/.xdrs/_core/adrs/principles/skills/write-xdrs-doc/SKILL.md +4 -2
- package/README.md +155 -59
- package/package.json +1 -1
|
@@ -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,
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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?
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
8
|
-
updated: 2026-09-
|
|
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
|
|
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.
|
|
10
|
-
updated: 2026-09-
|
|
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
|
-
-
|
|
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 (
|
|
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
|
|
126
|
-
- Fix: Specific action to fix this issue
|
|
127
|
-
- Relevance: Why this matters / What to watch for
|
|
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.
|
|
8
|
-
updated: 2026-09-
|
|
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.
|
|
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.
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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.
|
|
10
|
-
updated: 2026-09-
|
|
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.
|
|
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?
|
|
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.
|
|
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.
|
|
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.
|
|
121
|
+
[Optional. Strategy and high-level how. <300 words.]
|
|
120
122
|
|
|
121
123
|
## Key Deliverables
|
|
122
124
|
|
|
123
|
-
[Optional. Main outputs needed.
|
|
125
|
+
[Optional. Main outputs needed. <300 words.]
|
|
124
126
|
|
|
125
127
|
## Key Resources
|
|
126
128
|
|
|
127
|
-
[Optional. Equipment, people, budget, dependencies.
|
|
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.
|
|
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.
|
|
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.
|
|
9
|
-
updated: 2026-09-
|
|
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,
|
|
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 -
|
|
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 -
|
|
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 —
|
|
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
|
-
-
|
|
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
|
|
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.
|
|
9
|
-
updated: 2026-09-
|
|
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.
|
|
10
|
-
updated: 2026-09-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
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
|
|
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.
|
|
10
|
-
updated: 2026-09-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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**:
|
|
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.
|
|
9
|
-
updated: 2026-09-
|
|
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
|
|
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
|
-
|
|
47
|
-
- AGENTS.md
|
|
48
|
-
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
177
|
+
`_core` applies implicitly to every scope, so it is never listed in `follows` or `extends`.
|
|
124
178
|
|
|
125
|
-
|
|
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
|
-
|
|
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
|
-
|
|
206
|
-
|
|
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
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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
|
-
-
|
|
251
|
-
-
|
|
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
|
|
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
|
|
256
|
-
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
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
|
|
283
|
-
- `runPromptTest(config, inputPrompt, judgePrompt)`
|
|
284
|
-
- `copilotCmd(workspaceRoot)` returns a
|
|
285
|
-
|
|
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
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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.
|
|
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",
|