Skip to content

feat: ✨ implement dummy page generator#60

Merged
shin-sforzando merged 3 commits into
mainfrom
040_implement_dummy_page_generator
May 18, 2026
Merged

feat: ✨ implement dummy page generator#60
shin-sforzando merged 3 commits into
mainfrom
040_implement_dummy_page_generator

Conversation

@shin-sforzando

@shin-sforzando shin-sforzando commented May 18, 2026

Copy link
Copy Markdown
Contributor

Describe the PR

To close #40

Screenshots

(T. B. D.; If applicable, add screenshots to help explain your problem.)

Appendix

(T. B. D.; Add any other context about the problem here.)

Summary by CodeRabbit

リリースノート

  • Documentation

    • セットアップ手順と開発タスクの説明を更新しました。Go/Hugo の最小バージョン要件を引き上げています。
  • New Features

    • ダミーコンテンツ生成機能を追加しました。新しい generate:dummy コマンドで記事やポートフォリオのダミーコンテンツを簡単に生成できます。
  • Chores

    • 開発・CI タスクのコマンド名を統一しました(例:build-cssbuild:css)。Hugo および Go のバージョンを更新しています。

Review Change Stack

@shin-sforzando shin-sforzando self-assigned this May 18, 2026
@shin-sforzando shin-sforzando added the enhancement New feature or request label May 18, 2026
@coderabbitai

coderabbitai Bot commented May 18, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d82136ec-262d-4351-901b-6232685f7968

📥 Commits

Reviewing files that changed from the base of the PR and between 21749c9 and c3ff7d0.

