@wneng/create-keel 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/dist/index.js +1479 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +55 -0
  6. package/src/templates/.gitkeep +0 -0
  7. package/src/templates/agent-rust-desktop/files/Cargo.toml +12 -0
  8. package/src/templates/agent-rust-desktop/files/README.md +16 -0
  9. package/src/templates/agent-rust-desktop/files/generated-gitkeep +0 -0
  10. package/src/templates/agent-rust-desktop/files/main.rs +24 -0
  11. package/src/templates/agent-rust-desktop/fragment.yaml +18 -0
  12. package/src/templates/ai-claude-code/files/CLAUDE.md +19 -0
  13. package/src/templates/ai-claude-code/files/commands-README.md +7 -0
  14. package/src/templates/ai-claude-code/fragment.yaml +12 -0
  15. package/src/templates/ai-codex/files/project.md +11 -0
  16. package/src/templates/ai-codex/files/prompts-README.md +7 -0
  17. package/src/templates/ai-codex/fragment.yaml +12 -0
  18. package/src/templates/ai-cursor/files/rules-README.md +6 -0
  19. package/src/templates/ai-cursor/files/rules-project.md +15 -0
  20. package/src/templates/ai-cursor/fragment.yaml +12 -0
  21. package/src/templates/ai-kiro/files/prompts-README.md +5 -0
  22. package/src/templates/ai-kiro/files/specs-gitkeep +0 -0
  23. package/src/templates/ai-kiro/files/steering-README.md +5 -0
  24. package/src/templates/ai-kiro/files/steering-project.md +9 -0
  25. package/src/templates/ai-kiro/fragment.yaml +18 -0
  26. package/src/templates/ci-gitee/files/pipeline.yml +18 -0
  27. package/src/templates/ci-gitee/fragment.yaml +9 -0
  28. package/src/templates/ci-github/files/ci.yml +17 -0
  29. package/src/templates/ci-github/fragment.yaml +9 -0
  30. package/src/templates/contracts-base/files/CHANGELOG.md +10 -0
  31. package/src/templates/contracts-base/files/README.md +75 -0
  32. package/src/templates/contracts-base/files/_ai-policy.yaml +20 -0
  33. package/src/templates/contracts-base/files/dictionaries/domain-models.yaml +3 -0
  34. package/src/templates/contracts-base/files/dictionaries/enums.yaml +3 -0
  35. package/src/templates/contracts-base/files/environment/.env.example +3 -0
  36. package/src/templates/contracts-base/files/environment/env.schema.json +10 -0
  37. package/src/templates/contracts-base/files/errors/error-codes.yaml +6 -0
  38. package/src/templates/contracts-base/files/errors/error-response.schema.json +13 -0
  39. package/src/templates/contracts-base/files/events-gitkeep +0 -0
  40. package/src/templates/contracts-base/files/resources-examples-gitkeep +0 -0
  41. package/src/templates/contracts-base/files/resources-mocks-gitkeep +0 -0
  42. package/src/templates/contracts-base/files/states-gitkeep +0 -0
  43. package/src/templates/contracts-base/files/tests-acceptance-gitkeep +0 -0
  44. package/src/templates/contracts-base/files/tests-contracts-gitkeep +0 -0
  45. package/src/templates/contracts-base/files/tests-postman-gitkeep +0 -0
  46. package/src/templates/contracts-base/fragment.yaml +53 -0
  47. package/src/templates/contracts-events/files/asyncapi.yaml +8 -0
  48. package/src/templates/contracts-events/fragment.yaml +9 -0
  49. package/src/templates/contracts-rest/files/api.yaml +7 -0
  50. package/src/templates/contracts-rest/fragment.yaml +9 -0
  51. package/src/templates/contracts-rest-events/files/api.yaml +7 -0
  52. package/src/templates/contracts-rest-events/files/asyncapi.yaml +8 -0
  53. package/src/templates/contracts-rest-events/fragment.yaml +12 -0
  54. package/src/templates/deploy-bare-metal/files/release-checklist.md +8 -0
  55. package/src/templates/deploy-bare-metal/fragment.yaml +9 -0
  56. package/src/templates/deploy-common/files/README.md +5 -0
  57. package/src/templates/deploy-common/fragment.yaml +8 -0
  58. package/src/templates/deploy-docker-compose/files/compose.override.example.yaml +4 -0
  59. package/src/templates/deploy-docker-compose/files/docker-compose.yaml +4 -0
  60. package/src/templates/deploy-docker-compose/fragment.yaml +12 -0
  61. package/src/templates/deploy-kubernetes/files/Chart.yaml +6 -0
  62. package/src/templates/deploy-kubernetes/files/deployment.yaml +18 -0
  63. package/src/templates/deploy-kubernetes/files/namespace.yaml +4 -0
  64. package/src/templates/deploy-kubernetes/files/values.yaml +4 -0
  65. package/src/templates/deploy-kubernetes/fragment.yaml +18 -0
  66. package/src/templates/docs-skeleton/files/README.md +134 -0
  67. package/src/templates/docs-skeleton/files/arch-README.md +18 -0
  68. package/src/templates/docs-skeleton/files/arch-_ai-policy.yaml +8 -0
  69. package/src/templates/docs-skeleton/files/archive-README.md +20 -0
  70. package/src/templates/docs-skeleton/files/archive-_ai-policy.yaml +8 -0
  71. package/src/templates/docs-skeleton/files/assets-README.md +29 -0
  72. package/src/templates/docs-skeleton/files/assets-_ai-policy.yaml +8 -0
  73. package/src/templates/docs-skeleton/files/assets-design-gitkeep +0 -0
  74. package/src/templates/docs-skeleton/files/assets-diagrams-gitkeep +0 -0
  75. package/src/templates/docs-skeleton/files/assets-images-gitkeep +0 -0
  76. package/src/templates/docs-skeleton/files/be-README.md +29 -0
  77. package/src/templates/docs-skeleton/files/be-_ai-policy.yaml +8 -0
  78. package/src/templates/docs-skeleton/files/bg-README.md +21 -0
  79. package/src/templates/docs-skeleton/files/bg-_ai-policy.yaml +8 -0
  80. package/src/templates/docs-skeleton/files/eng-README.md +21 -0
  81. package/src/templates/docs-skeleton/files/eng-_ai-policy.yaml +9 -0
  82. package/src/templates/docs-skeleton/files/fe-README.md +31 -0
  83. package/src/templates/docs-skeleton/files/fe-_ai-policy.yaml +8 -0
  84. package/src/templates/docs-skeleton/files/governance-README.md +28 -0
  85. package/src/templates/docs-skeleton/files/governance-_ai-policy.yaml +13 -0
  86. package/src/templates/docs-skeleton/files/governance-ai-access-modes.md +324 -0
  87. package/src/templates/docs-skeleton/files/governance-assets.md +50 -0
  88. package/src/templates/docs-skeleton/files/governance-checklists.md +55 -0
  89. package/src/templates/docs-skeleton/files/governance-ci.md +36 -0
  90. package/src/templates/docs-skeleton/files/governance-deploy-ops.md +107 -0
  91. package/src/templates/docs-skeleton/files/governance-docs-references.md +39 -0
  92. package/src/templates/docs-skeleton/files/governance-git-workflow.md +45 -0
  93. package/src/templates/docs-skeleton/files/governance-integrations.md +66 -0
  94. package/src/templates/docs-skeleton/files/governance-security.md +69 -0
  95. package/src/templates/docs-skeleton/files/governance-tools-scripts.md +128 -0
  96. package/src/templates/docs-skeleton/files/process-docs-README.md +22 -0
  97. package/src/templates/docs-skeleton/files/process-docs-_ai-policy.yaml +10 -0
  98. package/src/templates/docs-skeleton/files/references-README.md +19 -0
  99. package/src/templates/docs-skeleton/files/references-_ai-policy.yaml +9 -0
  100. package/src/templates/docs-skeleton/files/references-legal-source.yaml +5 -0
  101. package/src/templates/docs-skeleton/files/references-standards-source.yaml +5 -0
  102. package/src/templates/docs-skeleton/files/references-vendors-source.yaml +5 -0
  103. package/src/templates/docs-skeleton/files/usage-quickstart.md +168 -0
  104. package/src/templates/docs-skeleton/fragment.yaml +129 -0
  105. package/src/templates/integrations-docs/files/README.md +53 -0
  106. package/src/templates/integrations-docs/files/_template.md +63 -0
  107. package/src/templates/integrations-docs/fragment.yaml +12 -0
  108. package/src/templates/license-apache-2/files/LICENSE +15 -0
  109. package/src/templates/license-apache-2/fragment.yaml +9 -0
  110. package/src/templates/license-mit/files/LICENSE +21 -0
  111. package/src/templates/license-mit/fragment.yaml +9 -0
  112. package/src/templates/miniapp-wechat/files/README.md +10 -0
  113. package/src/templates/miniapp-wechat/files/app.js +5 -0
  114. package/src/templates/miniapp-wechat/files/app.json +9 -0
  115. package/src/templates/miniapp-wechat/files/app.wxss +4 -0
  116. package/src/templates/miniapp-wechat/files/generated-gitkeep +0 -0
  117. package/src/templates/miniapp-wechat/files/pages-index.js +4 -0
  118. package/src/templates/miniapp-wechat/files/pages-index.json +3 -0
  119. package/src/templates/miniapp-wechat/files/pages-index.wxml +3 -0
  120. package/src/templates/miniapp-wechat/files/pages-index.wxss +10 -0
  121. package/src/templates/miniapp-wechat/files/project.config.json +13 -0
  122. package/src/templates/miniapp-wechat/files/sitemap.json +8 -0
  123. package/src/templates/miniapp-wechat/fragment.yaml +39 -0
  124. package/src/templates/mobile-flutter/files/README.md +14 -0
  125. package/src/templates/mobile-flutter/files/analysis_options.yaml +6 -0
  126. package/src/templates/mobile-flutter/files/generated-gitkeep +0 -0
  127. package/src/templates/mobile-flutter/files/main.dart +18 -0
  128. package/src/templates/mobile-flutter/files/pubspec.yaml +19 -0
  129. package/src/templates/mobile-flutter/fragment.yaml +21 -0
  130. package/src/templates/mobile-react-native/files/App.tsx +10 -0
  131. package/src/templates/mobile-react-native/files/README.md +15 -0
  132. package/src/templates/mobile-react-native/files/app.json +4 -0
  133. package/src/templates/mobile-react-native/files/generated-gitkeep +0 -0
  134. package/src/templates/mobile-react-native/files/index.js +5 -0
  135. package/src/templates/mobile-react-native/files/package.json +14 -0
  136. package/src/templates/mobile-react-native/fragment.yaml +24 -0
  137. package/src/templates/repo-skeleton/files/docs-gitkeep +0 -0
  138. package/src/templates/repo-skeleton/files/ops-README.md +6 -0
  139. package/src/templates/repo-skeleton/files/ops-k8s-gitkeep +0 -0
  140. package/src/templates/repo-skeleton/files/ops-monitoring-gitkeep +0 -0
  141. package/src/templates/repo-skeleton/files/ops-terraform-gitkeep +0 -0
  142. package/src/templates/repo-skeleton/files/scripts-README.md +11 -0
  143. package/src/templates/repo-skeleton/files/scripts-ci-gitkeep +0 -0
  144. package/src/templates/repo-skeleton/files/scripts-dev-gitkeep +0 -0
  145. package/src/templates/repo-skeleton/files/scripts-oneoff-gitkeep +0 -0
  146. package/src/templates/repo-skeleton/files/scripts-ops-gitkeep +0 -0
  147. package/src/templates/repo-skeleton/files/tools-README.md +4 -0
  148. package/src/templates/repo-skeleton/files/tools-contract-gitkeep +0 -0
  149. package/src/templates/repo-skeleton/fragment.yaml +41 -0
  150. package/src/templates/role-data/files/README.md +23 -0
  151. package/src/templates/role-data/files/_ai-policy.yaml +10 -0
  152. package/src/templates/role-data/files/dashboards-gitkeep +0 -0
  153. package/src/templates/role-data/files/data-catalog-gitkeep +0 -0
  154. package/src/templates/role-data/files/tracking-spec-gitkeep +0 -0
  155. package/src/templates/role-data/fragment.yaml +21 -0
  156. package/src/templates/role-design/files/README.md +26 -0
  157. package/src/templates/role-design/files/_ai-policy.yaml +11 -0
  158. package/src/templates/role-design/files/figma-exports-gitkeep +0 -0
  159. package/src/templates/role-design/files/ui-spec-gitkeep +0 -0
  160. package/src/templates/role-design/fragment.yaml +18 -0
  161. package/src/templates/role-field/files/README.md +33 -0
  162. package/src/templates/role-field/files/_ai-policy.yaml +13 -0
  163. package/src/templates/role-field/files/runbooks-README.md +5 -0
  164. package/src/templates/role-field/files/templates-README.md +5 -0
  165. package/src/templates/role-field/files/templates-_ai-policy.yaml +8 -0
  166. package/src/templates/role-field/fragment.yaml +21 -0
  167. package/src/templates/role-legal-security/files/README.md +33 -0
  168. package/src/templates/role-legal-security/files/_ai-policy.yaml +14 -0
  169. package/src/templates/role-legal-security/files/assessments-README.md +5 -0
  170. package/src/templates/role-legal-security/files/assessments-_ai-policy.yaml +9 -0
  171. package/src/templates/role-legal-security/files/evidence-README.md +5 -0
  172. package/src/templates/role-legal-security/files/evidence-_ai-policy.yaml +8 -0
  173. package/src/templates/role-legal-security/fragment.yaml +24 -0
  174. package/src/templates/role-marketing/files/README.md +32 -0
  175. package/src/templates/role-marketing/files/_ai-policy.yaml +14 -0
  176. package/src/templates/role-marketing/files/drafts-README.md +7 -0
  177. package/src/templates/role-marketing/files/drafts-_ai-policy.yaml +19 -0
  178. package/src/templates/role-marketing/files/published-README.md +5 -0
  179. package/src/templates/role-marketing/files/published-_ai-policy.yaml +8 -0
  180. package/src/templates/role-marketing/files/templates-README.md +5 -0
  181. package/src/templates/role-marketing/files/templates-_ai-policy.yaml +8 -0
  182. package/src/templates/role-marketing/fragment.yaml +30 -0
  183. package/src/templates/role-qa/files/README.md +20 -0
  184. package/src/templates/role-qa/files/_ai-policy.yaml +9 -0
  185. package/src/templates/role-qa/files/defects-gitkeep +0 -0
  186. package/src/templates/role-qa/files/test-cases-gitkeep +0 -0
  187. package/src/templates/role-qa/files/test-plans-gitkeep +0 -0
  188. package/src/templates/role-qa/fragment.yaml +21 -0
  189. package/src/templates/root-files/files/.editorconfig +15 -0
  190. package/src/templates/root-files/files/.gitattributes +13 -0
  191. package/src/templates/root-files/files/AGENTS.md +194 -0
  192. package/src/templates/root-files/files/README.md +16 -0
  193. package/src/templates/root-files/fragment.yaml +20 -0
  194. package/src/templates/server-go/files/README.md +3 -0
  195. package/src/templates/server-go/files/generated-gitkeep +0 -0
  196. package/src/templates/server-go/files/go.mod +3 -0
  197. package/src/templates/server-go/files/main.go +7 -0
  198. package/src/templates/server-go/fragment.yaml +18 -0
  199. package/src/templates/server-java/files/Application.java +12 -0
  200. package/src/templates/server-java/files/README.md +48 -0
  201. package/src/templates/server-java/files/application-test.yaml +17 -0
  202. package/src/templates/server-java/files/application.yaml +33 -0
  203. package/src/templates/server-java/files/generated-gitkeep +0 -0
  204. package/src/templates/server-java/files/pom.xml +97 -0
  205. package/src/templates/server-java/fragment.yaml +24 -0
  206. package/src/templates/server-node/files/README.md +6 -0
  207. package/src/templates/server-node/files/generated-gitkeep +0 -0
  208. package/src/templates/server-node/files/package.json +9 -0
  209. package/src/templates/server-node/files/src-index.ts +2 -0
  210. package/src/templates/server-node/fragment.yaml +18 -0
  211. package/src/templates/server-python/files/README.md +4 -0
  212. package/src/templates/server-python/files/app-init.py +1 -0
  213. package/src/templates/server-python/files/generated-gitkeep +0 -0
  214. package/src/templates/server-python/files/pyproject.toml +5 -0
  215. package/src/templates/server-python/fragment.yaml +18 -0
  216. package/src/templates/web-react/files/README.md +29 -0
  217. package/src/templates/web-react/files/generated-gitkeep +0 -0
  218. package/src/templates/web-react/files/index.html +12 -0
  219. package/src/templates/web-react/files/package.json +25 -0
  220. package/src/templates/web-react/files/src-App.tsx +11 -0
  221. package/src/templates/web-react/files/src-main.tsx +14 -0
  222. package/src/templates/web-react/files/tsconfig.json +20 -0
  223. package/src/templates/web-react/files/vite.config.ts +15 -0
  224. package/src/templates/web-react/fragment.yaml +30 -0
  225. package/src/templates/web-vue/files/README.md +3 -0
  226. package/src/templates/web-vue/files/generated-gitkeep +0 -0
  227. package/src/templates/web-vue/files/index.html +11 -0
  228. package/src/templates/web-vue/files/package.json +9 -0
  229. package/src/templates/web-vue/files/src-main.ts +3 -0
  230. package/src/templates/web-vue/fragment.yaml +21 -0
