hamzaabduljabbar/boq-schedule

見積明細書(BOQ)から、Primavera P6(XER)にインポート可能な原価ロードされた初回ドラフトの建設工程表を作成します。73の実績P6スケジュールから学習したロジックに基づき、業種・場所別のアクティビティを生成し、各アクティビティにBOQの金額と数量を紐付けます。

boq-schedule とは?

このスキルは、価格設定済みの数量明細書(BOQ)を、Primavera P6にインポート可能な初回ドラフトの建設工程表(XER形式)に変換します。Claude Code上で動作し、ユーザー(プランナー)の承認を得ながら、以下の4つのステップを自動実行します。(1) BOQの読み取りとキーワード推測、(2) 各行の業種・場所へのタイピング(Claudeが判断、理由付き)、(3) プランナーへの質問(工期や配置などBOQだけでは判断できない項目)、(4) 最終的なXERファイルのビルド。73件の実績P6スケジュールからマイニングされたロジックと単価データを活用し、業種・場所ごとにアクティビティを生成。各アクティビティには対応するBOQ行のIDと金額が保持され、P6で原価ロードされた工程表として利用できます。英語、ポルトガル語、スペイン語のBOQに対応。既存の工程表にBOQをロードする目的ではない点に注意が必要です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hamzaabduljabbar/autoConst-boq-schedule/tree/HEAD

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

BOQ → ドラフト工程表(Primavera P6)

プランナーがベースライン工程表を作成する際、通常はすべてのアクティビティを手入力し、リンクを張り、BOQから原価をロードします。このスキルはその初回パスを自動生成します。業種・場所ごとに1アクティビティ、実績スケジュールから学習したロジック、全アクティビティにBOQの金額を紐付け、P6でインポート可能なXERを出力します。日程の決定権はプランナーにあります – ドラフトは骨格であり、プランナーが修正するためのもので、予測ではありません。

必要なもの

  • 価格設定済みBOQ: .xlsx または .csv 形式。説明 + 数量 + 金額(または単価)を含む。見出しは列として、またはテキスト行として上にある形式に対応。項目番号(1, 1.2, 1.2.3)も可。英語、ポルトガル語、スペイン語のヘッダーに対応。
  • Python 3 および data/rates.json(マイニングされた単価とロジック)。それ以外は不要。

ワークフロー(Claudeが全ステップを実行、プランナーはタイピングの承認と質問への回答を行う)

1. BOQを読み取る

py scripts/read_boq.py <boq.xlsx|.csv> --out outputs/<job>

brief.csv(各行のチャプターパスとキーワード推測を含む)と types.md(作業タイプとステップ2のルール)を出力します。ユーザーに行数、合計金額、使用したシート/列を通知します。合計金額がBOQの合計と一致しない場合は、タイピングを開始する前に停止して原因を特定します。

2. すべての行をタイピングする(これはキーワード推測ではなく、Claudeの役割です)

types.md を読み、次に brief.csv のすべてをチャプターごとに読みます。長い場合はページ分割します。outputs/<job>/decisions.csv を列 key,type,locations,reason で書き出します。

  • chapter=<チャプターパスの開始> はチャプター全体をカバーします(大文字/アクセント無視)。id~=<正規表現> は、チャプター名が重複する場合(例:2つのチャプターが両方とも「TUBULACOES E CONEXOES」という名前)に、項目番号でBOQセクションをカバーします。行IDは1行をカバーします。
  • 最初に一般ルール、次に例外: 後のルールが前のルールを上書きします。行ルールは常に優先されます。
  • 鉄筋コンクリート: 型枠、鉄筋、打設を1つのエレメント(基礎、柱、梁、スラブ)のタイプにまとめます。ただし、BOQで作業全体として価格設定されている場合は除きます。
  • 場所: 常に設定します(空白の場合はすべての場所(サイトを含む)に1行が広がります)。建物は低い階から順に。サイト設置、外構、境界壁、外部タンク → サイト場所。
  • skip はサイト作業ではない場合のみ使用し、理由を記載します。混合または疑わしいチャプター: 最適なタイプを選択し、「プランナーが分割する可能性あり」と理由に記載します – これらは後で質問として戻ります。
  • キーワード推測を信頼しないでください:誤読することがあります(「tapume com telha」→屋根、「cabeamento」→スラブ、「aluminio」→照明)。
