trades-builder
Customware SPA 向けの工事・フィールドサービス業務に特化したバーティカルスキルです。DOMAIN.md を工事業務管理ツールへ変換するためのセクションレイアウト、設定スキーマ、マッピングルールを定義します。Builder Agent が顧客のドメインを建設・フィールドサービス・工事プロジェクト管理と判定した場合に使用し、見積もり、作業仕様、スコープ項目、床面積、現場スケジュール、外注業者への支払い、取引請求書、顧客請求書、工程管理、作業員追跡などがトリガーシグナルとなります。
description の原文を見る
> Trades Operations vertical skill for the Customware SPA. Defines the section layout, config schema, and mapping rules for transforming a DOMAIN.md into a trades operations tool. Use this skill when the Builder Agent classifies a customer's domain as construction, field service, or trades project tracking. Trigger signals: estimates, job specs, scope items, square footage, field scheduling, subtrade payments, trade invoices, customer invoices, project stages, crew tracking.
SKILL.md 本文
取引業務スキル
このスキルの役割
このスキルは、取引業務ツール — 見積から支払いまでのワークフロー(建設取引とフィールドサービスビジネスが日常的に実行)を構築する方法を定義します。
これは汎用的なプロジェクト管理ツール(Jira/Asana)ではありません。CPQ ツール(製品構成なし)でもありません。以下のビジネス向けに特別に設計されたワークフロー追跡ツールです:
- 測定されたスコープアイテム(延べ床面積、直線距離、単位)に基づいて見積を作成
- フィールド作業をクルーまたは下請け業者にスケジュールして割り当てる
- スコープアイテムと場所ごとに進行状況を追跡
- 完了した測定作業に基づいて下請け業者に支払い
- 顧客にインボイスを提出して支払いを回収
一般的なバーティカル: 乾式壁、屋根葺き、HVAC、配管、電気、塗装、床張り、コンクリート、造園、総合建設。
ビルダーはこのスキルを読み、特定の取引と用語について DOMAIN.md を読み、顧客の実際のスコープアイテム、価格設定、およびワークフローステージを使用する動作プロトタイプを生成します。
このスキルを使用する時期
トランスクリプトまたは DOMAIN.md にこれらのシグナルが含まれている場合、このスキルを使用してください:
| シグナル | 例 |
|---|---|
| 測定値を含むスコープアイテム | 延べ床面積、直線距離、ボード幅、エリアあたりのユニット |
| フィールドスケジューリング | クルー割り当て、ジョブカレンダー、フィールド作業計画 |
| 下請け業者支払い | サブへの支払い、取引支払い、1平方フィートあたりの給与 |
| 見積からインボイスへのワークフロー | 見積 → スケジュール → 作業 → インボイスサイクル |
| 取引固有のスコープ | 断熱、乾式壁、テーピング、屋根葺き、骨組み、配管の粗ラフ |
| 場所ベースの仕様 | フロアごと、部屋ごと、ゾーンごとの異なる仕様 |
| デュアルインボイス発行 | 取引インボイス(下請け業者への発信)と顧客インボイス(クライアントからの受信) |
このスキルを使用しないでください:
- 依存関係のある製品構成 → 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: 見積(Estimate)
役割: プロジェクトの詳細をキャプチャし、スコープベースの見積を構築します。
プロジェクト詳細(インライン編集可能):
- プロジェクト名 — インライン編集可能なテキスト(クリックして編集、ブラーで保存)
- 顧客名 — インライン編集可能なテキスト
- 住所 — インライン編集可能なテキスト
- 見積番号 — 自動生成、読み取り専用
- リード情報源 — DOMAIN.md がソースを定義する場合は
Selectドロップダウン、そうでなければ自由形式テキスト - 見積担当者メモ —
Textarea、常に編集可能
スコープアイテムテーブル(このセクションの最も重要な要素): このテーブルはアプリで最も重要な要素です。各行は測定量を持つ作業スコープを表します。
| 列 | タイプ | 編集可能 | 注記 |
|---|---|---|---|
| スコープ | Select ドロップダウン | はい | DOMAIN.md からのオプション: 断熱、乾式壁、テーピング、サンディング、クリーニング、プライミングなど |
| 場所 | テキスト入力 | はい | 例: 「メインフロアリビングルーム」、「地下スイート」 |
| 仕様/タイプ | テキスト入力または Select | はい | 例: 「タイプ X」、「湿度耐性」、「R-20 バッチ」、「レベル 4 仕上げ」 |
| 延べ床面積 | 数値入力 | はい | この場所でのこのスコープの延べ床面積 |
| レート | 数値入力 | はい | 1 平方フィートあたりのドル単価(CAD) |
| 行合計 | 計算済み | いいえ | 延べ床面積 × レート、自動計算 |
| アクション | 削除ボタン | — | ゴミ箱アイコンで行を削除 |
- テーブル下の「行を追加」ボタン をクリックしてスコープアイテムをさらに追加
- スコープタイプごとに複数行 — 例えば、異なる場所に異なるタイプがある 2 つの乾式壁行
- 自動計算フッター: 小計、税金(GST 5%)、合計 — すべてのセル変更時に更新
- すべてのセルが直接編集可能 — セルをクリック、入力、ブラーして保存。インライン編集パターンについては frontend-design スキルを参照してください。
DOMAIN.md から使用するデータ:
- Entity Registry → Job Specification サブアイテムが Scope ドロップダウンオプションになります
- Business Rules → 計測単位(平方フィート、直線フィート)、税タイプと税率、支払い条件
- Terminology Glossary → 正確なスコープ名(汎用ラベルではなく)
セクション 2: スケジュール(Schedule)
役割: フィールド作業の割り当てと順序を計画します。
フィールド(編集可能):
- 割り当てられたロール/人 — DOMAIN.md Stakeholder Map からの
Selectドロップダウン、フリーテキストではない - スコープシーケンス — スコープアイテムが何の順序で発生するかを示す並び替え可能なリスト
- 開始日 — 日付ピッカー、編集可能
- 目標完了日 — 日付ピッカー、編集可能
- フィールドクルーメモ —
Textarea、編集可能
DOMAIN.md がスケジューリングツールを言及している場合(例: 「Bold でスケジューリング」)、セクション説明でそれを参照してください: 「Bold を使用してフィールドクルーを整列させてください。」
セクション 3: 進行中(In Progress)
役割: スコープアイテムと場所ごとの作業完了を追跡します。
表示:
- 見積のスコープアイテムから入力されたテーブル — 同じ行、現在完了のために追跡中
| 列 | タイプ | 編集可能 | 注記 |
|---|---|---|---|
| スコープ | テキスト | いいえ | 見積から |
| 場所 | テキスト | いいえ | 見積から |
| 延べ床面積 | 数値 | いいえ | 見積から |
| ステータス | Select ドロップダウン | はい | 未開始 / 進行中 / 完了 |
- ステータス変更は即座に localStorage に保存されます
- 「すべてを完了にマーク」ボタンで一括更新
- 進行インジケーター: 「5 個中 3 個のスコープアイテムが完了」
セクション 4: 完了処理(Close Out)
役割: デュアル支払いフロー — 下請け業者に支払い、顧客にインボイスを発行します。
表示 — 2 つのインボイスセクションを並べて:
取引インボイスセクション:
- 下請け業者支払い額 — 完了したスコープアイテムから自動計算(延べ床面積 × レート)
- ステータス:
Selectドロップダウン — 支払い準備完了 / 支払い済み - 支払い日 — 日付ピッカー、ステータスが「支払い済み」のときに編集可能
- DOMAIN.md に記載されている場合は Bold へのリファレンス
顧客インボイスセクション:
-
インボイス額 — 見積から小計 + 税金
-
ステータス:
Selectドロップダウン — 送信準備完了 / 送信済み / 支払い済み -
インボイス日 — 日付ピッカー、編集可能
-
DOMAIN.md に記載されている場合は Arvest へのリファレンス
-
「ジョブを完了」アクションボタン、プロジェクトを完了としてマーク
-
両方のインボイスステータスは localStorage に保存されます
DOMAIN.md がインボイスツールを言及している場合、セクションヘッダーでそれを参照してください: 「取引インボイス(Bold)」と「顧客インボイス(Arvest)」。
セクション 5: ジョブサマリー(Job Summary)
役割: 完了したプロジェクトの読み取り専用サマリー — 最終出力ビュー。
レイアウト(上から下へ):
- 会社ヘッダー — domain.md Brand Logos セクションのブランドロゴ(提供されたロゴ URL またはパスを使用)+ 会社名 + プレースホルダーアドレス(「123 Main St, City, Province, Postal Code — settings で更新」)
- プロジェクトメタデータ — プロジェクト名、顧客、アドレス、見積番号、日付、割り当て先。ラベル/値ペアの 2 列グリッド。
- スコープサマリーテーブル — すべてのスコープアイテム(スコープタイプ、場所、仕様/タイプ、延べ床面積、レート、行合計)。右揃えの数値列を使用したきれいな
Table。 - 合計ブロック — 小計、税金(GST 5%)、合計。合計は大きく太字。
- 支払いステータス — 取引インボイスステータスバッジ + 顧客インボイスステータスバッジ、並べて。
- 条件 — 支払い条件(Net 30)、通貨(CAD)。
このビューは完全に読み取り専用です。 編集コントロール、入力フィールド、ドロップダウンはありません。ユーザーはステッパーで Estimate または Schedule をクリックしたり、変更を加えたりします。Job Summary は出力であり、ワークスペースではありません。
レイアウトパターン
trades-builder ツールは、3 パネルレイアウト で 5 つのセクション(4 つではなく)を使用します。ビルダーはこのレイアウトに従う必要があります。
左サイドバー(常に表示、折りたたみ可能)
テンプレートは、SidebarProvider、Sidebar、SidebarContent、および SidebarTrigger を app/layouts/MainLayout.tsx に既に配線した状態で出荷されます。SidebarContent は空です — これはこのスキルが埋めるスロットです。サイドバーを再配線しないでください、2 番目の Sidebar コンポーネントを追加しないでください、そして SidebarContent 内にブランドタイルを配置しないでください。ブランドアイデンティティはヘッダーのみに存在します(上記のテンプレートコントラクトを参照)。
サイドバーヘッディング: 会社名ではなく、「ワークフロー」または「プロジェクトワークフロー」などのコンテキストラベルを使用してください。ヘッディングはナビゲーションが何であるかを説明します。
| コンポーネント | コンテンツ |
|---|---|
| ステッパー | SidebarContent 内のすべて 5 つのセクションのバーティカルリスト: (1) 見積、(2) スケジュール、(3) 進行中、(4) 完了処理、(5) ジョブサマリー。各ステップは以下を表示します: ステップ番号、ラベル、セクション説明からのサブタイトル、完了状態。メインコンテンツエリアの水平タブではなく、サイドバーのバーティカルステッパー。 |
| 保存されたプロジェクト | localStorage に保存されたプロジェクトのリスト。各行は名前 + 顧客 + ステータスバッジ(見積済み / スケジュール済み / 進行中 / 完了)を表示します。このセクションをサイドバーの下部にピン留めして、スクロールなしで常に表示されるようにしてください。プロジェクト名をダブルクリックしてインライン名前変更してください。 |
重要: ステッパーラベルはこのスキルから来ます、DOMAIN.md ではありません。 DOMAIN.md 状態モデルには estimated, scheduled, in progress, completed がリストされている場合があります — これらはバッジのプロジェクトの状態値です。ステッパーラベルはスキルのセクション名です: Estimate, Schedule, In Progress, Close Out, Job Summary。 これらは異なるものです。ステッパーは 5 ステップです。ドメインは 4 ステータスです。ステッパーラベルとしてドメイン状態リストを使用しないでください — 4 ステップで終わり、Close Out と Job Summary を失います。
メインコンテンツ(中央 — セクションごとに変更)
アクティブなセクションのみがレンダリングされます。 すべてのセクションを 1 つのスクロールページに積み重ねないでください。複数のセクションを 1 つのパネルに組み合わせないでください(例: 「スケジュール / 進行中 / 完了処理」を 1 つのセクションとすることは間違いです — 各セクションは独自のパネルです)。水平タブを使用しないでください。各ステッパーステップは、メインコンテンツエリアの全幅でそれに対応するパネルを表示します。他のすべてのパネルは非表示です。
実装: currentStep 状態変数(0-4)を使用します。currentStep に一致するパネルのみをレンダリングします。
// すべての 5 つのパネル、条件付きレンダリング
{currentStep === 0 && <EstimatePanel />}
{currentStep === 1 && <SchedulePanel />}
{currentStep === 2 && <InProgressPanel />}
{currentStep === 3 && <CloseOutPanel />}
{currentStep === 4 && <JobSummaryPanel />}
| セクション | レンダリング内容 |
|---|---|
| 見積 | プロジェクト詳細フォーム + 行を追加/削除できるスコープアイテムテーブル、数量、レート、自動計算される合計。「見積を保存」と「スケジュールに続行」ボタン。 |
| スケジュール | ロール/クルー割り当てドロップダウン(DOMAIN.md から)、スコープシーケンス、日付フィールド、フィールドメモ。「進行中に続行」ボタン。 |
| 進行中 | 場所ベースのスコープ追跡テーブル、各行のステータス付き。「完了をマーク」ボタン。 |
| 完了処理 | 取引インボイスセクション + 顧客インボイスセクション、並べて。「ジョブを完了」ボタン。 |
| ジョブサマリー | 会社ヘッダー、スコープテーブル、合計、支払いステータスを含む読み取り専用のフォーマットされたプロジェクトサマリー。 |
右サイドバー(常に表示)
| コンポーネント | コンテンツ |
|---|---|
| プロジェクトサマリー | ライブ更新されるサイドバーサマリー: 現在のステージ、見積番号、支払い条件、小計、税金、合計。スコープアイテムの変更時に更新されます。 |
| ワークフローメモ | DOMAIN.md からのビジネスルール、コンテキストガイダンスとして表示。BR-IDs を参照します。 |
| アクション | 戻る、続行、プロジェクト削除ボタン。プライマリアクションはブランドアクセント色を使用します。 |
RBAC 動作
- DOMAIN.md User Roles または Stakeholder Map からのロールで localStorage をシードします。
- ロールスイッチャーはヘッダーバーの単一の
DropdownMenuドロップダウン — 独立したボタンではありません。アクティブロール名とバッジを表示します。 - 承認ゲーティング: DOMAIN.md が特定のロールのみが完了処理または承認できると言っている場合、他のロールではそれらのボタンを無効にします。
- ロール固有のビュー: ロールが特定のステージを処理する場合(例: 見積担当者が見積を処理、プロジェクトマネージャーがスケジュールを処理)、そのロールがアクティブな場合に関連コンテキストを表示します。
価格表示
- 見積パネルに価格を表示 — ユニットレート、行合計、小計、税金、合計。
- 右サイドバーのプロジェクトサマリーで実行中の合計を表示します。
- DOMAIN.md から通貨、税タイプ、税率を使用します。
- 通貨コード付きで価格をフォーマット(例: 「$3,900.40 CAD」または「$3,900.40」(サマリーに「CAD」を表示))。
shadcn/ui コンポーネントマッピング
カードをデフォルトレイアウトプリミティブではなく、例外として扱います。可能な限りコンテンツをページ本体にインラインします。何かが本当に強調、分離、繰り返し、またはダイアログ/詳細フレーミングが必要な場合にのみカードを使用します。カード満載のダッシュボード、カード内のカード、または浮遊パネルの汎用グリッドを構築しないでください。
| 取引業務要素 | shadcn コンポーネント | 使用注記 |
|---|---|---|
| プロジェクト詳細フォーム | Input、Label、Select | プロジェクト名、顧客、アドレス。ラベルを入力の上にスタック。 |
| スコープアイテムテーブル | Table、TableHeader、TableRow、TableCell | 行を追加/削除。数値列を右揃え。 |
| スコープアイテムステータス | Badge | 未開始 = アウトライン、進行中 = 青、完了 = 緑。 |
| プロジェクトステータスバッジ | Badge | 見積済み = 琥珀、スケジュール済み = 青、進行中 = 青、完了 = 緑。 |
| ロールバッジ | Badge | スタッフ = アウトライン、承認者 = デフォルト。 |
| 割り当てドロップダウン | Select、SelectContent、SelectItem | DOMAIN.md ステークホルダー名から入力。フリーテキスト入力ではありません。 |
| インボイスステータスセクション | インラインセクション(Separator、Badge、Select、Input 付き) | 取引インボイス + 顧客インボイス並べて。インボイスがより強い分離が必要な場合のみカードを使用します。 |
| アクションボタン | Button | プライマリ: ブランドアクセント、「続行」。セカンダリ: アウトライン、「戻る」。破壊的: 「プロジェクト削除」。 |
| ステッパーナビゲーション | カスタムバーティカルリスト | SidebarContent 内。ステップ番号を円で、ラベル、サブタイトル、完了チェックマーク。状態に cn() を使用。 |
| ロールスイッチャー | DropdownMenu | ヘッダーの単一ドロップダウントリガー。 |
| プロジェクトサマリーサイドバー | インラインスタックラベル/値行 | ラベルをミュート、値を太字。合計行は大きく目立つ。 |
| ワークフローメモ | コンパクトなミュート注記ブロック | BR-IDs 付きの参照資料。 |
| 日付フィールド | Input(type="date" 付き) | 開始日、目標完了日。 |
| メモ/テキストエリア | Textarea | 見積担当者メモ、フィールドクルーメモ。 |
| 確認ダイアログ | AlertDialog | プロジェクト削除、ジョブ完了。 |
| トースト通知 | Sonner / toast() | 保存後、完了をマーク、完了処理。 |
決定論的マッピングルール
Entity → スコープアイテムマッピング
Knowledge Agent がトランスクリプトからエンティティを抽出する場合、それらを trades-builder 構造にマップします:
| DOMAIN.md エンティティ | マッピング先 | セクション |
|---|---|---|
| Project / Job | プロジェクトレコード(トップレベル) | すべてのセクション |
| Estimate | 見積データ(価格、条件) | 見積パネル |
| Job Specification / Scope | スコープアイテムテーブル行 | 見積 + 進行中 |
| Invoice | 顧客インボイスセクション | 完了処理 |
| Trade Invoice | 取引インボイスセクション | 完了処理 |
| Subtrade Payment | 取引インボイスの支払いステータス | 完了処理 |
| Field Schedule | スケジュールデータ | スケジュールパネル |
ビジネスルール → 検証マッピング
| DOMAIN.md ルールパターン | 実装 |
|---|---|
| 「延べ床面積で追跡」 | スコープアイテムテーブルは数量列として延べ床面積を使用 |
| 「延べ床面積ごとに支払い」 | 取引インボイス額 = 完了したスコープアイテムの(延べ床面積 × レート)の合計 |
| 「場所ごとに異なる [タイプ]」 | スコープアイテムテーブルは Location 列を含む、スコープタイプごとに複数行 |
| 「ステージ: 見積済み、スケジュール済み、進行中、完了」 | ステッパーステージが完全に一致 |
| 「手動で入力」 | プロジェクト作成フォーム、インポートフローなし |
| 「GST/HST X%」 | 見積とインボイスの税行、ラベルとしての税タイプ |
| 「Net 30/45」 | サマリーとインボイスに表示される支払い条件 |
| 「[ロール] のみが [アクション] できる」 | 関連するボタンの RBAC ゲート |
統合 → リファレンスマッピング
DOMAIN.md が統合ポイント(例: Bold、Arvest、QuickBooks)をリストしている場合、セクション説明とワークフローメモでそれを参照します — ただし、統合 UI を構築しないでください。プロトタイプは localStorage のみです。統合は完全ビルドで来ます。
リファレンスファイル
このスキルは以下のファイルが存在することを期待しています:
| ファイル | 目的 |
|---|---|
DOMAIN.md または .tasks/domain.md | ビジネス用語、エンティティ、ルール、ロール、ブランドデータ |
ビルダーはコードを書く前に DOMAIN.md または .tasks/domain.md を読むべきです。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- customware-ai
- リポジトリ
- customware-ai/skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/customware-ai/skills / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。