mcpField
T
trades-builder

trades-builder

github.com/customware-ai開発21.1k 回インストール3 日前に更新
リポジトリ

trades-builder について

見積もり、現場のスケジュール、作業追跡、支払いを扱う建設業向け業務ツールの構築を支援するスキルです。汎用的なプロジェクト管理ではなく、各業種の DOMAIN.md に沿ったプロトタイプを導きます。

主な機能

  1. 01測定済みの作業項目を見積もり
  2. 02作業員と作業順をスケジュール
  3. 03作業項目と場所ごとの進捗追跡
  4. 04下請け業者と顧客の請求を管理
  5. 05読み取り専用の案件サマリーを生成

活用シーン

  1. 01屋根工事の見積もりから支払いまでのプロトタイプ
  2. 02場所と完了状況に応じた HVAC 作業の追跡
  3. 03下請け業者への支払いと顧客請求の管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/customware-ai/skills --skill trades-builder

インストール後、Claude Code で/trades-builderを入力して読み込まれたか確認します。

詳細

取引業務スキル

このスキルでできること

このスキルでは、建設業の専門工事業者や現場サービス事業者が日々運用する、見積もりから支払いまでのワークフローを管理する取引業務ツールの構築方法を定義します。

汎用的なプロジェクト管理ツール(Jira/Asana)ではありません。CPQ ツール(製品構成の設定機能)でもありません。次のような業務を行う事業者に特化したワークフロー管理ツールです。

  • 実測した作業項目(平方フィート、リニアフィート、数量)に基づいて見積もりを作成する
  • 現場作業を職人チームや下請け業者に割り当て、スケジュールを設定する
  • 作業項目と場所ごとに進捗を追跡する
  • 実測した作業の完了状況に基づいて下請け業者に支払う
  • 顧客に請求し、支払いを回収する

一般的な業種: 石膏ボード、屋根工事、HVAC、配管、電気工事、塗装、床工事、コンクリート、造園、総合建設。

ビルダーはこのスキルと、業種固有の用語を記載したDOMAIN.mdを読み、顧客が実際に使用している作業項目、価格、ワークフローの各段階を用いた動作するプロトタイプを生成します。

このスキルを使用する場合

トランスクリプトまたはDOMAIN.mdに、次のような手がかりが含まれている場合にこのスキルを使用してください。

手がかり例
測定値を伴う作業項目平方フィート、リニアフィート、ボードフィート、面積あたりの数量
現場のスケジュール管理職人チームの割り当て、作業カレンダー、現場作業の計画
下請け業者への支払い下請け業者への支払い、専門工事業者への支払い、平方フィートあたりの支払単価
見積もりから請求書までのワークフロー見積もり → スケジュール設定 → 作業 → 請求書のサイクル
業種固有の作業範囲断熱材、石膏ボード、テーピング、屋根工事、骨組み、配管の粗工事
場所に基づく仕様階、部屋、ゾーンごとの異なる仕様
二重の請求処理専門工事業者への請求書(下請け業者への支払い)と顧客への請求書(顧客からの入金)の両方

次の場合には、このスキルを使用しないでください。

  • 依存関係を伴う製品構成 → cpq-builder を使用
  • 在庫と資材の管理 → erp-builder を使用(今後対応)
  • 汎用CRMまたは連絡先管理 → crm-builder を使用

テンプレートの仕様

構築を始める前に、テンプレートが提供するものと、このスキルで追加するものを把握してください。以下が仕様です。

テンプレート(app/layouts/MainLayout.tsx)に含まれるもの:

  • SidebarProvider、Sidebar、SidebarContent、SidebarInset、SidebarTrigger — すでに接続されています
  • SidebarContent は空です — ここを実装の起点にします
  • ヘッダーにブランド用スロットが1つあります(ロゴのプレースホルダーと会社名)
  • ヘッダー右側のグループに ModeToggle とユーザーメニューがあります

このスキルで実装するもの:

  • SidebarContent — 縦型ステッパーと保存済みプロジェクトを追加します(下記のレイアウトパターンを参照)
  • ヘッダーのブランド用スロット — DOMAIN.mdに記載された顧客のロゴと会社名を追加します
  • ヘッダー右側のグループ — 既存のユーザーメニューの前にロール切り替え用の DropdownMenu を追加します
  • <main> 内の <Outlet /> — 5つのセクションそれぞれにルートコンポーネントを配置します

