session-orchestrator 3.24.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/.agents/skills/architecture/SKILL.md +18 -0
  2. package/.agents/skills/autopilot/SKILL.md +17 -0
  3. package/.agents/skills/bootstrap/SKILL.md +20 -0
  4. package/.agents/skills/brainstorm/SKILL.md +22 -0
  5. package/.agents/skills/claude-md-drift-check/SKILL.md +15 -0
  6. package/.agents/skills/convergence-monitoring/SKILL.md +22 -0
  7. package/.agents/skills/debug/SKILL.md +22 -0
  8. package/.agents/skills/discovery/SKILL.md +20 -0
  9. package/.agents/skills/dispatcher/SKILL.md +15 -0
  10. package/.agents/skills/docs-orchestrator/SKILL.md +18 -0
  11. package/.agents/skills/ecosystem-health/SKILL.md +20 -0
  12. package/.agents/skills/eli5/SKILL.md +20 -0
  13. package/.agents/skills/eval/SKILL.md +21 -0
  14. package/.agents/skills/evolve/SKILL.md +21 -0
  15. package/.agents/skills/frontmatter-guard/SKILL.md +15 -0
  16. package/.agents/skills/gitlab-ops/SKILL.md +20 -0
  17. package/.agents/skills/gitlab-portfolio/SKILL.md +15 -0
  18. package/.agents/skills/grill/SKILL.md +22 -0
  19. package/.agents/skills/hook-development/SKILL.md +15 -0
  20. package/.agents/skills/mcp-builder/SKILL.md +15 -0
  21. package/.agents/skills/memory-cleanup/SKILL.md +21 -0
  22. package/.agents/skills/mode-selector/SKILL.md +17 -0
  23. package/.agents/skills/npm-publish/SKILL.md +16 -0
  24. package/.agents/skills/peekaboo-driver/SKILL.md +18 -0
  25. package/.agents/skills/persona-panel/SKILL.md +17 -0
  26. package/.agents/skills/plan/SKILL.md +20 -0
  27. package/.agents/skills/playwright-driver/SKILL.md +20 -0
  28. package/.agents/skills/quality-gates/SKILL.md +20 -0
  29. package/.agents/skills/reconcile/SKILL.md +21 -0
  30. package/.agents/skills/remote-offload/SKILL.md +20 -0
  31. package/.agents/skills/repo-audit/SKILL.md +16 -0
  32. package/.agents/skills/session-end/SKILL.md +20 -0
  33. package/.agents/skills/session-plan/SKILL.md +20 -0
  34. package/.agents/skills/session-start/SKILL.md +20 -0
  35. package/.agents/skills/spinout/SKILL.md +16 -0
  36. package/.agents/skills/sunset-review/SKILL.md +16 -0
  37. package/.agents/skills/test-runner/SKILL.md +20 -0
  38. package/.agents/skills/tmux-layout/SKILL.md +21 -0
  39. package/.agents/skills/using-orchestrator/SKILL.md +17 -0
  40. package/.agents/skills/vault-mirror/SKILL.md +15 -0
  41. package/.agents/skills/vault-sync/SKILL.md +15 -0
  42. package/.agents/skills/wave-executor/SKILL.md +20 -0
  43. package/.agents/skills/write-executable-plan/SKILL.md +22 -0
  44. package/.claude-plugin/marketplace.json +1 -1
  45. package/.claude-plugin/plugin.json +1 -1
  46. package/.codex-plugin/plugin.json +1 -1
  47. package/.cursor/commands/autopilot.md +2 -2
  48. package/.cursor/commands/bootstrap.md +1 -1
  49. package/.cursor/commands/brainstorm.md +1 -1
  50. package/.cursor/commands/debug.md +1 -1
  51. package/.cursor/commands/discovery.md +1 -1
  52. package/.cursor/commands/dispatcher.md +2 -2
  53. package/.cursor/commands/eli5.md +2 -2
  54. package/.cursor/commands/eval.md +2 -2
  55. package/.cursor/commands/evolve.md +1 -1
  56. package/.cursor/commands/go.md +1 -1
  57. package/.cursor/commands/grill.md +2 -2
  58. package/.cursor/commands/memory-cleanup.md +2 -2
  59. package/.cursor/commands/persona-panel.md +1 -1
  60. package/.cursor/commands/plan.md +1 -1
  61. package/.cursor/commands/portfolio.md +1 -1
  62. package/.cursor/commands/reconcile.md +2 -2
  63. package/.cursor/commands/release.md +2 -2
  64. package/.cursor/commands/session.md +2 -2
  65. package/.cursor/commands/spinout.md +2 -2
  66. package/.cursor/commands/sunset-review.md +2 -2
  67. package/.cursor/commands/templates-ack.md +2 -2
  68. package/.cursor/commands/test.md +2 -2
  69. package/.cursor/skills/brainstorm/SKILL.md +1 -1
  70. package/.cursor/skills/eval/SKILL.md +1 -1
  71. package/.cursor/skills/quality-gates/SKILL.md +1 -1
  72. package/.cursor/skills/remote-offload/SKILL.md +1 -1
  73. package/.orchestrator/policy/blocked-commands.json +121 -0
  74. package/.orchestrator/policy/ecosystem.schema.json +66 -0
  75. package/.orchestrator/policy/quality-gates.example.json +16 -0
  76. package/.orchestrator/policy/quality-gates.schema.json +38 -0
  77. package/.orchestrator/policy/templates-policy.json +27 -0
  78. package/.orchestrator/policy/test-profiles.json +47 -0
  79. package/AGENTS.md +225 -0
  80. package/CHANGELOG.md +1125 -2
  81. package/NOTICE +11 -6
  82. package/README.md +127 -94
  83. package/agents/eval-judge.md +1 -1
  84. package/agents/skill-applied-judge.md +1 -1
  85. package/assets/wave-lifecycle.svg +98 -0
  86. package/commands/release.md +6 -3
  87. package/commands/session.md +18 -3
  88. package/docs/README.md +4 -0
  89. package/{agents/AGENTS.md → docs/agent-authoring.md} +19 -26
  90. package/docs/baseline.md +67 -0
  91. package/docs/ci-setup.md +108 -62
  92. package/docs/codex-setup.md +65 -21
  93. package/docs/components.md +36 -15
  94. package/docs/cursor-setup.md +6 -2
  95. package/docs/events-schema.md +9 -6
  96. package/docs/instruction-delivery.md +62 -0
  97. package/{agents/memory-proposal-collector.md → docs/memory-proposal-flow.md} +1 -8
  98. package/docs/migration-v4.md +341 -0
  99. package/docs/pi-setup.md +6 -1
  100. package/docs/plugin-architecture-v3.md +1 -1
  101. package/docs/rule-authoring.md +85 -19
  102. package/docs/scope-collision-guard.md +5 -5
  103. package/docs/session-config-reference.md +57 -56
  104. package/docs/session-config-template.md +6 -29
  105. package/docs/telemetry.md +157 -3
  106. package/docs/vault-docs-architecture.md +50 -11
  107. package/hooks/_lib/hook-import-set.json +1487 -0
  108. package/hooks/_lib/subagent-transcript.mjs +562 -0
  109. package/hooks/config-protection.mjs +2 -2
  110. package/hooks/cwd-change-restore.mjs +2 -2
  111. package/hooks/enforce-commands.mjs +69 -0
  112. package/hooks/hooks-codex.json +1 -1
  113. package/hooks/hooks-cursor.json +10 -0
  114. package/hooks/hooks-pi.json +5 -0
  115. package/hooks/hooks.json +6 -1
  116. package/hooks/loop-guard.mjs +3 -3
  117. package/hooks/on-session-end.mjs +2 -2
  118. package/hooks/on-session-start.mjs +103 -2
  119. package/hooks/on-stop.mjs +36 -11
  120. package/hooks/operator-steer.mjs +2 -2
  121. package/hooks/post-bash-write-verify.mjs +85 -0
  122. package/hooks/post-edit-import-probe.mjs +344 -0
  123. package/hooks/post-subagent-discovery-validator.mjs +187 -431
  124. package/hooks/post-tool-batch-wave-signal.mjs +118 -4
  125. package/hooks/post-tool-failure-corrective-context.mjs +2 -2
  126. package/hooks/post-tooluse-frontend-slop.mjs +3 -3
  127. package/hooks/pre-bash-destructive-guard.mjs +39 -13
  128. package/hooks/skill-invocation-telemetry.mjs +17 -5
  129. package/hooks/subagent-telemetry.mjs +13 -4
  130. package/monitors/monitors.json +3 -3
  131. package/package.json +9 -1
  132. package/pi/prompts/session.md +2 -2
  133. package/plugin.json +27 -0
  134. package/scripts/backfill-abandoned-sessions.mjs +50 -4
  135. package/scripts/backfill-learnings-from-vault.mjs +9 -3
  136. package/scripts/dialectic-deriver.mjs +73 -8
  137. package/scripts/export-hw-learnings.mjs +113 -1
  138. package/scripts/generate-agents-skills.mjs +378 -0
  139. package/scripts/generate-cursor-adapter.mjs +45 -8
  140. package/scripts/generate-hook-import-set.mjs +249 -0
  141. package/scripts/lib/agent-status.mjs +13 -2
  142. package/scripts/lib/auto-dream.mjs +38 -36
  143. package/scripts/lib/autonomy/suitability.mjs +6 -0
  144. package/scripts/lib/autopilot/loop.mjs +2 -2
  145. package/scripts/lib/ci-status-banner.mjs +220 -75
  146. package/scripts/lib/codex/plugin-contract.mjs +82 -6
  147. package/scripts/lib/config/auto-dream.mjs +2 -1
  148. package/scripts/lib/config/block-header.mjs +8 -0
  149. package/scripts/lib/config/block-preprocess.mjs +177 -0
  150. package/scripts/lib/config/broken-window.mjs +2 -1
  151. package/scripts/lib/config/cold-start.mjs +2 -1
  152. package/scripts/lib/config/config-protection.mjs +22 -2
  153. package/scripts/lib/config/context-coverage.mjs +2 -1
  154. package/scripts/lib/config/cross-repo.mjs +2 -1
  155. package/scripts/lib/config/custom-phases.mjs +2 -1
  156. package/scripts/lib/config/dialectic.mjs +2 -1
  157. package/scripts/lib/config/discovery-validator.mjs +2 -1
  158. package/scripts/lib/config/dispatcher-autonomy-capture.mjs +24 -1
  159. package/scripts/lib/config/dispatcher-autonomy.mjs +2 -1
  160. package/scripts/lib/config/docs-orchestrator.mjs +2 -1
  161. package/scripts/lib/config/docs-staleness.mjs +2 -1
  162. package/scripts/lib/config/drift-check.mjs +2 -1
  163. package/scripts/lib/config/eval.mjs +2 -1
  164. package/scripts/lib/config/events-rotation.mjs +2 -1
  165. package/scripts/lib/config/evolve.mjs +8 -2
  166. package/scripts/lib/config/frontend-slop-hook.mjs +7 -3
  167. package/scripts/lib/config/gitlab-portfolio.mjs +2 -1
  168. package/scripts/lib/config/handover-gate.mjs +2 -1
  169. package/scripts/lib/config/health-endpoints.mjs +7 -2
  170. package/scripts/lib/config/issue-budget.mjs +2 -1
  171. package/scripts/lib/config/loop-guard.mjs +2 -1
  172. package/scripts/lib/config/memory.mjs +2 -1
  173. package/scripts/lib/config/moc-staleness.mjs +2 -1
  174. package/scripts/lib/config/persona-gate-wave.mjs +2 -1
  175. package/scripts/lib/config/private-config-dir.mjs +67 -0
  176. package/scripts/lib/config/reconcile.mjs +2 -1
  177. package/scripts/lib/config/remote-hosts.mjs +2 -1
  178. package/scripts/lib/config/section-extractor.mjs +7 -1
  179. package/scripts/lib/config/skill-evolution.mjs +2 -1
  180. package/scripts/lib/config/slopcheck.mjs +2 -1
  181. package/scripts/lib/config/state-md-lock.mjs +2 -1
  182. package/scripts/lib/config/templates-first.mjs +2 -1
  183. package/scripts/lib/config/test.mjs +2 -1
  184. package/scripts/lib/config/vault-integration.mjs +7 -1
  185. package/scripts/lib/config/vault-mirror-quality.mjs +2 -1
  186. package/scripts/lib/config/vault-staleness.mjs +2 -1
  187. package/scripts/lib/config/vault-sync.mjs +2 -1
  188. package/scripts/lib/config/verification-auto-fix.mjs +2 -1
  189. package/scripts/lib/config/wave-reviewers.mjs +2 -1
  190. package/scripts/lib/config/worktree-orphans.mjs +2 -1
  191. package/scripts/lib/convergence-monitor.mjs +82 -16
  192. package/scripts/lib/dispatcher/rank.mjs +124 -48
  193. package/scripts/lib/ecosystem-health.mjs +16 -2
  194. package/scripts/lib/eval/engine.mjs +9 -1
  195. package/scripts/lib/eval/session-resolve.mjs +23 -4
  196. package/scripts/lib/events.mjs +22 -6
  197. package/scripts/lib/frontmatter-guard.mjs +131 -13
  198. package/scripts/lib/gates/gate-full.mjs +26 -0
  199. package/scripts/lib/gates/gate-helpers.mjs +76 -0
  200. package/scripts/lib/hardware-pattern-detector.mjs +18 -1
  201. package/scripts/lib/harness-audit/categories/category4.mjs +31 -11
  202. package/scripts/lib/host-identity.mjs +50 -11
  203. package/scripts/lib/instruction-budget-guard.mjs +171 -5
  204. package/scripts/lib/learnings/evolve-telemetry.mjs +178 -0
  205. package/scripts/lib/learnings/io.mjs +60 -6
  206. package/scripts/lib/memory-proposals/store.mjs +30 -22
  207. package/scripts/lib/owner-config-banner.mjs +43 -6
  208. package/scripts/lib/owner-config-loader.mjs +21 -10
  209. package/scripts/lib/owner-interview.mjs +3 -3
  210. package/scripts/lib/owner-yaml.mjs +207 -14
  211. package/scripts/lib/platform.mjs +108 -15
  212. package/scripts/lib/plugin-update-banner.mjs +406 -0
  213. package/scripts/lib/project-hygiene.mjs +38 -2
  214. package/scripts/lib/qg-command-drift-banner.mjs +50 -12
  215. package/scripts/lib/quality-gate.mjs +133 -44
  216. package/scripts/lib/reconcile/emitter.mjs +68 -6
  217. package/scripts/lib/reconcile/engine.mjs +13 -4
  218. package/scripts/lib/reconcile/idempotency.mjs +37 -4
  219. package/scripts/lib/reconcile/writer.mjs +40 -18
  220. package/scripts/lib/session-close-backfill.mjs +67 -9
  221. package/scripts/lib/session-id.mjs +12 -23
  222. package/scripts/lib/session-identity/own-session.mjs +125 -10
  223. package/scripts/lib/session-lock-shape.mjs +43 -0
  224. package/scripts/lib/session-lock.mjs +5 -10
  225. package/scripts/lib/session-registry.mjs +25 -9
  226. package/scripts/lib/session-schema/constants.mjs +36 -2
  227. package/scripts/lib/session-schema/validator.mjs +38 -4
  228. package/scripts/lib/session-start-probes.mjs +18 -1
  229. package/scripts/lib/sessions-staleness-banner.mjs +18 -11
  230. package/scripts/lib/skill-health/join.mjs +17 -4
  231. package/scripts/lib/state-md.mjs +78 -0
  232. package/scripts/lib/sunset/walker.mjs +6 -0
  233. package/scripts/lib/telemetry/schema.mjs +181 -9
  234. package/scripts/lib/telemetry/sync.mjs +368 -12
  235. package/scripts/lib/validate/check-agents-skills.mjs +327 -0
  236. package/scripts/lib/validate/check-agents.mjs +3 -3
  237. package/scripts/lib/validate/check-cursor-adapter.mjs +234 -72
  238. package/scripts/lib/validate/check-hooks-symmetry.mjs +45 -16
  239. package/scripts/lib/validate/check-owner-leakage.mjs +281 -20
  240. package/scripts/lib/validate/check-skill-links.mjs +163 -0
  241. package/scripts/lib/validate/check-skill-script-paths.mjs +47 -28
  242. package/scripts/lib/validate/check-unwired-features.mjs +0 -2
  243. package/scripts/lib/validate/check-validator-registration.mjs +10 -4
  244. package/scripts/lib/validate/enumerate-repo-files.mjs +317 -0
  245. package/scripts/lib/vault-backfill/template.mjs +63 -6
  246. package/scripts/lib/vault-mirror/process.mjs +165 -42
  247. package/scripts/lib/vault-mirror/telemetry.mjs +2 -2
  248. package/scripts/lib/vault-status/narrative-mirror.mjs +127 -18
  249. package/scripts/lib/wave-executor/dispatch-common.mjs +164 -0
  250. package/scripts/lib/wave-executor/foreign-dispatch.mjs +7 -142
  251. package/scripts/lib/wave-executor/remote-dispatch.mjs +5 -7
  252. package/scripts/lib/wave-resource-gate.mjs +8 -2
  253. package/scripts/lib/wave-sizing.mjs +4 -1
  254. package/scripts/lib/wave-transcript-tail.mjs +118 -4
  255. package/scripts/materialize-wave-scope.mjs +12 -5
  256. package/scripts/memory-propose.mjs +19 -5
  257. package/scripts/migrate-cold-start-seed.mjs +4 -1
  258. package/scripts/parse-config.mjs +60 -3
  259. package/scripts/release.mjs +337 -29
  260. package/scripts/repair-invalid-sessions.mjs +3 -3
  261. package/scripts/run-quality-gate.mjs +128 -11
  262. package/scripts/sweep-expired-learnings.mjs +90 -0
  263. package/scripts/sync-vault-schema.mjs +3 -1
  264. package/scripts/telemetry.mjs +2 -2
  265. package/scripts/validate-plugin.mjs +161 -0
  266. package/scripts/validate-wave-scope.mjs +28 -8
  267. package/scripts/wave-scope-binding.mjs +215 -0
  268. package/skills/_shared/instruction-file-resolution.md +10 -0
  269. package/skills/_shared/parallel-aware-preamble.md +1 -0
  270. package/skills/_shared/platform-tools.md +1 -1
  271. package/skills/_shared/state-ownership.md +1 -1
  272. package/skills/architecture/SKILL.md +7 -5
  273. package/skills/{domain-model/SKILL.md → architecture/references/domain-model.md} +9 -9
  274. package/skills/autopilot/SKILL.md +4 -18
  275. package/skills/claude-md-drift-check/SKILL.md +5 -1
  276. package/skills/claude-md-drift-check/checker.mjs +62 -2
  277. package/skills/convergence-monitoring/SIGNALS.md +55 -0
  278. package/skills/discovery/probes/vault-staleness.mjs +37 -13
  279. package/skills/discovery/probes-arch.md +20 -18
  280. package/skills/dispatcher/SKILL.md +3 -2
  281. package/skills/evolve/SKILL.md +65 -26
  282. package/skills/frontmatter-guard/SKILL.md +11 -5
  283. package/skills/npm-publish/SKILL.md +1 -1
  284. package/skills/reconcile/SKILL.md +33 -0
  285. package/skills/remote-offload/SKILL.md +1 -1
  286. package/skills/session-end/SKILL.md +18 -905
  287. package/skills/session-end/phase-3-6-tail.md +10 -3
  288. package/skills/session-end/plan-verification.md +221 -155
  289. package/skills/session-end/references/phase-2-quality-gate.md +93 -0
  290. package/skills/session-end/references/phase-3-documentation-updates.md +229 -0
  291. package/skills/session-end/references/phase-4a-worktree-cleanup.md +120 -0
  292. package/skills/session-end/references/phase-4b-worktree-orphan-sweep.md +58 -0
  293. package/skills/session-end/references/phase-5-issue-cleanup.md +104 -0
  294. package/skills/session-end/references/session-summary-template.md +62 -0
  295. package/skills/session-plan/SKILL.md +49 -0
  296. package/skills/session-start/SKILL.md +22 -904
  297. package/skills/session-start/phase-8-5-express-path.md +1 -1
  298. package/skills/session-start/references/phase-1-1-dispatcher-autonomy-capture.md +55 -0
  299. package/skills/session-start/references/phase-1-2-session-lock.md +140 -0
  300. package/skills/session-start/references/phase-1-5-session-continuity.md +254 -0
  301. package/skills/session-start/references/phase-1-7-vault-status-board.md +53 -0
  302. package/skills/session-start/references/phase-2-7-portfolio-snapshot.md +75 -0
  303. package/skills/session-start/references/phase-4-ssot-environment-check.md +155 -0
  304. package/skills/session-start/references/phase-6-5-forced-reads.md +75 -0
  305. package/skills/session-start/references/phase-6-6-project-intelligence.md +81 -0
  306. package/skills/session-start/references/phase-6-7-memory-banner-telemetry-consent.md +103 -0
  307. package/skills/vault-sync/validator.mjs +21 -27
  308. package/skills/wave-executor/SKILL.md +15 -1
  309. package/skills/wave-executor/references/wave-loop-dispatch.md +612 -0
  310. package/skills/wave-executor/references/wave-loop-review.md +570 -0
  311. package/skills/wave-executor/references/wave-loop-scope-manifest.md +162 -0
  312. package/skills/wave-executor/wave-loop.md +14 -1309
  313. package/templates/_shared/journey-manifest.md +10 -6
  314. package/.cursor/commands/autopilot-multi.md +0 -14
  315. package/.cursor/commands/contract-version-bump.md +0 -14
  316. package/.cursor/commands/journey-audit.md +0 -14
  317. package/.cursor/skills/contract-version-bump/SKILL.md +0 -12
  318. package/.cursor/skills/daily/SKILL.md +0 -12
  319. package/.cursor/skills/domain-model/SKILL.md +0 -13
  320. package/.cursor/skills/journey-audit/SKILL.md +0 -13
  321. package/.cursor/skills/skill-creator/SKILL.md +0 -13
  322. package/.cursor/skills/ubiquitous-language/SKILL.md +0 -13
  323. package/commands/autopilot-multi.md +0 -74
  324. package/commands/contract-version-bump.md +0 -28
  325. package/commands/journey-audit.md +0 -43
  326. package/pi/prompts/autopilot-multi.md +0 -12
  327. package/pi/prompts/contract-version-bump.md +0 -12
  328. package/pi/prompts/journey-audit.md +0 -12
  329. package/scripts/autopilot-multi.mjs +0 -885
  330. package/scripts/backfill-learnings-expires.mjs +0 -196
  331. package/scripts/backfill-learnings.mjs +0 -203
  332. package/scripts/fleet-instruction-scan.mjs +0 -141
  333. package/scripts/lib/autopilot/dep-graph.mjs +0 -417
  334. package/scripts/lib/autopilot/multi-killswitch.mjs +0 -184
  335. package/scripts/lib/webhook-url.mjs +0 -105
  336. package/scripts/lifecycle-sim-v6.mjs +0 -347
  337. package/scripts/migrate-learnings-jsonl.mjs +0 -189
  338. package/scripts/migrate-subagents-jsonl.mjs +0 -196
  339. package/scripts/upload-social-preview.mjs +0 -316
  340. package/skills/_shared/model-selection.md +0 -64
  341. package/skills/contract-version-bump/SKILL.md +0 -219
  342. package/skills/daily/SKILL.md +0 -222
  343. package/skills/daily/generate.sh +0 -92
  344. package/skills/daily/templates/daily.md.tpl +0 -36
  345. package/skills/journey-audit/SKILL.md +0 -270
  346. package/skills/skill-creator/SKILL.md +0 -168
  347. package/skills/ubiquitous-language/SKILL.md +0 -97
  348. package/skills/vault-sync/package-lock.json +0 -40
  349. /package/skills/{domain-model → architecture/references}/ADR-FORMAT.md +0 -0
  350. /package/skills/{domain-model → architecture/references}/CONTEXT-FORMAT.md +0 -0
