thiguchi125-debug

chiku-report

"地区名を冠した「地区版 市政報告レポート」(A4両面・手渡し/ポスティング)を、地区の実体確定→矛盾突合→図表計画→print-layout-architect→安全ゲート→PDFまで1パス。Triggers: 〇〇地区版の市政報告レポート/地区版レポート/報告会の案内レポート作って。NOT: スライド→shisei-houkokukai、一般チラシ→design-studio"

thiguchi125-debug 0 Updated 1mo ago

Resources

3
GitHub

Install

npx skillscat add thiguchi125-debug/claude-config/chiku-report

Install via the SkillsCat registry.

SKILL.md

chiku-report スキル(地区版 市政報告レポート)

このスキルが存在する理由

2026-08-09〜10 の北東地区版で、以下がすべて同時に起きた。原因は「Stage2=薄いラッパー」で、判断が属人化していたこと。同じ事故を二度起こさないための工程がこのスキル。

# 起きた事故 潰すゲート
1 隣の地区と真逆のことを書いた。城東版(7/4)で「駅周辺は浸水想定区域外=立地の強み」と説明した1か月後に、北東地区版で「浸水想定区域を含む」と書いた。fact-checker も risk-reviewer も素通り(両者は一次資料としか照合せず、草川自身の過去の説明とは照合しないため) G2 他地区版突合
2 district-issue-scout が「JR亀山駅は椿世町にあり駅が地区の中心資産」と誤った地理的前提を返し、それを検証せず全体を組んだ(実際は駅=御幸町/市役所=本丸町で、どちらも地区外) G1 地区の実体確定
3 自己実績の誤帰属。「PFIを提案した」と書いたが、PFIを挙げたのは市側の答弁で、草川の主張は「市街地再開発事業として一体で」だった G7 安全ゲート+帰属チェック
4 約束型表現(「9月の議会で確かめたい…報告会でお伝えします」)を印刷物に載せた。ルールは存在したがSNS用として登録されており、印刷物に適用する動線がなかった G7 禁止表現の機械スイープ
5 図表・写真が足りず、数字の記事が文章のみになった(体育館空調=0.0%/31.7%/90.5%/14棟/12棟/25%/令和15年度 を全部地の文で書いた) G4 図表計画(最低数)
6 実装を print-layout-architect に渡さず自前でHTMLを書き切り、レイアウト破綻を後追いで潰す羽目になった G5 実装の委譲
7 縦組みブロックの固有幅がflexを押し広げ、右列が右マージンを10.4mm突破していた(縦方向しか測っていなかったため気づかず) G6 機械実測(横幅も)
8 地図の主ラベルが紙面実寸4.1pt。高齢者が読めない G6 ラベル実寸ptの判定
9 ご意見箱QRが99字の生URLでセル0.232mm、200dpiでデコード不能 G6 QRセル寸法+200dpi判定
10 Googleマップを地図に使いかけた。草川の個人保存場所が氏名付きピンで写り込む G4 地図の作り方(固定)

起動条件

  • 「〇〇地区版の市政報告レポート作って」「地区版レポート」「〇〇版の市政報告」
  • 「報告会の案内レポート作って」「案内文兼レポート」(=shisei-houkokukai Stage2 の実体)
  • 「chiku-report」
  • design-studio で「市政報告レポート」を選び、かつ地区名を冠する版のとき

委譲元: shisei-houkokukai Stage2 / design-studio。どちらから来ても本スキルの工程を通す。


出力先

~/outputs/houkokukai/<YYYY-MM-DD>_<地区>/02_report/
  <地区>_omote.html / <地区>_ura.html   ソース
  build.py            プレースホルダ→data URI 置換+PDF/PNG生成
  _photos/            地図・図表・写真
  _proof.txt          全文プレーンテキスト(安全ゲートへ渡す正本)
  _measure.py         紙面の機械実測
  市政報告_<地区>版_<YYYY-MM>_v1.pdf   配布用マスター(表裏結合)

報告会に紐づかない地区版(けんろう版等)は ~/publications/<YYYY-MM_案件名>/ でもよい。保存先マップに従う。


工程

G0 起動時の確認(1回だけ束ねる)

AskUserQuestion 1ラウンド・最大4問で確定させる。バラバラに何度も聞かない([[feedback_ask_bundling_and_upfront_reflection]])。

  1. 配布方法(手渡し/ポスティング/回覧板)→ 配布締切の逆算と、手書き挨拶の要否が決まる
  2. 紙面の主役(一番大きく扱う話)
  3. 発行名義(草川たくや後援会/事務所)
  4. 配布完了期限