⛔ Files ignored due to path filters (85)
  • assets/img/posts/dummy_0000.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0001.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0002.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0003.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0004.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0005.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0006.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0007.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0008.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0009.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0000_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0000_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0000_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0001_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0001_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0001_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0002_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0002_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0002_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0003_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0003_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0003_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0004_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0004_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0004_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0005_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0005_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0005_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0006_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0006_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0006_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0007_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0007_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0007_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0008_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0008_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0008_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0009_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0009_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0009_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0010_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0010_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0010_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0011_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0011_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0011_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0012_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0012_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0012_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0013_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0013_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0013_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0014_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0014_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0014_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0015_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0015_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0015_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0016_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0016_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0016_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0017_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0017_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0017_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0018_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0018_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0018_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0019_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0019_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0019_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0020_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0020_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0020_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0021_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0021_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0021_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0022_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0022_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0022_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0023_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0023_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0023_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0024_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0024_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0024_thumbnail.jpg is excluded by !**/*.jpg
📒 Files selected for processing (77)
  • .claude/settings.local.json
  • CLAUDE.md
  • Taskfile.yml
  • biome.json
  • content/posts/dummy_0000.en.md
  • content/posts/dummy_0000.ja.md
  • content/posts/dummy_0001.en.md
  • content/posts/dummy_0001.ja.md
  • content/posts/dummy_0002.en.md
  • content/posts/dummy_0002.ja.md
  • content/posts/dummy_0003.en.md
  • content/posts/dummy_0003.ja.md
  • content/posts/dummy_0004.en.md
  • content/posts/dummy_0004.ja.md
  • content/posts/dummy_0005.en.md
  • content/posts/dummy_0005.ja.md
  • content/posts/dummy_0006.en.md
  • content/posts/dummy_0006.ja.md
  • content/posts/dummy_0007.en.md
  • content/posts/dummy_0007.ja.md
  • content/posts/dummy_0008.en.md
  • content/posts/dummy_0008.ja.md
  • content/posts/dummy_0009.en.md
  • content/posts/dummy_0009.ja.md
  • content/works/dummy_0000.en.md
  • content/works/dummy_0000.ja.md
  • content/works/dummy_0001.en.md
  • content/works/dummy_0001.ja.md
  • content/works/dummy_0002.en.md
  • content/works/dummy_0002.ja.md
  • content/works/dummy_0003.en.md
  • content/works/dummy_0003.ja.md
  • content/works/dummy_0004.en.md
  • content/works/dummy_0004.ja.md
  • content/works/dummy_0005.en.md
  • content/works/dummy_0005.ja.md
  • content/works/dummy_0006.en.md
  • content/works/dummy_0006.ja.md
  • content/works/dummy_0007.en.md
  • content/works/dummy_0007.ja.md
  • content/works/dummy_0008.en.md
  • content/works/dummy_0008.ja.md
  • content/works/dummy_0009.en.md
  • content/works/dummy_0009.ja.md
  • content/works/dummy_0010.en.md
  • content/works/dummy_0010.ja.md
  • content/works/dummy_0011.en.md
  • content/works/dummy_0011.ja.md
  • content/works/dummy_0012.en.md
  • content/works/dummy_0012.ja.md
  • content/works/dummy_0013.en.md
  • content/works/dummy_0013.ja.md
  • content/works/dummy_0014.en.md
  • content/works/dummy_0014.ja.md
  • content/works/dummy_0015.en.md
  • content/works/dummy_0015.ja.md
  • content/works/dummy_0016.en.md
  • content/works/dummy_0016.ja.md
  • content/works/dummy_0017.en.md
  • content/works/dummy_0017.ja.md
  • content/works/dummy_0018.en.md
  • content/works/dummy_0018.ja.md
  • content/works/dummy_0019.en.md
  • content/works/dummy_0019.ja.md
  • content/works/dummy_0020.en.md
  • content/works/dummy_0020.ja.md
  • content/works/dummy_0021.en.md
  • content/works/dummy_0021.ja.md
  • content/works/dummy_0022.en.md
  • content/works/dummy_0022.ja.md
  • content/works/dummy_0023.en.md
  • content/works/dummy_0023.ja.md
  • content/works/dummy_0024.en.md
  • content/works/dummy_0024.ja.md
  • scripts/gen-dummy.ts
  • tests/tags.en.spec.ts
  • tests/tags.ja.spec.ts
✅ Files skipped from review due to trivial changes (31)
  • content/posts/dummy_0008.ja.md
  • content/posts/dummy_0008.en.md
  • content/posts/dummy_0005.ja.md
  • content/posts/dummy_0005.en.md
  • biome.json
  • content/works/dummy_0010.ja.md
  • content/works/dummy_0009.en.md
  • content/works/dummy_0007.en.md
  • content/works/dummy_0004.en.md
  • content/works/dummy_0019.ja.md
  • content/works/dummy_0013.en.md
  • content/works/dummy_0024.en.md
  • content/posts/dummy_0007.en.md
  • content/posts/dummy_0007.ja.md
  • content/works/dummy_0014.en.md
  • content/works/dummy_0021.en.md
  • content/works/dummy_0016.en.md
  • content/works/dummy_0021.ja.md
  • content/works/dummy_0018.en.md
  • content/works/dummy_0018.ja.md
  • content/works/dummy_0020.ja.md
  • content/works/dummy_0000.ja.md
  • content/works/dummy_0000.en.md
  • content/works/dummy_0015.en.md
  • content/works/dummy_0003.en.md
  • content/works/dummy_0003.ja.md
  • content/works/dummy_0023.en.md
  • content/works/dummy_0010.en.md
  • content/works/dummy_0015.ja.md
  • CLAUDE.md
  • content/works/dummy_0007.ja.md
🚧 Files skipped from review as they are similar to previous changes (19)
  • content/works/dummy_0005.en.md
  • content/works/dummy_0011.ja.md
  • tests/tags.ja.spec.ts
  • content/works/dummy_0001.en.md
  • content/works/dummy_0017.ja.md
  • content/works/dummy_0022.ja.md
  • content/works/dummy_0002.en.md
  • tests/tags.en.spec.ts
  • content/works/dummy_0024.ja.md
  • content/works/dummy_0012.ja.md
  • content/works/dummy_0020.en.md
  • content/works/dummy_0005.ja.md
  • content/works/dummy_0001.ja.md
  • content/posts/dummy_0006.en.md
  • content/works/dummy_0013.ja.md
  • content/works/dummy_0006.en.md
  • scripts/gen-dummy.ts
  • Taskfile.yml
  • content/works/dummy_0012.en.md

📝 Walkthrough

Walkthrough

タスク命名規約(ハイフン区切り → コロン区切り)の統一と、Faker.js を用いたダミーコンテンツ生成スクリプトの実装が中核です。スクリプトは works・posts の EN/JA ファイルを自動生成し、Picsum 画像をダウンロード。README・CLAUDE.md・Taskfile・設定ファイルが一貫性を保つよう更新されました。

Changes

ダミーコンテンツ生成システム実装とタスク命名規約の統一

Layer / File(s) Summary
ダミーコンテンツ生成スクリプト実装とパッケージ依存
scripts/gen-dummy.ts, package.json
Faker.js(ダミーデータ生成)と tsx(TypeScript 実行)を npm devDependencies に追加。gen-dummy.ts は CLI から works|posts と件数を受け取り、EN/JA フロントマター付き Markdown を生成し、Picsum Photos から画像をダウンロード。既存ファイルは --force なしでスキップ。
Taskfile タスク定義の統一と generate:dummy 追加
Taskfile.yml
タスク名をハイフン区切り(build-css など)からコロン区切り(build:css)へ統一。install:cigenerate:dummy(gen-dummy.ts 実行)、test:produpdate:dependenciesupdate:themecheck:layoutsupdate:changelog を整理。TailwindCSS ビルドを build:css に集約し、開発サーバー・ビルドが依存を統一。
works コンテンツダミーファイル生成(dummy_0000~dummy_0024)
content/works/dummy_00XX.en.md, content/works/dummy_00XX.ja.md
25 個の works ダミー(EN/JA 各)を新規追加・更新。フロントマターは title(小文字化)、date(生成時刻)、clients、collaborators(credits 含む)、references、thumbnail を含む。本文は figure ショートコード(key/sub 画像)+ ダミー段落テキスト。
posts コンテンツダミーファイル生成(dummy_0000~dummy_0009)
content/posts/dummy_00XX.en.md, content/posts/dummy_00XX.ja.md
10 個の posts ダミー(EN/JA 各)を新規追加・更新。フロントマターは title(小文字化)、date、tags(Faker 生成)、thumbnail(Picsum 画像)を含む。本文は figure ショートコード + 複数見出しセクション。
README と CLAUDE.md ドキュメント更新
README.md, CLAUDE.md
タスク名変更(task build-csstask build:css など)と task generate:dummy works|posts [count] [--force] の使用例を追加。Hugo/Go 最小バージョンを更新。「Dummy Articles」から「Generate Dummy Content」へセクション名を変更。ダミーコンテンツ生成、タグクラウド、View Transition API 等の機能説明を追記。
開発・CI・ビルド環境の統一設定
.claude/settings.local.json, .github/workflows/playwright.yml, netlify.toml, playwright.config.ts, tsconfig.json, lefthook.yml
.claude/settings.local.jsonBash(task build:css) 等の新タスク名、Bash(task test:headless) を許可。GitHub ワークフロー(playwright.yml)は task install:ci 実行。netlify.toml の Hugo・Go バージョン引き上げ(Hugo 0.161.1、Go 1.26.3)。playwright.config.ts に Hugo サーバー --renderToMemory フラグ追加。tsconfig.json に scripts/**/*.ts 追加(gen-dummy.ts 型チェック対象化)。lefthook.yml の pre-commit コマンド名を lint:markdown に更新。
リンター・コード品質設定の更新
biome.json, .vscode/settings.json, scripts/check-layout-overrides.sh
biome.json で scripts/**/*.ts の console 出力を許可(ダミー生成スクリプト用)。cSpell.words に "Picsum" 追加(画像取得元参照のため)。check-layout-overrides.sh コメントを task update:theme に修正。
テスト基盤の更新(タグページと環境設定)
tests/tags.en.spec.ts, tests/tags.ja.spec.ts, tests/teardown.ts
タグページテストの対象パスを /tags/tech//tags/works/ へ変更。アクティブタグ期待値も techworks に更新。非アクティブタグ遷移を click + waitForURL から href 直接遷移に変更。teardown.ts の execSync で shell パスを明示(/bin/sh)。

