xdrs-core 0.25.0 → 0.26.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.
@@ -20,16 +20,16 @@ Foundational standards, principles, and guidelines.
20
20
 
21
21
  Step-by-step procedural guides for humans and AI agents.
22
22
 
23
- - [001-review](principles/skills/001-review/SKILL.md) - **Review** — review code and files against Policies
24
- - [002-write-policy](principles/skills/002-write-policy/SKILL.md) - **Write Policy** — create a new Policy document
25
- - [003-write-skill](principles/skills/003-write-skill/SKILL.md) - **Write Skill** — create a new skill package
26
- - [004-write-article](principles/skills/004-write-article/SKILL.md) - **Write Article** — create a new article document
27
- - [005-write-research](principles/skills/005-write-research/SKILL.md) - **Write Research** — create a new research document
28
- - [006-write-plan](principles/skills/006-write-plan/SKILL.md) - **Write Plan** — create a new plan document
29
- - [007-write-presentation](principles/skills/007-write-presentation/SKILL.md) - **Write Presentation** — create Marp slide presentations for XDRS documents
23
+ - [_core-adr-skill-001-review](principles/skills/001-review/SKILL.md) - **Review** — review code and files against Policies
24
+ - [_core-adr-skill-002-write-policy](principles/skills/002-write-policy/SKILL.md) - **Write Policy** — create a new Policy document
25
+ - [_core-adr-skill-003-write-skill](principles/skills/003-write-skill/SKILL.md) - **Write Skill** — create a new skill package
26
+ - [_core-adr-skill-004-write-article](principles/skills/004-write-article/SKILL.md) - **Write Article** — create a new article document
27
+ - [_core-adr-skill-005-write-research](principles/skills/005-write-research/SKILL.md) - **Write Research** — create a new research document
28
+ - [_core-adr-skill-006-write-plan](principles/skills/006-write-plan/SKILL.md) - **Write Plan** — create a new plan document
29
+ - [_core-adr-skill-007-write-presentation](principles/skills/007-write-presentation/SKILL.md) - **Write Presentation** — create Marp slide presentations for XDRS documents
30
30
 
31
31
  ## Articles
32
32
 
33
33
  Synthetic views combining Policies, Research, and Skills around a specific topic.
34
34
 
35
- - [_core-article-001](principles/articles/001-xdrs-overview.md) - **XDRS Overview** (objective, structure, getting started, guidelines, extension, usage)
35
+ - [_core-adr-article-001](principles/articles/001-xdrs-overview.md) - **XDRS Overview** (objective, structure, getting started, guidelines, extension, usage)
@@ -81,7 +81,7 @@ Examples:
81
81
 
82
82
  ```
83
83
  ---
84
- name: 001-skill-name # required: must match the parent directory name exactly; max 64 chars
84
+ name: [scope]-[type]-skill-[number]-[skill-name] # required: full identifier including scope and type; max 64 chars
85
85
  description: > # required: what the skill does AND when to activate it; max 1024 chars
86
86
  Concise explanation of the skill and the situations in which an agent should load it.
87
87
  license: <license> # optional
@@ -110,7 +110,8 @@ Known gotchas and how to handle them.
110
110
  ```
111
111
 
112
112
  Rules:
113
- - The `name` field must match the parent directory name exactly (e.g., directory `001-code-review` uses `name: 001-code-review`). This preserves agentskills spec compliance while encoding the ordering number.
113
+ - The `name` field MUST use the format `[scope]-[type]-skill-[number]-[skill-name]` (e.g., `_core-adr-skill-001-code-review`). This aligns skill identifiers with the Policy document identifier format, making every XDRS element consistently identifiable by scope and type.
114
+ - The directory name MUST follow the format `[number]-[skill-name]` (e.g., `001-code-review`), which keeps the filesystem hierarchy simple while the `name:` field carries the full identifier.
114
115
  - `## Overview` SHOULD state the task objective, expected outcome, and relevant prerequisites or tools when they matter.