py scripts/apply_types.py outputs/<job> --locations "Site|GF|FF"

不明なタイプ、不明な場所、未決定の行があると停止します。金額チェック: タイピング済み + スキップ = BOQ合計。lines.csv と typing.md(業種別金額、各行の決定者、単位に関する警告)を出力します。ユーザーに業種別金額表と警告を表示し、修正してクリーンになるまで再実行します。

3. プランナーに質問する

py scripts/questions.py outputs/<job> --start 2026-01-05

キャリブレーションされていない初回ドラフトを構築し、questions.md + 提案された回答を含む answers.json を出力します。平易な言葉でユーザーに質問を提示し(はい/いいえの質問には AskUserQuestion が適しています)、その後 answers.json を記入します。

質問重要な理由
開始日、稼働週(5/6/7)、通貨P6のカレンダーと通貨
場所、サイト、レイアウト(フロア積み重ね / 別ブロック)、並行作業の有無順序。テスト済み: ドラフトのシーケンス戦略が実際のジョブと異なる主な理由
契約期間(月数)これなしでは、17の実績ジョブ中4~6で期間の長さが適切でしたが(0.75-1.33倍)、ありでは17/17で適切
プランナーが知っている3つの工期(構造1つ、外装/仕上げ1つ、設備工事1つ)ドラフトの工期は1行あたり約2.25倍の誤差がありますが、3つのアンカーで約1.76倍になり、残りをスケールします
サイト作業は構造物の前か後か(境界壁、排水、タンク、舗装)実際の資金を移動します。請負業者は壁を先に建設することが多い
「プランナーが分割する可能性あり」とフラグが立ったタイピングポイントClaudeが配置したがプランナーが分割する可能性のある行

回答が空白の場合、デフォルトが使用され、レポートにその旨が記載されます。プランナーに代わって回答をでっち上げることは絶対にしないでください。

4. ビルド

py scripts/build.py outputs/<job>

plan.py + export.py を実行: schedule.json/.csv、report.md、schedule.xer。すべてのアクティビティには、対応するBOQ行IDと工期の理由が含まれます。すべてのリンクにはその出典(実績スケジュール: A→Bのnリンク、デフォルト順序、プランナーの回答)が記載されます。

インポート

  • P6: ファイル > インポート > Primavera PM (XER) > 新規プロジェクト作成、その後 ツール > スケジュール (F9)。費用はアクティビティごとに「 BOQ <行>」として、数量、単位、単価とともに表示されます。

エビデンス(すべて実データで検証、一つ抜き法)

  • タイピング: Hassan BOQ 22/22行 = プランナー自身のアクティビティと一致(キーワード推測は15/22)。Aracaju 643行、Januaria 628行をタイピング、金額はセント単位まで一致。
  • ロジック: 17の保留スケジュールにおいて、実績リンクの75-80%が保持されました。Hassan 18/18。
  • P6: ドラフトXERはP6 Professional 25にインポートされ、同じ日程でスケジュールされます。
  • 工期: 中央誤差2.25倍、プランナーの3つの工期を使用すると1.76倍。
  • キャッシュフロー予測ではありません: ドラフトの月次曲線は、教科書のS字曲線と同程度にしか実績と一致しませんでした。誰かがドラフトからキャッシュフローやタイミングについて尋ねてきた場合は、この点を必ず伝えてください。

制限

  • テキストBOQのみ対応(スキャンPDFは不可)。業種・場所ごとに1アクティビティ。詳細分割はプランナーが行います。
  • 単価とロジックは73のスケジュール(主に建築工事)から取得。土木/インフラ工事は未テスト。
  • data/ は73の公開P6スケジュールからマイニングされたものです(生のXERはバンドルされていません)。

テスト

py tests/smoke.py - バンドルされたサンプル(公開されているJanuaria入札BOQ、628行)を、タイピング、質問、ビルド、P6 XERの全ステップでテストします。行数、金額の一致、テーブル、タスク、費用、リンク、プロジェクトカレンダーを検証します。変更後は必ず実行してください。開発用テスト(3つの実BOQ、17の保留スケジュール、P6インポートチェック)は、バンドルされていないファイルを使用していました。

関連スキル