create-yss-spec 3.4.8 → 3.4.9

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 (365) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +5 -5
  4. package/template/.agents/skills/alibaba-java-code-style/SKILL.md +2 -2
  5. package/template/.agents/skills/archify/SKILL.md +2 -19
  6. package/template/.agents/skills/archify/references/geometry-and-routing.md +20 -0
  7. package/template/.agents/skills/code-review/SKILL.md +3 -33
  8. package/template/.agents/skills/code-review/references/candidate-capture.md +33 -0
  9. package/template/.agents/skills/code-review/references/yss-review-standards.md +3 -5
  10. package/template/.agents/skills/codebase-design/SKILL.md +2 -2
  11. package/template/.agents/skills/competitive-intelligence/SKILL.md +1 -1
  12. package/template/.agents/skills/diagnosing-bugs/SKILL.md +6 -2
  13. package/template/.agents/skills/formily-foundation/SKILL.md +1 -1
  14. package/template/.agents/skills/formily-step-flow/SKILL.md +3 -2
  15. package/template/.agents/skills/frontend-commit/SKILL.md +6 -6
  16. package/template/.agents/skills/grilling/SKILL.md +2 -2
  17. package/template/.agents/skills/implement/SKILL.md +1 -1
  18. package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +3 -3
  19. package/template/.agents/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
  20. package/template/.agents/skills/improve-codebase-architecture/SKILL.md +10 -6
  21. package/template/.agents/skills/java-backend-commit/SKILL.md +5 -5
  22. package/template/.agents/skills/llm-wiki/SKILL.md +1 -1
  23. package/template/.agents/skills/prototype/SKILL.md +1 -1
  24. package/template/.agents/skills/prototype-review/SKILL.md +1 -1
  25. package/template/.agents/skills/resolving-merge-conflicts/SKILL.md +2 -2
  26. package/template/.agents/skills/tdd/SKILL.md +1 -1
  27. package/template/.agents/skills/to-questionnaire/SKILL.md +4 -2
  28. package/template/.agents/skills/to-spec/SKILL.md +3 -3
  29. package/template/.agents/skills/to-tickets/SKILL.md +7 -7
  30. package/template/.agents/skills/using-git-worktrees/SKILL.md +13 -11
  31. package/template/.agents/skills/wait-what/SKILL.md +1 -1
  32. package/template/.agents/skills/wayfinder/SKILL.md +4 -2
  33. package/template/.agents/skills/writing-for-agents/SKILL.md +9 -73
  34. package/template/.agents/skills/writing-for-agents/references/writing-principles.md +76 -0
  35. package/template/.agents/skills/yss-api-integration/SKILL.md +2 -2
  36. package/template/.agents/skills/yss-application/SKILL.md +12 -0
  37. package/template/.agents/skills/yss-audit-log/SKILL.md +3 -1
  38. package/template/.agents/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
  39. package/template/.agents/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
  40. package/template/.agents/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
  41. package/template/.agents/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
  42. package/template/.agents/skills/yss-backend-spec-review/SKILL.md +6 -0
  43. package/template/.agents/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
  44. package/template/.agents/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
  45. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
  46. package/template/.agents/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
  47. package/template/.agents/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
  48. package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
  49. package/template/.agents/skills/yss-domain/SKILL.md +17 -5
  50. package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +2 -2
  51. package/template/.agents/skills/yss-domain/references/existing-project.md +5 -0
  52. package/template/.agents/skills/yss-dto/SKILL.md +13 -10
  53. package/template/.agents/skills/yss-dto/references/wire-validation-checklist.md +14 -0
  54. package/template/.agents/skills/yss-exception/SKILL.md +2 -2
  55. package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +12 -12
  56. package/template/.agents/skills/yss-hook/SKILL.md +8 -44
  57. package/template/.agents/skills/yss-hook/references/use-request.md +42 -0
  58. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
  59. package/template/.agents/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
  60. package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
  61. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  62. package/template/.agents/skills/yss-mybatis/SKILL.md +10 -0
  63. package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +1 -1
  64. package/template/.agents/skills/yss-openapi-governance/SKILL.md +1 -32
  65. package/template/.agents/skills/yss-openapi-governance/references/governance-output.md +34 -0
  66. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +1 -1
  67. package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -5
  68. package/template/.agents/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
  69. package/template/.agents/skills/yss-repository/SKILL.md +13 -1
  70. package/template/.agents/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
  71. package/template/.agents/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
  72. package/template/.agents/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
  73. package/template/.agents/skills/yss-stage-decision/SKILL.md +1 -1
  74. package/template/.agents/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
  75. package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -3
  76. package/template/.agents/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
  77. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +5 -3
  78. package/template/.agents/skills/yss-validation/SKILL.md +1 -1
  79. package/template/.agents/skills/yss-web-controller/SKILL.md +16 -7
  80. package/template/.agents/skills/ytable-usage/SKILL.md +2 -2
  81. package/template/.codex/skills/alibaba-java-code-style/SKILL.md +2 -2
  82. package/template/.codex/skills/archify/SKILL.md +2 -19
  83. package/template/.codex/skills/archify/references/geometry-and-routing.md +20 -0
  84. package/template/.codex/skills/code-review/SKILL.md +3 -33
  85. package/template/.codex/skills/code-review/references/candidate-capture.md +33 -0
  86. package/template/.codex/skills/code-review/references/yss-review-standards.md +3 -5
  87. package/template/.codex/skills/codebase-design/SKILL.md +2 -2
  88. package/template/.codex/skills/competitive-intelligence/SKILL.md +1 -1
  89. package/template/.codex/skills/data-analytics/mcp/server.cjs +2 -1
  90. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +9 -32
  91. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/references/quality-checks.md +29 -0
  92. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +1 -1
  93. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +4 -4
  94. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +12 -22
  95. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +5 -10
  96. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +47 -49
  97. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/tests/test_delivery_plan.py +45 -0
  98. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +4 -5
  99. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +1 -1
  100. package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +1 -1
  101. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +1 -1
  102. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +1 -1
  103. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +4 -4
  104. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +1 -1
  105. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +2 -2
  106. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +1 -1
  107. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +1 -1
  108. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +1 -1
  109. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +4 -4
  110. package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +16 -14
  111. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +1 -1
  112. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +1 -1
  113. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +7 -7
  114. package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +7 -7
  115. package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +4 -2
  116. package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +5 -5
  117. package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +3 -3
  118. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +7 -71
  119. package/template/.codex/skills/data-analytics/skills/validate-data/references/validation-methods.md +70 -0
  120. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +4 -4
  121. package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +1 -1
  122. package/template/.codex/skills/data-analytics/src/analytics-app-core.md +1 -1
  123. package/template/.codex/skills/diagnosing-bugs/SKILL.md +6 -2
  124. package/template/.codex/skills/formily-foundation/SKILL.md +1 -1
  125. package/template/.codex/skills/formily-step-flow/SKILL.md +3 -2
  126. package/template/.codex/skills/frontend-commit/SKILL.md +6 -6
  127. package/template/.codex/skills/grilling/SKILL.md +2 -2
  128. package/template/.codex/skills/implement/SKILL.md +1 -1
  129. package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +3 -3
  130. package/template/.codex/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
  131. package/template/.codex/skills/improve-codebase-architecture/SKILL.md +10 -6
  132. package/template/.codex/skills/java-backend-commit/SKILL.md +5 -5
  133. package/template/.codex/skills/llm-wiki/SKILL.md +1 -1
  134. package/template/.codex/skills/product-design/references/critical-overrides.md +3 -4
  135. package/template/.codex/skills/product-design/skills/audit/SKILL.md +1 -1
  136. package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +1 -1
  137. package/template/.codex/skills/product-design/skills/get-context/SKILL.md +2 -1
  138. package/template/.codex/skills/product-design/skills/ideate/SKILL.md +2 -50
  139. package/template/.codex/skills/product-design/skills/ideate/references/image-prompt-patterns.md +51 -0
  140. package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +6 -6
  141. package/template/.codex/skills/product-design/skills/index/SKILL.md +2 -2
  142. package/template/.codex/skills/product-design/skills/prototype/SKILL.md +6 -6
  143. package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +1 -1
  144. package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
  145. package/template/.codex/skills/prototype/SKILL.md +1 -1
  146. package/template/.codex/skills/prototype-review/SKILL.md +1 -1
  147. package/template/.codex/skills/resolving-merge-conflicts/SKILL.md +2 -2
  148. package/template/.codex/skills/tdd/SKILL.md +1 -1
  149. package/template/.codex/skills/to-questionnaire/SKILL.md +4 -2
  150. package/template/.codex/skills/to-spec/SKILL.md +3 -3
  151. package/template/.codex/skills/to-tickets/SKILL.md +7 -7
  152. package/template/.codex/skills/using-git-worktrees/SKILL.md +13 -11
  153. package/template/.codex/skills/wait-what/SKILL.md +1 -1
  154. package/template/.codex/skills/wayfinder/SKILL.md +4 -2
  155. package/template/.codex/skills/writing-for-agents/SKILL.md +9 -73
  156. package/template/.codex/skills/writing-for-agents/references/writing-principles.md +76 -0
  157. package/template/.codex/skills/yss-api-integration/SKILL.md +2 -2
  158. package/template/.codex/skills/yss-application/SKILL.md +12 -0
  159. package/template/.codex/skills/yss-audit-log/SKILL.md +3 -1
  160. package/template/.codex/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
  161. package/template/.codex/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
  162. package/template/.codex/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
  163. package/template/.codex/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
  164. package/template/.codex/skills/yss-backend-spec-review/SKILL.md +6 -0
  165. package/template/.codex/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
  166. package/template/.codex/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
  167. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
  168. package/template/.codex/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
  169. package/template/.codex/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
  170. package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
  171. package/template/.codex/skills/yss-domain/SKILL.md +17 -5
  172. package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +2 -2
  173. package/template/.codex/skills/yss-domain/references/existing-project.md +5 -0
  174. package/template/.codex/skills/yss-dto/SKILL.md +13 -10
  175. package/template/.codex/skills/yss-dto/references/wire-validation-checklist.md +14 -0
  176. package/template/.codex/skills/yss-exception/SKILL.md +2 -2
  177. package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +12 -12
  178. package/template/.codex/skills/yss-hook/SKILL.md +8 -44
  179. package/template/.codex/skills/yss-hook/references/use-request.md +42 -0
  180. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
  181. package/template/.codex/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
  182. package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
  183. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  184. package/template/.codex/skills/yss-mybatis/SKILL.md +10 -0
  185. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +1 -1
  186. package/template/.codex/skills/yss-openapi-governance/SKILL.md +1 -32
  187. package/template/.codex/skills/yss-openapi-governance/references/governance-output.md +34 -0
  188. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +1 -1
  189. package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -5
  190. package/template/.codex/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
  191. package/template/.codex/skills/yss-repository/SKILL.md +13 -1
  192. package/template/.codex/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
  193. package/template/.codex/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
  194. package/template/.codex/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
  195. package/template/.codex/skills/yss-stage-decision/SKILL.md +1 -1
  196. package/template/.codex/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
  197. package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -3
  198. package/template/.codex/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
  199. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +5 -3
  200. package/template/.codex/skills/yss-validation/SKILL.md +1 -1
  201. package/template/.codex/skills/yss-web-controller/SKILL.md +16 -7
  202. package/template/.codex/skills/ytable-usage/SKILL.md +2 -2
  203. package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +2 -2
  204. package/template/.cursor/skills/archify/SKILL.md +2 -19
  205. package/template/.cursor/skills/archify/references/geometry-and-routing.md +20 -0
  206. package/template/.cursor/skills/code-review/SKILL.md +3 -33
  207. package/template/.cursor/skills/code-review/references/candidate-capture.md +33 -0
  208. package/template/.cursor/skills/code-review/references/yss-review-standards.md +3 -5
  209. package/template/.cursor/skills/codebase-design/SKILL.md +2 -2
  210. package/template/.cursor/skills/competitive-intelligence/SKILL.md +1 -1
  211. package/template/.cursor/skills/diagnosing-bugs/SKILL.md +6 -2
  212. package/template/.cursor/skills/formily-foundation/SKILL.md +1 -1
  213. package/template/.cursor/skills/formily-step-flow/SKILL.md +3 -2
  214. package/template/.cursor/skills/frontend-commit/SKILL.md +6 -6
  215. package/template/.cursor/skills/grilling/SKILL.md +2 -2
  216. package/template/.cursor/skills/implement/SKILL.md +1 -1
  217. package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +3 -3
  218. package/template/.cursor/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
  219. package/template/.cursor/skills/improve-codebase-architecture/SKILL.md +10 -6
  220. package/template/.cursor/skills/java-backend-commit/SKILL.md +5 -5
  221. package/template/.cursor/skills/llm-wiki/SKILL.md +1 -1
  222. package/template/.cursor/skills/prototype/SKILL.md +1 -1
  223. package/template/.cursor/skills/prototype-review/SKILL.md +1 -1
  224. package/template/.cursor/skills/resolving-merge-conflicts/SKILL.md +2 -2
  225. package/template/.cursor/skills/tdd/SKILL.md +1 -1
  226. package/template/.cursor/skills/to-questionnaire/SKILL.md +4 -2
  227. package/template/.cursor/skills/to-spec/SKILL.md +3 -3
  228. package/template/.cursor/skills/to-tickets/SKILL.md +7 -7
  229. package/template/.cursor/skills/using-git-worktrees/SKILL.md +13 -11
  230. package/template/.cursor/skills/wait-what/SKILL.md +1 -1
  231. package/template/.cursor/skills/wayfinder/SKILL.md +4 -2
  232. package/template/.cursor/skills/writing-for-agents/SKILL.md +9 -73
  233. package/template/.cursor/skills/writing-for-agents/references/writing-principles.md +76 -0
  234. package/template/.cursor/skills/yss-api-integration/SKILL.md +2 -2
  235. package/template/.cursor/skills/yss-application/SKILL.md +12 -0
  236. package/template/.cursor/skills/yss-audit-log/SKILL.md +3 -1
  237. package/template/.cursor/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
  238. package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
  239. package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
  240. package/template/.cursor/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
  241. package/template/.cursor/skills/yss-backend-spec-review/SKILL.md +6 -0
  242. package/template/.cursor/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
  243. package/template/.cursor/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
  244. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
  245. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
  246. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
  247. package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
  248. package/template/.cursor/skills/yss-domain/SKILL.md +17 -5
  249. package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +2 -2
  250. package/template/.cursor/skills/yss-domain/references/existing-project.md +5 -0
  251. package/template/.cursor/skills/yss-dto/SKILL.md +13 -10
  252. package/template/.cursor/skills/yss-dto/references/wire-validation-checklist.md +14 -0
  253. package/template/.cursor/skills/yss-exception/SKILL.md +2 -2
  254. package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +12 -12
  255. package/template/.cursor/skills/yss-hook/SKILL.md +8 -44
  256. package/template/.cursor/skills/yss-hook/references/use-request.md +42 -0
  257. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
  258. package/template/.cursor/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
  259. package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
  260. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  261. package/template/.cursor/skills/yss-mybatis/SKILL.md +10 -0
  262. package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +1 -1
  263. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +1 -32
  264. package/template/.cursor/skills/yss-openapi-governance/references/governance-output.md +34 -0
  265. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +1 -1
  266. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +1 -5
  267. package/template/.cursor/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
  268. package/template/.cursor/skills/yss-repository/SKILL.md +13 -1
  269. package/template/.cursor/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
  270. package/template/.cursor/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
  271. package/template/.cursor/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
  272. package/template/.cursor/skills/yss-stage-decision/SKILL.md +1 -1
  273. package/template/.cursor/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
  274. package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -3
  275. package/template/.cursor/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
  276. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +5 -3
  277. package/template/.cursor/skills/yss-validation/SKILL.md +1 -1
  278. package/template/.cursor/skills/yss-web-controller/SKILL.md +16 -7
  279. package/template/.cursor/skills/ytable-usage/SKILL.md +2 -2
  280. package/template/.pi/skills/alibaba-java-code-style/SKILL.md +2 -2
  281. package/template/.pi/skills/archify/SKILL.md +2 -19
  282. package/template/.pi/skills/archify/references/geometry-and-routing.md +20 -0
  283. package/template/.pi/skills/code-review/SKILL.md +3 -33
  284. package/template/.pi/skills/code-review/references/candidate-capture.md +33 -0
  285. package/template/.pi/skills/code-review/references/yss-review-standards.md +3 -5
  286. package/template/.pi/skills/codebase-design/SKILL.md +2 -2
  287. package/template/.pi/skills/competitive-intelligence/SKILL.md +1 -1
  288. package/template/.pi/skills/diagnosing-bugs/SKILL.md +6 -2
  289. package/template/.pi/skills/formily-foundation/SKILL.md +1 -1
  290. package/template/.pi/skills/formily-step-flow/SKILL.md +3 -2
  291. package/template/.pi/skills/frontend-commit/SKILL.md +6 -6
  292. package/template/.pi/skills/grilling/SKILL.md +2 -2
  293. package/template/.pi/skills/implement/SKILL.md +1 -1
  294. package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +3 -3
  295. package/template/.pi/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
  296. package/template/.pi/skills/improve-codebase-architecture/SKILL.md +10 -6
  297. package/template/.pi/skills/java-backend-commit/SKILL.md +5 -5
  298. package/template/.pi/skills/llm-wiki/SKILL.md +1 -1
  299. package/template/.pi/skills/prototype/SKILL.md +1 -1
  300. package/template/.pi/skills/prototype-review/SKILL.md +1 -1
  301. package/template/.pi/skills/resolving-merge-conflicts/SKILL.md +2 -2
  302. package/template/.pi/skills/tdd/SKILL.md +1 -1
  303. package/template/.pi/skills/to-questionnaire/SKILL.md +4 -2
  304. package/template/.pi/skills/to-spec/SKILL.md +3 -3
  305. package/template/.pi/skills/to-tickets/SKILL.md +7 -7
  306. package/template/.pi/skills/using-git-worktrees/SKILL.md +13 -11
  307. package/template/.pi/skills/wait-what/SKILL.md +1 -1
  308. package/template/.pi/skills/wayfinder/SKILL.md +4 -2
  309. package/template/.pi/skills/writing-for-agents/SKILL.md +9 -73
  310. package/template/.pi/skills/writing-for-agents/references/writing-principles.md +76 -0
  311. package/template/.pi/skills/yss-api-integration/SKILL.md +2 -2
  312. package/template/.pi/skills/yss-application/SKILL.md +12 -0
  313. package/template/.pi/skills/yss-audit-log/SKILL.md +3 -1
  314. package/template/.pi/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
  315. package/template/.pi/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
  316. package/template/.pi/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
  317. package/template/.pi/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
  318. package/template/.pi/skills/yss-backend-spec-review/SKILL.md +6 -0
  319. package/template/.pi/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
  320. package/template/.pi/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
  321. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
  322. package/template/.pi/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
  323. package/template/.pi/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
  324. package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
  325. package/template/.pi/skills/yss-domain/SKILL.md +17 -5
  326. package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +2 -2
  327. package/template/.pi/skills/yss-domain/references/existing-project.md +5 -0
  328. package/template/.pi/skills/yss-dto/SKILL.md +13 -10
  329. package/template/.pi/skills/yss-dto/references/wire-validation-checklist.md +14 -0
  330. package/template/.pi/skills/yss-exception/SKILL.md +2 -2
  331. package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +12 -12
  332. package/template/.pi/skills/yss-hook/SKILL.md +8 -44
  333. package/template/.pi/skills/yss-hook/references/use-request.md +42 -0
  334. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
  335. package/template/.pi/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
  336. package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
  337. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
  338. package/template/.pi/skills/yss-mybatis/SKILL.md +10 -0
  339. package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +1 -1
  340. package/template/.pi/skills/yss-openapi-governance/SKILL.md +1 -32
  341. package/template/.pi/skills/yss-openapi-governance/references/governance-output.md +34 -0
  342. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +1 -1
  343. package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -5
  344. package/template/.pi/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
  345. package/template/.pi/skills/yss-repository/SKILL.md +13 -1
  346. package/template/.pi/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
  347. package/template/.pi/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
  348. package/template/.pi/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
  349. package/template/.pi/skills/yss-stage-decision/SKILL.md +1 -1
  350. package/template/.pi/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
  351. package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -3
  352. package/template/.pi/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
  353. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +5 -3
  354. package/template/.pi/skills/yss-validation/SKILL.md +1 -1
  355. package/template/.pi/skills/yss-web-controller/SKILL.md +16 -7
  356. package/template/.pi/skills/ytable-usage/SKILL.md +2 -2
  357. package/template/docs/process/schemas/digital-human-task-package.schema.json +60 -4
  358. package/template/scripts/backend-standards-coverage +26 -0
  359. package/template/scripts/lib/backend-review.mjs +58 -20
  360. package/template/scripts/lib/backend-standards-coverage.mjs +237 -0
  361. package/template/scripts/lib/first-slice-artifacts.mjs +1 -1
  362. package/template/scripts/lib/lifecycle-transition.mjs +4 -1
  363. package/template/scripts/lib/profile-skill-sync.mjs +46 -5
  364. package/template/skills-lock.json +64 -62
  365. package/template.snapshot.json +4 -4