G1 地区の実体確定 ★ハードゲート

scout・agent・記憶の地区比定を、そのまま信用しない。 一次資料で確定してから1文字も書かない。

  1. 町名の確定:亀山市まちづくり協議会別町名一覧
    https://www.suzukakameyama-kouiki.jp/insurance/file/houkatsu_kameyama_town_list.pdf
    → WebFetchが「バイナリで読めない」と返したら 必ず pdftotext -layout で抽出([[feedback D4]])。
  2. 自治会と世帯数:地区コミセンの掲示が最も正確。草川に写真を求める(市の地区データとは基準が違い、数字がずれる)。撮ってもらった写真は _photos/ に保全する。
  3. 座標の確定:地理院ジオコーダで全町+関連施設を引く。
    https://msearch.gsi.go.jp/address-search/AddressSearch?q=<URLエンコードした住所>
  4. 地区外の施設を地区内と書かない:市役所・駅・学校・避難所が「その地区にあるか」を必ず座標で確認する。

用語の罠(亀山市固有)

  • 市資料の「市北東部」=井田川地区・川崎地区を指す広域表現。行政区の「北東地区」とは別物。
  • 「亀山消防署北東分署」は長明寺町地内=川崎地区。北東地区の施設ではない。

通過条件: 町名・自治会名・世帯数・主要施設の所在地区が、すべて一次資料で裏付けられている。


G2 他地区版との突合 ★ハードゲート(今回の最重要の学び)

同じ人が隣町に配る紙。同じテーマを別の地区で何と説明したかを必ず突き合わせる。
fact-checker も risk-reviewer もこれをやらない。ここでしか防げない。

# 直近の地区版レポート・スライド・企画シートを、今回のテーマ語で横断grep
for kw in <テーマ語1> <テーマ語2> ...; do
  echo "=== $kw ==="
  grep -rn "$kw" ~/outputs/houkokukai/*/0[123]_*/*.html \
                 ~/outputs/houkokukai/*/01_kikaku/企画シート.md \
                 ~/publications/*/*.html 2>/dev/null | head -20
done

矛盾を見つけたら、新しい方が正しいとは限らない。 どちらが一次資料に近いかで判定する。

  • 例:北東地区版「駅周辺は浸水想定区域を含む」(根拠=2年前のブログ+選定PDFの「浸水想定区域等を含む」)
  • 対 城東版「駅周辺は浸水想定区域外」(根拠=国土地理院 重ねるハザードマップ・fact-check通過済み)
  • → **城東版が正。**河川別(鈴鹿川/椋川)・洪水/内水の区別まで詰められないなら、その論点は紙面から外す。

通過条件: 今回の全テーマについて、過去の地区版・スライドとの矛盾がゼロ。矛盾があれば解消したか、論点ごと外した。


G3 草川の土地勘ヒアリング ★必須

アーカイブに地区固有の材料が無いのが常態(議事録は地区名で書かれない)。データで埋まらない部分は本人に聞く。G0のラウンドに混ぜてよい。

必ず聞く:

  • この地区で実際に困りごとになっている話(選択式+自由記述)
  • 当日/読者の顔ぶれ
  • 触れ方に注意が要る話題

北東地区版では、この一問で「椋川の整備」と「猿問題」、さらに「水道工事の後の舗装がぐにゃぐにゃになっている件は市に対応を求めた」が出てきた。アーカイブからは1件も出てこなかった。地区固有性はここでしか手に入らない。

草川が挙げた案件は、その場で詳細(いつ・どこ・市の回答)を追加ヒアリングする。推測で埋めない。


G4 材料と図表の計画 ★ハードゲート

図表・写真の最低数(守れないなら記事を減らす)

  • A4片面あたり ビジュアル最低2点(写真・地図・図表・数字レールのいずれか)
  • 数字が3つ以上出る記事は、必ず図表化する。地の文に数字を並べない
  • 文章だけの記事を1面に2本以上作らない

主役の切り口

受け身フレームを避け、前向きな提言に寄せる。

  • 弱い例:「決まったのは場所だけ。中身はこれから」
  • 強い例(城東版の型):「延伸は重い事実。でも見方を変えれば10年後の亀山を練り上げる時間」+「駅直結型の新庁舎で南口整備を動かす」+「文化会館の建替えを再開発に一体で組み込む」

大テーマは単独で立てず束ねる。 城東版は「まちづくり=かわまちづくり/新庁舎・駅・文化会館の一体再開発/街なかの安全」で1柱にした。この型を踏襲する。

