xdrs-core 0.47.0 → 0.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: 006-write-plan
2
+ name: 006-write-initiative
3
3
  description: >
4
- Creates a new plan document following XDRS plan standards: selects scope, type, subject, and number;
5
- then writes a focused execution plan with problem context, proposed solution, approach, milestones, and deliverables.
6
- Activate this skill when the user asks to create, add, or write a plan, project plan, or execution plan within an XDRS project.
4
+ Creates a new initiative document following XDRS initiative standards: selects scope, type, subject, and number;
5
+ then writes a focused execution initiative with problem context, proposed solution, approach, milestones, and deliverables.
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
9
  version: "1.0"
@@ -11,24 +11,24 @@ metadata:
11
11
 
12
12
  ## Overview
13
13
 
14
- Guides the creation of a well-structured plan document by following `_core-adr-policy-007`, consulting `xdrs-core` for every core element definition, researching related Policies and existing plans, and producing a focused execution document that connects to the decisions, research, and skills it relates to.
14
+ Guides the creation of a well-structured initiative document by following `_core-adr-policy-007`, consulting `xdrs-core` for every core element definition, researching related Policies and existing initiatives, and producing a focused execution document that connects to the decisions, research, and skills it relates to.
15
15
 
16
16
  ## Instructions
17
17
 
18
18
  ### Phase 0: Scope Placement and Prerequisites Gate — MUST complete before writing
19
19
 
20
20
  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.
21
- 2. Once the scope is confirmed, run the prerequisites gate from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/prerequisites-gate.md`. Substitute `[DOCUMENT TYPE]` with `plan`.
21
+ 2. Once the scope is confirmed, run the prerequisites gate from the shared module at `.xdrs/_core/adrs/principles/skills/.assets/prerequisites-gate.md`. Substitute `[DOCUMENT TYPE]` with `initiative`.
22
22
 
23
- ### Phase 1: Understand the Plan Goal
23
+ ### Phase 1: Understand the Initiative Goal
24
24
 
25
- 1. Read `.xdrs/_core/adrs/principles/007-plan-standards.md` in full to internalize the template, placement rules, numbering rules, and the constraint that plans are ephemeral and must be deleted after implementation.
26
- 2. Read `.xdrs/_core/adrs/principles/001-xdrs-standards.md` in full before defining the plan's core elements. Treat it as the canonical source for how to choose and write type, scope, subject, numbering, naming, and folder placement.
25
+ 1. Read `.xdrs/_core/adrs/principles/007-initiative-standards.md` in full to internalize the template, placement rules, numbering rules, and the constraint that initiatives are ephemeral and must be deleted after implementation.
26
+ 2. Read `.xdrs/_core/adrs/principles/001-xdrs-standards.md` in full before defining the initiative's core elements. Treat it as the canonical source for how to choose and write type, scope, subject, numbering, naming, and folder placement.
27
27
  3. Identify the problem being solved, the proposed solution, and the expected timeline from user input or context. Do NOT proceed without a clear problem statement and proposed solution.
28
- 4. Ask the user clarifying questions to fill any gaps before writing the plan. Use the following rules:
28
+ 4. Ask the user clarifying questions to fill any gaps before writing the initiative. Use the following rules:
29
29
  - Ask all initial questions in a single batch so the user can answer them together.
30
30
  - After receiving the answers, evaluate whether any answer introduces new ambiguity or opens a related topic that requires further clarification. If it does, ask a focused follow-up question (or a small batch of follow-up questions) before proceeding.
31
- - Repeat this question-answer loop until you have enough information to write the plan with confidence.
31
+ - Repeat this question-answer loop until you have enough information to write the initiative with confidence.
32
32
  - Typical questions cover: the problem being solved, the proposed solution, the expected timeline, the scope, the key stakeholders, and any known constraints or risks.
33
33
  - Do NOT ask questions whose answers are already clear from context.
34
34
 
@@ -39,34 +39,34 @@ Consult `001-xdrs-standards` while making each choice in this phase. The summari
39
39
 
40
40
  **Scope** — confirmed in Phase 0. Follow the external-scope validation in `.xdrs/_core/adrs/principles/skills/.assets/scope-selection.md`.
41
41
 
42
- **Type** — match the type of the Policies the plan primarily implements or relates to (`adrs`, `bdrs`, or `edrs`).
42
+ **Type** — match the type of the Policies the initiative primarily implements or relates to (`adrs`, `bdrs`, or `edrs`).
43
43
  - **BDR**: business process, product policy, strategic rule, operational procedure
44
44
  - **ADR**: system context, integration pattern, overarching architectural choice
45
45
  - **EDR**: specific tool/library, coding practice, testing strategy, project structure, pipelines
46
46
 
47
- **Subject** — pick the subject that best matches the plan's topic (required list per type is in `_core-adr-policy-001`). If the plan spans more than one subject, place it in `principles`.
47
+ **Subject** — pick the subject that best matches the initiative's topic (required list per type is in `_core-adr-policy-001`). If the initiative spans more than one subject, place it in `principles`.
48
48
 
49
49
  ### Phase 3: Assign a Number and Name
50
50
 
51
- 1. List `.xdrs/[scope]/[type]/[subject]/plans/` (create the folder if it does not exist).
52
- 2. Find the highest existing plan number in that namespace and increment by 1. Never reuse numbers.
51
+ 1. List `.xdrs/[scope]/[type]/[subject]/initiatives/` (create the folder if it does not exist).
52
+ 2. Find the highest existing initiative number in that namespace and increment by 1. Never reuse numbers.
53
53
  3. Choose a short lowercase kebab-case title that describes the initiative clearly.
54
54
  - Good: `checkout-performance`, `onboarding-redesign`, `api-migration-v2`
55
- - Avoid: `plan`, `project`, `misc`
55
+ - Avoid: `initiative`, `project`, `misc`
56
56
 
57
57
  ### Phase 4: Research Related Artifacts
58
58
 
59
- 1. Read all Policies, Research documents, Skills, and existing Plans relevant to the plan topic across all scopes listed in the Policy root `index.md`.
59
+ 1. Read all Policies, Research documents, Skills, and existing Initiatives relevant to the initiative topic across all scopes listed in the Policy root `index.md`.
60
60
  2. Evaluate Policy metadata before treating any decision as current context. All documents present in the collection are considered active. `valid-from:` determines the convergence date for adoption, `apply-to:` determines whether the decision fits the intended context, and the decision text defines any remaining boundaries.
61
- 3. Identify Decisions that this plan implements, Research that informs the planning, and any existing Plans that overlap.
61
+ 3. Identify Decisions that this initiative implements, Research that informs the planning, and any existing Initiatives that overlap.
62
62
  4. Collect artifact IDs and file paths for cross-references.
63
63
 
64
- ### Phase 5: Write the Plan
64
+ ### Phase 5: Write the Initiative
65
65
 
66
- Use the mandatory template from `007-plan-standards`:
66
+ Use the mandatory template from `007-initiative-standards`:
67
67
 
68
68
  ```markdown
