2026-07-03_作業ログ
作業ログ 2026-07-03(/handoff・全テーマ)
このセッションはツール実行が不安定になった(出力がプレースホルダ化・commitが実際に走らない・
codecheck/learning.mdがファイルでなくディレクトリ化する異常)。次セッション(安定環境)で下記の残作業を確実にやること。
全体サマリ(このセッションで扱った全テーマ)
/sectionコマンドの迷走と方針確定(v2=実コード抽出方式)- TERASU Lab 参考サイト集を 2列→3列化(完了・本番反映済み)
settings.json権限設定(Edit確認が毎回出る問題)/codecheck新設(コード括弧崩れ等の自動チェック)← 中核完成・Vault保存が未完- セッション不安定化(要 /handoff)
テーマ1: /section コマンド(実コード抽出→完全再現→オリジナル化)
経緯(重要な失敗と学び)
- 当初「参考HPの好きな箇所をTERASUオリジナル化してLabセクションに1コマンドで足す」体制を構築。ツール群作成:
~/dev/lab-terasu/tools/add_section.py(メタ生成)・tools/shoot.sh(Chrome headlessでスクショ自動・playwright不要)・既存build.py。 - 失敗①: go-spiral.ai の動画を見て“それっぽく自作”→大串「全然違う」「寄せるじゃ意味ない」で2回却下→削除。
- 方針転換(大串FB・恒久): 「元HPからコードを抜き取って完全再現→OK確認→TERASUオリジナル化」の順(hp-flow と同じ)。推測自作は禁止。→
section.mdを v2 に全面改訂済み(22_AI運用ルール/コマンド集/section/section.md)。 - 判明した壁: go-spiral.ai・melloninc.jp は両方 Studio Design(ノーコード)製(
_nuxt/CXndTYBH.js・fonts.studio.design)で、動きが canvas/JS駆動=HTML/CSSコードとして抜き出せない=完全再現不可。→ v2 は Step0 で「Studio Design製・canvas は抽出不可」と最初に弾く設計。 - 成功例: marusantakagi-recruit.com = WordPress+Splide製→抽出可。FV横スライド(Splide
type:loop/autoplay/interval:5000/speed:1000)を同設定で再現しオリジナルデザインで作成(fv-slider-loop-ogushi-0630)。 - 著作権の論点(未決着): 大串「Labは公開URLだがnoindex・後で大きく変えるから侵害にならない、気にせず完全再現で設計しろ」。Claude「公開Labに他社の写真/コピー/固有デザインの完全コピーを置くのは複製公開になり実行できない。構造・レイアウト・動きは忠実再現/写真・コピー・固有装飾の絵柄はオリジナル、が両立点」。→ この線引きで平行線。大串の最終意向を次セッションで要確認。
- 現状: fv-slider-loop も flowmorph も削除済み(大串指示)。Lab本番セクション数=66。
/sectionv2 の定義は存在するが、著作権線引きが未決着のため実運用は保留。 - ※
section.mdは大串自身も編集した(Step構成を「テキストのみダミー化・画像は元のまま完全再現」方向に)。この内容と上記著作権線引きの整合は次セッションで要確認。
テーマ2: 参考サイト集 3列化(完了・本番反映済み)
~/dev/lab-terasu/reference-sites.htmlのカードグリッドを 2列→3列(PC3/タブレット2/スマホ1)。- バグと修正: 既存CSSに重複+余分な
}が3つあり、追記で@media解釈が崩れPC2列固定に。<style>の括弧差(}-{)=+3 を検出→余分な}と重複行を削除→差0で正常化→repeat(3,1fr)が正しく効く。本番スクショで3列を目視確認済み。コミット済み(e4b7c88付近)。 - 本番: https://lab.terasu.scale-group.co.jp/reference-sites
テーマ3: settings.json 権限設定(完了)
- 症状: ファイル編集(Edit)のたびに許可ダイアログ「Do you want to make this edit?」が毎回出る。
- 原因: 作業cwd(
マイドライブ/AI)の外(~/dev/lab-terasu等)を編集していたため。全許可(Edit(*)+bypass●●●●●●)でもcwd外は確認される。 - 対処:
~/.claude/settings.jsonのpermissions.additionalDirectoriesに~/dev・~/Obsidian・~/.claude・株式会社SCALE・scale-fs・scale-pmを追加済み。反映は再起動/新セッションで確実になる(次セッションで「編集時に聞かれないか」確認)。
テーマ4: /codecheck 新設 ← Vault保存が未完・要仕上げ
- 目的: テーマ2の括弧崩れミス再発防止。HTML/CSS/JSの ①括弧バランス{}()[] ②CSS重複セレクタ ③JS構文(node --check) ④div開閉 を一括チェックし🔴致命/🟡注意で報告するスラッシュコマンド。
- 完成して使える部分:
- 本体
~/.claude/scripts/codecheck.py(複数ファイル/ディレクトリ対応・テスト済:壊れHTMLで🔴3件検出) - 括弧hook
~/.claude/scripts/check_code_brackets.py(PostToolUse=Edit|Writeで括弧のみ自動チェック・settings.jsonにhook登録済・発火確認済) - コマンド定義
22_AI運用ルール/コマンド集/codecheck/codecheck.md - symlink
~/.claude/commands/codecheck.md→ 上記(/codecheckは打てる状態) - 未完(次セッションで必須):
1.codecheck/learning.mdがディレクトリ化している異常を修復(rm -rfでディレクトリ削除→正しいファイルとして再作成。内容は下記)
2.codecheck.md.backup(別プロセス生成)の要否確認・掃除
3. codecheck一式を Vault(~/dev/scale-brain)に git add→commit→push(今回commitは実際には通っていない)
4. ルールブック22_AI運用ルール/_ルールブック.md7章に/codecheckを1行登録(未登録・恒久ルール)
5./sectionの learning も同様に未commitの可能性→要確認 - 運用の型(確定): HTML/CSS/JS を触ったら push前に /codecheck → 🔴ゼロ → 本番スクショで実表示も確認(文字列grepだけで実画面を見ない、を禁止)。
codecheck/learning.md の正しい内容(再作成用)
---
title: /codecheck 学習ログ
type: learning
tags: [コマンド, codecheck, 品質]
created: 2026-07-03
---
# /codecheck 学習ログ
## 新設の経緯(2026-07-03)
- 2026-06-29 reference-sites 3列化で既存重複CSSに追記し余分な}3つ→CSS崩れでPC2列固定。文字列grepで気づけず本番スクショで発覚。
- 教訓「括弧バランスを機械チェックしていれば即分かった」→手動/codecheck+自動hookを新設。
## 中身
- 本体 codecheck.py: 括弧{}()[]/CSS重複/JS構文(node --check)/div開閉。🔴致命=exit1。
- hook check_code_brackets.py: PostToolUse(Edit|Write)で括弧のみ自動。
- 運用: 触ったらpush前に/codecheck。🔴残しpush禁止。反映確認はcodecheck+本番スクショ両輪。
テーマ5: セッション不安定化
- ツール出力がプレースホルダ化・commit不発・ファイルのディレクトリ化。→ /handoff で新セッションへ(このログがその引き継ぎ)。
次セッションの最優先ToDo(順番)
- セッションの健全性確認(簡単なls/catが正常に返るか)
/codecheckの仕上げ: learning.mdディレクトリ化を修復→codecheck一式をVault commit&push→ルールブック7章登録/sectionの commit確認(section.md v2・learning が push済みか)+著作権線引きの最終意向を大串に確認(構造/動きは忠実再現・写真/コピー/装飾はオリジナル、で確定してよいか)- settings.json 権限変更が効いて「編集時に聞かれない」か確認
- 3列化(テーマ2)は完了済み・確認不要
主要パス
- Lab本体:
~/dev/lab-terasu(GitHub scale-group-jp/lab-terasu・git push自動デプロイ) - section:
~/Obsidian/SCALE-Brain/22_AI運用ルール/コマンド集/section/ - codecheck:
~/Obsidian/SCALE-Brain/22_AI運用ルール/コマンド集/codecheck/+~/.claude/scripts/codecheck.py,check_code_brackets.py - Vault実体:
~/dev/scale-brain(Obsidian/SCALE-Brainはsymlink)
10:18 - /handoff 実行(全テーマ)
このセッションで扱ったテーマ(全部)
- テラクリニックデモHP 制作継続 — システム作業(HP制作) — 継続中・最新commit 1471e28・本番反映済み
※このセッションは実質1テーマ(デモHPの連続改修)。以下に領域別で詳細を残す。
テーマ別の詳細
1. テラクリニックデモHP 制作継続
- リポ/正本:
~/dev/demo-koba-clinic/site/index.html(git連携済み・preview ブランチ push で本番自動デプロイ) - 固定URL: https://preview.demo-tera.pages.dev (
preview.必須/demo-tera.pages.devは404) - 最新commit: 1471e28(作業ツリー clean・未コミット差分なし)
このセッションでやったこと(領域別)
■ 選ばれる理由(t-kf)節
- sticky写真クロスフェードのスクロールアニメを復元(override CSSでアニメが殺されていたのを撤去)
- タイトル「テラクリニックが選ばれる 3つの理由」を全体強調(青#3a95ca・太字600に統一)
- 3見出しをサブ(小15.5px)+メイン(大28px強調)の2段構成に。②メイン=「一気通貫して対応」
- 説明文を16.5pxに拡大+新改行(段落間に空行=spacer方式 height:5px≒35px)。①「削らず」、③「ので」読点削除。②締め=「世代を問わず頼れるかかりつけ歯科です」
- 1枚目画像を「やさしい治療」(reason01-yasashii.jpg=歯科医+歯型模型)に差替(object-position:78%)
- 左テキスト(item--l/l3)を元位置から左に10px(calc(11% - 10px)/calc(9.7% - 10px))
■ 4つの診療(t-rn)節
- 見出し「大人のための」→「家族みんなで通える」に変更
- 説明文の文字化けをフォント明示(Hiragino/Noto)で解消+新改行(幅470px)
- FV左見切れ修正:head/desc/blobの-5px負マージンを除去(左端20pxで整列)
- カード順を歯型ナビと統一:一般→矯正→インプラント→予防(service 01〜04)
■ ヒーロー歯型ナビ(4つの歯)+ 対応する診療カードの画像
- 一般歯科=女性(medical-mimi) / 矯正歯科=女の子(medical-hana/nav-hana、一度アライナー画像にしたが元に戻した) / インプラント=implant-explain.jpg(右寄せxMax=模型を持つマスクの女性衛生士のみ表示) / 予防歯科=yobo-child.jpg(男の子。歯型は無歪み配置 x=-184 width=1102 preserveAspectRatio=none で男の子を中央表示)
- 画像は /images/home/ に最適化配置(sipsでリサイズ)。共用ファイル(medical-mimi/hana/nodo)は上書きせず別名で追加
■ アクセス(t-ac)節
- 住所を千葉に:〒260-0028 千葉県千葉市中央区新町1-2-3/JR「千葉」駅5分/京葉道路「穴川IC」10分・駐車場20台。JSON-LDも整合
- 地図ボタン「Googleマップで見る」→「地図・ルートを見る」+geo:リンク(アプリ非依存)
- 診療時間を参考書式の表に(●/△/-・月〜祝の8列)。現行スケジュール:水・日・祝=休診、土=午前のみ、月火木金=終日●(木は最終的に●に確定・△注記は削除)
- 受付時間 ※:窓口(月火木金)9:00〜12:15/14:30〜17:45、土9:00〜12:15、WEB予約受付9:30〜12:05/15:00〜17:35
- 「デジスマ」表記は全て「WEB予約」に置換(非表示の旧予約ボタン含めページから0件)
- 地図をGoogleマップに変更(最重要の試行錯誤・下記注意点参照)
このセッション全体の大串FB(重要なやつ全部)
- アニメが消えたら前回のに戻す(override撤去で復元)
- 画像は「誰を見せるか」を明確に指定(右の女性のみ/男の子しっかり/前の女の子 等)→クロップ位置(preserveAspectRatio/object-position)で対応
- 診療時間は参考画像の記載方法に寄せる・色は現状維持・内容も反映
- 順番は歯型と統一
- 微妙な位置調整(5px/10px)を多用 → calc(%-px)やmargin/object-positionで対応
- 地図はGoogleマップで表示してほしい(OSMは不可)
注意点(次セッション必読)
- Googleマップ埋め込みの真実: キー無しの
output=embedは現在Googleが廃止(404+X-Frame-Options:SAMEORIGIN)。正規の/maps/embed?pb=形式は使えるが、curlではSAMEORIGINが返る=非ブラウザ応答なので判定に使えない。実ブラウザのiframeでは表示される。正しい座標埋め込みpb構造は!1m18!1m12!1m3!1d{zoom}!2d{lng}!3d{lat}!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2z{label-base64}!5e0!3m2!1sja!2sjp!4v{ver}!5m2!1sja!2sjp(!3m3!1m2!1s0x0%3A0x0!2z...!5e0ブロック必須。これを外すと「マップで開く」だけの劣化表示=バグになる)。現状commit 2f9df83でこの正しい構造(千葉座標)に修正済み。 - キー無しpbは中心座標表示でピン(マーカー)が付かない。ピン付きにするには大串のGoogle「共有→地図を埋め込む」コードか、実在の千葉place idが必要。大串がGoogle埋め込みコードをくれたら即差替可。
- プレビュー検証: このHPは preview_screenshot が頻繁に空振り(全面白)する。Lenisスムーススクロール+sticky干渉が原因。DOM計測(eval)+networkで検証する運用。特にt-kf/t-rn節(sticky/カルーセル)で顕著。ヒーロー最上部は比較的撮れる。
- 本番反映はエッジ伝播にラグ有り。
curl ...?cb=timestampで3回連続クリーンになるまで確認する運用にした。 - preview.demo-tera.pages.dev の
preview.を忘れない(無しは404)。