create-yss-spec 3.5.2 → 3.5.3

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 (438) hide show
  1. package/package.json +1 -1
  2. package/src/template/asset-runtime.js +3 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
  4. package/template/.agents/skills/codebase-design/SKILL.md +4 -0
  5. package/template/{.codex/skills/improve-codebase-architecture/SKILL.md → .agents/skills/codebase-design/references/architecture-audit.md} +3 -9
  6. package/template/.agents/skills/frontend-commit/SKILL.md +4 -93
  7. package/template/.agents/skills/git-commit-core/SKILL.md +18 -0
  8. package/template/.agents/skills/java-backend-commit/SKILL.md +4 -96
  9. package/template/.agents/skills/llm-wiki/SKILL.md +12 -13
  10. package/template/.agents/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  11. package/template/.agents/skills/llm-wiki/references/compile.md +21 -114
  12. package/template/.agents/skills/llm-wiki/references/ingest.md +8 -33
  13. package/template/.agents/skills/llm-wiki/references/lint.md +9 -46
  14. package/template/.agents/skills/llm-wiki/references/query.md +9 -18
  15. package/template/.agents/skills/llm-wiki/references/schema.md +56 -29
  16. package/template/.agents/skills/llm-wiki/references/transactions.md +48 -0
  17. package/template/.agents/skills/llm-wiki/references/writing.md +4 -4
  18. package/template/.agents/skills/llm-wiki/scripts/advise.mjs +46 -58
  19. package/template/.agents/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  20. package/template/.agents/skills/llm-wiki/scripts/core.mjs +262 -0
  21. package/template/.agents/skills/llm-wiki/scripts/extract.mjs +35 -18
  22. package/template/.agents/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  23. package/template/.agents/skills/llm-wiki/scripts/feedback.mjs +51 -0
  24. package/template/.agents/skills/llm-wiki/scripts/inventory.mjs +43 -171
  25. package/template/.agents/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  26. package/template/.agents/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  27. package/template/.agents/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  28. package/template/.agents/skills/llm-wiki/scripts/migrate.mjs +51 -0
  29. package/template/.agents/skills/llm-wiki/scripts/query.mjs +149 -0
  30. package/template/.agents/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  31. package/template/.agents/skills/llm-wiki/scripts/sources.mjs +166 -0
  32. package/template/.agents/skills/llm-wiki/scripts/transaction.mjs +384 -0
  33. package/template/.agents/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  34. package/template/.agents/skills/prototype/LOGIC.md +1 -1
  35. package/template/.agents/skills/prototype/SKILL.md +5 -19
  36. package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  37. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  38. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  39. package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  40. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +8 -8
  41. package/template/.agents/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  42. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  43. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  44. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  45. package/template/.agents/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  46. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
  47. package/template/.agents/skills/yss-research/SKILL.md +4 -0
  48. package/template/.codex/skills/codebase-design/SKILL.md +4 -0
  49. package/template/{.pi/skills/improve-codebase-architecture/SKILL.md → .codex/skills/codebase-design/references/architecture-audit.md} +3 -9
  50. package/template/.codex/skills/frontend-commit/SKILL.md +4 -93
  51. package/template/.codex/skills/git-commit-core/SKILL.md +18 -0
  52. package/template/.codex/skills/java-backend-commit/SKILL.md +4 -96
  53. package/template/.codex/skills/llm-wiki/SKILL.md +12 -13
  54. package/template/.codex/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  55. package/template/.codex/skills/llm-wiki/references/compile.md +21 -114
  56. package/template/.codex/skills/llm-wiki/references/ingest.md +8 -33
  57. package/template/.codex/skills/llm-wiki/references/lint.md +9 -46
  58. package/template/.codex/skills/llm-wiki/references/query.md +9 -18
  59. package/template/.codex/skills/llm-wiki/references/schema.md +56 -29
  60. package/template/.codex/skills/llm-wiki/references/transactions.md +48 -0
  61. package/template/.codex/skills/llm-wiki/references/writing.md +4 -4
  62. package/template/.codex/skills/llm-wiki/scripts/advise.mjs +46 -58
  63. package/template/.codex/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  64. package/template/.codex/skills/llm-wiki/scripts/core.mjs +262 -0
  65. package/template/.codex/skills/llm-wiki/scripts/extract.mjs +35 -18
  66. package/template/.codex/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  67. package/template/.codex/skills/llm-wiki/scripts/feedback.mjs +51 -0
  68. package/template/.codex/skills/llm-wiki/scripts/inventory.mjs +43 -171
  69. package/template/.codex/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  70. package/template/.codex/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  71. package/template/.codex/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  72. package/template/.codex/skills/llm-wiki/scripts/migrate.mjs +51 -0
  73. package/template/.codex/skills/llm-wiki/scripts/query.mjs +149 -0
  74. package/template/.codex/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  75. package/template/.codex/skills/llm-wiki/scripts/sources.mjs +166 -0
  76. package/template/.codex/skills/llm-wiki/scripts/transaction.mjs +384 -0
  77. package/template/.codex/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  78. package/template/.codex/skills/prototype/LOGIC.md +1 -1
  79. package/template/.codex/skills/prototype/SKILL.md +5 -19
  80. package/template/.codex/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  81. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  82. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  83. package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  84. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +8 -8
  85. package/template/.codex/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  86. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  87. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  88. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  89. package/template/.codex/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  90. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
  91. package/template/.codex/skills/yss-research/SKILL.md +4 -0
  92. package/template/.cursor/skills/codebase-design/SKILL.md +4 -0
  93. package/template/.cursor/skills/{improve-codebase-architecture/SKILL.md → codebase-design/references/architecture-audit.md} +3 -9
  94. package/template/.cursor/skills/frontend-commit/SKILL.md +4 -93
  95. package/template/.cursor/skills/git-commit-core/SKILL.md +18 -0
  96. package/template/.cursor/skills/java-backend-commit/SKILL.md +4 -96
  97. package/template/.cursor/skills/llm-wiki/SKILL.md +12 -13
  98. package/template/.cursor/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  99. package/template/.cursor/skills/llm-wiki/references/compile.md +21 -114
  100. package/template/.cursor/skills/llm-wiki/references/ingest.md +8 -33
  101. package/template/.cursor/skills/llm-wiki/references/lint.md +9 -46
  102. package/template/.cursor/skills/llm-wiki/references/query.md +9 -18
  103. package/template/.cursor/skills/llm-wiki/references/schema.md +56 -29
  104. package/template/.cursor/skills/llm-wiki/references/transactions.md +48 -0
  105. package/template/.cursor/skills/llm-wiki/references/writing.md +4 -4
  106. package/template/.cursor/skills/llm-wiki/scripts/advise.mjs +46 -58
  107. package/template/.cursor/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  108. package/template/.cursor/skills/llm-wiki/scripts/core.mjs +262 -0
  109. package/template/.cursor/skills/llm-wiki/scripts/extract.mjs +35 -18
  110. package/template/.cursor/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  111. package/template/.cursor/skills/llm-wiki/scripts/feedback.mjs +51 -0
  112. package/template/.cursor/skills/llm-wiki/scripts/inventory.mjs +43 -171
  113. package/template/.cursor/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  114. package/template/.cursor/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  115. package/template/.cursor/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  116. package/template/.cursor/skills/llm-wiki/scripts/migrate.mjs +51 -0
  117. package/template/.cursor/skills/llm-wiki/scripts/query.mjs +149 -0
  118. package/template/.cursor/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  119. package/template/.cursor/skills/llm-wiki/scripts/sources.mjs +166 -0
  120. package/template/.cursor/skills/llm-wiki/scripts/transaction.mjs +384 -0
  121. package/template/.cursor/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  122. package/template/.cursor/skills/prototype/LOGIC.md +1 -1
  123. package/template/.cursor/skills/prototype/SKILL.md +5 -19
  124. package/template/.cursor/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  125. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  126. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  127. package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  128. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +8 -8
  129. package/template/.cursor/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  130. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  131. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  132. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  133. package/template/.cursor/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  134. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
  135. package/template/.cursor/skills/yss-research/SKILL.md +4 -0
  136. package/template/.pi/skills/codebase-design/SKILL.md +4 -0
  137. package/template/{.agents/skills/improve-codebase-architecture/SKILL.md → .pi/skills/codebase-design/references/architecture-audit.md} +3 -9
  138. package/template/.pi/skills/frontend-commit/SKILL.md +4 -93
  139. package/template/.pi/skills/git-commit-core/SKILL.md +18 -0
  140. package/template/.pi/skills/java-backend-commit/SKILL.md +4 -96
  141. package/template/.pi/skills/llm-wiki/SKILL.md +12 -13
  142. package/template/.pi/skills/llm-wiki/assets/CLAUDE.md.template +7 -1
  143. package/template/.pi/skills/llm-wiki/references/compile.md +21 -114
  144. package/template/.pi/skills/llm-wiki/references/ingest.md +8 -33
  145. package/template/.pi/skills/llm-wiki/references/lint.md +9 -46
  146. package/template/.pi/skills/llm-wiki/references/query.md +9 -18
  147. package/template/.pi/skills/llm-wiki/references/schema.md +56 -29
  148. package/template/.pi/skills/llm-wiki/references/transactions.md +48 -0
  149. package/template/.pi/skills/llm-wiki/references/writing.md +4 -4
  150. package/template/.pi/skills/llm-wiki/scripts/advise.mjs +46 -58
  151. package/template/.pi/skills/llm-wiki/scripts/advise.test.mjs +11 -16
  152. package/template/.pi/skills/llm-wiki/scripts/core.mjs +262 -0
  153. package/template/.pi/skills/llm-wiki/scripts/extract.mjs +35 -18
  154. package/template/.pi/skills/llm-wiki/scripts/extract.test.mjs +5 -8
  155. package/template/.pi/skills/llm-wiki/scripts/feedback.mjs +51 -0
  156. package/template/.pi/skills/llm-wiki/scripts/inventory.mjs +43 -171
  157. package/template/.pi/skills/llm-wiki/scripts/inventory.test.mjs +25 -18
  158. package/template/.pi/skills/llm-wiki/scripts/lint-wikilinks.mjs +69 -92
  159. package/template/.pi/skills/llm-wiki/scripts/lint-wikilinks.test.mjs +25 -37
  160. package/template/.pi/skills/llm-wiki/scripts/migrate.mjs +51 -0
  161. package/template/.pi/skills/llm-wiki/scripts/query.mjs +149 -0
  162. package/template/.pi/skills/llm-wiki/scripts/regressions.test.mjs +101 -0
  163. package/template/.pi/skills/llm-wiki/scripts/sources.mjs +166 -0
  164. package/template/.pi/skills/llm-wiki/scripts/transaction.mjs +384 -0
  165. package/template/.pi/skills/llm-wiki/scripts/v2.test.mjs +354 -0
  166. package/template/.pi/skills/prototype/LOGIC.md +1 -1
  167. package/template/.pi/skills/prototype/SKILL.md +5 -19
  168. package/template/.pi/skills/setup-matt-pocock-skills/SKILL.md +3 -3
  169. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  170. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +2 -3
  171. package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +14 -0
  172. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +8 -8
  173. package/template/.pi/skills/yss-product-lifecycle/references/external-input-questionnaire.md +19 -0
  174. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +5 -5
  175. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +20 -4
  176. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  177. package/template/.pi/skills/yss-product-lifecycle/references/plan-requirements.md +10 -0
  178. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
  179. package/template/.pi/skills/yss-research/SKILL.md +4 -0
  180. package/template/.template-spec/agents/README.md +1 -1
  181. package/template/.template-spec/agents/digital-human-roles.yaml +1 -1
  182. package/template/.template-spec/agents/skill-migrations.md +15 -0
  183. package/template/.template-spec/agents/yss-skill-registry.yaml +10 -29
  184. package/template/.template-spec/architecture/README.md +3 -34
  185. package/template/.template-spec/plan/templates/competitive-analysis-template.md +2 -2
  186. package/template/.template-spec/process/contract-reading.md +24 -0
  187. package/template/.template-spec/process/lifecycle-registry-baseline.json +3 -1
  188. package/template/.template-spec/process/lifecycle-registry.yaml +6 -0
  189. package/template/.template-spec/process/research-completion.md +23 -0
  190. package/template/.template-spec/process/schemas/digital-human-task-package.schema.json +202 -12
  191. package/template/.template-spec/process/schemas/frontend-implementation-evidence.schema.json +7 -15
  192. package/template/.template-spec/process/subagent-collaboration.md +8 -0
  193. package/template/.template-spec/process/templates/frontend-implementation-verification-template.yaml +15 -1
  194. package/template/AGENTS.md +1 -1
  195. package/template/CONTEXT.md +5 -1
  196. package/template/README.md +12 -24
  197. package/template/scripts/contract +5 -5
  198. package/template/scripts/lib/contract-views.mjs +57 -2
  199. package/template/scripts/lib/execution-evidence.mjs +51 -0
  200. package/template/scripts/lib/harness-execution-scope.mjs +1 -1
  201. package/template/scripts/lib/implementation-contract-compiler.mjs +2 -0
  202. package/template/scripts/lib/lifecycle-context-query.mjs +15 -3
  203. package/template/scripts/lib/lifecycle-status.mjs +32 -6
  204. package/template/scripts/lib/lifecycle-transition.mjs +19 -1
  205. package/template/scripts/lib/maintenance-research.mjs +63 -0
  206. package/template/scripts/lib/read-only-intake.mjs +132 -0
  207. package/template/scripts/lib/skill-registry.mjs +2 -1
  208. package/template/scripts/lib/skill-supply-chain.mjs +4 -0
  209. package/template/scripts/lib/slice-task-package.mjs +1 -1
  210. package/template/scripts/lib/task-package.mjs +9 -2
  211. package/template/scripts/lifecycle-status +2 -2
  212. package/template/scripts/prepare-read-only-intake +16 -0
  213. package/template/scripts/run-read-only-intake +14 -0
  214. package/template/scripts/verify-digital-human-task-package +2 -2
  215. package/template/scripts/verify-frontend-implementation-evidence +24 -1
  216. package/template/scripts/verify-maintenance-research +13 -0
  217. package/template/skills-lock.json +19 -76
  218. package/template.manifest.json +118 -29
  219. package/template.snapshot.json +5 -6
  220. package/template/.agents/skills/grill-with-docs/SKILL.md +0 -20
  221. package/template/.agents/skills/grill-with-docs/agents/openai.yaml +0 -5
  222. package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  223. package/template/.agents/skills/prototype/UI.md +0 -112
  224. package/template/.agents/skills/setup-matt-pocock-skills/domain.md +0 -37
  225. package/template/.agents/skills/to-questionnaire/SKILL.md +0 -55
  226. package/template/.agents/skills/to-questionnaire/agents/openai.yaml +0 -5
  227. package/template/.agents/skills/wait-what/SKILL.md +0 -7
  228. package/template/.agents/skills/wait-what/agents/openai.yaml +0 -5
  229. package/template/.codex/skills/data-analytics/.app.json +0 -84
  230. package/template/.codex/skills/data-analytics/.codex-plugin/plugin.json +0 -66
  231. package/template/.codex/skills/data-analytics/.mcp.json +0 -30
  232. package/template/.codex/skills/data-analytics/AGENTS.md +0 -20
  233. package/template/.codex/skills/data-analytics/DEPENDENCIES.MD +0 -27
  234. package/template/.codex/skills/data-analytics/README.md +0 -60
  235. package/template/.codex/skills/data-analytics/__yss_dotfile__.gitignore +0 -2
  236. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html +0 -16
  237. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part001 +0 -1
  238. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part002 +0 -1
  239. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part003 +0 -1
  240. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part004 +0 -1
  241. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part005 +0 -1
  242. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part006 +0 -1
  243. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html +0 -16
  244. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part001 +0 -1
  245. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part002 +0 -1
  246. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part003 +0 -1
  247. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part004 +0 -1
  248. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part005 +0 -1
  249. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part006 +0 -1
  250. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part007 +0 -1
  251. package/template/.codex/skills/data-analytics/assets/datascience-small.svg +0 -5
  252. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html +0 -16
  253. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part001 +0 -1
  254. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part002 +0 -1
  255. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part003 +0 -1
  256. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part004 +0 -1
  257. package/template/.codex/skills/data-analytics/assets/datascience.png +0 -0
  258. package/template/.codex/skills/data-analytics/assets/datascience.svg +0 -10
  259. package/template/.codex/skills/data-analytics/mcp/server.cjs +0 -2964
  260. package/template/.codex/skills/data-analytics/package-lock.json +0 -3048
  261. package/template/.codex/skills/data-analytics/package.json +0 -43
  262. package/template/.codex/skills/data-analytics/scripts/normalize-widget-assets.mjs +0 -75
  263. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +0 -137
  264. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/agents/openai.yaml +0 -6
  265. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/references/quality-checks.md +0 -29
  266. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +0 -148
  267. package/template/.codex/skills/data-analytics/skills/build-dashboard/agents/openai.yaml +0 -6
  268. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/bi-platform-dashboard.md +0 -18
  269. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/html-dashboard.md +0 -24
  270. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/mcp-artifact-dashboard.md +0 -71
  271. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/streamlit-dashboard.md +0 -85
  272. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +0 -207
  273. package/template/.codex/skills/data-analytics/skills/build-report/agents/openai.yaml +0 -6
  274. package/template/.codex/skills/data-analytics/skills/build-report/assets/executive-report-shell.html +0 -70
  275. package/template/.codex/skills/data-analytics/skills/build-report/assets/technical-report-shell.html +0 -66
  276. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +0 -108
  277. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/agents/openai.yaml +0 -6
  278. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/__init__.py +0 -1
  279. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +0 -52
  280. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/constants.py +0 -61
  281. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/docx_writer.py +0 -362
  282. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/html_parser.py +0 -829
  283. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/model.py +0 -30
  284. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +0 -127
  285. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/quality.py +0 -374
  286. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/rendering.py +0 -613
  287. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/table_utils.py +0 -54
  288. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/utils.py +0 -16
  289. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc_plan.py +0 -9
  290. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/tests/test_delivery_plan.py +0 -45
  291. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +0 -77
  292. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/agents/openai.yaml +0 -6
  293. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/scripts/report_to_google_slides.py +0 -2379
  294. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +0 -88
  295. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/agents/openai.yaml +0 -6
  296. package/template/.codex/skills/data-analytics/skills/build-report/specifications/executive-report.md +0 -97
  297. package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +0 -59
  298. package/template/.codex/skills/data-analytics/skills/build-report/specifications/technical-report.md +0 -75
  299. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +0 -103
  300. package/template/.codex/skills/data-analytics/skills/design-kpis/agents/openai.yaml +0 -6
  301. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +0 -68
  302. package/template/.codex/skills/data-analytics/skills/gather-business-context/agents/openai.yaml +0 -6
  303. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +0 -251
  304. package/template/.codex/skills/data-analytics/skills/index/agents/openai.yaml +0 -6
  305. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +0 -131
  306. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/agents/openai.yaml +0 -6
  307. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +0 -141
  308. package/template/.codex/skills/data-analytics/skills/kpi-reporting/agents/openai.yaml +0 -6
  309. package/template/.codex/skills/data-analytics/skills/kpi-reporting/references/report-templates.md +0 -32
  310. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +0 -106
  311. package/template/.codex/skills/data-analytics/skills/market-sizing/agents/openai.yaml +0 -6
  312. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +0 -130
  313. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/agents/openai.yaml +0 -6
  314. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +0 -141
  315. package/template/.codex/skills/data-analytics/skills/product-business-analysis/agents/openai.yaml +0 -6
  316. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +0 -178
  317. package/template/.codex/skills/data-analytics/skills/spreadsheets/agents/openai.yaml +0 -9
  318. package/template/.codex/skills/data-analytics/skills/spreadsheets/assets/file-spreadsheet.png +0 -0
  319. package/template/.codex/skills/data-analytics/skills/spreadsheets/charts.md +0 -31
  320. package/template/.codex/skills/data-analytics/skills/spreadsheets/references/artifact_tool_api.md +0 -466
  321. package/template/.codex/skills/data-analytics/skills/spreadsheets/style_guidelines.md +0 -99
  322. package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +0 -197
  323. package/template/.codex/skills/data-analytics/skills/user-context/agents/openai.yaml +0 -6
  324. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +0 -26
  325. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/source-category-config.json +0 -51
  326. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/user-context-config.md +0 -66
  327. package/template/.codex/skills/data-analytics/skills/user-context/references/automation.md +0 -69
  328. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +0 -204
  329. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-state-template.json +0 -87
  330. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +0 -497
  331. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/connector-playbook.md +0 -74
  332. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/setup.md +0 -65
  333. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/skill-template.md +0 -160
  334. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/source-intake.md +0 -75
  335. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/weekly-polling-automation.md +0 -96
  336. package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +0 -263
  337. package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +0 -1462
  338. package/template/.codex/skills/data-analytics/skills/user-context/scripts/init_user_context_state.py +0 -128
  339. package/template/.codex/skills/data-analytics/skills/user-context/scripts/reset_user_context_state.py +0 -101
  340. package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +0 -499
  341. package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +0 -978
  342. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +0 -126
  343. package/template/.codex/skills/data-analytics/skills/validate-data/agents/openai.yaml +0 -6
  344. package/template/.codex/skills/data-analytics/skills/validate-data/references/validation-methods.md +0 -70
  345. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +0 -157
  346. package/template/.codex/skills/data-analytics/skills/visualize-data/agents/openai.yaml +0 -6
  347. package/template/.codex/skills/data-analytics/skills/visualize-data/references/seaborn-templates.md +0 -774
  348. package/template/.codex/skills/data-analytics/src/DESIGN.md +0 -222
  349. package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +0 -3666
  350. package/template/.codex/skills/data-analytics/src/analytics-app/analytics-layout.test.mjs +0 -136
  351. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartFrame.tsx +0 -54
  352. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartLegend.tsx +0 -96
  353. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartRenderer.tsx +0 -1647
  354. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartTooltip.tsx +0 -245
  355. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-app-helpers.tsx +0 -462
  356. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-capabilities.ts +0 -107
  357. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-compatibility.ts +0 -164
  358. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-contract.ts +0 -192
  359. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-theme.ts +0 -203
  360. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-tokens.css +0 -619
  361. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-transforms.ts +0 -402
  362. package/template/.codex/skills/data-analytics/src/analytics-app/fonts/SystemSansVariableVF.woff2 +0 -0
  363. package/template/.codex/skills/data-analytics/src/analytics-app/imageExport.ts +0 -370
  364. package/template/.codex/skills/data-analytics/src/analytics-app/layout/AnalyticsLayoutCanvas.tsx +0 -536
  365. package/template/.codex/skills/data-analytics/src/analytics-app/layout/RichMarkdown.tsx +0 -681
  366. package/template/.codex/skills/data-analytics/src/analytics-app/layout/analyticsLayoutCore.ts +0 -164
  367. package/template/.codex/skills/data-analytics/src/analytics-app/main.tsx +0 -21
  368. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/chart_contract.py +0 -472
  369. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/check_analytics_app_runtime_links.py +0 -75
  370. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/design_contract.py +0 -142
  371. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/package_utils.py +0 -142
  372. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/tests/test_package_utils.py +0 -377
  373. package/template/.codex/skills/data-analytics/src/analytics-app/styles.css +0 -3468
  374. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.d.ts +0 -44
  375. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.jsx +0 -639
  376. package/template/.codex/skills/data-analytics/src/analytics-app/tables/data-table.css +0 -327
  377. package/template/.codex/skills/data-analytics/src/analytics-app/tokens.css +0 -225
  378. package/template/.codex/skills/data-analytics/src/analytics-app/types.ts +0 -204
  379. package/template/.codex/skills/data-analytics/src/analytics-app-core.md +0 -85
  380. package/template/.codex/skills/data-analytics/src/codex-style-contract.md +0 -30
  381. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.html +0 -12
  382. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.jsx +0 -1008
  383. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.css +0 -2117
  384. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.html +0 -122
  385. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.js +0 -3588
  386. package/template/.codex/skills/data-analytics/src/datascience-table-widget.css +0 -483
  387. package/template/.codex/skills/data-analytics/src/datascience-table-widget.html +0 -32
  388. package/template/.codex/skills/data-analytics/src/datascience-table-widget.js +0 -333
  389. package/template/.codex/skills/data-analytics/src/mcp-host.js +0 -153
  390. package/template/.codex/skills/data-analytics/src/recharts-config.js +0 -315
  391. package/template/.codex/skills/data-analytics/src/recharts-renderer.jsx +0 -294
  392. package/template/.codex/skills/data-analytics/src/sql-source-view.css +0 -33
  393. package/template/.codex/skills/data-analytics/src/sql-source-view.js +0 -157
  394. package/template/.codex/skills/data-analytics/src/styles/codex-theme.css +0 -121
  395. package/template/.codex/skills/data-analytics/src/table-renderer.jsx +0 -28
  396. package/template/.codex/skills/data-analytics/tests/chart-transforms.test.mjs +0 -87
  397. package/template/.codex/skills/data-analytics/tests/funnel-smoke.html +0 -105
  398. package/template/.codex/skills/data-analytics/tests/inline-widget-compare.html +0 -233
  399. package/template/.codex/skills/data-analytics/tests/mcp-server.test.mjs +0 -1500
  400. package/template/.codex/skills/data-analytics/tests/native-style-contract.test.mjs +0 -219
  401. package/template/.codex/skills/data-analytics/tests/recharts-config.test.mjs +0 -144
  402. package/template/.codex/skills/data-analytics/tests/recharts-renderer.test.mjs +0 -11
  403. package/template/.codex/skills/data-analytics/tests/rich-markdown.test.mjs +0 -54
  404. package/template/.codex/skills/data-analytics/tests/widget-render-harness.html +0 -321
  405. package/template/.codex/skills/data-analytics/tsconfig.json +0 -19
  406. package/template/.codex/skills/data-analytics/vite.config.ts +0 -46
  407. package/template/.codex/skills/grill-with-docs/SKILL.md +0 -20
  408. package/template/.codex/skills/grill-with-docs/agents/openai.yaml +0 -5
  409. package/template/.codex/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  410. package/template/.codex/skills/prototype/UI.md +0 -112
  411. package/template/.codex/skills/setup-matt-pocock-skills/domain.md +0 -37
  412. package/template/.codex/skills/to-questionnaire/SKILL.md +0 -55
  413. package/template/.codex/skills/to-questionnaire/agents/openai.yaml +0 -5
  414. package/template/.codex/skills/wait-what/SKILL.md +0 -7
  415. package/template/.codex/skills/wait-what/agents/openai.yaml +0 -5
  416. package/template/.cursor/skills/grill-with-docs/SKILL.md +0 -20
  417. package/template/.cursor/skills/grill-with-docs/agents/openai.yaml +0 -5
  418. package/template/.cursor/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  419. package/template/.cursor/skills/prototype/UI.md +0 -112
  420. package/template/.cursor/skills/setup-matt-pocock-skills/domain.md +0 -37
  421. package/template/.cursor/skills/to-questionnaire/SKILL.md +0 -55
  422. package/template/.cursor/skills/to-questionnaire/agents/openai.yaml +0 -5
  423. package/template/.cursor/skills/wait-what/SKILL.md +0 -7
  424. package/template/.cursor/skills/wait-what/agents/openai.yaml +0 -5
  425. package/template/.pi/skills/grill-with-docs/SKILL.md +0 -20
  426. package/template/.pi/skills/grill-with-docs/agents/openai.yaml +0 -5
  427. package/template/.pi/skills/improve-codebase-architecture/agents/openai.yaml +0 -5
  428. package/template/.pi/skills/prototype/UI.md +0 -112
  429. package/template/.pi/skills/setup-matt-pocock-skills/domain.md +0 -37
  430. package/template/.pi/skills/to-questionnaire/SKILL.md +0 -55
  431. package/template/.pi/skills/to-questionnaire/agents/openai.yaml +0 -5
  432. package/template/.pi/skills/wait-what/SKILL.md +0 -7
  433. package/template/.pi/skills/wait-what/agents/openai.yaml +0 -5
  434. package/template/.template-spec/agents/domain.md +0 -31
  435. /package/template/.agents/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
  436. /package/template/.codex/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
  437. /package/template/.cursor/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
  438. /package/template/.pi/skills/{improve-codebase-architecture → codebase-design/references}/HTML-REPORT.md +0 -0