69
- # [scope]-[type]-plan-[number]: [Short Title]
69
+ # [scope]-[type]-initiative-[number]: [Short Title]
70
70
 
71
71
  ## Executive Summary
72
72
 
@@ -74,7 +74,7 @@ Use the mandatory template from `007-plan-standards`:
74
74
 
75
75
  ## Context and Problem Statement
76
76
 
77
- [Required. Why are we executing this plan? What is the impact? Who is impacted? Under 200 words.]
77
+ [Required. Why are we executing this initiative? What is the impact? Who is impacted? Under 200 words.]
78
78
 
79
79
  ## Proposed Solution
80
80
 
@@ -114,22 +114,22 @@ Expected end date: YYYY-MM-DD
114
114
  Rules to apply while drafting:
115
115
 
116
116
  - Focus on the problem, solution, and approach. Avoid bloating with generic project management content.
117
- - Link to Decisions the plan implements, Research that informs it, and Skills that guide execution.
118
- - The Expected end date must be in ISO format (YYYY-MM-DD), placed inside the `## Proposed Solution` section, and should not be more than 2 years from the plan creation date.
119
- - If the plan scope is too large for 2 years, break it into multiple plans.
120
- - Remember that this plan must be deleted after full implementation. Write it with that ephemeral nature in mind.
117
+ - Link to Decisions the initiative implements, Research that informs it, and Skills that guide execution.
118
+ - The Expected end date must be in ISO format (YYYY-MM-DD), placed inside the `## Proposed Solution` section, and should not be more than 2 years from the initiative creation date.
119
+ - If the initiative scope is too large for 2 years, break it into multiple initiatives.
120
+ - Remember that this initiative must be deleted after full implementation. Write it with that ephemeral nature in mind.
121
121
  - 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 for complex diagrams, 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.
122
- - If the plan genuinely needs local images or supporting files, store them in `.xdrs/[scope]/[type]/[subject]/plans/.assets/` and link them using a same-folder relative path (e.g., `.assets/image.png`).
122
+ - If the initiative genuinely needs local images or supporting files, store them in `.xdrs/[scope]/[type]/[subject]/initiatives/.assets/` and link them using a same-folder relative path (e.g., `.assets/image.png`).
123
123
  - Use relative paths for all links; never use absolute paths starting with `/`.
