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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/template/.agents/skills/.strategic-design-skills-manifest.json +5 -5
- package/template/.agents/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.agents/skills/archify/SKILL.md +2 -19
- package/template/.agents/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.agents/skills/code-review/SKILL.md +3 -33
- package/template/.agents/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.agents/skills/code-review/references/yss-review-standards.md +3 -5
- package/template/.agents/skills/codebase-design/SKILL.md +2 -2
- package/template/.agents/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.agents/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.agents/skills/formily-foundation/SKILL.md +1 -1
- package/template/.agents/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.agents/skills/frontend-commit/SKILL.md +6 -6
- package/template/.agents/skills/grilling/SKILL.md +2 -2
- package/template/.agents/skills/implement/SKILL.md +1 -1
- package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.agents/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.agents/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.agents/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.agents/skills/llm-wiki/SKILL.md +1 -1
- package/template/.agents/skills/prototype/SKILL.md +1 -1
- package/template/.agents/skills/prototype-review/SKILL.md +1 -1
- package/template/.agents/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.agents/skills/tdd/SKILL.md +1 -1
- package/template/.agents/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.agents/skills/to-spec/SKILL.md +3 -3
- package/template/.agents/skills/to-tickets/SKILL.md +7 -7
- package/template/.agents/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.agents/skills/wait-what/SKILL.md +1 -1
- package/template/.agents/skills/wayfinder/SKILL.md +4 -2
- package/template/.agents/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.agents/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.agents/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.agents/skills/yss-application/SKILL.md +12 -0
- package/template/.agents/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.agents/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.agents/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.agents/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.agents/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.agents/skills/yss-backend-spec-review/SKILL.md +6 -0
- package/template/.agents/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
- package/template/.agents/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.agents/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.agents/skills/yss-design-system/SKILL.md +2 -2
- package/template/.agents/skills/yss-domain/SKILL.md +17 -5
- package/template/.agents/skills/yss-domain/references/domain-layer-guide.md +2 -2
- package/template/.agents/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.agents/skills/yss-dto/SKILL.md +13 -10
- package/template/.agents/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.agents/skills/yss-exception/SKILL.md +2 -2
- package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.agents/skills/yss-hook/SKILL.md +8 -44
- package/template/.agents/skills/yss-hook/references/use-request.md +42 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.agents/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.agents/skills/yss-mybatis/SKILL.md +10 -0
- package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.agents/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.agents/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.agents/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.agents/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.agents/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.agents/skills/yss-repository/SKILL.md +13 -1
- package/template/.agents/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.agents/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.agents/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.agents/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.agents/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.agents/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.agents/skills/yss-validation/SKILL.md +1 -1
- package/template/.agents/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.agents/skills/ytable-usage/SKILL.md +2 -2
- package/template/.codex/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.codex/skills/archify/SKILL.md +2 -19
- package/template/.codex/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.codex/skills/code-review/SKILL.md +3 -33
- package/template/.codex/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.codex/skills/code-review/references/yss-review-standards.md +3 -5
- package/template/.codex/skills/codebase-design/SKILL.md +2 -2
- package/template/.codex/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/mcp/server.cjs +2 -1
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +9 -32
- package/template/.codex/skills/data-analytics/skills/analyze-data-quality/references/quality-checks.md +29 -0
- package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +12 -22
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +5 -10
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +47 -49
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/tests/test_delivery_plan.py +45 -0
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +4 -5
- package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +1 -1
- package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/index/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +2 -2
- package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +1 -1
- package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +16 -14
- package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +1 -1
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +1 -1
- package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +7 -7
- package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +7 -7
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +4 -2
- package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +5 -5
- package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +3 -3
- package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +7 -71
- package/template/.codex/skills/data-analytics/skills/validate-data/references/validation-methods.md +70 -0
- package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +4 -4
- package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +1 -1
- package/template/.codex/skills/data-analytics/src/analytics-app-core.md +1 -1
- package/template/.codex/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.codex/skills/formily-foundation/SKILL.md +1 -1
- package/template/.codex/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.codex/skills/frontend-commit/SKILL.md +6 -6
- package/template/.codex/skills/grilling/SKILL.md +2 -2
- package/template/.codex/skills/implement/SKILL.md +1 -1
- package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.codex/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.codex/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.codex/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.codex/skills/llm-wiki/SKILL.md +1 -1
- package/template/.codex/skills/product-design/references/critical-overrides.md +3 -4
- package/template/.codex/skills/product-design/skills/audit/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/get-context/SKILL.md +2 -1
- package/template/.codex/skills/product-design/skills/ideate/SKILL.md +2 -50
- package/template/.codex/skills/product-design/skills/ideate/references/image-prompt-patterns.md +51 -0
- package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +6 -6
- package/template/.codex/skills/product-design/skills/index/SKILL.md +2 -2
- package/template/.codex/skills/product-design/skills/prototype/SKILL.md +6 -6
- package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +1 -1
- package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
- package/template/.codex/skills/prototype/SKILL.md +1 -1
- package/template/.codex/skills/prototype-review/SKILL.md +1 -1
- package/template/.codex/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.codex/skills/tdd/SKILL.md +1 -1
- package/template/.codex/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.codex/skills/to-spec/SKILL.md +3 -3
- package/template/.codex/skills/to-tickets/SKILL.md +7 -7
- package/template/.codex/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.codex/skills/wait-what/SKILL.md +1 -1
- package/template/.codex/skills/wayfinder/SKILL.md +4 -2
- package/template/.codex/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.codex/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.codex/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.codex/skills/yss-application/SKILL.md +12 -0
- package/template/.codex/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.codex/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.codex/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.codex/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.codex/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.codex/skills/yss-backend-spec-review/SKILL.md +6 -0
- package/template/.codex/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
- package/template/.codex/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.codex/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.codex/skills/yss-design-system/SKILL.md +2 -2
- package/template/.codex/skills/yss-domain/SKILL.md +17 -5
- package/template/.codex/skills/yss-domain/references/domain-layer-guide.md +2 -2
- package/template/.codex/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.codex/skills/yss-dto/SKILL.md +13 -10
- package/template/.codex/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.codex/skills/yss-exception/SKILL.md +2 -2
- package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.codex/skills/yss-hook/SKILL.md +8 -44
- package/template/.codex/skills/yss-hook/references/use-request.md +42 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.codex/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.codex/skills/yss-mybatis/SKILL.md +10 -0
- package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.codex/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.codex/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.codex/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.codex/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.codex/skills/yss-repository/SKILL.md +13 -1
- package/template/.codex/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.codex/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.codex/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.codex/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.codex/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.codex/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.codex/skills/yss-validation/SKILL.md +1 -1
- package/template/.codex/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.codex/skills/ytable-usage/SKILL.md +2 -2
- package/template/.cursor/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.cursor/skills/archify/SKILL.md +2 -19
- package/template/.cursor/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.cursor/skills/code-review/SKILL.md +3 -33
- package/template/.cursor/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.cursor/skills/code-review/references/yss-review-standards.md +3 -5
- package/template/.cursor/skills/codebase-design/SKILL.md +2 -2
- package/template/.cursor/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.cursor/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.cursor/skills/formily-foundation/SKILL.md +1 -1
- package/template/.cursor/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.cursor/skills/frontend-commit/SKILL.md +6 -6
- package/template/.cursor/skills/grilling/SKILL.md +2 -2
- package/template/.cursor/skills/implement/SKILL.md +1 -1
- package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.cursor/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.cursor/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.cursor/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.cursor/skills/llm-wiki/SKILL.md +1 -1
- package/template/.cursor/skills/prototype/SKILL.md +1 -1
- package/template/.cursor/skills/prototype-review/SKILL.md +1 -1
- package/template/.cursor/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.cursor/skills/tdd/SKILL.md +1 -1
- package/template/.cursor/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.cursor/skills/to-spec/SKILL.md +3 -3
- package/template/.cursor/skills/to-tickets/SKILL.md +7 -7
- package/template/.cursor/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.cursor/skills/wait-what/SKILL.md +1 -1
- package/template/.cursor/skills/wayfinder/SKILL.md +4 -2
- package/template/.cursor/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.cursor/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.cursor/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.cursor/skills/yss-application/SKILL.md +12 -0
- package/template/.cursor/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.cursor/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.cursor/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.cursor/skills/yss-backend-spec-review/SKILL.md +6 -0
- package/template/.cursor/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
- package/template/.cursor/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.cursor/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.cursor/skills/yss-design-system/SKILL.md +2 -2
- package/template/.cursor/skills/yss-domain/SKILL.md +17 -5
- package/template/.cursor/skills/yss-domain/references/domain-layer-guide.md +2 -2
- package/template/.cursor/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.cursor/skills/yss-dto/SKILL.md +13 -10
- package/template/.cursor/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.cursor/skills/yss-exception/SKILL.md +2 -2
- package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.cursor/skills/yss-hook/SKILL.md +8 -44
- package/template/.cursor/skills/yss-hook/references/use-request.md +42 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.cursor/skills/yss-mybatis/SKILL.md +10 -0
- package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.cursor/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.cursor/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.cursor/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.cursor/skills/yss-repository/SKILL.md +13 -1
- package/template/.cursor/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.cursor/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.cursor/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.cursor/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.cursor/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.cursor/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.cursor/skills/yss-validation/SKILL.md +1 -1
- package/template/.cursor/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.cursor/skills/ytable-usage/SKILL.md +2 -2
- package/template/.pi/skills/alibaba-java-code-style/SKILL.md +2 -2
- package/template/.pi/skills/archify/SKILL.md +2 -19
- package/template/.pi/skills/archify/references/geometry-and-routing.md +20 -0
- package/template/.pi/skills/code-review/SKILL.md +3 -33
- package/template/.pi/skills/code-review/references/candidate-capture.md +33 -0
- package/template/.pi/skills/code-review/references/yss-review-standards.md +3 -5
- package/template/.pi/skills/codebase-design/SKILL.md +2 -2
- package/template/.pi/skills/competitive-intelligence/SKILL.md +1 -1
- package/template/.pi/skills/diagnosing-bugs/SKILL.md +6 -2
- package/template/.pi/skills/formily-foundation/SKILL.md +1 -1
- package/template/.pi/skills/formily-step-flow/SKILL.md +3 -2
- package/template/.pi/skills/frontend-commit/SKILL.md +6 -6
- package/template/.pi/skills/grilling/SKILL.md +2 -2
- package/template/.pi/skills/implement/SKILL.md +1 -1
- package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +3 -3
- package/template/.pi/skills/implementation-repo-onboarding/references/write-scope.md +5 -0
- package/template/.pi/skills/improve-codebase-architecture/SKILL.md +10 -6
- package/template/.pi/skills/java-backend-commit/SKILL.md +5 -5
- package/template/.pi/skills/llm-wiki/SKILL.md +1 -1
- package/template/.pi/skills/prototype/SKILL.md +1 -1
- package/template/.pi/skills/prototype-review/SKILL.md +1 -1
- package/template/.pi/skills/resolving-merge-conflicts/SKILL.md +2 -2
- package/template/.pi/skills/tdd/SKILL.md +1 -1
- package/template/.pi/skills/to-questionnaire/SKILL.md +4 -2
- package/template/.pi/skills/to-spec/SKILL.md +3 -3
- package/template/.pi/skills/to-tickets/SKILL.md +7 -7
- package/template/.pi/skills/using-git-worktrees/SKILL.md +13 -11
- package/template/.pi/skills/wait-what/SKILL.md +1 -1
- package/template/.pi/skills/wayfinder/SKILL.md +4 -2
- package/template/.pi/skills/writing-for-agents/SKILL.md +9 -73
- package/template/.pi/skills/writing-for-agents/references/writing-principles.md +76 -0
- package/template/.pi/skills/yss-api-integration/SKILL.md +2 -2
- package/template/.pi/skills/yss-application/SKILL.md +12 -0
- package/template/.pi/skills/yss-audit-log/SKILL.md +3 -1
- package/template/.pi/skills/yss-audit-log/assets/AuditLogAspect.java +1 -0
- package/template/.pi/skills/yss-audit-log/assets/YssAuditLogPrintSubscriberImpl.java +1 -0
- package/template/.pi/skills/yss-audit-log/assets/YssAuditLogSysManagerSubscriberImpl.java +1 -0
- package/template/.pi/skills/yss-audit-log/assets/YssAuditPublishService.java +1 -0
- package/template/.pi/skills/yss-backend-spec-review/SKILL.md +6 -0
- package/template/.pi/skills/yss-backend-spec-review/references/check-inputs.md +2 -2
- package/template/.pi/skills/yss-backend-spec-review/references/standards-coverage.md +39 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +5 -34
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/command-examples.md +32 -0
- package/template/.pi/skills/yss-ddd-scaffold-generator/references/generator-maintenance.md +7 -0
- package/template/.pi/skills/yss-design-system/SKILL.md +2 -2
- package/template/.pi/skills/yss-domain/SKILL.md +17 -5
- package/template/.pi/skills/yss-domain/references/domain-layer-guide.md +2 -2
- package/template/.pi/skills/yss-domain/references/existing-project.md +5 -0
- package/template/.pi/skills/yss-dto/SKILL.md +13 -10
- package/template/.pi/skills/yss-dto/references/wire-validation-checklist.md +14 -0
- package/template/.pi/skills/yss-exception/SKILL.md +2 -2
- package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +12 -12
- package/template/.pi/skills/yss-hook/SKILL.md +8 -44
- package/template/.pi/skills/yss-hook/references/use-request.md +42 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +1 -5
- package/template/.pi/skills/yss-implementation-contract-compiler/references/strategic-handoff-routing.md +7 -0
- package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +5 -1
- package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +2 -2
- package/template/.pi/skills/yss-mybatis/SKILL.md +10 -0
- package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +1 -1
- package/template/.pi/skills/yss-openapi-governance/SKILL.md +1 -32
- package/template/.pi/skills/yss-openapi-governance/references/governance-output.md +34 -0
- package/template/.pi/skills/yss-product-lifecycle/SKILL.md +1 -1
- package/template/.pi/skills/yss-prototype-stage/SKILL.md +1 -5
- package/template/.pi/skills/yss-prototype-stage/references/existing-ui-entry.md +7 -0
- package/template/.pi/skills/yss-repository/SKILL.md +13 -1
- package/template/.pi/skills/yss-repository/references/profiles/existing-domain-driven-maven.md +7 -0
- package/template/.pi/skills/yss-repository/references/profiles/existing-layered-mvc-maven.md +7 -0
- package/template/.pi/skills/yss-repository/tests/profile-routing.test.mjs +3 -1
- package/template/.pi/skills/yss-stage-decision/SKILL.md +1 -1
- package/template/.pi/skills/yss-stage-decision/references/strategic-handoff-routing.md +3 -0
- package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -3
- package/template/.pi/skills/yss-tactical-design/references/strategic-handoff-routing.md +5 -0
- package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +5 -3
- package/template/.pi/skills/yss-validation/SKILL.md +1 -1
- package/template/.pi/skills/yss-web-controller/SKILL.md +16 -7
- package/template/.pi/skills/ytable-usage/SKILL.md +2 -2
- package/template/docs/process/schemas/digital-human-task-package.schema.json +60 -4
- package/template/scripts/backend-standards-coverage +26 -0
- package/template/scripts/lib/backend-review.mjs +58 -20
- package/template/scripts/lib/backend-standards-coverage.mjs +237 -0
- package/template/scripts/lib/first-slice-artifacts.mjs +1 -1
- package/template/scripts/lib/lifecycle-transition.mjs +4 -1
- package/template/scripts/lib/profile-skill-sync.mjs +46 -5
- package/template/skills-lock.json +64 -62
- 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
|
-
-
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
###
|
|
80
|
-
|
|
81
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
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
|
|
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.
|
package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
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`:
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
58
|
+
5. Verify and hand off.
|
|
69
59
|
|
|
70
|
-
|
|
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 --
|
|
107
|
+
git diff --check -- .codex/skills/data-analytics/skills/build-report/report-to-google-doc
|
|
118
108
|
```
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Convert HTML to local DOCX and record the requested delivery target.
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
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
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
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
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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()
|
package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
|
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
|
|
package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md
CHANGED
|
@@ -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
|
-
-
|
|
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
|
|
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
|
|
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
|
|