このスキルでは行わないこと:

  • 2つ目の Sidebar コンポーネントを追加する。サイドバーは1つです。
  • SidebarContent 内にブランドタイルを配置する。ブランドはヘッダーにのみ配置します。
  • SidebarProvider を再接続したり、折りたたみ動作を置き換えたりする。既存のものを使用してください。
  • メインコンテンツ領域にステッパーを横並びのタブとして配置する。ステッパーは SidebarContent 内の縦型リストです。

MainLayout.tsx を再構成したくなった場合は、いったん止めてください。ほとんどの場合、答えは SidebarContent を実装することです。


セクションの定義

trades-builder ツールには5つのセクションがあります。これらは固定であり、トランスクリプトに記載された業務プロセスではなく、このスキルによって定められています。

セクション 1:見積もり

機能: プロジェクトの詳細を入力し、作業範囲に基づく見積もりを作成します。

プロジェクトの詳細(インライン編集可能):

  • プロジェクト名 — インライン編集可能なテキスト(クリックして編集し、フォーカスを外すと保存)
  • 顧客名 — インライン編集可能なテキスト
  • 住所 — インライン編集可能なテキスト
  • 見積もり番号 — 自動生成、読み取り専用
  • リードの獲得元 — DOMAIN.md で獲得元が定義されている場合は Select ドロップダウン、定義されていない場合は自由入力
  • 見積もり担当者のメモ — Textarea、常に編集可能

作業範囲項目のテーブル(このセクションの中心): このテーブルはアプリ内で最も重要な要素です。各行は、数量を測定した作業範囲を表します。

列種類編集可能備考
作業範囲Select ドロップダウンはいDOMAIN.md の選択肢:断熱材、乾式壁、テーピング、サンディング、清掃、下塗りなど
場所テキスト入力はい例:「メインフロアのリビングルーム」「地下室のスイート」
仕様/種類テキスト入力または Selectはい例:「Type X」「耐湿性」「R-20 バット断熱材」「レベル 4 仕上げ」
平方フィート数値入力はいこの場所における作業範囲の面積
単価数値入力はい1 平方フィートあたりの金額(CAD)
行合計計算値いいえ平方フィート × 単価。自動計算
アクション削除ボタン—ゴミ箱アイコンで行を削除
  • テーブルの下にある 「行を追加」ボタン で作業範囲項目を追加
  • 作業範囲の種類ごとに複数行を追加可能 — 例:場所や種類の異なる乾式壁の行を 2 つ追加
  • 自動計算されるフッター: 小計、税(GST 5%)、合計 — セルの変更ごとに更新
  • すべてのセルを直接編集可能 — セルをクリックして入力し、フォーカスを外すと保存されます。インライン編集のパターンについては frontend-design skill を参照してください。

使用する DOMAIN.md のデータ:

  • Entity Registry → Job Specification のサブ項目を「作業範囲」ドロップダウンの選択肢にする
  • Business Rules → 単位(平方フィート、直線フィート)、税の種類と税率、支払い条件
  • Terminology Glossary → 正確な作業範囲名(一般的なラベルではなく)
セクション 2:スケジュール

機能: 現場作業の担当者と順序を計画します。

フィールド(編集可能):

  • 担当する役割/人物 — DOMAIN.md の Stakeholder Map から選択する Select ドロップダウン。自由入力にはしないでください
  • 作業範囲の順序 — 各作業範囲をどの順番で実施するかを示す、並べ替え可能なリスト
  • 開始日 — 日付ピッカー、編集可能
  • 完了予定日 — 日付ピッカー、編集可能
  • 現場作業員向けメモ — Textarea、編集可能

DOMAIN.md にスケジュール管理ツールが記載されている場合(例:「スケジュール管理には Bold」)、セクションの説明に記載してください:「Bold を使って現場作業員の予定を調整します。」

セクション 3:進行中

機能: 作業範囲項目と場所ごとの作業完了状況を追跡します。

表示内容:

  • 見積もりの作業範囲項目から作成されるテーブル — 同じ行を使って、完了状況を追跡します
列種類編集可能備考
作業範囲テキストいいえ見積もりから取得
場所テキストいいえ見積もりから取得
平方フィート数値いいえ見積もりから取得
ステータスSelect ドロップダウンはい未着手/進行中/完了
  • ステータスの変更は localStorage に即時保存
  • 一括更新用の「すべて完了にする」ボタン
  • 進捗インジケーター:「5 件中 3 件の作業範囲項目が完了」
