<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>SUZ-LAB — 実験ログ</title>
    <link>https://suz-lab.co.jp/logs</link>
    <description>SUZ-LAB が実際にやってみたことの記録。テクノロジー・グローバル教育・心身/規律の 3 本の柱で、うまくいったことも難しかったことも、一次情報として率直に残します。</description>
    <language>ja</language>
    <item>
      <title>作り込んだ翌週に捨てる — 自前の通知機構を AIエージェント特化マルチプレクサ herdr へ全面移行した記録</title>
      <link>https://suz-lab.co.jp/logs/migrating-to-herdr-agent-multiplexer</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/migrating-to-herdr-agent-multiplexer</guid>
      <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>前回 tmux で建てた「AI 開発コックピット」の本丸は、別セッションで止まった Claude に気づくための自前の要対応通知機構だった（claude-notify.sh + status.sh + hooks 4種）。その3日後、この自前資産を丸ごと捨て、AIエージェント特化マルチプレクサ herdr のネイティブなペイン状態検出（idle/working/done/blocked）へ載せ替えた。段階移行（PoC → labh オプトイン併存 → 既定切替 → tmux 完全撤去）で可逆性を保ちながら進め、GitHub タブと専用依存（gh-view/fzf）まで削り 3タブ Claude/File/Shell に絞った。「この環境で確実に動く薄い自前」から「成熟した専用ツールに素直に乗る」へ——前作の学びを自分で更新した判断と、pre-1.0 依存に乗るための備え、そして正直に残る未検証の穴まで、実際の PR と一次情報で残します。</description>
    </item>
    <item>
      <title>ラボに「研究員」を置く — VMOST を抽象と具体に割り、実験ログを人に帰属させた</title>
      <link>https://suz-lab.co.jp/logs/building-the-researcher-page</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/building-the-researcher-page</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>サイトには VMOST も Roadmap も Log もあるのに、「誰が・なぜ挑戦しているのか」を語る顔がなかった。そこで研究員ページ（/researchers）を建てた記録。単なる自己紹介ページではなく、サイト共通の VMOST を『抽象（どんな生き方を設計するか）』に寄せ、数値・行動の『具体版 VMOST』を研究員に持たせる情報設計の組み替えになった。全実験ログを研究員に帰属させ、Person の構造化データ・RSS の dc:creator・JSON Feed・llms.txt まで貫いた配線、AI 調査で実在人物の経歴を盛り込んで判断して全部剥がした persona 設計、そして「静かな脱落をビルドで落とす」チェックの追加まで、つまずきごと残します。</description>
    </item>
    <item>
      <title>ターミナル 1 枚に AI 開発コックピットを建てる — Claude / File / GitHub を tmux に畳んだ常駐環境</title>
      <link>https://suz-lab.co.jp/logs/ai-cockpit-cross-session-notifications</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/ai-cockpit-cross-session-notifications</guid>
      <pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>SSH でログインしたら、いつも同じ作業場にそのまま着地する——Claude Code を何本も並行で回しながら、ファイルも PR も同じ場所で行き来できる「常駐の開発コックピット」を tmux で組んだ記録。1 枚の tmux セッションに Claude（Agent View）/ File（lf ファイラー）/ GitHub（PR ブラウザ）の 3 ウィンドウを畳み、Shift+矢印で回す。再アタッチで最新化する自己修復、gh-dash をやめて gh + fzf の自前ブラウザに置き換えた判断、そして下段ステータスバーに要対応セッションを型別で光らせるクロスセッション通知まで、実際のスクリプトと公式仕様の裏取りつきで、一次情報として残します。</description>
    </item>
    <item>
      <title>カバーも AI に描かせる — グラレコ生成パイプラインを content 一本に畳んだ</title>
      <link>https://suz-lab.co.jp/logs/ai-generated-graphic-recording-covers</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/ai-generated-graphic-recording-covers</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>各ページ・各記事のカバー画像を、Gemini の画像モデル（Nano Banana Pro）で生成するパイプラインの記録。「AI を使い倒す」を、制作プロセスそのもので体現する一手。生成する全ビジュアルとそのプロンプトを content/assets.ts 一本の唯一の出所にし、ブランドのビジュアル言語（deep navy ＋ electric-blue）は asset-config.ts に集約。実験ログのカバーは NO_TEXT ルールをあえて破ってグラレコ（手書き文字・アイコン・矢印）で記事を要約する例外にした。生成物はコミットしてビルドを再現可能にし、コンテンツハッシュでキャッシュを無効化する——という設計判断を、実際のコードで残します。</description>
    </item>
    <item>
      <title>サイトを AI に開く — 公開 MCP サーバ（読み取り専用）を建てた</title>
      <link>https://suz-lab.co.jp/logs/building-the-public-mcp-server</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/building-the-public-mcp-server</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>SUZ-LAB の Mission は「一次情報として発信する」こと。その発信先を人間だけでなく AI エージェントにも広げるため、VMOST → Roadmap → Topics/Log を横断参照できる公開 MCP サーバ（Streamable HTTP・読み取り専用）をサイト本体に相乗りさせた記録。コンテンツの唯一の出所（content/*）を同一プロセスからそのまま配信し、データを二重管理しない設計と、認証不要の公開エンドポイントゆえに詰めたパストラバーサル対策・一覧と本文取得の整合・本番メモ化まで、実際のコードで残します。</description>
    </item>
    <item>
      <title>用語を一箇所で定義し、本文へ自動リンクする — サイト横断の glossary を作った</title>
      <link>https://suz-lab.co.jp/logs/cross-site-glossary-and-auto-linking</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/cross-site-glossary-and-auto-linking</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>本文に出てくる概念語（VMOST・Mission・Roadmap・ドッグフーディング…）を、その用語の正規ページへ自動でリンクする仕組みを作った記録。用語辞書を content/glossary.ts 一本の唯一の出所にし、構造化コンテンツ用の照合ロジック（lib/link-terms）と Markdown 記事用の rehype プラグイン（依存ゼロで hast を自前走査）の 2 経路で取り込む。ASCII は語境界・非 ASCII は部分一致・長い語優先・描画単位ごと初出 1 回・自己リンク抑止という「過剰リンクを避ける」方針をどう実装したか、そして同じ 1 エントリが人間向けの内部リンクと AI 向けの語彙集（JSON-LD の DefinedTermSet・MCP の get_glossary）を同時に賄う設計を、実際のコードで残します。</description>
    </item>
    <item>
      <title>iPad から Codespaces に接続して Claude Code で開発する — Blink Code + tmux でカジュアルな作業環境を作った</title>
      <link>https://suz-lab.co.jp/logs/ipad-blink-codespaces-tmux</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/ipad-blink-codespaces-tmux</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>机に向かわなくても、ソファでも移動中でも iPad 一枚でこのモノレポに触れる——そのための作業環境を作った記録。数ある iOS ターミナルから Blink Shell を選んだ理由、SSH / Mosh ではなく Blink Code（内蔵 VS Code）で Codespaces に繋ぐと決めた理由、そして回線切替やアプリのサスペンドでトンネルが切れても作業が飛ばないよう tmux を挟んだ理由を、実際に入れた devcontainer 設定と起動スクリプトの一次情報として残します。</description>
    </item>
    <item>
      <title>AI に見つけてもらい、正しく引用させる — サイトを機械可読にした</title>
      <link>https://suz-lab.co.jp/logs/making-suz-lab-machine-readable</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/making-suz-lab-machine-readable</guid>
      <pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>SUZ-LAB のミッション「AI への発信」を、実際に AI が発見・解釈・引用できる形に実装した記録。AI 向けの索引 /llms.txt と全文版 /llms-full.txt、記事ごとの生 Markdown（体裁を剥いだ本文＋引用用メタ）、主要 AI クローラを明示許可する robots.txt、パースが確実な JSON Feed 1.1、用語辞書を schema.org の DefinedTermSet で公開する構造化データ——を一式そろえた。値の出所は必ずサイトの唯一の出所（content/*）で、各レイヤーは体裁に写すだけ・文言も URL 規則も二重に持たない、という規律をどう貫いたか。robots で AI クローラを列挙する意味、layout:&apos;full&apos; の逃がし方、最終更新日の定義を一本化した判断まで、実際のコードで残します。</description>
    </item>
    <item>
      <title>ガードレールを多層で組む — ブランチ保護と git worktree 運用を監査して固めた</title>
      <link>https://suz-lab.co.jp/logs/hardening-branch-protection-and-worktrees</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/hardening-branch-protection-and-worktrees</guid>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>ソロ＋AI エージェント常用のモノレポで、main のブランチ保護（GitHub Ruleset）と git worktree の運用が本当に妥当かをディープリサーチ報告と突き合わせて監査した記録。報告の推奨をそのまま鵜呑みにせず、この環境（Codespaces / pnpm ハードリンク共有）に本当に効くものだけを適用し、規模が育ってから効くものは Roadmap に後回しした。多層防御（ローカル＝利便性 / サーバー側＝強制）の設計と、実際に入れたコードを一次情報で残します。</description>
    </item>
    <item>
      <title>Git フックを Lefthook に移行した — 依存ゼロのシェル1本から、並列フックへ</title>
      <link>https://suz-lab.co.jp/logs/migrating-git-hooks-to-lefthook</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/migrating-git-hooks-to-lefthook</guid>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>ブランチ保護の監査で「後回し」に切り分けていた Lefthook 移行を、実際に倒した記録。依存ゼロのシェル製 pre-commit（main 直コミット拒否）1本を、Go 製の Lefthook（lefthook.yml 一本）へ移し、pre-commit＝軽いガード＋整形（直列・guard 優先で fail-fast）・pre-push＝typecheck / lint（並列）という構成にした。既存ガードレール（clone・worktree への自動適用と自己修復、main ガード）は壊さず温存。途中で踏んだ「lefthook の postinstall が prepare より先に走り、旧 core.hooksPath を見て追跡対象の .githooks/ を汚す」という順序の罠と、その塞ぎ方まで、実際のコードと一次情報で残します。</description>
    </item>
    <item>
      <title>作ったものそのもので見せる — 制作物ショーケースに AI 生成カバーのギャラリーを追加</title>
      <link>https://suz-lab.co.jp/logs/building-showcase-gallery</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/building-showcase-gallery</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>ラボの制作物ショーケース（/showcase）の最初のセクションとして AI 生成カバーのギャラリーを実装し、そこから数手かけて磨き込んだ記録。画像の出所を content/assets.ts 一本に畳んでビルド時に実在を保証しつつ、ログのカバーは getAllLogs() から動的にタイル化してギャラリーが自動で増える作りにし、cover-first 規約に例外を作らずショーケース自身のカバーも用意した。途中で踏んだ 2 つのインフラ的なつまずき（Vercel だけビルドが落ちる／この記事の表が表にならない）と、ログの拡張子を .mdx → .md に整理した片づけまで、実際のコードと一次情報で残します。</description>
    </item>
    <item>
      <title>最初の一歩：VMOST フレームワークで SUZ-LAB の設計図を作った</title>
      <link>https://suz-lab.co.jp/logs/building-suz-lab-vmost</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/building-suz-lab-vmost</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>何をやるにも、まず「なぜ」と「どう」を一本の線でつなぐところから。VMOST フレームワークに沿って、SUZ-LAB の Vision から Tactics までを実際に定義してみた記録。</description>
    </item>
    <item>
      <title>VMOST → Roadmap → Log を一本の線でつないだ</title>
      <link>https://suz-lab.co.jp/logs/connecting-vmost-roadmap-logs</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/connecting-vmost-roadmap-logs</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>理念（VMOST）から日々の TODO（Roadmap）、その実施結果（Log）までを、相互リンクで往復できる情報設計にした記録。データモデルから実装、検証までを具体的に残します。この記事自体が、その導線から生まれた最初の Roadmap 由来の Log です。</description>
    </item>
    <item>
      <title>発信の器を世に出すまで — Vercel デプロイから独自ドメイン接続まで</title>
      <link>https://suz-lab.co.jp/logs/going-live-vercel-and-domain</link>
      <guid isPermaLink="true">https://suz-lab.co.jp/logs/going-live-vercel-and-domain</guid>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
      <dc:creator>Hiro</dc:creator>
      <description>完璧を待たずにまず Vercel で公開し、そのうえで独自ドメイン suz-lab.co.jp を接続してカノニカル URL を固定するまでの記録。DNS・証明書・リダイレクト・正規 URL の一本化と、www をどう扱うかの判断まで、実際のコードと検証コマンドの出力を一次情報として残します。</description>
    </item>
  </channel>
</rss>