115
116
  - `## Instructions` SHOULD include verification steps or acceptance criteria at the end of the task, or at the end of major phases when partial validation matters.
116
117
  - For simple structure, flow, layout, or relationship indications, `SKILL.md` SHOULD prefer plain Markdown, tables, or ASCII art instead of external assets.
@@ -62,7 +62,7 @@ Examples:
62
62
  All articles MUST follow this template:
63
63
 
64
64
  ```markdown
65
- # [scope]-article-[number]: [Short Title]
65
+ # [scope]-[type]-article-[number]: [Short Title]
66
66
 
67
67
  ## Overview
68
68
 
@@ -81,7 +81,7 @@ Examples:
81
81
  All research documents MUST follow this template:
82
82
 
83
83
  ```markdown
84
- # [scope]-research-[number]: [Short Title]
84
+ # [scope]-[type]-research-[number]: [Short Title]
85
85
 
86
86
  ## Abstract
87
87
 
@@ -61,7 +61,7 @@ Examples:
61
61
  All plans MUST follow this template:
62
62
 
63
63
  ```markdown
64
- # [scope]-plan-[number]: [Short Title]
64
+ # [scope]-[type]-plan-[number]: [Short Title]
65
65
 
66
66
  ## Executive Summary
67
67
 
@@ -1,4 +1,4 @@
1
- # _core-article-001: XDRS Overview
1
+ # _core-adr-article-001: XDRS Overview
2
2
 
3
3
  ## Overview
4
4
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 001-review
2
+ name: _core-adr-skill-001-review
3
3
  description: >
4
4
  Reviews code changes or files against applicable Policies and reports violations as structured findings.
5
5
  Activate this skill when the user asks to review, lint, or audit code or Policies, or when you identify a need to check compliance with Policies during implementation.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 002-write-policy
2
+ name: _core-adr-skill-002-write-policy
3
3
  description: >
4
4
  Creates a new Policy interactively: selects type, scope, subject, and writes a focused, conflict-checked policy document.
5
5
  Activate this skill when the user asks to create, add, or write a new Policy (ADR, BDR, or EDR).
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 003-write-skill
2
+ name: _core-adr-skill-003-write-skill
3
3
  description: >
4
4
  Creates a new skill package following XDRS skill standards: determines type, scope, subject, and number;
5
5
  then writes a focused SKILL.md with correct frontmatter, phased instructions, examples, and edge cases.
@@ -45,7 +45,7 @@ Quick test:
45
45
 
46
46
  **Skill number** — scan `.xdrs/[scope]/[type]/[subject]/skills/` for the highest existing number and increment by 1. Never reuse numbers from deleted skills.
47
47
 
48
- **Skill name** — `[number]-[short-kebab-case-description]`, max 64 characters total.
48
+ **Skill name** — `[scope]-[type]-skill-[number]-[short-kebab-case-description]`, max 64 characters total. The directory name is `[number]-[short-kebab-case-description]`.
49
49
 
50
50
  ### Phase 3: Research Existing Skills and Related Policies
51
51
 
@@ -60,7 +60,7 @@ Use the mandatory agentskills format:
60
60
 
61
61
  ```
62
62
  ---
63
- name: [number]-[skill-name]
63
+ name: [scope]-[type]-skill-[number]-[skill-name]
64
64
  description: >
65
65
  [What the skill does AND exactly when an agent should activate it. Max 1024 chars.]
66
66
  metadata:
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 004-write-article
2
+ name: _core-adr-skill-004-write-article
3
3
  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:
@@ -72,7 +72,7 @@ If the article spans more than one subject, place it in `principles`.
72
72
  Use the mandatory template from `004-article-standards`:
73
73
 