セクション 4:精算

機能: 二重の支払いフロー(下請け業者への支払いと顧客への請求)に対応します。

表示 — 2 つの請求セクションを横並びに表示:

業者請求セクション:

  • 下請け業者への支払い額 — 完了した作業項目から自動計算(平方フィート × 単価)
  • ステータス:Select ドロップダウン — 支払い準備完了 / 支払い済み
  • 支払日 — 日付選択。ステータスが「支払い済み」の場合に編集可能
  • DOMAIN.md に記載がある場合は Bold を参照

顧客請求セクション:

  • 請求額 — Estimate の小計 + 税

  • ステータス:Select ドロップダウン — 送信準備完了 / 送信済み / 支払い済み

  • 請求日 — 日付選択。編集可能

  • DOMAIN.md に記載がある場合は Arvest を参照

  • プロジェクトを完了としてマークする「案件を精算」アクションボタン

  • 両方の請求ステータスを localStorage に保存する必要があります

DOMAIN.md に請求ツールについて記載がある場合、セクション見出しでそれらを参照します:「業者請求(Bold)」と「顧客請求(Arvest)」。

セクション 5:案件サマリー

機能: 完了したプロジェクトの読み取り専用サマリーです。最終出力を表示します。

レイアウト(上から下へ):

  1. 会社ヘッダー — domain.md の Brand Logos セクションにあるブランドロゴ(指定されたロゴの URL またはパスを使用)+ 会社名 + 仮の住所(「123 Main St, City, Province, Postal Code — 設定で更新してください」)
  2. プロジェクトのメタデータ — プロジェクト名、顧客、住所、見積番号、日付、担当者。ラベルと値を 2 列のグリッドで表示します。
  3. 作業範囲サマリーテーブル — すべての作業項目について、作業範囲の種類、場所、仕様/種類、平方フィート、単価、明細合計を表示します。数値列を右揃えにした見やすい Table を使用します。
  4. 合計ブロック — 小計、税(GST 5%)、合計。合計は大きく太字で表示します。
  5. 支払いステータス — 業者請求ステータスバッジと顧客請求ステータスバッジを横並びで表示します。
  6. 条件 — 支払条件(Net 30)、通貨(CAD)。

このビューは完全な読み取り専用です。 編集コントロール、入力欄、ドロップダウンはありません。変更する場合は、ステッパーで Estimate または Schedule に戻ります。案件サマリーは出力であり、作業画面ではありません。

レイアウトパターン

trades-builder ツールは、5 つのセクションから成る3 パネルレイアウトを使用します(4 つではありません)。ビルダーはこのレイアウトに従う必要があります。

左サイドバー(常に表示、折りたたみ可能)

テンプレートには SidebarProvider、Sidebar、SidebarContent、SidebarTrigger がすでに app/layouts/MainLayout.tsx に設定済みです。SidebarContent は空で、このスキルが内容を配置する場所です。サイドバーを再設定したり、2 つ目の Sidebar コンポーネントを追加したり、ブランドタイルをその中に配置したりしないでください。ブランドアイデンティティはヘッダーにのみ配置します(上記の Template Contract を参照)。

サイドバーの見出し:「ワークフロー」や「プロジェクトワークフロー」など、文脈に合ったラベルを使用します。会社名は使用しません。見出しにはナビゲーションの内容を記述します。

コンポーネント内容
ステッパーSidebarContent 内に 5 つすべてのセクションを縦に並べます:(1)Estimate、(2)Schedule、(3)In Progress、(4)Close Out、(5)Job Summary。各ステップには、ステップ番号、ラベル、セクションの説明から取ったサブタイトル、完了状態を表示します。サイドバー内の縦型ステッパーを使用します。メインコンテンツ領域に横並びのタブを配置してはいけません。
保存済みプロジェクトlocalStorage に保存されたプロジェクトのリスト。各項目には、名前 + 顧客 + ステータスバッジ(見積済み / 予定済み / 進行中 / 完了)を表示します。このセクションをサイドバーの下部に固定し、スクロールしなくても常に表示されるようにします。プロジェクト名をダブルクリックすると、インラインで名前を変更できます。

