@scemoon/cdh 1.0.4 → 1.0.6

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 (269) hide show
  1. package/ai-dlc-skill/SKILL.md +4 -2
  2. package/ai-dlc-skill/agents/master.md +6 -0
  3. package/ai-dlc-skill/agents/plan-agent.md +2 -2
  4. package/ai-dlc-skill/agents/understand-agent.md +4 -4
  5. package/ai-dlc-skill/agents/verify-agent.md +1 -1
  6. package/ai-dlc-skill/architecture/project-structure.md +10 -10
  7. package/ai-dlc-skill/brownfield/README.md +2 -2
  8. package/ai-dlc-skill/brownfield/generate-context.sh +3 -3
  9. package/ai-dlc-skill/brownfield/scripts/extract-api.sh +5 -5
  10. package/ai-dlc-skill/components/backend.md +1 -1
  11. package/ai-dlc-skill/components/web.md +2 -2
  12. package/ai-dlc-skill/contracts/README.md +3 -3
  13. package/ai-dlc-skill/cross-tool/cline/export.sh +1 -1
  14. package/ai-dlc-skill/cross-tool/copilot/export.sh +1 -1
  15. package/ai-dlc-skill/cross-tool/onecode/export-skills.sh +7 -3
  16. package/ai-dlc-skill/cross-tool/onecode/export.sh +14 -8
  17. package/ai-dlc-skill/phases/deliver/lifecycle.md +6 -6
  18. package/ai-dlc-skill/phases/deliver/prompt.md +2 -2
  19. package/ai-dlc-skill/phases/deliver/rules.md +1 -1
  20. package/ai-dlc-skill/phases/plan/lifecycle.md +11 -11
  21. package/ai-dlc-skill/phases/plan/prompt.md +6 -6
  22. package/ai-dlc-skill/phases/plan/rules.md +1 -1
  23. package/ai-dlc-skill/phases/understand/entry.md +1 -1
  24. package/ai-dlc-skill/phases/understand/lifecycle.md +7 -7
  25. package/ai-dlc-skill/phases/understand/prompt.md +8 -8
  26. package/ai-dlc-skill/phases/understand/rules.md +5 -5
  27. package/ai-dlc-skill/phases/verify/lifecycle.md +24 -24
  28. package/ai-dlc-skill/phases/verify/prompt.md +8 -8
  29. package/ai-dlc-skill/phases/verify/rules.md +9 -9
  30. package/ai-dlc-skill/providers/README.md +2 -2
  31. package/ai-dlc-skill/providers/aliyun/preview.yaml +2 -2
  32. package/ai-dlc-skill/providers/tcb/preview.yaml +2 -2
  33. package/ai-dlc-skill/requirements.md +7 -7
  34. package/ai-dlc-skill/skill.yaml +4 -4
  35. package/ai-dlc-skill/templates/integration/CHANGELOG.md +2 -2
  36. package/ai-dlc-skill/templates/integration/contract-diff.md +7 -7
  37. package/ai-dlc-skill/templates/integration/contract-spec.md +7 -7
  38. package/ai-dlc-skill/templates/integration/runtime-contract.yaml +1 -1
  39. package/ai-dlc-skill/templates/project/README.md +18 -19
  40. package/ai-dlc-skill/templates/project/template.md +21 -21
  41. package/ai-dlc-skill/walkthrough/collect.sh +1 -1
  42. package/ai-dlc-skill/walkthrough/template.md +2 -2
  43. package/ai-dlc-skill/workflows/ai-dlc.yaml +12 -12
  44. package/ai-dlc-skill/workflows/deployment.yaml +4 -4
  45. package/cdh/__pycache__/cdh_mcp_injector.cpython-314.pyc +0 -0
  46. package/cdh/__pycache__/cdh_mcp_loader.cpython-314.pyc +0 -0
  47. package/cdh/__pycache__/cdh_mcp_manager.cpython-314.pyc +0 -0
  48. package/cdh/__pycache__/cdh_session_aggregator.cpython-314.pyc +0 -0
  49. package/cdh/__pycache__/cdh_skill_loader.cpython-314.pyc +0 -0
  50. package/cdh/__pycache__/cdh_skill_manager.cpython-314.pyc +0 -0
  51. package/cdh/__pycache__/cli.cpython-313.pyc +0 -0
  52. package/cdh/__pycache__/cli.cpython-314.pyc +0 -0
  53. package/cdh/__pycache__/scaffold.cpython-314.pyc +0 -0
  54. package/cdh/cdh_mcp_injector.py +115 -0
  55. package/cdh/cdh_mcp_loader.py +67 -0
  56. package/cdh/cdh_mcp_manager.py +73 -0
  57. package/cdh/cdh_session_aggregator.py +258 -0
  58. package/cdh/cdh_skill_manager.py +105 -0
  59. package/cdh/cli.py +64 -4
  60. package/cdh/scaffold.py +192 -41
  61. package/onecode/__init__.py +1 -1
  62. package/onecode/__pycache__/cli.cpython-314.pyc +0 -0
  63. package/onecode/__pycache__/commands.cpython-314.pyc +0 -0
  64. package/onecode/__pycache__/config.cpython-314.pyc +0 -0
  65. package/onecode/__pycache__/config_screen.cpython-314.pyc +0 -0
  66. package/onecode/__pycache__/migrate.cpython-314.pyc +0 -0
  67. package/onecode/agent/__pycache__/cdh_loader.cpython-314.pyc +0 -0
  68. package/onecode/agent/__pycache__/context.cpython-314.pyc +0 -0
  69. package/onecode/agent/__pycache__/engine.cpython-314.pyc +0 -0
  70. package/onecode/agent/__pycache__/hooks.cpython-314.pyc +0 -0
  71. package/onecode/agent/__pycache__/onecode_agent_acp.cpython-314.pyc +0 -0
  72. package/onecode/agent/__pycache__/permissions.cpython-314.pyc +0 -0
  73. package/onecode/agent/__pycache__/project_doc.cpython-314.pyc +0 -0
  74. package/onecode/agent/__pycache__/session.cpython-314.pyc +0 -0
  75. package/onecode/agent/agents/__pycache__/types.cpython-314.pyc +0 -0
  76. package/onecode/agent/agents/types.py +47 -164
  77. package/onecode/agent/attachments.py +0 -1
  78. package/onecode/agent/cdh_loader.py +17 -25
  79. package/onecode/agent/context.py +8 -3
  80. package/onecode/agent/engine.py +835 -220
  81. package/onecode/agent/hooks.py +1 -1
  82. package/onecode/agent/onecode_agent_acp.py +460 -47
  83. package/onecode/agent/onecode_agent_acp.py.bak +2447 -0
  84. package/onecode/agent/permissions.py +0 -1
  85. package/onecode/agent/project_doc.py +19 -0
  86. package/onecode/agent/session.py +17 -3
  87. package/onecode/agent/snapshot.py +3 -4
  88. package/onecode/agent/tools/__pycache__/agent_tools.cpython-314.pyc +0 -0
  89. package/onecode/agent/tools/__pycache__/apply_patch_tool.cpython-314.pyc +0 -0
  90. package/onecode/agent/tools/__pycache__/bash_tool.cpython-314.pyc +0 -0
  91. package/onecode/agent/tools/__pycache__/communication_tools.cpython-314.pyc +0 -0
  92. package/onecode/agent/tools/__pycache__/config_tool.cpython-314.pyc +0 -0
  93. package/onecode/agent/tools/__pycache__/cron_tools.cpython-314.pyc +0 -0
  94. package/onecode/agent/tools/__pycache__/file_ops.cpython-314.pyc +0 -0
  95. package/onecode/agent/tools/__pycache__/file_tools.cpython-314.pyc +0 -0
  96. package/onecode/agent/tools/__pycache__/git_tools.cpython-314.pyc +0 -0
  97. package/onecode/agent/tools/__pycache__/lsp_tools.cpython-314.pyc +0 -0
  98. package/onecode/agent/tools/__pycache__/mcp_tools.cpython-314.pyc +0 -0
  99. package/onecode/agent/tools/__pycache__/permission_handler.cpython-314.pyc +0 -0
  100. package/onecode/agent/tools/__pycache__/protocol.cpython-314.pyc +0 -0
  101. package/onecode/agent/tools/__pycache__/registry.cpython-314.pyc +0 -0
  102. package/onecode/agent/tools/__pycache__/sandbox.cpython-314.pyc +0 -0
  103. package/onecode/agent/tools/__pycache__/skill_tools.cpython-314.pyc +0 -0
  104. package/onecode/agent/tools/__pycache__/todo_tools.cpython-314.pyc +0 -0
  105. package/onecode/agent/tools/__pycache__/web_tools.cpython-314.pyc +0 -0
  106. package/onecode/agent/tools/agent_tools.py +4 -6
  107. package/onecode/agent/tools/apply_patch_tool.py +2 -8
  108. package/onecode/agent/tools/bash_tool.py +32 -12
  109. package/onecode/agent/tools/communication_tools.py +4 -5
  110. package/onecode/agent/tools/config_tool.py +3 -3
  111. package/onecode/agent/tools/cron_tools.py +4 -5
  112. package/onecode/agent/tools/file_ops.py +37 -3
  113. package/onecode/agent/tools/file_tools.py +10 -11
  114. package/onecode/agent/tools/git_tools.py +2 -2
  115. package/onecode/agent/tools/lsp_tools.py +2 -2
  116. package/onecode/agent/tools/mcp_tools.py +3 -5
  117. package/onecode/agent/tools/permission_handler.py +1 -1
  118. package/onecode/agent/tools/protocol.py +1 -1
  119. package/onecode/agent/tools/registry.py +69 -2
  120. package/onecode/agent/tools/sandbox.py +110 -16
  121. package/onecode/agent/tools/skill_tools.py +2 -2
  122. package/onecode/agent/tools/todo_tools.py +38 -19
  123. package/onecode/agent/tools/web_tools.py +6 -7
  124. package/onecode/builtin_skills/agent-browser/SKILL.md +212 -0
  125. package/onecode/builtin_skills/agent-browser/skill.yaml +8 -0
  126. package/onecode/builtin_skills/skill-creator/SKILL.md +106 -0
  127. package/onecode/builtin_skills/skill-creator/skill.yaml +8 -0
  128. package/onecode/cli.py +186 -6
  129. package/onecode/codebase/__pycache__/chunker.cpython-314.pyc +0 -0
  130. package/onecode/codebase/__pycache__/indexer.cpython-314.pyc +0 -0
  131. package/onecode/codebase/__pycache__/retriever.cpython-314.pyc +0 -0
  132. package/onecode/codebase/__pycache__/storage.cpython-314.pyc +0 -0
  133. package/onecode/codebase/chunker.py +0 -5
  134. package/onecode/codebase/indexer.py +14 -1
  135. package/onecode/codebase/retriever.py +13 -2
  136. package/onecode/codebase/storage.py +5 -4
  137. package/onecode/commands.py +81 -6
  138. package/onecode/config.py +41 -12
  139. package/onecode/config_screen.py +7 -3
  140. package/onecode/mcp/__pycache__/manager.cpython-314.pyc +0 -0
  141. package/onecode/mcp/manager.py +2 -3
  142. package/onecode/memory/__init__.py +7 -53
  143. package/onecode/memory/__pycache__/__init__.cpython-314.pyc +0 -0
  144. package/onecode/memory/__pycache__/backend.cpython-314.pyc +0 -0
  145. package/onecode/memory/__pycache__/offload.cpython-314.pyc +0 -0
  146. package/onecode/memory/__pycache__/pyramid.cpython-314.pyc +0 -0
  147. package/onecode/memory/__pycache__/recall.cpython-314.pyc +0 -0
  148. package/onecode/memory/backend.py +13 -39
  149. package/onecode/memory/pyramid.py +2 -71
  150. package/onecode/memory/recall.py +38 -3
  151. package/onecode/migrate.py +122 -0
  152. package/onecode/models/__pycache__/messages.cpython-314.pyc +0 -0
  153. package/onecode/models/__pycache__/provider.cpython-314.pyc +0 -0
  154. package/onecode/models/messages.py +58 -0
  155. package/onecode/models/provider.py +20 -2
  156. package/onecode/models/providers/__pycache__/anthropic_provider.cpython-314.pyc +0 -0
  157. package/onecode/models/providers/__pycache__/glm_provider.cpython-314.pyc +0 -0
  158. package/onecode/models/providers/__pycache__/minimax_provider.cpython-314.pyc +0 -0
  159. package/onecode/models/providers/__pycache__/minimaxi_provider.cpython-314.pyc +0 -0
  160. package/onecode/models/providers/__pycache__/ollama_provider.cpython-314.pyc +0 -0
  161. package/onecode/models/providers/anthropic_provider.py +59 -12
  162. package/onecode/models/providers/glm_provider.py +40 -0
  163. package/onecode/models/providers/minimax_provider.py +3 -0
  164. package/onecode/models/providers/minimaxi_provider.py +3 -0
  165. package/onecode/models/providers/ollama_provider.py +3 -0
  166. package/onecode/server/app.py +1 -1
  167. package/onecode/skills/__pycache__/argument_substitution.cpython-314.pyc +0 -0
  168. package/onecode/skills/__pycache__/bootstrap.cpython-314.pyc +0 -0
  169. package/onecode/skills/__pycache__/loader.cpython-314.pyc +0 -0
  170. package/onecode/skills/__pycache__/manager.cpython-314.pyc +0 -0
  171. package/onecode/skills/argument_substitution.py +0 -1
  172. package/onecode/skills/bootstrap.py +124 -0
  173. package/onecode/skills/loader.py +35 -53
  174. package/onecode/skills/manager.py +2 -2
  175. package/onecode/storage/activity.py +3 -4
  176. package/onecode/storage/session.py +3 -4
  177. package/onecode/tasks/manager.py +23 -10
  178. package/onecode/trace/tracer.py +2 -3
  179. package/package.json +1 -1
  180. package/pyproject.toml +5 -1
  181. package/run.js +68 -14
  182. package/tui/__pycache__/about.cpython-314.pyc +0 -0
  183. package/tui/__pycache__/app.cpython-313.pyc +0 -0
  184. package/tui/__pycache__/app.cpython-314.pyc +0 -0
  185. package/tui/__pycache__/danger.cpython-314.pyc +0 -0
  186. package/tui/__pycache__/directory_suggester.cpython-314.pyc +0 -0
  187. package/tui/__pycache__/messages.cpython-314.pyc +0 -0
  188. package/tui/__pycache__/path_complete.cpython-314.pyc +0 -0
  189. package/tui/__pycache__/paths.cpython-314.pyc +0 -0
  190. package/tui/__pycache__/session_tracker.cpython-314.pyc +0 -0
  191. package/tui/__pycache__/settings_schema.cpython-314.pyc +0 -0
  192. package/tui/acp/__pycache__/agent.cpython-314.pyc +0 -0
  193. package/tui/acp/__pycache__/api.cpython-314.pyc +0 -0
  194. package/tui/acp/__pycache__/messages.cpython-314.pyc +0 -0
  195. package/tui/acp/__pycache__/prompt.cpython-314.pyc +0 -0
  196. package/tui/acp/__pycache__/protocol.cpython-314.pyc +0 -0
  197. package/tui/acp/agent.py +125 -58
  198. package/tui/acp/api.py +12 -0
  199. package/tui/acp/messages.py +3 -1
  200. package/tui/acp/prompt.py +0 -57
  201. package/tui/acp/protocol.py +6 -0
  202. package/tui/app.py +11 -33
  203. package/tui/messages.py +2 -0
  204. package/tui/path_complete.py +1 -1
  205. package/tui/paths.py +16 -0
  206. package/tui/screens/__pycache__/agent_modal.cpython-314.pyc +0 -0
  207. package/tui/screens/__pycache__/component_picker.cpython-314.pyc +0 -0
  208. package/tui/screens/__pycache__/diff_screen.cpython-314.pyc +0 -0
  209. package/tui/screens/__pycache__/log.cpython-314.pyc +0 -0
  210. package/tui/screens/__pycache__/main.cpython-313.pyc +0 -0
  211. package/tui/screens/__pycache__/main.cpython-314.pyc +0 -0
  212. package/tui/screens/__pycache__/permissions.cpython-314.pyc +0 -0
  213. package/tui/screens/__pycache__/projects_app.cpython-314.pyc +0 -0
  214. package/tui/screens/__pycache__/projects_screen.cpython-314.pyc +0 -0
  215. package/tui/screens/__pycache__/sessions.cpython-314.pyc +0 -0
  216. package/tui/screens/__pycache__/store.cpython-314.pyc +0 -0
  217. package/tui/screens/__pycache__/tool_content_screen.cpython-314.pyc +0 -0
  218. package/tui/screens/component_picker.py +35 -15
  219. package/tui/screens/diff_screen.py +84 -0
  220. package/tui/screens/log.py +25 -25
  221. package/tui/screens/main.py +48 -26
  222. package/tui/screens/projects.tcss +5 -1
  223. package/tui/screens/projects_app.py +6 -6
  224. package/tui/screens/projects_screen.py +19 -39
  225. package/tui/screens/sessions.py +3 -5
  226. package/tui/session_tracker.py +3 -0
  227. package/tui/settings_schema.py +1 -1
  228. package/tui/visuals/__pycache__/columns.cpython-314.pyc +0 -0
  229. package/tui/visuals/columns.py +1 -2
  230. package/tui/widgets/__pycache__/acp_content.cpython-314.pyc +0 -0
  231. package/tui/widgets/__pycache__/agent_response.cpython-314.pyc +0 -0
  232. package/tui/widgets/__pycache__/agent_thought.cpython-314.pyc +0 -0
  233. package/tui/widgets/__pycache__/conversation.cpython-314.pyc +0 -0
  234. package/tui/widgets/__pycache__/diff_view.cpython-314.pyc +0 -0
  235. package/tui/widgets/__pycache__/directory_input.cpython-314.pyc +0 -0
  236. package/tui/widgets/__pycache__/future_text.cpython-314.pyc +0 -0
  237. package/tui/widgets/__pycache__/grid_select.cpython-314.pyc +0 -0
  238. package/tui/widgets/__pycache__/load_more.cpython-314.pyc +0 -0
  239. package/tui/widgets/__pycache__/mandelbrot.cpython-314.pyc +0 -0
  240. package/tui/widgets/__pycache__/markdown_note.cpython-314.pyc +0 -0
  241. package/tui/widgets/__pycache__/modified_files.cpython-314.pyc +0 -0
  242. package/tui/widgets/__pycache__/plan.cpython-314.pyc +0 -0
  243. package/tui/widgets/__pycache__/project_grid_select.cpython-314.pyc +0 -0
  244. package/tui/widgets/__pycache__/project_summary.cpython-314.pyc +0 -0
  245. package/tui/widgets/__pycache__/session_grid_select.cpython-314.pyc +0 -0
  246. package/tui/widgets/__pycache__/session_summary.cpython-314.pyc +0 -0
  247. package/tui/widgets/__pycache__/shell_result.cpython-314.pyc +0 -0
  248. package/tui/widgets/__pycache__/side_bar.cpython-314.pyc +0 -0
  249. package/tui/widgets/__pycache__/subagent.cpython-314.pyc +0 -0
  250. package/tui/widgets/__pycache__/subagent_screen.cpython-314.pyc +0 -0
  251. package/tui/widgets/__pycache__/terminal.cpython-314.pyc +0 -0
  252. package/tui/widgets/__pycache__/tool_call.cpython-314.pyc +0 -0
  253. package/tui/widgets/agent_response.py +0 -1
  254. package/tui/widgets/agent_thought.py +0 -1
  255. package/tui/widgets/conversation.py +157 -14
  256. package/tui/widgets/diff_view.py +10 -0
  257. package/tui/widgets/load_more.py +24 -0
  258. package/tui/widgets/modified_files.py +86 -12
  259. package/tui/widgets/plan.py +1 -1
  260. package/tui/widgets/project_grid_select.py +9 -2
  261. package/tui/widgets/session_grid_select.py +6 -0
  262. package/tui/widgets/side_bar.py +10 -0
  263. package/tui/widgets/subagent.py +92 -58
  264. package/tui/widgets/subagent_screen.py +638 -115
  265. package/tui/widgets/terminal.py +1 -2
  266. package/tui/widgets/terminal_tool.py +11 -2
  267. package/tui/widgets/tool_call.py +35 -2
  268. package/onecode/memory/offload.py +0 -114
  269. package/onecode/memory/symbolic.py +0 -164