@@ -47,7 +47,7 @@ Use this skill when competitive or market facts are needed to shape product Plan
47
47
  5. Hand off to lifecycle assets:
48
48
  - Update Plan findings in `docs/.scratch/<feature>/plan/`.
49
49
  - Create or update a competitor matrix in `docs/.scratch/<feature>/plan/reports/`.
50
- - Feed stable user, pain, MVP, non-goal, and success criteria into `grill-with-docs` and `to-spec`.
50
+ - Return stable user, pain, MVP, non-goal and success criteria to the current lifecycle/strategic owner for its native Plan and Spec work units. Compatibility entries remain explicit-user-only.
51
51
  - Record uncertain claims as assumptions, not requirements.
52
52
 
53
53
  ## Output Shape
@@ -1913,7 +1913,8 @@ function exportDataScienceArtifactPackage(args) {
1913
1913
  archive_path: archivePath,
1914
1914
  worker_entrypoint: path.join(serverDir, "index.js"),
1915
1915
  appgarden_path: path.join(metaDir, "appgarden.json"),
1916
- access_default: "workspace_all",
1916
+ access_default: null,
1917
+ access_requirement: "explicit-user-selection-before-deployment",
1917
1918
  routes: ["/", "/api/manifest", "/api/snapshot", "/api/package", "/api/source-file", "/api/inline-chart-widget"],
1918
1919
  message:
1919
1920
  "Exported the validated Data Analytics artifact with the canonical MCP app runtime for Site Creator deployment.",
@@ -12,10 +12,13 @@ dashboards, experiments, or downstream pipelines. Start with the intended use an
12
12
 
13
13
  ### User Context
14
14
 
15
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
15
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
16
16
 
17
17
  ## Workflow
18
18
 
19
+ Choose checks from the data grain, intended decision and known risk. Reuse fresh checks already covering the same source/query/transform; do not repeat the catalog. A notebook is needed only when reproducibility or multi-step analysis warrants it. Preserve blocking correctness findings and report material limitations.
20
+
21
+
19
22
  1. Clarify the quality question and operating context.
20
23
 
21
24
  Establish what the dataset represents, the intended unit of analysis, the downstream use, whether the user cares about raw ingestion quality,
@@ -26,7 +29,7 @@ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mod
26
29
 
27
30
  2. Choose an inspectable analysis path.
28
31
 
29
- When checks require SQL or Python, default to a companion notebook so the user can inspect the exact code behind the findings. Use $jupyter-notebooks when a dedicated notebook scaffold or refactor workflow would help. For queryable tables, use `~~structured_data` to confirm schema, grain, sample rows, and query rules through the relevant source connector before heavier checks. Use `~~operations_logs` for freshness and lineage when those checks matter.
32
+ When multi-step SQL/Python analysis needs a reproducible narrative, use a companion notebook; a bounded check may provide its query/script and result directly. Use $jupyter-notebooks when a dedicated notebook scaffold or refactor workflow would help. For queryable tables, use `~~structured_data` to confirm schema, grain, sample rows, and query rules through the relevant source connector before heavier checks. Use `~~operations_logs` for freshness and lineage when those checks matter.
30
33
 
31
34
  3. Build a compact profile.
32
35
 
@@ -76,35 +79,9 @@ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mod
76
79
 
77
80
  ## Standards
78
81
 
79
- ### Core Checks
80
-
81
- - Completeness: null rate by column; null rate by partition, segment, and time bucket; unexpected empty strings or sentinel values; required-column population rate.
82
- - Uniqueness: exact duplicate rows, duplicate primary keys, duplicate composite keys, and proportion unique for semi-unique fields such as emails or device IDs.
83
- - Validity: type conformance after casting; format checks for IDs, emails, URLs,
84
- enums, country codes, and timestamps; range checks for measures, percentages,
85
- counts, and dates; allowed-values checks for controlled vocabularies.
86
- - Consistency: cross-field rule checks, units or currency consistency, status and timestamp alignment, and agreement between duplicated fields from different sources.
87
- - Integrity: parent-child key coverage, orphan records, unexpected many-to-many joins, and broken slowly changing dimension joins.
88
- - Timeliness: freshness lag from source event time to load time, freshness lag from load time to report time, missing recent partitions, and unexplained historical rewrites or backfills.
89
- - Volume and shape: row-count drift, distinct-count drift, distribution drift,
90
- share-of-total drift for major categories, and new or disappeared categories.
91
-
92
- ### Specific Check Guidance
93
-
94
- - Duplicates and keys: check exact duplicates, primary key duplicates, composite key duplicates at the intended grain, and near-duplicates caused by whitespace,
95
- casing, formatting, or late updates. Report count, share of affected rows,
96
- duplicated keys, and whether duplication is isolated to a time range, source,
97
- or segment.
98
- - Missingness: distinguish acceptable sparsity from broken completeness. Check null rates over time, newly null columns after schema or pipeline changes, and sentinel values such as `''`, `'unknown'`, `'n/a'`, `0`, or `-1`.
99
- - Domain validity: check malformed identifiers, country codes, timestamps,
100
- impossible values, values outside allowed sets, and cross-field contradictions such as `is_cancelled = false` with a non-null `cancelled_at`.
101
- - Join coverage: when multiple datasets are involved, check foreign keys that do not match a parent table, unexpected one-to-many expansion, coverage loss when joining to dimensions or experiments, and row counts before and after joins.
102
- - Freshness and schema drift: check row-count changes against recent history,
103
- lag on important date columns, added/removed/retyped columns, and shifts in sparsity or cardinality that suggest upstream changes.
104
- - Outliers and distribution shifts: use robust methods such as quantiles, MAD,
105
- or IQR before defaulting to z-scores. Check sudden changes in mean, median,
106
- variance, zero rate, category share, and long-tail behavior.
107
- - Leakage, backfill, and time travel: check features populated before they should exist, future-dated records, late-arriving data causing unstable recent partitions, and backfills that change historical counts without annotation.
82
+ ### 按影响选择检查
83
+
84
+ 先确认 grain、关键字段和决策风险,再按需读取 [质量检查方法](references/quality-checks.md)。对实际使用的字段/关联执行验证;不把全部目录作为每个任务的固定步骤。
108
85
 
109
86
  ### Severity
110
87
 
@@ -145,7 +122,7 @@ For each finding, include:
145
122
  - likely cause when known
146
123
  - suggested remediation or automated test
147
124
 
148
- When code was used, include or save a notebook containing the key SQL and Python checks and make the notebook path easy to find.
125
+ When code was used, retain the exact queries/scripts and results. Use a notebook when complexity or the requested output calls for one.
149
126
 
150
127
  ### Defaults
151
128
 
@@ -0,0 +1,29 @@
1
+ ### Core Checks
2
+
3
+ - Completeness: null rate by column; null rate by partition, segment, and time bucket; unexpected empty strings or sentinel values; required-column population rate.
4
+ - Uniqueness: exact duplicate rows, duplicate primary keys, duplicate composite keys, and proportion unique for semi-unique fields such as emails or device IDs.
5
+ - Validity: type conformance after casting; format checks for IDs, emails, URLs,
6
+ enums, country codes, and timestamps; range checks for measures, percentages,
7
+ counts, and dates; allowed-values checks for controlled vocabularies.
8
+ - Consistency: cross-field rule checks, units or currency consistency, status and timestamp alignment, and agreement between duplicated fields from different sources.
9
+ - Integrity: parent-child key coverage, orphan records, unexpected many-to-many joins, and broken slowly changing dimension joins.
10
+ - Timeliness: freshness lag from source event time to load time, freshness lag from load time to report time, missing recent partitions, and unexplained historical rewrites or backfills.
11
+ - Volume and shape: row-count drift, distinct-count drift, distribution drift,
12
+ share-of-total drift for major categories, and new or disappeared categories.
13
+
14
+ ### Specific Check Guidance
15
+
16
+ - Duplicates and keys: check exact duplicates, primary key duplicates, composite key duplicates at the intended grain, and near-duplicates caused by whitespace,
17
+ casing, formatting, or late updates. Report count, share of affected rows,
18
+ duplicated keys, and whether duplication is isolated to a time range, source,
19
+ or segment.
20
+ - Missingness: distinguish acceptable sparsity from broken completeness. Check null rates over time, newly null columns after schema or pipeline changes, and sentinel values such as `''`, `'unknown'`, `'n/a'`, `0`, or `-1`.
21
+ - Domain validity: check malformed identifiers, country codes, timestamps,
22
+ impossible values, values outside allowed sets, and cross-field contradictions such as `is_cancelled = false` with a non-null `cancelled_at`.
23
+ - Join coverage: when multiple datasets are involved, check foreign keys that do not match a parent table, unexpected one-to-many expansion, coverage loss when joining to dimensions or experiments, and row counts before and after joins.
24
+ - Freshness and schema drift: check row-count changes against recent history,
25
+ lag on important date columns, added/removed/retyped columns, and shifts in sparsity or cardinality that suggest upstream changes.
26
+ - Outliers and distribution shifts: use robust methods such as quantiles, MAD,
27
+ or IQR before defaulting to z-scores. Check sudden changes in mean, median,
28
+ variance, zero rate, category share, and long-tail behavior.
29
+ - Leakage, backfill, and time travel: check features populated before they should exist, future-dated records, late-arriving data causing unstable recent partitions, and backfills that change historical counts without annotation.
@@ -15,7 +15,7 @@ This skill owns the dashboard brief, delivery-mode selection, metric definitions
15
15
 
16
16
  ### User Context
17
17
 
18
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
18
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
19
19
 
20
20
  ### Source Discovery And Verification
21
21
 
@@ -13,7 +13,7 @@ If this skill is selected directly or included by a report-mode workflow, the ru
13
13
 
14
14
  ### User Context
15
15
 
16
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
16
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
17
17
 
18
18
  Choose exactly one report delivery mode for each run:
19
19
 
@@ -90,7 +90,7 @@ Select exactly one delivery mode per run. Do not build an MCP app report and a s
90
90
 
91
91
  Build the selected surface so it preserves the report reading path, visible titles, evidence order, caveats, and source metadata. Use the delivery-mode specifications in `Report Standards` as implementation guidance for the selected surface, not as a substitute for the report-building workflow.
92
92
 
93
- If the user asks to share an MCP app report or dashboard as a hosted link, use the artifact app's Site Creator share path after the MCP app is valid. Call `export_artifact_package` to materialize the current manifest, bounded snapshot, package metadata, inline-safe source text, and real MCP artifact runtime into a Site Creator-compatible app; do not hand-roll standalone HTML or publish a viewer that depends on MCP-only host payload state. Follow the `sites-hosting` workflow and default new hosted report access to `workspace_all` unless the user asks for narrower access.
93
+ If the user asks to share an MCP app report or dashboard as a hosted link, use the artifact app's Site Creator share path after the MCP app is valid. Call `export_artifact_package` to materialize the current manifest, bounded snapshot, package metadata, inline-safe source text, and real MCP artifact runtime into a Site Creator-compatible app; do not hand-roll standalone HTML or publish a viewer that depends on MCP-only host payload state. Follow the `sites-hosting` workflow and use the audience explicitly selected by the user; if unset, keep the report local/private and ask only when sharing is required.
94
94
 
95
95
  When revising an existing report, treat the current rendered report and source metadata as the starting artifact. Preserve every existing section, visual, table, source, dataset, title, and caveat exactly unless the user explicitly asks to change it or the requested edit makes a narrow dependent update unavoidable. A request to add a section, swap a chart, restyle a visual, or customize one part of the report is not a request to summarize, replace, reorder, or drop the rest of the report. Render the full revised report in the selected surface; do not hand off a section-only, slimmed, or partial replacement artifact when the prior report was complete.
96
96
 
@@ -142,7 +142,7 @@ Read [mcp-app-report.md](specifications/mcp-app-report.md) when the selected rep
142
142
  - Keep an obvious top-to-bottom report reading path. Do not turn a report into a dashboard grid unless the user asked for a dashboard. Use a single-column document flow by default; half-width visual blocks are acceptable only when labels, series, and interpretation remain readable in the selected surface.
143
143
  - Use report markdown blocks for narrative insights and interpretation. Keep chart/table headers neutral, and put takeaways in adjacent narrative blocks rather than hiding the argument inside visual metadata. Markdown blocks are the primary place for the story.
144
144
  - Reports should be substantial enough to stand on their own. Do not deliver a report that is mostly a chart/table bundle with a short summary. The reader should be able to understand the answer, evidence, interpretation, caveats, and recommended next step from the narrative itself.
145
- - Use flexible section names and story-specific ordering, but make sure the report still does the core jobs: answer the user's question directly; explain the metric, cohort, denominator, time window, and comparison basis when they affect interpretation; pair each important number or visual with plain-English interpretation; explain why the finding matters for the decision; state what remains uncertain or could change the conclusion; and include a practical next step when the evidence supports one.
145
+ - Use flexible section names and story-specific ordering, but make sure the report still does the core jobs: answer the user's question directly; explain the metric, cohort, denominator, time window, and comparison basis when they affect interpretation; pair each important number or visual with plain-language interpretation in the user's language; explain why the finding matters for the decision; state what remains uncertain or could change the conclusion; and include a practical next step when the evidence supports one.
146
146
  - Use rich markdown beyond the executive summary when it improves scanning:
147
147
  bold topic sentences in important body paragraphs, keep recommendations as real markdown lists, and avoid collapsing list items into run-on paragraphs.
148
148
  - When using ordered or unordered lists, put each item on its own Markdown line. Do not put `1.`, `2.`, and `3.` items in the same paragraph, and do not leave an intended list item as an unnumbered continuation line.
@@ -183,7 +183,7 @@ Read [mcp-app-report.md](specifications/mcp-app-report.md) when the selected rep
183
183
 
184
184
  ### Metrics And Language
185
185
 
186
- - Describe metrics in plain English before exposing implementation details.
186
+ - Describe metrics in the user's language before exposing implementation details.
187
187
  - Clarify definitions, cohorts, denominators, filters, and comparison baselines before relying on a metric in the report.
188
188
  - Choose the most interpretable audience-facing grain: user, account, workspace, task, turn, session, request, revenue, endpoint, customer, org, or another business-facing unit.
189
189
  - Put raw numbers in context: percent of an active base, percent of the previous funnel step, percent of total change, comparison to baseline, target, peer segment, or historical range.
@@ -5,16 +5,16 @@ description: "Narrow conversion skill. Invoke only when the user explicitly asks
5
5
 
6
6
  # Report To Google Doc
7
7
 
8
- Use this skill only when the user explicitly needs a shareable Google Drive document from an existing HTML analytics report. The source must be an HTML report: a local file, a downloaded blob-hosted report, or a report produced by `$build-report`
8
+ Use this skill when the user requests a local DOCX, a hosted DOCX, or a native Google Doc from an existing HTML analytics report. The source must be an HTML report: a local file, a downloaded blob-hosted report, or a report produced by `$build-report`
9
9
  HTML mode. This skill does not convert a live MCP app report directly.
10
10
 
11
- The expected path is HTML -> DOCX -> Drive upload. It is acceptable for Drive to host the upload as a DOCX-backed viewer file rather than a native Google Docs MIME type. Do not use the old Google Docs batch-update request path.
11
+ Choose the requested target: `local-docx` (default for local conversion), `hosted-docx`, or `native-google-docs`. HTML → DOCX is local work; uploading is a separate external action, performed only when requested. A hosted DOCX viewer is not a native Google Doc. Discover an available conversion/import capability and verify the result MIME/type before claiming native delivery.
12
12
 
13
13
  ## Skill Configuration
14
14
 
15
15
  ### User Context
16
16
 
17
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
17
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
18
18
 
19
19
  ## Workflow
20
20
 
@@ -30,6 +30,8 @@ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mod
30
30
  --out-dir /tmp/report_to_google_doc_plan
31
31
  ```
32
32
 
33
+ The helper defaults to `--target local-docx`. Only for an explicit cloud request, select `--target hosted-docx` or `--target native-google-docs`; the helper still performs no remote action. If dependencies are unavailable and cannot be installed in the authorized scope, use an available local converter and validate against the source, or report the conversion gap.
34
+
33
35
  Omit `--render-workers` on the normal path. Only pass a worker count after benchmarking the same report family locally. If dependencies are missing,
34
36
  use a local virtual environment with `beautifulsoup4`, `pillow`, and `python-docx`; `cairosvg` or headless Playwright are optional renderers.
35
37
 
@@ -42,32 +44,20 @@ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mod
42
44
  and rendered visual inventory
43
45
  - `preflight_checks.json`: source, width, DOCX, and rendered-image checks
44
46
  - `report.docx`: generated local Word document
45
- - `docx_upload_plan.json`: compact upload instructions
47
+ - `docx_upload_plan.json`: selected-target handoff plan (no upload steps for local conversion)
46
48
  - `placeholder_queries.json`: source mapping debug labels
47
49
 
48
50
  Do not upload until `preflight_checks.json` has `status: "passed"` with zero errors. Warnings must either be fixed or called out in the handoff.
49
51
 
50
- 4. Upload the DOCX.
51
-
52
- ```json
53
- mcp__codex_apps__google_drive._upload_file({
54
- "file_uri": "/tmp/report_to_google_doc_plan/report.docx",
55
- "file_name": "Report Name.docx",
56
- "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
57
- })
58
- ```
59
-
60
- Treat the returned Drive URL as the deliverable. Do not attempt to force native Google Docs conversion, and do not fall back to `_batch_update_document`.
52
+ 4. Complete the selected target.
61
53
 
62
- 5. Validate the uploaded result.
54
+ For `local-docx`, validate the local DOCX against the source inventory and stop with its local link. Do not upload, change sharing, or require a Drive connector.
63
55
 
64
- Confirm the uploaded file is readable and non-empty. Compare uploaded text against the source inventory: title, section headings, executive summary or answer callout, caveats, recommendations, source notes, and source links.
65
- Inspect the local `report.docx` structure when available: heading counts,
66
- lists, tables, hyperlink relationships, and image relationships should match `manifest.json`.
56
+ For explicitly requested `hosted-docx` or `native-google-docs`, discover the currently available upload/import capability and read its schema. Never guess a tool name, plugin ID or parameter. If missing, deliver the validated local DOCX and identify the cloud capability gap; do not claim cloud completion or switch the target silently.
67
57
 
68
- 6. Hand off the link.
58
+ 5. Verify and hand off.
69
59
 
70
- Return the Drive/Docs URL, local DOCX path, source HTML path, and validation performed. Connector success alone is not enough; the handoff is complete only after the uploaded file and local DOCX structure have been checked against the source report.
60
+ Check headings, lists, tables, text, links and image relationships against `manifest.json`. For a cloud target, also reopen the returned document and verify content and actual native/hosted type. Return only the selected deliverable links plus source and validation evidence as useful. Connector success alone is insufficient.
71
61
 
72
62
  ## Standards
73
63
 
@@ -114,5 +104,5 @@ python3 <REPORT_TO_GOOGLE_DOC_SKILL_DIR>/scripts/report_to_google_doc_plan.py \
114
104
  jq '.status, .summary' /tmp/report_to_google_doc_plan_smoke/preflight_checks.json
115
105
  test -f /tmp/report_to_google_doc_plan_smoke/report.docx
116
106
  test -f /tmp/report_to_google_doc_plan_smoke/docx_upload_plan.json
117
- git diff --check -- plugins/data-analytics/skills/build-report/report-to-google-doc
107
+ git diff --check -- .codex/skills/data-analytics/skills/build-report/report-to-google-doc
118
108
  ```
@@ -1,14 +1,7 @@
1
- """Build DOCX upload plans for sanitized HTML reports.
1
+ """Convert HTML to local DOCX and record the requested delivery target.
2
2
 
3
- The script intentionally does not call Google APIs. It produces deterministic
4
- artifacts that an agent can feed to the Google Drive connector:
5
-
6
- 1. report.docx contains the locally converted report for Drive upload.
7
- 2. docx_upload_plan.json gives the compact Google Drive upload sequence.
8
- 3. manifest.json records the source inventory for verification.
9
-
10
- The expected deliverable is the uploaded DOCX-backed Drive file. Native Google
11
- Docs MIME conversion is not required.
3
+ No Google APIs are called. Local delivery is the default. Cloud planning requires
4
+ an explicit target and never substitutes for capability discovery or authorization.
12
5
  """
13
6
 
14
7
  from __future__ import annotations
@@ -47,6 +40,7 @@ def main() -> None:
47
40
  action="store_true",
48
41
  help="Write preflight_checks.json but do not fail the command when checks fail.",
49
42
  )
43
+ parser.add_argument("--target", choices=["local-docx", "hosted-docx", "native-google-docs"], default="local-docx")
50
44
  args = parser.parse_args()
51
45
  write_outputs(
52
46
  args.html,
@@ -54,4 +48,5 @@ def main() -> None:
54
48
  chart_mode=args.chart_mode,
55
49
  render_workers=args.render_workers,
56
50
  strict_preflight=not args.no_strict_preflight,
51
+ target=args.target,
57
52
  )
@@ -5,41 +5,45 @@ from pathlib import Path
5
5
  from typing import Any
6
6
 
7
7
  from .constants import DEFAULT_RENDER_WORKERS, DOC_CONTENT_WIDTH_PT
8
- from .docx_writer import write_docx
9
- from .html_parser import parse_html
10
- from .quality import build_preflight_checks
11
- from .rendering import render_chart_images
12
8
 
13
9
 
14
10
  def build_docx_upload_plan(
15
11
  manifest: dict[str, Any],
16
12
  docx_path: Path,
17
13
  preflight: dict[str, Any],
14
+ target: str = "local-docx",
18
15
  ) -> dict[str, Any]:
16
+ if target not in {"local-docx", "hosted-docx", "native-google-docs"}:
17
+ raise ValueError(f"Unsupported delivery target: {target}")
18
+ cloud = target != "local-docx"
19
+ sequence = []
20
+ if cloud and preflight["status"] == "passed":
21
+ sequence = [{
22
+ "capability": "upload_file" if target == "hosted-docx" else "import_native_google_document",
23
+ "discovery_required": True,
24
+ "requires_explicit_user_request": True,
25
+ "file": str(docx_path),
26
+ "note": "Discover the actual tool schema; capability names are not callable tools.",
27
+ }]
19
28
  return {
20
29
  "title": manifest["title"],
21
30
  "source_html": manifest["source_html"],
22
31
  "docx_file": str(docx_path),
23
32
  "preflight_status": preflight["status"],
24
33
  "doc_content_width_pt": DOC_CONTENT_WIDTH_PT,
25
- "sequence": [
26
- {
27
- "tool": "mcp__codex_apps__google_drive._upload_file",
28
- "file_uri": str(docx_path),
29
- "file_name": docx_path.name,
30
- "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
31
- }
32
- ],
33
- "expected_drive_result": (
34
- "A Drive-hosted DOCX file is acceptable. The file does not need to be "
35
- "converted to the native Google Docs MIME type."
36
- ),
34
+ "target": target,
35
+ "remote_action_performed": False,
36
+ "sequence": sequence,
37
+ "expected_result": {
38
+ "local-docx": "Validated local DOCX; no upload or sharing change.",
39
+ "hosted-docx": "Readable hosted DOCX; not a native Google Doc.",
40
+ "native-google-docs": "Reopened native Google Doc; a hosted DOCX does not satisfy this target.",
41
+ }[target],
37
42
  "verification": [
38
- "fetch or open the uploaded Drive file and confirm it is readable",
39
- "compare extracted text against manifest.json headings, lists, source notes, and links",
40
- "inspect local report.docx structure for expected headings, tables, lists, and image relationships",
41
- "compare generated chart_images/*.png against the HTML report visuals when visual fidelity matters",
42
- ],
43
+ "compare text and structure against manifest.json and source HTML",
44
+ "inspect headings, tables, lists, links and image relationships",
45
+ "compare rendered charts with source visuals when applicable",
46
+ ] + (["reopen the cloud result and verify content and actual native/hosted type"] if cloud else []),
43
47
  }
44
48
 
45
49
 
@@ -52,38 +56,24 @@ def write_docx_upload_readme(
52
56
  manifest: dict[str, Any],
53
57
  preflight: dict[str, Any],
54
58
  docx_path: Path,
59
+ target: str = "local-docx",
55
60
  ) -> str:
56
- return f"""# Report-to-Google-Doc DOCX Upload Plan
61
+ plan = build_docx_upload_plan(manifest, docx_path, preflight, target)
62
+ return f"""# HTML report delivery plan
57
63
 
58
64
  Source: `{html}`
59
-
60
65
  Local DOCX: `{docx_path}`
61
-
62
- Inventory:
63
- - headings: {manifest["counts"]["headings"]}
64
- - native tables/cards: {manifest["counts"]["tables"]}
65
- - chart images: {manifest["counts"].get("chart_images", 0)}
66
- - source two-column blocks: {manifest["counts"].get("two_col_source_blocks", 0)}
67
- - rendered two-column blocks: {manifest["counts"].get("two_col_image_blocks", 0)}
68
- - inline style spans: {manifest["counts"]["inline_styles"]}
69
- - lists: {manifest["counts"]["lists"]}
70
- - preflight: {preflight["status"]} ({preflight["summary"]["errors"]} errors,
71
- {preflight["summary"]["warnings"]} warnings)
72
-
73
- Expected connector sequence:
74
-
75
- 1. Inspect `preflight_checks.json`. Do not upload until preflight passes.
76
- 2. Upload `{docx_path}` with `mcp__codex_apps__google_drive._upload_file`.
77
- 3. Treat the Drive-hosted DOCX as the deliverable; it does not need native
78
- Google Docs MIME conversion.
79
- 4. Fetch/open the uploaded file and compare it against `manifest.json` and the
80
- source HTML report.
81
-
82
- This helper intentionally writes only DOCX-upload artifacts. It does not write
83
- Google Docs batch-update request files such as `seed_requests.json`,
84
- `table_requests.json`, `content_replacement_requests_template.json`,
85
- `chart_image_requests_template.json`, `remote_write_plan.json`, or
86
- `all_requests*.json`.
66
+ Target: `{target}`
67
+ Preflight: `{preflight["status"]}`
68
+ Expected result: {plan["expected_result"]}
69
+
70
+ Check the source inventory in `manifest.json` and `preflight_checks.json`.
71
+ For local-docx, validate and return the local file. Do not upload.
72
+ A cloud target requires an explicit user request, passed preflight, actual tool
73
+ capability discovery, and content/type verification after reopening the result.
74
+ Missing capability is a delivery gap; a local file is not proof of cloud completion.
75
+ This helper performs no remote actions. `docx_upload_plan.json` is a planning
76
+ artifact with conditional capabilities, not executable tool instructions.
87
77
  """
88
78
 
89
79
 
@@ -93,7 +83,13 @@ def write_outputs(
93
83
  chart_mode: str = "image",
94
84
  render_workers: int = DEFAULT_RENDER_WORKERS,
95
85
  strict_preflight: bool = True,
86
+ target: str = "local-docx",
96
87
  ) -> None:
88
+ from .docx_writer import write_docx
89
+ from .html_parser import parse_html
90
+ from .quality import build_preflight_checks
91
+ from .rendering import render_chart_images
92
+
97
93
  out_dir.mkdir(parents=True, exist_ok=True)
98
94
  manifest = parse_html(html, chart_mode=chart_mode)
99
95
  if manifest.get("chart_images"):
@@ -113,6 +109,7 @@ def write_outputs(
113
109
  manifest,
114
110
  docx_path,
115
111
  preflight,
112
+ target,
116
113
  )
117
114
  write_json(out_dir / "docx_upload_plan.json", docx_upload_plan)
118
115
  readme = write_docx_upload_readme(
@@ -120,6 +117,7 @@ def write_outputs(
120
117
  manifest,
121
118
  preflight,
122
119
  docx_path,
120
+ target,
123
121
  )
124
122
  (out_dir / "README.md").write_text(readme, encoding="utf-8")
125
123
  if strict_preflight and preflight["status"] != "passed":
@@ -0,0 +1,45 @@
1
+ """External-action boundaries of the generated delivery plan, without cloud writes."""
2
+ import sys
3
+ from pathlib import Path
4
+ import unittest
5
+
6
+ sys.path.insert(0, str(Path(__file__).parents[1] / 'scripts'))
7
+ from report_to_google_doc.plan import build_docx_upload_plan, write_docx_upload_readme
8
+
9
+
10
+ class DeliveryPlanTests(unittest.TestCase):
11
+ def plan(self, target='local-docx', status='passed'):
12
+ return build_docx_upload_plan({'title': '报告', 'source_html': 'report.html'}, Path('report.docx'), {'status': status}, target)
13
+
14
+ def test_local_conversion_has_no_remote_sequence(self):
15
+ plan = self.plan()
16
+ self.assertEqual(plan['sequence'], [])
17
+ self.assertFalse(plan['remote_action_performed'])
18
+ self.assertEqual(plan['target'], 'local-docx')
19
+
20
+ def test_cloud_plans_require_discovery_and_explicit_request(self):
21
+ for target in ['hosted-docx', 'native-google-docs']:
22
+ plan = self.plan(target)
23
+ step = plan['sequence'][0]
24
+ self.assertNotIn('tool', step)
25
+ self.assertTrue(step['discovery_required'])
26
+ self.assertTrue(step['requires_explicit_user_request'])
27
+ self.assertFalse(plan['remote_action_performed'])
28
+ self.assertNotEqual(self.plan('hosted-docx')['sequence'][0]['capability'], self.plan('native-google-docs')['sequence'][0]['capability'])
29
+
30
+ def test_failed_validation_never_emits_cloud_steps(self):
31
+ for target in ['hosted-docx', 'native-google-docs']:
32
+ self.assertEqual(self.plan(target, 'failed')['sequence'], [])
33
+
34
+ def test_unknown_target_is_rejected(self):
35
+ with self.assertRaises(ValueError): self.plan('share-everywhere')
36
+
37
+ def test_readme_keeps_native_and_hosted_results_distinct(self):
38
+ readme = write_docx_upload_readme(Path('report.html'), {'title': '报告', 'source_html': 'report.html'}, {'status': 'passed'}, Path('report.docx'), 'native-google-docs')
39
+ self.assertIn('hosted DOCX does not satisfy', readme)
40
+ self.assertIn('performs no remote actions', readme)
41
+ self.assertNotIn('mcp__', readme)
42
+
43
+
44
+ if __name__ == '__main__':
45
+ unittest.main()
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: report-to-google-slides
3
- description: "Narrow conversion skill. Invoke only when the user explicitly asks to convert an existing HTML analytics report into a native Google Slides deck."
3
+ description: "Narrow conversion skill. Invoke only when the user explicitly asks to convert an existing HTML analytics report into a local PPTX or native Google Slides deck."
4
4
  ---
5
5
 
6
6
  # Report To Google Slides
7
7
 
8
- Use this skill only when the user explicitly has an existing HTML analytics report and wants a Google Slides deliverable. The output should be a deck, not a pasted report. A stakeholder skimming the slides should understand the answer, evidence,
8
+ Use this skill only when the user explicitly has an existing HTML analytics report and wants a local PPTX or native Google Slides deliverable. The output should be a deck, not a pasted report. A stakeholder skimming the slides should understand the answer, evidence,
9
9
  caveats, and recommended follow-up without opening the source report.
10
10
 
11
11
  This skill consumes an HTML report. It does not convert a live MCP app report directly; if only an MCP app report exists, build an HTML report from the same source evidence as a separate report delivery mode first.
@@ -14,7 +14,7 @@ This skill consumes an HTML report. It does not convert a live MCP app report di
14
14
 
15
15
  ### User Context
16
16
 
17
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
17
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
18
18
 
19
19
  ## Workflow
20
20
 
@@ -46,8 +46,7 @@ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mod
46
46
 
47
47
  4. Import and verify in Google Slides.
48
48
 
49
- Import `deck.pptx` with `mcp__codex_apps__google_drive._import_presentation` using `upload_mode="native_google_slides"`. Verify the imported deck with `_get_presentation_outline` and `_get_slide_thumbnail` for every slide when possible. At minimum, inspect the cover, one chart slide, one table slide,
50
- and the caveats/sources slides.
49
+ For a local PPTX request, validate and hand off `deck.pptx` without upload. For an explicitly requested native Slides deliverable, discover the installed presentation import/readback capabilities and their schemas; do not assume tool names. Verify the imported native type, outline and rendered slides through available readback tools. Missing import/readback capability is a named gap; the local PPTX remains a separate deliverable, not proof of native completion.
51
50
 
52
51
  5. Repair before handoff.
53
52
 
@@ -13,7 +13,7 @@ The expected path is static HTML -> Chrome headless print-to-PDF -> PDF verifica
13
13
 
14
14
  ### User Context
15
15
 
16
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
16
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
17
17
 
18
18
  ## Workflow
19
19
 
@@ -55,5 +55,5 @@ Before creating or revising an MCP app report artifact, read `../../../src/analy
55
55
  - Preserve the current manifest, bounded snapshot, inline-safe source text, package metadata, reading order, visuals, tables, source details, and narrative.
56
56
  - Keep static HTML and PDF exports content-only: include the report title, narrative, visuals, tables, and source details, but omit the interactive top bar and app-only controls.
57
57
  - Use the `sites-hosting` workflow for project resolution, local validation, source provenance, artifact preparation, version creation, deployment polling, and access control.
58
- - Default new hosted report access to `workspace_all` unless the user explicitly requests narrower access. Report the production URL and the configured access mode.
58
+ - Use only the explicitly selected hosting audience; missing audience does not authorize workspace-wide access. Report the production URL and the configured access mode.
59
59
  - If the local report package files or validated artifact payload are unavailable, stop and ask for the missing source instead of publishing an empty, fallback, or stale report.
@@ -11,7 +11,7 @@ Design KPI frameworks, set targets, and develop measurement plans that help team
11
11
 
12
12
  ### User Context
13
13
 
14
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
14
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
15
15
 
16
16
  ### Source Discovery And Verification
17
17
 
@@ -11,7 +11,7 @@ Use this skill to collect the business context needed to understand an analytica
11
11
 
12
12
  ### User Context
13
13
 
14
- Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and running its preflight script before answering, searching connectors, retrieving evidence, creating artifacts, or drafting output. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
14
+ Mandatory pre-answer gate: Invoke `data-analytics:user-context` in preflight mode by loading [data-analytics:user-context](../user-context/SKILL.md) and using its read-only preflight before source selection. Reuse the already loaded envelope within the same workflow while the resolved state paths, file digests, request mode and source scope are unchanged; re-read on change, missing context or explicit inspection. Do not look for a callable MCP tool named `data-analytics:user-context`. Use the returned `data_analytics_preflight` envelope as the source of truth for saved context, source-category mapping, semantic-layer registry, onboarding/final-response obligations, and conditional guidance; use saved context and semantic layers as source-selection inputs, not as substitutes for workflow-time reads from connected or provided sources. Do not read or reinterpret raw plugin state files unless preflight fails, declares required content omitted, local shell access is unavailable, or the user explicitly asks for raw state inspection.
15
15
 
16
16
  ## Workflow
17
17