@@ -0,0 +1,5 @@
1
+ # templates/
2
+
3
+ 对外材料母版。AI 触达:`read-only`。
4
+
5
+ 承载 PPT 框架、白皮书结构、案例模板等。AI 可读作为生成 `../drafts/` 的上下文,但不得修改本目录。
@@ -0,0 +1,8 @@
1
+ # docs/11-市场与对外材料/templates/_ai-policy.yaml
2
+ # 局部覆盖:母版人工维护
3
+
4
+ mode: read-only
5
+
6
+ notes: |
7
+ 对外材料母版(PPT 框架、白皮书结构、案例模板)。
8
+ AI 可读作为生成 drafts/ 草稿的上下文,但不得修改本目录。
@@ -0,0 +1,30 @@
1
+ name: role-marketing
2
+ version: 1.0.0
3
+ appliesWhen:
4
+ role: marketing
5
+ priority: 30
6
+ files:
7
+ - from: files/README.md
8
+ to: docs/11-市场与对外材料/README.md
9
+ render: false
10
+ - from: files/_ai-policy.yaml
11
+ to: docs/11-市场与对外材料/_ai-policy.yaml
12
+ render: false
13
+ - from: files/templates-README.md
14
+ to: docs/11-市场与对外材料/templates/README.md
15
+ render: false
16
+ - from: files/templates-_ai-policy.yaml
17
+ to: docs/11-市场与对外材料/templates/_ai-policy.yaml
18
+ render: false
19
+ - from: files/drafts-README.md
20
+ to: docs/11-市场与对外材料/drafts/README.md
21
+ render: false
22
+ - from: files/drafts-_ai-policy.yaml
23
+ to: docs/11-市场与对外材料/drafts/_ai-policy.yaml
24
+ render: false
25
+ - from: files/published-README.md
26
+ to: docs/11-市场与对外材料/published/README.md
27
+ render: false
28
+ - from: files/published-_ai-policy.yaml
29
+ to: docs/11-市场与对外材料/published/_ai-policy.yaml
30
+ render: false
@@ -0,0 +1,20 @@
1
+ # 07-质量与测试
2
+
3
+ 测试计划、用例集、缺陷库的归属目录。依据 ADR-0002 引入。
4
+
5
+ ## 子目录
6
+
7
+ | 目录 | 内容 |
8
+ |------|------|
9
+ | `test-plans/` | 项目 / 版本级测试计划 |
10
+ | `test-cases/` | 用例集(手工 / 自动化)。可执行的 Gherkin 仍在 `contracts/tests/acceptance/` |
11
+ | `defects/` | 缺陷库存档(需要长期保留的关键缺陷复盘) |
12
+
13
+ ## AI 触达模式
14
+
15
+ `mode: suggest`。AI 在契约或代码变更时,应在 PR 描述中提示"可能影响 docs/07/test-plans/xxx",但**不自动改**测试主线。
16
+
17
+ ## 与既有目录的关系
18
+
19
+ - 与 `contracts/tests/acceptance/`(Gherkin 业务验收):本目录是**叙事 + 计划**,acceptance 是**机器可执行**
20
+ - 与 `docs/04-后端详细设计/` / `docs/05-前端客户端详细设计/`:模块设计文档中的"测试要点"指向本目录的具体用例
@@ -0,0 +1,9 @@
1
+ # docs/07-质量与测试/_ai-policy.yaml
2
+ # 依据 ADR-0002 §3.2.1,ADR-0003(access modes)
3
+
4
+ mode: suggest
5
+
6
+ notes: |
7
+ 测试计划、用例集、缺陷库。AI 在契约或代码变更时,
8
+ 应在 PR 描述中提示"可能影响 docs/07/test-plans/xxx",
9
+ 但不自动改测试主线。
File without changes
File without changes
File without changes
@@ -0,0 +1,21 @@
1
+ name: role-qa
2
+ version: 1.0.0
3
+ appliesWhen:
4
+ role: qa
5
+ priority: 30
6
+ files:
7
+ - from: files/README.md
8
+ to: docs/07-质量与测试/README.md
9
+ render: false
10
+ - from: files/_ai-policy.yaml
11
+ to: docs/07-质量与测试/_ai-policy.yaml
12
+ render: false
13
+ - from: files/test-plans-gitkeep
14
+ to: docs/07-质量与测试/test-plans/.gitkeep
15
+ render: false
16
+ - from: files/test-cases-gitkeep
17
+ to: docs/07-质量与测试/test-cases/.gitkeep
18
+ render: false
19
+ - from: files/defects-gitkeep
20
+ to: docs/07-质量与测试/defects/.gitkeep
21
+ render: false
@@ -0,0 +1,15 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ indent_style = space
7
+ indent_size = 2
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
13
+
14
+ [Makefile]
15
+ indent_style = tab
@@ -0,0 +1,13 @@
1
+ * text=auto eol=lf
2
+ *.sh text eol=lf
3
+ *.ps1 text eol=crlf
4
+ *.png binary
5
+ *.jpg binary
6
+ *.jpeg binary
7
+ *.pdf binary
8
+ <% if (it.options.gitLfs) { %>
9
+ # Git LFS
10
+ docs/assets/**/*.png filter=lfs diff=lfs merge=lfs -text
11
+ docs/assets/**/*.psd filter=lfs diff=lfs merge=lfs -text
12
+ docs/assets/**/*.sketch filter=lfs diff=lfs merge=lfs -text
13
+ <% } %>
@@ -0,0 +1,194 @@
1
+ # AGENTS — <%= it.options.projectName %>
2
+
3
+ > 本文件是仓库协作总纲。它不承载所有细则——细则按任务类型从 `docs/`、`contracts/`、`.kiro/steering/` 加载(见 §6 按需加载索引、§7 权威文件索引)。
4
+ >
5
+ > 任何与本文件冲突的局部约定一律作废,除非通过 PR 修改本文件本身。
6
+
7
+ *Created by AI on <%= it.generatedAt.slice(0, 10) %>.*
8
+
9
+ ## 0. 默认必读
10
+
11
+ 1. 本文件 `AGENTS.md`(总纲)
12
+ 2. `docs/README.md`(文档门户)
13
+ 3. `contracts/README.md`(涉及契约时)
14
+ <% if (it.options.ai === 'kiro') { %>4. `.kiro/steering/*.md`(若存在)
15
+ <% } else if (it.options.ai === 'codex') { %>4. `.codex/project.md`(项目专属备注)
16
+ <% } else if (it.options.ai === 'cursor') { %>4. `.cursor/rules/*.md`(项目规则)
17
+ <% } else if (it.options.ai === 'claude-code') { %>4. `CLAUDE.md`(Claude Code 自动加载)
18
+ <% } %>
19
+
20
+ > 入门 / 角色场景对照:[`docs/03-工程规范与研发基础设施/usage-quickstart.md`](docs/03-工程规范与研发基础设施/usage-quickstart.md)
21
+
22
+ ## 1. 项目定位
23
+
24
+ 本仓库采用 **Contract First + Vibe Coding**。契约定义优先于实现,文档与契约分层维护。
25
+
26
+ 顶层目录职责:
27
+
28
+ | 目录 | 面向 | 内容 |
29
+ | ------------ | --------- | ---------------------------------------------------- |
30
+ | `contracts/` | 机器 / AI | 结构化、版本可控、工具可消费的规约 |
31
+ | `docs/` | 人类 | 过程性资料、正式设计文档、外部引用资料、资产文件 |
32
+ <% if (it.options.backend !== 'none') { %>| `server/` | 机器 | 后端服务实现源码(<%= it.options.backend %>) |
33
+ <% } %><% if (it.options.frontend !== 'none') { %>| `web/` | 机器 | 前端应用实现源码(<%= it.options.frontend %>) |
34
+ <% } %><% if (it.options.mobile !== 'none') { %>| `mobile/` | 机器 | 移动端原生应用源码(<%= it.options.mobile %>) |
35
+ <% } %><% if (it.options.miniapp !== 'none') { %>| `miniapp/` | 机器 | 小程序源码(<%= it.options.miniapp %>) |
36
+ <% } %><% if (it.options.agent !== 'none') { %>| `agent/` | 机器 | 终端 / 桌面客户端源码(<%= it.options.agent %>) |
37
+ <% } %>| `ops/` | 机器 | 基础设施即代码(集群、网络、监控) |
38
+ | `deploy/` | 机器 | 应用发布物(Dockerfile、Helm、K8s manifest、流水线) |
39
+ | `tools/` | 机器 | 结构化、可复用的开发工具与脚手架 |
40
+ | `scripts/` | 机器 | 薄、零散、日常维护脚本 |
41
+ <% if (it.options.ai === 'kiro') { %>| `.kiro/` | AI | Kiro IDE 的 steering、prompts、specs |
42
+ <% } else if (it.options.ai === 'codex') { %>| `.codex/` | AI | Codex 项目备注与 prompts |
43
+ <% } else if (it.options.ai === 'cursor') { %>| `.cursor/` | AI | Cursor 项目规则 |
44
+ <% } else if (it.options.ai === 'claude-code') { %>| `CLAUDE.md` | AI | Claude Code 项目上下文(根文件) |
45
+ | `.claude/` | AI | Claude Code slash-commands |
46
+ <% } %>
47
+
48
+ ### 1.1 单应用 vs 多应用模式
49
+
50
+ 每个执行环境目录(`server/` `web/` `mobile/` `miniapp/` `agent/`)默认处于**单应用模式**。需要容纳第二个应用时切换到**多应用模式**:
51
+
52
+ 1. 在该目录下创建 `apps/<app-name>/`(`<app-name>` 匹配 `^[a-z0-9][a-z0-9-]{0,62}$`)
53
+ 2. 将原有工程文件整体迁入 `apps/<原应用名>/`
54
+ 3. 之后所有应用都必须位于 `<env>/apps/*/` 之下;**禁止**裸工程文件与 `apps/` 子目录并存
55
+
56
+ 跨应用共享只走 `contracts/` 或可选的根 `packages/`;**禁止** `<env>/apps/A/` 直接 import `<env>/apps/B/`。
57
+
58
+ ## 2. 不可协商原则
59
+
60
+ - **Contract First**:契约定义优先于代码实现。
61
+ - 接口、事件、错误码、字典、状态机统一进入 `contracts/`,**禁止**在模块内部重复定义。
62
+ - 由契约生成的 `generated/` 代码**禁止手改**;CI 校验"重新生成后 diff 为空"。
63
+ - **禁止**提交 secret、私钥、真实 PII、真实用户数据。
64
+ - 文件统一使用 **UTF-8 + LF**(`.gitattributes` 强制)。
65
+ - 模块边界稳定优先于业务细节。
66
+ - AI 生成代码必须**打标**:commit 使用 `feat(ai): ...` / `chore(ai): ...` 前缀,PR 打 `ai-generated` 标签。
67
+ - 临时 / 讨论 / 未定稿**只能**进 `docs/过程文档/`。
68
+
69
+ ## 3. 项目配置(本仓库选定值)
70
+
71
+ - Backend language: **<%= it.options.backend %>**
72
+ - Frontend framework: **<%= it.options.frontend %>**
73
+ - Mobile app: **<%= it.options.mobile %>**
74
+ - Mini program: **<%= it.options.miniapp %>**
75
+ - Agent client: **<%= it.options.agent %>**
76
+ - Deploy target: **<%= it.options.deploy %>**
77
+ - Contract kind: **<%= it.options.contract %>**
78
+ - AI tool integration: **<%= it.options.ai %>**
79
+ - License: **<%= it.options.license %>**
80
+ - Git LFS enabled: **<%= it.options.gitLfs %>**
81
+ - Integrations docs: **<%= it.options.integrations %>**
82
+ - CI platform: **<%= it.options.ci %>**
83
+
84
+ ## 4. 文档归属
85
+
86
+ 每类文档只有一个合法位置;放错位置的 PR 应被退回。完整归档规则与索引同步要求 → [`docs/README.md`](docs/README.md)。
87
+
88
+ | 文档类型 | 归属目录 |
89
+ | ----------------------------------------- | ---------------------------------------------- |
90
+ | PRD、需求调研、竞品分析 | `docs/01-背景与需求/` |
91
+ | 架构决策(ADR)、方案对比 | `docs/02-系统方案与架构/` |
92
+ | 编码规范、CI/CD 说明、环境管理 | `docs/03-工程规范与研发基础设施/` |
93
+ | 后端模块详细设计 | `docs/04-后端详细设计/` |
94
+ | 前端 / 客户端模块详细设计 | `docs/05-前端客户端详细设计/` |
95
+ <% if (it.options.integrations) { %>| 跨执行环境对接(已启用 `integrations`) | `docs/06-集成对接/<consumer>-to-<producer>/` |
96
+ <% } %>| 治理细则(CI / 安全 / Git / 资产 / 等) | `docs/governance/`(详见 §8) |
97
+ | 架构图源、UI 稿、截图、设计稿 | `docs/assets/{diagrams,images,design}/` |
98
+ | 行业标准、厂商手册、法规、合规参考 | `docs/references/{standards,vendors,legal}/` |
99
+ | 会议记录、调研草稿、未定稿、技术探针 | `docs/过程文档/`(结论固化后回迁) |
100
+ | 过期 / 被否决 / 90 天未采纳的过程文档 | `docs/archive/` |
101
+
102
+ 索引同步要求:新增 / 修改可能影响**启动 / 实现 / 管理**视角的文档时,**必须**在同一 PR 同步 `docs/README.md`(目录地图、新增分类入口、子目录约定)。手维护的"阅读顺序 / 必读清单 / 详细设计导航"索引已废弃,改用 `grep` / `fileSearch` 检索。
103
+
104
+ ## 5. 快速判定卡
105
+
106
+ ### 5.1 ops/ vs deploy/
107
+
108
+ - **"即便没有业务应用也要存在"** → `ops/`
109
+ - **"业务应用的打包与投递"** → `deploy/`
110
+ - 一个 Helm chart:chart 本身属 `deploy/`,依赖的 Namespace / CRD 属 `ops/`
111
+ - 完整规则 → [`docs/governance/deploy-ops.md`](docs/governance/deploy-ops.md)
112
+
113
+ ### 5.2 tools/ vs scripts/
114
+
115
+ - **有结构、可复用、近似小产品** → `tools/`
116
+ - **薄、零散、日常维护** → `scripts/`
117
+ - `scripts/` 出现以下任一信号 → 升级 `tools/`:第二个配置项 / 子命令;需独立依赖;多模块复用;超 200 行
118
+ - 脚本顶部必须含:用途 / 参数 / 幂等性 / 危险级别
119
+ - 完整规则 → [`docs/governance/tools-scripts.md`](docs/governance/tools-scripts.md)
120
+
121
+ <% if (it.options.integrations) { %>### 5.3 contracts/ vs docs/06-集成对接/
122
+
123
+ - **机器可验证的权威契约** → `contracts/`
124
+ - **契约不说但双方必须知道** → `docs/06-集成对接/`
125
+ - 完整规则 → [`docs/governance/integrations.md`](docs/governance/integrations.md)
126
+ <% } %>
127
+
128
+ ## 6. 核心协作规则
129
+
130
+ - 先补契约和文档,再补实现。
131
+ - AI 生成代码必须在 PR / commit 中显式引用契约锚点和设计文档。
132
+ - `spike/*` 分支允许暂时跳过契约;合入 `main` 前必须补齐。
133
+ - 完整 PR 模板与 CODEOWNERS → [`docs/governance/git-workflow.md`](docs/governance/git-workflow.md)
134
+ - 契约 SemVer / CHANGELOG / 废弃流程 → [`contracts/README.md`](contracts/README.md)
135
+
136
+ ## 7. 按需加载索引
137
+
138
+ ### 7.1 路径触发表
139
+
140
+ | 修改路径 | 必读 |
141
+ | --- | --- |
142
+ | `contracts/**` | `contracts/README.md`、`docs/governance/integrations.md`、`docs/governance/checklists.md` |
143
+ | `docs/**`(除 `docs/governance/` 与 `docs/06-集成对接/`) | `docs/README.md`、`docs/governance/docs-references.md`、`docs/governance/checklists.md` |
144
+ <% if (it.options.integrations) { %>| `docs/06-集成对接/**` | `docs/governance/integrations.md` |
145
+ <% } %>| `docs/governance/**` | `docs/governance/README.md`;同一 PR 必须同步本文件中对应摘要 |
146
+ | `docs/assets/**` 或根 `.gitattributes` | `docs/governance/assets.md` |
147
+ | `ops/**` 或 `deploy/**` | `docs/governance/deploy-ops.md`、`docs/governance/security.md` |
148
+ | `tools/**` 或 `scripts/**` | `docs/governance/tools-scripts.md` |
149
+ <% if (it.options.ci === 'gitee') { %>| `.gitee/**` | `docs/governance/ci.md`、`docs/governance/security.md` |
150
+ <% } else { %>| `.github/**` | `docs/governance/ci.md`、`docs/governance/security.md` |
151
+ <% } %>
152
+
153
+ ### 7.2 任务触发表
154
+
155
+ | 任务 | 必读 |
156
+ | --- | --- |
157
+ | 新增依赖 | `docs/governance/security.md` |
158
+ | 修改 PR 模板 / CODEOWNERS / 分支策略 | `docs/governance/git-workflow.md` |
159
+ | 新增脚本或工具 | `docs/governance/tools-scripts.md`、`docs/governance/checklists.md` |
160
+ | 多应用模式切换 | 本文件 §1.1、`docs/governance/git-workflow.md`、`docs/governance/checklists.md` |
161
+ | 发布前核对 | `docs/governance/checklists.md` §3、`docs/governance/security.md` |
162
+ | 应急响应(高危漏洞) | `docs/governance/security.md` §4 |
163
+
164
+ ## 8. 权威文件索引
165
+
166
+ | 主题 | 唯一权威 |
167
+ | --- | --- |
168
+ | 契约 | [`contracts/README.md`](contracts/README.md) |
169
+ | 文档 | [`docs/README.md`](docs/README.md) |
170
+ | CI | [`docs/governance/ci.md`](docs/governance/ci.md) |
171
+ | 安全 | [`docs/governance/security.md`](docs/governance/security.md) |
172
+ | Git / PR / CODEOWNERS | [`docs/governance/git-workflow.md`](docs/governance/git-workflow.md) |
173
+ | 资产与 LFS | [`docs/governance/assets.md`](docs/governance/assets.md) |
174
+ | 集成对接 | [`docs/governance/integrations.md`](docs/governance/integrations.md) |
175
+ | ops / deploy 完整规则 | [`docs/governance/deploy-ops.md`](docs/governance/deploy-ops.md) |
176
+ | tools / scripts 完整规则 | [`docs/governance/tools-scripts.md`](docs/governance/tools-scripts.md) |
177
+ | 完整 checklist | [`docs/governance/checklists.md`](docs/governance/checklists.md) |
178
+ | 治理细则索引 | [`docs/governance/README.md`](docs/governance/README.md) |
179
+
180
+ ## 9. 检查清单(入口)
181
+
182
+ 完整可勾选清单 → [`docs/governance/checklists.md`](docs/governance/checklists.md)
183
+
184
+ 每个 PR 高频核对项:
185
+
186
+ - **开发前**:契约 / 字典 / 错误码 / 状态机 / 事件 / 设计文档已就位;环境变量已同步
187
+ - **提交前**:CHANGELOG / docs/README.md(如需)/ PII / AI 标签 / 测试 / governance 摘要同步
188
+ - **发布前**:deploy values / pipeline CHANGELOG / 回滚 / 监控 / 密钥 / SBOM
189
+ - **多应用模式**:apps/ 不与裸文件并存 / pair 命名 / 跨应用引用走契约
190
+ - **新增脚本 / 工具**:归属判定 / 顶部注释 / 跨平台 / 索引
191
+
192
+ ---
193
+
194
+ *Created by AI on <%= it.generatedAt.slice(0, 10) %>.*
@@ -0,0 +1,16 @@
1
+ # <%= it.options.projectName %>
2
+
3
+ Created by AI on <%= it.generatedAt.slice(0, 10) %>.
4
+
5
+ ## Quick start
6
+
7
+ See `AGENTS.md` for the full working agreement.
8
+
9
+ <% if (it.options.backend !== 'none') { %>- Backend lives in `server/` (<%= it.options.backend %>).
10
+ <% } %><% if (it.options.frontend !== 'none') { %>- Frontend lives in `web/` (<%= it.options.frontend %>).
11
+ <% } %>- Contracts live in `contracts/`.
12
+ - Documentation lives in `docs/`.
13
+
14
+ ## License
15
+
16
+ <%= it.options.license === 'proprietary' ? 'Proprietary — all rights reserved.' : 'See the LICENSE file.' %>
@@ -0,0 +1,20 @@
1
+ name: root-files
2
+ version: 1.0.0
3
+ appliesWhen: {}
4
+ priority: 90
5
+ files:
6
+ - from: files/AGENTS.md
7
+ to: AGENTS.md
8
+ render: true
9
+ - from: files/README.md
10
+ to: README.md
11
+ render: true
12
+ - from: files/.gitignore
13
+ to: .gitignore
14
+ render: false
15
+ - from: files/.gitattributes
16
+ to: .gitattributes
17
+ render: true
18
+ - from: files/.editorconfig
19
+ to: .editorconfig
20
+ render: false
@@ -0,0 +1,3 @@
1
+ # server/
2
+
3
+ Go backend for **<%= it.options.projectName %>**. Contract-first.
@@ -0,0 +1,3 @@
1
+ module <%= it.options.projectName %>/server
2
+
3
+ go 1.22
@@ -0,0 +1,7 @@
1
+ package main
2
+
3
+ import "fmt"
4
+
5
+ func main() {
6
+ fmt.Println("server placeholder")
7
+ }
@@ -0,0 +1,18 @@
1
+ name: server-go
2
+ version: 1.0.0
3
+ appliesWhen:
4
+ backend: go
5
+ priority: 30
6
+ files:
7
+ - from: files/README.md
8
+ to: server/README.md
9
+ render: true
10
+ - from: files/go.mod
11
+ to: server/go.mod
12
+ render: true
13
+ - from: files/main.go
14
+ to: server/cmd/server/main.go
15
+ render: false
16
+ - from: files/generated-gitkeep
17
+ to: server/generated/.gitkeep
18
+ render: false
@@ -0,0 +1,12 @@
1
+ package com.example.app;
2
+
3
+ import org.springframework.boot.SpringApplication;
4
+ import org.springframework.boot.autoconfigure.SpringBootApplication;
5
+
6
+ @SpringBootApplication
7
+ public class Application {
8
+
9
+ public static void main(String[] args) {
10
+ SpringApplication.run(Application.class, args);
11
+ }
12
+ }
@@ -0,0 +1,48 @@
1
+ # <%= it.options.projectName %>-server
2
+
3
+ Backend scaffold (Spring Boot 3.3 + JDK 21 + JPA + Spring Security + JWT + MySQL).
4
+
5
+ ## Stack
6
+
7
+ - Spring Boot 3.3.4
8
+ - JDK 21
9
+ - Spring Data JPA + Hibernate
10
+ - Spring Security + JJWT 0.12(无状态认证)
11
+ - MySQL 8 (default; tests use H2 with MySQL mode)
12
+ - Jackson, Validation, Actuator
13
+
14
+ ## Configuration
15
+
16
+ | 属性 | 默认 | 环境变量 |
17
+ |------|------|---------|
18
+ | 数据库 URL | `jdbc:mysql://localhost:3306/<%= it.options.projectName %>?createDatabaseIfNotExist=true...` | `SPRING_DATASOURCE_URL` |
19
+ | DB 用户 | `root` | `SPRING_DATASOURCE_USERNAME` |
20
+ | DB 密码 | (空) | `SPRING_DATASOURCE_PASSWORD` |
21
+ | JWT secret | development-only placeholder | `JWT_SECRET`(生产必改)|
22
+ | JWT 有效期 | 120 分钟 | `app.jwt.expiration-minutes` |
23
+
24
+ > 默认 `spring.jpa.hibernate.ddl-auto=update`。生产环境改为 `validate` 并用 Flyway/Liquibase 管理 schema。
25
+
26
+ ## Profiles
27
+
28
+ - 默认(无 profile):MySQL,详见 `application.yaml`
29
+ - `test`:H2 内存数据库 + MySQL 兼容模式,见 `application-test.yaml`
30
+
31
+ ## Development
32
+
33
+ ```bash
34
+ # 假设 JDK 21 在 D:\work\wn\soft\java21
35
+ $env:JAVA_HOME = 'D:\work\wn\soft\java21'
36
+ $env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
37
+
38
+ mvn spring-boot:run
39
+ mvn test
40
+ mvn package
41
+ ```
42
+
43
+ ## Conventions
44
+
45
+ - 包结构:`com.example.app.<feature>` 一个包一个模块
46
+ - JPA 实体:`<feature>/entity/`;Repo:`<feature>/repository/`;Service:`<feature>/service/`;Controller:`<feature>/web/`
47
+ - 契约消费:所有 DTO 字段名与 `contracts/openapi/api.yaml` 对齐;类型由 `contracts/dictionaries/` 派生
48
+ - 错误处理:抛 `BusinessException`,`@ControllerAdvice` 翻译为 `contracts/errors/error-codes.yaml` 中的标准错误结构
@@ -0,0 +1,17 @@
1
+ spring:
2
+ datasource:
3
+ url: jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1
4
+ driver-class-name: org.h2.Driver
5
+ username: sa
6
+ password: ''
7
+ jpa:
8
+ hibernate:
9
+ ddl-auto: create-drop
10
+ properties:
11
+ hibernate:
12
+ dialect: org.hibernate.dialect.H2Dialect
13
+
14
+ app:
15
+ jwt:
16
+ secret: test-secret-for-unit-tests-only-min-32-characters-please
17
+ expiration-minutes: 60
@@ -0,0 +1,33 @@
1
+ spring:
2
+ application:
3
+ name: <%= it.options.projectName %>-server
4
+ datasource:
5
+ # 默认指向本地 MySQL;生产环境通过 SPRING_DATASOURCE_URL 等环境变量覆盖
6
+ url: ${SPRING_DATASOURCE_URL:jdbc:mysql://localhost:3306/<%= it.options.projectName %>?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useUnicode=true}
7
+ username: ${SPRING_DATASOURCE_USERNAME:root}
8
+ password: ${SPRING_DATASOURCE_PASSWORD:}
9
+ driver-class-name: com.mysql.cj.jdbc.Driver
10
+ jpa:
11
+ hibernate:
12
+ ddl-auto: update
13
+ properties:
14
+ hibernate:
15
+ dialect: org.hibernate.dialect.MySQLDialect
16
+ format_sql: true
17
+ show-sql: false
18
+ open-in-view: false
19
+
20
+ server:
21
+ port: 8080
22
+
23
+ management:
24
+ endpoints:
25
+ web:
26
+ exposure:
27
+ include: health,info
28
+
29
+ # JWT 配置:生产环境通过环境变量覆盖 secret
30
+ app:
31
+ jwt:
32
+ secret: ${JWT_SECRET:change-me-please-this-is-a-development-secret-only-min-32-chars}
33
+ expiration-minutes: 120
@@ -0,0 +1,97 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
5
+ https://maven.apache.org/xsd/maven-4.0.0.xsd">
6
+ <modelVersion>4.0.0</modelVersion>
7
+
8
+ <parent>
9
+ <groupId>org.springframework.boot</groupId>
10
+ <artifactId>spring-boot-starter-parent</artifactId>
11
+ <version>3.3.4</version>
12
+ <relativePath/>
13
+ </parent>
14
+
15
+ <groupId>com.example</groupId>
16
+ <artifactId><%= it.options.projectName %>-server</artifactId>
17
+ <version>0.1.0</version>
18
+ <packaging>jar</packaging>
19
+ <name><%= it.options.projectName %>-server</name>
20
+
21
+ <properties>
22
+ <java.version>21</java.version>
23
+ <maven.compiler.source>21</maven.compiler.source>
24
+ <maven.compiler.target>21</maven.compiler.target>
25
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
26
+ <jjwt.version>0.12.6</jjwt.version>
27
+ </properties>
28
+
29
+ <dependencies>
30
+ <dependency>
31
+ <groupId>org.springframework.boot</groupId>
32
+ <artifactId>spring-boot-starter-web</artifactId>
33
+ </dependency>
34
+ <dependency>
35
+ <groupId>org.springframework.boot</groupId>
36
+ <artifactId>spring-boot-starter-validation</artifactId>
37
+ </dependency>
38
+ <dependency>
39
+ <groupId>org.springframework.boot</groupId>
40
+ <artifactId>spring-boot-starter-actuator</artifactId>
41
+ </dependency>
42
+ <dependency>
43
+ <groupId>org.springframework.boot</groupId>
44
+ <artifactId>spring-boot-starter-data-jpa</artifactId>
45
+ </dependency>
46
+ <dependency>
47
+ <groupId>org.springframework.boot</groupId>
48
+ <artifactId>spring-boot-starter-security</artifactId>
49
+ </dependency>
50
+ <dependency>
51
+ <groupId>com.mysql</groupId>
52
+ <artifactId>mysql-connector-j</artifactId>
53
+ <scope>runtime</scope>
54
+ </dependency>
55
+ <dependency>
56
+ <groupId>io.jsonwebtoken</groupId>
57
+ <artifactId>jjwt-api</artifactId>
58
+ <version>${jjwt.version}</version>
59
+ </dependency>
60
+ <dependency>
61
+ <groupId>io.jsonwebtoken</groupId>
62
+ <artifactId>jjwt-impl</artifactId>
63
+ <version>${jjwt.version}</version>
64
+ <scope>runtime</scope>
65
+ </dependency>
66
+ <dependency>
67
+ <groupId>io.jsonwebtoken</groupId>
68
+ <artifactId>jjwt-jackson</artifactId>
69
+ <version>${jjwt.version}</version>
70
+ <scope>runtime</scope>
71
+ </dependency>
72
+ <dependency>
73
+ <groupId>org.springframework.boot</groupId>
74
+ <artifactId>spring-boot-starter-test</artifactId>
75
+ <scope>test</scope>
76
+ </dependency>
77
+ <dependency>
78
+ <groupId>org.springframework.security</groupId>
79
+ <artifactId>spring-security-test</artifactId>
80
+ <scope>test</scope>
81
+ </dependency>
82
+ <dependency>
83
+ <groupId>com.h2database</groupId>
84
+ <artifactId>h2</artifactId>
85
+ <scope>test</scope>
86
+ </dependency>
87
+ </dependencies>
88
+
89
+ <build>
90
+ <plugins>
91
+ <plugin>
92
+ <groupId>org.springframework.boot</groupId>
93
+ <artifactId>spring-boot-maven-plugin</artifactId>
94
+ </plugin>
95
+ </plugins>
96
+ </build>
97
+ </project>
@@ -0,0 +1,24 @@
1
+ name: server-java
2
+ version: 1.1.0
3
+ appliesWhen:
4
+ backend: java
5
+ priority: 30
6
+ files:
7
+ - from: files/README.md
8
+ to: server/README.md
9
+ render: true
10
+ - from: files/pom.xml
11
+ to: server/pom.xml
12
+ render: true
13
+ - from: files/Application.java
14
+ to: server/src/main/java/com/example/app/Application.java
15
+ render: false
16
+ - from: files/application.yaml
17
+ to: server/src/main/resources/application.yaml
18
+ render: true
19
+ - from: files/application-test.yaml
20
+ to: server/src/test/resources/application-test.yaml
21
+ render: false
22
+ - from: files/generated-gitkeep
23
+ to: server/generated/.gitkeep
24
+ render: false