@@ -24,13 +24,13 @@ For each unit in DAG order (within each affected component):
24
24
 
25
25
 
26
26
  After per-component units: regenerate shared types + contract tests
27
- tools/generate_shared.py
28
- pytest tests/contract/
29
- tools/contract_diff.py
27
+ aidlc/tools/generate_shared.py
28
+ pytest aidlc/tests/contract/
29
+ aidlc/tools/contract_diff.py
30
30
 
31
31
 
32
32
  After contracts: cross-stack e2e against unified preview
33
- pytest tests/cross-stack/
33
+ pytest aidlc/tests/cross-stack/
34
34
 
35
35
 
36
36
  Gate: All layers green + contracts compatible + cross-stack pass
@@ -43,8 +43,8 @@ Gate: All layers green + contracts compatible + cross-stack pass
43
43
  | `unit` | Per function / module | `apps/{comp}/tests/unit/` | Local |
44
44
  | `integration` | Component + its DB / internal API | `apps/{comp}/tests/integration/` | Local container |
45
45
  | `e2e` | Whole component against preview | `apps/{comp}/tests/e2e/` | Component preview URL |
46
- | `cross-stack` | Full multi-client ↔ backend flow | `tests/cross-stack/` | Unified stack preview URL |
47
- | `contract` | Contract shape + backward compat | `tests/contract/` | Generated `packages/shared/` |
46
+ | `cross-stack` | Full multi-client ↔ backend flow | `aidlc/tests/cross-stack/` | Unified stack preview URL |
47
+ | `contract` | Contract shape + backward compat | `aidlc/tests/contract/` | Generated `aidlc/packages/shared/` |
48
48
 