地図の作り方(固定・逸脱禁止)

  • Googleマップ禁止。草川の個人保存場所が氏名付きピンで地図上に描画され、印刷物に個人情報が焼き込まれる。
  • 地理院タイルを直接合成する。雛形=~/outputs/houkokukai/2026-09-12_北東地区/02_report/_photos/make_map.py
    • 紙面配置幅(mm)を定数に持ち、そこからラベルの画素サイズを逆算する構造にする
    • 主ラベル 7pt以上、副ラベル 6pt以上(紙面実寸)
    • 素の町名は白スクリム(0.5前後)で沈め、自前ラベルと競わせない
    • 地区の全自治会にピンを立てる(1つでも欠けると、その町の人は自分の町が地図に無い紙を受け取る)
    • 出典表示「国土地理院」は必須
  • 範囲は地区に絞る。広域を写すとラベルが潰れる。

素材の再利用

  • Drive一次資料PDFの図面抽出・LINE QR並列配置・overflow段階圧縮の定型は references/print_checklist.md A〜C

profile.jpg / handwrite_note.png / QR は直近の地区版から引き継ぐ。QRは必ず中身をデコードして確認してから使う(版によって宛先が違う)。


G5 実装 ★print-layout-architect へ委譲

自前でHTMLを書き切らない。 テンプレ骨格(川合町版=~/outputs/houkokukai/2026-08-02_川合町/02_report/kawai_omote.html / kawai_ura.html)を渡し、print-layout-architect に実装させる。EYES-FIRSTループ(レンダ→PNGを自分でRead→画素批評→修正)は architect の責務。

参照の受け渡し(2026-08-12追加・必須): テンプレ骨格だけを渡すと、破綻はしないが造形もない紙面が返る。
design_system/references/_INDEX.md から参照を1本選び、判型フォルダの _karte.md の5軸目標値
(①級数ジャンプ率○倍 ②色数○色と役割 ③図形語彙 ④写真・図版占有率○% ⑤イラスト○点)を
数値のまま architect の指示に含める。A4両面レポートの参照が未整備の間は、
trifold/tri04(東大病院 中面=文字中心の面を単調にしない語彙の教科書)と
trifold/tri05(北里大学=数値を円バブル図解1点にまとめる型)を代用する。

規格(川合町版で実証済み・変えない):

  • @page size:216mm 303mm(塗り足し込み)/.page padding:9mm 18mm 0
  • 草川カラー:--green-900:#14432b --green-700:#1f5a3a --gold-500:#c89211 --paper:#fbfaf6
  • フッターは絶対配置 bottom:8mm。「討議資料」+発行者+電話+メール+QR3種
  • 絵文字は使わない

天の断裁セーフティ:シート端から8mm以上(=断裁線から5mm以上)。padding-top:9mm を削らない。


G6 機械実測 ★ハードゲート

scripts/check_report.py を回す。目視で「収まっている」と判断しない。

判定項目:

  1. オーバーフロー:最終コンテンツ下端 < フッター上端(余裕3mm以上)
  2. 横幅:全ブロックの右端が一致(180mm幅なら 198.0mm)。
    縦組みブロック(編集後記など)は行数がそのまま固有幅になり、flexアイテムを内側から押し広げる。 .side{flex:1; min-width:0;} を入れ、縦組みの height で列数を制御する。
  3. 2段組の高さバランス:左右の差 10mm 以内
  4. 地図ラベルの実寸pt:主7pt以上/副6pt以上
  5. QRのセル寸法:0.40mm以上。URLが長いと満たせない → 短縮URLに差し替える(大きくするより先にURLを短くする)
  6. QRの実機デコード:紙面PNGを200dpi相当に落として pyzbar でデコード。cv2.QRCodeDetector は使わない(ドット+ロゴ入りLINE QRを読めず誤判定する)

G6.5 模写採点 ★ハードゲート(2026-08-12追加・skip禁止)

G6は数値が収まっているかを見るだけで、造形が強いかは見ていない。
実測を全部通ってもベタ帯+水平罫線の紙面は出荷されうる(2026-08 三つ折りの事故)。

G5で選んだ参照画像と、完成した紙面PNGの両方を自分で Read し、5軸を数値で比較する。

軸 可 不可(G5へ差し戻し)
① 級数ジャンプ率 参照の70%以上 参照6倍に対し出力2倍
② 色数 参照−1色まで 参照4色に対し出力2色
③ 図形語彙 参照の語彙の半分以上 帯と罫線だけ
④ 写真・図版占有率 参照の70%以上 参照35%に対し出力5%
⑤ イラスト・アイコン 参照が使うなら必ず使う 素材庫が空だからゼロ、は不可

