@windyroad/itil 1.2.0 → 2.0.0-preview.1111

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 (266) hide show
  1. package/.agents/plugins/marketplace.json +12 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +42 -0
  4. package/README.md +34 -25
  5. package/agents/hang-off-check.md +34 -34
  6. package/bin/install.mjs +71 -5
  7. package/bin/wr-itil-catchup-scan +4 -4
  8. package/bin/wr-itil-check-deferred-placeholder-staleness +4 -4
  9. package/bin/wr-itil-check-fail-soft-skip-discipline +4 -4
  10. package/bin/wr-itil-check-fix-rfc-trace +4 -4
  11. package/bin/wr-itil-check-locale-discipline +4 -4
  12. package/bin/wr-itil-check-outbound-responses-staleness +4 -4
  13. package/bin/wr-itil-check-problems-readme-budget +4 -4
  14. package/bin/wr-itil-check-rfc-has-stories +4 -4
  15. package/bin/wr-itil-check-rfc-stories-ratified +4 -4
  16. package/bin/wr-itil-check-ticket-jtbd-ratification +4 -4
  17. package/bin/wr-itil-check-upstream-cache-staleness +4 -4
  18. package/bin/wr-itil-check-upstream-responses +4 -4
  19. package/bin/wr-itil-classify-readme-drift +4 -4
  20. package/bin/wr-itil-derive-release-vehicle +4 -4
  21. package/bin/wr-itil-detect-unratified-stories-maps +4 -4
  22. package/bin/wr-itil-effort-tally +4 -4
  23. package/bin/wr-itil-enumerate-postrelease-kv-candidates +4 -4
  24. package/bin/wr-itil-evaluate-relevance +4 -4
  25. package/bin/wr-itil-mark-create-gate +4 -4
  26. package/bin/wr-itil-mark-story-oversight-confirmed +4 -4
  27. package/bin/wr-itil-migrate-problems-layout +4 -4
  28. package/bin/wr-itil-migrate-story-status-mirror +4 -4
  29. package/bin/wr-itil-next-rfc-id +4 -4
  30. package/bin/wr-itil-plugin-exercise-index +4 -4
  31. package/bin/wr-itil-plugin-maturity-populate +4 -4
  32. package/bin/wr-itil-plugin-maturity-render +4 -4
  33. package/bin/wr-itil-plugin-validate-ci-gate +4 -4
  34. package/bin/wr-itil-reconcile-readme +4 -4
  35. package/bin/wr-itil-reconcile-rfcs +4 -4
  36. package/bin/wr-itil-reconcile-stories +4 -4
  37. package/bin/wr-itil-reconcile-story-maps +4 -4
  38. package/bin/wr-itil-render-story-map +4 -4
  39. package/bin/wr-itil-resolve-governance-plugin-dirs +4 -4
  40. package/bin/wr-itil-skill-invocations +4 -4
  41. package/bin/wr-itil-story-map-edit +4 -4
  42. package/bin/wr-itil-story-map-query +4 -4
  43. package/bin/wr-itil-update-jtbd-references-section +4 -4
  44. package/bin/wr-itil-update-problem-references-section +4 -4
  45. package/bin/wr-itil-update-problem-rfcs-section +4 -4
  46. package/bin/wr-itil-update-rfc-commits-section +4 -4
  47. package/bin/wr-itil-update-rfc-references-section +4 -4
  48. package/bin/wr-itil-verify-iter-summary +4 -4
  49. package/hooks/itil-assistant-output-gate.sh +3 -3
  50. package/hooks/itil-assistant-output-review.sh +5 -5
  51. package/hooks/itil-bash-polling-antipattern-detect.sh +11 -11
  52. package/hooks/itil-changeset-discipline.sh +24 -24
  53. package/hooks/itil-claude-space-protection.sh +21 -14
  54. package/hooks/itil-codex-dispatch.sh +164 -0
  55. package/hooks/itil-commit-trailer-transition-advisory.sh +11 -11
  56. package/hooks/itil-correction-detect.sh +8 -8
  57. package/hooks/itil-deferral-cadence-gate.sh +23 -23
  58. package/hooks/itil-fictional-defer-detect.sh +16 -16
  59. package/hooks/itil-fix-title-lifecycle-advisory.sh +11 -11
  60. package/hooks/itil-mid-loop-ask-detect.sh +14 -14
  61. package/hooks/itil-no-implement-draft-gate.sh +18 -18
  62. package/hooks/itil-pending-questions-surface.sh +11 -11
  63. package/hooks/itil-readme-refresh-discipline.sh +27 -27
  64. package/hooks/itil-rfc-oversight-nudge.sh +7 -7
  65. package/hooks/itil-rfc-trailer-advisory.sh +28 -28
  66. package/hooks/itil-runtime-sid-marker.sh +11 -11
  67. package/hooks/itil-story-mirror-migration-nudge.sh +7 -7
  68. package/hooks/lib/block-list.sh +17 -17
  69. package/hooks/lib/changeset-detect.sh +27 -27
  70. package/hooks/lib/claude-space-gate.sh +23 -15
  71. package/hooks/lib/command-detect.sh +12 -12
  72. package/hooks/lib/create-gate.sh +9 -39
  73. package/hooks/lib/detectors.sh +12 -12
  74. package/hooks/lib/readme-refresh-detect.sh +51 -51
  75. package/hooks/lib/runtime-sid.sh +12 -12
  76. package/hooks/lib/session-id.sh +28 -28
  77. package/hooks/lib/session-marker.sh +1 -1
  78. package/hooks/lib/staging-detect.sh +13 -13
  79. package/hooks/manage-problem-enforce-create.sh +16 -27
  80. package/hooks/p057-staging-trap-detect.sh +18 -18
  81. package/hooks/pre-publish-intake-gate.sh +5 -5
  82. package/hooks/staleness-check.sh +6 -6
  83. package/hooks-codex/hooks.json +57 -0
  84. package/lib/check-deferred-placeholder-staleness.sh +10 -10
  85. package/lib/check-outbound-responses-staleness.sh +2 -2
  86. package/lib/check-upstream-cache-staleness.sh +2 -2
  87. package/lib/derive-first-dispatch.sh +19 -19
  88. package/lib/enumerate-postrelease-kv-candidates.sh +18 -18
  89. package/lib/migrate-problems-layout.sh +12 -12
  90. package/lib/story-oversight.sh +27 -27
  91. package/package.json +16 -3
  92. package/scripts/catchup-scan.sh +25 -25
  93. package/scripts/check-fail-soft-skip-discipline.sh +10 -10
  94. package/scripts/check-fix-rfc-trace.sh +8 -8
  95. package/scripts/check-locale-discipline.sh +13 -13
  96. package/scripts/check-problems-readme-budget.sh +12 -12
  97. package/scripts/check-rfc-has-stories.sh +7 -7
  98. package/scripts/check-rfc-rejected-alternatives.sh +11 -11
  99. package/scripts/check-rfc-stories-ratified.sh +9 -9
  100. package/scripts/check-ticket-jtbd-ratification.sh +10 -10
  101. package/scripts/check-upstream-responses.sh +22 -22
  102. package/scripts/classify-readme-drift.sh +13 -13
  103. package/scripts/codex-agent.mjs +104 -0
  104. package/scripts/derive-release-vehicle.sh +23 -23
  105. package/scripts/detect-unoversighted-rfcs.sh +3 -3
  106. package/scripts/detect-unratified-stories-maps.sh +5 -5
  107. package/scripts/effort-tally.sh +10 -10
  108. package/scripts/evaluate-relevance.sh +16 -16
  109. package/scripts/mark-create-gate.sh +4 -4
  110. package/scripts/mark-story-oversight-confirmed.sh +14 -14
  111. package/scripts/migrate-story-status-mirror.sh +6 -6
  112. package/scripts/next-rfc-id.sh +5 -5
  113. package/scripts/plugin-exercise-index.sh +26 -26
  114. package/scripts/plugin-maturity-populate.sh +38 -38
  115. package/scripts/plugin-maturity-render.sh +26 -26
  116. package/scripts/plugin-validate-ci-gate.sh +14 -14
  117. package/scripts/reconcile-readme.sh +23 -23
  118. package/scripts/reconcile-rfcs.sh +13 -13
  119. package/scripts/reconcile-stories.sh +12 -12
  120. package/scripts/reconcile-story-maps.sh +6 -6
  121. package/scripts/render-story-map.mjs +24 -24
  122. package/scripts/render-story-map.sh +3 -3
  123. package/scripts/resolve-governance-plugin-dirs.sh +10 -10
  124. package/scripts/run-check-deferred-placeholder-staleness.sh +3 -3
  125. package/scripts/run-check-outbound-responses-staleness.sh +3 -3
  126. package/scripts/run-check-upstream-cache-staleness.sh +3 -3
  127. package/scripts/run-enumerate-postrelease-kv-candidates.sh +3 -3
  128. package/scripts/run-migrate-problems-layout.sh +3 -3
  129. package/scripts/skill-invocations.sh +29 -29
  130. package/scripts/story-map-edit.mjs +6 -6
  131. package/scripts/story-map-edit.sh +3 -3
  132. package/scripts/story-map-query.mjs +8 -8
  133. package/scripts/story-map-query.sh +3 -3
  134. package/scripts/update-jtbd-references-section.sh +8 -8
  135. package/scripts/update-problem-references-section.sh +12 -12
  136. package/scripts/update-problem-rfcs-section.sh +9 -9
  137. package/scripts/update-rfc-commits-section.sh +7 -7
  138. package/scripts/update-rfc-references-section.sh +3 -3
  139. package/scripts/update-story-references-section.sh +5 -5
  140. package/scripts/verify-iter-summary.sh +3 -3
  141. package/skills/capture-problem/REFERENCE.md +33 -33
  142. package/skills/capture-problem/SKILL.md +108 -108
  143. package/skills/capture-problem/agents/openai.yaml +3 -0
  144. package/skills/capture-rfc/SKILL.md +21 -323
  145. package/skills/capture-rfc/agents/openai.yaml +3 -0
  146. package/skills/capture-story/SKILL.md +65 -65
  147. package/skills/capture-story/agents/openai.yaml +3 -0
  148. package/skills/capture-story-map/SKILL.md +31 -31
  149. package/skills/capture-story-map/agents/openai.yaml +3 -0
  150. package/skills/check-upstream-responses/SKILL.md +38 -38
  151. package/skills/check-upstream-responses/agents/openai.yaml +3 -0
  152. package/skills/close-incident/SKILL.md +25 -25
  153. package/skills/close-incident/agents/openai.yaml +3 -0
  154. package/skills/link-incident/SKILL.md +22 -22
  155. package/skills/link-incident/agents/openai.yaml +3 -0
  156. package/skills/list-incidents/SKILL.md +9 -9
  157. package/skills/list-incidents/agents/openai.yaml +3 -0
  158. package/skills/list-problems/SKILL.md +17 -17
  159. package/skills/list-problems/agents/openai.yaml +3 -0
  160. package/skills/list-stories/SKILL.md +23 -23
  161. package/skills/list-stories/agents/openai.yaml +3 -0
  162. package/skills/list-story-maps/SKILL.md +9 -9
  163. package/skills/list-story-maps/agents/openai.yaml +3 -0
  164. package/skills/manage-incident/SKILL.md +59 -59
  165. package/skills/manage-incident/agents/openai.yaml +3 -0
  166. package/skills/manage-problem/SKILL.md +222 -222
  167. package/skills/manage-problem/agents/openai.yaml +3 -0
  168. package/skills/manage-rfc/SKILL.md +62 -62
  169. package/skills/manage-rfc/agents/openai.yaml +3 -0
  170. package/skills/manage-story/SKILL.md +49 -49
  171. package/skills/manage-story/agents/openai.yaml +3 -0
  172. package/skills/manage-story-map/SKILL.md +30 -30
  173. package/skills/manage-story-map/agents/openai.yaml +3 -0
  174. package/skills/mitigate-incident/SKILL.md +40 -40
  175. package/skills/mitigate-incident/agents/openai.yaml +3 -0
  176. package/skills/reconcile-readme/SKILL.md +28 -28
  177. package/skills/reconcile-readme/agents/openai.yaml +3 -0
  178. package/skills/reconcile-stories/SKILL.md +17 -17
  179. package/skills/reconcile-stories/agents/openai.yaml +3 -0
  180. package/skills/reconcile-story-maps/SKILL.md +11 -11
  181. package/skills/reconcile-story-maps/agents/openai.yaml +3 -0
  182. package/skills/report-upstream/SKILL.md +73 -73
  183. package/skills/report-upstream/agents/openai.yaml +3 -0
  184. package/skills/restore-incident/SKILL.md +28 -28
  185. package/skills/restore-incident/agents/openai.yaml +3 -0
  186. package/skills/review-problems/SKILL.md +129 -129
  187. package/skills/review-problems/agents/openai.yaml +3 -0
  188. package/skills/scaffold-intake/SKILL.md +26 -26
  189. package/skills/scaffold-intake/agents/openai.yaml +3 -0
  190. package/skills/transition-problem/SKILL.md +85 -85
  191. package/skills/transition-problem/agents/openai.yaml +3 -0
  192. package/skills/transition-problems/SKILL.md +69 -69
  193. package/skills/transition-problems/agents/openai.yaml +3 -0
  194. package/skills/update-upstream/SKILL.md +97 -97
  195. package/skills/update-upstream/agents/openai.yaml +3 -0
  196. package/skills/work-problem/SKILL.md +42 -42
  197. package/skills/work-problem/agents/openai.yaml +3 -0
  198. package/skills/work-problems/SKILL.md +327 -327
  199. package/skills/work-problems/agents/openai.yaml +3 -0
  200. package/skills-codex/capture-problem/REFERENCE.md +139 -0
  201. package/skills-codex/capture-problem/SKILL.md +438 -0
  202. package/skills-codex/capture-problem/agents/openai.yaml +3 -0
  203. package/skills-codex/capture-rfc/SKILL.md +45 -0
  204. package/skills-codex/capture-rfc/agents/openai.yaml +3 -0
  205. package/skills-codex/capture-story/SKILL.md +407 -0
  206. package/skills-codex/capture-story/agents/openai.yaml +3 -0
  207. package/skills-codex/capture-story-map/SKILL.md +286 -0
  208. package/skills-codex/capture-story-map/agents/openai.yaml +3 -0
  209. package/skills-codex/check-upstream-responses/SKILL.md +160 -0
  210. package/skills-codex/check-upstream-responses/agents/openai.yaml +3 -0
  211. package/skills-codex/close-incident/SKILL.md +192 -0
  212. package/skills-codex/close-incident/agents/openai.yaml +3 -0
  213. package/skills-codex/link-incident/SKILL.md +173 -0
  214. package/skills-codex/link-incident/agents/openai.yaml +3 -0
  215. package/skills-codex/list-incidents/SKILL.md +92 -0
  216. package/skills-codex/list-incidents/agents/openai.yaml +3 -0
  217. package/skills-codex/list-problems/SKILL.md +126 -0
  218. package/skills-codex/list-problems/agents/openai.yaml +3 -0
  219. package/skills-codex/list-stories/SKILL.md +170 -0
  220. package/skills-codex/list-stories/agents/openai.yaml +3 -0
  221. package/skills-codex/list-story-maps/SKILL.md +104 -0
  222. package/skills-codex/list-story-maps/agents/openai.yaml +3 -0
  223. package/skills-codex/manage-incident/SKILL.md +378 -0
  224. package/skills-codex/manage-incident/agents/openai.yaml +3 -0
  225. package/skills-codex/manage-problem/SKILL.md +1180 -0
  226. package/skills-codex/manage-problem/agents/openai.yaml +3 -0
  227. package/skills-codex/manage-rfc/SKILL.md +314 -0
  228. package/skills-codex/manage-rfc/agents/openai.yaml +3 -0
  229. package/skills-codex/manage-story/SKILL.md +284 -0
  230. package/skills-codex/manage-story/agents/openai.yaml +3 -0
  231. package/skills-codex/manage-story-map/SKILL.md +198 -0
  232. package/skills-codex/manage-story-map/agents/openai.yaml +3 -0
  233. package/skills-codex/mitigate-incident/SKILL.md +239 -0
  234. package/skills-codex/mitigate-incident/agents/openai.yaml +3 -0
  235. package/skills-codex/reconcile-readme/SKILL.md +175 -0
  236. package/skills-codex/reconcile-readme/agents/openai.yaml +3 -0
  237. package/skills-codex/reconcile-stories/SKILL.md +124 -0
  238. package/skills-codex/reconcile-stories/agents/openai.yaml +3 -0
  239. package/skills-codex/reconcile-story-maps/SKILL.md +81 -0
  240. package/skills-codex/reconcile-story-maps/agents/openai.yaml +3 -0
  241. package/skills-codex/report-upstream/SKILL.md +716 -0
  242. package/skills-codex/report-upstream/agents/openai.yaml +3 -0
  243. package/skills-codex/restore-incident/SKILL.md +216 -0
  244. package/skills-codex/restore-incident/agents/openai.yaml +3 -0
  245. package/skills-codex/review-problems/SKILL.md +524 -0
  246. package/skills-codex/review-problems/agents/openai.yaml +3 -0
  247. package/skills-codex/scaffold-intake/SKILL.md +209 -0
  248. package/skills-codex/scaffold-intake/agents/openai.yaml +3 -0
  249. package/skills-codex/scaffold-intake/templates/CONTRIBUTING.md.tmpl +31 -0
  250. package/skills-codex/scaffold-intake/templates/SECURITY.md.tmpl +39 -0
  251. package/skills-codex/scaffold-intake/templates/SUPPORT.md.tmpl +32 -0
  252. package/skills-codex/scaffold-intake/templates/config.yml.tmpl +8 -0
  253. package/skills-codex/scaffold-intake/templates/problem-report.yml.tmpl +114 -0
  254. package/skills-codex/transition-problem/SKILL.md +371 -0
  255. package/skills-codex/transition-problem/agents/openai.yaml +3 -0
  256. package/skills-codex/transition-problems/SKILL.md +310 -0
  257. package/skills-codex/transition-problems/agents/openai.yaml +3 -0
  258. package/skills-codex/update-upstream/SKILL.md +583 -0
  259. package/skills-codex/update-upstream/agents/openai.yaml +3 -0
  260. package/skills-codex/work-problem/SKILL.md +160 -0
  261. package/skills-codex/work-problem/agents/openai.yaml +3 -0
  262. package/skills-codex/work-problems/SKILL.md +58 -0
  263. package/skills-codex/work-problems/agents/openai.yaml +3 -0
  264. package/templates/story-map.css +1 -1
  265. package/bin/wr-itil-mark-rfc-capture-gate +0 -51
  266. package/scripts/mark-rfc-capture-gate.sh +0 -32
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "WR ITIL: Review Problems"
3
+ short_description: "Reassess and reprioritise the problem backlog."
@@ -0,0 +1,209 @@
1
+ ---
2
+ name: wr-itil:scaffold-intake
3
+ description: Scaffold the four OSS intake surfaces (.github/ISSUE_TEMPLATE/, SECURITY.md, SUPPORT.md, CONTRIBUTING.md) for a downstream project that adopts @windyroad/itil. Idempotent, foreground-synchronous, and respects the "Gate Marker Lifecycle: TTL + Drift, Not Stop-Hook Reset" architecture rule marker semantics. Implements the contract in the "Scaffold downstream OSS intake — skill + layered triggers" architecture rule.
4
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input
5
+ ---
6
+
7
+ <!-- Generated from the runtime-neutral skill source. Do not edit. -->
8
+
9
+ > Codex runtime note: use `request_user_input` only where this contract
10
+ > explicitly requires a human decision. Resolve `<itil-plugin-root>` from
11
+ > this installed `SKILL.md`: it is two directories above the skill
12
+ > directory. Run bundled commands from `<itil-plugin-root>/bin/`; do not
13
+ > search the adopter repository or rely on those commands being on `PATH`.
14
+ > Spawn `wr-itil:hang-off-check` with the native Codex subagent tool, wait
15
+ > for it, and close that same agent.
16
+
17
+
18
+ # Scaffold Intake — Downstream OSS Intake Skill
19
+
20
+ Scaffold the five intake files every project in the Windy Road ecosystem needs to receive structured problem reports and route security disclosure properly:
21
+
22
+ - `.github/ISSUE_TEMPLATE/config.yml`
23
+ - `.github/ISSUE_TEMPLATE/problem-report.yml`
24
+ - `SECURITY.md`
25
+ - `SUPPORT.md`
26
+ - `CONTRIBUTING.md`
27
+
28
+ Templates are seeded from this repo's the "Problem 066: Intake templates split bug / feature instead of a problem-first template — misaligned with ITIL problem management" problem-corrected problem-first intake set and are substituted with per-project values for project name, repository URL, plugin list, and security-contact path.
29
+
30
+ This skill implements the contract in [the "Scaffold downstream OSS intake — skill + layered triggers" architecture rule](../../../../docs/decisions/036-scaffold-downstream-oss-intake.proposed.md) (Scaffold downstream OSS intake — skill + layered triggers). It is the reciprocal of [`/wr-itil:report-upstream`](../report-upstream/SKILL.md) — that skill files reports against upstream intake; this skill creates the intake surface so a downstream project can be a target.
31
+
32
+ ## Pattern
33
+
34
+ This skill is **foreground-synchronous** per [the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule](../../../../docs/decisions/032-governance-skill-invocation-patterns.proposed.md) (Governance skill invocation patterns). Scaffolding writes files into the project that the user normally wants to review before they commit; the wrapped-pattern subagent shape would defeat that review. The skill commits its own work per [the "Governance Skills Commit Their Own Completed Work" architecture rule](../../../../docs/decisions/014-governance-skills-commit-their-own-work.proposed.md).
35
+
36
+ ## Invocation
37
+
38
+ ```
39
+ /wr-itil:scaffold-intake [--dry-run] [--force] [--project-name <name>] [--project-url <url>] [--security-contact <path>] [--ci]
40
+ ```
41
+
42
+ | Flag | Effect |
43
+ |---|---|
44
+ | `--dry-run` | Preview the files that would be scaffolded; no writes. |
45
+ | `--force` | Overwrite present files after a diff-and-replace prompt. Off by default — present files are reported as "already present" and skipped. |
46
+ | `--project-name <name>` | Override auto-detected project name (default: `package.json` `name`, fallback to repo dirname). |
47
+ | `--project-url <url>` | Override auto-detected repository URL (default: `package.json` `repository.url`, fallback to `git remote get-url origin`). |
48
+ | `--security-contact <path>` | Override the security-disclosure path written into SECURITY.md (default: `Use GitHub Security Advisories`). |
49
+ | `--ci` | Also emit `.github/workflows/intake-check.yml` (Trigger 3, optional). |
50
+
51
+ ## Steps
52
+
53
+ ### 1. Detect project metadata
54
+
55
+ ```bash
56
+ PROJECT_NAME=$(node -p "require('./package.json').name" 2>/dev/null || basename "$PWD")
57
+ PROJECT_URL=$(node -p "require('./package.json').repository?.url || ''" 2>/dev/null \
58
+ | sed -E 's|^git\+||; s|\.git$||' \
59
+ || git remote get-url origin 2>/dev/null \
60
+ || echo "")
61
+ YEAR=$(date +%Y)
62
+ ```
63
+
64
+ `--project-name` and `--project-url` flags override the auto-detected values when supplied. `package.json` shapes vary across adopters; if detection produces empty values, surface a clear error suggesting the override flags rather than substituting an empty token.
65
+
66
+ Plugin list: enumerate installed `@windyroad/*` packages from `.codex-plugin/plugin.json` (if present) or from `package.json` dev-dependencies. Used for the SUPPORT.md "affected plugin or component" enumeration.
67
+
68
+ ### 2. Enumerate target paths
69
+
70
+ Required intake files (per the "Scaffold downstream OSS intake — skill + layered triggers" architecture rule Detection step 5):
71
+
72
+ ```
73
+ .github/ISSUE_TEMPLATE/config.yml
74
+ .github/ISSUE_TEMPLATE/problem-report.yml
75
+ SECURITY.md
76
+ SUPPORT.md
77
+ CONTRIBUTING.md
78
+ ```
79
+
80
+ For each path: classify as **missing**, **present-and-current** (template-substituted output matches existing file content), or **present-and-outdated** (existing differs from substituted template).
81
+
82
+ ### 3. request_user_input: which files to scaffold (foreground only)
83
+
84
+ In foreground (interactive) mode, fire `request_user_input` per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 1 with options scoped to the missing set:
85
+
86
+ - **Scaffold all missing** — write every absent template, skip present files.
87
+ - **Scaffold with review** — preview each substituted template before writing.
88
+ - **Dry-run** — preview only, no writes.
89
+ - **Cancel** — exit without action.
90
+
91
+ If `--force` is set AND outdated-present files exist, the prompt offers a fifth option for diff-and-replace per file. Architect direction (2026-04-26): keep the prompt one-shot when missing list is small; per-file prompts only when the user explicitly opts into review.
92
+
93
+ ### 4. Substitute templates and write files
94
+
95
+ Templates live in `templates/` adjacent to this SKILL.md. Substitution is mustache-style — no runtime dependency:
96
+
97
+ | Token | Value source |
98
+ |---|---|
99
+ | `{{project_name}}` | Detected or `--project-name` flag. |
100
+ | `{{project_url}}` | Detected or `--project-url` flag. |
101
+ | `{{plugin_list}}` | Comma-separated installed `@windyroad/*` plugins. |
102
+ | `{{security_contact}}` | Detected from existing SECURITY.md (when only that file is present); else `--security-contact` flag; fallback `Use GitHub Security Advisories`. |
103
+ | `{{year}}` | `date +%Y` at scaffold time. |
104
+
105
+ `sed` substitution sketch (idempotent, no runtime tooling):
106
+
107
+ ```bash
108
+ sed \
109
+ -e "s|{{project_name}}|$PROJECT_NAME|g" \
110
+ -e "s|{{project_url}}|$PROJECT_URL|g" \
111
+ -e "s|{{plugin_list}}|$PLUGIN_LIST|g" \
112
+ -e "s|{{security_contact}}|$SECURITY_CONTACT|g" \
113
+ -e "s|{{year}}|$YEAR|g" \
114
+ templates/SECURITY.md.tmpl > SECURITY.md
115
+ ```
116
+
117
+ For each missing file: substitute, write to the target path, report the write + a short diff to stdout.
118
+
119
+ For each present-and-current file: report "already present — skipped" without modification.
120
+
121
+ For each present-and-outdated file: when `--force` is set, offer diff-and-replace; otherwise skip with a clear note that `--force` would update it.
122
+
123
+ ### 5. Mark scaffold as done
124
+
125
+ After successful write:
126
+
127
+ ```bash
128
+ mkdir -p .codex
129
+ : > .codex/.intake-scaffold-done
130
+ ```
131
+
132
+ The marker suppresses Trigger-1 first-run prompts in subsequent `/wr-itil:manage-problem` and `/wr-itil:work-problems` invocations. the "Gate Marker Lifecycle: TTL + Drift, Not Stop-Hook Reset" architecture rule marker semantics — persistent (no TTL), file-presence is the policy signal, deletable to reset.
133
+
134
+ ### 6. Commit per the "Governance Skills Commit Their Own Completed Work" architecture rule
135
+
136
+ ```bash
137
+ git add .github/ISSUE_TEMPLATE/ SECURITY.md SUPPORT.md CONTRIBUTING.md .codex/.intake-scaffold-done
138
+ git -c commit.gpgsign=false commit -m "docs: scaffold OSS intake (ISSUE_TEMPLATE, SECURITY, SUPPORT, CONTRIBUTING)"
139
+ ```
140
+
141
+ Follow the project's existing commit-gate flow: the commit triggers `wr-risk-scorer:pipeline` per the "Governance Skills Commit Their Own Completed Work" architecture rule; remediation suggestions are applied per the "Auto-apply scorer remediations to reach within appetite — open action-class vocabulary" architecture rule if residual exceeds appetite.
142
+
143
+ ## Idempotency
144
+
145
+ The skill is idempotent by construction:
146
+
147
+ - Present files are skipped unless `--force`.
148
+ - Re-running the skill on a fully-scaffolded project produces no diff.
149
+ - The done marker prevents the host first-run prompt from re-firing.
150
+
151
+ ## Rule 6 audit (per the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule)
152
+
153
+ Every `request_user_input` branch this skill uses must enumerate its AFK fail-safe per the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6. The audit table below documents each branch:
154
+
155
+ | request_user_input branch | Resolution |
156
+ |---|---|
157
+ | Step 3: "Which files to scaffold?" (foreground invocation) | Foreground-synchronous — user is in-session; `request_user_input` fires normally. |
158
+ | Step 4: "Overwrite outdated present file with updated template?" (with `--force`) | Foreground-synchronous; same as Step 3. |
159
+ | First-run prompt fired from `/wr-itil:manage-problem` or `/wr-itil:work-problems` (foreground invocation) | Foreground-synchronous per the hosting skill's pattern. |
160
+ | First-run prompt fired from an AFK orchestrator iteration | **Fail-safe (Rule 6)**: do NOT fire `request_user_input` and do NOT auto-scaffold. Append a single one-line "pending intake scaffold" note to the orchestrator's iteration report; defer the prompt to the user's next interactive session. the ": Progress the Backlog While I'm Away" user outcome forbids the agent from making this judgement call. |
161
+
162
+ ## Trigger surfaces (layered)
163
+
164
+ The skill is reachable via three trigger surfaces, layered so a soft prompt fires weeks before the hard publish stop. the "Scaffold downstream OSS intake — skill + layered triggers" architecture rule specifies the exact contract.
165
+
166
+ ### Trigger 1: First-run prompt from manage-problem / work-problems
167
+
168
+ When `/wr-itil:manage-problem` or `/wr-itil:work-problems` fires in a foreground session, the host skill's preamble checks:
169
+
170
+ - Is `.github/ISSUE_TEMPLATE/` missing OR are any of the four other intake files absent?
171
+ - Is `.codex/.intake-scaffold-declined` absent?
172
+ - Is `.codex/.intake-scaffold-done` absent?
173
+
174
+ When all three checks pass, the host emits a one-shot `request_user_input` prompt with three options — **Scaffold now**, **Not now (ask again next session)**, **Decline (never prompt in this project)**. On "Decline", write `.codex/.intake-scaffold-declined` and never re-prompt unless the user deletes the marker.
175
+
176
+ **AFK fail-safe**: when the host is invoked from an AFK orchestrator, do NOT fire the prompt. Append a one-line "pending intake scaffold" note to the iteration report and continue. The user catches up on next interactive session.
177
+
178
+ **the "Structured User Interaction for Governance-Skill Decisions" architecture rule Rule 6 universal default (the "AFK iter default when a skill needs to ask a question and request_user_input is unavailable — should queue the question and move to the next iteration (not halt, not silently skip)" problem, 2026-06-06 amendment)**: this IS queue-and-continue — the iteration-report note is the queued surface; the loop advances. Persona-correct for the ": Progress the Backlog While I'm Away" user outcome ("queued for my return, not guessed at"). Not a carve-out — this is the canonical default shape.
179
+
180
+ ### Trigger 2: Pre-publish PreToolUse gate (hard stop)
181
+
182
+ `<itil-plugin-root>/hooks/pre-publish-intake-gate.sh` matches `npm publish` and `gh pr merge ... changeset-release/*` and denies if any of the five intake files are missing AND the decline marker is absent AND `INTAKE_BYPASS` is not set.
183
+
184
+ **Override paths** (in priority order):
185
+ 1. `INTAKE_BYPASS=1 npm publish` — short-circuits the gate before existence check (consistent with `RISK_BYPASS` naming).
186
+ 2. `.codex/.intake-scaffold-declined` marker — explicit opt-out.
187
+ 3. Run `/wr-itil:scaffold-intake` to remove the cause.
188
+
189
+ ### Trigger 3: Optional CI check (deferred to v2)
190
+
191
+ `--ci` flag emits `.github/workflows/intake-check.yml` asserting the four files exist on every PR. Not shipped by default; layered ADD-on for adopters with GitHub Actions.
192
+
193
+ ## Idempotent re-runs and template drift
194
+
195
+ When this repo's intake files evolve (e.g., a future the "Problem 066: Intake templates split bug / feature instead of a problem-first template — misaligned with ITIL problem management" problem-style reform), downstream adopters' previously-scaffolded files stay frozen. Re-running the skill at any time picks up the diff: the present-and-outdated branch reports each file's diff and, with `--force`, performs diff-and-replace. Template drift policy (when this should fire automatically) is out of scope for v1 — see the "Scaffold downstream OSS intake — skill + layered triggers" architecture rule Reassessment Criteria.
196
+
197
+ ## Related
198
+
199
+ - [the "Scaffold downstream OSS intake — skill + layered triggers" architecture rule](../../../../docs/decisions/036-scaffold-downstream-oss-intake.proposed.md) — design record (driver decision).
200
+ - [the "Cross-project problem-reporting contract — `report-upstream` skill in `@windyroad/itil`" architecture rule](../../../../docs/decisions/024-cross-project-problem-reporting-contract.proposed.md) — sibling skill (`/wr-itil:report-upstream`); reciprocal pair.
201
+ - [the "Governance skill invocation patterns — foreground + background with deferred-question resumption" architecture rule](../../../../docs/decisions/032-governance-skill-invocation-patterns.proposed.md) — foreground-synchronous pattern + Rule 6 audit requirement.
202
+ - [the "Structured User Interaction for Governance-Skill Decisions" architecture rule](../../../../docs/decisions/013-structured-user-interaction-for-governance-decisions.proposed.md) — Rule 1 (interactive prompt) + Rule 6 (AFK fail-safe).
203
+ - [the "Gate Marker Lifecycle: TTL + Drift, Not Stop-Hook Reset" architecture rule](../../../../docs/decisions/009-gate-marker-lifecycle.proposed.md) — marker lifecycle (the `.intake-scaffold-{done,declined}` markers).
204
+ - [the "Governance Skills Commit Their Own Completed Work" architecture rule](../../../../docs/decisions/014-governance-skills-commit-their-own-work.proposed.md) — commit discipline.
205
+ - the "Problem 065: No skill scaffolds intake files (ISSUE_TEMPLATE, SECURITY.md, CONTRIBUTING.md, SUPPORT.md) in downstream projects" problem — driver ticket.
206
+ - the "Problem 066: Intake templates split bug / feature instead of a problem-first template — misaligned with ITIL problem management" problem — parent (template seed source); the corrected problem-first intake shape this skill propagates.
207
+ - the "Report a Problem Without Pre-Classifying It" user outcome — primary persona; downstream-project intake coverage.
208
+ - the "Extend the Suite with New Plugins" user outcome — clear patterns for adopters extending the suite.
209
+ - the ": Progress the Backlog While I'm Away" user outcome — AFK fail-safe constraint.
@@ -0,0 +1,3 @@
1
+ interface:
2
+ display_name: "WR ITIL: Scaffold Intake"
3
+ short_description: "Create ITIL intake and support surfaces."
@@ -0,0 +1,31 @@
1
+ # Contributing
2
+
3
+ Thanks for your interest in {{project_name}}. This guide covers how to contribute code, decisions, and bug reports.
4
+
5
+ ## Before you start
6
+
7
+ - **Problems**: open an issue first using the **Report a problem** template under `.github/ISSUE_TEMPLATE/`. You do not need to pre-classify it as a bug or a feature -- this project practises ITIL problem management, so triage decides the category. Drive-by PRs without an issue are harder to merge because the problem framing is missing.
8
+ - **Security vulnerabilities**: do not open a public issue. See [SECURITY.md](SECURITY.md).
9
+ - **Usage questions**: use [Discussions]({{project_url}}/discussions), not issues.
10
+
11
+ ## Pull requests
12
+
13
+ 1. **Branch off the default branch**.
14
+ 2. **Make your change** with tests where applicable.
15
+ 3. **Open the PR** with a clear description of what is changing and why.
16
+
17
+ ### Commit style
18
+
19
+ - Follow Conventional Commits (`feat:`, `fix:`, `docs:`, `chore:`, etc.).
20
+ - Reference problem tickets in the commit message when the work closes one.
21
+ - Sign-off is not required.
22
+
23
+ ## Code of conduct
24
+
25
+ Be kind. Engage in good faith. Critique ideas, not people. Maintainers reserve the right to lock or remove discussions, issues, or PRs that derail into personal attacks.
26
+
27
+ ## License
28
+
29
+ By contributing, you agree your contributions are licensed under {{project_name}}'s license. See the project root for the canonical LICENSE file.
30
+
31
+ Copyright (c) {{year}} the {{project_name}} contributors.
@@ -0,0 +1,39 @@
1
+ # Security Policy
2
+
3
+ ## Reporting a Vulnerability
4
+
5
+ **Do not file a public issue for security vulnerabilities.**
6
+
7
+ {{security_contact}} to disclose privately. Maintainers receive an email; the report stays private until a fix ships.
8
+
9
+ A useful report includes:
10
+
11
+ - The affected version of {{project_name}} (e.g. `{{project_name}}@x.y.z`).
12
+ - The runtime / platform you reproduced on.
13
+ - Reproduction steps that demonstrate the impact.
14
+ - Your assessment of impact (data loss, code execution, escalation, secret leak, etc.).
15
+ - Any suggested fix or mitigation.
16
+
17
+ ## What's in scope
18
+
19
+ Code shipped from this repository: {{project_url}}.
20
+
21
+ ## What's out of scope
22
+
23
+ - Vulnerabilities in third-party dependencies -- report to their maintainers.
24
+ - Issues that require an attacker to already have local code-execution on the user's machine.
25
+
26
+ ## Disclosure timeline
27
+
28
+ We aim to:
29
+
30
+ - **Acknowledge** the report within 7 calendar days.
31
+ - **Provide an initial assessment** (in scope, severity, planned fix) within 14 days.
32
+ - **Ship a fix** within 90 days for confirmed vulnerabilities, with most resolved sooner.
33
+ - **Coordinate disclosure** with the reporter so a public advisory and credit can be published when the fix lands.
34
+
35
+ If we cannot meet a 90-day timeline, we will say so in the advisory thread before the deadline.
36
+
37
+ ## Credit
38
+
39
+ Reporters who follow this private-disclosure path are credited in the published advisory unless they ask to remain anonymous.
@@ -0,0 +1,32 @@
1
+ # Getting Help
2
+
3
+ Where to go depends on what you need:
4
+
5
+ ## Usage questions, configuration help, pattern advice
6
+
7
+ [GitHub Discussions]({{project_url}}/discussions). Discussions stay searchable for the next person who hits the same question.
8
+
9
+ Before posting, search existing discussions and the project README.
10
+
11
+ ## Report a problem
12
+
13
+ [Open an issue]({{project_url}}/issues/new/choose) using the **Report a problem** template. You do not need to pre-classify it as a bug or feature -- this project practises ITIL problem management, and triage decides whether the root cause is a defect, a missing capability, a documentation gap, or something else. Describe what you observed and let triage decide the category.
14
+
15
+ Include:
16
+
17
+ - A description of what is happening and what you expected
18
+ - Observable symptoms (errors, command output, transcripts, screenshots -- redact secrets)
19
+ - Any workaround you tried, even if it did not help
20
+ - Affected component and version of {{project_name}}
21
+ - Runtime / platform and operating system
22
+ - Minimal reproduction steps or evidence
23
+
24
+ The template prompts for these. Issues without the template fields are slower to triage.
25
+
26
+ ## Security vulnerabilities
27
+
28
+ **Do not open a public issue.** {{security_contact}} for private disclosure. See [SECURITY.md](SECURITY.md) for the disclosure timeline and what's in scope.
29
+
30
+ ## Project documentation
31
+
32
+ Start with the README at the root of {{project_url}} for project-specific behaviour.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Ask a question (GitHub Discussions)
4
+ url: {{project_url}}/discussions
5
+ about: For usage help, configuration questions, and pattern advice. The issue tracker is for problems -- triage decides whether the root cause is a defect, a missing capability, or something else.
6
+ - name: Report a security vulnerability
7
+ url: {{project_url}}/security/advisories/new
8
+ about: Use GitHub Security Advisories for private disclosure. Do not file a public issue. See SECURITY.md.
@@ -0,0 +1,114 @@
1
+ name: Report a problem
2
+ description: Report a problem with {{project_name}}. You do not need to pre-classify it as a bug or feature -- triage decides.
3
+ title: "[problem] "
4
+ labels: ["problem", "needs-triage"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for reporting a problem. This project practises ITIL problem management -- you describe what you observed, and triage decides whether the root cause is a defect, a missing capability, a documentation gap, or something else. You do not need to choose in advance.
10
+
11
+ For security vulnerabilities, **do not file here** -- use [GitHub Security Advisories]({{project_url}}/security/advisories/new) instead. For usage questions, use [Discussions]({{project_url}}/discussions).
12
+
13
+ - type: textarea
14
+ id: description
15
+ attributes:
16
+ label: Description
17
+ description: What is happening? What did you expect instead? Describe the observation, not the fix.
18
+ placeholder: |
19
+ e.g. "When I run the tool in a fresh project, it reports no items even though the source data has them. I expected it to list them."
20
+ validations:
21
+ required: true
22
+
23
+ - type: textarea
24
+ id: symptoms
25
+ attributes:
26
+ label: Symptoms
27
+ description: Observable behaviour -- error messages, command output, transcript snippets, screenshots. Redact secrets.
28
+ placeholder: |
29
+ - Command returns exit code 1
30
+ - Output contains "project root not found"
31
+ - ...
32
+ validations:
33
+ required: true
34
+
35
+ - type: textarea
36
+ id: workaround
37
+ attributes:
38
+ label: Workaround
39
+ description: Anything you tried that got you unstuck, even if temporary. "None found" is a valid answer.
40
+ placeholder: |
41
+ Retried after restarting -- same result. No workaround found.
42
+
43
+ - type: input
44
+ id: affected-component
45
+ attributes:
46
+ label: Affected component
47
+ description: Which part of {{project_name}} is involved? "multiple" or "unsure" is a valid answer -- triage will re-scope.
48
+ placeholder: "e.g. CLI / UI / specific module"
49
+ validations:
50
+ required: true
51
+
52
+ - type: input
53
+ id: frequency
54
+ attributes:
55
+ label: Frequency
56
+ description: How often does this happen? (every time, intermittently, once, ...)
57
+ placeholder: "e.g. every time I run the command"
58
+ validations:
59
+ required: true
60
+
61
+ - type: input
62
+ id: version-local-plugin
63
+ attributes:
64
+ label: Local plugin / project version
65
+ description: The version of {{project_name}} you are running. Enter `not detected` if you cannot determine the version.
66
+ placeholder: "x.y.z"
67
+ validations:
68
+ required: true
69
+
70
+ - type: input
71
+ id: version-upstream-package
72
+ attributes:
73
+ label: Upstream package version
74
+ description: If the problem involves a non-{{project_name}} upstream package, the package name and version. Enter `not applicable` or `not detected` if neither.
75
+ placeholder: "<pkg>@<version>"
76
+
77
+ - type: input
78
+ id: version-codex
79
+ attributes:
80
+ label: Codex CLI version
81
+ description: Output of `codex --version`. Enter `not detected` if not running through Codex.
82
+ placeholder: "1.x.x"
83
+
84
+ - type: input
85
+ id: version-node
86
+ attributes:
87
+ label: Node version
88
+ description: Output of `node --version`. Enter `not detected` if Node is not part of the failure path.
89
+ placeholder: "v20.11.0"
90
+
91
+ - type: input
92
+ id: version-os
93
+ attributes:
94
+ label: Operating system
95
+ description: Output of `uname -srm` (POSIX) or platform-equivalent. Enter `not detected` if you cannot determine.
96
+ placeholder: "Darwin 25.3.0 arm64"
97
+ validations:
98
+ required: true
99
+
100
+ - type: textarea
101
+ id: evidence
102
+ attributes:
103
+ label: Evidence
104
+ description: Minimal reproduction steps, transcript links, screenshots, or related prior discussions. Feeds the investigation tasks triage will open.
105
+ placeholder: |
106
+ 1. Clone the repo
107
+ 2. Run the failing command
108
+ 3. Observe output
109
+
110
+ - type: textarea
111
+ id: additional
112
+ attributes:
113
+ label: Additional context
114
+ description: Anything else relevant -- related tickets, prior art, a hypothesis you already formed.