49
49
  ## TDD — Red
50
50
 
@@ -94,30 +94,30 @@ After per-component units pass and before cross-stack e2e:
94
94
 
95
95
  ```bash
96
96
  # 1. Regenerate shared types from contracts
97
- tools/generate_shared.py
98
- # → packages/shared/{api,events} updated
97
+ aidlc/tools/generate_shared.py
98
+ # → aidlc/packages/shared/{api,events} updated
99
99
 
100
100
  # 2. Run contract tests
101
- pytest tests/contract/ --verbose
101
+ pytest aidlc/tests/contract/ --verbose
102
102
  # → All contract scenarios pass (uses packages/shared)
103
103
 
104
104
  # 3. Run contract compat check
105
- tools/contract_diff.py --base main --head HEAD
105
+ aidlc/tools/contract_diff.py --base main --head HEAD
106
106
  # → exit 0 = backward-compatible
107
107
  # → exit 1 = breaking change detected, BLOCKED unless human-approved
108
108
  ```
109
109
 
110
110
  **Rule INT-001:** Contract tests must be 100% pass.
111
111
 
112
- **Rule INT-002:** Any breaking contract change (field removed, type changed, status code changed, required field added) is BLOCKED until a human approves the major version bump and a migration note is added to `contracts/CHANGELOG.md`.
112
+ **Rule INT-002:** Any breaking contract change (field removed, type changed, status code changed, required field added) is BLOCKED until a human approves the major version bump and a migration note is added to `aidlc/contracts/CHANGELOG.md`.
113
113
 
