From 46ab7cf60dcb9c618299782d0193d0534daa101e Mon Sep 17 00:00:00 2001 From: aster-void <137767097+aster-void@users.noreply.github.com> Date: Sun, 5 Apr 2026 20:31:21 +0900 Subject: [PATCH 1/3] Merge README and CLAUDE.md into single README, symlink CLAUDE.md and AGENTS.md Both CLAUDE.md and AGENTS.md now point to README.md so that humans, Claude Code, and Codex all read the same document. Co-Authored-By: Claude Opus 4.6 (1M context) --- AGENTS.md | 1 + CLAUDE.md | 54 +----------------------------------------------------- README.md | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 55 insertions(+), 54 deletions(-) create mode 120000 AGENTS.md mode change 100644 => 120000 CLAUDE.md 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..e0cfc2c 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,44 @@ 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) を参照。 + +### 管理ルール + +- `.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'" # デプロイ先で操作 +``` From 6394ada9ba1952856d1c5698c49e8220f3da00fc Mon Sep 17 00:00:00 2001 From: aster-void <137767097+aster-void@users.noreply.github.com> Date: Mon, 6 Apr 2026 00:29:48 +0900 Subject: [PATCH 2/3] Scope agent-specific rules with conditional phrasing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 管理ルールセクションをエージェント向け条件付き表現に変更。 README を人間・エージェント両方が自然に読めるようにする。 Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index e0cfc2c..ec36fe7 100644 --- a/README.md +++ b/README.md @@ -77,8 +77,7 @@ sops を使わない場合: ### 管理ルール -- `.env` を読まない。`sops -d` を実行しない。`.age-key` を読まない。サーバ上の機密ファイルを読まない。 -- もし確認する必要がある場合はコンテキストに入らないような仕組みでやる: `cat .env | cut -d= -f1` やハッシュ、 `wc`、コマンド直接実行など +> **AIエージェントへ:** `.env`、`.age-key`、`sops -d` の出力、サーバ上の機密ファイルをコンテキストに入れないこと。確認が必要な場合は `cat .env | cut -d= -f1`、ハッシュ、`wc`、コマンド直接実行など値が露出しない方法を使う。 ## ファイル・インフラ配置 (.git 外) From f2b9a81d475d4a9a329490353c5e324155e2ba52 Mon Sep 17 00:00:00 2001 From: aster-void <137767097+aster-void@users.noreply.github.com> Date: Mon, 6 Apr 2026 00:30:29 +0900 Subject: [PATCH 3/3] Move agent rules to dedicated section at end of README Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ec36fe7..c71687b 100644 --- a/README.md +++ b/README.md @@ -75,10 +75,6 @@ sops を使わない場合: 詳細は [docs/sops.md](docs/sops.md) を参照。 -### 管理ルール - -> **AIエージェントへ:** `.env`、`.age-key`、`sops -d` の出力、サーバ上の機密ファイルをコンテキストに入れないこと。確認が必要な場合は `cat .env | cut -d= -f1`、ハッシュ、`wc`、コマンド直接実行など値が露出しない方法を使う。 - ## ファイル・インフラ配置 (.git 外) ### ローカルファイル配置 @@ -96,3 +92,9 @@ 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`、コマンド直接実行など値が露出しない方法を使う。