name: dapp-sdd:constitution description: 在实现任何Midnight示例dApp时使用,以确保符合质量标准和项目规范。
Midnight示例DApp章程
本章程为所有使用dapp-sdd插件构建的示例dApp定义了不可协商的标准。
技术栈(不可协商)
- 运行时: Node.js ≥22.0.0
- 语言: TypeScript 5.9+(严格模式启用)
- 合约:
contracts/目录中的Compact智能合约 - SDK: Midnight SDK包(
@midnight-ntwrk/*) - 脚手架: 来自
create-mn-app的项目结构
代码质量(零容忍)
所有代码必须通过质量检查,零警告或错误:
| 检查项 | 命令 | 要求 |
|---|---|---|
| 代码检查 | npm run lint |
无错误,无警告 |
| 格式化 | npm run format:check |
无格式化问题 |
| TypeScript | tsc --noEmit |
无类型错误 |
| Compact | compact compile |
编译通过 |
每次提交前必须通过质量门禁。
示例应用标准
教育导向
- README.md 必须解释dApp演示的内容
- 代码应具有可读性和教育性(清晰性优于巧妙性)
- 包含解释Midnight特定概念的内联注释
- 保持范围最小化 - 清晰地演示一个概念
文档
- README.md 遵循
readme-and-co:documentation-standards规范 - 包含带有确切命令的“如何运行”部分
- 记录环境设置要求
- 解释Compact合约的目的和电路
Git工作流
提交
- 遵循
git-lovely:useful-commits技能编写提交信息 - 每完成一个任务后提交并推送
- 所有工作在功能分支上进行,通过PR合并到主分支
分支命名
- 格式:
{功能名称}(由用户提供) - 示例:
counter-example,token-transfer
阶段评审(强制)
每个实现阶段后,运行以下两项评审:
1. Compact代码评审
使用 compact-reviewer:compact-reviewer 代理
指令:“您正在为Midnight Network评审一个示例dApp。
该项目旨在向学习Midnight的开发者演示概念。
建议要务实:
- 关注正确性和清晰性,而非生产环境问题
- 标记任何可能让学习者困惑的内容
- 标记学习者可能模仿的不良实践
- 接受那些能保持示例专注性的合理捷径
- 确保教育性注释准确无误”
2. TypeScript代码评审
使用 devs:code-reviewer 代理
指令:“您正在为Midnight Network评审一个示例dApp。
该项目旨在向学习Midnight的开发者演示概念。
建议要务实:
- 关注正确性和清晰性,而非生产环境问题
- 标记任何可能让学习者困惑的内容
- 标记学习者可能模仿的不良实践
- 接受那些能保持示例专注性的合理捷径
- 确保教育性注释准确无误”
所有评审发现的问题必须在进入下一阶段前解决。
测试要求
- 为主功能包含基本的正向路径测试
- 使用
TestContext测试合约电路 - 在README中记录如何运行测试
- PR标记为就绪前,测试必须通过
状态管理
插件状态存储在 .dapp-sdd/ 目录中(已加入.gitignore):
.dapp-sdd/
├── spec.md # 扩展的规范文档
├── plan.md # 实施计划
├── tasks.md # 带复选框的任务列表
└── pr-context.json # PR元数据
技能参考
在实施过程中,利用以下技能:
| 阶段 | 技能 |
|---|---|
| 规范制定 | compact-core:language-reference, midnight-dapp:* |
| 计划 | compact-core:contract-patterns, compact-core:typescript-integration, midnight-proofs:* |
| 实施 | compact-core:standard-library, compact-core:privacy-disclosure, compact-core:testing-debugging, midnight-tooling:* |
| 提交 | git-lovely:useful-commits |
| 文档 | readme-and-co:documentation-standards |