arch-upkeep について
arch-upkeepは、既存プロジェクトのアーキテクチャを維持するためのメタスキルです。リポジトリの分類、適切なarch-*スキルの選定、アプリのロジックを書き換えない段階的な基盤移行を支援します。
主な機能
- 01プロジェクト構成の分類
- 02対象arch-*スキルの選定
- 03段階的な移行計画
- 04必要なスキルの確認と導入
- 05保守チェックリスト
活用シーン
- 01リポジトリの構成を判定
- 02標準構成への移行を計画
- 03ビルド・テスト・CIを段階的に更新
- 04モノレポとCLI向けのスキルを組み合わせ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hairyf/ skills --skill arch-upkeepインストール後、Claude Code で/arch-upkeepを入力して読み込まれたか確認します。
詳細
arch-upkeep
arch-upkeep は、既存のプロジェクトを標準スタータースタックに沿った状態に保つためのメタアーキテクチャスキルです。
arch-tsdown-monorepo— パッケージごとに tsdown を使用する、TS ライブラリ向け pnpm モノレポarch-tsdown— tsdown を使用する、単一パッケージの TS ライブラリarch-tsdown-cli— tsdown で構築する CLI アプリarch-unplugin— unplugin として構築するライブラリ(Vite/Rollup/Webpack/ESBuild)arch-webext-vue— Vue を使用するブラウザー拡張機能arch-vscode— VS Code 拡張機能
プロジェクトがすでに存在し、次のことを行いたい場合にこのスキルを使用します。
- 現在どのアーキテクチャに該当するかを特定する(lib / CLI / monorepo / webext / vscode / unplugin / mixed)
- 標準の
arch-*スターターへの移行を計画する - アプリのロジックを書き換えることなく、ツール、スクリプト、CI を段階的にアップグレードする
このスキルでは、各アーキテクチャの詳細を再定義するのではなく、適用する arch-skill とその順序を選ぶのに役立ちます。
クイックスタート
- 1. Detect current architecture のチェック項目を使って、リポジトリを分類します。
- 2. Choose the target architecture skill(s) を使って、対象となるスキルを選びます。
- 2.1 Check & install required skills に従って、必要な
arch-*スキルがインストールされていることを確認します。 - 3. Migration strategy (incremental) と 4. Architecture-specific notes を使って、段階的な移行を計画します。
- 5. Checklist: running an “arch upkeep” on a repo のチェックリストを使って、メンテナンス作業を行います。
1. 現在のアーキテクチャを検出する
まず、リポジトリを分類します。次の簡単なヒューリスティックを使ってください(複数を適用できます。プロジェクトは「モノレポ + CLI」などの場合もあります)。
-
モノレポ(
arch-tsdown-monorepoの候補)pnpm-workspace.yaml、packages/*、apps/*、または類似の構成があるpackages/またはapps/の下に複数のpackage.jsonファイルがある- ルートに共有ツール設定がある(
eslint.config.*、vitest.config.*、tsconfig.base.jsonなど)
-
単一の TS ライブラリ(
arch-tsdownの候補)- ルートに
package.jsonが1つだけある - ライブラリ形式のエクスポート(
main、module、types、場合によってはexports)がある binエントリーポイント、ブラウザーマニフェスト、VS Code 拡張機能マニフェストがない
- ルートに
-
CLI(
arch-tsdown-cliの候補)- ルートの
package.jsonに"bin"がある、または"package.json#exports"が CLI エントリーを指している - エントリーファイルで
#!/usr/bin/env nodeを使用している cac、commander、yargsなどに依存していることが多い
- ルートの
-
unplugin ベースのライブラリ(
arch-unpluginの候補)unpluginに依存しているcreateUnpluginをエクスポートしている、またはsrc/core/、src/vite.ts、src/webpack.tsなどのファイルがある- バンドラー(Vite/Rollup/Webpack/ESBuild)を対象としている
-
ブラウザー拡張機能 + Vue(
arch-webext-vueの候補)manifest.json/manifest.v3.json(Chrome/Firefox 拡張機能)がある- ポップアップやオプション画面、またはコンテンツスクリプト用の Vue SPA がある
- ブラウザー拡張機能の開発向けツール(
web-ext、wxt、またはカスタムスクリプト)を使用している
-
VS Code 拡張機能(
arch-vscodeの候補)"contributes"、"activationEvents"、"engines.vscode"を含むpackage.jsonがあるsrc/extension.tsまたは類似のアクティベーションエントリーがある
プロジェクトの主な構成がわかったら、アップグレード先となる主要アーキテクチャを1つ選びます。モノレポに CLI パッケージが含まれるなど、複数の構成が混在している場合は、arch-tsdown-monorepo と、該当するパッケージごとのスキル(arch-tsdown、arch-tsdown-cli など)を組み合わせます。
2. 対象となるアーキテクチャスキルを選択する
分類結果を、次の正式なスキルに対応付けます。
- pnpm マルチパッケージリポジトリ →
arch-tsdown-monorepoから始めます - 単一の TS ライブラリ →
arch-tsdown - CLI(単独、またはモノレポ内のパッケージ)→
arch-tsdown-cli - unplugin ライブラリ →
arch-unplugin(多くの場合、arch-tsdownまたはモノレポの構成内で使用します) - ブラウザー拡張機能 + Vue →
arch-webext-vue(アプリ層)と、共有ライブラリがある場合はarch-tsdown - VS Code 拡張機能 →
arch-vscode(拡張機能アプリ)と、共有ライブラリにはarch-tsdown
続いて、次の手順を行います。
- 対応する
arch-*スキルを開きます。 - 「overview」/「core」のリファレンスを、既存のリポジトリが目指すべき設計として使用します。
- 段階的な移行を計画します。まず設定とスクリプト、次に CI、最後にリリースの自動化を行います。
2.1 必要なスキルを確認してインストールする
arch-upkeep はオーケストレーターにすぎないため、エージェント環境に具体的な arch-* スキルがインストールされ、使用可能な状態であることを前提としています。
推奨される手順は次のとおりです。
-
エージェントのランタイムにインストールされているスキルを一覧表示します
- プラットフォームの「スキルを一覧表示」コマンド/UI を使用します(例:
arch-tsdown-monorepo、arch-tsdown、arch-tsdown-cli、arch-unplugin、arch-webext-vue、arch-vscodeを探します)。 - 対象のアーキテクチャスキルがすでに存在する場合は、そのまま呼び出せます。
- プラットフォームの「スキルを一覧表示」コマンド/UI を使用します(例:
-
必要なスキルがない場合は、名前を指定してインストールします
- Agent Skills カタログ(またはプラットフォームのマーケットプレイス)で、
arch-tsdown-monorepoなどの正確な名前を検索します。 - 現在のエージェントプロファイル/ワークスペースにインストールします。
- Agent Skills カタログ(またはプラットフォームのマーケットプレイス)で、
-
作業を進める前に、インストールを確認します
- もう一度「スキルを一覧表示」画面を開き、スキルが表示され、有効になっていることを確認します。
- 必要に応じて、その
SKILL.md(または UI のスキル詳細)を開き、バージョンと対象範囲を確認します。
-
1 回の保守セッションで複数のスキルを組み合わせます
- モノレポ + CLI:
arch-tsdown-monorepoとarch-tsdown-cliを CLI パッケージに使用し、共有ライブラリにはarch-tsdownを使用します。 - 共有ライブラリを含む VS Code 拡張機能:拡張機能ホストには
arch-vscodeを使用し、共有モジュールにはarch-tsdownを使用します。 - 共有 TS ライブラリを含む Web 拡張機能:拡張機能アプリには
arch-webext-vueを使用し、再利用可能なパッケージにはarch-tsdownを使用します。
- モノレポ + CLI:
関連するスキルをインストールして確認してから、以下の移行手順を適用してください。
3. 移行戦略(段階的)
一般原則:
- アプリのロジックを書き換えないでください。 置き換えるのはインフラストラクチャ(ビルド、テスト、リント、CI、リリース)のみです。
- 一度に1つのレイヤーを移行してください。 可能であれば、バンドラー、テストランナー、tsconfig をすべて1つの PR で変更するのは避けてください。
- Git の履歴を読みやすく保ってください。 「ツールの移行」と「コードの修正」は別々のコミットにしてください。
推奨する順序:
-
パッケージのレイアウトを標準化する
- モノレポの場合:
arch-tsdown-monorepoに従って、packages/*のレイアウト、ルートのpackage.json、ワークスペースのバージョン範囲、pnpm カタログを揃えます。 - 単一パッケージの場合:フォルダー構成(
src/、dist/、tests/)、tsconfig の名前などをarch-tsdownに合わせます。
- モノレポの場合:
-
ビルドを tsdown に移行する(該当する場合)
- 既存のビルドスクリプト(
tsc、rollup、tsupなど)を、移行先のスキルにあるtsdownの設定に置き換えます。 package.json#exports、main/module/types、filesの各フィールドが移行先のパターンと一致していることを確認します。
- 既存のビルドスクリプト(
-
テストとリントを揃える
- 関連する arch スキルで推奨されているテストランナー(Vitest)と ESLint の設定に移行します。
- モノレポの場合は、必要に応じてパッケージごとのオーバーライドを設定し、設定をルートに集約します。
-
スクリプトを統一する
- 移行先のアーキテクチャで使われているスクリプト名(
build、dev、test、lint、typecheck、releaseなど)に統一します。 - モノレポでは、
pnpm -rまたはpnpm --filterを使うルートスクリプトを優先します。
- 移行先のアーキテクチャで使われているスクリプト名(
-
CI とリリースをアップグレードする
- 関連する arch スキルの GitHub Actions/リリースワークフローを採用します。
- 該当する場合は、npm Trusted Publisher、タグベースのリリース、
bumppまたは類似のツールに移行します。
-
クリーンアップする
- 新しいパイプラインが正常に動作したら、不要になった設定、スクリプト、未使用の devDependencies を削除します。
4. アーキテクチャ別の注意事項
-
arch-tsdown-monorepoを対象にする場合:- ツール(ESLint、Vitest、TS のベース設定)をルートに集約します。
- パッケージ間の依存関係を
workspace:*のバージョン範囲に変更します。 - 各パッケージを tsdown で個別にビルドできるようにします。
-
arch-tsdownまたはarch-tsdown-cliを対象にする場合:- パッケージを標準的な TS ライブラリ/CLI として扱い、可能な限り
src/を整理して副作用のない状態に保ちます。 - バイナリーのエントリーポイントは、内部モジュールをインポートする小さなブートストラップファイルにします。
- パッケージを標準的な TS ライブラリ/CLI として扱い、可能な限り
-
arch-unpluginを対象にする場合:- unplugin のコアを小さく、組み合わせやすい状態に保ちます。
- 統一された unplugin API を通じて、各バンドラー(Vite、Rollup、Webpack、ESBuild)向けの明確なエクスポートを提供します。
-
arch-webext-vueを対象にする場合:- アプリの UI(Vue)をバックグラウンド/サービスワーカーのロジックおよび共有ユーティリティから分離します。
- 拡張機能の外でも再利用できるロジックには、共有 TS ライブラリ(
arch-tsdownを使用)を優先します。
-
arch-vscodeを対象にする場合:- 拡張機能ホストのコード(アクティベーション、コマンド)を薄く保ちます。
- 可能であれば、複雑なロジックを共有 TS ライブラリに移します。
5. チェックリスト:リポジトリで「arch の保守作業」を行う
繰り返し使えるワークフローとして、以下を使用します。
- アーキテクチャを分類する(モノレポ/ライブラリ/CLI/unplugin/webext/vscode)。
- 目指す最終状態に合う主要な
arch-*スキルを選ぶ。 - 各スキルの概要とコアリファレンスを読み、目標とする構成とスクリプトを書き出す。
- 段階的な手順を計画する(レイアウト → ビルド → テスト/リント → CI → リリース)。
- アプリのロジックを維持しながら変更を適用する。
- 新しいパイプラインが通ったら、古いツールを削除する。
これにより、プロジェクトは選択したスターターから最初にスキャフォールドされたかのような構成と動作になり、今後の保守やオンボーディングが大幅に容易になります。