74
74
  ```
75
- # [scope]-article-[number]: [Short Title]
75
+ # [scope]-[type]-article-[number]: [Short Title]
76
76
 
77
77
  ## Overview
78
78
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 005-write-research
2
+ name: _core-adr-skill-005-write-research
3
3
  description: >
4
4
  Creates a new research document following XDRS research standards: selects scope, type, subject, and number;
5
5
  then writes an IMRAD-based study with enough evidence and method detail to stand on its own as a technical paper.
@@ -88,7 +88,7 @@ If the results contain competing interpretations or the intended audience for th
88
88
  Use the mandatory template from `006-research-standards`:
89
89
 
90
90
  ```markdown
91
- # [scope]-research-[number]: [Short Title]
91
+ # [scope]-[type]-research-[number]: [Short Title]
92
92
 
93
93
  ## Abstract
94
94
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 006-write-plan
2
+ name: _core-adr-skill-006-write-plan
3
3
  description: >
4
4
  Creates a new plan document following XDRS plan standards: selects scope, type, subject, and number;
5
5
  then writes a focused execution plan with problem context, proposed solution, approach, milestones, and deliverables.
@@ -62,7 +62,7 @@ Consult `001-xdrs-core` while making each choice in this phase. The summaries be
62
62
  Use the mandatory template from `007-plan-standards`:
63
63
 
64
64
  ```markdown
65
- # [scope]-plan-[number]: [Short Title]
65
+ # [scope]-[type]-plan-[number]: [Short Title]
66
66
 
67
67
  ## Executive Summary
68
68
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: 007-write-presentation
2
+ name: _core-adr-skill-007-write-presentation
3
3
  description: >
4
4
  Creates a Marp slide presentation for an existing XDRS document (policy, research, article, or plan).
5
5
  Activate this skill when the user asks to create slides, a presentation, or a slide deck for an XDRS document.
@@ -31,10 +31,6 @@ Each artifact type has its own writing standard:
31
31
 
32
32
  [_core-adr-policy-005](adrs/principles/005-semantic-versioning-for-xdrs-packages.md) defines how XDRS packages use semantic versioning to communicate upgrade impact when decisions are shared across repositories or teams.
33
33
 
34
- ### Usage policy
35
-
36
- The business decision [_core-bdr-policy-001](bdrs/principles/001-xdr-decisions-and-skills-usage.md) establishes how agents and humans must use XDRS policies and skills, separating policy authority (which lives in Policies) from execution guidance (which lives in skills).
37
-
38
34
  ### Presentation standards
39
35
 
40
36
  Slide presentations that support XDRS documents follow [_core-adr-policy-009](adrs/principles/009-presentation-standards.md). Slides use the Marp Markdown format, live in `.assets/` next to the document they support, and must maintain bidirectional links with the parent document.
@@ -43,20 +39,18 @@ Slide presentations that support XDRS documents follow [_core-adr-policy-009](ad
43
39
 
44
40
  The `_core` scope ships with seven skills that automate the most common framework operations:
45
41
 
46
- - **001-review** reviews code and files against applicable Policies
47
- - **002-write-policy** guides creation of a new Policy document
48
- - **003-write-skill** guides creation of a new skill package
49
- - **004-write-article** guides creation of a new article
50
- - **005-write-research** guides creation of a new research document
51
- - **006-write-plan** guides creation of a new execution plan
52
- - **007-write-presentation** guides creation of Marp slide presentations
42
+ - **_core-adr-skill-001-review** reviews code and files against applicable Policies
43
+ - **_core-adr-skill-002-write-policy** guides creation of a new Policy document
44
+ - **_core-adr-skill-003-write-skill** guides creation of a new skill package
45
+ - **_core-adr-skill-004-write-article** guides creation of a new article
46
+ - **_core-adr-skill-005-write-research** guides creation of a new research document
47
+ - **_core-adr-skill-006-write-plan** guides creation of a new execution plan
48
+ - **_core-adr-skill-007-write-presentation** guides creation of Marp slide presentations
53
49
 
54
50
  ### Getting started
55
51
 
56
- For a narrative introduction to the framework, including how elements differ, how to decide whether a Policy applies, and how to extend the framework with your own scopes, see the overview article [_core-article-001](adrs/principles/articles/001-xdrs-overview.md).
52
+ For a narrative introduction to the framework, including how elements differ, how to decide whether a Policy applies, and how to extend the framework with your own scopes, see the overview article [_core-adr-article-001](adrs/principles/articles/001-xdrs-overview.md).
57
53
 
58
54
  ## Type Indexes
59
55
 
60
56
  - [ADRs Index](adrs/index.md) - Architectural decisions about the XDRS framework structure and standards
61
- - [BDRs Index](bdrs/index.md) - Business decisions about XDRS framework governance and usage
62
- - [BDRs Index](bdrs/index.md) - Business decisions about how agents and humans must use XDRS policies and skills
package/lib/lint.js CHANGED
@@ -472,8 +472,10 @@ function lintSkillsDirectory(xdrsRoot, scopeName, typeName, subjectName, skillsP
472
472
  if (!skillFm.name) {
473
473
  errors.push(`SKILL.md frontmatter must include a non-empty name field: ${toDisplayPath(skillFilePath)}`);
474
474
  } else {
475
- if (skillFm.name !== entry.name) {
476
- errors.push(`Skill frontmatter name must match package directory "${entry.name}": ${toDisplayPath(skillFilePath)}`);
475
+ const typeId = TYPE_TO_ID[typeName].split('-')[0]; // 'adr', 'bdr', or 'edr'
476
+ const expectedSkillName = `${scopeName}-${typeId}-skill-${number}-${match[2]}`;
477
+ if (skillFm.name !== expectedSkillName) {
478
+ errors.push(`Skill frontmatter name must be "${expectedSkillName}": ${toDisplayPath(skillFilePath)}`);
477
479
  }
478
480
  if (skillFm.name.length > 64) {
479
481
  errors.push(`SKILL.md frontmatter name must be 64 characters or fewer: ${toDisplayPath(skillFilePath)}`);
@@ -537,7 +539,8 @@ function lintArticlesDirectory(xdrsRoot, scopeName, typeName, subjectName, artic
537
539
  }
538
540
 
539
541
  const content = fs.readFileSync(entryPath, 'utf8');
540
- const expectedHeader = `# ${scopeName}-article-${number}:`;
542
+ const typeId = TYPE_TO_ID[typeName].split('-')[0]; // 'adr', 'bdr', or 'edr'
543
+ const expectedHeader = `# ${scopeName}-${typeId}-article-${number}:`;
541
544
  const firstLine = firstNonEmptyLine(content);