合格=5軸中4軸で「可」以上。 採点結果は5行でチャットに出す。
併せて素材の使い残しを数える(案件フォルダの写真枚数 vs 紙面で使った枚数)。


G7 安全ゲート ★必須・skip禁止

7-1 禁止表現の機械スイープ

scripts/check_report.py --text が検出する。印刷物にも SNS のルールを適用する。

  • 約束型表現:「〜します」「お伝えします」「取り上げます」「求めます」で草川の将来の行動を言い切る形
    → 「〜したい」「〜と考えています」に、または削除([[feedback_sns_no_action_promise_assertions]])

    草川の明示指示(2026-08-10):「こういう約束はするなとルール化しなかったか」。印刷物では特に、履行できなかったとき紙が残る。

  • 絵文字([[feedback_no_emoji_ai_smell]])
  • 「届かないを終わらせる」「届かなくても届く」等の禁止フレーズ
  • 距離比喩・抽象/詩的比喩
  • 他議員の氏名(対外発信では一切禁止。[[feedback_no_other_council_members_names]])

7-2 content-fact-checker

_proof.txt +全画像(地図・図表・手書き・写真)を渡す。画像に焼き込まれた文字も検証対象。指示文に ledger: <案件フォルダ>/_ledger.json を1行入れる(テーマ内台帳。後日の告知SNS等の派生版が台帳から継承できる)。

特に指示すること:

  • 草川が「求めてきた」「提案してきた」と書いた箇所が、会議録の本人発言と一致するか(市側答弁の内容を本人の提案として書いていないか)
  • 議事録は草川発言+市答弁のペアのみ。他議員が引き出した数字は「議会で市が説明」と受動で書く
  • 鮮度もの(登録目標・工事の進捗・撤去の可否)は、配布時点で状態が変わっていないか

7-3 content-risk-reviewer

同じく全テキスト+全画像+配布条件(配布方法・部数・時期・選挙までの日数)を渡す。

判定を鵜呑みにしない。条文の当てはめは自分で確認する。

北東地区版で「公選法199条の5第3項=後援団体名義の文書図画の頒布禁止」として REJECT が出たが、同項は後援団体が行事の場で選挙区内の者に饗応接待・金銭・記念品を供与することの禁止であり、文書図画の頒布規制ではない。政治活動用文書の氏名表示規制(143条19項)は「掲示」が対象で任期満了前6か月。手渡しのレポートには当たらない。
ただし同項は当日の景品・茶菓の提供を直撃する。指摘の対象を取り違えていただけで、条文自体は重要。

CRITICAL は即停止して草川に通知。HIGH は ASK_USER。


G8 承認・PDF・保存

  1. 表裏PDFを pypdf で結合 → 市政報告_<地区>版_<YYYY-MM>_v1.pdf
  2. open でPDFとフォルダを両方開く([[feedback_open_folder_after_generating_files]])
  3. 草川承認 → Driveミラー(ZZ_市政報告レポート/)の可否を1回だけ確認して置く
  4. 家庭用プリンタで刷る回はインク節約版を別途作る(CSS配色だけ差替。正本=skills/design-studio/SKILL.md 📌節「インク節約版」)
  5. _status.json の stage2 を更新(gates の実施内容と未決事項を残す)

G9 還元

  • 今回の地区で新たに分かった地区特性は 🏘️自治会別訪問管理DB の該当ページに追記(次回は差分だけ聞けばよくなる)
  • 新しい事故が起きたら、このSKILL.mdの冒頭の表に1行足す
  • テンプレとして良い部品ができたら design_system へ昇格提案

📌 恒久ガードルール

  • 着手前に references/print_checklist.md を1回Read。 規格値は ~/.claude/scripts/specs.json、保存前に gate.py
  • 地区の地理は一次資料で確定してから書く。 agent の地区比定を信用しない
  • 他地区版と突合してから書く。 隣町に真逆のことを配らない
  • 地図は地理院タイル。Googleマップは個人情報が写る
  • ラベルとQRは紙面実寸で判定する。「大きく見える」で通さない
  • 約束型表現は印刷物でこそ禁止。 紙は訂正できない
  • 数字が3つ以上なら図表化。 文章に数字を流し込まない
  • 実装は print-layout-architect。 自前で書き切らない
  • 横幅も測る。 縦組みは固有幅でflexを押し広げる