124
124
  - Use lowercase file names. Never use emojis.
125
125
 
126
126
  ### Phase 6: Place and Register
127
127
 
128
- 1. Save the file at `.xdrs/[scope]/[type]/[subject]/plans/[number]-[short-title].md`.
129
- 2. Add a link to the plan in the canonical index for that scope+type (`.xdrs/[scope]/[type]/index.md`).
130
- 3. Add back-references in the Policies, Research documents, and Skills that the plan relates to, under their `## References` section.
131
- 4. Evaluate whether the scope index at `.xdrs/[scope]/index.md` should be updated to reflect the new plan. If the scope index does not exist, create it following article standards and the scope index rules in `_core-adr-policy-001`.
132
- 5. **Meta-policy compliance**: Run the shared module at `.xdrs/_core/adrs/principles/skills/.assets/meta-policy-compliance.md`. Substitute `[DOCUMENT]` with `plan`.
128
+ 1. Save the file at `.xdrs/[scope]/[type]/[subject]/initiatives/[number]-[short-title].md`.
129
+ 2. Add a link to the initiative in the canonical index for that scope+type (`.xdrs/[scope]/[type]/index.md`).
130
+ 3. Add back-references in the Policies, Research documents, and Skills that the initiative relates to, under their `## References` section.
131
+ 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`.
132
+ 5. **Meta-policy compliance**: Run the shared module at `.xdrs/_core/adrs/principles/skills/.assets/meta-policy-compliance.md`. Substitute `[DOCUMENT]` with `initiative`.
133
133
 
134
134
  ### Phase 7: Verify with Lint
135
135
 
@@ -140,29 +140,29 @@ Follow the lint verification steps in `.xdrs/_core/adrs/principles/skills/.asset
140
140
  **Input:** "Create a plan for migrating our API to v2."
141
141
 
142
142
  **Expected actions:**
143
- 1. Read `007-plan-standards.md`.
143
+ 1. Read `007-initiative-standards.md`.
144
144
  2. Topic: API v2 migration. Scope: `_local`.
145
145
  3. Type: `adrs` (architectural). Subject: `application`.
146
146
  4. Research related Policies about API design and integration patterns.
147
- 5. Draft the plan with clear problem, solution, milestones, and expected end date.
147
+ 5. Draft the initiative with clear problem, solution, milestones, and expected end date.
148
148
  6. Save, register in canonical index, and lint.
149
149
 
150
150
  ## Edge Cases
151
151
 
152
- - If a plan is too large (more than 2 years), split it into multiple smaller plans. Each plan should be independently actionable and produce its own deliverables.
153
- - If a plan spawns sub-plans during implementation, each sub-plan is a separate plan document in the appropriate subject folder. Link them in the References section.
154
- - If a plan is fully implemented, delete it and confirm that all lasting outputs (Decisions, Skills, Articles, etc.) are properly linked and indexed.
155
- - If the user asks for a plan that is really just a decision, guide them to create a Policy instead.
152
+ - If an initiative is too large (more than 2 years), split it into multiple smaller initiatives. Each initiative should be independently actionable and produce its own deliverables.
153
+ - If an initiative spawns sub-initiatives during implementation, each sub-initiative is a separate initiative document in the appropriate subject folder. Link them in the References section.
154
+ - If an initiative is fully implemented, delete it and confirm that all lasting outputs (Decisions, Skills, Articles, etc.) are properly linked and indexed.
155
+ - If the user asks for an initiative that is really just a decision, guide them to create a Policy instead.
156
156
 
157
157
  ## References
158
158
 
159
159
  - [_core-adr-policy-001 - XDRS standards](../../001-xdrs-standards.md)
160
- - [_core-adr-policy-007 - Plan standards](../../007-plan-standards.md)
160
+ - [_core-adr-policy-007 - Initiative standards](../../007-initiative-standards.md)
161
161
  - [_core-adr-policy-002 - Policy standards](../../002-policy-standards.md)
162
162
 
163
163
  ## Constraints
164
164
 
165
- - MUST follow the plan template and section-goal rules from `007-plan-standards`.
165
+ - MUST follow the initiative template and section-goal rules from `007-initiative-standards`.
166
166
  - MUST consult `001-xdrs-standards` as the canonical source for every core element definition, especially type, scope, subject, numbering, naming, and placement.
167
167
  - MUST keep scope `_local` unless the user explicitly states otherwise.
168
168
  - MUST NOT create documents in external scopes (scopes whose files appear in the workspace root `.filedist.lock`).
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: 007-write-presentation
3
3
  description: >