542
545
  if (!firstLine.startsWith(expectedHeader)) {
543
546
  errors.push(`Article title must start with "${expectedHeader}": ${toDisplayPath(entryPath)}`);
@@ -591,7 +594,8 @@ function lintResearchDirectory(xdrsRoot, scopeName, typeName, subjectName, resea
591
594
  }
592
595
 
593
596
  const content = fs.readFileSync(entryPath, 'utf8');
594
- const expectedHeader = `# ${scopeName}-research-${number}:`;
597
+ const typeId = TYPE_TO_ID[typeName].split('-')[0]; // 'adr', 'bdr', or 'edr'
598
+ const expectedHeader = `# ${scopeName}-${typeId}-research-${number}:`;
595
599
  const firstLine = firstNonEmptyLine(content);
596
600
  if (!firstLine.startsWith(expectedHeader)) {
597
601
  errors.push(`Research title must start with "${expectedHeader}": ${toDisplayPath(entryPath)}`);
@@ -646,7 +650,8 @@ function lintPlansDirectory(xdrsRoot, scopeName, typeName, subjectName, plansPat
646
650
  }
647
651
 
648
652
  const content = fs.readFileSync(entryPath, 'utf8');
649
- const expectedHeader = `# ${scopeName}-plan-${number}:`;
653
+ const typeId = TYPE_TO_ID[typeName].split('-')[0]; // 'adr', 'bdr', or 'edr'
654
+ const expectedHeader = `# ${scopeName}-${typeId}-plan-${number}:`;
650
655
  const firstLine = firstNonEmptyLine(content);
651
656
  if (!firstLine.startsWith(expectedHeader)) {
652
657
  errors.push(`Plan title must start with "${expectedHeader}": ${toDisplayPath(entryPath)}`);
package/lib/lint.test.js CHANGED
@@ -242,7 +242,7 @@ test('reports unknown frontmatter fields in SKILL.md files', () => {
242
242
  ]),
243
243
  '.xdrs/_local/adrs/principles/skills/001-check-links/SKILL.md': [
244
244
  '---',
245
- 'name: 001-check-links',
245
+ 'name: _local-adr-skill-001-check-links',
246
246
  'description: Test skill document',
247
247
  'unknown-field: some value',
248
248
  '---',
@@ -271,7 +271,7 @@ test('accepts all known frontmatter fields in SKILL.md files', () => {
271
271
  ]),
272
272
  '.xdrs/_local/adrs/principles/skills/001-check-links/SKILL.md': [
273
273
  '---',
274
- 'name: 001-check-links',
274
+ 'name: _local-adr-skill-001-check-links',
275
275
  'description: Test skill document',
276
276
  'license: MIT',
277
277
  'metadata:',
@@ -429,7 +429,7 @@ test('allows child directory relative non-asset links in XDRS element documents'
429
429
  });
430
430
  const skillDir = path.join(workspaceRoot, '.xdrs/_local/adrs/principles/skills/001-review');
431
431
  fs.mkdirSync(skillDir, { recursive: true });
432
- fs.writeFileSync(path.join(skillDir, 'SKILL.md'), '---\nname: 001-review\ndescription: test skill\n---\n# Skill');
432
+ fs.writeFileSync(path.join(skillDir, 'SKILL.md'), '---\nname: _local-adr-skill-001-review\ndescription: test skill\n---\n# Skill');
433
433
 
434
434
  const result = lintWorkspace(workspaceRoot);
435
435
 
@@ -626,7 +626,7 @@ test('reports orphan asset in articles .assets directory', () => {
626
626
  '- [001-guide](principles/articles/001-guide.md) - Guide article'
627
627
  ]),
628
628
  '.xdrs/_local/adrs/principles/articles/001-guide.md': [
629
- '# _local-article-001: Guide',
629
+ '# _local-adr-article-001: Guide',
630
630
  '',
631
631
  'See ![used](.assets/used.png).',
632
632
  ''
@@ -838,7 +838,7 @@ function xdrDocument(body) {
838
838
  function skillDocument(body) {
839
839
  return [
840
840
  '---',
841
- 'name: 001-check-links',
841
+ 'name: _local-adr-skill-001-check-links',
842
842
  'description: Test skill document',
843
843
  '---',
844
844
  '',
@@ -1392,7 +1392,7 @@ function slideDocument(body) {
1392
1392
 
1393
1393
  function articleDocument(body) {
1394
1394
  return [
1395
- '# _local-article-001: Guide',
1395
+ '# _local-adr-article-001: Guide',
1396
1396
  '',
1397
1397
  '## Overview',
1398
1398
  '',
@@ -1414,7 +1414,7 @@ function researchDocument(introBody, questionLine) {
1414
1414
  ? `${introBody}\n\n${questionLine}`
1415
1415
  : introBody;
1416
1416
  return [
1417
- '# _local-research-001: Study',
1417
+ '# _local-adr-research-001: Study',
1418
1418
  '',
1419
1419
  '## Abstract',
1420
1420
  '',
@@ -1449,7 +1449,7 @@ function researchDocument(introBody, questionLine) {
1449
1449
 
1450
1450
  function planDocument(body) {
1451
1451
  return [
1452
- '# _local-plan-001: My plan',
1452
+ '# _local-adr-plan-001: My plan',
1453
1453
  '',
1454
1454
  '## Executive Summary',
1455
1455
  '',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xdrs-core",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "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",
@@ -1,9 +0,0 @@
1
- # _core BDRs Index
2
-
3
- Business decisions about how the XDRS framework itself is governed and used. Owned by the platform team. Propose changes via pull request.
4
-
5
- ## Principles
6
-
7
- Foundational standards, principles, and guidelines.
8
-
9
- - [_core-bdr-policy-001](principles/001-xdr-decisions-and-skills-usage.md) - **Policy decisions and skills usage** — How agents and humans must use XDRS policies and skills, separating policy authority from execution guidance
@@ -1,52 +0,0 @@
1
- ---
2
- name: _core-bdr-policy-001-policy-decisions-and-skills-usage
3
- description: Defines how agents and humans must use Policy decisions and skills, separating policy authority from execution guidance across single-agent and multi-agent workflows.
4
- ---
5
-
6
- # _core-bdr-policy-001: Policy decisions and skills usage
7
-
8
- ## Context and Problem Statement
9
-
10
- Repositories using the XDRS framework contain both policies (BDRs, ADRs, EDRs) and skills. In multi-agent or multi-role workflows, each actor needs to know which artifact carries policy authority and which carries execution guidance.
11
-
12
- Question: How must agents and humans use Policy decisions and skills so policy, execution guidance, and role boundaries stay clear?
13
-
14
- ## Decision Outcome
15
-
16
- **BDRs define compliance policy; skills operationalize it**
17
-
18
- Policy decisions are the authoritative source of mandatory decisions. Skills are execution artifacts that operationalize those decisions and must never substitute them as policy authority.
19
-
20
- ### Details
21
-
22
- - Before treating any Policy as a current requirement, evaluate applicability in order: `valid-from`, `apply-to`, then the decision text.
23
- - The set of policies that an agent or human must comply with for a given operational context must be declared in BDRs.
24
- - If a policy set becomes too large or too mixed in purpose to review clearly in one record, it must be split into multiple focused BDRs.
25
- - Specific work instructions that operationalize BDR policies must be structured as skills when the procedure is detailed enough to benefit from a dedicated operational document.
26
- - Every skill that operationalizes or verifies BDR policies must link to the BDRs it implements or checks.
27
- - If a skill conflicts with an applicable Policy, the Policy prevails. The human or agent must stop relying on the conflicting skill behavior and report the inconsistency.
28
- - If an applicable BDR exists but no supporting skill exists yet, the human or agent may proceed by following the BDR directly when the decision is actionable, and must report the missing skill as an operational gap.
29
- - In multi-agent graphs or staged workflows, every participating agent must remain bounded by the same applicable BDR policies even when agents have different local objectives, prompts, or skills.
30
- - Each agent or human role involved in a workflow must make explicit which applicable BDRs govern its work and which skills it is following.
31
- - Different documents may be consumed by different actors. For example: one agent uses skills for data acquisition, another for plan execution, and a reviewer reads BDRs directly to validate outcomes.
32
-
33
- Allowed:
34
- - using multiple skills to operationalize one BDR in different phases of a workflow;
35
- - using one skill to operationalize multiple related BDRs when the skill links them clearly;
36
- - having human-only, agent-only, or mixed human-agent execution for the same skill.
37
-
38
- Disallowed:
39
- - treating a skill as policy authority by itself;
40
- - inventing mandatory policy rules only inside prompts, plans, or skills;
41
- - allowing one agent in a workflow to bypass an applicable BDR because another agent checked a different subset of rules.
42
-
43
- ## Considered Options
44
-
45
- - (REJECTED) **Keep policy and execution guidance mixed inside operational BDRs** — Makes decisions harder to reuse, review, and assign across humans and multiple agent roles.
46
- - (CHOSEN) **Separate mandatory policy in BDRs from executable guidance in skills** — Preserves a clear source of truth while allowing different humans and agents to execute specialized procedures.
47
-
48
- ## References
49
-
50
- - [_core-adr-001](../../adrs/principles/001-xdrs-core.md)
51
- - [_core-adr-002](../../adrs/principles/002-policy-standards.md)
52
- - [_core-adr-003](../../adrs/principles/003-skill-standards.md)