diff --git a/AGENTS.md b/AGENTS.md new file mode 120000 index 0000000..42061c0 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 834ea38..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,53 +0,0 @@ -# Discord-bots - -Discord (など) で定期実行などされるBotのmonorepo。 - -## Bot 一覧 - -- bots/auto-moderator: 運営タスクリマインド (毎日) -- bots/gsc-report: Google の検索パフォーマンス通知 (毎週) -- bots/asakatsu-bot: 朝活確認 (毎日) -- bots/joji-bot: Youtube から RSS で最新動画取得 (毎日) - -詳細は ./rollcron.yaml で。 - -## 機密情報 - -### 配置・権限 - -sops を使う場合: - -- SOPS ファイル: `bots/BOT/sops.env` -- 暗号化ルール: `./.sops.yaml` - -ローカル,デプロイ読み取りチェーン: `run.sh` -> `sops exec-env` -> `bots/BOT/sops.env` + (`.age-key` | `~/.config/sops/age/keys.txt`) - -sops を使わない場合: - -- ローカル読み取りチェーン: `run.sh` -> `bots/BOT/.env` -- デプロイ読み取りチェーン: `rollcron.yaml` -> `~/run/discord-bots/BOT/env` (サーバーに `bots/BOT/.env` は存在しないので二重読みはない) - -詳細は [docs/sops.md](docs/sops.md) を参照。 - -### 管理ルール - -- `.env` を読まない。`sops -d` を実行しない。`.age-key` を読まない。サーバ上の機密ファイルを読まない。 -- もし確認する必要がある場合はコンテキストに入らないような仕組みでやる: `cat .env | cut -d= -f1` やハッシュ、 `wc`、コマンド直接実行など - -## ファイル・インフラ配置 (.git 外) - -### ローカルファイル配置 - -- `.age-key` - ローカル復号用 - -### coolify.utcode.net - -- `/home/deploy/.config/sops/age/keys.txt` - デプロイ時復号用 - -## コマンド - -```bash -eval "$(direnv export bash)" && COMMAND -sops exec-env path/to/sops.env 'echo success!' # sops 鍵検証 -ssh USER@coolify.utcode.net "sudo -u deploy bash -c 'COMMAND'" # デプロイ先で操作 -``` diff --git a/CLAUDE.md b/CLAUDE.md new file mode 120000 index 0000000..42061c0 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +README.md \ No newline at end of file diff --git a/README.md b/README.md index dbc128a..c71687b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,15 @@ -# Discord Bots +# Discord-bots + +Discord (など) で定期実行などされるBotのmonorepo。 + +## Bot 一覧 + +- bots/auto-moderator: 運営タスクリマインド (毎日) +- bots/gsc-report: Google の検索パフォーマンス通知 (毎週) +- bots/asakatsu-bot: 朝活確認 (毎日) +- bots/joji-bot: Youtube から RSS で最新動画取得 (毎日) + +詳細は ./rollcron.yaml で。 ## Bot を追加する @@ -45,3 +56,45 @@ schedule の書き方: ``` SOPS を使う場合は [docs/sops.md](docs/sops.md) を参照。 + +## 機密情報 + +### 配置・権限 + +sops を使う場合: + +- SOPS ファイル: `bots/BOT/sops.env` +- 暗号化ルール: `./.sops.yaml` + +ローカル,デプロイ読み取りチェーン: `run.sh` -> `sops exec-env` -> `bots/BOT/sops.env` + (`.age-key` | `~/.config/sops/age/keys.txt`) + +sops を使わない場合: + +- ローカル読み取りチェーン: `run.sh` -> `bots/BOT/.env` +- デプロイ読み取りチェーン: `rollcron.yaml` -> `~/run/discord-bots/BOT/env` (サーバーに `bots/BOT/.env` は存在しないので二重読みはない) + +詳細は [docs/sops.md](docs/sops.md) を参照。 + +## ファイル・インフラ配置 (.git 外) + +### ローカルファイル配置 + +- `.age-key` - ローカル復号用 + +### coolify.utcode.net + +- `/home/deploy/.config/sops/age/keys.txt` - デプロイ時復号用 + +## コマンド + +```bash +eval "$(direnv export bash)" && COMMAND +sops exec-env path/to/sops.env 'echo success!' # sops 鍵検証 +ssh USER@coolify.utcode.net "sudo -u deploy bash -c 'COMMAND'" # デプロイ先で操作 +``` + +## AIエージェント向けルール + +このセクションはAIコーディングエージェント (Claude Code, Codex 等) 向け。 + +- `.env`、`.age-key`、`sops -d` の出力、サーバ上の機密ファイルをコンテキストに入れないこと。確認が必要な場合は `cat .env | cut -d= -f1`、ハッシュ、`wc`、コマンド直接実行など値が露出しない方法を使う。