diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100644 index 0000000..51d61fd --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Simple pre-commit guard for common mistakes +# - Prevent committing or deleting .env files +# - Block deletions in protected directories (docs/, src/backend/) + +set -e + +# Get staged name-status +STAGED=$(git diff --cached --name-status) + +# Prevent adding/modifying .env files +if echo "$STAGED" | grep -E '^[AM]\s+.*\.env(\.|$)\|^A\s+\.env$' >/dev/null; then + echo "ERROR: .env files must not be added/modified in repository. Keep them local and add to .gitignore." >&2 + exit 1 +fi + +# Prevent deletion of protected paths +DELETED=$(echo "$STAGED" | awk '$1 == "D" {print $2}') +if [ -n "$DELETED" ]; then + while read -r f; do + case "$f" in + docs/*|src/backend/*) + echo "ERROR: Deletion detected in protected path: $f" >&2 + echo "Please review and confirm via PR before removing files in protected directories." >&2 + exit 1 + ;; + *) ;; + esac + done <<< "$DELETED" +fi + +# All checks passed +exit 0 diff --git a/.gitignore b/.gitignore index 277b2b8..2ad7b03 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,13 @@ # GitBucket Issues SyncDir docs/issues/ + +.github/ + +# Local env / temp +.env +.env.* +*.tmp +*.bak +*.swp +*.sw \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7b2fd83 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# CONTRIBUTING + +このリポジトリへの貢献ルール(開発者向け簡略版) + +目的 +- 重要ファイルの誤削除や機密情報の誤コミットを防ぎ、安定した開発ワークフローを保つ。 + +必須ルール +1. 機密ファイルはリポジトリにコミットしない + - `.env`, `.env.*` 等の環境変数ファイルやシークレットは常にローカルに置き、`.gitignore` に追加すること。 + +2. 破壊的操作は明示的承認を要する + - ファイル/ディレクトリの大量削除や重要ディレクトリ(`docs/`, `src/backend/` 等)への削除は、プルリクエストでレビューを行い、明示的承認を得てからマージすること。 + +3. コミット前チェック + - コミット前に `git status` を必ず確認すること。 + - `pre-commit` フックをリポジトリの `core.hooksPath` として有効化することを推奨する(方法は下記)。 + +4. フックの有効化(手順) + - 初回セットアップ時にローカルで以下を実行して下さい: + +```bash +# リポジトリルートで実行 +git config core.hooksPath .githooks +``` + +これにより `.githooks/pre-commit` が実行され、危険な操作の自動検出を行います。 + +5. 一時ファイル扱いのルール + - 一時ファイル(`*.tmp`, `*.bak`, editor swap など)は `.gitignore` に含める。 + - リポジトリ外の生成物(`node_modules`, `target/`, `dist/` など)はコミットしない。 + +6. ジャーナル記録 + - 重要な作業(破壊的操作など)は `journals/` に記録し、コミットに関連付けることを推奨。 + +--- + +このファイルはプロジェクトの貢献ルールの最低セットです。必要に応じて運用ルールを拡張してください。 \ No newline at end of file