4
- Creates a Marp slide presentation for an existing XDRS document (policy, research, article, or plan).
4
+ Creates a Marp slide presentation for an existing XDRS document (policy, research, article, or initiative).
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
@@ -22,7 +22,7 @@ Identify the target scope from the parent document's path or the user's request;
22
22
 
23
23
  1. Read `.xdrs/_core/adrs/principles/009-presentation-standards.md` in full to internalize all presentation rules.
24
24
  2. Read `.xdrs/_core/adrs/principles/001-xdrs-standards.md` for `.assets/` placement rules and general framework structure.
25
- 3. Identify the parent document (policy, research, article, or plan) that the slides will support. The parent document must already exist. If no parent document exists, inform the user that slides cannot be standalone and suggest creating the parent document first.
25
+ 3. Identify the parent document (policy, research, article, or initiative) that the slides will support. The parent document must already exist. If no parent document exists, inform the user that slides cannot be standalone and suggest creating the parent document first.
26
26
  4. If the user wants slides covering content from multiple documents, check whether an article already exists that synthesizes those documents. If not, suggest creating an article first (using the 004-write-article skill) and then creating slides for that article.
27
27
 
28
28
  ### Phase 2: Define the Presentation Scope
@@ -120,7 +120,7 @@ Rules:
120
120
  - Articles: `[xdrs-root]/[scope]/[type]/[subject]/articles/.assets/[slide-file].md`
121
121
  - Research: `[xdrs-root]/[scope]/[type]/[subject]/researches/.assets/[slide-file].md`
122
122
  - Skills: `[xdrs-root]/[scope]/[type]/[subject]/skills/[number]-[skill-name]/.assets/[slide-file].md`
123
- - Plans: `[xdrs-root]/[scope]/[type]/[subject]/plans/.assets/[slide-file].md`
123
+ - Initiatives: `[xdrs-root]/[scope]/[type]/[subject]/initiatives/.assets/[slide-file].md`
124
124
  2. Update the parent document with the link to the slide file.
125
125
  3. Verify that the slide file name is <= 64 characters and lowercase.
126
126
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: 008-write-xdrs-doc
3
3
  description: >
4
- Use when writing documents such as decisions, policies, skills, procedures, research, plans, articles, or presentations.
4
+ Use when writing documents such as decisions, policies, skills, procedures, research, initiatives, articles, or presentations.
5
5
  Activate this skill when the user asks to create or write any XDRS element.
6
6
  metadata:
7
7
  author: flaviostutz
@@ -20,11 +20,11 @@ Routes the request to the appropriate XDRS authoring skill based on the type of
20
20
  - **Policy** (ADR/BDR/EDR) — user wants to record a decision, rule, standard, guideline, or architectural/business/engineering policy
21
21
  - **Skill** — user wants to create an agent skill, SKILL.md, or reusable workflow instruction
22
22
  - **Research** — user wants to produce a study, investigation, evidence-based analysis, or IMRAD-style document
23
- - **Plan** — user wants to create an execution plan, project plan, roadmap, or milestone document
23
+ - **Initiative** — user wants to create an execution plan, project plan, roadmap, or milestone document
24
24
  - **Article** — user wants to create a guide, overview, or synthetic document that combines multiple XDRS elements
25
25
  - **Presentation** — user wants to create slides or a Marp deck for an existing XDRS document
26
26
 
27
- 2. If the type cannot be confidently inferred, ask the user one focused question: *"What type of XDRS document do you want to create — Policy, Skill, Research, Plan, Article, or Presentation?"* Wait for the answer before proceeding.
27
+ 2. If the type cannot be confidently inferred, ask the user one focused question: *"What type of XDRS document do you want to create — Policy, Skill, Research, Initiative, Article, or Presentation?"* Wait for the answer before proceeding.
28
28
 
29
29
  ### Phase 1.5: Prerequisites Gate — MUST complete before writing
30
30
 
@@ -40,9 +40,19 @@ Read the full content of the skill file for the inferred type, then follow all i
40
40
  | Skill | `.xdrs/_core/adrs/principles/skills/003-write-skill/SKILL.md` |
41
41
  | Article | `.xdrs/_core/adrs/principles/skills/004-write-article/SKILL.md` |
42
42
  | Research | `.xdrs/_core/adrs/principles/skills/005-write-research/SKILL.md` |
43
- | Plan | `.xdrs/_core/adrs/principles/skills/006-write-plan/SKILL.md` |
43
+ | Initiative | `.xdrs/_core/adrs/principles/skills/006-write-initiative/SKILL.md` |
44
44
  | Presentation | `.xdrs/_core/adrs/principles/skills/007-write-presentation/SKILL.md` |
45
45
 