Sequence Diagram(s)

sequenceDiagram
  participant User as ユーザー<br/>$ task generate:dummy
  participant Main as main()<br/>(gen-dummy.ts)
  participant Validate as 引数検証
  participant Generate as generateWorks<br/>generatePosts
  participant Faker as `@faker-js/faker`
  participant FileWriter as ファイル書き込み
  participant PicsumAPI as Picsum Photos<br/>(画像取得)
  
  User->>Main: task generate:dummy works 5
  Main->>Validate: --forceフラグ・引数解析
  Validate-->>Main: 検証完了
  Main->>Generate: generateWorks実行<br/>(count=5)
  Generate->>Faker: 日付・company・credits<br/>生成要求
  Faker-->>Generate: ダミーデータ返却
  Generate->>Generate: EN/JA フロントマター<br/>+ 本文構築
  Generate->>PicsumAPI: 画像URL(複数サイズ)<br/>リクエスト
  PicsumAPI-->>PicsumAPI: 画像ダウンロード
  Generate-->>Main: Markdown文字列返却
  Main->>FileWriter: dummy_0000.en.md<br/>保存
  Main->>FileWriter: dummy_0000.ja.md<br/>保存
  Main->>FileWriter: assets/img/works/<br/>画像保存
  FileWriter-->>Main: 完了
  Main-->>User: 生成完了メッセージ
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • sforzando/sfz.dev#53: タグクラウド実装と Playwright タグページテスト変更が直接関連。本 PR の /tags/works/ 参照は PR#53 の実装と連動。
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 040_implement_dummy_page_generator

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code review

Two definite bugs found — both stem from a blanket find-and-replace of -: that was correctly applied to go-task task names but incorrectly applied to a git ref and a filesystem path, where colons are not valid.

Comment thread .github/workflows/changelog.yml Outdated
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "chore: :paperclip: update CHANGELOG"
branch: chore/update-changelog
branch: chore/update:changelog

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: invalid git branch name

chore/update:changelog is rejected by git check-ref-format — colons are forbidden in git ref names. The peter-evans/create-pull-request action will fail every time it tries to push this branch, permanently breaking automated CHANGELOG PRs.

See:

commit-message: "chore: :paperclip: update CHANGELOG"
branch: chore/update:changelog
title: "chore: :paperclip: update CHANGELOG"