114
- **Rule INT-003:** Shared types must be generated, not hand-written. CI runs `generate_shared` and fails the build if `packages/shared/` is out of date.
114
+ **Rule INT-003:** Shared types must be generated, not hand-written. CI runs `generate_shared` and fails the build if `aidlc/packages/shared/` is out of date.
115
115
 
116
116
  ## Cross-Stack E2E (STK-001)
117
117
 
118
118
  ```bash
119
119
  export STACK_URL=$(deploy_stack --preview --output url)
120
- pytest tests/cross-stack/ --stack-url $STACK_URL --verbose
120
+ pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL --verbose
121
121
  # All cross-stack scenarios pass
122
122
  ```
123
123
 
@@ -136,7 +136,7 @@ pytest-bdd apps/mya/features/ --verbose
136
136
  pytest-bdd apps/tta/features/ --verbose
137
137
 
138
138
  # Cross-stack
139
- pytest-bdd features/cross-stack/ --verbose
139
+ pytest-bdd aidlc/features/cross-stack/ --verbose
140
140
  ```
141
141
 
142
142
  ## Quality Gates (Backpressure)
@@ -151,11 +151,11 @@ pytest apps/{component}/ --cov --cov-fail-under=80 && \
151
151
  ! grep -rn "TODO\|FIXME\|HACK\|XXX" apps/{component}/src/
152
152
 
153
153
  # Cross-component
154
- pytest tests/contract/ && \
155
- tools/contract_diff.py --base main --head HEAD
154
+ pytest aidlc/tests/contract/ && \
155
+ aidlc/tools/contract_diff.py --base main --head HEAD
156
156
 
157
157
  # Stack
158
- pytest tests/cross-stack/ --stack-url $STACK_URL
158
+ pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
159
159
  ```
160
160
 
161
161
  | Gate | Threshold | Rule | Scope |
@@ -176,17 +176,17 @@ pytest tests/cross-stack/ --stack-url $STACK_URL
176
176
  | TDD tests (unit/integration) | `apps/{comp}/tests/{unit,integration}/test_{feature}.py` |
177
177
  | TDD tests (e2e) | `apps/{comp}/tests/e2e/test_{feature}.py` |
178
178
  | BDD step defs (component) | `apps/{comp}/features/steps/test_{feature}_steps.py` |
179
- | BDD step defs (cross-stack) | `features/cross-stack/steps/test_{feature}_steps.py` |
179
+ | BDD step defs (cross-stack) | `aidlc/features/cross-stack/steps/test_{feature}_steps.py` |
180
180
  | Implementation | `apps/{comp}/src/{module}/{feature}.py` |
181
- | Contract tests | `tests/contract/test_{contract}.py` |
182
- | Cross-stack e2e | `tests/cross-stack/test_{flow}.py` |
183
- | Contract diff | `openspec/changes/{id}/contract-diff.md` (filled) |
181
+ | Contract tests | `aidlc/tests/contract/test_{contract}.py` |
182
+ | Cross-stack e2e | `aidlc/tests/cross-stack/test_{flow}.py` |
183
+ | Contract diff | `aidlc/openspec/changes/{id}/contract-diff.md` (filled) |
184
184
 
185
185
  ## Gate
186
186
 
187
187
  **Before advancing to Deliver phase:**
188
188
  - [ ] Per-component: All BDD scenarios pass (100%), coverage ≥80%, 0 vulns, no TODO
189
- - [ ] Contracts: `tools/contract_diff.py` exits 0; `tests/contract/` 100% pass; `packages/shared/` regenerated and in sync
190
- - [ ] Cross-stack: `tests/cross-stack/` 100% pass against stack preview
191
- - [ ] `openspec/changes/{id}/contract-diff.md` is filled and reviewed
189
+ - [ ] Contracts: `aidlc/tools/contract_diff.py` exits 0; `aidlc/tests/contract/` 100% pass; `aidlc/packages/shared/` regenerated and in sync
190
+ - [ ] Cross-stack: `aidlc/tests/cross-stack/` 100% pass against stack preview
191
+ - [ ] `aidlc/openspec/changes/{id}/contract-diff.md` is filled and reviewed
192
192
  - [ ] All existing tests still pass
@@ -4,7 +4,7 @@
4
4
  由 Master Agent 委派处理测试验证。
5
5
 
6
6
  ## 输入
7
- - `openspec/changes/{id}/design.md` 和 `task-list.md`
7
+ - `aidlc/openspec/changes/{id}/design.md` 和 `task-list.md`
8
8
  - BDD feature 文件
9
9
 
10
10
  ## 任务
@@ -17,12 +17,12 @@
17
17
  - 测试按 layer 分类:unit / integration / e2e
18
18
 
19
19
  2. **Contract Verification**
20
- - 重新生成 `packages/shared/` 类型
21
- - 运行 `pytest tests/contract/`
22
- - 运行 `tools/contract_diff.py`
20
+ - 重新生成 `aidlc/packages/shared/` 类型
21
+ - 运行 `pytest aidlc/tests/contract/`
22
+ - 运行 `aidlc/tools/contract_diff.py`
23
23
 
