• #コンテンツ管理
  • #コマンド開発
  • #ディレクトリ構成
  • #Windows
  • #Claude Code
開発mdx-playground

make-diaryコマンドを月別ディレクトリ運用に移行 - 3ヶ月分のコンテンツ整理

/make-diary コマンドの保存先を月別ディレクトリに変更し、散在していた3ヶ月分の日記コンテンツを一気に整理した。単純な「移動」作業のはずが、dev serverがファイルを掴む、2月6日だけマージが必要になる、プラグインが動かないなど、次々と壁にぶつかった。

make-diaryコマンドの運用変更

Before: content直下に日付ディレクトリが並ぶ

content/
├── 2026-01-04/
│   └── diary-2026-01-04.md
├── 2026-01-05/
├── ...
├── 2026-03-19/
│   └── diary-2026-03-19.md
└── (80近いディレクトリ)

ls を実行すると、1月から3月までの日付ディレクトリが縦にずらりと並ぶ。目的の日付を探すには、延々とスクロールして目視で確認する必要があった。

After: 月別ディレクトリに格納する運用へ

content/
├── 2026-01/
│   ├── 2026-01-04/
│   ├── 2026-01-05/
│   └── ...
├── 2026-02/
└── 2026-03/
    └── 2026-03-19/
        └── diary-2026-03-19.md

月でグループ化すれば、まず月を選んで、その中から日付を探せる。認知負荷が下がり、ディレクトリ構造も見通しやすくなる。

3ヶ月分のコンテンツ整理プロセス

1月分(28ディレクトリ): 素直にコピー&削除

1月分は 2026-01-04 から 2026-01-31 まで28ディレクトリ。content/2026-01/ を作成し、全ディレクトリをコピー後に元を削除した。重複やマージは発生せず、ストレートに完了。

2月分: 2026-02-06のマージ問題

2月も同じ調子で進めていたら、2026-02-06 で手が止まった。

content/2026-02/2026-02-06/  (月フォルダ側)
content/2026-02-06/         (直下側)

両方にディレクトリが存在していた。中身を確認すると、それぞれ固有のファイルを持っている。どちらか一方を削除すると、コンテンツが欠損してしまう。

マージ戦略: cp -n で既存ファイルを守る

月フォルダ側を基準にして、直下側の固有ファイルだけを追加する方針を取った。

# -n(no-clobber)で既存ファイルを上書きしない
cp -n content/2026-02-06/* content/2026-02/2026-02-06/

コピー後、diff -r で両ディレクトリの差分を確認。問題ないことを確かめてから、直下の 2026-02-06/ を削除した。

Windows特有の罠: dev serverがファイルを掴む

ExplorerでドラッグANDドロップしようとしたら、「別のプロセスが使用中」エラーが頻発した。dev server(Nuxt)がファイルをウォッチしており、ロックを握っていた可能性が高い。

教訓: Windowsで大量のファイル操作をするときは、dev serverを停止してから実行する。

3月分: 経験を活かしてスムーズに

2月の教訓を活かし、最初からdev serverを停止。重複ディレクトリもなく、コピーと削除がスムーズに進んだ。

make-diaryスキルの保存先パス更新

統合作業を終えたあと、/make-diary コマンド自体も月別ディレクトリに対応させた。

// Before
const savePath = `content/${date}/diary-${date}.md`

// After  
const savePath = `content/${yearMonth}/${date}/diary-${date}.md`

今後は最初から月ディレクトリに格納される。後から移動する手間がなくなった。

副産物: feature-devプラグインの修正

プラグインが認識されない問題

整理作業の合間に claude plugin install feature-dev を実行したが、/feature-dev コマンドが使えなかった。

調査すると、プラグインが commands/ ディレクトリに配置されていた。しかし Claude Code v2.1.78 は skills/ ディレクトリを読む。旧形式のプラグインは認識対象外だった。

# プラグイン(旧形式)
~/.claude/plugins/feature-dev/commands/feature-dev.md

# Claude Codeが認識する形式  
~/.claude/skills/feature-dev.md

手動配置で解決

プラグインのMarkdownファイルを ~/.claude/skills/ に手動でコピー。さらに、Markdown内で参照しているツール名も現行バージョンに合わせて修正した。

自動インストールに頼らず、中身を理解して手動配置するほうが確実だった。

試行錯誤の軌跡

問題試したこと結果学び
ディレクトリ数が多すぎて見づらい月別フォルダに統合成功階層化で認知負荷を下げる
2026-02-06が両方に存在片方を削除失敗固有ファイルを確認してマージが必要
Explorerコピーでエラーdev server実行中にコピー失敗Windowsではdev serverを止めてから操作
cp -r で上書きの危険cp -n でno-clobber成功既存ファイルを守りつつマージ
プラグインが動かない再インストール失敗ディレクトリ構造の変更を疑う

今回の学び

ディレクトリ整理は「全部同じ」と思い込まない。 2月6日のように、同名ディレクトリが複数箇所に存在するケースがある。機械的にコピーせず、中身を確認してマージ戦略を決める。

Windowsでのファイル操作はdev serverを止める。 ファイルウォッチがロックを握ると、Explorerは黙って失敗する。エラーダイアログすら出ないことがある。

プラグインが動かないときはディレクトリ構造を疑う。 Claude Codeのバージョンアップで commands/skills/ に変わっていた。READMEを信じず、実際のコードで確認する。

make-diaryのような生成系コマンドは、最初から正しい場所に作る。 後から移動するのは二度手間。最初の設計で月別ディレクトリを考慮しておけば、この整理作業自体が不要だった。

3ヶ月分のコンテンツ整理を通じて、ディレクトリ設計の重要性を再認識した。次の3ヶ月は、最初から整理された状態を保てる。