Suggested change
branch: chore/update:changelog
branch: chore/update-changelog

Comment thread Taskfile.yml Outdated
desc: 点検 - Congoテーマのレイアウトオーバーライドを確認
cmds:
- bash scripts/check-layout-overrides.sh
- bash scripts/check:layout-overrides.sh

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: script path does not exist

The task name rename (check-layoutscheck:layouts) is valid go-task syntax, but the shell command was also changed, leaving it pointing to a nonexistent path. The actual script on disk is scripts/check-layout-overrides.sh (hyphen); scripts/check:layout-overrides.sh does not exist. task check:layouts — and task update:theme which depends on it — will both fail with exit 127.

See:

sfz.dev/Taskfile.yml

Lines 172 to 175 in 21749c9

desc: 点検 - Congoテーマのレイアウトオーバーライドを確認
cmds:
- bash scripts/check:layout-overrides.sh

Suggested change
- bash scripts/check:layout-overrides.sh
- bash scripts/check-layout-overrides.sh

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (5)
content/works/dummy_0018.en.md (1)

1-50: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

生成スクリプトでロケール固有のボディコンテンツが生成されていません。

scripts/gen-dummy.tsgenerateWorksShared() 関数(133-136行)では、ボディパラグラフが fakerEN.lorem.paragraphs() を使用して英語のプレースホルダーテキストのみで生成されています。このテキストは generateWorks() 関数で両方の言語バージョン(英語と日本語)に使用されます(243行と255行)。

コーディングガイドラインでは content/**/*.md について「バイリンガルコンテンツ(日本語と英語の両方)を維持する」ことが要求されています。日本語版(.ja.md)ファイルのボディコンテンツは、実際の日本語プレースホルダーテキストが必要です。

生成スクリプトを修正して、ロケール別に異なるボディコンテンツを生成するようにしてください(日本語版には日本語テキスト生成を使用)。

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/works/dummy_0018.en.md` around lines 1 - 50, The body paragraphs are
always generated with English-only fakerEN.lorem.paragraphs() inside
scripts/gen-dummy.ts (generateWorksShared()) and then reused for both locales in
generateWorks(), so Japanese files end up with English content; update
generateWorksShared() to accept a locale argument (or determine locale per call)
and generate locale-specific paragraphs (e.g., use a Japanese faker instance or
set faker.locale='ja' and call the JA lorem generator) instead of always calling
fakerEN.lorem.paragraphs(), and ensure generateWorks() passes the correct locale
when creating the English and Japanese variants so .ja.md gets Japanese
placeholder text.
content/posts/dummy_0001.ja.md (1)

21-54: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

ja 記事本文が日本語になっておらず、バイリンガル要件を満たしていません。

.ja.md なのに本文・見出しが日本語ではなくダミーテキストのままです。レイアウト確認用途でも、ja 側は日本語文面で生成するよう修正し、再生成してください。

As per coding guidelines content/**/*.md: Maintain bilingual content (both Japanese and English) for all content files.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/posts/dummy_0001.ja.md` around lines 21 - 54, The .ja.md file
currently contains placeholder Latin text; replace all paragraph and heading
text (e.g., the body paragraphs and headings such as "## Tamisium deduco tertius
terebro compello suscipit", "## Theologus antepono tantum caveo cohaero usitas",
and "## Chirographum nihil asporto") with natural, grammatical Japanese
translations that preserve the original structure and intent, keep the existing
Hugo figure shortcode ({{< figure src="../img/posts/dummy_0001.jpg"
alt="dummy_0001" >}}) and markdown headings intact, and save/regenerate the file
so the Japanese side meets the bilingual content requirement.
content/posts/dummy_0006.en.md (1)

21-48: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

.en.md の本文が英語になっていません。

英語ページ向けファイルにもラテン語風プレースホルダーが入っており、言語別コンテンツとして利用しづらい状態です。en 出力時は英語本文を生成するように修正してください。

As per coding guidelines: content/**/*.md: Maintain bilingual content (both Japanese and English) for all content files

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/posts/dummy_0006.en.md` around lines 21 - 48, The file
content/posts/dummy_0006.en.md currently contains Latin placeholder text instead
of English; replace the body text in dummy_0006.en.md with the proper English
translation for the post and ensure the content pipeline that generates
language-specific files produces English for the `.en.md` output (follow the
project guideline "content/**/*.md: Maintain bilingual content (both Japanese
and English)"). Locate the English-language source or translation step in your
content creation process and update either the source content or the
generator/template so that the `.en.md` file contains the English copy rather
than placeholder Latin.
content/posts/dummy_0005.ja.md (1)

22-39: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

.ja.md の本文が日本語になっていません。

日本語ページとして生成されるファイルで本文がラテン語風プレースホルダーのままだと、ロケール別コンテンツ要件を満たせません。ja 出力時は見出し・本文を日本語で生成するようにしてください。

As per coding guidelines: content/**/*.md: Maintain bilingual content (both Japanese and English) for all content files

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/posts/dummy_0005.ja.md` around lines 22 - 39, The .ja.md file
contains Latin placeholder content (e.g., headings "## Defessus corrupti ipsum"
and "## Porro corrupti testimonium appono") instead of Japanese; update
dummy_0005.ja.md so that each heading and paragraph is written in Japanese and
include the required bilingual content by appending or pairing English
translations for each section (maintain both languages per coding guideline for
content/**/*.md), ensuring headings and body text are properly translated and
preserved in the same structure.
README.md (1)