24
24
  3. **Cross-Stack e2e**
25
- - 对 unified preview 运行 `tests/cross-stack/`
25
+ - 对 unified preview 运行 `aidlc/tests/cross-stack/`
26
26
 
27
27
  4. **Quality Gates**
28
28
  - coverage ≥ 80%
@@ -33,9 +33,9 @@
33
33
  - `apps/{component}/tests/{unit,integration,e2e}/test_{feature}.py`
34
34
  - `apps/{component}/features/steps/test_{feature}_steps.py`
35
35
  - `apps/{component}/src/{module}/{feature}.py`
36
- - `tests/contract/test_{contract}.py`
37
- - `tests/cross-stack/test_{flow}.py`
38
- - `openspec/changes/{id}/contract-diff.md`(填充)
36
+ - `aidlc/tests/contract/test_{contract}.py`
37
+ - `aidlc/tests/cross-stack/test_{flow}.py`
38
+ - `aidlc/openspec/changes/{id}/contract-diff.md`(填充)
39
39
 
40
40
  ## 约束
41
41
  - 遵守 `rules.md` 中的 VRF-001 到 VRF-006
@@ -33,13 +33,13 @@
33
33
  ## VRF-006: Test Layer Correctness
34
34
  **Severity:** MUST
35
35
  **Description:** Each BDD scenario MUST be tested at the layer the plan specified. Cross-stack ≠ unit.
36
- **Valid:** Cross-stack scenarios in `tests/cross-stack/` against STACK_URL.
36
+ **Valid:** Cross-stack scenarios in `aidlc/tests/cross-stack/` against STACK_URL.
37
37
  **Invalid:** Cross-stack scenario implemented as mocked unit test.
38
38
 
39
39
  ## INT-001: Contract as Source of Truth
40
40
  **Severity:** MUST
41
41
  **Description:** All cross-component APIs and events MUST be defined in `contracts/` (OpenAPI/AsyncAPI/GraphQL) and tagged with `INT-FR-*`.
42
- **Valid:** `contracts/api/auth.yaml` defines POST /auth/login; components use generated types.
42
+ **Valid:** `aidlc/contracts/api/auth.yaml` defines POST /auth/login; components use generated types.
43
43
  **Invalid:** Duplicate hand-written types across components with no contract file.
44
44
 
45
45
  ## INT-002: Backward-Compatibility by Default
@@ -50,24 +50,24 @@
50
50
 
51
51
  ## INT-003: Generated Shared Types
52
52
  **Severity:** MUST
53
- **Description:** `packages/shared/` generated from `contracts/`. Component code MUST import from shared.
54
- **Valid:** `git diff --exit-code packages/shared/` → clean after generation.
55
- **Invalid:** Hand-edited files under `packages/shared/`.
53
+ **Description:** `aidlc/packages/shared/` generated from `aidlc/contracts/`. Component code MUST import from shared.
54
+ **Valid:** `git diff --exit-code aidlc/packages/shared/` → clean after generation.
55
+ **Invalid:** Hand-edited files under `aidlc/packages/shared/`.
56
56
 
57
57
  ## INT-004: Contract Tests at INT FR Level
58
58
  **Severity:** MUST
59
- **Description:** Every `INT-FR-*` MUST have contract tests in `tests/contract/` verifying schema.
59
+ **Description:** Every `INT-FR-*` MUST have contract tests in `aidlc/tests/contract/` verifying schema.
60
60
  **Valid:** Provider-agnostic contract tests using generated shared types.
61
61
  **Invalid:** Contract tests calling real production backend.
62
62
 
63
63
  ## INT-005: Cross-Stack Feature Coverage
64
64
  **Severity:** MUST
65
- **Description:** Every `INT-FR-*` MUST have ≥3 scenarios in `features/cross-stack/` implemented in `tests/cross-stack/`.
65
+ **Description:** Every `INT-FR-*` MUST have ≥3 scenarios in `aidlc/features/cross-stack/` implemented in `aidlc/tests/cross-stack/`.
66
66
  **Valid:** Cross-stack scenarios running against unified STACK_URL.
67
67
  **Invalid:** INT-FR without cross-stack feature file.
68
68
 
69
69
  ## INT-006: Contract Diff Artifact
70
70
  **Severity:** MUST
71
- **Description:** Every contract change MUST produce `openspec/changes/{id}/contract-diff.md`.
72
- **Valid:** Generated by `tools/contract_diff.py` with added/removed/changed fields.
71
+ **Description:** Every contract change MUST produce `aidlc/openspec/changes/{id}/contract-diff.md`.
72
+ **Valid:** Generated by `aidlc/tools/contract_diff.py` with added/removed/changed fields.
73
73
  **Invalid:** Contract change merged without contract-diff.md.
@@ -82,7 +82,7 @@ cd apps/tta && BACKEND_URL=$BACKEND_URL pnpm build
82
82
  | `apps/wxa/tests/e2e/` | `BACKEND_URL` (built into app) |
83
83
  | `apps/mya/tests/e2e/` | `BACKEND_URL` (built into app) |
84
84
  | `apps/tta/tests/e2e/` | `BACKEND_URL` (built into app) |
85
- | `tests/cross-stack/` | `STACK_URL` (full flow) |
85
+ | `aidlc/tests/cross-stack/` | `STACK_URL` (full flow) |
86
86
 
87
87
  ## Dynamic Preview URL
88
88
 
@@ -102,7 +102,7 @@ export DESKTOP_URL=$(deploy_stack --preview --output desktop_url)
102
102
  pytest apps/web/tests/e2e/ --base-url $WEB_URL --api-url $BACKEND_URL
103
103
  pytest apps/native/tests/e2e/ --backend-url $BACKEND_URL
104
104
  pytest apps/desktop/tests/e2e/ --backend-url $BACKEND_URL
105
- pytest tests/cross-stack/ --stack-url $STACK_URL
105
+ pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
106
106
  ```
107
107
 
108
108
  ## Stack Rollback
@@ -17,7 +17,7 @@ git push feature branch
17
17
  → DESKTOP_DIST_URL = internal distribution URL
18
18
  → WXA_URL / MYA_URL / TTA_URL = mini-program preview QR
19
19
  → Per-component e2e: pytest apps/{comp}/tests/e2e/ --base-url $URL
20
- → Cross-stack e2e: pytest tests/cross-stack/ --stack-url $STACK_URL
20
+ → Cross-stack e2e: pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
21
21
  → TTL: 24h → auto cleanup
22
22
  ```
23
23
 
@@ -78,7 +78,7 @@ pytest apps/mya/tests/e2e/ --backend-url $BACKEND_URL
78
78
  pytest apps/tta/tests/e2e/ --backend-url $BACKEND_URL
79
79
 
80
80
  # Cross-stack e2e
81
- pytest tests/cross-stack/ --stack-url $STACK_URL
81
+ pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
82
82
 
83
83
  # Cleanup (automatic after TTL)
84
84
  ```
@@ -17,7 +17,7 @@ git push feature branch
17
17
  → DESKTOP_DIST_URL = internal distribution URL
18
18
  → WXA_URL / MYA_URL / TTA_URL = mini-program preview QR
19
19
  → Per-component e2e: pytest apps/{comp}/tests/e2e/ --base-url $URL
20
- → Cross-stack e2e: pytest tests/cross-stack/ --stack-url $STACK_URL
20
+ → Cross-stack e2e: pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
21
21
  → TTL: 24h → auto cleanup
22
22
  ```
