Imported from macken88/excel_vba (
AGENTS.md). Install upstream withnpx skills add macken88/excel_vba. Copyright stays with the author.
AGENTS.md
目的
このリポジトリは、VBA を含む Excel ブックを長期的に保守・メンテナンスするためのものです。
主な目的は次のとおりです。
- VBA ソースコードを Git で管理すること
- AI エージェントによる安全な補助編集を可能にすること
- Excel ブック本体と、書き出した VBA テキストソースを、管理された手順で同期すること
対象範囲
- 保守対象の Excel ブックは
workbooks/に配置する - Git 管理対象の VBA ソースは
src/に配置する - 複数ブックで共有する共通モジュールは
src/shared/に配置する - ブックとソースの対応を表すリポジトリ用設定ファイルは
config/に配置する - プロジェクトで定義する Codex skill は
.agents/skills/に配置する
基本方針
- 原則として、Excel の VBA エディタ上で直接コード編集しない
- Git 管理対象の正本は
src/配下の.bas/.cls/.frmとする .xlsmなどのバイナリブックは、通常利用および管理された同期手順以外では変更しない- 変更は、追跡可能でレビューしやすいテキスト差分として行う
- Excel への反映前には必ず Git diff を確認する
AI エージェント向けルール
.xlsmファイルを直接編集しない- 編集対象は
src/配下のテキストベース VBA ソースに限定する - export、edit、共有モジュール同期、import などの定型作業は、必ずプロジェクトで定義された Codex skill を経由して実行する
- 既存 skill で対応できる作業について、新しい同期手順や独自手順を勝手に作らない
- 共有モジュールを変更する場合は、まず
src/shared/を更新し、その後で各ブック用ディレクトリへ反映する - 明示的な依頼がない限り、変更は最小限かつ局所的に行う
- モジュール名やブック固有の構成は、明示的な依頼がない限り変更しない
config/*.tomlのブック対象やディレクトリ設定を、理由なく変更しない.frmや class header まわりの不整合が疑われる場合は、推測で直さず、export をやり直す前提で対処する- 作業後は、変更したファイルと、Excel 側への再 import が必要かどうかを必ず要約する
config/*.tomlはこのリポジトリ独自の[project]形式として扱い、vba-editの--configにそのまま渡せる前提で扱わない- import / export 系 skill は、
config/*.tomlからfileとvba_directoryを解釈してvba-editCLI の明示引数へ変換する - 既存 skill の参照先は
.agents/skills/を正本とし、.codex/skills/は使わない - 新しい skill を追加する場合も、作成先は
.agents/skills/に統一する
config/*.toml のスキーマ
各 TOML ファイルはブックごとに 1 つ作成し、ファイル名はブック名に対応させる(例: bookA.toml → workbooks/BookA.xlsm)。
[project] セクション
| キー | 型 | 必須 | 説明 |
|---|---|---|---|
file |
string | はい | 対象 Excel ブックのリポジトリルートからの相対パス(例: "workbooks/BookA.xlsm") |
vba_directory |
string | はい | VBA ソースの格納ディレクトリのリポジトリルートからの相対パス(例: "src/BookA_vba") |
encoding |
string | いいえ | ソースファイルのエンコーディング。将来の拡張用。現在のスクリプトでは使用していない |
[headers] セクション
| キー | 型 | 必須 | 説明 |
|---|---|---|---|
save_headers |
boolean | いいえ | VBA export 時にモジュールヘッダ(Attribute 行など)を保存するか。将来の拡張用。現在のスクリプトでは使用していない |
in_file_headers |
boolean | いいえ | ソースファイル内にヘッダ情報を含めるか。将来の拡張用。現在のスクリプトでは使用していない |
[shared] セクション
| キー | 型 | 必須 | 説明 |
|---|---|---|---|
modules |
array of string | いいえ | このブックが使用する src/shared/ 配下の共有モジュールファイル名のリスト(例: ["CommonUtilities.bas"])。sync-shared-modules skill はこのリストに基づいて src/shared/ からブック用ディレクトリへコピーする |
ブック追加手順
新しい Excel ブックを管理対象に追加する場合は、以下の手順を行う。
.xlsmブックをworkbooks/に配置するsrc/配下にブック用の VBA ソースディレクトリを作成する(例:src/BookC_vba/)config/にブック名に対応する TOML ファイルを作成する(例:config/bookC.toml)- TOML ファイルに
[project]セクションのfileとvba_directoryを記述する - 共有モジュールを使用する場合は
[shared]セクションのmodulesにファイル名を記述する - 必要に応じて
export-vbaskill で既存ブックから VBA ソースを書き出す
環境に関するルール
- このリポジトリは Windows 上で運用することを前提とする
理由: Excel / Office automation が Windows 前提のため - VBA 保守ツールは専用の Python 仮想環境で管理する
- ツール依存関係は
requirements-vba-tools.txtからインストールする vba-editのバージョンは固定し、明示的な承認なしに更新しない
Codex に期待する skill
Codex には、最終的に次のような skill を用意することを想定する。
| skill | 概要 |
|---|---|
export-vba |
Excel ブックから VBA ソースを src/ にエクスポートする。Trust Access チェック → config 解決 → excel-vba export の順で実行 |
edit-vba |
src/ 配下の .bas / .cls / .frm をテキスト編集する。.xlsm には触れず、変更後に re-import 要否を報告 |
sync-shared-modules |
src/shared/ の共通モジュールを config/*.toml の [shared].modules に基づき各ブック用ディレクトリへコピー |
import-vba |
src/ のテキストソースを Excel ブックにインポートする。Trust Access チェック → config 解決 → excel-vba import の順で実行 |
review-vba-diff |
src/ の Git diff を表示し、変更ファイル・影響ブック・共有モジュール変更の有無をサマリ出力。読み取り専用 |
これらの skill は、場当たり的なシェル操作ではなく、再現可能で決定的な手順をカプセル化すること。
配置先は .agents/skills/ を標準とする。
Git 運用ルール
基本
- commit 前に必ず diff を確認する
- commit は小さく、意味のある単位で分ける
コミット分離の原則
src/のテキスト変更と.xlsmバイナリ同期は別コミットにするsrc/shared/の変更と、各ブックディレクトリへのコピーは別コミットにする- 複数ブックへの変更は、ブック単位でコミットを分離することを推奨する
- バイナリの Excel ブックが想定外に変更されていた場合は、その事実を明示する
コミットメッセージ
- Conventional Commits 形式を使用する:
<type>(<scope>): <summary> - scope にはブック名(
BookA,BookBなど)またはsharedを使用する - body に Excel への re-import の要否を明記する
ブランチ
- main ブランチは常に Excel へ import 可能な安定状態を保つ
- 作業ブランチは
feature/<book>/...,fix/<book>/...,shared/...,chore/...,docs/...の形式で命名する - ブランチは短命に保ち、
.xlsmのバイナリ競合を回避する - マージ済みブランチは再利用しない。バグ修正は main から新しい
fix/ブランチを切って対応する
プルリクエスト
- 1 つの改修(機能追加・変更・バグ修正、またはそれらの組み合わせ)を 1 PR とする
- 改修内の個々の変更はコミット単位で分離する(目的別・ブック別・sync 別)
- 無関係なブックへの変更や、改修と無関係なリファクタリングは別 PR にする
- PR の説明には、影響するブック名と re-import 要否を必ず記載する
- 元の改修で生じたバグ修正は新しい PR とし、元の PR 番号を参照して関連を示す
注意事項
vba-editは、Office の VBA Project とテキストファイルを同期するための Windows 向けツールであるconfig/*.tomlはリポジトリ運用用の設定であり、vba-editネイティブの config 仕様とは一致しない場合がある- Excel 側の信頼設定により同期できない場合は、import / export skill 内の Trust Access チェックで検出される。ガードレールを迂回しない
- import / export 前には
Trust access to the VBA project object modelが有効であることを確認する - 直接 Excel 側を触って解決するよりも、
src/を正本とする運用を優先する