@@ -1,270 +0,0 @@
1
- ---
2
- name: journey-audit
3
- description: >
4
- Use this skill when the user wants the PRODUCT audited from the outside in — what the website
5
- promises vs what the code does vs what a real user experiences vs what actually arrives by mail
6
- vs what the data says is used. Runs a 7-role read-only wave (R5 writes only under an explicit
7
- SAFETY block) against a per-repo `.orchestrator/journey-manifest.md` and writes a dossier to
8
- docs/audits/. Distinct from /discovery, which checks code quality inside-out — this checks
9
- product truth outside-in; they complement, neither replaces the other. Triggers "journey audit",
10
- "Nutzersicht-Audit", "audit the product from the user's side", "/journey-audit".
11
- model: inherit
12
- color: purple
13
- tools: Read, Grep, Glob, Bash, Write, Task
14
- ---
15
-
16
- # Journey Audit
17
-
18
- > Outside-in product audit as a repeatable deep session. Code review checks code against code;
19
- > this checks the product against the user's experience. Quarterly, never a CI component.
20
-
21
- ## Purpose
22
-
23
- The most expensive defects of a consumer product's first run (session id redacted) — a core
24
- feature with no entry point anywhere in the UI, burned free quota, a plan gate that could be
25
- bypassed, a claim-vs-code contradiction, EUR copy in a USD context — are **invisible to every
26
- code-centric check**. They are not bugs in a function; they are gaps between five surfaces —
27
- marketing copy, code constants, live UI, outbound mail, real usage data — that no single
28
- surface can reveal.
29
-
30
- This skill dispatches seven roles that each own one surface, then makes the coordinator personally
31
- re-verify every P0 before it is written down. The re-verification is the value, not the fan-out:
32
- the first run caught 2 agent errors that way and confirmed 3 real P0s.
33
-
34
- ## Phase 0: Gates
35
-
36
- ### 0.1 Bootstrap Gate
37
-
38
- Read `skills/_shared/bootstrap-gate.md` and execute the gate check. GATE_CLOSED → invoke
39
- `skills/bootstrap/SKILL.md` first. GATE_OPEN → continue.
40
-
41
- ### 0.2 Manifest HARD-GATE
42
-
43
- <HARD-GATE>
44
- Read `.orchestrator/journey-manifest.md` in the target repo (or the path passed as `$ARGUMENTS`).
45
-
46
- **A — File missing or empty → REFUSE the whole run.** Say exactly this, then stop:
47
-
48
- > `/journey-audit` needs `.orchestrator/journey-manifest.md` in this repo and it is not there.
49
- > The audit is repo-specific: without personas, entry points, truth-SSOTs, the chat-interview key
50
- > and the SAFETY block, seven agents would invent their own definition of "correct" and every
51
- > finding would be unfalsifiable.
52
- > Copy the template — `templates/_shared/journey-manifest.md` in the session-orchestrator plugin —
53
- > to `.orchestrator/journey-manifest.md`, fill it in, then re-run `/journey-audit`.
54
-
55
- **B — Manifest present, `## SAFETY` heading absent or its body empty → REFUSE R5 ONLY.** R5 is the
56
- only role that touches production with a real account. Say:
57
-
58
- > The manifest has no filled `## SAFETY` block, so R5 (real end-to-end run against production) is
59
- > NOT dispatched. Running as dry-run: R1–R4 + R7 (R6 additionally needs the read-only DB
60
- > credentials named in the manifest). Fill in allowed accounts/events, no-go actions, the checkout
61
- > limit and the cleanup rule to enable R5.
62
-
63
- Do NOT infer a SAFETY block from other sections, do NOT ask the operator to dictate one into chat,
64
- do NOT dispatch R5 "read-only, just this once". A production write without a written, committed
65
- safety envelope is the one thing this skill never does.
66
- </HARD-GATE>
67
-
68
- Both gates are cheap and mechanical:
69
-
70
- ```bash
71
- MANIFEST="${1:-.orchestrator/journey-manifest.md}"
72
- [ -s "$MANIFEST" ] || { echo "GATE-A: no manifest"; exit 1; }
73
- awk '/^## SAFETY/{f=1;next} /^## /{f=0} f&&NF{c++} END{exit c>0?0:1}' "$MANIFEST" \
74
- || echo "GATE-B: SAFETY block absent or empty → R5 disabled"
75
- ```
76
-
77
- ### 0.3 Peer-session check (before dispatch, not after)
78
-
79
- Run `ListAgents` / read `.orchestrator/` session locks and check for peer sessions in this working
80
- copy per `.claude/rules/parallel-sessions.md`. A journey audit reads wide and R5 writes to
81
- production — a peer holding the same files must know before the wave starts, not from the diff.
82
- Announce the audit and the file scope you will touch; the audit itself claims almost no write
83
- scope, which is exactly why it is easy to forget.
84
-
85
- ## Phase 1: Read the manifest
86
-
87
- Parse the manifest into `$MANIFEST` and derive per-role inputs. Every role prompt below is filled
88
- from these fields — an empty field is reported to the operator, never guessed:
89
-
90
- `personas` · `entry_points` · `truth_ssots` · `touchpoints` (template dir, send path, cron sources,
91
- render idiom) · `chat_interview` (question → expected answer → SSOT) · `safety` · `credentials`
92
- (env-var NAMES) · `realdata_queries` · `platform_expectation` · `known_exceptions`.
93
-
94
- ## Phase 2: The wave — R1–R7
95
-
96
- All roles are **read-only** except R5. All run in parallel in one wave; none depends on another's
97
- output (the coordinator, not an agent, joins their findings).
98
-
99
- | R | Rolle | Generisch | Aus dem Manifest |
100
- |---|-------|-----------|------------------|
101
- | R1 | Flow-Zensus | Trigger→Empfänger→Zeitpunkt→Dedupe map of every outbound touchpoint (mail/push/webhook) | Template dir, send path, cron sources |
102
- | R2 | Artefakt-Rendering | Render templates to HTML, screenshots desktop/mobile/dark, consistency matrix | Render idiom, example props |
103
- | R3 | Claim-vs-Code-Matrix | Every marketing/FAQ/chat claim against the SSOT constants; feature inventory × surfaces | SSOT files, i18n namespaces, chat fact source |
104
- | R4 | Anonymer Live-Rundgang | agent-browser desktop+mobile, chat interview against the truth key, dead links, console | Route list, chat questions + expected answers |
105
- | R5 | Echter E2E-Durchstich | Prod, real account, actually execute each core flow, DB counter-check, mail-log reconciliation | **SAFETY block (mandatory)** |
106
- | R6 | Realdaten-Funnel | Usage funnel, never-fired flows, delivery defects, name what is not measurable | Read-only DB access, identity rules, mail-provider API |
107
- | R7 | Plattform-Ausnutzung | Self-built vs platform matrix (hosting/DB/realtime/queues/CDN/WAF), limits at 10× | CLI logins, expected plan, open perf issues |
108
-
109
- ### Shared prompt preamble (prepend to every role)
110
-
111
- > You are role `<R#>` of a journey audit of `<repo>`. Manifest: `.orchestrator/journey-manifest.md`
112
- > — read it first; it is your only definition of "correct". You are **read-only**: no `Edit`, no
113
- > `Write` outside your own report, no git write operations (PSA-007), no production writes.
114
- > Every distributional claim ("all N routes", "no template does X") carries the executed command
115
- > and its output (PSA-006). A finding you cannot reproduce with a quoted command is a suspicion —
116
- > label it as one. Findings listed under `Bekannte Ausnahmen` in the manifest are reported as
117
- > `known-exception`, never as new. Severity: **P0** = money, data loss, or a core flow unreachable ·
118
- > **P1** = a broken flow or a UX dead end · **P2** = content/platform. Return the FULL report as
119
- > your last message.
120
-
121
- ### Role prompt skeletons
122
-
123
- Each is self-contained; fill the `<…>` from `$MANIFEST`.
124
-
125
- **R1 — Flow-Zensus.** Inputs: template dir `<…>`, send path `<…>`, cron sources `<…>`.
126
- Task: enumerate every outbound touchpoint and produce one row per flow: trigger (code location) →
127
- recipient (which persona) → timing → dedupe/idempotency → is it reachable at all. Grep the send
128
- path for callers; a template with zero callers is a P1 finding, a caller with no dedupe on a
129
- money-relevant flow is P0. Output: Markdown table + a list of `never-fired` candidates with the
130
- grep that proves zero callers.
131
-
132
- **R2 — Artefakt-Rendering.** Inputs: render idiom `<…>`, example props `<…>`.
133
- Task: render every template found by R1's directory to HTML, screenshot desktop + mobile + dark,
134
- and build a consistency matrix (logo, sender, footer, legal block, CTA, language, currency).
135
- Output: matrix table + the artifact paths under `.orchestrator/journey-audit/<date>/`, plus every
136
- divergence as a finding. Do not fix a template; report it.
137
-
138
- **R3 — Claim-vs-Code-Matrix.** Inputs: SSOT files `<…>`, i18n namespaces `<…>`, chat fact source `<…>`.
139
- Task: extract every quantitative or capability claim from marketing pages, FAQ, pricing, chat facts
140
- and mail copy; compare each against the SSOT constant. One row: claim · where it is said · SSOT
141
- value · verdict (`match` / `drift` / `unbacked`). Then a feature inventory × surfaces grid: a
142
- feature that exists in code but appears on no surface is a P0 candidate ("no entry point").
143
- **i18n files are owned by R3 alone** — no other role opens them.
144
- Output: two tables + findings.
145
-
146
- **R4 — Anonymer Live-Rundgang.** Inputs: route list `<…>`, chat questions + expected answers `<…>`.
147
- Task: `agent-browser`, logged OUT, desktop and mobile viewport. Walk every route: dead links,
148
- console errors, layout breaks, CTA that goes nowhere. Then run the chat interview verbatim and
149
- score each answer against the expected answer from the manifest (`match` / `drift` / `refused` /
150
- `hallucinated`). Output: route table (status, console, findings), interview table, screenshots.
151
- Read-only: never submit a form that creates data, never sign up.
152
-
153
- **R5 — Echter E2E-Durchstich.** Inputs: SAFETY block `<…>`, credentials by env-var NAME `<…>`.
154
- Task: with the allowed account only, actually execute each core flow end to end in production;
155
- counter-check in the DB read-only that the expected records exist; reconcile against the mail log.
156
- **Before every step, re-read the SAFETY block and state which rule permits this step.** Stop at the
157
- first no-go, do not improvise around a block, honour the checkout limit exactly, and run the
158
- cleanup rule at the end and prove it ran. Output: per-flow trace (step → observed → expected →
159
- verdict), the DB counter-check output, the cleanup proof.
160
-
161
- **R6 — Realdaten-Funnel.** Inputs: read-only queries `<…>`, identity rules `<…>`, mail-provider API `<…>`.
162
- Task: run the manifest's `SELECT`s only. Build the funnel per persona, list flows that never fired
163
- in production, and pull delivery defects from the mail provider (bounces, suppressions, a
164
- permanently silenced owner address). Then name explicitly what the data CANNOT answer — an unnamed
165
- blind spot reads as a zero. Output: funnel table, never-fired list, delivery-defect list,
166
- `not-measurable` list. No writes, no schema changes, no query outside the manifest.
167
-
168
- **R7 — Plattform-Ausnutzung.** Inputs: CLI logins `<…>`, expected plan/tier `<…>`, open perf issues `<…>`.
169
- Task: self-built vs platform matrix across hosting, DB, realtime, queues, CDN, WAF, cron, mail:
170
- what does the repo hand-roll that the paid platform already provides, and what breaks at 10× today's
171
- load (quote the actual limit from the provider CLI/API, not from memory). Output: matrix
172
- (capability · self-built? · platform feature · effort to switch · limit at 10×) + findings.
173
-
174
- ## Phase 3: Koordinator-Disziplin
175
-
176
- Numbered MUSTs. This phase is the skill; the wave is only its input.
177
-
178
- 1. **Every P0 claim is re-verified by the coordinator, individually, with its OWN grep/curl/DB read,
179
- before it enters the dossier.** Not "the agent quoted a command" — you run one yourself, and the
180
- dossier carries YOUR command and output. An unreproduced P0 is downgraded to P1 with the note
181
- `agent claim, not reproduced`, or dropped. First run: 2 of 5 P0 claims were agent errors
182
- ("instantly unreachable" — it was selectable in the UI; "USD on prod" — a session artifact).
183
- 2. **A finding is attributed.** Every dossier row names the role that found it and the command that
184
- proves it — the reader must be able to re-run it without asking anyone.
185
- 3. **i18n files are owned by exactly ONE agent (R3).** They were the known contention point in the
186
- first run: many roles want to quote them, and a second reader turns into a second writer the
187
- moment a fix is suggested. Same rule for any other file two roles both want.
188
- 4. **Peer-session check before the wave starts** (Phase 0.3), not after the diff.
189
- 5. **The coordinator never lets an agent write the dossier.** Agents return reports; the joining,
190
- de-duplication and severity decision are the coordinator's, because contradictions between two
191
- agents are only visible in one place.
192
- 6. **Contradictions are reported as contradictions.** Two roles disagreeing is a finding about the
193
- product, not a merge conflict to smooth over.
194
- 7. **No fixes during the audit.** Findings only. The fix wave is Phase 5 and is a separate decision.
195
-
196
- ## Phase 4: Dossier
197
-
198
- Write `docs/audits/YYYY-MM-DD-user-journey-audit.md` with this fixed section order:
199
-
200
- 1. `## P0 — Geld & Kern-Flows` (each: symptom · evidence (coordinator's own command + output) ·
201
- impact · suggested fix · role)
202
- 2. `## P1 — Flows`
203
- 3. `## P1 — UX`
204
- 4. `## P2 — Inhalt`
205
- 5. `## P2 — Plattform`
206
- 6. `## Realdaten` (funnel, never-fired flows, delivery defects, explicitly not-measurable)
207
- 7. `## Marketing-Hebel` (what the product does well and says nowhere)
208
-
209
- Header carries: date, repo, HEAD SHA, roles dispatched (and which were skipped, with the reason —
210
- "R5 skipped: no SAFETY block" is a result, not a gap), manifest path, artifact directory.
211
-
212
- ## Phase 5: Closing AskUserQuestion
213
-
214
- One `AskUserQuestion` call, per `.claude/rules/ask-via-tool.md` (option 1 `(Recommended)`, every
215
- description carries reason + cost + consequence, `header` ≤ 12 codepoints):
216
-
217
- ```
218
- AskUserQuestion({ questions: [
219
- { question: "Which fix packages should the follow-up wave carry?",
220
- header: "Fix-Wellen", multiSelect: true,
221
- options: [
222
- { label: "P0 money+core (Recommended)", description: "The <N> P0s I re-verified myself. Blocks revenue/core flow today; ~<X>h; freezes nothing else." },
223
- { label: "P1 flows", description: "<N> broken/undedupliced flows. ~<X>h; needs the R1 map as input." },
224
- { label: "P1 UX", description: "<N> dead ends. Cheap individually, touches i18n — one owner." },
225
- { label: "P2 content+platform", description: "<N> items. No user impact today; do in cooldown." } ] },
226
- { question: "Create issues for the selected packages?",
227
- header: "Issues", multiSelect: false,
228
- options: [
229
- { label: "Yes, batch now (Recommended)", description: "One issue per finding via gitlab-ops; labels priority::critical|high|medium + area:* + type:bug/feature. ~<N> issues; respects issue-budget." },
230
- { label: "Dossier only", description: "No issues; the dossier stays the record. Choose when the backlog is already over budget." } ] } ] })
231
- ```
232
-
233
- Issue creation follows `skills/gitlab-ops/SKILL.md` § Label Taxonomy: `priority::critical` for P0,
234
- `priority::high` for P1, `priority::medium` for P2, plus the repo's `area:` and `type:` axes. Each
235
- issue links back to the dossier section that produced it.
236
-
237
- ## Offload note (R6/R7)
238
-
239
- R6 and R7 are pure CLI/API roles — no browser, no repo writes — so they can run headless on a
240
- second machine (`claude -p "<prompt>"`, see the `m5-offload` skill). Two rules from the first run,
241
- both learned the hard way:
242
-
243
- - **`claude -p` prints only the LAST message.** The prompt MUST end with: *"Return the complete
244
- report in your last message — not a summary, not a pointer to a file. Nothing you say before the
245
- last message will be read."*
246
- - **No background processes.** The prompt MUST forbid `&`, `run_in_background`, and any "I'll keep
247
- it running" pattern: the process is killed when `-p` returns, and a half-finished role looks
248
- identical to a clean one.
249
-
250
- ## Cadence & Abgrenzung
251
-
252
- - **Quarterly, or after a large feature drop.** Deliberately **not a CI component** — it is
253
- expensive and judgment-heavy, and a judgment-heavy gate that runs on every pipeline becomes a
254
- rubber stamp.
255
- - **Optional monthly light variant:** R3 + R4 only, as a scheduled cloud session.
256
- - **vs `/discovery`:** discovery checks code quality inside-out (probes over the tree);
257
- journey-audit checks product truth outside-in (five user-facing surfaces against each other).
258
- Neither replaces the other; a repo needs both.
259
- - **Follow-through:** after each run, freeze the mechanizable parts per repo — a `report:*` script,
260
- a claim-drift test pinned to the SSOT constant — so the next run is cheaper. The audit's job is
261
- to find what no test knows how to look for yet.
262
-
263
- ## Anti-Patterns
264
-
265
- - Dispatching R5 without a SAFETY block "because the operator said it's fine in chat" — the block
266
- is a committed artifact for a reason.
267
- - Copying an agent's P0 into the dossier because its command looked convincing (Phase 3.1).
268
- - Two roles both editing/owning the i18n files (Phase 3.3).
269
- - Running the audit as a CI job to "keep it honest" — it turns into a stamp nobody reads.
270
- - Fixing findings mid-audit, so the later roles measure a moving product.
@@ -1,168 +0,0 @@
1
- ---
2
- name: skill-creator
3
- description: Use when creating a new skill from scratch, modifying an existing skill, or optimizing a skill's triggering description. Guides intent capture, structure, writing patterns, and progressive-disclosure organization so skills reliably trigger and stay maintainable. Trigger on phrases like "turn this into a skill", "write a skill for X", "improve this skill", "my skill isn't triggering".
4
- model: sonnet
5
- ---
6
-
7
- # Skill Creator
8
-
9
- A process skill for writing skills well.
10
-
11
- Adapted from [anthropics/skills/skill-creator](https://github.com/anthropics/skills/tree/main/skills/skill-creator) — we keep the authoring workflow and progressive-disclosure guidance but drop the Python eval-viewer harness (not part of our stack).
12
-
13
- ## The loop
14
-
15
- 1. **Capture intent** — what should the skill do? When should it trigger?
16
- 2. **Draft** SKILL.md with frontmatter + body
17
- 3. **Test** — 2–3 realistic prompts, see if Claude triggers + executes right
18
- 4. **Improve** based on failures (wrong trigger, wrong output, over-verbose, etc.)
19
- 5. **Optimize description** if triggering is unreliable
20
-
21
- ## 1. Capture Intent
22
-
23
- If the user said "turn X into a skill", extract from conversation history: the tools used, the sequence of steps, corrections the user made, input/output formats observed. Confirm gaps before proceeding.
24
-
25
- Ask explicitly:
26
- 1. What should this skill enable Claude to do?
27
- 2. When should it trigger? (user phrases / contexts)
28
- 3. What's the expected output format?
29
- 4. Does this skill have objectively verifiable outputs? (if yes, test cases help; if subjective like writing style / art, skip them)
30
-
31
- ## 2. Write the SKILL.md
32
-
33
- ### Frontmatter
34
-
35
- ```yaml
36
- ---
37
- name: kebab-case-name
38
- description: One or two sentences covering what it does AND when to trigger. Mention multiple trigger phrases/contexts (Claude tends to UNDER-trigger — err on "pushy").
39
- ---
40
- ```
41
-
42
- **Description anti-patterns:**
43
- - ❌ "How to build a dashboard." (no triggers)
44
- - ✅ "Use when building a dashboard, visualizing data, or displaying metrics — trigger even if the user doesn't say 'dashboard' but mentions charts, KPIs, or metric displays."
45
-
46
- ### Body anatomy
47
-
48
- ```
49
- skill-name/
50
- ├── SKILL.md (required — frontmatter + body, <500 lines ideal)
51
- ├── scripts/ (optional — executable code for deterministic/repetitive tasks)
52
- ├── references/ (optional — docs loaded into context only when needed)
53
- └── assets/ (optional — templates, fixtures)
54
- ```
55
-
56
- ### Progressive disclosure
57
-
58
- Skills load in three levels:
59
- 1. **Frontmatter** — always in Claude's context (~100 tokens)
60
- 2. **SKILL.md body** — loaded when skill triggers (keep <500 lines)
61
- 3. **Reference files** — loaded on demand (unlimited size, cite with clear "read when X" guidance)
62
-
63
- If SKILL.md exceeds 500 lines, split by domain:
64
-
65
- ```
66
- cloud-deploy/
67
- ├── SKILL.md (workflow + "if AWS: read references/aws.md")
68
- └── references/
69
- ├── aws.md
70
- ├── gcp.md
71
- └── azure.md
72
- ```
73
-
74
- ## 3. Writing patterns
75
-
76
- ### Imperative voice
77
-
78
- Prefer "Write tests for X" over "Tests should be written for X". Agents respond better to direct instruction.
79
-
80
- ### Explain the WHY
81
-
82
- LLMs are smart. When you write a rule, explain why — the agent can then handle edge cases intelligently. If you find yourself writing ALWAYS or NEVER in all caps, that's a yellow flag: reframe and explain.
83
-
84
- **Bad:** "ALWAYS use parameterized queries."
85
- **Good:** "Use parameterized queries. Reason: string-concatenation SQL is the #1 injection vector in our incident history."
86
-
87
- ### Output format blocks
88
-
89
- When the skill produces structured output:
90
-
91
- ```markdown
92
- ## Report structure
93
- Always use this exact template:
94
- # [Title]
95
- ## Executive summary
96
- ## Key findings
97
- ## Recommendations
98
- ```
99
-
100
- ### Examples
101
-
102
- ```markdown
103
- ## Commit message format
104
- **Example 1:**
105
- Input: Added user authentication with JWT tokens
106
- Output: feat(auth): implement JWT-based authentication
107
- ```
108
-
109
- ## 4. Test cases
110
-
111
- Write 2–3 realistic test prompts — the kind a real user would actually type (include file paths, specific contexts, casual speech, typos). Run Claude with + without the skill and compare.
112
-
113
- **Bad test prompts:** "Format this data", "Create a chart" — too abstract.
114
- **Good test prompts:** "ok so my boss sent me Q4_sales_FINAL_v2.xlsx and wants a profit-margin column (revenue col C, cost col D)" — concrete, realistic.
115
-
116
- Coordinator-direct in our harness: dispatch two Agent() calls (one with skill-path, one without) and compare outputs qualitatively. We do NOT run the upstream Python eval viewer — that's over-engineered for our workflow.
117
-
118
- ## 5. Description optimization
119
-
120
- If the skill doesn't trigger reliably, the description is usually at fault.
121
-
122
- Generate 20 eval queries:
123
- - 8–10 **should-trigger** (different phrasings, casual/formal, edge cases)
124
- - 8–10 **should-not-trigger** — near-misses that share keywords but need different handling
125
-
126
- Score the current description against these queries. Rewrite → re-score → iterate.
127
-
128
- **Key insight:** Claude only consults skills for tasks it can't easily handle on its own. Simple queries ("read this file") won't trigger skills regardless of description quality. Write eval queries that are substantive enough to actually benefit from the skill.
129
-
130
- ## Improvement heuristics
131
-
132
- When revising based on failures:
133
-
134
- 1. **Generalize from feedback** — one user's test case is a proxy for millions of invocations. Don't overfit.
135
- 2. **Keep it lean** — remove instructions that aren't earning their token cost. Re-read transcripts to see where the model wastes time.
136
- 3. **Explain the WHY** — always.
137
- 4. **Look for repeated work** — if every invocation writes the same helper script, bundle it in `scripts/`.
138
-
139
- ## Anti-patterns
140
-
141
- - ❌ MUSTs and NEVERs without explanation
142
- - ❌ Monolithic SKILL.md >500 lines without reference-file split
143
- - ❌ Description that only lists what the skill does, without trigger phrases
144
- - ❌ Test prompts that are too abstract to be realistic
145
- - ❌ Skills that duplicate what existing tools already do well
146
-
147
- ## Model Tier Selection
148
-
149
- When adding `model:` frontmatter to a new skill, apply these criteria:
150
-
151
- | Tier | When to use | Examples |
152
- |---|---|---|
153
- | `opus` | Complex multi-step reasoning, planning, architecture, open-ended synthesis | session-plan, plan, architecture |
154
- | `sonnet` | Workhorse tasks: orchestration, analysis, code generation, aggregation | session-start, wave-executor, discovery, evolve, skill-creator |
155
- | `haiku` | Routing, lookup, triage, reference reads, driver wrappers, simple file writes | gitlab-ops, quality-gates, mode-selector, daily, peekaboo-driver |
156
- | `inherit` | Skill runs inside coordinator's context and should match the coordinator's tier; also for `disable-model-invocation: true` skills | session-start, session-end, domain-model, ubiquitous-language |
157
-
158
- Decision rule: if the skill reasons over many options or produces a structural plan, use `opus`. If it executes defined steps, use `sonnet`. If it reads a config and emits a fixed output, use `haiku`. If it is a pass-through that the coordinator controls, use `inherit`.
159
-
160
- ## Checklist
161
-
162
- - [ ] Frontmatter has `name` + `description` with explicit trigger phrases
163
- - [ ] Frontmatter has `model:` set per the Model Tier Selection table above
164
- - [ ] Body uses imperative voice
165
- - [ ] WHYs explained for any rules
166
- - [ ] Large sections split into `references/` if >500 lines
167
- - [ ] At least 2 realistic test prompts drafted
168
- - [ ] Examples in input/output format where relevant
@@ -1,97 +0,0 @@
1
- ---
2
- name: ubiquitous-language
3
- description: Use when the user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD". Extracts a DDD-style glossary from the current conversation into UBIQUITOUS_LANGUAGE.md, flags ambiguities and synonyms, and proposes opinionated canonical terms.
4
- model: inherit
5
- disable-model-invocation: true
6
- derived-from: mattpocock/skills@90ea8ee
7
- license: MIT
8
- upstream-url: https://github.com/mattpocock/skills/tree/main/ubiquitous-language
9
- ---
10
-
11
- # Ubiquitous Language
12
-
13
- Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to a local file.
14
-
15
- ## Process
16
-
17
- 1. **Scan the conversation** for domain-relevant nouns, verbs, and concepts
18
- 2. **Identify problems**:
19
- - Same word used for different concepts (ambiguity)
20
- - Different words used for the same concept (synonyms)
21
- - Vague or overloaded terms
22
- 3. **Propose a canonical glossary** with opinionated term choices
23
- 4. **Write to `UBIQUITOUS_LANGUAGE.md`** in the working directory using the format below
24
- 5. **Output a summary** inline in the conversation
25
-
26
- ## Output Format
27
-
28
- Write a `UBIQUITOUS_LANGUAGE.md` file with this structure:
29
-
30
- ```md
31
- # Ubiquitous Language
32
-
33
- ## Order lifecycle
34
-
35
- | Term | Definition | Aliases to avoid |
36
- | ----------- | ------------------------------------------------------- | --------------------- |
37
- | **Order** | A customer's request to purchase one or more items | Purchase, transaction |
38
- | **Invoice** | A request for payment sent to a customer after delivery | Bill, payment request |
39
-
40
- ## People
41
-
42
- | Term | Definition | Aliases to avoid |
43
- | ------------ | ------------------------------------------- | ---------------------- |
44
- | **Customer** | A person or organization that places orders | Client, buyer, account |
45
- | **User** | An authentication identity in the system | Login, account |
46
-
47
- ## Relationships
48
-
49
- - An **Invoice** belongs to exactly one **Customer**
50
- - An **Order** produces one or more **Invoices**
51
-
52
- ## Example dialogue
53
-
54
- > **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
55
- > **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed. A single **Order** can produce multiple **Invoices** if items ship in separate **Shipments**."
56
- > **Dev:** "So if a **Shipment** is cancelled before dispatch, no **Invoice** exists for it?"
57
- > **Domain expert:** "Exactly. The **Invoice** lifecycle is tied to the **Fulfillment**, not the **Order**."
58
-
59
- ## Flagged ambiguities
60
-
61
- - "account" was used to mean both **Customer** and **User** — these are distinct concepts: a **Customer** places orders, while a **User** is an authentication identity that may or may not represent a **Customer**.
62
- ```
63
-
64
- ## Rules
65
-
66
- - **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others as aliases to avoid.
67
- - **Flag conflicts explicitly.** If a term is used ambiguously in the conversation, call it out in the "Flagged ambiguities" section with a clear recommendation.
68
- - **Only include terms relevant for domain experts.** Skip the names of modules or classes unless they have meaning in the domain language.
69
- - **Keep definitions tight.** One sentence max. Define what it IS, not what it does.
70
- - **Show relationships.** Use bold term names and express cardinality where obvious.
71
- - **Only include domain terms.** Skip generic programming concepts (array, function, endpoint) unless they have domain-specific meaning.
72
- - **Group terms into multiple tables** when natural clusters emerge (e.g. by subdomain, lifecycle, or actor). Each group gets its own heading and table. If all terms belong to a single cohesive domain, one table is fine — don't force groupings.
73
- - **Write an example dialogue.** A short conversation (3-5 exchanges) between a dev and a domain expert that demonstrates how the terms interact naturally. The dialogue should clarify boundaries between related concepts and show terms being used precisely.
74
-
75
- <example>
76
-
77
- ## Example dialogue
78
-
79
- > **Dev:** "How do I test the **sync service** without Docker?"
80
-
81
- > **Domain expert:** "Provide the **filesystem layer** instead of the **Docker layer**. It implements the same **Sandbox service** interface but uses a local directory as the **sandbox**."
82
-
83
- > **Dev:** "So **sync-in** still creates a **bundle** and unpacks it?"
84
-
85
- > **Domain expert:** "Exactly. The **sync service** doesn't know which layer it's talking to. It calls `exec` and `copyIn` — the **filesystem layer** just runs those as local shell commands."
86
-
87
- </example>
88
-
89
- ## Re-running
90
-
91
- When invoked again in the same conversation:
92
-
93
- 1. Read the existing `UBIQUITOUS_LANGUAGE.md`
94
- 2. Incorporate any new terms from subsequent discussion
95
- 3. Update definitions if understanding has evolved
96
- 4. Re-flag any new ambiguities
97
- 5. Rewrite the example dialogue to incorporate new terms
@@ -1,40 +0,0 @@
1
- {
2
- "name": "@session-orchestrator/vault-sync",
3
- "version": "0.1.0",
4
- "lockfileVersion": 3,
5
- "requires": true,
6
- "packages": {
7
- "": {
8
- "name": "@session-orchestrator/vault-sync",
9
- "version": "0.1.0",
10
- "dependencies": {
11
- "yaml": "^2.5.0",
12
- "zod": "^3.24.0"
13
- }
14
- },
15
- "node_modules/yaml": {
16
- "version": "2.8.3",
17
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
18
- "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
19
- "license": "ISC",
20
- "bin": {
21
- "yaml": "bin.mjs"
22
- },
23
- "engines": {
24
- "node": ">= 14.6"
25
- },
26
- "funding": {
27
- "url": "https://github.com/sponsors/eemeli"
28
- }
29
- },
30
- "node_modules/zod": {
31
- "version": "3.25.76",
32
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
33
- "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
34
- "license": "MIT",
35
- "funding": {
36
- "url": "https://github.com/sponsors/colinhacks"
37
- }
38
- }
39
- }
40
- }