create-yss-spec 2.1.15 → 2.2.1
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 +6 -2
- package/package.json +1 -1
- package/src/cli.js +276 -15
- package/template/.agents/rules/yss-ai-skills.md +59 -0
- package/template/.agents/skills/.yss-skills-manifest.json +28 -0
- package/template/.agents/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.agents/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.agents/skills/file-export-download/SKILL.md +160 -0
- package/template/.agents/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.agents/skills/formily-foundation/SKILL.md +176 -0
- package/template/.agents/skills/formily-foundation/references/examples.md +486 -0
- package/template/.agents/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.agents/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.agents/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.agents/skills/frontend-commit/SKILL.md +118 -0
- package/template/.agents/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.agents/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.agents/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.agents/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.agents/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.agents/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.agents/skills/llm-wiki/SKILL.md +1 -1
- package/template/.agents/skills/llm-wiki/references/discover.md +1 -0
- package/template/.agents/skills/page-form-module/SKILL.md +168 -0
- package/template/.agents/skills/page-list-module/SKILL.md +137 -0
- package/template/.agents/skills/page-skeleton/SKILL.md +76 -0
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.agents/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.agents/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.agents/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.agents/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.agents/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.agents/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.agents/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.agents/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.agents/skills/yss-components/SKILL.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.agents/skills/yss-design-system/SKILL.md +1 -1
- package/template/.agents/skills/yss-formily/SKILL.md +233 -265
- package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.agents/skills/yss-hook/SKILL.md +1 -1
- package/template/.agents/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.agents/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.agents/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.agents/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.agents/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.agents/skills/yss-router/SKILL.md +1 -1
- package/template/.agents/skills/yss-router/references/boundaries.md +1 -1
- package/template/.agents/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.agents/skills/yss-ui/SKILL.md +1 -1
- package/template/.agents/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.agents/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.agents/skills/ytable-usage/SKILL.md +251 -0
- package/template/.agents/skills/ytree-usage/SKILL.md +132 -0
- package/template/.claude/skills/.yss-skills-manifest.json +29 -0
- package/template/.claude/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.claude/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.claude/skills/file-export-download/SKILL.md +160 -0
- package/template/.claude/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.claude/skills/formily-foundation/SKILL.md +176 -0
- package/template/.claude/skills/formily-foundation/references/examples.md +486 -0
- package/template/.claude/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.claude/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.claude/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.claude/skills/frontend-commit/SKILL.md +118 -0
- package/template/.claude/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.claude/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.claude/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.claude/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.claude/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.claude/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.claude/skills/llm-wiki/SKILL.md +1 -1
- package/template/.claude/skills/llm-wiki/references/discover.md +1 -0
- package/template/.claude/skills/page-form-module/SKILL.md +168 -0
- package/template/.claude/skills/page-list-module/SKILL.md +137 -0
- package/template/.claude/skills/page-skeleton/SKILL.md +76 -0
- package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.claude/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.claude/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.claude/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.claude/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.claude/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.claude/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.claude/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.claude/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.claude/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.claude/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.claude/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.claude/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.claude/skills/yss-components/SKILL.md +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.claude/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.claude/skills/yss-design-system/SKILL.md +1 -1
- package/template/.claude/skills/yss-formily/SKILL.md +233 -265
- package/template/.claude/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.claude/skills/yss-hook/SKILL.md +1 -1
- package/template/.claude/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.claude/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.claude/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.claude/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.claude/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.claude/skills/yss-router/SKILL.md +1 -1
- package/template/.claude/skills/yss-router/references/boundaries.md +1 -1
- package/template/.claude/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.claude/skills/yss-ui/SKILL.md +1 -1
- package/template/.claude/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.claude/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.claude/skills/ytable-usage/SKILL.md +251 -0
- package/template/.claude/skills/ytree-usage/SKILL.md +132 -0
- package/template/.codex/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.codex/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.codex/skills/file-export-download/SKILL.md +160 -0
- package/template/.codex/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.codex/skills/formily-foundation/SKILL.md +176 -0
- package/template/.codex/skills/formily-foundation/references/examples.md +486 -0
- package/template/.codex/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.codex/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.codex/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.codex/skills/frontend-commit/SKILL.md +118 -0
- package/template/.codex/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.codex/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.codex/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.codex/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.codex/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.codex/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.codex/skills/llm-wiki/SKILL.md +1 -1
- package/template/.codex/skills/llm-wiki/references/discover.md +1 -0
- package/template/.codex/skills/page-form-module/SKILL.md +168 -0
- package/template/.codex/skills/page-list-module/SKILL.md +137 -0
- package/template/.codex/skills/page-skeleton/SKILL.md +76 -0
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.codex/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.codex/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.codex/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.codex/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.codex/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.codex/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.codex/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.codex/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.codex/skills/yss-components/SKILL.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.codex/skills/yss-design-system/SKILL.md +1 -1
- package/template/.codex/skills/yss-formily/SKILL.md +233 -265
- package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.codex/skills/yss-hook/SKILL.md +1 -1
- package/template/.codex/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.codex/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.codex/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.codex/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.codex/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.codex/skills/yss-router/SKILL.md +1 -1
- package/template/.codex/skills/yss-router/references/boundaries.md +1 -1
- package/template/.codex/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.codex/skills/yss-ui/SKILL.md +1 -1
- package/template/.codex/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.codex/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.codex/skills/ytable-usage/SKILL.md +251 -0
- package/template/.codex/skills/ytree-usage/SKILL.md +132 -0
- package/template/.cursor/skills/.yss-skills-manifest.json +29 -0
- package/template/.cursor/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.cursor/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.cursor/skills/file-export-download/SKILL.md +160 -0
- package/template/.cursor/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.cursor/skills/formily-foundation/SKILL.md +176 -0
- package/template/.cursor/skills/formily-foundation/references/examples.md +486 -0
- package/template/.cursor/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.cursor/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.cursor/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.cursor/skills/frontend-commit/SKILL.md +118 -0
- package/template/.cursor/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.cursor/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.cursor/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.cursor/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.cursor/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.cursor/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.cursor/skills/llm-wiki/SKILL.md +1 -1
- package/template/.cursor/skills/llm-wiki/references/discover.md +1 -0
- package/template/.cursor/skills/page-form-module/SKILL.md +168 -0
- package/template/.cursor/skills/page-list-module/SKILL.md +137 -0
- package/template/.cursor/skills/page-skeleton/SKILL.md +76 -0
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.cursor/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.cursor/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.cursor/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.cursor/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.cursor/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.cursor/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.cursor/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.cursor/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.cursor/skills/yss-components/SKILL.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.cursor/skills/yss-design-system/SKILL.md +1 -1
- package/template/.cursor/skills/yss-formily/SKILL.md +233 -265
- package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
- package/template/.cursor/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.cursor/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.cursor/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.cursor/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.cursor/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.cursor/skills/yss-router/SKILL.md +1 -1
- package/template/.cursor/skills/yss-router/references/boundaries.md +1 -1
- package/template/.cursor/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.cursor/skills/yss-ui/SKILL.md +1 -1
- package/template/.cursor/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.cursor/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.cursor/skills/ytable-usage/SKILL.md +251 -0
- package/template/.cursor/skills/ytree-usage/SKILL.md +132 -0
- package/template/.cursorrules +32 -0
- package/template/.hermes/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.hermes/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.hermes/skills/file-export-download/SKILL.md +160 -0
- package/template/.hermes/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.hermes/skills/formily-foundation/SKILL.md +176 -0
- package/template/.hermes/skills/formily-foundation/references/examples.md +486 -0
- package/template/.hermes/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.hermes/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.hermes/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.hermes/skills/frontend-commit/SKILL.md +118 -0
- package/template/.hermes/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.hermes/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.hermes/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.hermes/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.hermes/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.hermes/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.hermes/skills/llm-wiki/SKILL.md +1 -1
- package/template/.hermes/skills/llm-wiki/references/discover.md +1 -0
- package/template/.hermes/skills/page-form-module/SKILL.md +168 -0
- package/template/.hermes/skills/page-list-module/SKILL.md +137 -0
- package/template/.hermes/skills/page-skeleton/SKILL.md +76 -0
- package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.hermes/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.hermes/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.hermes/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.hermes/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.hermes/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.hermes/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.hermes/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.hermes/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.hermes/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.hermes/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.hermes/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.hermes/skills/yss-components/SKILL.md +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.hermes/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.hermes/skills/yss-design-system/SKILL.md +1 -1
- package/template/.hermes/skills/yss-formily/SKILL.md +233 -265
- package/template/.hermes/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.hermes/skills/yss-hook/SKILL.md +1 -1
- package/template/.hermes/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.hermes/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.hermes/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.hermes/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.hermes/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.hermes/skills/yss-router/SKILL.md +1 -1
- package/template/.hermes/skills/yss-router/references/boundaries.md +1 -1
- package/template/.hermes/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.hermes/skills/yss-ui/SKILL.md +1 -1
- package/template/.hermes/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.hermes/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.hermes/skills/ytable-usage/SKILL.md +251 -0
- package/template/.hermes/skills/ytree-usage/SKILL.md +132 -0
- package/template/.pi/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.pi/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.pi/skills/file-export-download/SKILL.md +160 -0
- package/template/.pi/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.pi/skills/formily-foundation/SKILL.md +176 -0
- package/template/.pi/skills/formily-foundation/references/examples.md +486 -0
- package/template/.pi/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.pi/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.pi/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.pi/skills/frontend-commit/SKILL.md +118 -0
- package/template/.pi/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.pi/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.pi/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.pi/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.pi/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.pi/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.pi/skills/llm-wiki/SKILL.md +1 -1
- package/template/.pi/skills/llm-wiki/references/discover.md +1 -0
- package/template/.pi/skills/page-form-module/SKILL.md +168 -0
- package/template/.pi/skills/page-list-module/SKILL.md +137 -0
- package/template/.pi/skills/page-skeleton/SKILL.md +76 -0
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.pi/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.pi/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.pi/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.pi/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.pi/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.pi/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.pi/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.pi/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.pi/skills/yss-components/SKILL.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.pi/skills/yss-design-system/SKILL.md +1 -1
- package/template/.pi/skills/yss-formily/SKILL.md +233 -265
- package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.pi/skills/yss-hook/SKILL.md +1 -1
- package/template/.pi/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.pi/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.pi/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.pi/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.pi/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.pi/skills/yss-router/SKILL.md +1 -1
- package/template/.pi/skills/yss-router/references/boundaries.md +1 -1
- package/template/.pi/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.pi/skills/yss-ui/SKILL.md +1 -1
- package/template/.pi/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.pi/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.pi/skills/ytable-usage/SKILL.md +251 -0
- package/template/.pi/skills/ytree-usage/SKILL.md +132 -0
- package/template/.qoder/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.qoder/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.qoder/skills/file-export-download/SKILL.md +160 -0
- package/template/.qoder/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.qoder/skills/formily-foundation/SKILL.md +176 -0
- package/template/.qoder/skills/formily-foundation/references/examples.md +486 -0
- package/template/.qoder/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.qoder/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.qoder/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.qoder/skills/frontend-commit/SKILL.md +118 -0
- package/template/.qoder/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.qoder/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.qoder/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.qoder/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.qoder/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.qoder/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.qoder/skills/llm-wiki/SKILL.md +1 -1
- package/template/.qoder/skills/llm-wiki/references/discover.md +1 -0
- package/template/.qoder/skills/page-form-module/SKILL.md +168 -0
- package/template/.qoder/skills/page-list-module/SKILL.md +137 -0
- package/template/.qoder/skills/page-skeleton/SKILL.md +76 -0
- package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.qoder/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.qoder/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.qoder/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.qoder/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.qoder/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.qoder/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.qoder/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.qoder/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.qoder/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.qoder/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.qoder/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.qoder/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.qoder/skills/yss-components/SKILL.md +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.qoder/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.qoder/skills/yss-design-system/SKILL.md +1 -1
- package/template/.qoder/skills/yss-formily/SKILL.md +233 -265
- package/template/.qoder/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.qoder/skills/yss-hook/SKILL.md +1 -1
- package/template/.qoder/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.qoder/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.qoder/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.qoder/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.qoder/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.qoder/skills/yss-router/SKILL.md +1 -1
- package/template/.qoder/skills/yss-router/references/boundaries.md +1 -1
- package/template/.qoder/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.qoder/skills/yss-ui/SKILL.md +1 -1
- package/template/.qoder/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.qoder/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.qoder/skills/ytable-usage/SKILL.md +251 -0
- package/template/.qoder/skills/ytree-usage/SKILL.md +132 -0
- package/template/.trae/skills/.yss-skills-manifest.json +29 -0
- package/template/.trae/skills/component-selection-imports/SKILL.md +64 -0
- package/template/.trae/skills/cross-repo-implementation-routing/SKILL.md +2 -2
- package/template/.trae/skills/file-export-download/SKILL.md +160 -0
- package/template/.trae/skills/file-export-download/agents/openai.yaml +4 -0
- package/template/.trae/skills/formily-foundation/SKILL.md +176 -0
- package/template/.trae/skills/formily-foundation/references/examples.md +486 -0
- package/template/.trae/skills/formily-linkage-effects/SKILL.md +167 -0
- package/template/.trae/skills/formily-mode-slot-detail/SKILL.md +137 -0
- package/template/.trae/skills/formily-step-flow/SKILL.md +194 -0
- package/template/.trae/skills/frontend-commit/SKILL.md +118 -0
- package/template/.trae/skills/frontend-commit/agents/openai.yaml +7 -0
- package/template/.trae/skills/frontend-commit/references/scope-and-examples.md +111 -0
- package/template/.trae/skills/implementation-repo-onboarding/SKILL.md +5 -5
- package/template/.trae/skills/java-backend-commit/SKILL.md +121 -0
- package/template/.trae/skills/java-backend-commit/agents/openai.yaml +7 -0
- package/template/.trae/skills/java-backend-commit/references/scope-and-examples.md +118 -0
- package/template/.trae/skills/llm-wiki/SKILL.md +1 -1
- package/template/.trae/skills/llm-wiki/references/discover.md +1 -0
- package/template/.trae/skills/page-form-module/SKILL.md +168 -0
- package/template/.trae/skills/page-list-module/SKILL.md +137 -0
- package/template/.trae/skills/page-skeleton/SKILL.md +76 -0
- package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/constant.ts +34 -0
- package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/hooks/useRuleConfig.ts +75 -0
- package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/index.vue +107 -0
- package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/schemas/ruleConfigSchema.ts +256 -0
- package/template/.trae/skills/page-skeleton/examples/AdvancedFormPage/style.less +30 -0
- package/template/.trae/skills/page-skeleton/examples/StandardListPage/constant.ts +28 -0
- package/template/.trae/skills/page-skeleton/examples/StandardListPage/hooks/useQualityRuleList.ts +58 -0
- package/template/.trae/skills/page-skeleton/examples/StandardListPage/hooks/useRuleActions.ts +65 -0
- package/template/.trae/skills/page-skeleton/examples/StandardListPage/index.vue +91 -0
- package/template/.trae/skills/page-skeleton/examples/StandardListPage/style.less +49 -0
- package/template/.trae/skills/prototype-page-acceptance/SKILL.md +62 -0
- package/template/.trae/skills/theme-token-usage/SKILL.md +123 -0
- package/template/.trae/skills/theme-token-usage/agents/openai.yaml +4 -0
- package/template/.trae/skills/vue3-best-practices/SKILL.md +68 -0
- package/template/.trae/skills/yedit-table-usage/SKILL.md +227 -0
- package/template/.trae/skills/yss-api-integration/SKILL.md +12 -2
- package/template/.trae/skills/yss-components/SKILL.md +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/SKILL.md +1 -1
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +30 -3
- package/template/.trae/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +52 -0
- package/template/.trae/skills/yss-design-system/SKILL.md +1 -1
- package/template/.trae/skills/yss-formily/SKILL.md +233 -265
- package/template/.trae/skills/yss-frontend-scaffold-generator/SKILL.md +2 -2
- package/template/.trae/skills/yss-hook/SKILL.md +1 -1
- package/template/.trae/skills/yss-openapi-governance/SKILL.md +2 -2
- package/template/.trae/skills/yss-page-module-development/SKILL.md +12 -2
- package/template/.trae/skills/yss-page-module-development/references/component-map.md +34 -0
- package/template/.trae/skills/yss-page-module-development/references/hooks-map.md +11 -0
- package/template/.trae/skills/yss-page-module-development/references/utils-map.md +14 -0
- package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +1 -1
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +86 -1
- package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +2 -0
- package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +1 -1
- package/template/.trae/skills/yss-router/SKILL.md +1 -1
- package/template/.trae/skills/yss-router/references/boundaries.md +1 -1
- package/template/.trae/skills/yss-router/references/router-contract.yaml +26 -2
- package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +1 -1
- package/template/.trae/skills/yss-ui/SKILL.md +1 -1
- package/template/.trae/skills/yss-use-table-height/SKILL.md +9 -0
- package/template/.trae/skills/yss-use-tree-height/SKILL.md +9 -0
- package/template/.trae/skills/ytable-usage/SKILL.md +251 -0
- package/template/.trae/skills/ytree-usage/SKILL.md +132 -0
- package/template/AGENTS.md +5 -5
- package/template/CONTEXT.md +3 -2
- package/template/docs/agents/skill-migrations.md +16 -0
- package/template/docs/agents/skills-maintenance.md +1 -1
- package/template/docs/agents/yss-skill-registry.yaml +125 -25
- package/template/docs/process/implementation-repo-integration.md +24 -2
- package/template/docs/templates/cross-repo-slice-template.md +15 -0
- package/template/docs/templates/implementation-repo-registry-template.md +8 -3
- package/template/docs/templates/implementation-routing-template.md +3 -3
- package/template/docs/user-guide//344/272/247/345/223/201/347/224/237/345/221/275/345/221/250/346/234/237/345/267/245/344/275/234/346/265/201.md +2 -2
- package/template/docs/user-guide//344/272/247/345/223/201/347/240/224/345/217/221/345/205/250/347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +4 -4
- package/template/docs/user-guide//347/224/237/345/221/275/345/221/250/346/234/237/346/234/200/344/275/263/345/256/236/350/267/265.md +1 -1
- package/template/scripts/lib/git-submodule-fixtures.mjs +58 -0
- package/template/scripts/lib/repository-scope-policy.mjs +456 -0
- package/template/scripts/lib/scenario-checks.mjs +32 -1
- package/template/scripts/lib/skill-governance.mjs +50 -0
- package/template/scripts/lib/skill-registry.mjs +82 -5
- package/template/scripts/lib/skill-supply-chain.mjs +5 -1
- package/template/scripts/repository-scope-policy +16 -0
- package/template/scripts/verify-repository-scope-scenarios +239 -0
- package/template/scripts/verify-scaffold-generator-scenarios +54 -0
- package/template/scripts/verify-skill-governance +10 -0
- package/template/scripts/verify-template +4 -2
- package/template/skills-lock.json +289 -33
- package/template.manifest.json +6 -5
- package/template.snapshot.json +4 -4
- package/template/.agents/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.agents/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.agents/skills/yss-formily/references/examples.md +0 -65
- package/template/.claude/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.claude/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.claude/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.claude/skills/yss-formily/references/examples.md +0 -65
- package/template/.codex/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.codex/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.codex/skills/yss-formily/references/examples.md +0 -65
- package/template/.cursor/environment.json +0 -5
- package/template/.cursor/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.cursor/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.cursor/skills/yss-formily/references/examples.md +0 -65
- package/template/.github/workflows/template-node-tooling.yml +0 -61
- package/template/.hermes/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.hermes/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.hermes/skills/yss-formily/references/examples.md +0 -65
- package/template/.pi/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.pi/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.pi/skills/yss-formily/references/examples.md +0 -65
- package/template/.qoder/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.qoder/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.qoder/skills/yss-formily/references/examples.md +0 -65
- package/template/.trae/skills/high-fidelity-html-prototype/SKILL.md +0 -89
- package/template/.trae/skills/high-fidelity-html-prototype/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-formily/agents/openai.yaml +0 -5
- package/template/.trae/skills/yss-formily/references/examples.md +0 -65
- package/template/wiki/.wiki-manifest.json +0 -390
- package/template/wiki/raw/AGENTS.md +0 -122
- package/template/wiki/raw/CONTEXT.md +0 -80
- package/template/wiki/raw/README.md +0 -130
- package/template/wiki/raw/adr-0002-repository-mode.md +0 -3
- package/template/wiki/raw/create-yss-spec-repository-mode-contract.md +0 -95
- package/template/wiki/raw/harness-process-tailoring.md +0 -64
- package/template/wiki/raw/implementation-repo-integration.md +0 -62
- package/template/wiki/raw/issue-tracker.md +0 -135
- package/template/wiki/raw/lifecycle-registry.yaml +0 -369
- package/template/wiki/raw/maintenance-intensity.yaml +0 -25
- package/template/wiki/raw/skills-lock-names.md +0 -93
- package/template/wiki/raw/skills-maintenance.md +0 -90
- package/template/wiki/raw/spec-template.md +0 -102
- package/template/wiki/raw/triage-labels.md +0 -15
- package/template/wiki/raw/vertical-slice-ticket-template.md +0 -132
- package/template/wiki/raw/yss-project.yaml +0 -2
- package/template/wiki/raw/yss-skill-registry.yaml +0 -510
- package/template/wiki/wiki/Agent/345/205/245/345/217/243/350/247/204/345/210/231.md +0 -21
- package/template/wiki/wiki/CLAUDE.md +0 -28
- package/template/wiki/wiki/Fresh/351/252/214/350/257/201/344/270/216/347/213/254/347/253/213/345/256/241/346/237/245.md +0 -19
- package/template/wiki/wiki/LLM Wiki.md +0 -30
- package/template/wiki/wiki/Matt/346/212/200/350/203/275/344/275/223/347/263/273.md +0 -21
- package/template/wiki/wiki/OpenAPI/345/245/221/347/272/246.md +0 -20
- package/template/wiki/wiki/SpecDelta.md +0 -19
- package/template/wiki/wiki/Spec/345/237/272/347/272/277.md +0 -22
- package/template/wiki/wiki/Ticket/344/270/216/346/265/201/347/250/213/347/212/266/346/200/201.md +0 -21
- package/template/wiki/wiki/YSS/345/267/245/347/250/213/346/212/200/350/203/275/344/275/223/347/263/273.md +0 -23
- package/template/wiki/wiki/YSS/350/267/257/347/224/261/344/270/216/345/220/210/345/220/214/347/274/226/350/257/221.md +0 -20
- package/template/wiki/wiki/concept-table.md +0 -9
- package/template/wiki/wiki/index.md +0 -41
- package/template/wiki/wiki/log.md +0 -51
- package/template/wiki/wiki//344/272/247/345/223/201/347/240/224/345/217/221/347/224/237/345/221/275/345/221/250/346/234/237.md +0 -20
- package/template/wiki/wiki//344/272/247/345/223/201/350/256/276/350/256/241/345/275/261/345/223/215/344/270/216/345/216/237/345/236/213.md +0 -19
- package/template/wiki/wiki//344/273/223/345/272/223/350/272/253/344/273/275/344/270/216/350/267/257/347/224/261.md +0 -20
- package/template/wiki/wiki//345/210/207/347/211/207/345/256/236/347/216/260/345/220/210/345/220/214.md +0 -21
- package/template/wiki/wiki//345/236/202/347/233/264/345/210/207/347/211/207Ticket.md +0 -23
- package/template/wiki/wiki//345/244/215/347/233/230/344/270/216/346/235/203/345/250/201/350/265/204/344/272/247/344/277/256/350/256/242.md +0 -20
- package/template/wiki/wiki//345/256/236/347/216/260/344/273/223/345/272/223/344/270/216/350/267/250/344/273/223/345/272/223/345/245/221/347/272/246.md +0 -22
- package/template/wiki/wiki//345/275/261/345/223/215/351/235/242/345/210/206/350/257/212/344/270/216/346/265/201/347/250/213/350/243/201/345/211/252.md +0 -20
- package/template/wiki/wiki//346/212/200/350/203/275/346/212/225/345/275/261/344/270/216/351/224/201/345/256/232.md +0 -23
- package/template/wiki/wiki//346/235/241/344/273/266/345/274/272/345/210/266/351/227/250/347/246/201.md +0 -18
- package/template/wiki/wiki//346/250/241/346/235/277/345/217/221/345/270/203/351/227/250/347/246/201/344/270/216/351/252/214/350/257/201.md +0 -22
- package/template/wiki/wiki//346/250/241/346/235/277/346/200/273/350/247/210.md +0 -20
- package/template/wiki/wiki//346/250/241/346/235/277/347/273/264/346/212/244/346/265/201/347/250/213.md +0 -19
package/README.md
CHANGED
|
@@ -44,8 +44,10 @@ npx create-yss-spec@latest --version
|
|
|
44
44
|
- 接管 / 升级时迁移 Spec / Ticket 路径并删除 `to-prd`、`to-issues` 旧 skill
|
|
45
45
|
- 旧、新资产内容冲突或清单 schema / mode 非法时 fail closed
|
|
46
46
|
- 保留模板的共享 skill 投影;生成实例可在尚未 `git init` 时运行模板校验
|
|
47
|
+
- init / sync 不把模板源治理笔记、wiki、审查证据、源仓 CI / Cloud 环境和公开发布清单写入项目实例;attach 会带上 `yss-public-skills.json` 供 `verify-template` 使用
|
|
48
|
+
- 空 gitlink / detached HEAD / git-submodule 挂载点 fail closed,`--force` 也不能覆盖
|
|
47
49
|
|
|
48
|
-
本次模板适配按 `2.1
|
|
50
|
+
本次模板适配按 `2.2.1` 发布,绑定 `yss-spec-project-template@2375746`。`templateCommit` 会写入实例 metadata;“最新模板”指用户执行的 `npx create-yss-spec@latest` 所携带的最新已发布快照,CLI 运行时不会拉取模板仓库。实例会带上 YSS 前端技能叠加层(如 `ytable-usage`、`formily-foundation`、`yss-page-module-development`)、`.cursorrules` 与 `.agents/rules/yss-ai-skills.md`;审查临时目录 `docs/.scratch/` 与已退役的 `high-fidelity-html-prototype` 等独立入口不进入快照。
|
|
49
51
|
|
|
50
52
|
## 接管已有项目
|
|
51
53
|
|
|
@@ -72,6 +74,7 @@ npx create-yss-spec@latest attach \
|
|
|
72
74
|
- 根规则文件等受管冲突默认阻断;`--force` 才覆盖,并把被覆盖文件备份到目标目录外的临时目录。
|
|
73
75
|
- 合法 `template-source` 身份会转换为 `project-instance`;非法身份、迁移冲突和无法判断归属的扁平 Ticket 始终阻断。
|
|
74
76
|
- Git worktree 有脏改动时只提醒,不自动 stash 或提交。
|
|
77
|
+
- `.gitmodules`、gitlink 和 `apps/` 挂载工作树是用户资产;空 gitlink / detached HEAD 即使 `--force` 也阻断。
|
|
75
78
|
|
|
76
79
|
## 同步已有模板实例仓库
|
|
77
80
|
|
|
@@ -96,7 +99,8 @@ npx create-yss-spec@latest sync --dry-run
|
|
|
96
99
|
- 对模板已删除文件只报告,不自动删除
|
|
97
100
|
- 对已知的 Spec / Ticket 旧路径执行一次性迁移
|
|
98
101
|
- 迁移目标已存在且内容不一致时停止,不静默覆盖
|
|
99
|
-
-
|
|
102
|
+
- `.gitmodules`、gitlink(mode `160000`)和 `apps/` 下已挂载实现仓是用户资产,不创建、不覆盖、不删除
|
|
103
|
+
- init / sync 保持瘦实例:不复制 `scripts/`、`wiki/`、`.github/`、`.nvmrc`、`.gitignore`、`.template-source/`;attach 结束后会执行 `scripts/sync-skills --check`、`scripts/update-skill-lock --check` 和 `scripts/verify-template`,门禁失败会回滚文件和 metadata
|
|
100
104
|
|
|
101
105
|
```bash
|
|
102
106
|
npx create-yss-spec@latest sync --target-dir . --dry-run
|
package/package.json
CHANGED
package/src/cli.js
CHANGED
|
@@ -39,11 +39,21 @@ const AGENT_SKILL_ROOTS = [
|
|
|
39
39
|
".agents/skills",
|
|
40
40
|
".claude/skills",
|
|
41
41
|
".codex/skills",
|
|
42
|
+
".cursor/skills",
|
|
42
43
|
".hermes/skills",
|
|
43
44
|
".pi/skills",
|
|
44
45
|
".qoder/skills",
|
|
45
46
|
".trae/skills",
|
|
46
47
|
];
|
|
48
|
+
const GITLINK_MODE = "160000";
|
|
49
|
+
const UNMANAGED_USER_PATHS = new Set([".gitmodules"]);
|
|
50
|
+
const INSTANCE_FORBIDDEN_PATHS = [
|
|
51
|
+
".template-source",
|
|
52
|
+
".github",
|
|
53
|
+
".cursor/environment.json",
|
|
54
|
+
"wiki",
|
|
55
|
+
"docs/reviews",
|
|
56
|
+
];
|
|
47
57
|
const LEGACY_SKILL_MAPPINGS = [
|
|
48
58
|
["to-prd", "to-spec"],
|
|
49
59
|
["to-issues", "to-tickets"],
|
|
@@ -301,6 +311,235 @@ function isInsideTemplateRoot(targetDir) {
|
|
|
301
311
|
);
|
|
302
312
|
}
|
|
303
313
|
|
|
314
|
+
function posixRelative(from, to) {
|
|
315
|
+
return path.relative(from, to).split(path.sep).join("/");
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
function collectGitRoots(start) {
|
|
319
|
+
const roots = [];
|
|
320
|
+
if (!start) {
|
|
321
|
+
return roots;
|
|
322
|
+
}
|
|
323
|
+
let current = path.resolve(start);
|
|
324
|
+
while (true) {
|
|
325
|
+
if (
|
|
326
|
+
fs.existsSync(path.join(current, ".git")) ||
|
|
327
|
+
fs.existsSync(path.join(current, ".gitmodules"))
|
|
328
|
+
) {
|
|
329
|
+
roots.push(current);
|
|
330
|
+
}
|
|
331
|
+
const parent = path.dirname(current);
|
|
332
|
+
if (parent === current) {
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
current = parent;
|
|
336
|
+
}
|
|
337
|
+
return roots;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
function parseGitmodules(content) {
|
|
341
|
+
const modules = [];
|
|
342
|
+
if (typeof content !== "string" || content.length === 0) {
|
|
343
|
+
return modules;
|
|
344
|
+
}
|
|
345
|
+
let current = null;
|
|
346
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
347
|
+
const line = rawLine.trim();
|
|
348
|
+
const name = line.match(/^\[submodule "(.+)"\]$/);
|
|
349
|
+
if (name) {
|
|
350
|
+
current = { name: name[1], path: "", url: "" };
|
|
351
|
+
modules.push(current);
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
if (!current) {
|
|
355
|
+
continue;
|
|
356
|
+
}
|
|
357
|
+
const pathMatch = line.match(/^path\s*=\s*(.+)$/);
|
|
358
|
+
if (pathMatch) {
|
|
359
|
+
current.path = pathMatch[1].trim().replace(/\\/g, "/").replace(/\/+$/, "");
|
|
360
|
+
}
|
|
361
|
+
const urlMatch = line.match(/^url\s*=\s*(.+)$/);
|
|
362
|
+
if (urlMatch) {
|
|
363
|
+
current.url = urlMatch[1].trim();
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
return modules;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
function readGitmodules(repoRoot) {
|
|
370
|
+
const file = path.join(repoRoot, ".gitmodules");
|
|
371
|
+
if (!fs.existsSync(file) || pathKind(file) !== "file") {
|
|
372
|
+
return [];
|
|
373
|
+
}
|
|
374
|
+
return parseGitmodules(fs.readFileSync(file, "utf8"));
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
function gitLsFilesStage(repoRoot, relativePath) {
|
|
378
|
+
const result = spawnSync(
|
|
379
|
+
"git",
|
|
380
|
+
["-C", repoRoot, "ls-files", "--stage", "--", relativePath],
|
|
381
|
+
{ encoding: "utf8" },
|
|
382
|
+
);
|
|
383
|
+
if (result.status !== 0) {
|
|
384
|
+
return null;
|
|
385
|
+
}
|
|
386
|
+
const line = (result.stdout || "").trim().split(/\r?\n/).filter(Boolean)[0];
|
|
387
|
+
if (!line) {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
const match = line.match(/^(\d+)\s+([0-9a-f]+)\s+(\d+)\s+(.+)$/i);
|
|
391
|
+
if (!match) {
|
|
392
|
+
return null;
|
|
393
|
+
}
|
|
394
|
+
return { mode: match[1], sha: match[2], stage: match[3], path: match[4] };
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
function gitShowSuperproject(cwd) {
|
|
398
|
+
const result = spawnSync(
|
|
399
|
+
"git",
|
|
400
|
+
["-C", cwd, "rev-parse", "--show-superproject-working-tree"],
|
|
401
|
+
{ encoding: "utf8" },
|
|
402
|
+
);
|
|
403
|
+
if (result.status !== 0) {
|
|
404
|
+
return "";
|
|
405
|
+
}
|
|
406
|
+
return (result.stdout || "").trim();
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
function gitAbbrevRef(cwd) {
|
|
410
|
+
const result = spawnSync(
|
|
411
|
+
"git",
|
|
412
|
+
["-C", cwd, "rev-parse", "--abbrev-ref", "HEAD"],
|
|
413
|
+
{ encoding: "utf8" },
|
|
414
|
+
);
|
|
415
|
+
if (result.status !== 0) {
|
|
416
|
+
return null;
|
|
417
|
+
}
|
|
418
|
+
return (result.stdout || "").trim();
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
function isEmptyDir(dir) {
|
|
422
|
+
if (!fs.existsSync(dir)) {
|
|
423
|
+
return true;
|
|
424
|
+
}
|
|
425
|
+
try {
|
|
426
|
+
return fs.readdirSync(dir).filter((name) => name !== "." && name !== "..")
|
|
427
|
+
.length === 0;
|
|
428
|
+
} catch {
|
|
429
|
+
return false;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
function isGitSubmoduleMount(repoRoot, targetPathValue) {
|
|
434
|
+
const relative = posixRelative(repoRoot, path.resolve(targetPathValue));
|
|
435
|
+
if (!relative || relative.startsWith("..") || path.isAbsolute(relative)) {
|
|
436
|
+
return false;
|
|
437
|
+
}
|
|
438
|
+
if (readGitmodules(repoRoot).some((item) => item.path === relative)) {
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
const staged = gitLsFilesStage(repoRoot, relative);
|
|
442
|
+
return staged?.mode === GITLINK_MODE;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
function inspectCheckoutState(repoRoot, targetPathValue) {
|
|
446
|
+
const resolved = path.resolve(targetPathValue);
|
|
447
|
+
const relative = posixRelative(path.resolve(repoRoot), resolved);
|
|
448
|
+
const inRepo = Boolean(relative) && !relative.startsWith("..");
|
|
449
|
+
const staged = inRepo ? gitLsFilesStage(repoRoot, relative) : null;
|
|
450
|
+
const listed = inRepo
|
|
451
|
+
? readGitmodules(repoRoot).some((item) => item.path === relative)
|
|
452
|
+
: false;
|
|
453
|
+
const superproject = fs.existsSync(path.join(resolved, ".git"))
|
|
454
|
+
? gitShowSuperproject(resolved)
|
|
455
|
+
: "";
|
|
456
|
+
const isMount = staged?.mode === GITLINK_MODE || listed || Boolean(superproject);
|
|
457
|
+
const hasGit = fs.existsSync(path.join(resolved, ".git"));
|
|
458
|
+
if (isMount && !hasGit) {
|
|
459
|
+
return isEmptyDir(resolved) ? "empty-gitlink" : "uninitialized";
|
|
460
|
+
}
|
|
461
|
+
if (isMount && hasGit) {
|
|
462
|
+
const ref = gitAbbrevRef(resolved);
|
|
463
|
+
if (ref === "HEAD") {
|
|
464
|
+
return "detached-head";
|
|
465
|
+
}
|
|
466
|
+
return "attached-branch";
|
|
467
|
+
}
|
|
468
|
+
return null;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
function gitlinkWriteViolation(targetDir, { force = false } = {}) {
|
|
472
|
+
const resolved = path.resolve(targetDir);
|
|
473
|
+
const roots = collectGitRoots(resolved);
|
|
474
|
+
for (const root of roots) {
|
|
475
|
+
if (path.resolve(root) === PACKAGE_ROOT) {
|
|
476
|
+
continue;
|
|
477
|
+
}
|
|
478
|
+
let current = resolved;
|
|
479
|
+
while (true) {
|
|
480
|
+
if (isGitSubmoduleMount(root, current)) {
|
|
481
|
+
const checkout = inspectCheckoutState(root, current);
|
|
482
|
+
if (checkout === "empty-gitlink" || checkout === "uninitialized") {
|
|
483
|
+
return "空 gitlink 不得当成普通目录写入;gitlink 不得由 CLI 覆盖";
|
|
484
|
+
}
|
|
485
|
+
if (checkout === "detached-head") {
|
|
486
|
+
return "detached HEAD 不得当成普通目录写入;gitlink 不得由 CLI 覆盖";
|
|
487
|
+
}
|
|
488
|
+
if (path.resolve(current) === resolved) {
|
|
489
|
+
return force
|
|
490
|
+
? "--force 不得把 git-submodule 挂载点当成普通目录覆盖"
|
|
491
|
+
: "git-submodule gitlink 不得由 CLI 覆盖;先 git submodule update --init,在子仓附加分支的工作树内操作,或改用独立目录";
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
if (path.resolve(current) === path.resolve(root)) {
|
|
495
|
+
break;
|
|
496
|
+
}
|
|
497
|
+
const parent = path.dirname(current);
|
|
498
|
+
if (parent === current) {
|
|
499
|
+
break;
|
|
500
|
+
}
|
|
501
|
+
current = parent;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
return null;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
function assertTargetWorkingTreeWritable(targetDir, { force = false } = {}) {
|
|
508
|
+
const violation = gitlinkWriteViolation(targetDir, { force });
|
|
509
|
+
if (violation) {
|
|
510
|
+
throw new Error(violation);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
function unmanagedPathReason(targetDir, relativePath) {
|
|
515
|
+
const normalized = normalizeRelativePath(relativePath);
|
|
516
|
+
if (UNMANAGED_USER_PATHS.has(normalized) || normalized.split("/")[0] === ".gitmodules") {
|
|
517
|
+
return ".gitmodules 是用户资产,不属于受管模板文件";
|
|
518
|
+
}
|
|
519
|
+
const absolutePath = path.resolve(targetDir, normalized);
|
|
520
|
+
const roots = collectGitRoots(targetDir);
|
|
521
|
+
for (const root of roots) {
|
|
522
|
+
if (path.resolve(root) === PACKAGE_ROOT) {
|
|
523
|
+
continue;
|
|
524
|
+
}
|
|
525
|
+
let current = absolutePath;
|
|
526
|
+
while (true) {
|
|
527
|
+
if (isGitSubmoduleMount(root, current)) {
|
|
528
|
+
return "gitlink / apps 挂载工作树是用户资产,不属于受管模板文件";
|
|
529
|
+
}
|
|
530
|
+
if (path.resolve(current) === path.resolve(root)) {
|
|
531
|
+
break;
|
|
532
|
+
}
|
|
533
|
+
const parent = path.dirname(current);
|
|
534
|
+
if (parent === current) {
|
|
535
|
+
break;
|
|
536
|
+
}
|
|
537
|
+
current = parent;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
return null;
|
|
541
|
+
}
|
|
542
|
+
|
|
304
543
|
function normalizeRelativePath(relativePath) {
|
|
305
544
|
return relativePath.split(path.sep).join("/");
|
|
306
545
|
}
|
|
@@ -861,6 +1100,14 @@ function classifyAttachPlan(targetDir, variables) {
|
|
|
861
1100
|
};
|
|
862
1101
|
|
|
863
1102
|
for (const operation of desiredOperations) {
|
|
1103
|
+
const unmanagedReason = unmanagedPathReason(targetDir, operation.relativePath);
|
|
1104
|
+
if (unmanagedReason) {
|
|
1105
|
+
plan.unsafe.push({
|
|
1106
|
+
...operation,
|
|
1107
|
+
reason: unmanagedReason,
|
|
1108
|
+
});
|
|
1109
|
+
continue;
|
|
1110
|
+
}
|
|
864
1111
|
const kind = pathKind(operation.targetPath);
|
|
865
1112
|
if (kind === "missing") {
|
|
866
1113
|
plan.missing.push(operation);
|
|
@@ -904,6 +1151,14 @@ function classifySyncPlan(targetDir, metadata, identity = readTargetIdentity(tar
|
|
|
904
1151
|
const unsafe = [];
|
|
905
1152
|
|
|
906
1153
|
for (const operation of desiredOperations) {
|
|
1154
|
+
const unmanagedReason = unmanagedPathReason(targetDir, operation.relativePath);
|
|
1155
|
+
if (unmanagedReason) {
|
|
1156
|
+
unsafe.push({
|
|
1157
|
+
...operation,
|
|
1158
|
+
reason: unmanagedReason,
|
|
1159
|
+
});
|
|
1160
|
+
continue;
|
|
1161
|
+
}
|
|
907
1162
|
const existingRecord = managedFiles[operation.relativePath];
|
|
908
1163
|
const existingKind = pathKind(operation.targetPath);
|
|
909
1164
|
|
|
@@ -1028,6 +1283,8 @@ function inspectTargetDir(targetDir, force) {
|
|
|
1028
1283
|
throw new Error("目标目录不能位于模板源仓库内部");
|
|
1029
1284
|
}
|
|
1030
1285
|
|
|
1286
|
+
assertTargetWorkingTreeWritable(targetDir, { force });
|
|
1287
|
+
|
|
1031
1288
|
if (!fs.existsSync(targetDir)) {
|
|
1032
1289
|
return { exists: false, clearEntries: false };
|
|
1033
1290
|
}
|
|
@@ -1044,13 +1301,14 @@ function inspectTargetDir(targetDir, force) {
|
|
|
1044
1301
|
return { exists: true, clearEntries: entries.length > 0 && force };
|
|
1045
1302
|
}
|
|
1046
1303
|
|
|
1047
|
-
function inspectExistingTargetDir(targetDir) {
|
|
1304
|
+
function inspectExistingTargetDir(targetDir, { force = false } = {}) {
|
|
1048
1305
|
if (isInsideTemplateRoot(targetDir)) {
|
|
1049
1306
|
throw new Error("目标目录不能位于模板源仓库内部");
|
|
1050
1307
|
}
|
|
1051
1308
|
if (!fs.existsSync(targetDir) || pathKind(targetDir) !== "directory") {
|
|
1052
1309
|
throw new Error("attach 目标目录必须是已经存在的项目目录");
|
|
1053
1310
|
}
|
|
1311
|
+
assertTargetWorkingTreeWritable(targetDir, { force });
|
|
1054
1312
|
}
|
|
1055
1313
|
|
|
1056
1314
|
function prepareTargetDir(targetDir, targetState) {
|
|
@@ -1130,8 +1388,8 @@ function runTemplateVerification(targetDir, scriptPath) {
|
|
|
1130
1388
|
}
|
|
1131
1389
|
|
|
1132
1390
|
function verifyGeneratedTemplate(targetDir, mode = "managed") {
|
|
1133
|
-
if (mode === "init") {
|
|
1134
|
-
verifyGeneratedInstance(targetDir);
|
|
1391
|
+
if (mode === "init" || mode === "sync") {
|
|
1392
|
+
verifyGeneratedInstance(targetDir, { checkForbiddenPaths: mode === "init" });
|
|
1135
1393
|
return;
|
|
1136
1394
|
}
|
|
1137
1395
|
|
|
@@ -1144,15 +1402,18 @@ function verifyGeneratedTemplate(targetDir, mode = "managed") {
|
|
|
1144
1402
|
}
|
|
1145
1403
|
}
|
|
1146
1404
|
|
|
1147
|
-
function verifyGeneratedInstance(targetDir) {
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1405
|
+
function verifyGeneratedInstance(targetDir, { checkForbiddenPaths = true } = {}) {
|
|
1406
|
+
if (checkForbiddenPaths) {
|
|
1407
|
+
const forbiddenPaths = [
|
|
1408
|
+
...INSTANCE_FORBIDDEN_PATHS,
|
|
1409
|
+
...[...INIT_EXCLUDED_ROOT_ENTRIES],
|
|
1410
|
+
...[...INIT_EXCLUDED_ROOT_FILES],
|
|
1411
|
+
...[...INIT_EXCLUDED_RELATIVE_PATHS],
|
|
1412
|
+
];
|
|
1413
|
+
for (const relativePath of [...new Set(forbiddenPaths)]) {
|
|
1414
|
+
if (pathKind(targetPath(targetDir, relativePath)) !== "missing") {
|
|
1415
|
+
throw new Error(`初始化结果包含禁止分发的模板源资产:${relativePath}`);
|
|
1416
|
+
}
|
|
1156
1417
|
}
|
|
1157
1418
|
}
|
|
1158
1419
|
|
|
@@ -1614,7 +1875,7 @@ function runAttach(argv = []) {
|
|
|
1614
1875
|
|
|
1615
1876
|
readTemplateSnapshot();
|
|
1616
1877
|
const targetDir = normalizeTargetDir(options.targetDir);
|
|
1617
|
-
inspectExistingTargetDir(targetDir);
|
|
1878
|
+
inspectExistingTargetDir(targetDir, { force: Boolean(options.force) });
|
|
1618
1879
|
if (pathKind(targetPath(targetDir, TEMPLATE_METADATA_FILENAME)) !== "missing") {
|
|
1619
1880
|
throw new Error("当前项目已有模板元数据,请使用 sync,不要重复 attach");
|
|
1620
1881
|
}
|
|
@@ -1710,7 +1971,7 @@ function runSync(argv = []) {
|
|
|
1710
1971
|
}
|
|
1711
1972
|
readTemplateSnapshot();
|
|
1712
1973
|
const targetDir = normalizeTargetDir(options.targetDir || ".");
|
|
1713
|
-
inspectExistingTargetDir(targetDir);
|
|
1974
|
+
inspectExistingTargetDir(targetDir, { force: Boolean(options.force) });
|
|
1714
1975
|
const { metadata } = loadTemplateMetadata(targetDir);
|
|
1715
1976
|
const identity = readTargetIdentity(targetDir);
|
|
1716
1977
|
const syncPlan = classifySyncPlan(targetDir, metadata, identity);
|
|
@@ -1754,7 +2015,7 @@ function runSync(argv = []) {
|
|
|
1754
2015
|
applyManagedOperation(operation, transaction);
|
|
1755
2016
|
}
|
|
1756
2017
|
applyMigrationPlan(migrationPlan, transaction);
|
|
1757
|
-
verifyGeneratedTemplate(targetDir, "
|
|
2018
|
+
verifyGeneratedTemplate(targetDir, "sync");
|
|
1758
2019
|
writeTemplateMetadata(
|
|
1759
2020
|
targetDir,
|
|
1760
2021
|
buildNextSyncMetadata(metadata, syncPlan, targetDir),
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
trigger: always_on
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# YSS AI Skills Entry
|
|
6
|
+
|
|
7
|
+
本项目使用 YSS UI 业务页面开发规范。处理 Vue3 业务页面、CRUD、列表、表单、抽屉、YTable、YEditTable、YFormily、YTree、API 对接任务时,必须先读取匹配的 SKILL.md,再写计划或代码。
|
|
8
|
+
|
|
9
|
+
## Available Skills
|
|
10
|
+
|
|
11
|
+
- yss-page-module-development: .agents/skills/yss-page-module-development/SKILL.md
|
|
12
|
+
- theme-token-usage: .agents/skills/theme-token-usage/SKILL.md
|
|
13
|
+
- component-selection-imports: .agents/skills/component-selection-imports/SKILL.md
|
|
14
|
+
- page-skeleton: .agents/skills/page-skeleton/SKILL.md
|
|
15
|
+
- page-list-module: .agents/skills/page-list-module/SKILL.md
|
|
16
|
+
- page-form-module: .agents/skills/page-form-module/SKILL.md
|
|
17
|
+
- ytable-usage: .agents/skills/ytable-usage/SKILL.md
|
|
18
|
+
- yedit-table-usage: .agents/skills/yedit-table-usage/SKILL.md
|
|
19
|
+
- ytree-usage: .agents/skills/ytree-usage/SKILL.md
|
|
20
|
+
- prototype-page-acceptance: .agents/skills/prototype-page-acceptance/SKILL.md
|
|
21
|
+
- yss-api-integration: .agents/skills/yss-api-integration/SKILL.md
|
|
22
|
+
- file-export-download: .agents/skills/file-export-download/SKILL.md
|
|
23
|
+
- vue3-best-practices: .agents/skills/vue3-best-practices/SKILL.md
|
|
24
|
+
- frontend-commit: .agents/skills/frontend-commit/SKILL.md
|
|
25
|
+
- java-backend-commit: .agents/skills/java-backend-commit/SKILL.md
|
|
26
|
+
- yss-use-table-height: .agents/skills/yss-use-table-height/SKILL.md
|
|
27
|
+
- yss-use-tree-height: .agents/skills/yss-use-tree-height/SKILL.md
|
|
28
|
+
- yss-formily: .agents/skills/yss-formily/SKILL.md
|
|
29
|
+
- formily-foundation: .agents/skills/formily-foundation/SKILL.md
|
|
30
|
+
- formily-linkage-effects: .agents/skills/formily-linkage-effects/SKILL.md
|
|
31
|
+
- formily-mode-slot-detail: .agents/skills/formily-mode-slot-detail/SKILL.md
|
|
32
|
+
- formily-step-flow: .agents/skills/formily-step-flow/SKILL.md
|
|
33
|
+
|
|
34
|
+
## Mandatory Workflow
|
|
35
|
+
|
|
36
|
+
1. 页面/CRUD/列表/表单任务:先读 `.agents/skills/yss-page-module-development/SKILL.md`。
|
|
37
|
+
2. 新增或修改页面、组件、Less、内联样式、TS 渲染配置、SVG 色值:必须读 `.agents/skills/theme-token-usage/SKILL.md`。
|
|
38
|
+
3. 导出、报表、模板、附件、Excel、CSV、PDF、ZIP、Blob 下载任务:必须读 `.agents/skills/file-export-download/SKILL.md`。
|
|
39
|
+
4. 列表或表格任务:同时读 `.agents/skills/page-list-module/SKILL.md`、`.agents/skills/ytable-usage/SKILL.md`、`.agents/skills/yss-use-table-height/SKILL.md`。
|
|
40
|
+
5. 新增/编辑/查看/抽屉表单:同时读 `.agents/skills/yss-formily/SKILL.md`、`.agents/skills/page-form-module/SKILL.md`。
|
|
41
|
+
6. 可编辑表格、扩展属性、添加行/删除行:必须读 `.agents/skills/yedit-table-usage/SKILL.md`。
|
|
42
|
+
7. 用户给原型截图或旧项目路径:必须读 `.agents/skills/prototype-page-acceptance/SKILL.md`,先生成验收清单,再实现。
|
|
43
|
+
|
|
44
|
+
## Hard Stops
|
|
45
|
+
|
|
46
|
+
- 禁止使用 YTable 不存在的 `request`、`search-params` Props 和 `actionConfig.actions`;实例 `refresh()` 只刷新当前表格数据,不得当作远程重新查询。
|
|
47
|
+
- 标准列表必须使用 `:data`、`:columns`、`:loading`、`pageable`、`v-model:pagination`、`@page-change`。
|
|
48
|
+
- 表格主操作必须放入 `#toolbar-right`;只有确实需要列设置时才使用 `:toolbar-config="{ custom: true }"`。
|
|
49
|
+
- 业务列表查询区默认将查询/重置按钮放在 YFormily 外部独占一行并右对齐;`AutoButtonGroup + Submit + Reset` 仅用于纯 Formily 提交表单。
|
|
50
|
+
- 所有 YFormily 横向业务表单必须使用 `FormLayout(labelWidth, labelAlign: 'right') -> FormGrid -> 字段`,不得省略固定 label 宽度和右对齐。
|
|
51
|
+
- FormGrid 必须保持响应式:默认 `minColumns: 1`,通过 `maxColumns`、`minWidth` 控制宽屏列数;禁止 `minColumns` 等于 `maxColumns` 固定列数,除非用户明确要求不响应式。
|
|
52
|
+
- 抽屉/弹窗编辑表单默认 `labelWidth: 140`、`FormGrid { maxColumns: 2, minColumns: 1, minWidth: 320~360 }`;备注/长文本字段必须用 `gridSpan` 占满整行。
|
|
53
|
+
- 可编辑表格必须优先使用 `YEditTable`,禁止用 `a-table` 手搓。
|
|
54
|
+
- 抽屉表单必须有响应式宽度,查看态不显示保存按钮。
|
|
55
|
+
- 页面和组件禁止硬编码品牌色及 hover/active/selected/focus 色阶;主色透明态必须从真实动态 Token 派生,不得依赖未同步变量的固定色 fallback。
|
|
56
|
+
- 导出下载必须优先调用 `handleBlobResponse(res.data, res.headers)`;生成方法缺少 Blob 配置时,第二参数必须传 `{ responseType: 'blob' }`,禁止手改 Orval 生成文件。
|
|
57
|
+
- Orval 请求失败由 `mutator.ts` 统一提示并 reject;业务 Hook 禁止 `if (res?.success)` 冗余判断,也禁止在 `else`/`catch` 重复 `message.error`,除非请求显式跳过了全局处理。
|
|
58
|
+
- 调用 Orval API 前必须检查当前生成文件;存在具名导出时直接导入,只有工厂导出时在模块顶层创建一次实例,禁止猜测 `getApi()` 名称。
|
|
59
|
+
- 有截图/旧项目参考时,交付前必须逐项对照查询区、表格工具栏、分页高度、抽屉、label、字段控件类型。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "@yss/skills",
|
|
3
|
+
"mode": "copy",
|
|
4
|
+
"skills": [
|
|
5
|
+
"yss-page-module-development",
|
|
6
|
+
"theme-token-usage",
|
|
7
|
+
"component-selection-imports",
|
|
8
|
+
"page-skeleton",
|
|
9
|
+
"page-list-module",
|
|
10
|
+
"page-form-module",
|
|
11
|
+
"ytable-usage",
|
|
12
|
+
"yedit-table-usage",
|
|
13
|
+
"ytree-usage",
|
|
14
|
+
"prototype-page-acceptance",
|
|
15
|
+
"yss-api-integration",
|
|
16
|
+
"file-export-download",
|
|
17
|
+
"vue3-best-practices",
|
|
18
|
+
"frontend-commit",
|
|
19
|
+
"java-backend-commit",
|
|
20
|
+
"yss-use-table-height",
|
|
21
|
+
"yss-use-tree-height",
|
|
22
|
+
"yss-formily",
|
|
23
|
+
"formily-foundation",
|
|
24
|
+
"formily-linkage-effects",
|
|
25
|
+
"formily-mode-slot-detail",
|
|
26
|
+
"formily-step-flow"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: component-selection-imports
|
|
3
|
+
description: 指导 YSS UI 业务页面、CRUD、列表页、表单页和组件评审在编码前判定组件、Hook 与工具函数的真实导出来源;当需要在 @yss-ui/components、@yss-ui/hooks、@yss-ui/utils 与 ant-design-vue 之间选择,或需要排查虚构 Y 前缀组件、错误导入、Formily UI 边界时使用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 组件选择与导入
|
|
7
|
+
|
|
8
|
+
## 触发条件
|
|
9
|
+
|
|
10
|
+
- 生成 YSS UI 业务页面前需要判定组件、Hook 或工具函数来源。
|
|
11
|
+
- 出现错误 Y 前缀、导入冲突、Formily UI 跨层或者组件是否已封装不明确。
|
|
12
|
+
|
|
13
|
+
## 不适用场景
|
|
14
|
+
|
|
15
|
+
- 只修改与 UI 导入无关的纯数据逻辑。
|
|
16
|
+
- 组件库内部组件开发;该场景应按组件开发规范处理内部依赖。
|
|
17
|
+
|
|
18
|
+
## 判定流程
|
|
19
|
+
|
|
20
|
+
1. 当前会话可用 yss-ui MCP 时,先用 `list_components` 确认组件、Hook 或 Utils 是否真实存在,再用 `get_component_docs` 确认名称、导出包、Props、Events 和 Slots,不只看 demo 标签名。
|
|
21
|
+
2. `get_component_docs` 未命中时,先用 `search_docs` 和 `list_components` 校正别名与归属,不得立即判定为未封装。
|
|
22
|
+
3. MCP 工具不可用、调用失败或校正后仍无结果时,读取当前上下文中的最新 `llms-full.txt`;上下文没有时读取 `http://192.168.164.27:3200/llms-full.txt`。
|
|
23
|
+
4. 必要时读取 `../yss-page-module-development/references/component-map.md`、`hooks-map.md`、`utils-map.md` 快速缩小范围;文档与当前项目依赖版本不一致时,最终以当前源码和可编译导出为准。
|
|
24
|
+
5. 已导出的 YSS 能力优先从 `@yss-ui/components`、`@yss-ui/hooks`、`@yss-ui/utils` 导入;确认未封装后才从 `ant-design-vue` 导入原组件。
|
|
25
|
+
6. 若文档与导出源码不一致,记录差异并按当前仓库可编译的导出处理,不猜测 API。
|
|
26
|
+
|
|
27
|
+
## 硬约束(禁止/必须)
|
|
28
|
+
|
|
29
|
+
- 业务层已封装组件必须从 `@yss-ui/components` 导入;可编辑表格必须优先使用 `YEditTable`,业务主表格必须优先使用 `YTable`。
|
|
30
|
+
- 当前公共导出包含 `YButton`、`YCard`、`YTable`、`YEditTable`、`YTree`、`YSplitPane`、`YFormily` 等;未导出 `YModal`、`YDrawer`、`YInput`、`YPopconfirm`,禁止臆造这些名称。
|
|
31
|
+
- 当前未封装的 `Modal`、`Drawer`、`Popconfirm`、`Input` 等从 `ant-design-vue` 导入。删除操作使用按钮附近的 `Popconfirm`,不默认使用居中 `Modal.confirm`。
|
|
32
|
+
- 业务层禁止导入 `@formily/antdv` 或 `@formily/antd*` UI 组件;使用 `YFormily` 提供的 Schema 与组件边界。
|
|
33
|
+
- 禁止因文档暂时不可达就把猜测的 `Y*` 组件改成 Ant Design Vue “先落地”。只能复用当前仓库已证明可用的导入,或明确报告待确认项。
|
|
34
|
+
- 接口错误提示由 `mutator.ts` 的响应拦截器统一处理。API Hook 不得在 `success === false` 分支或 `catch` 内重复调用 `message.error`;`message` 只用于非 API 错误的本地交互反馈或成功提示。
|
|
35
|
+
|
|
36
|
+
## 标准代码骨架
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
import {
|
|
40
|
+
YButton,
|
|
41
|
+
YCard,
|
|
42
|
+
YEditTable,
|
|
43
|
+
YTable,
|
|
44
|
+
YTree,
|
|
45
|
+
YFormily,
|
|
46
|
+
type YEditTableColumn,
|
|
47
|
+
type YTableColumn,
|
|
48
|
+
} from '@yss-ui/components';
|
|
49
|
+
import { useLoading, useTableHeight, useTreeHeight } from '@yss-ui/hooks';
|
|
50
|
+
import { copyToClipboard, formatDate } from '@yss-ui/utils';
|
|
51
|
+
import { Drawer, Input, Modal, Popconfirm } from 'ant-design-vue';
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 交付检查清单
|
|
55
|
+
|
|
56
|
+
- [ ] 每个关键导入都能在最新文档或包的 `src/index.ts` 中追溯。
|
|
57
|
+
- [ ] 未导出的 Y 前缀组件没有出现在业务代码中。
|
|
58
|
+
- [ ] 删除、表格、编辑表格和 Formily 导入边界符合项目约束。
|
|
59
|
+
- [ ] API Hook 中没有重复 `message.error`,异常仍由 `Promise.reject` 中断后续流程。
|
|
60
|
+
|
|
61
|
+
## 失败兜底策略
|
|
62
|
+
|
|
63
|
+
- MCP 与 `llms-full.txt` 都不可用时,用 CodeGraph/源码 `src/index.ts` 和当前项目已编译的相近页面交叉确认,不猜测导出。
|
|
64
|
+
- 文档与源码不一致时,优先保证当前仓库可编译,并在交付中明确标注文档差异。
|
|
@@ -19,8 +19,8 @@ description: Use when a Harness change or vertical slice may require work across
|
|
|
19
19
|
1. 读取 `docs/process/implementation-repo-integration.md` 和当前 change 资产。
|
|
20
20
|
2. 判断影响面:Harness-only、backend-only、frontend-only、backend+frontend、contract-only、release-only。
|
|
21
21
|
3. 确认每个受影响实现仓库已有登记记录;缺失则阻断并要求 onboarding。
|
|
22
|
-
4. 核对项目根路径:Harness
|
|
23
|
-
5. 输出最小任务分配:Harness 文档 / OpenAPI / 后端 MR / 前端 MR / 验证 /
|
|
22
|
+
4. 核对项目根路径:Harness 内 `harness-apps` 与 `git-submodule` 项目必须是 `apps/backend/<project>/` 或 `apps/frontend/<project>/`;`apps/backend/`、`apps/frontend/` 只能作为容器,`app/backend/`、`app/frontend/` 及其子路径必须阻断。`git-submodule` 另核 gitlink、`.gitmodules` 和独立 `git_url`。外部 `external-repository` 记录各自的真实项目根。
|
|
23
|
+
5. 输出最小任务分配:Harness 文档 / OpenAPI / 后端 MR / 前端 MR / 验证 / 发布。`git-submodule` 必须追加 `superproject-gitlink-update`。
|
|
24
24
|
6. 按 `docs/templates/cross-repo-slice-template.md` 生成切片记录草案。
|
|
25
25
|
7. 给出 fresh verification 命令和阶段 checkpoint 回写字段。
|
|
26
26
|
|