xdrs-core 0.55.0 → 0.56.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.
Files changed (26) hide show
  1. package/.xdrs/_core/adrs/index.md +2 -0
  2. package/.xdrs/_core/adrs/principles/001-xdrs-standards.md +1 -0
  3. package/.xdrs/_core/adrs/principles/002-policy-standards.md +2 -0
  4. package/.xdrs/_core/adrs/principles/003-skill-standards.md +6 -33
  5. package/.xdrs/_core/adrs/principles/004-article-standards.md +5 -0
  6. package/.xdrs/_core/adrs/principles/006-research-standards.md +5 -0
  7. package/.xdrs/_core/adrs/principles/007-initiative-standards.md +5 -0
  8. package/.xdrs/_core/adrs/principles/010-scope-governance.md +2 -2
  9. package/.xdrs/_core/adrs/principles/011-core-scope-type.md +1 -1
  10. package/.xdrs/_core/adrs/principles/019-compiled-scope-type.md +6 -1
  11. package/.xdrs/_core/adrs/principles/022-scope-activation.md +3 -1
  12. package/.xdrs/_core/adrs/principles/023-skill-runtime-standards.md +63 -0
  13. package/.xdrs/_core/adrs/principles/024-sync-date-frontmatter.md +76 -0
  14. package/.xdrs/_core/adrs/principles/skills/compile-scope/SKILL.md +10 -8
  15. package/.xdrs/_core/adrs/principles/skills/review/SKILL.md +5 -6
  16. package/.xdrs/_core/adrs/principles/skills/write-article/SKILL.md +3 -3
  17. package/.xdrs/_core/adrs/principles/skills/write-initiative/SKILL.md +3 -3
  18. package/.xdrs/_core/adrs/principles/skills/write-policy/SKILL.md +3 -3
  19. package/.xdrs/_core/adrs/principles/skills/write-research/SKILL.md +3 -3
  20. package/.xdrs/_core/adrs/principles/skills/write-skill/SKILL.md +9 -8
  21. package/.xdrs/_core/adrs/principles/skills/write-xdrs-doc/SKILL.md +4 -4
  22. package/.xdrs/_core/index.md +1 -1
  23. package/README.md +2 -1
  24. package/lib/lint.js +61 -16
  25. package/lib/lint.test.js +293 -4
  26. package/package.json +1 -1
@@ -28,6 +28,8 @@ Foundational standards, principles, and guidelines.
28
28
  - [_core-adr-policy-020](principles/020-media-and-asset-standards.md) - **Media and asset standards** — Canonical diagram format preference order and non-Markdown asset rules for all XDRS document types
29
29
  - [_core-adr-policy-021](principles/021-skill-bundling.md) - **Skill bundling** — Optional per-skill Makefile mechanism to stage a self-contained dist/ output for standalone distribution
30
30
  - [_core-adr-policy-022](principles/022-scope-activation.md) - **Scope activation** — How installed scopes are listed in the root index, activated, narrowed, or disabled, and when they become read-only
31
+ - [_core-adr-policy-023](principles/023-skill-runtime-standards.md) - **Skill runtime standards** — How skills place work files under .tmp, halt, ask for clarification, and cap generated content
32
+ - [_core-adr-policy-024](principles/024-sync-date-frontmatter.md) - **Sync date frontmatter** — Optional `sync-date` field recording when an element was last verified or reconciled with other entities
31
33
 
32
34
  ## Skills
33
35
 
