--- name: estimate-generator description: > Web 制作会社(株式会社技術評論デザイン)の見積書を PDF で作成する。 「見積書を作って」「見積もりお願い」「estimate」「quotation」「いくらになる」 「概算を出して」「費用感を知りたい」など、金額の提示に関わる依頼で必ず使う。 Web デザイン・コーディング・WordPress 構築・動画制作・インフラ構築の品目に対応し、 標準単価テーブルから金額を積み上げて A4 縦の PDF を出力する。 クライアントへの提案資料を作る場面、案件の概算を出す場面でも使う。 ユーザーが「見積書」という言葉を使わなくても、 作業内容と金額を並べた文書を求めているなら、このスキルを検討する。 allowed-tools: Read, Grep, Glob, Write, Bash(python3:*) --- # 見積書作成 株式会社技術評論デザインの見積書を PDF で作る。 自社情報・支払条件・振込先はスクリプトに埋め込んである。ユーザーには聞かない。 聞くのは宛先・件名・品目・数量・備考の 5 つだけになる。 聞く項目を絞るのは、毎回同じ答えになる質問を繰り返さないため。 自社の住所や振込先が案件ごとに変わることはない。 ## Step 1 ヒアリング 次の 4 つを集める。1 度に全部聞かず、2 つずつ出すと答えやすい。 | 項目 | 例 | |---|---| | 宛先 | 株式会社サンプル商事 | | 件名 | コーポレートサイト リニューアル一式 | | 品目と数量 | 下層ページデザイン 6 ページ、記事移行 40 記事 | | 備考 | 公開後 1 か月の軽微な修正対応を含む(無ければ空欄) | 宛先が個人名なら「様」、法人なら「御中」を付ける。ユーザーが敬称まで書いていれば従う。 品目がはっきりしない場合は、Step 2 のカタログを見せて選んでもらう。 「コーポレートサイトを作りたい」のような粒度で来たら、 典型的な構成(デザイン + コーディング + WordPress + ディレクション)を提案してから数量を詰める。 ### 備考に何を書くか 備考は空欄でも動くが、書いておくと後の揉め事を減らせる。 金額の前提が変わったときに再見積になることを、先に伝えておくのが目的になる。 次の 4 つから、該当するものを選んで 1 文ずつ足す。 | 型 | 例 | |---|---| | 数量の前提 | 本見積は下層ページ 6 ページ・記事移行 40 記事を前提としています。増減がある場合は再見積とさせていただきます。 | | 支給物の前提 | 原稿・写真素材はお客様よりご支給ください。 | | 含まないもの | サーバー・ドメイン費用、写真素材の購入費、公開後の保守運用費は本見積に含みません。 | | 回数の上限 | デザインの修正は初回提案後 2 回まで含みます。 | ユーザーが備考を指定していれば、それを優先し、上の型は補助として足す。 何も指定が無く、数量に「くらい」「程度」のような幅がある場合は、数量の前提だけは書いておく。 ## Step 2 単価の確認 `references/price_table.md` を読み、該当する品目の標準単価を提示する。 ユーザーが金額を指定した場合はそちらを優先する。 指定が無ければ標準単価を使い、**使った単価を明示してから**次に進む。 黙って単価を当てると、あとで食い違いが出る。 カタログに無い品目を頼まれたら、近い品目の単価を根拠として示しつつ、 ユーザーに金額を決めてもらう。勝手に相場を作らない。 ディレクション費は単位が `%` になっている。 制作費の合計に対する比率で計算されるため、単価欄には数量ではなく率(15 など)を入れる。 ## Step 3 JSON を作る ヒアリング結果を次の形にする。 ```json { "client": "株式会社サンプル商事", "subject": "コーポレートサイト リニューアル一式", "estimate_no": "EST-20260825-001", "issue_date": "2026-08-25", "valid_days": 30, "items": [ {"name": "下層ページデザイン", "unit_price": 80000, "quantity": 6, "unit": "ページ"}, {"name": "要件定義・設計", "unit_price": 60000, "quantity": 2.5, "unit": "人日"}, {"name": "ディレクション費", "unit_price": 15, "unit": "%"} ], "remarks": "公開後 1 か月間の軽微な修正対応を含みます。" } ``` 見積番号は `EST-<発行日 YYYYMMDD>-<3 桁連番>`。 同じ日に複数作るなら連番を進める。出力先ディレクトリの既存ファイルを見て決める。 `note` を各品目に足すと、品目名の下に小さく補足が出る。 「PC・SP 含む」のように条件を明示したいときに使う。 **金額は計算しない。** 小計・消費税・合計はスクリプトが出す。 ここで電卓を叩くと、桁を落としたり消費税を二重に掛けたりする。 ## Step 4 PDF を生成する ```bash python3 scripts/generate_estimate_pdf.py ``` PDF と同じ場所に HTML も出る。レイアウトが崩れたときは HTML をブラウザで開くほうが速い。 標準出力に明細行数・小計・消費税・合計・**ページ数**が出る。ヒアリング内容と突き合わせて確認する。 行数が合わない、桁がおかしいと感じたら JSON に戻る。 **ページ数が 2 以上なら警告が出る。** 見積書は 1 枚に収めたい。 品目をまとめる、備考を短くする、または 2 枚になる旨をユーザーに伝えて確認を取る。 この確認が要るのは、レイアウトの崩れが目で見て気づきにくいためになる。 HTML をブラウザで開くと正しく見えるのに、紙面の境界を越えているという壊れ方をする。 画面で確認しただけでは検出できないので、標準出力の数字を読む。 PDF 化は Chrome のヘッドレスを使う。追加の導入は要らない。 Chrome が無い環境では WeasyPrint に落ちるが、そちらは glib / pango が別途要る。 ## Step 5 完了報告 生成した PDF のパスと、合計金額(税込)を伝える。 金額はユーザーが真っ先に見る数字なので、パスだけ返さない。 ``` 見積書を作成しました。 /path/to/estimate-20260825-001.pdf 御見積金額(税込)¥2,061,950 ``` ## 単価を変えたいとき `references/price_table.md` を直接編集する。Markdown の表なので、 品目の追加・削除・単価の変更・カテゴリの追加はテキスト編集だけで済む。 スクリプトは単価テーブルを読まないため、コードの修正は要らない。 自社情報・振込先・支払条件を変えるときは、 `scripts/generate_estimate_pdf.py` の `COMPANY` と「お取引条件」の記述を直す。