@chenmk/superflow 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.
- package/INSTALL.en.md +106 -0
- package/INSTALL.md +664 -0
- package/LICENSE +21 -0
- package/README.md +142 -0
- package/README.zh-CN.md +117 -0
- package/assets/context-templates/business-rules.md +98 -0
- package/assets/context-templates/decisions.md +153 -0
- package/assets/context-templates/external-systems.md +166 -0
- package/assets/context-templates/incidents.md +89 -0
- package/assets/manifest.json +53 -0
- package/assets/prompts/superflow-archive.md +9 -0
- package/assets/prompts/superflow-clarify.md +10 -0
- package/assets/prompts/superflow-design.md +10 -0
- package/assets/prompts/superflow-docs.md +10 -0
- package/assets/prompts/superflow-implement.md +10 -0
- package/assets/prompts/superflow-pipeline.md +13 -0
- package/assets/prompts/superflow-verify.md +10 -0
- package/assets/rules/superflow-phase-guard.md +50 -0
- package/assets/scripts/claude-auto-backup-hook.sh +313 -0
- package/assets/scripts/codex-auto-backup-hook.sh +361 -0
- package/assets/scripts/install-sql-pre-commit.sh +44 -0
- package/assets/scripts/superflow-contract-hooks.sh +744 -0
- package/assets/scripts/superflow-delivery-check.sh +315 -0
- package/assets/scripts/superflow-dependency-update-hook.sh +161 -0
- package/assets/scripts/superflow-enforce-hook.sh +70 -0
- package/assets/scripts/superflow-hook-guard.sh +132 -0
- package/assets/scripts/superflow-integration-evidence-hook.sh +80 -0
- package/assets/scripts/superflow-sql-sync-hook.py +950 -0
- package/assets/scripts/superflow-test-report-lint.py +433 -0
- package/assets/scripts/superflow-verify-integration.sh +90 -0
- package/assets/scripts/sync-settings-json.py +52 -0
- package/assets/skills/api-doc-changelog/SKILL.md +193 -0
- package/assets/skills/openspec-apply-change/SKILL.md +156 -0
- package/assets/skills/openspec-archive-change/SKILL.md +114 -0
- package/assets/skills/openspec-explore/SKILL.md +288 -0
- package/assets/skills/openspec-propose/SKILL.md +110 -0
- package/assets/skills/superflow-archive/SKILL.md +61 -0
- package/assets/skills/superflow-clarify/SKILL.md +146 -0
- package/assets/skills/superflow-clarify/agents/openai.yaml +4 -0
- package/assets/skills/superflow-design/SKILL.md +83 -0
- package/assets/skills/superflow-design/agents/openai.yaml +4 -0
- package/assets/skills/superflow-docs/SKILL.md +316 -0
- package/assets/skills/superflow-docs/agents/openai.yaml +4 -0
- package/assets/skills/superflow-hotfix/SKILL.md +48 -0
- package/assets/skills/superflow-implement/SKILL.md +461 -0
- package/assets/skills/superflow-implement/agents/openai.yaml +4 -0
- package/assets/skills/superflow-pipeline/SKILL.md +844 -0
- package/assets/skills/superflow-pipeline/agents/openai.yaml +4 -0
- package/assets/skills/superflow-pipeline/references/api-design-template.md +431 -0
- package/assets/skills/superflow-pipeline/references/architecture-design-template.md +119 -0
- package/assets/skills/superflow-pipeline/references/batch-prompt-template.md +536 -0
- package/assets/skills/superflow-pipeline/references/batch-split-guide.md +140 -0
- package/assets/skills/superflow-pipeline/references/decision-point.md +30 -0
- package/assets/skills/superflow-pipeline/references/dirty-worktree.md +35 -0
- package/assets/skills/superflow-pipeline/references/document-templates.md +123 -0
- package/assets/skills/superflow-pipeline/references/feature-gated-workflow.md +124 -0
- package/assets/skills/superflow-pipeline/references/implementation-prompt-template.md +1056 -0
- package/assets/skills/superflow-pipeline/references/mock-strategy-guide.md +86 -0
- package/assets/skills/superflow-pipeline/references/openspec-format.md +57 -0
- package/assets/skills/superflow-pipeline/references/orchestration.md +639 -0
- package/assets/skills/superflow-pipeline/references/p0-baseline-template.md +174 -0
- package/assets/skills/superflow-pipeline/references/project-config.md +40 -0
- package/assets/skills/superflow-pipeline/references/prompt-usage-template.md +152 -0
- package/assets/skills/superflow-pipeline/references/quality-gate.md +299 -0
- package/assets/skills/superflow-pipeline/references/quality-standards.md +190 -0
- package/assets/skills/superflow-pipeline/references/reviewer-checklist.md +154 -0
- package/assets/skills/superflow-pipeline/references/sql-risk-review-checklist.md +323 -0
- package/assets/skills/superflow-pipeline/references/subagent-progress.md +90 -0
- package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +125 -0
- package/assets/skills/superflow-pipeline/references/test-execution-template.md +220 -0
- package/assets/skills/superflow-pipeline/references/test-guide.md +30 -0
- package/assets/skills/superflow-pipeline/references/traceability-matrix.md +106 -0
- package/assets/skills/superflow-pipeline/references/validation-integrity.md +134 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-archive.sh +178 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-env.sh +118 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +428 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-handoff.sh +296 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-state.sh +574 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-status.sh +172 -0
- package/assets/skills/superflow-pipeline/scripts/superflow-yaml-validate.sh +138 -0
- package/assets/skills/superflow-table-impact-analysis/SKILL.md +77 -0
- package/assets/skills/superflow-tweak/SKILL.md +46 -0
- package/assets/skills/superflow-verify/SKILL.md +112 -0
- package/assets/skills-en/api-doc-changelog/SKILL.md +193 -0
- package/assets/skills-en/openspec-apply-change/SKILL.md +156 -0
- package/assets/skills-en/openspec-archive-change/SKILL.md +114 -0
- package/assets/skills-en/openspec-explore/SKILL.md +288 -0
- package/assets/skills-en/openspec-propose/SKILL.md +110 -0
- package/assets/skills-en/superflow-archive/SKILL.md +61 -0
- package/assets/skills-en/superflow-clarify/SKILL.md +146 -0
- package/assets/skills-en/superflow-clarify/agents/openai.yaml +4 -0
- package/assets/skills-en/superflow-design/SKILL.md +83 -0
- package/assets/skills-en/superflow-design/agents/openai.yaml +4 -0
- package/assets/skills-en/superflow-docs/SKILL.md +316 -0
- package/assets/skills-en/superflow-docs/agents/openai.yaml +4 -0
- package/assets/skills-en/superflow-hotfix/SKILL.md +48 -0
- package/assets/skills-en/superflow-implement/SKILL.md +461 -0
- package/assets/skills-en/superflow-implement/agents/openai.yaml +4 -0
- package/assets/skills-en/superflow-pipeline/SKILL.md +844 -0
- package/assets/skills-en/superflow-pipeline/agents/openai.yaml +4 -0
- package/assets/skills-en/superflow-pipeline/references/api-design-template.md +431 -0
- package/assets/skills-en/superflow-pipeline/references/architecture-design-template.md +119 -0
- package/assets/skills-en/superflow-pipeline/references/batch-prompt-template.md +536 -0
- package/assets/skills-en/superflow-pipeline/references/batch-split-guide.md +140 -0
- package/assets/skills-en/superflow-pipeline/references/decision-point.md +30 -0
- package/assets/skills-en/superflow-pipeline/references/dirty-worktree.md +35 -0
- package/assets/skills-en/superflow-pipeline/references/document-templates.md +123 -0
- package/assets/skills-en/superflow-pipeline/references/feature-gated-workflow.md +124 -0
- package/assets/skills-en/superflow-pipeline/references/implementation-prompt-template.md +1056 -0
- package/assets/skills-en/superflow-pipeline/references/mock-strategy-guide.md +86 -0
- package/assets/skills-en/superflow-pipeline/references/openspec-format.md +57 -0
- package/assets/skills-en/superflow-pipeline/references/orchestration.md +639 -0
- package/assets/skills-en/superflow-pipeline/references/p0-baseline-template.md +174 -0
- package/assets/skills-en/superflow-pipeline/references/project-config.md +40 -0
- package/assets/skills-en/superflow-pipeline/references/prompt-usage-template.md +152 -0
- package/assets/skills-en/superflow-pipeline/references/quality-gate.md +299 -0
- package/assets/skills-en/superflow-pipeline/references/quality-standards.md +190 -0
- package/assets/skills-en/superflow-pipeline/references/reviewer-checklist.md +154 -0
- package/assets/skills-en/superflow-pipeline/references/sql-risk-review-checklist.md +323 -0
- package/assets/skills-en/superflow-pipeline/references/subagent-progress.md +90 -0
- package/assets/skills-en/superflow-pipeline/references/superpower-technical-design-template.md +125 -0
- package/assets/skills-en/superflow-pipeline/references/test-execution-template.md +220 -0
- package/assets/skills-en/superflow-pipeline/references/test-guide.md +30 -0
- package/assets/skills-en/superflow-pipeline/references/traceability-matrix.md +106 -0
- package/assets/skills-en/superflow-pipeline/references/validation-integrity.md +134 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-archive.sh +178 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-env.sh +118 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +428 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-handoff.sh +296 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-state.sh +574 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-status.sh +172 -0
- package/assets/skills-en/superflow-pipeline/scripts/superflow-yaml-validate.sh +138 -0
- package/assets/skills-en/superflow-table-impact-analysis/SKILL.md +77 -0
- package/assets/skills-en/superflow-tweak/SKILL.md +46 -0
- package/assets/skills-en/superflow-verify/SKILL.md +112 -0
- package/dist/cli/index.js +186 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/archive.js +6 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/clarify.js +6 -0
- package/dist/commands/clarify.js.map +1 -0
- package/dist/commands/design.js +6 -0
- package/dist/commands/design.js.map +1 -0
- package/dist/commands/docs.js +6 -0
- package/dist/commands/docs.js.map +1 -0
- package/dist/commands/doctor.js +473 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/implement.js +6 -0
- package/dist/commands/implement.js.map +1 -0
- package/dist/commands/init.js +471 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/pipeline.js +6 -0
- package/dist/commands/pipeline.js.map +1 -0
- package/dist/commands/scan.js +59 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/status.js +173 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/uninstall.js +213 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.js +187 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/verify.js +6 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/core/assets.js +27 -0
- package/dist/core/assets.js.map +1 -0
- package/dist/core/context.js +100 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/dependencies.js +146 -0
- package/dist/core/dependencies.js.map +1 -0
- package/dist/core/detect.js +71 -0
- package/dist/core/detect.js.map +1 -0
- package/dist/core/i18n.js +103 -0
- package/dist/core/i18n.js.map +1 -0
- package/dist/core/integrity.js +46 -0
- package/dist/core/integrity.js.map +1 -0
- package/dist/core/manifest.js +18 -0
- package/dist/core/manifest.js.map +1 -0
- package/dist/core/prompts.js +20 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/registry.js +134 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/rules.js +17 -0
- package/dist/core/rules.js.map +1 -0
- package/dist/core/scripts.js +40 -0
- package/dist/core/scripts.js.map +1 -0
- package/dist/core/skill-check.js +31 -0
- package/dist/core/skill-check.js.map +1 -0
- package/dist/core/skills.js +56 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/state.js +43 -0
- package/dist/core/state.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/path.js +11 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/shell.js +29 -0
- package/dist/utils/shell.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Mock 策略与边界声明指南
|
|
2
|
+
|
|
3
|
+
比赛/项目中涉及外部接口、设备回调、第三方服务时,必须明确 Mock 策略并在交付物中声明。
|
|
4
|
+
|
|
5
|
+
## 何时需要 Mock
|
|
6
|
+
|
|
7
|
+
| 场景 | 是否 Mock | 说明 |
|
|
8
|
+
|------|-----------|------|
|
|
9
|
+
| 外部 HTTP API(支付、短信、地图) | ✅ 必须 | 避免真实调用产生费用或副作用 |
|
|
10
|
+
| 设备回调(门禁、摄像头、传感器) | ✅ 必须 | 无真实硬件环境 |
|
|
11
|
+
| 数据库(无测试环境) | ✅ 可选 | 可用 H2 / Docker MySQL |
|
|
12
|
+
| 消息队列 | ✅ 可选 | 可用内存队列替代 |
|
|
13
|
+
| 缓存(Redis) | ✅ 可选 | 可用 Caffeine / 本地缓存 |
|
|
14
|
+
| 文件存储(OSS) | ✅ 可选 | 可用本地文件系统 |
|
|
15
|
+
|
|
16
|
+
## Mock 方式选择
|
|
17
|
+
|
|
18
|
+
| 方式 | 适用场景 | 实现手段 | 验证能力 |
|
|
19
|
+
|------|----------|----------|----------|
|
|
20
|
+
| `@MockBean` | Spring Boot 单元/集成测试 | Mockito | 验证调用次数、参数 |
|
|
21
|
+
| `WireMock` | HTTP 外部服务 | 独立 Mock 服务器 | 验证请求格式、返回预设响应 |
|
|
22
|
+
| 本地模拟服务 | 设备回调、Webhook | 单独启动的 HTTP 服务 | 手动触发回调 |
|
|
23
|
+
| 接口假实现 | 无测试框架时 | 接口的硬编码实现 | 固定返回 |
|
|
24
|
+
| H2 内存数据库 | 无 MySQL 环境 | `spring.datasource.url=jdbc:h2:mem` | 标准 SQL 验证 |
|
|
25
|
+
|
|
26
|
+
## Mock 边界声明模板
|
|
27
|
+
|
|
28
|
+
每个使用 Mock 的外部依赖必须在交付文档中填写下表:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
## Mock 声明
|
|
32
|
+
|
|
33
|
+
### 外部依赖 1:<名称>
|
|
34
|
+
|
|
35
|
+
| 项目 | 说明 |
|
|
36
|
+
|------|------|
|
|
37
|
+
| 实际能力 | ____(如:真实支付扣款) |
|
|
38
|
+
| Mock 方式 | ____(如:@MockBean + 固定返回 success) |
|
|
39
|
+
| Mock 范围 | ____(哪些接口/方法被 Mock) |
|
|
40
|
+
| 假设条件 | ____(如:假设支付网关永远返回成功) |
|
|
41
|
+
| 替代验证 | ____(如何验证代码逻辑正确,如:检查数据库状态变化) |
|
|
42
|
+
| 恢复真实 | ____(如何切回真实服务,如:去掉 @MockBean 注解) |
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 示例:门禁设备回调 Mock
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
### 外部依赖:人行门禁设备
|
|
49
|
+
|
|
50
|
+
| 项目 | 说明 |
|
|
51
|
+
|------|------|
|
|
52
|
+
| 实际能力 | 真实硬件设备,刷卡/人脸识别后主动回调服务器 |
|
|
53
|
+
| Mock 方式 | 本地启动模拟 HTTP 服务(Python Flask / Node.js) |
|
|
54
|
+
| Mock 范围 | `/device/callback` 接口接收回调 |
|
|
55
|
+
| 假设条件 | 假设设备回调的报文格式与真实设备一致 |
|
|
56
|
+
| 替代验证 | 手动 POST 模拟回调报文,验证服务器处理逻辑(记录通行日志、开门指令) |
|
|
57
|
+
| 恢复真实 | 将回调地址指向真实设备网关 |
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 示例:支付接口 Mock
|
|
61
|
+
|
|
62
|
+
```java
|
|
63
|
+
// 测试中使用 @MockBean
|
|
64
|
+
@MockBean
|
|
65
|
+
private PaymentClient paymentClient;
|
|
66
|
+
|
|
67
|
+
@BeforeEach
|
|
68
|
+
void setUp() {
|
|
69
|
+
when(paymentClient.charge(any()))
|
|
70
|
+
.thenReturn(PaymentResult.success("mock-trade-no"));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// 验证替代方式:检查订单状态是否变为 PAID
|
|
74
|
+
@Test
|
|
75
|
+
void shouldUpdateOrderStatusWhenPaymentSuccess() {
|
|
76
|
+
// 执行支付流程
|
|
77
|
+
// 断言:数据库订单状态 = PAID(不依赖真实支付)
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 禁止事项
|
|
82
|
+
|
|
83
|
+
1. ❌ Mock 后不声明假设条件
|
|
84
|
+
2. ❌ Mock 范围过大(把整个 Service 层都 Mock 掉)
|
|
85
|
+
3. ❌ 无替代验证方式(Mock 后不知道代码对不对)
|
|
86
|
+
4. ❌ 生产代码中残留 Mock 逻辑
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# OpenSpec 规范基础
|
|
2
|
+
|
|
3
|
+
## 三阶段工作流
|
|
4
|
+
|
|
5
|
+
| 阶段 | 文件名 | 说明 |
|
|
6
|
+
|------|--------|------|
|
|
7
|
+
| Stage 1: Creating Changes | `proposal.md` / `spec.md` / `design.md` / `tasks.md` | 写提案/规范/设计/任务 |
|
|
8
|
+
| Stage 2: Implementing Changes | 按 `tasks.md` 顺序逐项实现 | 确保实现满足 spec 场景 |
|
|
9
|
+
| Stage 3: Archiving Changes | 上线后将 `changes/<id>/` 移入 `changes/archive/` | 归档已完成的需求 |
|
|
10
|
+
|
|
11
|
+
## 目录规范
|
|
12
|
+
|
|
13
|
+
所有文档必须放在 `doc/openspec/` 目录下:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
doc/openspec/
|
|
17
|
+
├── project.md # 项目定义
|
|
18
|
+
├── SPEC.md # OpenSpec 规范(含目录规范)
|
|
19
|
+
├── specs/ # 功能规格文档
|
|
20
|
+
│ └── <feature-name>/
|
|
21
|
+
│ └── spec.md
|
|
22
|
+
├── changes/ # 需求变更/新功能
|
|
23
|
+
│ └── <change-name>/
|
|
24
|
+
│ ├── proposal.md
|
|
25
|
+
│ ├── design.md
|
|
26
|
+
│ ├── tasks.md
|
|
27
|
+
│ ├── tests.md
|
|
28
|
+
│ └── specs/<feature>/
|
|
29
|
+
│ └── spec.md
|
|
30
|
+
├── designs/ # 架构/技术设计
|
|
31
|
+
├── reviews/ # 设计评审报告
|
|
32
|
+
├── plans/ # 计划文档
|
|
33
|
+
└── tests/ # 测试文档
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**禁止:**
|
|
37
|
+
- 在 `doc/openspec/` 根目录散落文档
|
|
38
|
+
- 使用中文目录名
|
|
39
|
+
- 在其他位置创建 openspec 文档
|
|
40
|
+
|
|
41
|
+
## Spec 编写规则(必须遵守)
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
## ADDED|MODIFIED|REMOVED|RENAMED Requirements
|
|
45
|
+
|
|
46
|
+
### Requirement: <需求描述>
|
|
47
|
+
#### Scenario: <场景名称>
|
|
48
|
+
- **WHEN** <前置条件>
|
|
49
|
+
- **THEN** <预期结果>
|
|
50
|
+
- **AND** <附加条件>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**规则:**
|
|
54
|
+
- 使用 `## ADDED|MODIFIED|REMOVED|RENAMED Requirements`
|
|
55
|
+
- 每个 `### Requirement:` 至少包含 1 个 `#### Scenario:`
|
|
56
|
+
- Scenario 用 `- **WHEN** / - **THEN** / - **AND**` 描述可验收行为
|
|
57
|
+
- 涉及边界条件的必须单独写 Scenario
|