コントリビューションに興味を持っていただきありがとうございます。変更の提案方法と、こちらが期待する内容をまとめています。
- Issue を立て、タイトルと説明を明確に記載してください。
- バグ: 再現手順、期待する動作と実際の動作、環境(CDN・ランタイム)を含めてください。
- 機能: ユースケースと、フレームワークのスコープ(Edge セキュリティ、ポリシー駆動、WAF と補完)にどう合うかを記載してください。
このプロジェクトは GitHub Flow で運用します。main をリリース可能な統合ブランチとし、すべての変更は短命の feature / fix / docs ブランチから Pull Request で取り込みます。
- リポジトリを Fork し、
mainからブランチを作成(例:fix/admin-gate,docs/quickstart)。 - 変更は小さく分けたコミットで行ってください。
.jaが付かないファイルとコード内コメントは 英語、.jaファイルには 日本語 のみ記載してください。 - 手動でテスト: 変更したランタイム(CloudFront Functions のコンソール、Workers の
wrangler devなど)で動作確認してください。 - Pull Request を
main向けに作成し、短い説明と、あれば Issue へのリンクを書いてください。
- 設計との整合: Edge を「最前線」とする、可能な範囲でポリシー駆動、WAF の責務(レート制限、OWASP、Bot)と重複しないこと。
- 後方互換: 既存のポリシー・ランタイムの挙動を壊す変更は、移行パスを明示した上で行ってください。
- ドキュメント: 機能追加・セットアップ変更時は README や docs を更新してください。
.ja以外のファイルは英語で記載してください。
PR 作成前に、次のチェックがローカルで通ることを確認してください。
npm run lint:policy -- policy/base.ymlnpm run buildnode scripts/compile-cloudflare.jsnpm run test:runtimenpm run test:unitnpm run test:driftnpm run test:security-baseline
GitHub Actions でも、main への push/PR で同じゲートを実行します。
リリースはタグで自動化しています:
package.jsonの version を更新- リリースコミットを
mainにマージ vX.Y.Zタグを push.github/workflows/release-npm.ymlが品質ゲートを実行し、成功時のみ npm 公開
- GitHub Actions は SHA でピン留めしてください。40文字のコミット SHA とタグコメントを併記する形式です。例:
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4Dependabot が毎週更新 PR を作成します。差分を確認してからマージしてください。 uses: <action>@<tag>のみの記法は使用しないでください。Lint 追加後は CI で弾きます。- npm 依存は
.github/dependabot.ymlで追跡。npm auditの HIGH/CRITICAL はマージをブロックします。 - セキュリティに影響する経路(スキーマ、コンパイラ、テンプレート、ワークフロー)は CODEOWNERS によるレビューを必須化(
.github/CODEOWNERS)。 - リリース整合性: タグ駆動リリースは、
NPM_TOKENが未設定の場合npm publish --provenanceで公開します。
src/- TypeScript ソース。CLI、コンパイラ、ライブラリ、テストのロジックはここを編集します。bin/,lib/,scripts/,parser/,validator/,emitter/-npm run build:tsが出力する compiled JavaScript と.d.tsの package artifact。直接編集しないでください。docs/– アーキテクチャ、脅威モデル、判断マトリクス、クイックスタート(英語 +.ja)。policy/– YAML ポリシー。profiles/にプロファイル(例:balanced.yml)を配置。templates/- compiler が deploy 可能な edge code を生成するために使う runtime template。tests/golden/- 生成された drift fixture。手編集ではなく drift workflow で更新します。runtimes/– CloudFront Functions、Lambda@Edge、Cloudflare Workers。コード・コメントは 英語。examples/– AWS CloudFront / Cloudflare のデプロイ例。
正となる実装ソースは src/**/*.ts、templates/ 配下の runtime template、policy/docs です。root 配下の JavaScript は、npm 利用者が TypeScript build なしで package を実行できるようにするため、また checkout 直後の CLI smoke test を成立させるために commit しています。
TypeScript ソースを変更するときは:
- 対応する
src/配下のファイルを編集します。 npm run build:tsを実行します。- package surface に含まれる artifact が変わる場合は、
src/**/*.tsと生成された artifact(scripts/*.js,lib/*.jsなど)の両方を commit します。
生成済み JavaScript や .d.ts を直接編集しないでください。.gitattributes では package artifact、golden fixture、coverage output、生成型定義を generated として扱い、GitHub の言語統計が手書きソースをより正確に表すようにしています。
.jaが付かないファイル(.js,.ts,.yml,.md等): 英語のみ(コメント・ドキュメント・PR のコミットメッセージ)。.jaが付くファイル(例:README.ja.md,docs/quickstart.ja.md): ユーザー向け文面は 日本語のみ。
コントリビューションいただいた内容は、本プロジェクトと同じライセンス(MIT)で提供されることにご同意いただいたものとみなします。
不明点があれば、Issue を「question」ラベルで立てるか、機密にしたい場合は SECURITY.md の連絡手段をご利用ください。