# 参与贡献

感谢改进 FlipSpec。请先用 Issue 描述问题、期望语义和最小示例；影响 DSL 或公共 API 的变更应先形成设计讨论，再提交实现。

## 开发流程

```bash
moon check
moon build
moon test
moon run cmd/main
moon info
moon fmt
```

提交前请确保：

- 新功能同时包含正常、错误和边界测试；
- 修改解析语义时同步更新 `docs/LANGUAGE.md`；
- 修改搜索语义或复杂度时同步更新 `docs/DESIGN.md`；
- 公共 API 变化反映在 `pkg.generated.mbti` 和 `CHANGELOG.md`；
- 不提交 `_build`、`.mooncakes`、凭据或来源不明的测试数据；
- 第三方代码或素材必须先记录来源、许可证和使用范围。

## 提交与合并请求

建议使用简洁的祈使句提交标题，例如 `parser: report duplicate features`。一个提交应对应一个可说明的工程变化，不使用空提交凑数量。合并请求需写明动机、行为变化、测试命令和兼容性影响。

## 兼容性

补丁版本不得无说明地改变既有 DSL 的含义。弃用公共 API 时，应至少保留一个次版本的迁移说明。错误消息文字可以改善，但稳定诊断码的基本含义不应改变。
