# Contributing

欢迎提交 Aseprite 格式变体、解析边界、资源校验规则、运行时行为、导出适配、测试和文档改进。

## 开发要求

- 每个改动应解决一个清晰问题，并说明行为变化和适用边界。
- 新功能必须包含成功路径、边界或错误路径测试。
- 不提交 Aseprite 程序、商业素材、来源不明样本或没有再分发授权的文件。
- 公共 API 变化需更新 `docs/API.md`、`pkg.generated.mbti` 和 `CHANGELOG.md`。
- 不使用空提交、重复提交或机械拆分制造开发记录。

## 提交前检查

```bash
moon fmt --check
moon check --target all --deny-warn
moon build --target all --deny-warn
moon test --target all --deny-warn
moon run examples/basic
moon run cmd/main
moon coverage analyze -- -f summary
moon info --target all
git diff --exit-code -- pkg.generated.mbti cmd/main/pkg.generated.mbti examples/basic/pkg.generated.mbti
```

Native 目标需要 C 编译器。无法在本机完成 Native 构建时，应确保 Web 后端通过，并由 GitHub Actions 多平台矩阵完成复核。

## Pull Request

Pull Request 应写明问题、实现、测试证据、兼容性和许可证影响。修复 bug 时优先先加入能复现问题的测试；涉及第三方格式或资料时，在 `docs/FORMAT_REFERENCES.md` 中补充来源和参考范围。
