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