@@ -1,499 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Validate the Data Analytics user-context preflight invariant."""
3
-
4
- from __future__ import annotations
5
-
6
- import argparse
7
- import json
8
- import re
9
- import sys
10
- from pathlib import Path
11
-
12
- MANDATORY_GATE_PHRASES = (
13
- "Mandatory pre-answer gate:",
14
- "Invoke `data-analytics:user-context` in preflight mode",
15
- "Use the returned `data_analytics_preflight` envelope as the source of truth",
16
- "not as substitutes for workflow-time reads from connected or provided sources",
17
- )
18
- USER_CONTEXT_MANDATORY_GATE_PHRASES = (
19
- "there is no fixed minimum token allocation",
20
- "warn the user that Data Analytics could not load all source-routing preferences and semantic-layer registry entries in one pass",
21
- "do not use the payload until the complete output is visible",
22
- "reports read status for `$CODEX_HOME/state/plugins/data-analytics/user-context.md`",
23
- )
24
- PREFLIGHT_HELPER_PHRASES = (
25
- "summarize_user_context",
26
- "extract_saved_source_preferences",
27
- '"user_context": summarize_user_context(user_context_text, source_category_config)',
28
- '"source_preferences": saved_source_preferences',
29
- "semantic_layer_registry",
30
- "preferred_source_routes",
31
- "match_installable_plugin_candidates",
32
- "plugin_first_setup_recovery",
33
- "host_available_plugin_catalog",
34
- "host_authorized_plugin_install",
35
- "plugin_setup_opportunities",
36
- )
37
-
38
-
39
- def normalize_route_name(value: str) -> str:
40
- return re.sub(r"[^a-z0-9]+", "", value.casefold())
41
-
42
-
43
- def parse_args() -> argparse.Namespace:
44
- parser = argparse.ArgumentParser()
45
- parser.add_argument("plugin_path", type=Path)
46
- parser.add_argument("--plugin-id", default="data-analytics")
47
- return parser.parse_args()
48
-
49
-
50
- def main() -> int:
51
- args = parse_args()
52
- plugin_root = args.plugin_path.resolve()
53
- skills_root = plugin_root / "skills"
54
- failures: list[str] = []
55
-
56
- required_paths = (
57
- skills_root / "user-context/SKILL.md",
58
- skills_root / "user-context/agents/openai.yaml",
59
- skills_root / "user-context/plugin-author-config/user-context-config.md",
60
- skills_root / "user-context/plugin-author-config/source-category-config.json",
61
- skills_root / "user-context/plugin-author-config/automation-config.md",
62
- skills_root / "user-context/references/onboarding.md",
63
- skills_root / "user-context/references/onboarding-examples.md",
64
- skills_root / "user-context/references/onboarding-state-template.json",
65
- skills_root / "user-context/references/source-category-runtime.md",
66
- skills_root / "user-context/references/automation.md",
67
- skills_root / "user-context/references/semantic-layer/setup.md",
68
- skills_root / "user-context/references/semantic-layer/source-intake.md",
69
- skills_root / "user-context/references/semantic-layer/connector-playbook.md",
70
- skills_root / "user-context/references/semantic-layer/skill-template.md",
71
- skills_root / "user-context/references/semantic-layer/weekly-polling-automation.md",
72
- skills_root / "user-context/scripts/data_analytics_preflight.py",
73
- skills_root / "user-context/scripts/init_user_context_state.py",
74
- skills_root / "user-context/scripts/reset_user_context_state.py",
75
- skills_root / "user-context/tests/test_state_helpers.py",
76
- skills_root / "index/SKILL.md",
77
- )
78
- for path in required_paths:
79
- if not path.exists():
80
- failures.append(f"Missing required user-context path: {path.relative_to(plugin_root)}")
81
-
82
- unexpected_semantic_layer_skill_dir = skills_root / ("create" + "-semantic-layer")
83
- if unexpected_semantic_layer_skill_dir.exists():
84
- failures.append(
85
- "Unexpected top-level semantic-layer setup skill: "
86
- f"{unexpected_semantic_layer_skill_dir.relative_to(plugin_root)}"
87
- )
88
-
89
- skill_files = sorted(skills_root.rglob("SKILL.md"))
90
- for skill_file in skill_files:
91
- text = skill_file.read_text(encoding="utf-8")
92
- rel = skill_file.relative_to(plugin_root)
93
- if rel == Path("skills/user-context/SKILL.md"):
94
- mandatory_gate = text.split("## Mandatory Pre-Answer Gate", 1)[-1].split(
95
- "\n## ",
96
- 1,
97
- )[0]
98
- for phrase in (
99
- "## Mandatory Pre-Answer Gate",
100
- "scripts/data_analytics_preflight.py",
101
- "follow `references/onboarding.md`",
102
- "## First Run Setup",
103
- "Never run parallel writes against the same Data Analytics state files",
104
- "Do not use `user-context.md` as a general memory file",
105
- "If the user asks Data Analytics to remember arbitrary context, do not save it.",
106
- ):
107
- if phrase not in text:
108
- failures.append(f"{rel} missing required phrase: {phrase}")
109
- for phrase in USER_CONTEXT_MANDATORY_GATE_PHRASES:
110
- if phrase not in mandatory_gate:
111
- failures.append(f"{rel} mandatory gate missing required phrase: {phrase}")
112
- continue
113
- for phrase in MANDATORY_GATE_PHRASES:
114
- if phrase not in text:
115
- failures.append(f"{rel} missing mandatory preflight phrase: {phrase}")
116
-
117
- hero_skills = (
118
- skills_root / "metric-diagnostics/SKILL.md",
119
- skills_root / "product-business-analysis/SKILL.md",
120
- skills_root / "kpi-reporting/SKILL.md",
121
- )
122
- for hero_skill in hero_skills:
123
- text = hero_skill.read_text(encoding="utf-8")
124
- rel = hero_skill.relative_to(plugin_root)
125
- for phrase in ("data-analytics:user-context",):
126
- if phrase not in text:
127
- failures.append(f"{rel} missing user-context preflight handoff: {phrase}")
128
-
129
- preflight_script = skills_root / "user-context/scripts/data_analytics_preflight.py"
130
- if preflight_script.exists():
131
- preflight_text = preflight_script.read_text(encoding="utf-8")
132
- for phrase in PREFLIGHT_HELPER_PHRASES:
133
- if phrase not in preflight_text:
134
- failures.append(
135
- "skills/user-context/scripts/data_analytics_preflight.py "
136
- f"missing compact-context helper wording: {phrase}"
137
- )
138
- if "user_context_markdown" in preflight_text:
139
- failures.append(
140
- "skills/user-context/scripts/data_analytics_preflight.py must not emit "
141
- "legacy context.user_context_markdown"
142
- )
143
-
144
- onboarding_text = (skills_root / "user-context/references/onboarding.md").read_text(
145
- encoding="utf-8"
146
- )
147
- for phrase in (
148
- "## Step 2: Check Main Analytics Sources",
149
- "### Step 2A: Resolve Source Questions",
150
- "Do not preflight-read installed or active sources just to prove they work.",
151
- "transition without a proof read",
152
- "Source setup has covered each required source type as `active`",
153
- "Before Data Analytics sets up data context",
154
- "resolution: user_deferred",
155
- "### Step 4A: Offer First Hero Prompt",
156
- "Do not: show three hero prompts initially",
157
- "write the prompt you would rather try instead",
158
- "`skip` to finish onboarding",
159
- "Step 5, `complete_or_quiet`, when the user skips or defers",
160
- "## CTA Arbitration",
161
- "## Completion Criteria",
162
- ):
163
- if phrase not in onboarding_text:
164
- failures.append(
165
- f"skills/user-context/references/onboarding.md missing required phrase: {phrase}"
166
- )
167
-
168
- source_runtime_text = (
169
- skills_root / "user-context/references/source-category-runtime.md"
170
- ).read_text(encoding="utf-8")
171
- for phrase in (
172
- "## Setup-Owned Source Routes",
173
- "Preflight is a reader.",
174
- "host_available_plugin_catalog",
175
- "## Plugin-First Setup For Missing Sources",
176
- "Do not proactively suggest every installable plugin",
177
- "## Missing Sources And Fallbacks",
178
- "`needs_confirmation`",
179
- "Do not perform an eager read just to prove an installed source works",
180
- "Do not run a proof query during onboarding",
181
- "attempt the smallest useful app or connector read",
182
- "core onboarding categories, not optional setup extras",
183
- "resolution: user_deferred",
184
- ):
185
- if phrase not in source_runtime_text:
186
- failures.append(
187
- "skills/user-context/references/source-category-runtime.md "
188
- f"missing required phrase: {phrase}"
189
- )
190
-
191
- automation_text = (skills_root / "user-context/references/automation.md").read_text(
192
- encoding="utf-8"
193
- )
194
- for phrase in (
195
- "Ask for explicit user approval",
196
- "Only say the default automation setup is complete",
197
- "Do not mark setup complete",
198
- ):
199
- if phrase not in automation_text:
200
- failures.append(
201
- f"skills/user-context/references/automation.md missing required phrase: {phrase}"
202
- )
203
-
204
- semantic_layer_setup_text = (
205
- skills_root / "user-context/references/semantic-layer/setup.md"
206
- ).read_text(encoding="utf-8")
207
- for phrase in (
208
- "source-use checkpoint",
209
- "Infer expected source lanes",
210
- "nearby but not exact",
211
- "rejected or lower-confidence candidates",
212
- "authoritative data documentation",
213
- "source-backed semantic-layer skills",
214
- "user-trusted canonical data skills",
215
- "treat that as authoritative data documentation",
216
- ):
217
- if phrase not in semantic_layer_setup_text:
218
- failures.append(
219
- "skills/user-context/references/semantic-layer/setup.md "
220
- f"missing required phrase: {phrase}"
221
- )
222
-
223
- semantic_layer_weekly_polling_text = (
224
- skills_root / "user-context/references/semantic-layer/weekly-polling-automation.md"
225
- ).read_text(encoding="utf-8")
226
- for phrase in (
227
- "authoritative data documentation",
228
- "source-backed semantic-layer skills",
229
- "user-trusted canonical data skills",
230
- "generic-local-skill-only evidence",
231
- ):
232
- if phrase not in semantic_layer_weekly_polling_text:
233
- failures.append(
234
- "skills/user-context/references/semantic-layer/weekly-polling-automation.md "
235
- f"missing required phrase: {phrase}"
236
- )
237
-
238
- semantic_layer_source_intake_text = (
239
- skills_root / "user-context/references/semantic-layer/source-intake.md"
240
- ).read_text(encoding="utf-8")
241
- for phrase in (
242
- "Infer useful source families",
243
- "do not treat ambient app availability as user approval",
244
- ):
245
- if phrase not in semantic_layer_source_intake_text:
246
- failures.append(
247
- "skills/user-context/references/semantic-layer/source-intake.md "
248
- f"missing required phrase: {phrase}"
249
- )
250
-
251
- semantic_layer_template_text = (
252
- skills_root / "user-context/references/semantic-layer/skill-template.md"
253
- ).read_text(encoding="utf-8")
254
- for phrase in (
255
- "## Start Here",
256
- "## References",
257
- "## Answering Rules",
258
- "## Quick Reference",
259
- "## Entity Clarification",
260
- "## Standard Filters And Dimensions",
261
- "only when the layer needs separate evidence tracking",
262
- "Do not put setup-time policy or full evidence procedures",
263
- ):
264
- if phrase not in semantic_layer_template_text:
265
- failures.append(
266
- "skills/user-context/references/semantic-layer/skill-template.md "
267
- f"missing required phrase: {phrase}"
268
- )
269
- for phrase in ("### Source Order", "### Evidence Standard"):
270
- if phrase in semantic_layer_template_text:
271
- failures.append(
272
- "skills/user-context/references/semantic-layer/skill-template.md "
273
- f"retains heavy generated-skill phrase: {phrase}"
274
- )
275
-
276
- app_manifest_path = plugin_root / ".app.json"
277
- manifest_app_aliases: set[str] = set()
278
- try:
279
- app_manifest = json.loads(app_manifest_path.read_text(encoding="utf-8"))
280
- except (OSError, json.JSONDecodeError) as exc:
281
- failures.append(f"Invalid Data Analytics app manifest: {exc}")
282
- else:
283
- apps = app_manifest.get("apps") if isinstance(app_manifest, dict) else None
284
- if not isinstance(apps, dict) or not apps:
285
- failures.append("Data Analytics .app.json must define a non-empty apps object")
286
- else:
287
- manifest_app_aliases = {
288
- normalize_route_name(app_name)
289
- for app_name, metadata in apps.items()
290
- if isinstance(app_name, str)
291
- and isinstance(metadata, dict)
292
- and isinstance(metadata.get("id"), str)
293
- and metadata["id"]
294
- }
295
-
296
- try:
297
- source_config = json.loads(
298
- (
299
- skills_root / "user-context/plugin-author-config/source-category-config.json"
300
- ).read_text(encoding="utf-8")
301
- )
302
- json.loads(
303
- (skills_root / "user-context/references/onboarding-state-template.json").read_text(
304
- encoding="utf-8"
305
- )
306
- )
307
- except json.JSONDecodeError as exc:
308
- failures.append(f"Invalid user-context JSON: {exc}")
309
- else:
310
- if not isinstance(source_config, dict):
311
- failures.append(
312
- "skills/user-context/plugin-author-config/source-category-config.json "
313
- "must define a JSON object"
314
- )
315
- source_config = {}
316
- if source_config.get("schema_version") != "data_analytics_source_category_config.v1":
317
- failures.append(
318
- "skills/user-context/plugin-author-config/source-category-config.json "
319
- "missing schema_version data_analytics_source_category_config.v1"
320
- )
321
- if not isinstance(source_config.get("description"), str):
322
- failures.append(
323
- "skills/user-context/plugin-author-config/source-category-config.json "
324
- "must define a description"
325
- )
326
- elif "preferred plugin routing hints" not in source_config["description"]:
327
- failures.append(
328
- "skills/user-context/plugin-author-config/source-category-config.json "
329
- "description must document preferred plugin routing hints"
330
- )
331
- categories = source_config.get("categories")
332
- if not isinstance(categories, dict) or not categories:
333
- failures.append(
334
- "skills/user-context/plugin-author-config/source-category-config.json "
335
- "must define a non-empty categories object"
336
- )
337
- else:
338
- for category_id, metadata in categories.items():
339
- if not isinstance(category_id, str) or not re.fullmatch(
340
- r"[a-z0-9_]+",
341
- category_id,
342
- ):
343
- failures.append(
344
- "skills/user-context/plugin-author-config/source-category-config.json "
345
- f"has invalid category id: {category_id}"
346
- )
347
- continue
348
- if not isinstance(metadata, dict):
349
- failures.append(
350
- "skills/user-context/plugin-author-config/source-category-config.json "
351
- f"category {category_id} must be an object"
352
- )
353
- continue
354
- allowed_fields = {
355
- "label",
356
- "preferred_plugins",
357
- "preferred_apps",
358
- "relevant_skills",
359
- }
360
- unexpected_fields = sorted(set(metadata) - allowed_fields)
361
- if unexpected_fields:
362
- failures.append(
363
- "skills/user-context/plugin-author-config/source-category-config.json "
364
- f"category {category_id} has unexpected fields: {unexpected_fields}"
365
- )
366
- if not isinstance(metadata.get("label"), str) or not metadata["label"]:
367
- failures.append(
368
- "skills/user-context/plugin-author-config/source-category-config.json "
369
- f"category {category_id} must define a non-empty label"
370
- )
371
- preferred_plugins = metadata.get("preferred_plugins")
372
- if not isinstance(preferred_plugins, list) or not preferred_plugins:
373
- failures.append(
374
- "skills/user-context/plugin-author-config/source-category-config.json "
375
- f"category {category_id} preferred_plugins must be a non-empty list"
376
- )
377
- preferred_plugins = []
378
- elif not all(
379
- isinstance(plugin, str) and plugin for plugin in preferred_plugins
380
- ):
381
- failures.append(
382
- "skills/user-context/plugin-author-config/source-category-config.json "
383
- f"category {category_id} preferred_plugins must contain non-empty strings"
384
- )
385
- else:
386
- for preferred_plugin in preferred_plugins:
387
- if normalize_route_name(preferred_plugin) not in manifest_app_aliases:
388
- failures.append(
389
- "skills/user-context/plugin-author-config/"
390
- "source-category-config.json "
391
- f"category {category_id} preferred plugin {preferred_plugin} "
392
- "must be declared in .app.json"
393
- )
394
- preferred_apps = metadata.get("preferred_apps", [])
395
- if not isinstance(preferred_apps, list):
396
- failures.append(
397
- "skills/user-context/plugin-author-config/source-category-config.json "
398
- f"category {category_id} preferred_apps must be a list"
399
- )
400
- preferred_apps = []
401
- elif not all(isinstance(app, str) and app for app in preferred_apps):
402
- failures.append(
403
- "skills/user-context/plugin-author-config/source-category-config.json "
404
- f"category {category_id} preferred_apps must contain non-empty strings"
405
- )
406
- else:
407
- for preferred_app in preferred_apps:
408
- if normalize_route_name(preferred_app) not in manifest_app_aliases:
409
- failures.append(
410
- "skills/user-context/plugin-author-config/"
411
- "source-category-config.json "
412
- f"category {category_id} preferred app {preferred_app} "
413
- "must be declared in .app.json"
414
- )
415
- relevant_skills = metadata.get("relevant_skills", [])
416
- if not isinstance(relevant_skills, list):
417
- failures.append(
418
- "skills/user-context/plugin-author-config/source-category-config.json "
419
- f"category {category_id} relevant_skills must be a list"
420
- )
421
- else:
422
- for index, entry in enumerate(relevant_skills):
423
- if not isinstance(entry, dict):
424
- failures.append(
425
- "skills/user-context/plugin-author-config/source-category-config.json "
426
- f"category {category_id} relevant_skills[{index}] must be an object"
427
- )
428
- continue
429
- for field in ("app", "skill"):
430
- if not isinstance(entry.get(field), str) or not entry[field]:
431
- failures.append(
432
- "skills/user-context/plugin-author-config/"
433
- "source-category-config.json "
434
- f"category {category_id} relevant_skills[{index}] "
435
- f"missing non-empty {field}"
436
- )
437
-
438
- user_context_config_path = (
439
- skills_root / "user-context/plugin-author-config/user-context-config.md"
440
- )
441
- if user_context_config_path.exists():
442
- user_context_config = user_context_config_path.read_text(encoding="utf-8")
443
- for phrase in (
444
- "# Data Analytics User Context Config",
445
- "## User Context Shape",
446
- "## Default User Context",
447
- "Store durable Data Analytics source-routing choices explicitly selected for future use.",
448
- "Do not add general memory",
449
- "# Data Analytics Source Routing Preferences",
450
- "# Semantic Layers",
451
- ):
452
- if phrase not in user_context_config:
453
- failures.append(
454
- "skills/user-context/plugin-author-config/user-context-config.md "
455
- f"missing required phrase: {phrase}"
456
- )
457
- default_user_context = user_context_config.rsplit("## Default User Context", 1)[-1]
458
- for disallowed in ("- Priority:", "- Use When:", "## Saved Links And Context"):
459
- if disallowed in default_user_context:
460
- failures.append(
461
- "skills/user-context/plugin-author-config/user-context-config.md "
462
- f"default user context must not contain: {disallowed}"
463
- )
464
- source_category_ids = set((source_config.get("categories") or {}).keys())
465
- source_routing_section = default_user_context.split("# Semantic Layers", 1)[0]
466
- configured_sections = set(re.findall(r"(?m)^##\s+([a-z0-9_]+)\s*$", source_routing_section))
467
- if configured_sections != source_category_ids:
468
- failures.append(
469
- "skills/user-context/plugin-author-config/user-context-config.md "
470
- "source routing sections must match source-category-config.json"
471
- )
472
- for category_id in configured_sections:
473
- category_match = re.search(
474
- rf"(?ms)^##\s+{re.escape(category_id)}\s*$.*?(?=^##\s+|^#\s+Semantic Layers|\Z)",
475
- source_routing_section,
476
- )
477
- category_section = category_match.group(0) if category_match else ""
478
- for field in ("Prefer", "Avoid"):
479
- if len(re.findall(rf"(?m)^-\s+{field}:\s*$", category_section)) != 1:
480
- failures.append(
481
- "skills/user-context/plugin-author-config/user-context-config.md "
482
- f"source routing category {category_id} must define one blank {field} row"
483
- )
484
- if "status: not provided" not in default_user_context:
485
- failures.append(
486
- "skills/user-context/plugin-author-config/user-context-config.md "
487
- "semantic layer registry must start with status: not provided"
488
- )
489
-
490
- if failures:
491
- for failure in failures:
492
- print(f"- {failure}", file=sys.stderr)
493
- return 1
494
- print(f"Validated {len(skill_files)} Data Analytics skill preflight surfaces.")
495
- return 0
496
-
497
-
498
- if __name__ == "__main__":
499
- sys.exit(main())