diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-06-18 23:19:10 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-06-18 23:19:10 +0900 |
| commit | 5bc1e63756cae6974430f1e6cf1a4d5e88f5b9cc (patch) | |
| tree | 46ab1a541403d680fe1719da941d7702159fd453 /.zed/AGENTS.md | |
Initial commit
Diffstat (limited to '.zed/AGENTS.md')
| -rw-r--r-- | .zed/AGENTS.md | 223 |
1 files changed, 223 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・いらすとや等の日本素材サイトを使う |
