maintenance について
プロセス、シークレット、依存関係、ブランチ、システム状態などを監査するメンテナンススキルです。コード、設定、リポジトリの内容は変更せず、調査結果を GitHub issue に記録できます。
主な機能
- 01シークレットと依存関係の設定を確認
- 02古いブランチと LaunchAgent を監査
- 03定期ジョブのログとシステム状態を確認
- 04リポジトリ一覧とラベルを照合
- 05調査結果を GitHub issue に記録
活用シーン
- 01定期的なインフラ監査の実施
- 02停止した自動タスクの調査
- 03ディスク、brew、シークレットの問題確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fellowship-dev/ dogfooded-skills --skill maintenanceインストール後、Claude Code で/maintenanceを入力して読み込まれたか確認します。
詳細
メンテナンス
インフラの健全性を監査します。調査 → フラグ付け → issue の作成。コード、設定、リポジトリの内容は絶対に変更しないでください。
npx でインストール:
npx skills add fellowship-dev/dogfooded-skills/ops/maintenance
アーキテクチャ/ドキュメントのチェックは
/entropy-checkに移動しました。 このスキルではインフラのみを対象とします: プロセス、シークレット、ラベル、ブランチ、依存関係、システムの健全性、メモリの整理。
使用するタイミング
- 毎週の定期実行(cron)— インフラ全体をチェックします
- システムの変更後(新しい LaunchAgent、新しい cron ジョブなど)
- 自動化されたタスクが動作しなくなったように見えるとき
- ディスクや brew の問題が疑われるとき
基本原則
メンテナンスには、構築の 10 倍の労力がかかります。この作業では、Max が日常的には気づけない問題を明らかにします。出力はレポートと、追跡する価値のある問題に対する GitHub issue です。
手順
すべてのチェックを実行してください。見つかった問題はそれぞれ、fellowship-dev/claude-buddy に GitHub issue を作成するか、問題なしとして記録してください。
# Set GH_TOKEN at the start of every run
export GH_TOKEN=$(grep GH_TOKEN_FELLOWSHIP /home/ubuntu/projects/fellowship-dev/claude-buddy/.env | cut -d= -f2)
1. メモリの整理(常に実施)
wc -l /home/ubuntu/projects/fellowship-dev/claude-buddy/memory/MEMORY.md
ls ~/.claude/projects/-Users-maxfindel-Projects-claude-buddy/*.jsonl | wc -l
- MEMORY.md が 180 行を超える場合 → 簡潔にまとめて、
/save-memoryを実行します - JSONL セッションファイル:蓄積は無視してください。各ファイルが約 5MB でも問題ありません。対応は不要です
2. シークレットのスキャン
grep -r "ghp_\|ghs_\|sk-\|xoxb-\|AAEi\|AAAA[a-zA-Z0-9]" \
/home/ubuntu/projects/fellowship-dev/claude-buddy/ \
--include="*.md" --include="*.sh" --include="*.py" --include="*.mjs" \
-l 2>/dev/null | grep -v ".git"
有効と思われるトークン/キーを含むファイルが Git で追跡されている場合は、フラグを付けてください。
3. Dependabot のカバレッジ
PROJECTS.md を読みます。すべてのアクティブなリポジトリ(Products と Tooling。FVL は除外)について、次を確認してください。
GH_TOKEN=$GH_TOKEN gh api repos/{org}/{repo}/contents/.github/dependabot.yml 2>&1
- 設定がない → issue としてフラグを付けます
- 設定はあるものの、30 日を超えて更新がない → フラグを付けます
4. 古いブランチ
アクティブなリポジトリで、マージ済みなのに削除されていないブランチがないか確認します。
GH_TOKEN=$GH_TOKEN gh api repos/{org}/{repo}/branches --paginate \
--jq '.[].name' 2>/dev/null
# Cross-reference against merged PRs
マージ済みの古いブランチが 5 個を超えるリポジトリにフラグを付けてください。
5. LaunchAgent の健全性
ls ~/Library/LaunchAgents/fry.*.plist | while read f; do
target=$(grep -o '/[^<]*' "$f" | grep -E '\.sh|\.py|\.mjs' | head -1)
[ -f "$target" ] || echo "MISSING: $f → $target"
done
launchctl list | grep fry
存在しないファイルを指す plist、または読み込まれていない fry エージェントがあれば、フラグを付けてください。
6. Cron ログのエラー(直近 7 日間)
ls -t ~/.local/share/fry-bot/cron-logs/*.log | head -20 | xargs grep -l "FAILED\|ERROR\|timeout" 2>/dev/null
同じジョブで失敗が繰り返されている場合は、ログの抜粋を添えて issue としてフラグを付けてください。
7. PROJECTS.md の正確性
- アクティブとして記載されているリポジトリを確認します。GitHub 上にまだ存在していますか?
- Dormant として記載されているリポジトリを確認します。直近 30 日以内にコミットはありますか?
- Max が作成した新しいリポジトリで、
PROJECTS.mdに記載されていないものはありますか?
GH_TOKEN=$GH_TOKEN gh repo list {org} --json name,isArchived,pushedAt --limit 50
次を対象に実行します:maxfindel、fellowship-dev、Lexgo-cl、CLAPES-UC、Energia-UC。
8. Spacestation のシステム健全性
brew outdated --quiet | wc -l
df -h / | tail -1
- 古い brew パッケージが 20 個を超える → フラグを付けます
- ディスク使用率が 85% を超える → フラグを付けます
9. ラベルの同期
アクティブなリポジトリ間で標準ラベルが揃っているか確認します。
アクティブな fellowship-dev の各リポジトリ(farmesa、inbox-angel、booster-pack、mtg-lotr、commander)について、次を確認してください。
STANDARD="ready-to-work in-progress needs-manual-review reviewed double-checked ready-to-merge groundwork dependencies bug enhancement documentation"
for repo in farmesa inbox-angel booster-pack mtg-lotr commander; do
existing=$(GH_TOKEN=$GH_TOKEN gh label list --repo fellowship-dev/$repo \
--json name --jq '.[].name' 2>/dev/null | tr '\n' ' ')
for label in $STANDARD; do
echo "$existing" | grep -q "$label" || echo "MISSING: fellowship-dev/$repo → $label"
done
done
- 不足しているラベルがあれば、
gh label createを実行して追加します(冪等で安全なため、その場で実行できます) - 作成したラベル数と、すでに存在していたラベル数を報告します
10. Booster-Pack の同期
依存するサイトに変更を取り込みます。
booster の Git リモートが設定されたローカルリポジトリをすべて探します。
for dir in ~/Projects/fellowship-dev/*/; do
if git -C "$dir" remote | grep -q '^booster$' 2>/dev/null; then
repo=$(basename "$dir")
BEHIND=$(git -C "$dir" rev-list HEAD..booster/main --count 2>/dev/null || echo "?")
echo "fellowship-dev/$repo: $BEHIND commits behind booster-pack"
fi
done
- サイトが 1 コミットでも遅れている場合は、
overnight-tasks.mdに次のタスクを登録します:pull-booster-{repo-slug}、type はmaintenance、executor は{project-path}、prompt はgit pull booster main --no-edit && git push。 - コンフリクトがある場合は、代わりに Max にフラグを立て、自動で pull しないでください。
11. fellowship-dev/claude-buddy の未解決 issue
未解決 issue をすべて一覧表示します。対応は不要です。Max がバックログを確認できるよう、レポートに記載するだけです。
GH_TOKEN=$GH_TOKEN gh issue list --repo fellowship-dev/claude-buddy --state open \
--json number,title,labels,createdAt
issue の作成
issue を作成する前に、重複がないか確認してください。
# Fetch open + closed issue titles (closed catches older attempts at the same problem)
GH_TOKEN=$GH_TOKEN gh issue list --repo fellowship-dev/claude-buddy \
--state all --limit 200 --json number,title,state \
--jq '.[] | "\(.state) #\(.number): \(.title)"'
- 一致する未解決 issue がすでにある場合 → コメントを追加するか、レポートに記載するだけにしてください。重複した issue は作成しないでください。
- 一致するクローズ済みの issue がある場合 → 問題が明らかに再発したときに限り、再オープンするか新しい issue を作成してください。本文に以前の issue 番号を記載します。
既存の issue がない、新たに見つかった問題それぞれについて:
GH_TOKEN=$GH_TOKEN gh issue create \
--repo fellowship-dev/claude-buddy \
--title "Maintenance: {finding}" \
--label "maintenance" \
--body "..."
出力
レポートを reports/maintenance/YYYY-MM-DD.md に保存します。
# Maintenance Report — YYYY-MM-DD
## Checks Run
- [x] Memory consolidation
- [x] Secrets scan
- [x] Dependabot coverage
- [x] Stale branches
- [x] LaunchAgent health
- [x] Cron log errors
- [x] PROJECTS.md accuracy
- [x] Spacestation system health
- [x] Label sync
- [x] Booster-pack sync
- [x] Open issues review
> Note: Architecture/doc drift checks have moved to /entropy-check (separate skill)
## Findings
### Issues Created
- issue [fellowship-dev/claude-buddy#N](url): {title}
### Clean
- {area}: nothing flagged
### Noted (no issue, low severity)
- {finding}
## Memory
- MEMORY.md: {N} lines
- JSONL sessions: {N} files
続いて、Telegram 用の短い要約を出力します。
🔧 Maintenance — YYYY-MM-DD
{N} issues created: [list with links]
{N} areas clean
Memory: {N}/200 lines
Full report: reports/maintenance/YYYY-MM-DD.md
このスキルから削除されたもの
**セクション 11(インポートされたライブラリの乖離 — speckit と toolkit)**は /entropy-check に切り出されました。
**理由:**speckit コマンドが信頼できる唯一の情報源と一致しているかを確認するのは、アーキテクチャ/ドキュメントのチェックです。つまり、ツールに関するナレッジレイヤーが最新かどうかを測定します。ドキュメント/アーキテクチャの鮮度に関するシグナルはすべて entropy-check が担当します。このスキルが担当するのはインフラのみです。
speckit の乖離を確認するには、対象リポジトリに対して /entropy-check を実行してください。