46
+ ### Phase 3: Validate Mermaid Diagrams
47
+
48
+ 1. After the delegated skill completes, scan all files written in this session for fenced ` ```mermaid ` code blocks.
49
+ 2. For each diagram found, extract the content to a temporary `.mmd` file and run:
50
+ ```bash
51
+ npx -y @mermaid-js/mermaid-cli -i <tempfile>.mmd --quiet 2>&1
52
+ ```
53
+ 3. For each diagram that fails validation, report the error to the user and ask them to correct the diagram before saving.
54
+ 4. Delete all temporary files created in this step.
55
+
46
56
  ### Constraints
47
57
 
48
58
  - MUST read the full target SKILL.md before proceeding — do not rely on summaries or prior knowledge of the target skill.
@@ -10,13 +10,13 @@ valid-from: 2025-01-01
10
10
 
11
11
  ## Overview
12
12
 
13
- The `_core` scope defines the XDRS framework itself: how policies, skills, research, articles, and plans are structured, written, versioned, and discovered. This scope is aimed at engineers, architects, and business analysts who build or consume xdrs-based documentation.
13
+ The `_core` scope defines the XDRS (eXtensible Decision Record System) framework itself: how policies, skills, research, articles, and initiatives are structured, written, versioned, and discovered. This scope is aimed at engineers, architects, and business analysts who build or consume xdrs-based documentation.
14
14
 
15
15
  ## Content
16
16
 
17
17
  ### What this scope covers
18
18
 
19
- The `_core` scope is the foundation that all other scopes inherit from. It establishes the rules and conventions that every Policy document, skill, article, research, and plan must follow regardless of which team, product, or domain produces them.
19
+ The `_core` scope is the foundation that all other scopes inherit from. It establishes the rules and conventions that every Policy document, skill, article, research, and initiative must follow regardless of which team, product, or domain produces them.
20
20
 
21
21
  If you are evaluating whether to adopt XDRS, setting up a new XDRS project, or extending the framework with your own scopes, start here.
22
22
 
@@ -35,7 +35,7 @@ Each artifact type has its own writing standard:
35
35
  - **Skills** follow [_core-adr-policy-003](adrs/principles/003-skill-standards.md), using the agentskills format so they work for both humans and AI agents on an automation gradient from fully manual to fully automated.
36
36
  - **Articles** follow [_core-adr-policy-004](adrs/principles/004-article-standards.md), providing synthetic views that combine and link multiple Policies, research, and skills without replacing them as the source of truth.
37
37
  - **Research** follows [_core-adr-policy-006](adrs/principles/006-research-standards.md), using an IMRAD-based structure for studies that back decisions with reproducible evidence.
38
- - **Plans** follow [_core-adr-policy-007](adrs/principles/007-plan-standards.md), capturing ephemeral execution plans with problem context, proposed solutions, milestones, and deliverables that are deleted after implementation.
38
+ - **Initiatives** follow [_core-adr-policy-007](adrs/principles/007-initiative-standards.md), capturing ephemeral execution initiatives with problem context, proposed solutions, milestones, and deliverables that are deleted after implementation.
39
39
 
40
40
  ### Versioning and distribution
41
41
 
@@ -68,7 +68,7 @@ The `_core` scope ships with seven skills that automate the most common framewor
68
68
  - **003-write-skill** guides creation of a new skill package
69
69
  - **004-write-article** guides creation of a new article
70
70
  - **005-write-research** guides creation of a new research document
71
- - **006-write-plan** guides creation of a new execution plan
71
+ - **006-write-initiative** guides creation of a new execution initiative
72
72
  - **007-write-presentation** guides creation of Marp slide presentations
73
73
 
74
74
  ### Getting started
package/.xdrs/index.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # XDRS Index
2
2
 
3
- This index points to all type- and scope-specific XDRS indexes. It covers Architectural (ADR), Business (BDR), and Engineering (EDR) contents. Each scope has its own canonical index that lists all Policies, Skills, Articles and Plans for that scope, organized by subject.
3
+ This index points to all type- and scope-specific XDRS (eXtensible Decision Record System) indexes. It covers Architectural (ADR), Business (BDR), and Engineering (EDR) contents. Each scope has its own canonical index that lists all Policies, Skills, Articles and Initiatives for that scope, organized by subject.
4
4
 
5
5
  ## Scope Indexes
6
6
 
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # xdrs-core
2
2
 
3
- XDRS is 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. Decision Records are decomposed into Research (why), Policies (what), Skills (how), Plan (when) and Articles (views) with a well structured index structure and the definition of hierarchical scopes.
3
+ **XDRS — eXtensible Decision Record System**
4
+
5
+ XDRS is 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. Decision Records are decomposed into Research (why), Policies (what), Skills (how), Initiative (when) and Articles (views) with a well structured index structure and the definition of hierarchical scopes.
4
6
 
5
7
  After preparation those elements can be downloaded anywhere and used to compose xdrs corpus, which can be used as a context source for AI agents, web site publishing, RAG applications etc.
6
8
 
@@ -21,7 +23,7 @@ This project defines a standard for organizing XDRS that satisfies the following
21
23
  A traditional Decision Record normally combines several concerns in the same document:
22
24
  - A **reason** (why the decision was made, options considered, evidence gathered)
23
25
  - A **policy** (rules, core decision, what must be followed)
24
- - A **plan** (consequences, implementation approach, how to roll out the decision)
26
+ - An **initiative** (consequences, implementation approach, how to roll out the decision)
25
27
  - A **how-to** (step-by-step procedure for executing under the decision)
26
28
  - A **view** (overview of the topic connecting related decisions together)
27
29
 
@@ -31,7 +33,7 @@ The XDRS framework separates these concerns into different document types, each
31
33
  - **Research** — Exploratory documents that capture the problem being investigated, constraints or requirements, findings, and option tradeoffs that back a decision during its lifecycle. One research document may inform multiple downstream decisions, but it is not a replacement for the Policy.
32
34
  - **Skills** — Step-by-step procedural guides that can be followed by humans, AI agents, or both. Skills are task-based artifacts with a concrete outcome and should include enough detail to verify the task was completed correctly. A skill may start as a fully manual procedure and evolve toward partial or full AI automation over time.
33
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.
34
- - **Plans** — Ephemeral execution documents that describe a problem, proposed solution, and the approach and activities needed to solve it. Plans have a clear start and end and must be deleted after full implementation. Lasting outputs are captured as Policies, Skills, Articles, or other artifacts.
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.
35
37
 
36
38
  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.
37
39
 
@@ -167,7 +169,7 @@ This is especially important for BDRs: because business rules govern decisions t
167
169
  articles/ # optional synthetic views over Policies, Research, and Skills
168
170
  [number]-[short-title].md
169
171
  .assets/
170
- plans/ # optional ephemeral execution plans
172
+ initiatives/ # optional ephemeral execution initiatives
171
173
  [number]-[short-title].md
172
174
  .assets/
173
175
  ```