重要:ステッパーのラベルは DOMAIN.md ではなく、このスキルから取得します。 DOMAIN.md の状態モデルには estimated, scheduled, in progress, completed が記載されている場合があります。これらはバッジに使用するプロジェクトのステータス値です。ステッパーのラベルは、このスキルのセクション名である Estimate、Schedule、In Progress、Close Out、Job Summary です。この 2 つは別のものです。ステッパーは 5 ステップ、ドメインのステータスは 4 つです。ステッパーのラベルにドメインのステータス一覧を使用しないでください。5 ステップではなく 4 ステップになり、Close Out と Job Summary が抜けてしまいます。

メインコンテンツ(中央 — セクションごとに切り替わります)

アクティブなセクションのみを表示します。 すべてのセクションを、1 つのスクロールページに積み重ねて表示しないでください。複数のセクションを 1 つのパネルにまとめないでください(例:「Schedule / In Progress / Close Out」を 1 つのセクションにするのは誤りです。それぞれ独立したパネルにします)。横並びのタブは使用しないでください。ステッパーの各ステップでは、対応するパネルをメインコンテンツ領域の全幅で表示します。それ以外のパネルはすべて非表示にします。

実装:currentStep 状態変数(0–4)を使用します。currentStep に一致するパネルのみをレンダリングします。

// ALL FIVE panels, conditional rendering
{currentStep === 0 && <EstimatePanel />}
{currentStep === 1 && <SchedulePanel />}
{currentStep === 2 && <InProgressPanel />}
{currentStep === 3 && <CloseOutPanel />}
{currentStep === 4 && <JobSummaryPanel />}
セクション表示内容
見積もりプロジェクト詳細フォーム+行の追加・削除、数量、単価、自動計算される合計を備えた作業範囲項目テーブル。「見積もりを保存」ボタンと「スケジュールへ進む」ボタン。
スケジュール(DOMAIN.md に基づく)役割/作業員の割り当てドロップダウン、作業範囲の順序、日付フィールド、現場メモ。「進行中へ進む」ボタン。
進行中行ごとのステータスを表示する、場所別の作業範囲追跡テーブル。「完了にする」ボタン。
完了処理取引先請求書セクション+顧客請求書セクションを横並びで表示。「案件を完了処理する」ボタン。
案件の概要会社ヘッダー、作業範囲テーブル、合計、支払い状況を含む、読み取り専用の書式設定済みプロジェクト概要。
右サイドバー(常に表示)
コンポーネント内容
プロジェクト概要現在のステージ、見積もり番号、支払い条件、小計、税額、合計を含む、リアルタイムで更新されるサイドバー概要。作業範囲項目の変更時に更新します。
ワークフローメモDOMAIN.md のビジネスルールを、状況に応じたガイダンスとして表示します。BR-ID を参照します。
アクション戻る、続行、プロジェクトを削除するボタン。主要なアクションにはブランドのアクセントカラーを使用します。
RBAC の動作
  • DOMAIN.md の「User Roles」または「Stakeholder Map」に記載された役割で localStorage を初期化します。
  • 役割切り替え機能には、ヘッダーバーに単一の DropdownMenu ドロップダウンを使用します。個別のボタンは使用しません。アクティブな役割名とバッジを表示します。
  • 承認の制御:DOMAIN.md で完了処理または承認が特定の役割に限定されている場合、それ以外の役割では該当するボタンを無効にします。
  • 役割ごとのビュー:役割によって特定のステージを担当する場合(例:見積もりは見積もり担当者、スケジュールはプロジェクトマネージャーが担当)、その役割がアクティブなときに関連するコンテキストを表示します。
価格の表示
  • 「見積もり」パネルに価格を表示します。単価、明細合計、小計、税額、合計を含めます。
  • 右サイドバーの「プロジェクト概要」に進行中の合計を表示します。
  • DOMAIN.md に記載された通貨、税の種類、税率を使用します。
  • 通貨コードを付けて価格を表示します(例:「$3,900.40 CAD」、または「$3,900.40」と表示し、概要に「CAD」を表示します)。
shadcn/ui コンポーネントのマッピング

カードは例外として扱い、デフォルトのレイアウト要素にはしないでください。可能な限り、コンテンツをページ本文に直接配置します。カードを使うのは、強調、分離、繰り返し、ダイアログや詳細の枠組みが本当に必要な場合だけです。カードを多用したダッシュボード、カード内のカード、浮遊パネルの汎用グリッドは作成しないでください。