23
23
 
@@ -77,7 +77,7 @@ pytest apps/mya/tests/e2e/ --backend-url $BACKEND_URL
77
77
  pytest apps/tta/tests/e2e/ --backend-url $BACKEND_URL
78
78
 
79
79
  # Cross-stack e2e
80
- pytest tests/cross-stack/ --stack-url $STACK_URL
80
+ pytest aidlc/tests/cross-stack/ --stack-url $STACK_URL
81
81
 
82
82
  # Cleanup (automatic after TTL)
83
83
  ```
@@ -16,10 +16,10 @@ This skill implements the AI-Driven Development Lifecycle for **monorepo multi-c
16
16
  │ │ │ │ │
17
17
  │ └──────┬───────┴─────┬─────┘ │
18
18
  │ │ │ │
19
- │ contracts/ packages/shared/ │
20
- │ (INT-FR-*) (generated types)
19
+ aidlc/contracts/ aidlc/packages/shared/ │
20
+ │ (INT-FR-*) (generated types)
21
21
  │ │
22
- │ features/ tests/ openspec/ providers/ │
22
+ aidlc/features/ tests/ aidlc/openspec/ aidlc/providers/ │
23
23
  └────────────────────────────────────────────────────────┘
24
24
  ```
25
25
 
@@ -34,7 +34,7 @@ FR namespaces:
34
34
  | `WXA-*` | `apps/wxa` | WeChat Mini Program behavior |
35
35
  | `MYA-*` | `apps/mya` | Mini Program (e.g. Alipay) behavior |
36
36
  | `TTA-*` | `apps/tta` | TikTok Mini Program behavior |
37
- | `INT-*` | `contracts/`, `packages/shared/` | Cross-component contract & integration |
37
+ | `INT-*` | `aidlc/contracts/`, `aidlc/packages/shared/` | Cross-component contract & integration |
38
38
 
39
39
  ## Functional Requirements
40
40
 
@@ -106,10 +106,10 @@ FR namespaces:
106
106
  **the system SHALL** define and verify the contract between components before integration.
107
107
 
108
108
  **Acceptance Criteria:**
109
- - All public APIs and async events are described in `contracts/` (OpenAPI/AsyncAPI) and tagged with `INT-FR-NNN`
109
+ - All public APIs and async events are described in `aidlc/contracts/` (OpenAPI/AsyncAPI) and tagged with `INT-FR-NNN`
110
110
  - Contract changes require a contract-diff review (backward-compat by default)
111
- - Shared types are generated from contracts, not hand-written, in `packages/shared/`
112
- - Contract tests run on every PR that touches `contracts/` or any consumer
111
+ - Shared types are generated from contracts, not hand-written, in `aidlc/packages/shared/`
112
+ - Contract tests run on every PR that touches `aidlc/contracts/` or any consumer
113
113
  - A breaking contract change requires a major version bump and human approval
114
114
 
115
115
  ### FR-006: Monorepo Stack Awareness
@@ -73,8 +73,8 @@ stack:
73
73
  cross_cutting:
74
74
  fr_prefix: INT
75
75
  owns:
76
- - contracts/
77
- - packages/shared/
76
+ - aidlc/contracts/
77
+ - aidlc/packages/shared/
78
78
  e2e_layers:
79
79
  - unit
80
80
  - integration
@@ -101,11 +101,11 @@ integration:
101
101
  breaking_change_gate: human-approval
102
102
  shared_types:
103
103
  generator: openapi-typescript | openapi-python
104
- output: packages/shared/
104
+ output: aidlc/packages/shared/
105
105
  publish: workspace-package
106
106
  event_contract:
107
107
  format: asyncapi | cloudevent
108
- registry: contracts/events/
108
+ registry: aidlc/contracts/events/
109
109
  version_strategy: semver-major-for-breaking
110
110
 
111
111
  deploy:
@@ -1,10 +1,10 @@
1
1
  # Contracts Changelog
2
2
 