125-126: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

build:css への移行漏れがあります。

タスク命名をコロン区切りへ統一している一方で、ここだけ task build-css のままです。task build:css に揃えないと、READMEを見た実行が失敗します。

修正案
- task build-css
+ task build:css
- After updating, rebuild TailwindCSS with `task build-css` or restart the dev server with `task start`.
+ After updating, rebuild TailwindCSS with `task build:css` or restart the dev server with `task start`.

Also applies to: 189-189

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 125 - 126, README に記載されているタスク名が誤って "task build-css"
のままになっているため、README を参照して実行すると失敗します。"task build-css" という文字列を見つけてすべて "task
build:css"
に置換し(該当箇所はレビューで指摘された箇所と同様のもう一箇所もあるはずです)、タスク命名規則に合わせて表記を統一してください。特に該当トークン "task
build-css" を "task build:css" に置き換えることを確認してください。
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/changelog.yml:
- Line 41: ブランチ名にコロンを使っているため create-pull-request アクションで失敗するので、workflow 内の branch
値 `chore/update:changelog` を有効なブランチ名に置き換えてください(例: `chore/update-changelog` または
`chore/update/changelog`)。対象は .github/workflows/changelog.yml の `branch:`
フィールド(現在の `chore/update:changelog` を定義している箇所)で、値をコロンを含まない文字列に変更するだけで OK です。