Trades-ops 要素shadcn コンポーネント使用上の注意
プロジェクト詳細フォームInput、Label、Selectプロジェクト名、顧客、住所。ラベルは入力欄の上に配置します。
作業範囲項目のテーブルTable、TableHeader、TableRow、TableCell行を追加/削除します。数値列は右揃えにします。
作業範囲項目のステータスBadge未着手 = outline、進行中 = blue、完了 = green。
プロジェクトのステータスバッジBadge見積済み = amber、予定済み = blue、進行中 = blue、完了 = green。
役割バッジBadgeスタッフ = outline、承認者 = default。
担当者のドロップダウンSelect、SelectContent、SelectItemDOMAIN.md に記載されたステークホルダー名を入力します。自由入力欄にはしないでください。
請求書のステータスセクションSeparator、Badge、Select、Input を使ったインラインセクション業者請求書と顧客請求書を横並びにします。請求書をより明確に分離する必要がある場合のみ、カードを使います。
アクションボタンButtonプライマリ:ブランドアクセント、「続行」。セカンダリ:outline、「戻る」。破壊的操作:「プロジェクトを削除」。
ステッパーナビゲーションカスタムの縦型リストSidebarContent 内に配置します。円の中にステップ番号、ラベル、サブタイトル、完了チェックマークを表示します。状態の指定には cn() を使います。
役割切り替えDropdownMenuヘッダー内にドロップダウンのトリガーを1つだけ配置します。
プロジェクト概要サイドバーラベルと値を縦に並べたインライン表示ラベルは控えめに、値は太字にします。合計行は大きく目立たせます。
ワークフローメモコンパクトで控えめなメモブロックBR-ID を記載した参照資料です。
日付フィールドtype="date" の Input開始日、完了予定日。
メモ/テキストエリアTextarea見積担当者のメモ、現場作業員のメモ。
確認ダイアログAlertDialogプロジェクトの削除、作業の完了処理。
トースト通知Sonner / toast()保存後、完了としてマークした後、完了処理の後に表示します。

決定論的なマッピングルール

エンティティ → 作業範囲項目のマッピング

Knowledge Agent がトランスクリプトからエンティティを抽出する際は、Trades-builder の構造にマッピングします。

DOMAIN.md のエンティティマッピング先セクション
プロジェクト/作業プロジェクトレコード(最上位)すべてのセクション
見積もり見積もりデータ(価格、条件)見積もりパネル
作業仕様/作業範囲作業範囲テーブルの行見積もり + 進行中
請求書顧客請求書セクション完了処理
業者請求書業者請求書セクション完了処理
下請け業者への支払い業者請求書の支払いステータス完了処理
現場スケジュールスケジュールデータスケジュールパネル
ビジネスルール → 検証のマッピング
DOMAIN.md のルールパターン実装
「平方フィートで記録」作業範囲テーブルの数量列に平方フィートを使用
「平方フィート単位で支払い」業者請求書の金額 = 完了した作業範囲項目の(平方フィート × 単価)の合計
「場所ごとに異なる[タイプ]」作業範囲テーブルに場所列を含め、作業タイプごとに複数行を用意
「ステージ:見積済み、予定済み、進行中、完了」ステッパーのステージを正確に一致させる
「手動入力」プロジェクト作成フォームを使用し、インポートフローは設けない
「GST/HST は X%」見積もりと請求書に税額行を追加し、税種別をラベルとして表示
「Net 30/45」支払い条件を概要と請求書に表示
「[役割]のみが[操作]可能」該当するボタンに RBAC の制限を設ける
インテグレーション → 参照のマッピング

DOMAIN.md にインテグレーション先(例:Bold、Arvest、QuickBooks)が記載されている場合は、セクションの説明とワークフローメモで言及します。ただし、インテグレーション用の UI は作成しないでください。プロトタイプは localStorage のみを使用します。インテグレーションは完全版の構築時に実装します。

参照ファイル

このスキルでは、以下のファイルが存在することを想定しています。

ファイル用途
DOMAIN.md または .tasks/domain.mdビジネス用語、エンティティ、ルール、役割、ブランドデータ

ビルダーはコードを書く前に DOMAIN.md または .tasks/domain.md を読む必要があります。

コメント