@@ -180,7 +182,7 @@ Document types:
180
182
  - **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.
181
183
  - **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.
182
184
  - **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.
183
- - **Plans** - Ephemeral execution documents that describe a problem, proposed solution, and the approach and activities needed to solve it. Plans 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 `plans/` sub-directories.
185
+ - **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.
184
186
 
185
187
  See [.xdrs/index.md](.xdrs/index.md) for the full list of active policies.
186
188
 
@@ -232,12 +234,12 @@ The `lint` command reads `./.xdrs/**` from the given workspace path and checks c
232
234
  - skill numbering uniqueness per `scope/type/subject/skills`
233
235
  - article numbering uniqueness per `scope/type/subject/articles`
234
236
  - research numbering uniqueness per `scope/type/subject/researches`
235
- - plan numbering uniqueness per `scope/type/subject/plans`
236
- - plan `Expected end date:` field presence and ISO date format
237
+ - initiative numbering uniqueness per `scope/type/subject/initiatives`
238
+ - initiative `Expected end date:` field presence and ISO date format
237
239
  - canonical index presence and link consistency
238
240
  - root index coverage for all discovered canonical indexes
239
241
  - Policy metadata section placement and `valid-from` / `apply-to` field format
240
- - local markdown links between Policy documents, skills, articles, researches, and plans (excluding fenced code blocks)
242
+ - local markdown links between Policy documents, skills, articles, researches, and initiatives (excluding fenced code blocks)
241
243
  - local image and `.assets/` links resolving inside the sibling `.assets/` folder for each document
242
244
 
243
245
  Examples:
package/lib/lint.js CHANGED
@@ -21,7 +21,7 @@ const RESERVED_SCOPES = new Set(['_core', '_local']);
21
21
  const NUMBERED_FILE_RE = /^(\d{3,})-([a-z0-9-]+)\.md$/;
22
22
  const NUMBERED_DIR_RE = /^(\d{3,})-([a-z0-9-]+)$/;
23
23
  const REQUIRED_ROOT_INDEX_TEXT = 'XDRS scopes listed last override the ones listed first';
24
- const SUBJECT_ARTIFACT_DIRS = new Set(['skills', 'articles', 'researches', 'plans']);
24
+ const SUBJECT_ARTIFACT_DIRS = new Set(['skills', 'articles', 'researches', 'initiatives']);
25
25
  const RESOURCE_DIR_NAME = '.assets';