@@ -91,6 +91,7 @@ ADR and EDR share the same six technical subject names (see [`_core-adr-policy-0
91
91
  - `apply-to` (required): Declares in which contexts — teams, systems, codebases, or environments — the decisions in this scope are relevant. Max 30 words.
92
92
  - `valid-from` (required): ISO date (YYYY-MM-DD) from which this scope became active.
93
93
  - `metadata` (optional): Arbitrary key-value map for additional scope metadata.
94
+ - `sync-date` (optional, opt-in): see `_core-adr-policy-024`.
94
95
  - `follows` (optional): Core scope names whose Policies apply as mandatory governance conventions to this scope, beyond `_core`. Last-listed takes precedence on conflicts (e.g., `follows: myarea-core, shared-standards`). A missing scope MUST be fixed in local scopes and makes external scopes READ-ONLY (see `_core-adr-policy-022.06-read-only-dependencies`).
95
96
  - `extends` (optional): Scope names whose **policy documents** (decision records only — not skills, articles, research, or initiatives) are inherited by this scope as if they were authored here. Any scope type except `_local` and `_core` may be referenced. Last-listed extended scope takes precedence on conflicts; the extending scope's own policies always take highest precedence. Depth-first transitive resolution applies: if A extends [B, C] and B extends [D], the effective precedence order is D < B < C < A. `extends:` and `follows:` MUST reference disjoint scope sets. A missing scope MUST be fixed in local scopes and makes external scopes READ-ONLY (see `_core-adr-policy-022.06-read-only-dependencies`). When an extending scope's policy overrides an inherited policy on the same topic, a `## Conflicts` section MUST document the override. Extended scopes are still linked in the root index; tag them `extends-only` to apply them only via `extends:` (see `_core-adr-policy-022.01-root-index-completeness`). `extends:` takes precedence over root index ordering for conflict resolution between the scopes involved; root index ordering is the fallback for all other scope pairs. See `_core-adr-policy-010` Section D (rules 27–35) and Section E (rule 36) for full normative rules.
96
97
  - `extends-only` (optional): See `_core-adr-policy-022.07-extends-only-field`.
@@ -31,6 +31,7 @@ Policy documents are the authoritative source of truth for their scope, type, an
31
31
  | `valid-from` | Yes | ISO date (`YYYY-MM-DD`) indicating from when this decision MUST be enforced. Before this date it SHOULD be used everywhere possible, but compliance is not enforced during reviews until after this date. Defaults to the date the Policy was created. When updating an existing Policy whose `valid-from` date has already passed, preserve the original date—it MUST NOT be updated to the current date. The historical date shows when the policy was originally enabled and is important for understanding policy evolution. |
32
32
  | `license` | No | SPDX license expression (e.g. `MIT`, `Apache-2.0`, `CC-BY-4.0`). Indicates the license under which the document content is shared. If omitted, the license is governed by the repository or package defaults. |
33
33
  | `metadata` | No | Arbitrary key-value map for additional properties not defined by this spec. |
34
+ | `sync-date` | No | ISO date (`YYYY-MM-DD`) of the last verification or reconciliation of the Policy with other entities. Opt-in, never added by default, and MUST NOT appear in Policies of `compiled` scopes. See [`_core-adr-policy-024`](024-sync-date-frontmatter.md). |
34
35
  | `freeze-reference` | No | Boolean (`true` or `false`, defaults to `false`). When `true`, the policy MUST NOT be renamed, renumbered, or moved because external parties reference it by its current identity (path, number, name, heading). Reference-identity issues are intentionally exempt. See rule [`01-freeze-reference-exemption`](#01-freeze-reference-exemption). |
35
36
 
36
37
  - Minimal example:
@@ -116,6 +117,7 @@ description: [What this decision is about and when to use it]
116
117
  apply-to: [Required. Contexts this decision applies to, <40 words. Use "All scopes" when broadly applicable.]
117
118
  valid-from: [Required. ISO date YYYY-MM-DD from when enforcement begins. Defaults to creation date.]
118
119
  license: [Optional. SPDX license expression]
120
+ sync-date: [Optional, opt-in. ISO date of the last verification with other entities; see _core-adr-policy-024]
119
121
  metadata:
120
122
  [optional-key]: [optional-value]
121
123
  ---
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: _core-adr-policy-003-skill-standards
3
- description: Defines skill package standards including structure, SKILL.md format, co-location with XDRS packages, and default placement of runtime work files. Use when creating or reviewing skills.
3
+ description: Defines skill package standards including structure, SKILL.md format, script standards, and co-location with XDRS packages. Use when creating or reviewing skills.
4
4
  apply-to: All skill packages
5
5
  valid-from: 2025-01-01
6
6
  ---
@@ -104,6 +104,7 @@ metadata: # required
104
104
  author: <team-or-person> # required
105
105
  version: "1.0.0" # required: full semantic versioning
106
106
  updated: YYYY-MM-DD # required: date of the last material content change
107
+ sync-date: YYYY-MM-DD # optional, opt-in: date of the last verification with other entities (see _core-adr-policy-024)
107
108
  ---
108
109
 
109
110
  ## Overview
@@ -163,6 +164,7 @@ Rules:
163
164
  - The `name` field MUST match the folder name exactly (e.g., `code-review`). This keeps skill identifiers simple and aligned with the filesystem hierarchy.
164
165
  - The directory name and the `name:` field MUST contain only lowercase alphanumeric characters and hyphens (e.g., `code-review`, `2fa-setup`).
165
166
  - `metadata` is REQUIRED. `metadata.version` MUST use full semantic versioning (`MAJOR.MINOR.PATCH`, e.g. `1.0.0`), consistent with [`_core-adr-policy-005`](005-semantic-versioning-for-xdrs-packages.md); `metadata.author` MUST be non-empty; `metadata.updated` MUST be an ISO `YYYY-MM-DD` date, refreshed whenever the skill's content materially changes.
167
+ - `metadata.sync-date` is OPTIONAL and follows [`_core-adr-policy-024`](024-sync-date-frontmatter.md); it is distinct from `metadata.updated`, which records content changes only.
166
168
  - `description` SHOULD stay near 250 characters when the activation trigger can be stated that tightly, even though the hard cap remains 1024 characters — it is loaded into context on every activation scan.
167
169
  - `## Overview` SHOULD state the task objective, expected outcome, and relevant prerequisites or tools when they matter, and MUST contain nested subsections, in order, for `### Inputs`, `### Outputs`, `### Halt Conditions`, then the optional `### User Interaction` and `### Runtime Requirements`.
168
170
  - `### Inputs` MUST contain `#### Required` (the bare minimum needed to invoke the skill) then `#### Optional` (helpful extra context), in that order.
@@ -189,39 +191,9 @@ When a skill includes `scripts/`:
189
191
  - SHOULD support both human-readable and machine-readable (JSON) output when producing analysis or report output.
190
192
  - SHOULD stay single-purpose.
191
193
 
192
- **Work files**
194
+ **Runtime behavior**
193
195
 
194
- Files a skill creates while running MUST follow this default unless the skill or user sets another location:
195
- - `.tmp/[skill-name]-[YYYYMMDDHHMMSS]/` at the workspace root (local start time), created lazily, suffixed `-2`, `-3`... if taken, holds final outputs.
196
- - Its `.work/` holds intermediate files (caches, staging); `.work/scripts/` holds ad-hoc scripts generated at runtime.
197
- - Keep it after the run. Workspaces SHOULD gitignore `.tmp/`; skills MUST NOT edit `.gitignore` for it.
198
- - MUST NOT write secrets there; use environment or harness, or the OS temp dir (deleted after use) when a file is unavoidable.
199
- - On a read-only workspace, use the same layout under the OS temp dir.
200
- - When the dir was created, even on halt or failure, end the final chat message with `results-path: [dir]/`.
201
- - Skills that create files MUST restate the parts of this layout they use in their own `## Instructions`, to run standalone.
202
-
203
- **Quality gate**
204
-
205
- Before creating a skill, confirm it removes real ambiguity or repetitive effort compared to not having it. Skills that only restate a Policy, or that handle a one-off task unlikely to recur, SHOULD NOT be created.
206
-
207
- **Clarify First**
208
-
209
- Generative skills — those producing a deliverable document (Policy, Skill, Article, Research, Initiative, Presentation) — SHOULD list the 2-4 inputs they need confirmed (e.g., topic, scope, audience) and ask the user when any is unknown, stopping once those inputs are confirmed rather than over-interrogating. Skills that route, review, or report instead of authoring a new deliverable do not need this pattern.
210
-
211
- **Halt behavior**
212
-
213
- 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.
214
-
215
- **Generated content caps**
216
-
217
- 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).
218
- - 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.
219
- - Caps MUST be in words; other limits MAY coexist but never replace them.
220
- - 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.
221
- - A blanket statement MAY cover a content class (e.g., all intermediate messages); a more specific cap overrides it.
222
- - Write the number inline; a Policy reference is optional.
223
- - Content whose size cannot be bounded MUST be marked `(uncapped: <reason>)`, the reason explaining why.
224
- - 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.
196
+ How a skill behaves while running (work files, quality gate, clarifying questions, halting, generated content caps) is defined in [`_core-adr-policy-023`](023-skill-runtime-standards.md).
225
197
 
226
198
  **Validation**
227
199
 
@@ -238,6 +210,7 @@ skills-ref validate .xdrs/[scope]/[type]/[subject]/skills/[skill-name]
238
210
  - [skills-ref validation library](https://github.com/agentskills/agentskills/tree/main/skills-ref)
239
211
  - [_core-adr-policy-001 - XDRS standards](001-xdrs-standards.md)
240
212
  - [_core-adr-policy-004 - Article standards](004-article-standards.md)
213
+ - [_core-adr-policy-023 - Skill runtime standards](023-skill-runtime-standards.md)
241
214
  - [_core-adr-policy-005 - Semantic versioning for XDRS packages](005-semantic-versioning-for-xdrs-packages.md)
242
215
  - [_core-adr-policy-006 - Research standards](006-research-standards.md)
243
216
  - [_core-adr-policy-021 - Skill bundling](021-skill-bundling.md)
@@ -42,6 +42,7 @@ Articles are Markdown documents placed inside a subject folder alongside policie
42
42
  - For diagram format preferences and non-Markdown asset rules, see [`_core-adr-policy-020`](020-media-and-asset-standards.md). Articles SHOULD use diagrams to illustrate concepts, overviews, and relationships; draw.io SHOULD be used for conceptual and relationship diagrams (e.g., component maps, context views, architecture overviews) when Mermaid cannot adequately express them.
43
43
  - File names MUST be lowercase.
44
44
  - MUST NOT use emojis in article content.
45
+ - An article MAY start with a frontmatter block containing only `sync-date`, per [`_core-adr-policy-024`](024-sync-date-frontmatter.md); the title line follows the block.
45
46
 
46
47
  **Folder layout**
47
48
 
@@ -71,6 +72,10 @@ Examples:
71
72
  All articles MUST follow this template:
72
73
 
73
74
  ```markdown
75
+ ---
76
+ sync-date: [Optional, opt-in. ISO date of the last verification with other entities; see _core-adr-policy-024. When absent, omit the whole frontmatter block.]
77
+ ---
78
+
74
79
  # [scope]-[type]-article-[number]: [Short Title]
75
80
 
76
81
  <!-- If this article is part of a series, add the line below (omit otherwise): -->
@@ -46,6 +46,7 @@ Research documents are Markdown files placed inside a subject folder alongside p
46
46
  - `## Conclusion` MUST summarize the main findings, practical takeaway, applicability boundaries, and important open questions. It MUST stay under 400 words.
47
47
  - `## References` MUST list all cited literature, websites, tutorials, documentation, discussions, or related artifacts.
48
48
  - In general, research SHOULD roughly follow the proportion `Introduction : Methods : Results : Discussion ≈ 3 : 5 : 6 : 4`.
49
+ - A research document MAY start with a frontmatter block containing only `sync-date`, per [`_core-adr-policy-024`](024-sync-date-frontmatter.md); the title line follows the block.
49
50
  - Be strict about the goal of each section. Avoid duplicating the same material across sections and prefer clarity over rhetorical flourishes.
50
51
  - Research documents SHOULD stay under 5000 words total. They MAY exceed that only when the `## Introduction` explicitly states that the study will be lengthy because a very detailed analysis is required.
51
52
  - Research documents SHOULD link in `## References` to the Policies, skills, articles, discussions, and external references relevant to the subject or that later cite the work.
@@ -83,6 +84,10 @@ Examples:
83
84
  All research documents MUST follow this template:
84
85
 
85
86
  ```markdown
87
+ ---
88
+ sync-date: [Optional, opt-in. ISO date of the last verification with other entities; see _core-adr-policy-024. When absent, omit the whole frontmatter block.]
89
+ ---
90
+
86
91
  # [scope]-[type]-research-[number]: [Short Title]
87
92
 
88
93
  ## Abstract
@@ -34,6 +34,7 @@ Initiatives are Markdown documents placed inside a subject folder alongside poli
34
34
  - Initiatives MUST include an `Expected end date:` field in ISO format (YYYY-MM-DD) inside the `## Proposed Solution` section.
35
35
  - File names MUST be lowercase.
36
36
  - MUST NOT use emojis in initiative content.
37
+ - An initiative MAY start with a frontmatter block containing only `sync-date`, per [`_core-adr-policy-024`](024-sync-date-frontmatter.md); the title line follows the block.
37
38
  - For diagram format preferences and non-Markdown asset rules, see [`_core-adr-policy-020`](020-media-and-asset-standards.md).
38
39
 
39
40
  **Folder layout**
@@ -63,6 +64,10 @@ Examples:
63
64
  All initiatives MUST follow this template:
64
65
 
65
66
  ```markdown
67
+ ---
68
+ sync-date: [Optional, opt-in. ISO date of the last verification with other entities; see _core-adr-policy-024. When absent, omit the whole frontmatter block.]
69
+ ---
70
+
66
71
  # [scope]-[type]-initiative-[number]: [Short Title]
67
72
 
68
73
  ## Executive Summary
@@ -83,7 +83,7 @@ A scope-type definition policy MAY declare a parent scope type by including a ru
83
83
 
84
84
  A `scope-type` value in a scope `index.md` is valid if and only if a policy file whose name ends with `{scope-type}-scope-type` exists in the `principles` subject of any `core`-type scope in the workspace. When `scope-type` is an array, this applies to every element.
85
85
 
86
- When a scope declares a `scope-type` but any corresponding `{scope-type}-scope-type.md` policy is absent from the workspace or defined only in a `disabled` scope, the scope MUST be treated as READ-ONLY (see `_core-adr-policy-022.06-read-only-dependencies`). Missing or disabled-only types MUST be fixed in local scopes.
86
+ When a scope declares a `scope-type` but any corresponding `{scope-type}-scope-type.md` policy is absent from the workspace or defined only in a `disabled` scope, the scope MUST be treated as READ-ONLY (see `_core-adr-policy-022.06-read-only-dependencies`). Missing or disabled-only types MUST be fixed in local scopes, unless the scope is itself disabled.
87
87
 
88
88
  #### 11-def-scope-type-must-be-structured
89
89
 
@@ -213,7 +213,7 @@ A scope `extends:` declaration MUST NOT reference the declaring scope itself. To
213
213
 
214
214
  #### 32-extends-mandatory-presence
215
215
 
216
- Every scope listed in a scope's `extends:` field MUST exist in the workspace with an accessible `index.md`. If any referenced scope is absent or its `index.md` cannot be read, the extending scope MUST be fixed when local and is READ-ONLY when external (`_core-adr-policy-022.06-read-only-dependencies`).
216
+ Every scope listed in a scope's `extends:` field MUST exist in the workspace with an accessible `index.md`. If any referenced scope is absent or its `index.md` cannot be read, the extending scope MUST be fixed when local and is READ-ONLY when external, unless it is itself disabled (`_core-adr-policy-022.06-read-only-dependencies`).
217
217
 
218
218
  #### 33-extends-content-precedence
219
219
 
@@ -65,7 +65,7 @@ A `core`-type scope MAY be distributed to consumers alongside the companion cons
65
65
 
66
66
  #### 08-unavailable-core-read-only
67
67
 
68
- A `-core` scope referenced via `follows:` in a companion scope's `index.md` may not be present in the workspace of a consumer of that companion scope. When the referenced `-core` scope is absent or tagged `disabled` in the root index, the companion scope MUST be treated as READ-ONLY (see `_core-adr-policy-022.06-read-only-dependencies`): content in it MUST NOT be added, changed, or removed. The scope lacks the meta governance that defines how its content MUST be authored, and modifications without those standards would produce non-compliant content. Tools and agents MUST NOT propose or apply changes to a READ-ONLY scope and MUST surface the read-only status to the user when the scope is accessed.
68
+ A `-core` scope referenced via `follows:` in a companion scope's `index.md` may not be present in the workspace of a consumer of that companion scope. When the referenced `-core` scope is absent or tagged `disabled` in the root index, the companion scope MUST be treated as READ-ONLY, unless the companion scope is itself tagged `disabled` (see `_core-adr-policy-022.06-read-only-dependencies`): content in it MUST NOT be added, changed, or removed. The scope lacks the meta governance that defines how its content MUST be authored, and modifications without those standards would produce non-compliant content. Tools and agents MUST NOT propose or apply changes to a READ-ONLY scope and MUST surface the read-only status to the user when the scope is accessed.
69
69
 
70
70
  #### 09-distribution-advisable
71
71
 
@@ -114,7 +114,7 @@ All access control implementations MUST enforce the principle of least privilege
114
114
 
115
115
  Unless a meta-policy declares `Source storage: temporary`, fetched and selected source content (rule 13) MUST be persisted under `[type]/principles/.assets/sources/[name]/`, sibling to the governing meta-policy, where `[name]` is the source's slug from its `## Sources` bullet. This location is shared across every subject compiled under that meta-policy's type folder; it is not duplicated per subject. Persisted source content MUST be committed to version control and MUST NOT be gitignored.
116
116
 
117
- When `Source storage: temporary` is declared, bulk fetched content MUST instead be written only to the compilation execution dir's `.work/staging/` (see Work files in `_core-adr-policy-003`) and MUST NOT be persisted under `.assets/sources/`.
117
+ When `Source storage: temporary` is declared, bulk fetched content MUST instead be written only to `.tmp/compile-scope/.work/staging/[name]/` (see Work files in `_core-adr-policy-023`) and MUST NOT be persisted under `.assets/sources/`.
118
118
 
119
119
  Regardless of storage mode, a tracking file `.assets/sources/[name]/source.md` MUST always be created and kept up to date, with the following format:
120
120
 
@@ -141,9 +141,14 @@ An exception MUST be documented in a dedicated `[type]/principles/NNN-direct-sou
141
141
 
142
142
  This rule governs reasoning and usage, not the document-link graph. Independently of this rule, and regardless of whether a `NNN-direct-source-usage.md` policy exists, no document MAY hyperlink directly into `.assets/sources/`; that restriction is enforced mechanically and addresses a separate, structural concern.
143
143
 
144
+ #### 15-scope-sync-date
145
+
146
+ Compilation tools and agents MUST maintain `sync-date` in the scope `index.md` as defined in [`_core-adr-policy-024.07-compiled-scopes`](024-sync-date-frontmatter.md), setting it only after lint and review pass for the cycle.
147
+
144
148
  ## References
145
149
 
146
150
  - [_core-adr-policy-008 - Policy structured standards](008-policy-structured-standards.md) — numbered rule format required for all policies in compiled scopes
147
151
  - [_core-adr-policy-010 - Scope governance](010-scope-governance.md) — scope-type definition convention and local meta-policy mechanism
148
152
  - [_core-adr-policy-002 - Policy standards](002-policy-standards.md) — policy document format and frontmatter requirements
149
153
  - [_core-adr-policy-001 - XDRS standards](001-xdrs-standards.md) — scope structure and `scope-type` field definition
154
+ - [_core-adr-policy-024 - Sync date frontmatter](024-sync-date-frontmatter.md) — `sync-date` field set on the scope index after each completed compilation
@@ -39,12 +39,14 @@ Policies of a scope tagged `extends-only` MUST be applied only through the `exte
39
39
 
40
40
  #### 05-disabled
41
41
 
42
- All content of a scope tagged `disabled` MUST be ignored by agents: its policies, skills, articles, research, and initiatives are not applied, and nothing is inherited from it through `extends:` or `follows:`. The scope is still validated and MAY be edited; a disabled local scope follows rule 06 like any other local scope. Skills of a disabled scope that are symlinked into `.agents/skills` (see `_core-adr-policy-018`) stay loaded by tools and MUST be removed by the consumer.
42
+ All content of a scope tagged `disabled` MUST be ignored by agents: its policies, skills, articles, research, and initiatives are not applied, and nothing is inherited from it through `extends:` or `follows:`. The scope is still validated and MAY be edited; a disabled scope is exempt from the dependency causes of rule 06. Skills of a disabled scope that are symlinked into `.agents/skills` (see `_core-adr-policy-018`) stay loaded by tools and MUST be removed by the consumer.
43
43
 
44
44
  #### 06-read-only-dependencies
45
45
 
46
46
  A scope MUST be treated as READ-ONLY when a scope it follows or extends, or the scope that defines one of its scope types (including parent types), is missing, disabled, or invalid, or when it is an external scope and its own `index.md` is invalid. Content in a READ-ONLY scope MUST NOT be added, changed, or removed.
47
47
 
48
+ A scope tagged `disabled` is treated as not present, so it is exempt from every dependency cause above, whether the scope is local or external: it MAY follow or extend disabled, missing, or invalid scopes, or use a scope type defined only in disabled scopes. An enabled scope keeps all causes: it cannot extend or follow a disabled scope because it needs access to that scope. The exemption does not propagate along `extends:` chains.
49
+
48
50
  - **Local scope** (not tracked in `.filedist.lock`, including `_local` and disabled scopes): a read-only local scope is frozen and cannot be maintained, so each cause is invalid and MUST be fixed.
49
51
  - **External scope** (tracked in `.filedist.lock`): the scope is READ-ONLY; agents MUST tell the user when they skip a change because of it, naming the cause and fix.
50
52
 
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: _core-adr-policy-023-skill-runtime-standards
3
+ description: Defines how skills behave at runtime - where they place work files, when to halt or ask the user, quality gate before creating a skill, and word caps for generated content. Use when authoring or reviewing skill instructions.
4
+ apply-to: All skill packages
5
+ valid-from: 2026-10-08
6
+ ---
7
+
8
+ # _core-adr-policy-023: Skill runtime standards
9
+
10
+ ## Context and Problem Statement
11
+
12
+ Skills run for humans and AI agents in many workspaces. Without shared runtime rules, each skill invents its own place for generated files, its own halting behavior, and its own output sizes, which litters workspaces, risks leaking secrets, and makes skills unpredictable.
13
+
14
+ How should a skill behave while running, so that its files, questions, stops and generated content are consistent across skills?
15
+
16
+ ## Decision Outcome
17
+
18
+ **A shared runtime contract for every skill, separate from the skill package format**
19
+
20
+ Package structure, `SKILL.md` format, scripts and validation are defined in [`_core-adr-policy-003`](003-skill-standards.md). This Policy defines only what a skill does while it runs.
21
+
22
+ ### Details
23
+
24
+ **Work files**
25
+
26
+ Files a skill creates while running MUST follow this layout unless the skill or the user sets another location:
27
+ - Each skill owns `.tmp/[skill-name]/` at the workspace root, created lazily. Workspaces SHOULD gitignore `.tmp/`; skills MUST NOT edit `.gitignore` for it.
28
+ - Skills MUST NOT store files directly in `.tmp/[skill-name]/`. Final outputs go in one run folder per run, `.tmp/[skill-name]/[run-name]/`.
29
+ - `[run-name]` is a short name describing the run (e.g. `report-anthony`), using only lowercase letters, digits and hyphens. When the run has no natural name, use the local start time `[YYYYMMDDHHMMSS]`. When the name is taken, append `-2`, `-3`...
30
+ - `.tmp/[skill-name]/.work/` holds reusable intermediate files such as caches and staging. It is safe to delete at any time. Skills MUST re-check freshness before reusing its content and MUST namespace content per input (e.g. `.work/staging/[input-name]/`). Clearing and refetching an input is not safe while another run uses the same input.
31
+ - Skills that produce no final outputs use only `.work/`, with no run folder.
32
+ - Temporary scripts and other throwaway files MUST go in the OS temp dir and be deleted when the run ends. Secrets MUST NOT be written anywhere else and MUST always be deleted.
33
+ - A skill that uses another skill's output MUST receive the source run folder path as input, read it in place and never change data there. When changes are needed, it copies the files into its own run folder.
34
+ - On a read-only workspace, use the same layout under the OS temp dir.
35
+ - Keep run folders after the run. When a run folder was created, even on halt or failure, end the final chat message with `results-path: [dir]/`.
36
+ - Skills that create files MUST restate the parts of this layout they use in their own `## Instructions`, to run standalone.
37
+
38
+ **Quality gate**
39
+
40
+ Before creating a skill, confirm it removes real ambiguity or repetitive effort compared to not having it. Skills that only restate a Policy, or that handle a one-off task unlikely to recur, SHOULD NOT be created.
41
+
42
+ **Clarify First**
43
+
44
+ Generative skills — those producing a deliverable document (Policy, Skill, Article, Research, Initiative, Presentation) — SHOULD list the 2-4 inputs they need confirmed (e.g., topic, scope, audience) and ask the user when any is unknown, stopping once those inputs are confirmed rather than over-interrogating. Skills that route, review, or report instead of authoring a new deliverable do not need this pattern.
45
+
46
+ **Halt behavior**
47
+
48
+ 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.
49
+
50
+ **Generated content caps**
51
+
52
+ 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).
53
+ - 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.
54
+ - Caps MUST be in words; other limits MAY coexist but never replace them.
55
+ - 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.
56
+ - A blanket statement MAY cover a content class (e.g., all intermediate messages); a more specific cap overrides it.
57
+ - Write the number inline; a Policy reference is optional.
58
+ - Content whose size cannot be bounded MUST be marked `(uncapped: <reason>)`, the reason explaining why.
59
+ - 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.
60
+
61
+ ## References
62
+
63
+ - [_core-adr-policy-003 - Skill standards](003-skill-standards.md)
@@ -0,0 +1,76 @@
1
+ ---
2
+ name: _core-adr-policy-024-sync-date-frontmatter
3
+ description: Defines the optional `sync-date` frontmatter field that records when an XDRS element was last verified, checked, reconciled or aligned with other entities, internal or external. Use when a document depends on information that degrades over time, when adding or updating `sync-date`, or when a mechanism needs a refresh hint.
4
+ apply-to: All XDRS elements (Policies, skills, articles, research, initiatives, scope indexes) and every tool, skill or agent that syncs them
5
+ valid-from: 2026-11-04
6
+ ---
7
+
8
+ # _core-adr-policy-024: Sync date frontmatter
9
+
10
+ ## Context and Problem Statement
11
+
12
+ Some XDRS elements hold content whose quality degrades over time unless it is periodically checked against other entities: other scopes, external sources, APIs, URLs, scripts or people. Version control records when a file changed, but not when its content was last verified, nor that a verification ended with a decision to change nothing.
13
+
14
+ How should an element declare when it was last checked or reconciled, so that humans, tools and agents can decide when a refresh is worth doing?
15
+
16
+ ## Decision Outcome
17
+
18
+ **An optional, opt-in `sync-date` frontmatter field holding the date of the last sync**
19
+
20
+ The field is a refresh hint. It is not a status, not a change date, and carries no enforcement semantics.
21
+
22
+ ### Details
23
+
24
+ #### 01-sync-date-meaning
25
+
26
+ `sync-date` MUST contain the ISO date (`YYYY-MM-DD`) on which the element content was last verified, checked, reconciled or aligned with one or more other entities. The other entity MAY be internal (another scope, element or review) or external (an API, URL, repository, script, skill or person). A sync that ended with no change, or with a deliberate decision to change nothing, still counts and MUST update the date.
27
+
28
+ #### 02-not-a-change-date
29
+
30
+ `sync-date` MUST NOT be used as a last-modified date or to record content changes, which are already available from version control. It MUST NOT be updated when the content was edited without any verification against another entity.
31
+
32
+ #### 03-opt-in
33
+
34
+ `sync-date` is OPTIONAL and MUST NOT be added by default. It MUST be added only when a compiled scope requires it (rule 07), or when the user or a skill explicitly requests it for a specific sync purpose.
35
+
36
+ #### 04-purpose-check
37
+
38
+ Before adding `sync-date`, the author or agent MUST identify the concrete sync process that will use it (for example a periodic review, a source re-sync, or a cross-scope reconciliation). When no such process exists, the field MUST NOT be added. An existing `sync-date` that no process uses SHOULD be removed.
39
+
40
+ #### 05-placement-and-format
41
+
42
+ The value MUST be an unquoted ISO date. Placement per element:
43
+
44
+ | Element | Placement |
45
+ |---|---|
46
+ | Policy, scope `index.md` | Top-level frontmatter field `sync-date` |
47
+ | Article, research, initiative | Top-level `sync-date` in an optional frontmatter block placed before the title line; the block MUST contain no other field |
48
+ | Skill (`SKILL.md`) | Nested field `metadata.sync-date`, keeping the top-level frontmatter compatible with the agentskills spec |
49
+
50
+ Slide presentations MUST NOT carry `sync-date`.
51
+
52
+ Example:
53
+
54
+ ```yaml
55
+ ---
56
+ sync-date: 2026-11-04
57
+ ---
58
+ ```
59
+
60
+ #### 06-who-updates
61
+
62
+ The date MUST be updated by whoever performs the sync (human, tool or agent), only after the sync completed. A failed or partial sync MUST NOT update it.
63
+
64
+ #### 07-compiled-scopes
65
+
66
+ In a scope declaring `scope-type: compiled`, `sync-date` MUST be present only in the scope `index.md`, never in individual Policies. Compilation tools and agents MUST set it to the current date at the end of every completed compilation or re-sync cycle, including cycles where no source content changed and no Policy was modified. It MUST NOT be updated when the cycle was skipped because every source was still within its re-sync period. Placing it only in the scope index avoids touching every Policy when nothing changed.
67
+
68
+ #### 08-consumers
69
+
70
+ Mechanisms that refresh or check content (compilation, reviews, scheduled syncs, scripts) SHOULD read `sync-date` as a hint to prioritize or skip refreshes, and MUST NOT treat a missing `sync-date` as an error. How old a date must be before a refresh is worthwhile is decided by each mechanism.
71
+
72
+ ## References
73
+
74
+ - [_core-adr-policy-002 - Policy standards](002-policy-standards.md) - Policy frontmatter fields
75
+ - [_core-adr-policy-003 - Skill standards](003-skill-standards.md) - SKILL.md frontmatter and metadata
76
+ - [_core-adr-policy-019 - Compiled scope type](019-compiled-scope-type.md) - Compilation and re-sync process
@@ -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.2.0"
8
- updated: 2026-09-30
7
+ version: "1.4.0"
8
+ updated: 2026-11-04
9
9
  ---
10
10
 
11
11
  ## Overview
@@ -31,6 +31,7 @@ Performs a full compilation cycle for any scope declaring `scope-type: compiled`
31
31
  #### Changes
32
32
 
33
33
  - Policy files created, updated, or removed.
34
+ - Scope `index.md` `sync-date` refreshed.
34
35
 
35
36
  ### Halt Conditions
36
37
 
@@ -76,11 +77,11 @@ Keep every question and intermediate message <100 words and the final summary <1
76
77
 
77
78
  ### Phase 2: Fetch Sources
78
79
 
79
- 1. Create the execution dir `.tmp/compile-scope-[YYYYMMDDHHMMSS]/` at the workspace root (local start time; append `-2`, `-3`... if it exists) with a `.work/staging/` folder. Put any other intermediate file in `.work/` and any ad-hoc script you generate in `.work/scripts/`; never write secrets there (pass them via environment, or use the OS temp dir and delete the file after use). If the workspace is read-only, use the same layout under the OS temp dir. Keep the dir after the run.
80
+ 1. Use `.tmp/compile-scope/.work/staging/[name]/` at the workspace root as the staging folder of each source (`[name]` is the source slug); this skill has no run folder. Delete that folder before fetching into it, so no stale content is reused. Never write secrets or ad-hoc scripts there; use the OS temp dir for them and delete them when the run ends. If the workspace is read-only, use the same layout under the OS temp dir. Keep staging after the run.
80
81
  2. For each due source (from Phase 1), fetch in the following preference order (first available wins; if all equivalent URLs are listed, try each in order):
81
- - **Git URL** (`- [git] ...`): run `git clone --depth=1 [url] .tmp/compile-scope-[ts]/.work/staging/[name]/`. If `git` is not available or the clone fails, fall back to the next option.
82
- - **Local folder** (`- [local] ...`): copy the folder contents to `.tmp/compile-scope-[ts]/.work/staging/[name]/`.
83
- - **Web URL** (`- [web] ...`): before scraping, search the workspace for a skill specialized in fetching content from this URL or website domain (e.g., a skill whose description or name references the domain, the product, or the content type). Some websites require special handling — SSO, client certificates, shadow DOM, iframes, CAPTCHAs, or other quirks. If a specialized fetch skill is found, follow it to retrieve the content. If no specialized skill exists, fall back to `npx --package=@playwright/cli@latest playwright-cli`; run with `--help` to confirm available commands and save output as `.html` file(s) in `.tmp/compile-scope-[ts]/.work/staging/[name]/`.
82
+ - **Git URL** (`- [git] ...`): run `git clone --depth=1 [url] .tmp/compile-scope/.work/staging/[name]/`. If `git` is not available or the clone fails, fall back to the next option.
83
+ - **Local folder** (`- [local] ...`): copy the folder contents to `.tmp/compile-scope/.work/staging/[name]/`.
84
+ - **Web URL** (`- [web] ...`): before scraping, search the workspace for a skill specialized in fetching content from this URL or website domain (e.g., a skill whose description or name references the domain, the product, or the content type). Some websites require special handling — SSO, client certificates, shadow DOM, iframes, CAPTCHAs, or other quirks. If a specialized fetch skill is found, follow it to retrieve the content. If no specialized skill exists, fall back to `npx --package=@playwright/cli@latest playwright-cli`; run with `--help` to confirm available commands and save output as `.html` file(s) in `.tmp/compile-scope/.work/staging/[name]/`.
84
85
  3. If any source cannot be fetched via any listed option, report the failure and continue with remaining sources. Do not abort the entire compilation for a single failed source.
85
86
  4. Immediately after a source is fetched successfully, create `.assets/sources/[name]/source.md` if absent and update its `last-fetch-timestamp` to the current time — this happens regardless of the `Source storage` setting, since the tracking file always persists per `_core-adr-policy-019` rule 12.
86
87
  5. Convert non-markdown documents found in the fetched source directories. Use only the format converters actually needed:
@@ -107,7 +108,7 @@ Keep every question and intermediate message <100 words and the final summary <1
107
108
  For each TODO item marked CREATE or UPDATE, in sequence:
108
109
 
109
110
  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.
111
+ - 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. Do NOT add `sync-date` to compiled policies; it lives only in the scope `index.md` (`_core-adr-policy-024.07-compiled-scopes`).
111
112
  - Use structured numbered rule blocks for all claims (per `_core-adr-policy-008`).
112
113
  - Transcribe source content faithfully. Do NOT invent, infer beyond what the source states, or fill gaps. Preserve ambiguities as-is.
113
114
 
@@ -169,6 +170,7 @@ After writing each policy:
169
170
  3. If storage is `temporary`: do not copy any bulk staged content into `.assets/sources/[name]/`; only `source.md` lives there.
170
171
  4. For every source processed in this run, update `.assets/sources/[name]/source.md`'s `last-compilation-timestamp` to the current time — this step only runs after Phase 6 (Lint) and Phase 7 (Review) both pass for the policies depending on that source.
171
172
  5. If a source's `Source storage` setting changed since its last run, reconcile per `_core-adr-policy-019` rule 12: switching to `temporary` removes previously persisted bulk content (keeping `source.md`); switching away from `temporary` begins persisting bulk content from this run onward.
173
+ 6. After lint and review pass for the cycle, set `sync-date` in the scope `index.md` frontmatter to today's date (`YYYY-MM-DD`), adding the field when absent, even when no source changed and no policy was modified (`_core-adr-policy-024.07-compiled-scopes`). Skip this step when the run halted or ended at the Phase 1 no-op.
172
174
 
173
175
  ### Phase 10: Report
174
176
 
@@ -178,7 +180,6 @@ After writing each policy:
178
180
  - Any sources that could not be fetched.
179
181
  - Lint and review pass/fail status.
180
182
  - Sources persisted, kept temporary, or skipped as already in sync.
181
- 2. Whenever the execution dir was created, including when halting in an earlier phase, end the final message with `results-path: .tmp/compile-scope-[ts]/` (the actual dir).
182
183
 
183
184
  ## Anti-Patterns
184
185
 
@@ -205,4 +206,5 @@ After writing each policy:
205
206
  ## References
206
207
 
207
208
  - [_core-adr-policy-019 - Compiled scope type](../../019-compiled-scope-type.md)
209
+ - [_core-adr-policy-023 - Skill runtime standards](../../023-skill-runtime-standards.md)
208
210
  - [_core-adr-policy-008 - Policy structured standards](../../008-policy-structured-standards.md)
@@ -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.2.0"
10
- updated: 2026-09-30
9
+ version: "1.3.0"
10
+ updated: 2026-10-08
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -81,12 +81,12 @@ Keep every question and intermediate message <100 words.
81
81
  ### Phase 3: Diagram Validation
82
82
 
83
83
  1. For every file in scope, scan for fenced ` ```mermaid ` code blocks.
84
- 2. For each diagram found, extract the content to a `.mmd` file in `.tmp/review-[YYYYMMDDHHMMSS]/.work/` at the workspace root (local start time; create it only when the first diagram is found, append `-2`, `-3`... if it exists, and use the same layout under the OS temp dir if the workspace is read-only) and run:
84
+ 2. For each diagram found, extract the content to a `.mmd` file in a temporary folder under the OS temp dir (create it only when the first diagram is found) and run:
85
85
  ```bash
86
86
  npx -y @mermaid-js/mermaid-cli -i <file>.mmd --quiet 2>&1
87
87
  ```
88
88
  3. For each diagram that fails validation, report as ERROR: include the file path, approximate location (heading or surrounding text), and the error message from `mmdc`.
89
- 4. Keep the extracted files after the run; if this step created the dir, fill the `results-path` line of the report template.
89
+ 4. Delete the temporary folder and its `.mmd` files when the review ends, including when halting.
90
90
 
91
91
  ### Phase 4: Policy Review
92
92
 
@@ -134,8 +134,6 @@ Scope: [scope identifier]
134
134
  - Errors: [count]
135
135
  - Warnings: [count]
136
136
  - Outcome: [PASS|FAIL]
137
-
138
- results-path: [.tmp/review-[ts]/ actual dir; include this line only when Phase 3 created it]
139
137
  ```
140
138
 
141
139
  ### Constraints
@@ -170,3 +168,4 @@ results-path: [.tmp/review-[ts]/ actual dir; include this line only when Phase 3
170
168
  - [_core-adr-policy-002 - Policy standards](../../002-policy-standards.md)
171
169
  - [_core-adr-policy-003 - Skill standards](../../003-skill-standards.md)
172
170
  - [_core-adr-policy-020 - Media and asset standards](../../020-media-and-asset-standards.md)
171
+ - [_core-adr-policy-023 - Skill runtime standards](../../023-skill-runtime-standards.md)
@@ -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.1.0"
8
- updated: 2026-09-24
7
+ version: "1.1.1"
8
+ updated: 2026-11-04
9
9
  ---
10
10
 
11
11
  ## Overview
@@ -103,7 +103,7 @@ If the article spans more than one subject, place it in `principles`.
103
103
 
104
104
  ### Phase 5: Write the Article
105
105
 
106
- Use the mandatory template from `004-article-standards`:
106
+ Use the mandatory template from `004-article-standards`. Omit the optional `sync-date` frontmatter unless the user explicitly asks for it for a specific sync purpose (`_core-adr-policy-024`):
107
107
 
108
108
  ```
109
109
  # [scope]-[type]-article-[number]: [Short Title]
@@ -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.1.0"
10
- updated: 2026-09-24
9
+ version: "1.1.1"
10
+ updated: 2026-11-04
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -93,7 +93,7 @@ Consult `001-xdrs-standards` while making each choice in this phase. The summari
93
93
 
94
94
  ### Phase 5: Write the Initiative
95
95
 
96
- Use the mandatory template from `007-initiative-standards`:
96
+ Use the mandatory template from `007-initiative-standards`. Omit the optional `sync-date` frontmatter unless the user explicitly asks for it for a specific sync purpose (`_core-adr-policy-024`):
97
97
 
98
98
  ```markdown
99
99
  # [scope]-[type]-initiative-[number]: [Short Title]
@@ -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.2.0"
9
- updated: 2026-09-30
8
+ version: "1.2.1"
9
+ updated: 2026-11-04
10
10
  ---
11
11
 
12
12
  ## Overview
@@ -107,7 +107,7 @@ Choose a title that clearly states the question this Policy answers, not the ans
107
107
 
108
108
  ### Phase 6: Write the First Draft
109
109
 
110
- Use the mandatory template from `002-policy-standards`:
110
+ Use the mandatory template from `002-policy-standards`. Omit the optional `sync-date` field unless the user explicitly asks for it for a specific sync purpose (`_core-adr-policy-024`); never add it to Policies of `compiled` scopes:
111
111
 
112
112
  **Check if the decision requires a structured set of rules:**
113
113
  If the decision defines strong rules or policies that must be stated explicitly, or if other documents, skills, or agents have a clear need to reference individual rules, you MUST apply the structured rule format from `_core-adr-policy-008-policy-structured-standards`. This means:
@@ -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.5.0"
10
- updated: 2026-09-24
9
+ version: "1.5.1"
10
+ updated: 2026-11-04
11
11
  ---
12
12
 
13
13
  ## Overview
@@ -124,7 +124,7 @@ If the results contain competing interpretations or the intended audience for th
124
124
 
125
125
  ### Phase 7: Write the Research Document
126
126
 
127
- Use the mandatory template from `006-research-standards`:
127
+ Use the mandatory template from `006-research-standards`. Omit the optional `sync-date` frontmatter unless the user explicitly asks for it for a specific sync purpose (`_core-adr-policy-024`):
128
128
 
129
129
  ```markdown
130
130
  # [scope]-[type]-research-[number]: [Short Title]