@deepstorm/cli 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 (148) hide show
  1. package/README.md +72 -0
  2. package/dist/agents/reef-inspect-figma.md +77 -0
  3. package/dist/agents/reef-review-backend.md.tmpl +112 -0
  4. package/dist/agents/reef-review-frontend.md.tmpl +78 -0
  5. package/dist/agents/reef-review-infra.md +47 -0
  6. package/dist/agents/reef-review-security.md.tmpl +80 -0
  7. package/dist/agents/reef-scope-analysis.md +64 -0
  8. package/dist/build-registry.js +375 -0
  9. package/dist/cli.js +8581 -0
  10. package/dist/config-schema.json +133 -0
  11. package/dist/env-examples/context7.env-example +19 -0
  12. package/dist/env-examples/feishu-wiki.env-example +16 -0
  13. package/dist/env-examples/figma.env-example +16 -0
  14. package/dist/env-examples/github.env-example +20 -0
  15. package/dist/env-examples/jira.env-example +20 -0
  16. package/dist/hooks/mcp-hook.sh +77 -0
  17. package/dist/hooks/reef-auto-format.sh.tmpl +72 -0
  18. package/dist/hooks/reef-block-dangerous.sh +70 -0
  19. package/dist/hooks/reef-hooks.json +72 -0
  20. package/dist/hooks/reef-intent-detect.sh +129 -0
  21. package/dist/hooks/reef-protect-files.sh +55 -0
  22. package/dist/hooks/reef-run-tests.sh +84 -0
  23. package/dist/hooks/reef-scope-check.sh +386 -0
  24. package/dist/hooks/reef-scope-ci.sh +28 -0
  25. package/dist/hooks/reef-scope-gate.sh +115 -0
  26. package/dist/hooks/reef-scope-pre-commit.sh.tmpl +28 -0
  27. package/dist/hooks/reef-scope-setup.sh +204 -0
  28. package/dist/hooks/reef-scope-split.sh +203 -0
  29. package/dist/hooks/sweep-hooks.json +14 -0
  30. package/dist/hooks/sweep-mcp-hook.sh +77 -0
  31. package/dist/hooks/tide-hooks.json +14 -0
  32. package/dist/hooks/tide-session-preload.sh +17 -0
  33. package/dist/mcp/code-hosting/github.json +20 -0
  34. package/dist/mcp/design-tools/figma.json +19 -0
  35. package/dist/mcp/docs-reference/context7.json +28 -0
  36. package/dist/mcp/e2e-testing/playwright.json +13 -0
  37. package/dist/mcp/knowledge-base/feishu-wiki.json +19 -0
  38. package/dist/mcp/project-management/jira.json +27 -0
  39. package/dist/mcp-skills/deepflow-mcp-feishu-wiki-read/SKILL.md +65 -0
  40. package/dist/mcp-skills/deepflow-mcp-feishu-wiki-write/SKILL.md +63 -0
  41. package/dist/mcp-skills/deepflow-mcp-figma-read/SKILL.md +98 -0
  42. package/dist/mcp-skills/deepflow-mcp-github-read/SKILL.md +62 -0
  43. package/dist/mcp-skills/deepflow-mcp-github-write/SKILL.md +63 -0
  44. package/dist/mcp-skills/deepflow-mcp-jira-read/SKILL.md +80 -0
  45. package/dist/mcp-skills/deepflow-mcp-jira-write/SKILL.md +74 -0
  46. package/dist/mcp-skills/deepflow-mcp-playwright-read/SKILL.md +79 -0
  47. package/dist/mcp-skills/deepstorm-mcp-feishu-wiki-read/SKILL.md +65 -0
  48. package/dist/mcp-skills/deepstorm-mcp-feishu-wiki-write/SKILL.md +63 -0
  49. package/dist/mcp-skills/deepstorm-mcp-figma-read/SKILL.md +98 -0
  50. package/dist/mcp-skills/deepstorm-mcp-github-read/SKILL.md +62 -0
  51. package/dist/mcp-skills/deepstorm-mcp-github-write/SKILL.md +63 -0
  52. package/dist/mcp-skills/deepstorm-mcp-jira-read/SKILL.md +80 -0
  53. package/dist/mcp-skills/deepstorm-mcp-jira-write/SKILL.md +74 -0
  54. package/dist/mcp-skills/deepstorm-mcp-playwright-read/SKILL.md +79 -0
  55. package/dist/registry.json +818 -0
  56. package/dist/skills/atoll-ops/SKILL.md +46 -0
  57. package/dist/skills/reef-commit/SKILL.md +127 -0
  58. package/dist/skills/reef-gen-backend/SKILL.md.tmpl +87 -0
  59. package/dist/skills/reef-gen-backend/variants/java/steps.md +28 -0
  60. package/dist/skills/reef-gen-backend/variants/python/steps.md +70 -0
  61. package/dist/skills/reef-gen-frontend/SKILL.md.tmpl +83 -0
  62. package/dist/skills/reef-gen-frontend/variants/angular/steps.md +30 -0
  63. package/dist/skills/reef-harden/EXAMPLES.md +89 -0
  64. package/dist/skills/reef-harden/SKILL.md +136 -0
  65. package/dist/skills/reef-pr/SKILL.md +97 -0
  66. package/dist/skills/reef-review/SKILL.md.tmpl +107 -0
  67. package/dist/skills/reef-scope/SKILL.md +134 -0
  68. package/dist/skills/reef-start/SKILL.md.tmpl +562 -0
  69. package/dist/skills/reef-start/references/jira-start-subagent.md +60 -0
  70. package/dist/skills/reef-style-backend/SKILL.md.tmpl +134 -0
  71. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/chat-client.md +96 -0
  72. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/rag.md +94 -0
  73. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/structured-output.md +62 -0
  74. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/examples/tool-calling.md +68 -0
  75. package/dist/skills/reef-style-backend/fragments/java/ai/spring-ai/quick-reference.md +220 -0
  76. package/dist/skills/reef-style-backend/fragments/java/api-spec/quick-reference.md +148 -0
  77. package/dist/skills/reef-style-backend/fragments/java/db-migration/liquibase/examples/database-migration.md +131 -0
  78. package/dist/skills/reef-style-backend/fragments/java/db-migration/liquibase/quick-reference.md +103 -0
  79. package/dist/skills/reef-style-backend/fragments/java/dependency-management/quick-reference.md +119 -0
  80. package/dist/skills/reef-style-backend/fragments/java/exception-handling/examples/error-code-enum.md +101 -0
  81. package/dist/skills/reef-style-backend/fragments/java/exception-handling/quick-reference.md +181 -0
  82. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/controller.md +95 -0
  83. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/dto-mapper.md +121 -0
  84. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/infrastructure.md +179 -0
  85. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/service-entity.md +202 -0
  86. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/examples/testing.md +107 -0
  87. package/dist/skills/reef-style-backend/fragments/java/framework/spring-boot/quick-reference.md +83 -0
  88. package/dist/skills/reef-style-backend/fragments/java/orm/hibernate/quick-reference.md +150 -0
  89. package/dist/skills/reef-style-backend/fragments/java/security-redlines/quick-reference.md +197 -0
  90. package/dist/skills/reef-style-backend/fragments/java/test/data-jpa-test/examples/user-repository-test.md +69 -0
  91. package/dist/skills/reef-style-backend/fragments/java/test/data-jpa-test/quick-reference.md +101 -0
  92. package/dist/skills/reef-style-backend/fragments/java/test/junit5/examples/user-service-test.md +61 -0
  93. package/dist/skills/reef-style-backend/fragments/java/test/junit5/quick-reference.md +100 -0
  94. package/dist/skills/reef-style-backend/fragments/java/test/spring-mvc-test/examples/user-controller-test.md +61 -0
  95. package/dist/skills/reef-style-backend/fragments/java/test/spring-mvc-test/quick-reference.md +85 -0
  96. package/dist/skills/reef-style-backend/fragments/java/test/spring-service-test/examples/user-service-integration-test.md +56 -0
  97. package/dist/skills/reef-style-backend/fragments/java/test/spring-service-test/quick-reference.md +83 -0
  98. package/dist/skills/reef-style-backend/fragments/python/alembic-migration/quick-reference.md +77 -0
  99. package/dist/skills/reef-style-backend/fragments/python/api-spec/quick-reference.md +164 -0
  100. package/dist/skills/reef-style-backend/fragments/python/dependency-management/quick-reference.md +139 -0
  101. package/dist/skills/reef-style-backend/fragments/python/exception-handling/quick-reference.md +177 -0
  102. package/dist/skills/reef-style-backend/fragments/python/fastapi-quick-reference/quick-reference.md +101 -0
  103. package/dist/skills/reef-style-backend/fragments/python/langchain/quick-reference.md +135 -0
  104. package/dist/skills/reef-style-backend/fragments/python/pytest-testing/quick-reference.md +111 -0
  105. package/dist/skills/reef-style-backend/fragments/python/ruff-mypy-toolchain/quick-reference.md +83 -0
  106. package/dist/skills/reef-style-backend/fragments/python/security-redlines/quick-reference.md +207 -0
  107. package/dist/skills/reef-style-backend/fragments/python/sqlalchemy-orm/quick-reference.md +91 -0
  108. package/dist/skills/reef-style-backend/variants/java/examples/code-wrapping.md +227 -0
  109. package/dist/skills/reef-style-backend/variants/java/examples/contributor-pattern.md +97 -0
  110. package/dist/skills/reef-style-backend/variants/java/quick-reference.md +117 -0
  111. package/dist/skills/reef-style-backend/variants/python/examples/crud-router.md +71 -0
  112. package/dist/skills/reef-style-backend/variants/python/examples/pydantic-schema.md +45 -0
  113. package/dist/skills/reef-style-backend/variants/python/examples/pytest-fixture.md +60 -0
  114. package/dist/skills/reef-style-backend/variants/python/examples/sqlalchemy-model.md +31 -0
  115. package/dist/skills/reef-style-backend/variants/python/quick-reference.md +111 -0
  116. package/dist/skills/reef-style-frontend/SKILL.md.tmpl +70 -0
  117. package/dist/skills/reef-style-frontend/fragments/css/tailwind/quick-reference.md +79 -0
  118. package/dist/skills/reef-style-frontend/fragments/test/vitest/examples/testing.md +150 -0
  119. package/dist/skills/reef-style-frontend/fragments/test/vitest/quick-reference.md +141 -0
  120. package/dist/skills/reef-style-frontend/fragments/ts-config/strict/quick-reference.md +112 -0
  121. package/dist/skills/reef-style-frontend/fragments/ui-lib/primeng/examples/ui-components.md +134 -0
  122. package/dist/skills/reef-style-frontend/fragments/ui-lib/primeng/quick-reference.md +66 -0
  123. package/dist/skills/reef-style-frontend/variants/angular/examples/code-wrapping.md +252 -0
  124. package/dist/skills/reef-style-frontend/variants/angular/examples/component-types-pipes.md +56 -0
  125. package/dist/skills/reef-style-frontend/variants/angular/examples/entity-types.md +100 -0
  126. package/dist/skills/reef-style-frontend/variants/angular/examples/forms-layer.md +119 -0
  127. package/dist/skills/reef-style-frontend/variants/angular/examples/service-routing.md +95 -0
  128. package/dist/skills/reef-style-frontend/variants/angular/quick-reference.md +100 -0
  129. package/dist/skills/reef-testcase/SKILL.md +138 -0
  130. package/dist/skills/reef-testcase/references/coverage-dimensions.md +99 -0
  131. package/dist/skills/reef-testcase/references/test-case-template.md +63 -0
  132. package/dist/skills/sweep-init/SKILL.md +286 -0
  133. package/dist/skills/sweep-init/scripts/flow-selector.mjs +305 -0
  134. package/dist/skills/sweep-plan/SKILL.md.tmpl +312 -0
  135. package/dist/skills/sweep-plan/references/test-flow-template.md +46 -0
  136. package/dist/skills/sweep-run/SKILL.md +437 -0
  137. package/dist/skills/sweep-run/scripts/env-manager.mjs +208 -0
  138. package/dist/skills/sweep-run/scripts/flow-parser.mjs +329 -0
  139. package/dist/skills/sweep-run/scripts/flow-selector.mjs +483 -0
  140. package/dist/skills/sweep-run/scripts/mcp-manager.mjs +208 -0
  141. package/dist/skills/sweep-run/scripts/spec-compiler.mjs +303 -0
  142. package/dist/skills/tide-discuss/SKILL.md.tmpl +449 -0
  143. package/dist/skills/tide-discuss/references/checklists.md +88 -0
  144. package/dist/skills/tide-discuss/references/data-format.md +237 -0
  145. package/dist/skills/tide-discuss/references/prd-template.md +134 -0
  146. package/dist/skills/tide-discuss/references/publish-flow.md +167 -0
  147. package/dist/skills/tide-discuss/references/role-prompts.md +105 -0
  148. package/package.json +38 -0
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: atoll-ops
3
+ description: 运维辅助 — 部署策略、监控查询、故障排查
4
+ allowed-tools: []
5
+ deepstorm:
6
+ tool: atoll
7
+ ---
8
+
9
+ # Atoll — 运维侧工具集
10
+
11
+ > 🏝️ 环礁为珊瑚礁生态系统提供保护屏障——Atoll 保障服务的稳定运行。
12
+
13
+ 当前为规划阶段,功能待实现。
14
+
15
+ ## 规划中的核心功能
16
+
17
+ ### 部署辅助
18
+ - CI/CD 流水线管理与触发
19
+ - 部署策略建议(滚动更新/蓝绿部署/金丝雀发布)
20
+ - 回滚评估与执行
21
+
22
+ ### 监控查询
23
+ - 监控平台数据查询(Prometheus/Grafana/Datadog)
24
+ - 告警分析与聚合
25
+ - 性能趋势诊断
26
+
27
+ ### 故障排查
28
+ - 错误日志分析
29
+ - 慢查询/慢接口定位
30
+ - 依赖链追踪
31
+ - 故障恢复策略建议
32
+
33
+ ### 云平台操作
34
+ - 资源状态查询
35
+ - 配置变更管理
36
+ - 成本分析
37
+
38
+ ---
39
+
40
+ ## 使用方式
41
+
42
+ 安装后可直接通过自然语言提出运维需求:
43
+
44
+ > "帮我看看生产环境最近的错误日志"
45
+ > "部署这个版本的策略建议是什么?"
46
+ > "分析下这个告警的根因"
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: reef-commit
3
+ description: 根据当前变更和 OpenSpec 上下文,生成规范的提交信息并创建新提交。用户说「提交代码」「commit」「git push」「提交」「推送」等触发
4
+ allowed-tools: Bash(git:*), Bash(./gradlew:*), Bash(pnpm:*)
5
+ deepstorm:
6
+ tool: reef
7
+ ---
8
+
9
+ # 智能生成提交信息
10
+
11
+ 根据当前变更、OpenSpec 任务定义及仓库历史 PR 风格,生成中文提交信息,创建新的 git 提交。
12
+
13
+ ## 提交信息风格规范(基于历史 PR 总结)
14
+
15
+ ### 标题
16
+
17
+ 1. 不使用 conventional commit 前缀(无 `feat:`、`fix:`、`chore:` 等)
18
+ 2. 一句话说清做了什么,可含英文术语
19
+ 3. 命名来源优先级:OpenSpec proposal/design 标题 → 分支名语义化 → 变更内容总结
20
+ 4. 每行 ≤ 70 字符
21
+
22
+ ### 正文(根据任务复杂度决定)
23
+
24
+ | 复杂度 | 正文策略 |
25
+ |--------|---------|
26
+ | 简单(单文件/小修补/配置改动) | 仅标题 |
27
+ | 中等 | 标题 + 一段说明 |
28
+ | 复杂(多模块/架构级/前后端/破坏性变更) | 标题 + `本次提交改动如下:` + 要点列表 |
29
+
30
+ 有参考文档加 `参考资料:`,关联 Issue 在尾部隔空行加 `JIRA: {完整 URL}`。文件数仅作参考(50 个重命名仍属简单)。
31
+
32
+ ## 工作流
33
+
34
+ ### 1. 检测变更
35
+
36
+ ```bash
37
+ git status --short
38
+ ```
39
+
40
+ 若无任何变更则提示用户并退出。
41
+
42
+ ### 2. 审查待提交文件
43
+
44
+ 展示变更清单,检查敏感文件:
45
+
46
+ ```bash
47
+ git diff --stat
48
+ ```
49
+
50
+ 如包含 `.env`、凭据、证书或大型二进制文件,让用户确认或排除后再继续。
51
+
52
+ ### 2.4 分支范围检查
53
+
54
+ 检查当前分支是否涉及多个业务领域。如果跨领域,给出拆分建议并中止提交。
55
+
56
+ ```bash
57
+ BRANCH=$(git branch --show-current)
58
+ FORK_POINT=$(git merge-base main HEAD 2>/dev/null || echo "")
59
+ echo "检查分支范围(基准: main)..."
60
+ SCOPE_HOOK="packages/reef/hooks/reef-scope-gate.sh"
61
+ if [ -f "$SCOPE_HOOK" ]; then
62
+ bash "$SCOPE_HOOK" || {
63
+ echo ""
64
+ echo "提示:如需继续提交,请使用 'reef-scope-split.sh' 拆分分支"
65
+ echo "或临时禁用 scope 检查(不推荐):deepstorm/scope-config.json → enabled: false"
66
+ exit 1
67
+ }
68
+ fi
69
+ ```
70
+
71
+ ### 2.5 运行单元测试
72
+
73
+ ```bash
74
+ git status --short
75
+ ```
76
+
77
+ 如有变更则全量运行测试:
78
+
79
+ ```bash
80
+ ./gradlew test
81
+ (cd src/main/web && pnpm test -- --run)
82
+ ```
83
+
84
+ - 测试全部通过 → 继续
85
+ - 任一测试失败 → 提示用户修复后再提交
86
+
87
+ ### 3. 收集上下文
88
+
89
+ ```bash
90
+ BRANCH=$(git branch --show-current)
91
+ FORK_POINT=$(git merge-base main HEAD 2>/dev/null)
92
+ echo "Branch: $BRANCH"; git diff "$FORK_POINT"..HEAD --stat
93
+ ls -d openspec/changes/*/ 2>/dev/null | grep -v archive
94
+ [ -f "openspec/changes/$BRANCH/proposal.md" ] && head -5 "openspec/changes/$BRANCH/proposal.md"
95
+ # 从 proposal/commit 提取 Issue 引用
96
+ grep -iE '(issue|jira|lc-|proj-)' "openspec/changes/$BRANCH/proposal.md" 2>/dev/null | head -3
97
+ git log "$FORK_POINT"..HEAD --format="%B" 2>/dev/null | grep -ioP '[A-Z]+-\d+' | head -1
98
+ ```
99
+
100
+ ### 4. 生成提交信息
101
+
102
+ **标题:** 优先 OpenSpec proposal 标题 → 分支名(kebab-case 转中文)→ 变更总结。依赖更新用 `更新 {依赖} 至 {版本}`,问题修复用 `解决{问题描述}的问题`。
103
+
104
+ **正文:** 中/复杂变更用 `本次提交改动如下:` + 3-6 条要点。尾部隔空行加 `JIRA: {完整 URL}`(优先从 proposal.md/jira-start 元数据中获取 JIRA 链接),如有 PRD 链接加 `Ref: {URL}`。
105
+
106
+ ### 5. 展示并确认
107
+
108
+ 展示完整提交信息,用户确认即可提交;支持 `--amend` 合并;用户可要求修改后重新生成。
109
+
110
+ ### 6. 执行提交
111
+
112
+ ```bash
113
+ git add -A && git commit -m "<完整提交信息>"
114
+ # 用户要求 amend 时: git commit --amend -m "<完整提交信息>"
115
+ ```
116
+
117
+ ### 7. 推送(仅在用户要求时)
118
+
119
+ ```bash
120
+ # 新提交(有远程跟踪):git push
121
+ # Amend:git push --force-with-lease
122
+ # 首次推送:git push -u origin $(git branch --show-current)
123
+ ```
124
+
125
+ ## 约束规则
126
+
127
+ 默认新提交,用户要求才 `--amend`。每行 ≤ 70 字符。无变更则退出。
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: reef-gen-backend
3
+ description: 后端代码编写流程({{reef.backend.language.label}})。编写或生成后端代码时自动加载,编码规范详情引用 reef:reef-style-backend。
4
+ when_to_use: 用户要求编写或修改后端代码;创建新的后端文件;用户说"生成后端代码""写接口""加表"等
5
+ user-invocable: false
6
+ allowed-tools: Bash(git:*), Bash({{reef.backend.language.buildTool}})
7
+ deepstorm:
8
+ tool: reef
9
+ configKey: reef.backend.language
10
+ ---
11
+
12
+ # 后端代码编写流程
13
+
14
+ 编码规范详情(实体层次、数据访问、业务逻辑、API 模式、多租户红线、代码风格)请通过 Skill tool 加载 **`reef:reef-style-backend`** 获取。
15
+
16
+ ## 工作流
17
+
18
+ ### 1. 找参考实现
19
+
20
+ 在动手之前,先在已有代码中找一个同类实现。优先搜索当前模块目录:
21
+
22
+ ```bash
23
+ # 替换 <module> 为当前模块名
24
+ find {{reef.backend.language.sourcePath}} -path "*/<module>/*" -type f
25
+
26
+ # 找最近修改的同类文件(使用 fork-point 避免全量历史)
27
+ FORK_POINT=$(git merge-base "$(git reflog --date=local | grep "checkout: moving from.* to $(git rev-parse --abbrev-ref HEAD)$" | head -1 | sed -n 's/.*from \([^ ]*\) to .*/\1/p' || echo main)" HEAD)
28
+ git diff "$FORK_POINT"..HEAD --diff-filter=M --name-only
29
+ ```
30
+
31
+ **规则**:不凭空写新文件。先读一个真实存在的同类文件,理解模式后再动手。写新模块时参考已有模块的完整实现。
32
+
33
+ ### 2. 查阅规范
34
+
35
+ 加载 `reef:reef-style-backend` 技能,阅读 `quick-reference.md` 和必要示例。
36
+
37
+ 涉及库/框架 API 用法时,使用 context7 获取最新文档:`resolve-library-id` → `query-docs`。
38
+
39
+ ### 3. 编写代码
40
+
41
+ {{#if reef.backend.language.sourcePath}}
42
+ 阅读本技能目录下的 `steps.md` 了解当前技术栈的编码步骤顺序和规范。编写过程中逐单元对照 `reef:reef-style-backend` 中对应章节检查。
43
+
44
+ **注释语言**:代码注释统一使用中文,专有名词/技术术语(如 REST、DTO、HTTP、JPA 等)保留英文。
45
+ {{/if}}
46
+
47
+ {{#if reef.backend.java.dbMigration.styleRef}}
48
+ ### 4. 数据库迁移
49
+
50
+ 如果涉及新表或字段变更(新增实体、新增字段、修改字段类型),加载 `reef:reef-style-backend` 技能,阅读其数据库迁移章节创建变更文件。
51
+
52
+ 迁移脚本参考:加载 `reef:reef-style-backend` 后阅读 `examples/` 目录中的示例。
53
+ {{else}}
54
+ {{#if reef.backend.python.dbMigration.styleRef}}
55
+ ### 4. 数据库迁移
56
+
57
+ 如果涉及新表或字段变更(新增实体、新增字段、修改字段类型),加载 `reef:reef-style-backend` 技能,阅读其数据库迁移章节创建变更文件。
58
+
59
+ 迁移脚本参考(Alembic):加载 `reef:reef-style-backend` 后阅读 `examples/` 目录中的示例。
60
+ {{/if}}
61
+ {{/if}}
62
+
63
+ ### {{#if reef.backend.java.dbMigration.styleRef}}5{{else}}{{#if reef.backend.python.dbMigration.styleRef}}5{{else}}4{{/if}}{{/if}}. 运行验证
64
+
65
+ 写完后运行验证:
66
+
67
+ {{#if reef.backend.language.isPython}}
68
+ ```bash
69
+ # 快速验证
70
+ ruff check .
71
+
72
+ # 最终验证(提交前)
73
+ ruff check . && mypy . && python -m pytest
74
+ ```
75
+ {{else}}
76
+ ```bash
77
+ # 快速验证(秒级)
78
+ {{reef.backend.language.formatCmd}} build
79
+
80
+ # 最终验证(提交前)
81
+ {{reef.backend.language.formatCmd}} check
82
+ ```
83
+ {{/if}}
84
+
85
+ ### {{#if reef.backend.java.dbMigration.styleRef}}6{{else}}{{#if reef.backend.python.dbMigration.styleRef}}6{{else}}5{{/if}}{{/if}}. 提交前自检
86
+
87
+ 加载 `reef:reef-style-backend` 技能,逐项检查所有规范要求。**未通过不得提交。**
@@ -0,0 +1,28 @@
1
+ # Java 后端编码步骤
2
+
3
+ 按以下顺序逐块编写,依赖关系由前向后:
4
+
5
+ 1. **Entity** — 实体类,定义表结构(JPA 注解、表名、字段映射)
6
+ 2. **DTO** — 数据传输对象,匹配实体层次
7
+ 3. **Mapper** — MapStruct 映射,连接 Entity ↔ DTO
8
+ 4. **Repository** — 数据访问(Spring Data JPA),多租户安全查询
9
+ 5. **Service** — 业务逻辑,事务管理
10
+ 6. **Controller** — REST API,请求/响应
11
+
12
+ 每完成一块对照 `reef:reef-style-backend` 中对应章节检查。
13
+
14
+ ## 多租户红线
15
+
16
+ - 所有数据库查询用 `findByIdAndAppId`,禁止裸 `findById`
17
+ - 禁止 `createNativeQuery`
18
+ - 禁止手动拼接 SQL
19
+
20
+ ## 构建命令
21
+
22
+ ```bash
23
+ # 快速编译验证
24
+ ./gradlew compileJava
25
+
26
+ # 完整检查(测试 + 风格)
27
+ ./gradlew check
28
+ ```
@@ -0,0 +1,70 @@
1
+ # Python 后端编码步骤(FastAPI)
2
+
3
+ 按以下顺序逐块编写,依赖关系由前向后:
4
+
5
+ ## 0. 安装依赖
6
+
7
+ 如项目尚未安装所需包,用 `uv` 安装:
8
+
9
+ ```bash
10
+ # FastAPI + ASGI 服务器
11
+ uv add fastapi uvicorn[standard]
12
+
13
+ # SQLAlchemy(异步)+ Alembic
14
+ uv add sqlalchemy[asyncio] alembic asyncpg
15
+
16
+ # Pydantic 验证
17
+ uv add pydantic[email]
18
+
19
+ # LangChain(如启用 AI 集成)
20
+ uv add langchain langchain-openai
21
+
22
+ # 开发依赖
23
+ uv add --dev pytest pytest-asyncio httpx ruff mypy
24
+ ```
25
+
26
+ 1. **Schema** — Pydantic Model,定义请求/响应结构
27
+ 2. **Model** — SQLAlchemy ORM Model,定义表结构
28
+ 3. **Migration** — Alembic 迁移文件,生成 DDL
29
+ 4. **Service** — 业务逻辑,输入验证,事务管理
30
+ 5. **Router** — FastAPI API 路由,请求/响应
31
+ 6. **注册到主应用**
32
+
33
+ 将新创建的路由器注册到主应用中:
34
+
35
+ ```python
36
+ # app/main.py
37
+ from fastapi import FastAPI
38
+ from app.api.v1 import users, orders
39
+
40
+ app = FastAPI(title="MyApp")
41
+
42
+ # 注册路由
43
+ app.include_router(users.router, prefix="/api/v1/users", tags=["users"])
44
+ app.include_router(orders.router, prefix="/api/v1/orders", tags=["orders"])
45
+ ```
46
+
47
+ 每完成一块对照 `reef:reef-style-backend` 的 Python 章节检查。
48
+
49
+ ## ⚠️ 异步红线
50
+
51
+ - 所有数据库操作用 `AsyncSession`,禁止同步 `Session`
52
+ - Service 层函数都用 `async def`
53
+ - `async def` 内部禁止调同步 IO(`time.sleep()`、`requests.get()`)
54
+ - 需要同步操作时用 `asyncio.to_thread()` 包裹
55
+
56
+ ## 构建命令
57
+
58
+ ```bash
59
+ # 格式化和 lint
60
+ ruff check . && ruff format
61
+
62
+ # 类型检查
63
+ mypy .
64
+
65
+ # 运行测试
66
+ python -m pytest
67
+
68
+ # 启动开发服务器
69
+ uv run uvicorn app.main:app --reload
70
+ ```
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: reef-gen-frontend
3
+ description: 前端代码编写流程({{reef.frontend.framework.label}})。编写或生成前端代码时自动加载,编码规范详情引用 reef:reef-style-frontend。
4
+ when_to_use: 用户要求编写或修改前端代码;创建新的前端文件;用户说"生成前端代码""写页面""写组件""加表单"等
5
+ user-invocable: false
6
+ allowed-tools: Bash(git:*), Bash({{reef.frontend.framework.buildTool}})
7
+ model: opus
8
+ deepstorm:
9
+ tool: reef
10
+ configKey: reef.frontend.framework
11
+ ---
12
+
13
+ # 前端代码编写流程
14
+
15
+ 编码规范详情(组件/Signal/Signal Forms/HTTP/UI 库/CSS/路由/错误处理)请通过 Skill tool 加载 **`reef:reef-style-frontend`** 获取。
16
+
17
+ ## 工作流
18
+
19
+ ### 1. 找参考实现
20
+
21
+ 在动手之前,先在已有代码中找一个同类实现。优先搜索当前模块目录:
22
+
23
+ ```bash
24
+ # 替换 <module> 为当前模块名
25
+ find {{reef.frontend.framework.sourcePath}} -path "*/<module>/*" -type f
26
+
27
+ # 找最近修改的同类文件(使用 fork-point 避免全量历史)
28
+ FORK_POINT=$(git merge-base "$(git reflog --date=local | grep "checkout: moving from.* to $(git rev-parse --abbrev-ref HEAD)$" | head -1 | sed -n 's/.*from \([^ ]*\) to .*/\1/p' || echo main)" HEAD)
29
+ git diff "$FORK_POINT"..HEAD --diff-filter=M --name-only
30
+ ```
31
+
32
+ **规则**:不凭空写新文件。先读一个真实存在的同类文件,理解模式后再动手。
33
+
34
+ ### 2. 查阅规范
35
+
36
+ 加载 `reef:reef-style-frontend` 技能,阅读 `quick-reference.md` 和必要示例。
37
+
38
+ 涉及库/框架 API 用法时,使用 context7 获取最新文档:`resolve-library-id` → `query-docs`。
39
+
40
+ {{#if reef.frontend.framework.sourcePath}}
41
+ ### 3. 获取设计数据
42
+
43
+ 如果当前变更关联了设计工具数据(从 `design.md` 或 Issue context 中可获取 `fileKey` 和 `nodeId`),通过运行时能力映射检测可用的设计工具 MCP 服务加载设计节点数据。
44
+
45
+ 运行时 AI 从 `.claude/settings.json` → `deepstorm.mcpCapabilities` 中感知可用的设计工具 provider,读取 `.claude/skills/deepstorm-mcp-figma-read/SKILL.md` 了解工具调用方式。使用 design_tools MCP 工具获取设计节点数据:
46
+
47
+ ```bash
48
+ <design_tool_mcp_get_data>(fileKey: "<fileKey>", nodeId: "<nodeId>")
49
+ ```
50
+
51
+ 从返回的节点结构中提取实现所需的设计 token:
52
+ - **尺寸**:节点宽高、间距、内边距
53
+ - **颜色**:填充色、边框色、文字色
54
+ - **排版**:字号、字重、行高
55
+ - **布局**:Flex/Grid 方向、对齐方式、Auto Layout 属性
56
+
57
+ 设计数据用于指导 UI 实现,无需另外编写文档中转。如果无可用设计工具 MCP 服务则跳过。
58
+ {{/if}}
59
+
60
+ ### {{#if reef.frontend.framework.sourcePath}}4{{else}}3{{/if}}. 编写代码
61
+
62
+ {{#if reef.frontend.framework.sourcePath}}
63
+ 阅读本技能目录下的 `steps.md` 了解当前框架的编码步骤顺序和核心约束。编写过程中逐单元对照 `reef:reef-style-frontend` 中对应章节检查。
64
+
65
+ **注释语言**:代码注释统一使用中文,专有名词/技术术语(如 Signal、Pipe、Component、Service、httpResource 等)保留英文。
66
+ {{/if}}
67
+
68
+ ### {{#if reef.frontend.framework.sourcePath}}5{{else}}4{{/if}}. 运行验证
69
+
70
+ 先快速验证,写完后全量检查:
71
+
72
+ ```bash
73
+ # 快速验证(秒级,确保编译和类型通过)
74
+ {{reef.frontend.framework.formatCmd}} lint
75
+ {{reef.frontend.framework.formatCmd}} typecheck
76
+
77
+ # 最终验证(提交前)
78
+ {{reef.frontend.framework.formatCmd}} lint && {{reef.frontend.framework.formatCmd}} typecheck && {{reef.frontend.framework.formatCmd}} test
79
+ ```
80
+
81
+ ### {{#if reef.frontend.framework.sourcePath}}6{{else}}5{{/if}}. 提交前自检
82
+
83
+ 加载 `reef:reef-style-frontend` 技能,逐项检查所有规范要求。**未通过不得提交。**
@@ -0,0 +1,30 @@
1
+ # Angular 前端编码步骤
2
+
3
+ 按以下顺序逐块编写,依赖关系由前向后:
4
+
5
+ 1. **类型定义** — 实体接口/类型,继承 `shared/base.ts`
6
+ 2. **Service** — HttpClient 封装,`httpResource` 读请求
7
+ 3. **Component** — 组件 UI,Signal 状态,Signal Forms
8
+ 4. **路由** — `loadComponent` 懒加载注册
9
+
10
+ 每完成一块对照 `reef:reef-style-frontend` 中对应章节检查。
11
+
12
+ ## 核心约束
13
+
14
+ - Standalone 组件(不使用 NgModule)
15
+ - OnPush ChangeDetection
16
+ - `inject()` 代替构造函数注入
17
+ - Signal Forms 代替模板驱动表单
18
+ - `httpResource` 代替手动 subscribe
19
+ - Service 禁止管理 UI 状态
20
+
21
+ ## 构建命令
22
+
23
+ ```bash
24
+ # 快速验证
25
+ pnpm lint
26
+ pnpm typecheck
27
+
28
+ # 完整检查
29
+ pnpm lint && pnpm typecheck && pnpm test
30
+ ```
@@ -0,0 +1,89 @@
1
+ # Spec Hardener — 实践案例
2
+
3
+ 以下案例来自 `form-excel-import-export` change 的实际加固过程。
4
+
5
+ ## 案例:proposal.md — 补"不做什么"
6
+
7
+ ### 加固前
8
+
9
+ proposal.md 的 Scope 段列出了 21 条要做的功能,但没有一条"不做什么"。
10
+
11
+ ### 加固后
12
+
13
+ 在 Scope 和 Impact 之间新增:
14
+
15
+ ```markdown
16
+ ## 不做什么
17
+ - 仅支持 Scope 中列出的控件类型(TextControl、NumberControl、DateTimeControl、
18
+ ChoiceControl、ObjectControl),其余控件均不在本版本支持范围内
19
+ - 不支持批量导入(不支持一次上传多个 Excel 文件)
20
+ - 不支持并发导入(不处理多个用户同时导入同一表单的并发控制)
21
+ - 不支持超大文件处理(不实现分片上传或流式解析)
22
+ - 不支持多 Sheet 导入/导出(仅单 Sheet 可见数据 + 单 Sheet 隐藏元数据)
23
+ - 仅支持使用系统导出的模板进行导入(不接受用户自定义格式的 Excel)
24
+ - 仅支持新增数据(不支持通过 Excel 更新已有 FormResponse)
25
+ - ObjectControl 仅支持单层数据关联(不支持嵌套对象)
26
+ ```
27
+
28
+ 关键动作:反向提问用户"第一版应该不做什么",将用户回答整理为结构化清单。
29
+
30
+ ---
31
+
32
+ ## 案例:spec.md — 补 Known Limitations
33
+
34
+ ### 加固后
35
+
36
+ spec.md 末尾新增:
37
+
38
+ ```markdown
39
+ ## Known Limitations
40
+ 本版本存在以下已知约束:
41
+
42
+ - **仅支持新增**:导入操作仅创建新的 FormResponse,不支持通过
43
+ Excel 更新已有数据。如需对已有数据进行批量修改,需等待后续版本。
44
+ - **ObjectControl 仅单层**:ObjectControl 的数据关联值仅支持一层
45
+ 对象引用,不支持嵌套的关联对象结构。
46
+ - **仅接受系统模板**:导入功能仅接受通过本系统导出接口生成的
47
+ Excel 模板填写后上传。用户自行构造的 Excel 将直接拒绝。
48
+ - **单文件串行处理**:每次导入仅支持一个 Excel 文件,不提供并发导入
49
+ 或流式逐行写入的能力。
50
+ - **固定限制不可配置**:5MB 文件上限、3000 行上限、200 列上限为
51
+ 硬编码限制,当前版本不提供管理员可配置的入口。
52
+ ```
53
+
54
+ 来源:反向 grill("三个月后可能在哪五处后悔")+ "不做什么"段。
55
+
56
+ ---
57
+
58
+ ## 案例:tasks.md — 细化验证
59
+
60
+ ### 加固前
61
+
62
+ ```markdown
63
+ - [x] 7.1 `FormExportServiceTest`:测试 Excel 生成逻辑(表头必填标记、
64
+ 填写说明行、下拉验证、隐藏 Sheet、Sheet 保护)
65
+ ```
66
+
67
+ ### 加固后
68
+
69
+ ```markdown
70
+ - [x] 7.1 `FormExportServiceTest`:覆盖 TextControl / NumberControl /
71
+ DateTimeControl / ChoiceControl(PredefinedOptionsSource + DatasetOptionsSource)
72
+ / ObjectControl 五种控件导出;验证标题行必填标记 *、填写说明行、_meta Sheet
73
+ 的 revisionId 与 key 顺序、Sheet VERY_HIDDEN + 保护、白名单过滤、空字段报错
74
+ ```
75
+
76
+ 关键动作:将"测试 X"的许愿式描述替换为场景覆盖清单。
77
+
78
+ ---
79
+
80
+ ## 案例:数字处理策略
81
+
82
+ 加固过程中发现的数字:
83
+
84
+ | 数字 | 处理方式 | 理由 |
85
+ |------|---------|------|
86
+ | 5MB / 3000行 / 200列 | **不修改** | 业务指标,用户确认 |
87
+ | #3B82F6 / #22C55E 等颜色 | **不修改** | 有引用来源(Figma) |
88
+ | w-225(对话框宽度) | **不修改** | 设计稿尺寸,可追溯 |
89
+ | application.properties vs .yaml | **修正** | 项目实际使用 yaml,文档写错 |