3
- All notable changes to any contract in `contracts/` are recorded here. Format follows
3
+ All notable changes to any contract in `aidlc/contracts/` are recorded here. Format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/) and the project uses [SemVer](https://semver.org/).
5
5
 
6
6
  > **Breaking change rule (INT-002):** any MAJOR bump requires human approval and a
7
- > Migration section. `tools/contract_diff.py` flags breaking changes automatically.
7
+ > Migration section. `aidlc/tools/contract_diff.py` flags breaking changes automatically.
8
8
 
9
9
  ## [Unreleased]
10
10
 
@@ -1,6 +1,6 @@
1
1
  # Contract Diff — {{change_id}}
2
2
 
3
- > Auto-generated by `tools/contract_diff.py`. Reviewed during Verify and Deliver.
3
+ > Auto-generated by `aidlc/tools/contract_diff.py`. Reviewed during Verify and Deliver.
4
4
 
5
5
  ## Summary
6
6
 
@@ -21,8 +21,8 @@
21
21
  ## OpenAPI Diff
22
22
 
23
23
  ```diff
24
- --- a/contracts/api/{{file}}.yaml
25
- +++ b/contracts/api/{{file}}.yaml
24
+ --- a/aidlc/contracts/api/{{file}}.yaml
25
+ +++ b/aidlc/contracts/api/{{file}}.yaml
26
26
  @@
27
27
  - removed: {{field}}
28
28
  + added: {{field}}
@@ -32,8 +32,8 @@
32
32
  ## AsyncAPI Diff
33
33
 
34
34
  ```diff
35
- --- a/contracts/events/{{file}}.yaml
36
- +++ b/contracts/events/{{file}}.yaml
35
+ --- a/aidlc/contracts/events/{{file}}.yaml
36
+ +++ b/aidlc/contracts/events/{{file}}.yaml
37
37
  @@
38
38
  - channel removed: {{name}}
39
39
  + channel added: {{name}}
@@ -42,7 +42,7 @@
42
42
 
43
43
  ## Breaking Change Detail
44
44
 
45
- > _Filled automatically. Each breaking change must link to a migration note in `contracts/CHANGELOG.md`._
45
+ > _Filled automatically. Each breaking change must link to a migration note in `aidlc/contracts/CHANGELOG.md`._
46
46
 
47
47
  - {{breaking_change_1}}
48
48
  - Migration: {{link}}
@@ -50,7 +50,7 @@
50
50
  ## Compat Check Result
51
51
 
52
52
  ```
53
- $ tools/contract_diff.py --base {{base}} --head {{head}}
53
+ $ aidlc/tools/contract_diff.py --base {{base}} --head {{head}}
54
54
  RESULT: {{COMPATIBLE | BREAKING}}
55
55
  EXIT: {{0 | 1}}
56
56
  ```
@@ -6,9 +6,9 @@
6
6
 
7
7
  ## Kind
8
8
 
9
- - [ ] REST API (OpenAPI 3.1) — `contracts/api/{{name}}.yaml`
10
- - [ ] AsyncAPI event — `contracts/events/{{name}}.yaml`
11
- - [ ] GraphQL schema — `contracts/api/{{name}}.graphql`
9
+ - [ ] REST API (OpenAPI 3.1) — `aidlc/contracts/api/{{name}}.yaml`
10
+ - [ ] AsyncAPI event — `aidlc/contracts/events/{{name}}.yaml`
11
+ - [ ] GraphQL schema — `aidlc/contracts/api/{{name}}.graphql`
12
12
 
13
13
  ## Versioning
14
14
 
@@ -18,7 +18,7 @@
18
18
  - PATCH: doc / example only
19
19
 
20
20
  > Any MAJOR bump requires human approval (INT-002) and a migration note in
21
- > `contracts/CHANGELOG.md`.
21
+ > `aidlc/contracts/CHANGELOG.md`.
22
22
 
23
23
  ## Change
24
24
 
@@ -40,10 +40,10 @@
40
40
 
41
41
  ## Contract Test Mapping
42
42
 
43
- - `tests/contract/test_{{contract_name}}.py`
43
+ - `aidlc/tests/contract/test_{{contract_name}}.py`
44
44
  - Scenarios: @INT-FR-{{int_fr_id}} @positive / @negative / @edge
45
45
 
46
46
  ## See Also
47
47
 
48
- - `contracts/CHANGELOG.md` — version history
49
- - `openspec/changes/{{change_id}}/contract-diff.md` — auto-generated diff
48
+ - `aidlc/contracts/CHANGELOG.md` — version history
49
+ - `aidlc/openspec/changes/{{change_id}}/contract-diff.md` — auto-generated diff
@@ -1,6 +1,6 @@
1
1
  # Runtime Contract 模板 — Serverless 函数接口声明
2
2
  # Provider-agnostic: 描述函数"做什么",不涉及具体部署平台
3
- # 放置在 contracts/functions/{name}.yaml
3
+ # 放置在 aidlc/contracts/functions/{name}.yaml
4
4
 
5
5
  function: {{function_name}}
6
6
  version: {{semver}}
@@ -13,7 +13,7 @@
13
13
  | wxa | `WXA-FR-*` | JavaScript | Vant Weapp | `apps/wxa/` | WeChat Mini Program |
14
14
  | mya | `MYA-FR-*` | JavaScript | Ant Design Mini | `apps/mya/` | Mini Program (e.g. Alipay) |
15
15
  | tta | `TTA-FR-*` | TypeScript | — | `apps/tta/` | TikTok Mini Program |
16
- | contracts | `INT-FR-*` | — | — | `contracts/`, `packages/shared/` | Cross-component contracts |
16
+ | contracts | `INT-FR-*` | — | — | `aidlc/contracts/`, `aidlc/packages/shared/` | Cross-component contracts |
17
17
 
18
18
  Cloud: {{cloud_provider}} (default: TCB).
19
19
 
@@ -21,27 +21,27 @@ Cloud: {{cloud_provider}} (default: TCB).
21
21
 
22
22
  ```bash
23
23
  # ① Understand — declare scope + namespaces
24
- cat > openspec/changes/CHG-001/spec-delta.md <<'YAML'
24
+ cat > aidlc/openspec/changes/CHG-001/spec-delta.md <<'YAML'
25
25
  affects: [{{primary_components}}]
26
26
  frs:
27
27
  - id: {{primary_namespace}}-FR-001
28
28
  - id: INT-FR-001 # if cross-component
29
29
  YAML
30
30
  # write features/{component}/{domain}/{feature}.feature
31
- # if cross-component, also write features/cross-stack/{domain}/{feature}.feature
31
+ # if cross-component, also write aidlc/features/cross-stack/{domain}/{feature}.feature
32
32
 
33
33
  # ② Plan
34
- # write openspec/changes/CHG-001/design.md
35
- # write openspec/changes/CHG-001/task-list.md (DAG with cross-component edges)
34
+ # write aidlc/openspec/changes/CHG-001/design.md
35
+ # write aidlc/openspec/changes/CHG-001/task-list.md (DAG with cross-component edges)
36
36
 
37
37
  # ③ Verify
38
38
  # Per component: TDD red-green-refactor
39
39
  {{verify_per_component}}
40
40
  # Contracts
41
- tools/generate_shared.py
42
- pytest tests/contract/
41
+ aidlc/tools/generate_shared.py
42
+ pytest aidlc/tests/contract/
43
43
  # Cross-stack (if applies)
44
- pytest tests/cross-stack/ -k INT-FR-001
44
+ pytest aidlc/tests/cross-stack/ -k INT-FR-001
45
45
 
46
46
  # ④ Deliver
47
47
  deploy_stack --preview # unified stack URL
@@ -66,7 +66,7 @@ bvt ${PRODUCTION_URL} # stack-level BVT
66
66
 
67
67
  ```
68
68
  {{project_name}}/
69
- ├── project.yaml # stack topology, components, contracts
69
+ ├── aidlc/project.yaml # stack topology, components, contracts
70
70
  ├── apps/
71
71
  │ ├── native/ # NATIVE-FR-* (native mobile)
72
72
  │ ├── desktop/ # DESKTOP-FR-* (desktop)
@@ -75,19 +75,18 @@ bvt ${PRODUCTION_URL} # stack-level BVT
75
75
  │ ├── mya/ # MYA-FR-* (Mini Program)
76
76
  │ ├── tta/ # TTA-FR-* (TikTok Mini Program)
77
77
  │ └── backend/ # BE-FR-* (service)
78
- ├── contracts/ # INT-FR-* (single source of truth)
78
+ ├── aidlc/contracts/ # INT-FR-* (single source of truth)
79
79
  │ ├── api/ # OpenAPI 3.1
80
80
  │ ├── events/ # AsyncAPI / CloudEvent
81
81
  │ └── CHANGELOG.md
82
- ├── packages/shared/ # generated from contracts, consumed by all
83
- ├── features/
84
- │ └── cross-stack/ # INT-FR-*.feature (full flow)
85
- ├── tests/
82
+ ├── aidlc/packages/shared/ # generated from contracts, consumed by all
83
+ ├── aidlc/features/cross-stack/ # INT-FR-*.feature (full flow)
84
+ ├── aidlc/tests/
86
85
  │ ├── contract/ # contract tests
87
86
  │ └── cross-stack/ # cross-stack e2e
88
- ├── openspec/changes/{id}/ # spec + design + task-list per change
89
- ├── providers/{tcb,aliyun}/ # cloud config
90
- └── tools/ # deploy_stack, contract_diff, generate_shared
87
+ ├── aidlc/openspec/changes/{id}/ # spec + design + task-list per change
88
+ ├── aidlc/providers/{tcb,aliyun}/ # cloud config
89
+ └── aidlc/tools/ # deploy_stack, contract_diff, generate_shared
91
90
  ```
92
91
 
93
92
  ### AI-DLC Workflow
@@ -117,8 +116,8 @@ bvt ${PRODUCTION_URL} # stack BVT
117
116
  |------|---------|-----------|-------|
118
117
  | TDD | `pytest --cov` per component | ≥80% | Per component |
119
118
  | BDD | `pytest-bdd features/` per component | 100% pass | Per component |
120
- | Contract | `pytest tests/contract/` | 100% pass | Cross-component |
121
- | Cross-stack | `pytest tests/cross-stack/` | 100% pass | Stack |
119
+ | Contract | `pytest aidlc/tests/contract/` | 100% pass | Cross-component |
120
+ | Cross-stack | `pytest aidlc/tests/cross-stack/` | 100% pass | Stack |
122
121
  | Security | `bandit -r apps/` | 0 vulns | Per component |
123
122
  | BVT | `bvt ${URL}` | All checks pass | Stack |
124
123
 
@@ -6,8 +6,8 @@ AI-DLC monorepo project. Stack: native + desktop + web + backend + wxa + mya + t
6
6
 
7
7
  ```
8
8
  {{project_name}}/
9
- ├── project.yaml # Stack topology
10
- ├── requirements.md # Intent + global spec
9
+ ├── aidlc/project.yaml # Stack topology
10
+ ├── aidlc/requirements.md # Intent + global spec
11
11
  ├── apps/
12
12
  │ ├── native/ # NATIVE-FR-* native mobile
13
13
  │ │ ├── src/
@@ -37,25 +37,25 @@ AI-DLC monorepo project. Stack: native + desktop + web + backend + wxa + mya + t
37
37
  │ ├── src/
38
38
  │ ├── tests/{unit,integration,e2e}/
39
39
  │ └── features/
40
- ├── contracts/ # INT-FR-* single source of truth
40
+ ├── aidlc/contracts/ # INT-FR-* single source of truth
41
41
  │ ├── api/ # OpenAPI 3.1
42
42
  │ ├── events/ # AsyncAPI / CloudEvent
43
43
  │ └── CHANGELOG.md
44
- ├── packages/shared/ # generated from contracts
45
- ├── features/cross-stack/ # INT-FR-*.feature full flow
46
- ├── tests/
44
+ ├── aidlc/packages/shared/ # generated from contracts
45
+ ├── aidlc/features/cross-stack/ # INT-FR-*.feature full flow
46
+ ├── aidlc/tests/
47
47
  │ ├── contract/ # INT contract tests
48
48
  │ └── cross-stack/ # cross-stack e2e
49
- ├── openspec/changes/{id}/
49
+ ├── aidlc/openspec/changes/{id}/
50
50
  │ ├── spec-delta.md # declares affects + FR namespaces
51
51
  │ ├── design.md # per-component + integration
52
52
  │ ├── task-list.md # DAG with cross-component edges
53
53
  │ └── contract-diff.md # auto-generated contract changes
54
- ├── providers/{tcb,aliyun}/
55
- └── tools/
54
+ ├── aidlc/providers/{tcb,aliyun}/
55
+ └── aidlc/tools/
56
56
  ├── deploy_stack.py # unified stack deploy
57
57
  ├── contract_diff.py # contract compat check
58
- └── generate_shared.py # contracts → packages/shared
58
+ └── generate_shared.py # contracts → aidlc/packages/shared
59
59
  ```
60
60
 
61
61
  ## project.yaml
@@ -73,26 +73,26 @@ stack:
73
73
  - id: tta { fr_prefix: TTA, tech: miniprogram, dir: apps/tta, default_language: typescript }
74
74
  cross_cutting:
75
75
  fr_prefix: INT
76
- contracts: contracts/
77
- shared_types: packages/shared/
76
+ contracts: aidlc/contracts/
77
+ shared_types: aidlc/packages/shared/
78
78
  ```
79
79
 
80
80
  ## AI-DLC Workflow
81
81
 
82
82
  ```bash
83
83
  # ① Understand
84
- # requirements.md → openspec/changes/{id}/spec-delta.md (with affects)
84
+ # aidlc/requirements.md → aidlc/openspec/changes/{id}/spec-delta.md (with affects)
85
85
  # → features/{component}/{domain}/{feature}.feature
86
- # → features/cross-stack/{domain}/{feature}.feature (if cross-component)
86
+ # → aidlc/features/cross-stack/{domain}/{feature}.feature (if cross-component)
87
87
 
88
88
  # ② Plan
89
- # → openspec/changes/{id}/design.md (per-component + integration)
90
- # → openspec/changes/{id}/task-list.md (DAG with cross-component edges)
89
+ # → aidlc/openspec/changes/{id}/design.md (per-component + integration)
90
+ # → aidlc/openspec/changes/{id}/task-list.md (DAG with cross-component edges)
91
91
 
92
92
  # ③ Verify
93
93
  # For each affected component, per BDD scenario: RED → GREEN → REFACTOR
94
- # Then: tools/generate_shared.py → pytest tests/contract/
95
- # Then: pytest tests/cross-stack/ (if cross-component)
94
+ # Then: aidlc/tools/generate_shared.py → pytest aidlc/tests/contract/
95
+ # Then: pytest aidlc/tests/cross-stack/ (if cross-component)
96
96
 
97
97
  # ④ Deliver
98
98
  deploy_stack --preview # unified stack URL
@@ -108,9 +108,9 @@ bvt ${PRODUCTION_URL} # stack BVT
108
108
  |------|---------|-----------|
109
109
  | TDD coverage | `pytest --cov` per component | ≥80% |
110
110
  | BDD scenarios | `pytest-bdd features/` per component | 100% pass |
111
- | Contract | `pytest tests/contract/` | 100% pass |
112
- | Cross-stack e2e | `pytest tests/cross-stack/` | 100% pass |
113
- | Contract diff | `tools/contract_diff.py` | backward-compat |
111
+ | Contract | `pytest aidlc/tests/contract/` | 100% pass |
112
+ | Cross-stack e2e | `pytest aidlc/tests/cross-stack/` | 100% pass |
113
+ | Contract diff | `aidlc/tools/contract_diff.py` | backward-compat |
114
114
  | Security | `bandit -r apps/` | 0 vulns |
115
115
  | Stack BVT | `bvt ${URL}` | all checks pass |
116
116
 
@@ -6,7 +6,7 @@ CHANGE_ID="${1:?Usage: collect.sh <change-id>}"
6
6
  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
7
7
  SKILL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
8
8
  PROJECT_ROOT="$(cd "$SKILL_DIR/../../.." && pwd)"
9
- CHANGE_DIR="$PROJECT_ROOT/openspec/changes/$CHANGE_ID"
9
+ CHANGE_DIR="$PROJECT_ROOT/aidlc/openspec/changes/$CHANGE_ID"
10
10
 
11
11
  if [ ! -d "$CHANGE_DIR" ]; then
12
12
  echo "Error: $CHANGE_DIR not found"
@@ -15,14 +15,14 @@
15
15
  ## Phase By Phase
16
16
 
17
17
  ### Understand
18
- - Spec Delta: `openspec/changes/{{change_id}}/spec-delta.md`
18
+ - Spec Delta: `aidlc/openspec/changes/{{change_id}}/spec-delta.md`
19
19
  - BDD 场景数: {{scenario_count}}
20
20
  - Positive: {{positive_count}}
21
21
  - Negative: {{negative_count}}
22
22
  - Edge: {{edge_count}}
23
23
 
24
24
  ### Plan
25
- - Design Doc: `openspec/changes/{{change_id}}/design.md`
25
+ - Design Doc: `aidlc/openspec/changes/{{change_id}}/design.md`
26
26
  - Task DAG: {{task_count}} units
27
27
  - 跨组件依赖: {{cross_component_edges}}
28
28