In `@biome.json`:
- Around line 63-72: The override in biome.json that sets suspicious.noConsole
to "off" for "scripts/**/*.ts" conflicts with project rules; remove or revert
that override (the "includes": ["scripts/**/*.ts"] override that changes
"suspicious.noConsole") so the linter rule is enforced, and update any usages in
files under scripts/**/*.ts that call console.log/warn/error to use
process.stdout.write/process.stderr.write or a project logging utility instead
(search for console.* in scripts/** and replace with appropriate
process.stdout/stderr calls or a centralized logger).

In `@CLAUDE.md`:
- Line 213: Update the CLAUDE.md pre-commit description to match lefthook.yml:
replace the listed `task test` entry with `task test:headless` (or explicitly
mention both if both run) so the doc and the actual Lefthook pre-commit hook
configuration stay consistent; check the paragraph containing "task format",
"task lint:markdown", and "task test" and change "task test" to "task
test:headless".

In `@content/posts/dummy_0009.ja.md`:
- Around line 22-40: The article content and headings (e.g., "## Praesentium
arca sublime argumentum constans" and "## Tui civitas aspicio curis ater
urbanus") are in Latin dummy text; replace all Latin paragraphs and headings in
this .ja.md variant with appropriate Japanese dummy text (headings and
corresponding body paragraphs) so the file provides Japanese content for
localization tests, mirroring the structure/meaning of the English side while
keeping the same heading structure and paragraph breaks.

In `@content/works/dummy_0002.ja.md`:
- Around line 41-49: The Japanese page dummy_0002.ja.md currently contains
English/Latin placeholder text instead of Japanese; replace the body paragraphs
(everything around the existing figure shortcode "{{< figure ... >}}") with
proper Japanese translations for the JA page, keep the figure
shortcode/attributes unchanged, ensure the .ja.md file contains only the
Japanese main copy while the corresponding .en.md retains English, then re-run
the site generator to re-output the bilingual artifacts so the generator
produces a matching JA/EN pair per the content/**/*.md guideline.

In `@content/works/dummy_0006.ja.md`:
- Around line 34-43: The ja.md file currently contains placeholder Latin/English
text; replace the body text in content/works/dummy_0006.ja.md with proper
Japanese content that mirrors the English version (preserve structure,
paragraphs and the {{< figure class="w-screen"
src="../img/works/dummy_0006_sub.jpg" alt="dummy_0006" >}} block), ensuring
Japanese wording, line breaks and layout are appropriate for ja locale and that
bilingual parity between this ja.md and its English counterpart is maintained
per the content/**/*.md guideline.

In `@content/works/dummy_0007.ja.md`:
- Around line 31-39: The ja content file dummy_0007.ja.md currently contains
non-Japanese placeholder text; replace the body text (everything under the
frontmatter and before/after the figure shortcode) with a natural Japanese
translation that preserves structure, shortcodes ({{< figure ... >}}), and
intent for UI/layout testing; ensure the generator or template that produces
dummy_0007.ja.md emits Japanese content for the main body (while keeping the
corresponding English file unchanged) so the repository maintains bilingual
content per content/**/*.md guidelines.

In `@content/works/dummy_0008.ja.md`:
- Around line 36-45: The Japanese content file dummy_0008.ja.md currently
contains non-Japanese placeholder text; replace the entire body (the paragraphs
around the figure tag {{< figure class="w-screen"
src="../img/works/dummy_0008_sub.jpg" alt="dummy_0008" >}}) with a proper
Japanese translation/localized version that preserves the existing structure
(paragraph breaks and the figure shortcode) and matches the bilingual content
guideline for content/**/*.md; ensure the Japanese text conveys the same meaning
as the English counterpart and keep the figure shortcode and alt text unchanged.

In `@content/works/dummy_0009.ja.md`:
- Around line 37-45: The file dummy_0009.ja.md currently contains Latin
placeholder text instead of Japanese; replace the body with proper Japanese
content (natural, readable Japanese) while preserving the existing structure and
shortcodes such as the image shortcode "{{< figure class=\"w-screen\"
src=\"../img/works/dummy_0009_sub.jpg\" alt=\"dummy_0009\" >}}"; ensure the
.ja.md file contains Japanese content for the main body and, per repository
guidelines, maintain the bilingual requirement by keeping or adding the English
counterpart in the corresponding .en.md file (or include a concise English
section if this repo expects both languages in one file).

In `@content/works/dummy_0010.ja.md`:
- Around line 43-53: The .ja.md body for dummy_0010 is still Latin placeholder
text; replace the Latin paragraphs in dummy_0010.ja.md with proper Japanese
content that mirrors the meaning/structure of the English variant (or a full
Japanese translation of the .en.md) while preserving existing shortcodes like
the figure blocks (e.g., {{< figure ... >}}) and any frontmatter; ensure the
file now contains valid Japanese prose so the repo's bilingual content rule
(content/**/*.md) is satisfied.

In `@content/works/dummy_0022.ja.md`:
- Around line 42-50: The paragraphs between the figure tag (the block starting
with "Uxor conqueror voluptate..." and ending with "Alter sordeo solitudo.") are
still placeholder Latin/English and must be replaced with Japanese content for
the .ja.md file; update those sentences to natural Japanese (preserve the
existing structure and the {{< figure ... >}} tag unchanged), ensuring the
.ja.md contains Japanese text corresponding to the original content while
keeping any surrounding frontmatter or metadata intact so bilingual requirements
(separate .ja.md/.en.md files) remain satisfied.

In `@scripts/gen-dummy.ts`:
- Around line 133-136: generateWorksShared() currently uses fakerEN to populate
bodyParagraphs (const bodyParagraphs: [string,string]) which causes .ja.md files
to contain English; update generateWorksShared() (and any related use in
generatePosts()) to branch by locale and use fakerJA to generate the Japanese
body paragraphs for the .ja.md output (e.g., create bodyParagraphsJA using
fakerJA.lorem.paragraphs(...) or choose faker based on a locale parameter),
ensure generatePosts() returns the correct locale-specific content fields rather
than passing English through, and keep the existing English generation for
fakerEN for the .en.md files so both JA and EN outputs are produced per the
bilingual guideline.
- Around line 10-11: VALID_TYPES currently only contains "works" and "posts", so
ContentType and any generation logic omit the required "teams" route; add
"teams" to VALID_TYPES (so type ContentType includes it) and then update all
places that branch on content type—e.g., the generator function(s) like
generateDummyContent, createContentPath or any switch/if that create
files/directories—to handle "teams" (create content/teams/ directory and the
same file structure/fixtures as for works/posts or the intended teams schema).
Ensure any mappings, filename templates, and tests that reference VALID_TYPES or
ContentType are updated accordingly.
- Around line 63-66: The downloadImage function currently calls fetch(url) with
no timeout and can hang; update downloadImage to use an AbortController with a
configurable timeout (e.g., 10s) to abort the fetch when exceeded, attach the
controller.signal to fetch, clear the timeout on success, and propagate a clear
error on timeout; ensure the existing logic that reads response.arrayBuffer()
still runs only after a non-aborted, ok response. Use the symbols downloadImage
and response (and the fetch call) to locate where to add the AbortController and
timeout handling.

In `@Taskfile.yml`:
- Line 174: Update the Taskfile.yml entry that references the script with a
colon in its name: replace the incorrect token "check:layout-overrides.sh" with
the correct token "check-layout-overrides.sh" so the bash invocation points to
the existing script; ensure the task that invokes this script (the line
currently reading bash scripts/check:layout-overrides.sh) now calls the
hyphenated filename so the check:layouts task runs successfully.

---

Outside diff comments:
In `@content/posts/dummy_0001.ja.md`:
- Around line 21-54: The .ja.md file currently contains placeholder Latin text;
replace all paragraph and heading text (e.g., the body paragraphs and headings
such as "## Tamisium deduco tertius terebro compello suscipit", "## Theologus
antepono tantum caveo cohaero usitas", and "## Chirographum nihil asporto") with
natural, grammatical Japanese translations that preserve the original structure
and intent, keep the existing Hugo figure shortcode ({{< figure
src="../img/posts/dummy_0001.jpg" alt="dummy_0001" >}}) and markdown headings
intact, and save/regenerate the file so the Japanese side meets the bilingual
content requirement.

In `@content/posts/dummy_0005.ja.md`:
- Around line 22-39: The .ja.md file contains Latin placeholder content (e.g.,
headings "## Defessus corrupti ipsum" and "## Porro corrupti testimonium
appono") instead of Japanese; update dummy_0005.ja.md so that each heading and
paragraph is written in Japanese and include the required bilingual content by
appending or pairing English translations for each section (maintain both
languages per coding guideline for content/**/*.md), ensuring headings and body
text are properly translated and preserved in the same structure.

In `@content/posts/dummy_0006.en.md`:
- Around line 21-48: The file content/posts/dummy_0006.en.md currently contains
Latin placeholder text instead of English; replace the body text in
dummy_0006.en.md with the proper English translation for the post and ensure the
content pipeline that generates language-specific files produces English for the
`.en.md` output (follow the project guideline "content/**/*.md: Maintain
bilingual content (both Japanese and English)"). Locate the English-language
source or translation step in your content creation process and update either
the source content or the generator/template so that the `.en.md` file contains
the English copy rather than placeholder Latin.

In `@content/works/dummy_0018.en.md`:
- Around line 1-50: The body paragraphs are always generated with English-only
fakerEN.lorem.paragraphs() inside scripts/gen-dummy.ts (generateWorksShared())
and then reused for both locales in generateWorks(), so Japanese files end up
with English content; update generateWorksShared() to accept a locale argument
(or determine locale per call) and generate locale-specific paragraphs (e.g.,
use a Japanese faker instance or set faker.locale='ja' and call the JA lorem
generator) instead of always calling fakerEN.lorem.paragraphs(), and ensure
generateWorks() passes the correct locale when creating the English and Japanese
variants so .ja.md gets Japanese placeholder text.

In `@README.md`:
- Around line 125-126: README に記載されているタスク名が誤って "task build-css"
のままになっているため、README を参照して実行すると失敗します。"task build-css" という文字列を見つけてすべて "task
build:css"
に置換し(該当箇所はレビューで指摘された箇所と同様のもう一箇所もあるはずです)、タスク命名規則に合わせて表記を統一してください。特に該当トークン "task
build-css" を "task build:css" に置き換えることを確認してください。
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9e83298a-644b-4689-bd36-05e23fca7614

📥 Commits

Reviewing files that changed from the base of the PR and between 91d7ad7 and 21749c9.

⛔ Files ignored due to path filters (86)
  • assets/img/posts/dummy_0000.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0001.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0002.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0003.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0004.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0005.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0006.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0007.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0008.jpg is excluded by !**/*.jpg
  • assets/img/posts/dummy_0009.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0000_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0000_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0000_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0001_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0001_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0001_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0002_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0002_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0002_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0003_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0003_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0003_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0004_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0004_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0004_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0005_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0005_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0005_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0006_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0006_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0006_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0007_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0007_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0007_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0008_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0008_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0008_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0009_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0009_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0009_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0010_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0010_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0010_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0011_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0011_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0011_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0012_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0012_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0012_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0013_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0013_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0013_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0014_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0014_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0014_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0015_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0015_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0015_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0016_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0016_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0016_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0017_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0017_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0017_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0018_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0018_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0018_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0019_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0019_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0019_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0020_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0020_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0020_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0021_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0021_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0021_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0022_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0022_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0022_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0023_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0023_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0023_thumbnail.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0024_key.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0024_sub.jpg is excluded by !**/*.jpg
  • assets/img/works/dummy_0024_thumbnail.jpg is excluded by !**/*.jpg
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (88)
  • .claude/settings.local.json
  • .github/workflows/changelog.yml
  • .github/workflows/playwright.yml
  • .vscode/settings.json
  • CLAUDE.md
  • README.md
  • Taskfile.yml
  • biome.json
  • content/posts/dummy_0000.en.md
  • content/posts/dummy_0000.ja.md
  • content/posts/dummy_0001.en.md
  • content/posts/dummy_0001.ja.md
  • content/posts/dummy_0002.en.md
  • content/posts/dummy_0002.ja.md
  • content/posts/dummy_0003.en.md
  • content/posts/dummy_0003.ja.md
  • content/posts/dummy_0004.en.md
  • content/posts/dummy_0004.ja.md
  • content/posts/dummy_0005.en.md
  • content/posts/dummy_0005.ja.md
  • content/posts/dummy_0006.en.md
  • content/posts/dummy_0006.ja.md
  • content/posts/dummy_0007.en.md
  • content/posts/dummy_0007.ja.md
  • content/posts/dummy_0008.en.md
  • content/posts/dummy_0008.ja.md
  • content/posts/dummy_0009.en.md
  • content/posts/dummy_0009.ja.md
  • content/works/dummy_0000.en.md
  • content/works/dummy_0000.ja.md
  • content/works/dummy_0001.en.md
  • content/works/dummy_0001.ja.md
  • content/works/dummy_0002.en.md
  • content/works/dummy_0002.ja.md
  • content/works/dummy_0003.en.md
  • content/works/dummy_0003.ja.md
  • content/works/dummy_0004.en.md
  • content/works/dummy_0004.ja.md
  • content/works/dummy_0005.en.md
  • content/works/dummy_0005.ja.md
  • content/works/dummy_0006.en.md
  • content/works/dummy_0006.ja.md
  • content/works/dummy_0007.en.md
  • content/works/dummy_0007.ja.md
  • content/works/dummy_0008.en.md
  • content/works/dummy_0008.ja.md
  • content/works/dummy_0009.en.md
  • content/works/dummy_0009.ja.md
  • content/works/dummy_0010.en.md
  • content/works/dummy_0010.ja.md
  • content/works/dummy_0011.en.md
  • content/works/dummy_0011.ja.md
  • content/works/dummy_0012.en.md
  • content/works/dummy_0012.ja.md
  • content/works/dummy_0013.en.md
  • content/works/dummy_0013.ja.md
  • content/works/dummy_0014.en.md
  • content/works/dummy_0014.ja.md
  • content/works/dummy_0015.en.md
  • content/works/dummy_0015.ja.md
  • content/works/dummy_0016.en.md
  • content/works/dummy_0016.ja.md
  • content/works/dummy_0017.en.md
  • content/works/dummy_0017.ja.md
  • content/works/dummy_0018.en.md
  • content/works/dummy_0018.ja.md
  • content/works/dummy_0019.en.md
  • content/works/dummy_0019.ja.md
  • content/works/dummy_0020.en.md
  • content/works/dummy_0020.ja.md
  • content/works/dummy_0021.en.md
  • content/works/dummy_0021.ja.md
  • content/works/dummy_0022.en.md
  • content/works/dummy_0022.ja.md
  • content/works/dummy_0023.en.md
  • content/works/dummy_0023.ja.md
  • content/works/dummy_0024.en.md
  • content/works/dummy_0024.ja.md
  • lefthook.yml
  • netlify.toml
  • package.json
  • playwright.config.ts
  • scripts/check-layout-overrides.sh
  • scripts/gen-dummy.ts
  • tests/tags.en.spec.ts
  • tests/tags.ja.spec.ts
  • tests/teardown.ts
  • tsconfig.json

Comment thread .github/workflows/changelog.yml Outdated
Comment thread biome.json Outdated
Comment thread CLAUDE.md Outdated
Comment thread content/posts/dummy_0009.ja.md Outdated
Comment thread content/works/dummy_0002.ja.md Outdated
Comment thread content/works/dummy_0022.ja.md Outdated
Comment thread scripts/gen-dummy.ts
Comment on lines +10 to +11
const VALID_TYPES = ["works", "posts"] as const
type ContentType = (typeof VALID_TYPES)[number]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

teams 未対応のままでは Issue #40 の受け入れ条件を満たせません。

Line 10 の VALID_TYPESworks/posts のみで、content/teams/ の生成ルートが存在しません。Issue 側のスコープに teams が含まれているため、このPRを close 対象にするなら未達です。

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/gen-dummy.ts` around lines 10 - 11, VALID_TYPES currently only
contains "works" and "posts", so ContentType and any generation logic omit the
required "teams" route; add "teams" to VALID_TYPES (so type ContentType includes
it) and then update all places that branch on content type—e.g., the generator
function(s) like generateDummyContent, createContentPath or any switch/if that
create files/directories—to handle "teams" (create content/teams/ directory and
the same file structure/fixtures as for works/posts or the intended teams
schema). Ensure any mappings, filename templates, and tests that reference
VALID_TYPES or ContentType are updated accordingly.

Comment thread scripts/gen-dummy.ts
Comment thread scripts/gen-dummy.ts Outdated
Comment thread Taskfile.yml Outdated
@shin-sforzando shin-sforzando merged commit 8911acb into main May 18, 2026
6 checks passed
@shin-sforzando shin-sforzando deleted the 040_implement_dummy_page_generator branch May 18, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: ✨ implement dummy page generator

1 participant