26
26
  const SKILL_PACKAGE_OPTIONAL_DIRS = new Set(['scripts', 'references', RESOURCE_DIR_NAME]);
27
27
 
@@ -69,7 +69,7 @@ const DOC_TYPE_POLICY_REF = {
69
69
  Skill: '[_core-adr-policy-003]',
70
70
  Article: '[_core-adr-policy-004]',
71
71
  Research: '[_core-adr-policy-006]',
72
- Plan: '[_core-adr-policy-007]',
72
+ Initiative: '[_core-adr-policy-007]',
73
73
  Slide: '[_core-adr-policy-009]',
74
74
  };
75
75
 
@@ -854,8 +854,8 @@ function lintSubjectDirectory(xdrsRoot, scopeName, typeName, subjectName, xdrsNu
854
854
  artifacts.push(...lintResearchDirectory(xdrsRoot, scopeName, typeName, subjectName, entryPath, errors, externalScopes));
855
855
  continue;
856
856
  }
857
- if (entry.name === 'plans') {
858
- artifacts.push(...lintPlansDirectory(xdrsRoot, scopeName, typeName, subjectName, entryPath, errors, externalScopes));
857
+ if (entry.name === 'initiatives') {
858
+ artifacts.push(...lintInitiativesDirectory(xdrsRoot, scopeName, typeName, subjectName, entryPath, errors, externalScopes));
859
859
  continue;
860
860
  }
861
861
 
@@ -1217,57 +1217,57 @@ function lintResearchDirectory(xdrsRoot, scopeName, typeName, subjectName, resea
1217
1217
  return artifacts;
1218
1218
  }
1219
1219
 
1220
- function lintPlansDirectory(xdrsRoot, scopeName, typeName, subjectName, plansPath, errors, externalScopes = new Set()) {
1220
+ function lintInitiativesDirectory(xdrsRoot, scopeName, typeName, subjectName, initiativesPath, errors, externalScopes = new Set()) {
1221
1221
  const artifacts = [];
1222
- const planNumbers = new Map();
1223
- const entries = safeReadDir(plansPath, errors, `read plans directory ${scopeName}/${typeName}/${subjectName}/plans`);
1222
+ const initiativeNumbers = new Map();
1223
+ const entries = safeReadDir(initiativesPath, errors, `read initiatives directory ${scopeName}/${typeName}/${subjectName}/initiatives`);
1224
1224
 
1225
1225
  for (const entry of entries) {
1226
- const entryPath = path.join(plansPath, entry.name);
1226
+ const entryPath = path.join(initiativesPath, entry.name);
1227
1227
  if (entry.isDirectory() && entry.name === RESOURCE_DIR_NAME) {
1228
1228
  continue;
1229
1229
  }
1230
1230
 
1231
1231
  if (!entry.isFile()) {
1232
- errors.push(`Unexpected directory in plans folder: ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1232
+ errors.push(`Unexpected directory in initiatives folder: ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1233
1233
  continue;
1234
1234
  }
1235
1235
 
1236
1236
  const match = entry.name.match(NUMBERED_FILE_RE);
1237
1237
  if (!match) {
1238
- errors.push(`Invalid plan file name: ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1238
+ errors.push(`Invalid initiative file name: ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1239
1239
  continue;
1240
1240
  }
1241
1241
 
1242
1242
  artifacts.push(entryPath);
1243
1243
 
1244
1244
  const number = match[1];
1245
- const previous = planNumbers.get(number);
1245
+ const previous = initiativeNumbers.get(number);
1246
1246
  if (previous) {
1247
- errors.push(`Duplicate plan number ${number} in ${scopeName}/${typeName}/${subjectName}/plans: ${toDisplayPath(previous)} and ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1247
+ errors.push(`Duplicate initiative number ${number} in ${scopeName}/${typeName}/${subjectName}/initiatives: ${toDisplayPath(previous)} and ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1248
1248
  } else {
1249
- planNumbers.set(number, entryPath);
1249
+ initiativeNumbers.set(number, entryPath);
1250
1250
  }
1251
1251
 
1252
1252
  if (entry.name !== entry.name.toLowerCase()) {
1253
- errors.push(`Plan file name must be lowercase: ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1253
+ errors.push(`Initiative file name must be lowercase: ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1254
1254
  }
1255
1255
 
1256
1256
  const content = fs.readFileSync(entryPath, 'utf8');
1257
1257
  const typeId = TYPE_TO_ID[typeName].split('-')[0]; // 'adr', 'bdr', or 'edr'
1258
- const expectedHeader = `# ${scopeName}-${typeId}-plan-${number}:`;
1258
+ const expectedHeader = `# ${scopeName}-${typeId}-initiative-${number}:`;
1259
1259
  const firstLine = firstNonEmptyLine(content);
1260
1260
  if (!firstLine.startsWith(expectedHeader)) {
1261
- errors.push(`Plan title must start with "${expectedHeader}": ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1261
+ errors.push(`Initiative title must start with "${expectedHeader}": ${toDisplayPath(entryPath)} [_core-adr-policy-007]`);
1262
1262
  }
1263
1263
 
1264
- lintRequiredSections(content, entryPath, PLAN_REQUIRED_SECTIONS, 'Plan', errors);
1265
- lintPlanExpectedEndDate(content, entryPath, errors);
1266
- lintNoEmojis(content, entryPath, 'Plan', errors);
1264
+ lintRequiredSections(content, entryPath, INITIATIVE_REQUIRED_SECTIONS, 'Initiative', errors);
1265
+ lintInitiativeExpectedEndDate(content, entryPath, errors);
1266
+ lintNoEmojis(content, entryPath, 'Initiative', errors);
1267
1267
  lintDocumentLinks(entryPath, xdrsRoot, scopeName, errors, externalScopes);
1268
1268
  }
1269
1269
 
1270
- lintOrphanAssets(path.join(plansPath, RESOURCE_DIR_NAME), artifacts, xdrsRoot, errors);
1270
+ lintOrphanAssets(path.join(initiativesPath, RESOURCE_DIR_NAME), artifacts, xdrsRoot, errors);
1271
1271
 
1272
1272
  return artifacts;
1273
1273
  }
@@ -1355,7 +1355,7 @@ function lintResearchIntroductionQuestion(content, filePath, errors) {
1355
1355
  const XDRS_REQUIRED_SECTIONS = ['## Context and Problem Statement', '## Decision Outcome'];
1356
1356
  const ARTICLE_REQUIRED_SECTIONS = ['## Overview', '## Content', '## References'];
1357
1357
  const RESEARCH_REQUIRED_SECTIONS = ['## Abstract', '## Introduction', '## Methods', '## Results', '## Discussion', '## Conclusion', '## References'];
1358
- const PLAN_REQUIRED_SECTIONS = ['## Executive Summary', '## Context and Problem Statement', '## Proposed Solution'];
1358
+ const INITIATIVE_REQUIRED_SECTIONS = ['## Executive Summary', '## Context and Problem Statement', '## Proposed Solution'];
1359
1359
  const SKILL_REQUIRED_SECTIONS = ['## Overview', '## Instructions'];
1360
1360
 
1361
1361
  function lintRequiredSections(content, filePath, requiredSections, docType, errors) {
@@ -1368,23 +1368,23 @@ function lintRequiredSections(content, filePath, requiredSections, docType, erro
1368
1368
  }
1369
1369
  }
1370
1370
 
1371
- function lintPlanExpectedEndDate(content, filePath, errors) {
1371
+ function lintInitiativeExpectedEndDate(content, filePath, errors) {
1372
1372
  const lines = content.split(/\r?\n/);
1373
1373
  const ignoredLines = findIgnoredMarkdownLines(lines);
1374
1374
  const expectedEndDateLines = findFieldLines(lines, ignoredLines, 'Expected end date:');
1375
1375
 
1376
1376
  if (expectedEndDateLines.length === 0) {
1377
- errors.push(`Plan must include an Expected end date: field: ${toDisplayPath(filePath)} [_core-adr-policy-007]`);
1377
+ errors.push(`Initiative must include an Expected end date: field: ${toDisplayPath(filePath)} [_core-adr-policy-007]`);
1378
1378
  return;
1379
1379
  }
1380
1380
 
1381
1381
  if (expectedEndDateLines.length > 1) {
1382
- errors.push(`Plan must not repeat Expected end date: ${toDisplayPath(filePath)} [_core-adr-policy-007]`);
1382
+ errors.push(`Initiative must not repeat Expected end date: ${toDisplayPath(filePath)} [_core-adr-policy-007]`);
1383
1383
  }
1384
1384
 
1385
1385
  const value = lines[expectedEndDateLines[0]].slice('Expected end date:'.length).trim().replace(/\.$/, '');
1386
1386
  if (!isIsoDate(value)) {
1387
- errors.push(`Plan Expected end date: must be a valid ISO date in YYYY-MM-DD format: ${toDisplayPath(filePath)} [_core-adr-policy-007]`);
1387
+ errors.push(`Initiative Expected end date: must be a valid ISO date in YYYY-MM-DD format: ${toDisplayPath(filePath)} [_core-adr-policy-007]`);
1388
1388
  }
1389
1389
  }
1390
1390