aboutsummaryrefslogtreecommitdiffhomepage
path: root/.zed
diff options
context:
space:
mode:
Diffstat (limited to '.zed')
-rw-r--r--.zed/AGENTS.md223
-rw-r--r--.zed/settings.json5
2 files changed, 228 insertions, 0 deletions
diff --git a/.zed/AGENTS.md b/.zed/AGENTS.md
new file mode 100644
index 0000000..e46299b
--- /dev/null
+++ b/.zed/AGENTS.md
@@ -0,0 +1,223 @@
+# 安竹洋平 公式サイト 編集ルール
+
+## 文体・表現
+- ベースの文体は「です・ます」調(敬語)
+- 「残念ながら」「非常に遅い」「拒否している」など嫌味・批判的な表現は避け、客観的事実として書く
+- 人物には「氏」をつける
+- 見出しに「」は使わない
+
+## ディスレクシアについてのコンテンツについて
+- /about-dyslexia/以下の、「ディスレクシアについて」の項目中のコンテンツ(ページ)については次を適用する。
+ - 旧mdbook(C:\Users\yohei\Desktop\ZedPlayground\reference-materials\dyslexiaのmdbookソース)の内容を**必ず参照**し、そこにある文章・リンク・引用を優先して使う
+ - 旧mdbookにない内容を勝手に追加しない。省かれている記述があれば追加する
+ - 引用は `>` ブロッククォートまたは `<div class="bln bleft dyslexia">` 吹き出しで明示し、出典リンクを必ず併記する
+  - 吹き出しは `<div class="bln bleft dyslexia"><span class="tail-outer"></span>` を使用
+ - 色はアンバー系(CSS変数 `--bubble-dyslexia-bg` 等で定義済み)
+ - 吹き出しには必ず `<span class="tail-outer"></span>` を入れる
+ - 出典は吹き出しの後に `— 出典名` 形式で書く
+ - 楽天アフィリエイトのURL形式: `https://hb.afl.rakuten.co.jp/ichiba/54fb1f56.abf524ab.54fb1f57.aed11c5d/_RTLink136060?pc=https%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2FNUMBER%2F&link_type=text&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJ0ZXh0Iiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjAsImFtcCI6ZmFsc2V9`
+ - アフィリエイト注記: 「リンクからの収益は、ディスレクシアの周知活動およびサイト運営費に充てられます」
+
+## アフィリエイト
+- 楽天アフィリエイトID: `54fb1f56.abf524ab.54fb1f57.aed11c5d`
+- 書籍リンクには `target="_blank" rel="nofollow sponsored noopener"` を付与
+- アフィリエイト注記: 「リンクからの収益は、安竹洋平の政治活動及び本サイトの運営費に充てられます」
+
+## ノート(:::note)
+- `:::note[タイトル]` ではなく、以下形式でTOCに表示させる:
+ ```
+ :::note
+ ##### タイトル
+ 本文
+ :::
+ ```
+
+## 実績ページ(○○の軌跡)
+- フロントマター: `title`, `description`, `tableOfContents: true`
+- 冒頭にアイキャッチ画像(`<img>` + 画像クレジットの `<p class="image-credit">`)
+- 構成: 冒頭説明 → タイムライン(表) → 詳細セクション → 「成果」表 → 「今後の課題」 → 「関連リンク」 → `[← 実績ページに戻る](/jisseki/)`
+- アイキャッチ画像は `public/img/` に配置、参照は `/img/filename.png`
+- 画像のダウンロード元(イラストAC等)を必ずクレジット表記
+
+## SEO
+- `@astrojs/sitemap` によるサイトマップ自動生成(`astro.config.mjs` に追加済み)
+- `public/robots.txt` に sitemap URL を記載
+- OGP 画像・JSON-LD 構造化データは `astro.config.mjs` の `head` で設定
+- Google Search Console への登録・サイトマップ送信は手動で行う
+
+---
+
+# 画像の取り扱い(技術編)
+
+## ファイル名
+- **短くすること**。長いファイル名(例: `kajo-seigen-kanwa-eyecatch.png`)は Astro dev server が 404 を返す
+- 推奨: `{topic}-eyecatch.png`(例: `dislexia-eyecatch.png`)
+- 極力日本語読みでファイル名を作成する(例: 'asita-yaru.mdx')
+
+## 表示サイズと用途
+| 用途 | クラス/CSS | 表示サイズ | 推奨元画像サイズ |
+|------|-----------|-----------|----------------|
+| 実績カード | `.achievement-img` | 160×110px(SP: 140px高) | 横長 480×330px 以上 |
+| 詳細ページアイキャッチ | `max-height:360px; width:100%` | コンテンツ幅(〜720px) | 横長 1440×720px(2:1) |
+| ホーム活動グリッド | `.activity-card`(`aspect-ratio:4/3`) | 最小150px幅 | 4:3、600×450px 以上 |
+
+- 全画像 `object-fit: cover` のため枠より大きければ自動トリミング
+- 共通の推奨サイズ: **横長 1500×750px**
+
+## 画像コピー方法
+```bash
+cp "C:/Users/yohei/Desktop/ZedPlayground/reference-materials/{フォルダ}/{ファイル名}" "C:/Users/yohei/Desktop/ZedPlayground/yasutakeyohei.com/public/img/{出力ファイル名}"
+```
+- `copy_path` ツールは上書きに失敗しやすいため、`cp` が確実
+- 上書き時は先に `rm` で削除してから `cp`
+
+## ライセンス表記テンプレート
+
+### 実績カード内
+```html
+<p class="image-credit" style="font-size:0.7rem;color:#aaa;text-align:right;margin-top:0.5rem;">画像提供:<a href="URL">サイト名</a></p>
+```
+
+### 詳細ページアイキャッチ直後
+```html
+<p class="image-credit" style="font-size:0.75rem;color:#999;text-align:right;margin-bottom:1.5rem;">画像提供:<a href="URL">サイト名</a></p>
+```
+
+### よく使う素材サイトURL
+- イラストAC: `https://www.ac-illust.com/main/detail.php?id=XXXXXX`
+- photoAC: `https://www.photo-ac.com/main/detail/XXXXXX`
+- いらすとや: `https://www.irasutoya.com/YYYY/MM/blog-post_XX.html`
+- PIXTA: `https://pixta.jp/illustration/XXXXXX`
+- かいごイラスト: `https://kaigoirasuto.info/`
+
+---
+
+# ファイル編集の注意点
+
+## edit_file の制限
+- **長い行やURLを含むテキストには `edit_file` がマッチしない**ことが多い
+- その場合は `write_file` でファイル全体を書き換える
+
+## write_file 使用時の注意
+- **ファイル全体の内容を必ず含めること**。一部だけだと内容が消失する
+- 事前に `read_file` で全内容を取得してから編集する
+- 消失した場合は `git checkout -- {filepath}` で復元可能
+
+## 複数箇所にマッチする場合
+- `old_text` が複数行にマッチすると編集に失敗する
+- 十分にユニークなコンテキストを含めること
+
+---
+
+# よく使うファイル
+- 設定: `astro.config.mjs`
+- CSS: `src/styles/custom.css`
+- 参照資料: `reference-materials/実績まとめ用資料/`
+- 参照資料(小平市議会での安竹の記録): `reference-materials/実績まとめ用資料/議会`
+- 旧サイト参照: `reference-materials/移行元documents(docusaurus)/`
+- 旧サイト(ディスレクシア)参照: `reference-materials/dyslexiaのmdbookソース/'
+- .htaccess: `public/.htaccess`
+
+---
+
+# 一般質問ページの作成ルール
+
+## 年度の区切り
+- **3月定例会は前年度に属する**(例: 令和7年3月 → 令和6年度 r6d、令和8年3月 → 令和7年度 r7d)
+- 4月以降は新年表記の年度(例: 令和7年6月 → 令和7年度 r7d)
+
+## 新規セッション追加時のインフラ設定
+1. `astro.config.mjs` の `year()` に該当月を追加(なければ関数の MONTHS にも追加)
+2. `src/content/docs/ippan-situmon/rXd/index.mdx` に該当月へのリンクを追加
+3. **`src/components/starlight/Breadcrumbs.astro` の `labelMap` に新年表記を追加**(例: `'r7d': '令和7年度'`)
+4. 各ディレクトリに `images/` フォルダを作成
+
+## ページのフォーマット
+
+### 見出し(TOC表示のため Markdown 必須)
+- **必ず `###` を使う。HTML の `<h3>` は右側目次に表示されない**
+- `### 質問する理由` → 背景説明
+- `### ① [質問タイトル]` → 各質問(丸数字付き)
+- `#### [サブタイトル]` → 再質問セクション。**「○の再質問:」プレフィックス禁止**
+- 丸数字(①②③)は自動生成ID上で `-` に変換される → まとめ表のリンクは `(#-自動生成ID)` 形式
+
+### 吹き出し(MessageBubble)
+- 安竹: `speaker="安竹(初回質問)"` または `speaker="安竹(再質問)"`
+- **相手側は必ず `align="left"` を使用**。フルネームで(例: `speaker="市長(小林 洋子)" align="left"`)
+
+### スタイル
+- まとめ文は です・ます調。2〜3文で簡潔
+- 「令和X年X月X日に行ったN件の一般質問のうちのX件目です。」は重複禁止
+- 吹き出し内の番号付きリストは Markdown 記法(1. 2. 3.)
+- データの多い答弁は表形式に整形
+
+### 部分テンプレート(必須)
+主な質疑の先頭に必ず以下を入れる:
+```
+import Partial from './../../_partial.mdx';
+
+<Partial />
+```
+
+### 一問一答形式の構造
+```
+### 質問する理由
+#### [背景サブタイトル]
+<MessageBubble speaker="安竹(初回質問)"> ... </MessageBubble>
+
+### ① [質問タイトル]
+<MessageBubble speaker="安竹(初回質問)"> 質問文 </MessageBubble>
+<MessageBubble speaker="[役職]([名前])" align="left"> 答弁 </MessageBubble>
+
+#### [再質問サブタイトル]
+<MessageBubble speaker="安竹(再質問)"> ... </MessageBubble>
+<MessageBubble speaker="[役職]([名前])" align="left"> ... </MessageBubble>
+```
+
+## 通告書PDFの扱い
+1. `reference-materials/実績まとめ用資料/議会/[YYYY年M月定例会]/` から該当PDFを探す
+2. `public/pdf/` にコピー(命名: `YYYYMMDD-ippan-situmon-yasutake-N.pdf`)
+3. **PyPDF2 で1ページずつ分割**(`YYYYMMDD-ippan-situmon-yasutake-Np.pdf`)し、元の全ページPDFは削除
+4. 各質問ページに `<embed src="/pdf/YYYYMMDD-ippan-situmon-yasutake-Np.pdf" class="tukokusyo" type="application/pdf" />`
+
+## FAQ
+- **見出しが目次に出ない**: `<h3>` HTMLタグではなく `###` Markdownを使う
+- **faviconが出ない**: `astro.config.mjs` の `head` に `<link rel="icon" href="/favicon.ico">` を追加
+- **Windowsでステージ時にエラー206**: パス長制限。`git config core.longpaths true` を実行
+- **パンくずリストで年度が rXd と表示される**: `Breadcrumbs.astro` の `labelMap` に追加
+- **PDFが全ページ表示される**: 1ページずつ分割して `-1p.pdf` 等を使う
+
+---
+
+# デプロイ
+
+## ビルドコマンド
+- `npm run build` は `astro build && py removeNullCharacters.py` を実行する
+- `removeNullCharacters.py` はビルド後のNull文字除去スクリプト(プロジェクト直下)
+
+## エックスサーバーへのデプロイ
+- エックスサーバーは全プランSSH対応だが、サーバー側 rsync は保証されない
+- デプロイスクリプト: `deploy.sh`(プロジェクト直下)
+ - `RSYNC_DEST=user@sv12345.xsrv.jp:public_html/ npm run deploy` で実行
+ - まず rsync(SSH経由)を試行 → 失敗時は lftp(FTPS)に自動フォールバック
+ - rsync は `--checksum` を使用(タイムスタンプではなく内容で差分判定)
+ - `--delete` なしのため、サーバー上のサブドメインディレクトリは**一切削除されない**
+- lftp が必要な場合: Git Bash: `pacman -S lftp` / WSL: `sudo apt install lftp`
+- SSH鍵を設定しておくとパスワード不要でデプロイ可能
+
+---
+
+# 画像素材の補足
+
+## 海外フリー素材(人物なし用途)
+- Unsplash: 欧米人被写体が大半のため、**人物が写っていない写真**(教室・文房具・黒板・自然など)に限定して使う
+- Pixabay: Unsplash より多様だが同様の制約
+
+## いらすとやの検索
+- 「特別支援学級」といったピンポイントなキーワードではヒットしない場合がある
+- 代わりに「学校」「教室」「こども」など、より一般的なキーワードで検索する
+- 商用利用は21点まで無料(要クレジット表記)
+
+## 画像選定の基本方針
+- 外国人は原則NG。日本のこども・学校・風景のイラスト・写真を優先
+- 人物ありの写真が必要な場合は、イラストAC・photoAC・いらすとや等の日本素材サイトを使う
diff --git a/.zed/settings.json b/.zed/settings.json
new file mode 100644
index 0000000..79eee0a
--- /dev/null
+++ b/.zed/settings.json
@@ -0,0 +1,5 @@
+{
+ "agent": {
+ "allowed_paths": ["."]
+ }
+}