Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 46 additions & 19 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,28 @@
# CodeRabbit configuration
# https://docs.coderabbit.ai/reference/configuration

language: ja-JP
language: 'ja-JP'
early_access: false
enable_free_tier: true

reviews:
# 個人運営のためレビューはまず "chill" で緩めに始める。
# 必要に応じて "assertive" に切り替えて検出感度を上げる。
profile: chill

# CodeRabbit を bot reviewer として動作させる。
# 問題なしと判断した PR に対して Approve ステータスを返す。
# 個人運営での self-merge 運用 (PR 作成者は自分の PR を承認できない GitHub 仕様)
# を補助する目的で有効化。Approve は最終判断ではなく補助。
# 個人運営だが、main マージ後に Cloud Run / Cloudflare Pages の本番環境へ
# 自動デプロイされる前提のため検出漏れを避けたい。"assertive" で検出感度を
# 高めに維持し、ノイズが過剰になった場合は "chill" に戻すことも検討する。
profile: 'assertive'

# PR 全体に対する指針。path_instructions に "**/*" を入れるとファイル毎に
# 繰り返し適用されてノイズが増えるため、広範な指示は instructions に集約する。
instructions: |
変更がプロジェクト全体に与える影響や、アーキテクチャの観点など、広いスコープからコードレビューを行ってください。必ず日本語でコメントしてください。
メインブランチにマージされた場合に Cloud Run / Cloudflare Pages 上の本番環境にデプロイされることを考慮し、以下の観点を強調し、重要視して必ずレビューに盛り込んでください:
- 実行環境へのアクセス方法(認証情報、API キー、DB 接続文字列、内部 URL など)がコードやログから漏洩していないこと。
- 実行環境に不正にアクセスするための攻撃手法や脆弱性(インジェクション、認可不足、不適切な権限設定、CORS / CSRF / Secure Cookie / Secure Headers の設定崩れなど)が入り込んでいないこと。

# CodeRabbit を bot reviewer として動作させる。問題なしと判断した PR に対して
# Approve ステータスを返す。個人運営での self-merge 運用 (PR 作成者は自分の
# PR を承認できない GitHub 仕様) を補助する目的で有効化。Approve は最終判断
# ではなく補助。
request_changes_workflow: true

high_level_summary: true
Expand All @@ -27,22 +36,40 @@ reviews:
base_branches:
- main

path_instructions:
- path: 'js/**/*.js'
instructions: |
ブラウザ上で動作する vanilla JavaScript (ES modules) のクライアントコードとしてレビューしてください:
- ユーザー入力をそのまま innerHTML 等に流していないか (XSS 観点)。
- イベントリスナのリーク (重複登録 / 解除漏れ) が無いか。
- DOM 操作が描画パフォーマンスを著しく落としていないか。
- path: '.github/workflows/**'
instructions: |
GitHub Actions ワークフローとしてレビューしてください:
- シークレットの露出 (echo / set-output 経由のリーク) が無いか。
- 外部 action は SHA pin されているか。
- permissions: が最小権限になっているか。

# 生成物 / 依存物 / ロックファイルなどはレビュー対象から除外する。
# path_filters は明示的な include がないと全ファイルが対象外になる仕様のため、
# 先頭で "**" を指定して全ファイルを対象としたうえで個別に除外する。
path_filters:
- '**'
- '!dist/**'
- '!build/**'
- '!coverage/**'
- '!node_modules/**'
- '!pnpm-lock.yaml'
- '!package-lock.json'
- '!yarn.lock'
- '!**/dist/**'
- '!**/build/**'
- '!**/coverage/**'
- '!**/node_modules/**'
- '!**/.wrangler/**'
- '!**/.turbo/**'
- '!**/.next/**'
- '!infra/cdktf.out/**'
- '!infra/.gen/**'
- '!**/bun.lock'
- '!**/package-lock.json'
- '!**/yarn.lock'
- '!**/pnpm-lock.yaml'
- '!**/*.min.js'
- '!**/*.min.css'
- '!**/*.map'
- '!**/*.snap'
- '!**/*.tsbuildinfo'

abort_on_close: true

Expand Down
16 changes: 10 additions & 6 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,29 +7,33 @@

<!-- このPRが何を解決するか / 何を追加するかを1〜3行で。 -->

## 関連 Issue
## 関連 Issue / 設計ドキュメント

<!-- 例: Closes #123, Refs #456 -->
<!-- 例: Closes #123, Refs docs/superpowers/specs/xxx.md -->

## 変更内容

<!-- 主要な変更点を箇条書きで。 -->

-
-

## 動作確認

<!-- ローカルで確認した内容、テスト結果、スクショなど。 -->
<!-- ローカル / ステージングでどう確認したか、または確認方法。スクショ・ログがあれば貼る。 -->

- [ ] ローカルで動作確認した
- [ ] テストを追加・更新した(または不要な理由を記載)

## セルフチェック

- [ ] 既存の lint / typecheck / test がパスする
- [ ] `npm run lint` がパスする
- [ ] `npm run format:check` がパスする
- [ ] 破壊的変更がある場合、README または docs を更新した
- [ ] secret / 個人情報を含むコードや設定が含まれていない

## 補足
## デプロイ時の注意

<!-- 環境変数追加 / インフラ変更 / 手動オペレーションが必要なら明記。なければ「なし」。 -->

<!-- 追加で共有しておきたいことがあれば。なければ削除。 -->
なし
4 changes: 1 addition & 3 deletions .github/workflows/actionlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@ jobs:
name: actionlint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.0
with:
persist-credentials: false
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6

- name: Download actionlint
id: actionlint
Expand Down
29 changes: 16 additions & 13 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: CodeQL
name: 'CodeQL'

on:
push:
branches: [main]
pull_request:
# The branches below must be a subset of the branches above
branches: [main]
schedule:
# 毎週月曜 03:00 JST (= 日曜 18:00 UTC) に main を再スキャン
- cron: '0 18 * * 0'
- cron: '30 1 * * 1' # 毎週月曜 10:30 JST (01:30 UTC) にスキャン

concurrency:
group: codeql-${{ github.ref }}
Expand All @@ -16,32 +16,35 @@ concurrency:
permissions:
contents: read
security-events: write
actions: read

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
timeout-minutes: 360

strategy:
fail-fast: false
matrix:
# frontend は tsx、backend は ts。両方とも 'javascript-typescript' でまとめてスキャン。
language: ['javascript-typescript']

steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.0
- name: Checkout repository
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@458d36d7d4f47d0dd16ca424c1d3cda0060f1360 # v3
uses: github/codeql-action/init@78ed0c7291d93e40c51b085850dc669a4c3ab73b # v3
with:
languages: ${{ matrix.language }}
# security-extended は誤検知が増えるため、まずは security-and-quality で運用。
# ノイズが多い場合は 'security' に下げる。
queries: security-and-quality
# クエリセットを指定してセキュリティ・品質チェックを強化可能
# queries: security-extended,security-and-quality

- name: Autobuild
uses: github/codeql-action/autobuild@78ed0c7291d93e40c51b085850dc669a4c3ab73b # v3

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@458d36d7d4f47d0dd16ca424c1d3cda0060f1360 # v3
uses: github/codeql-action/analyze@78ed0c7291d93e40c51b085850dc669a4c3ab73b # v3
with:
category: '/language:${{ matrix.language }}'
category: '/language:${{matrix.language}}'
12 changes: 4 additions & 8 deletions .github/workflows/gitleaks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
name: Scan for leaked secrets
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.0
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
# 履歴全体をスキャンするためフルクローン
fetch-depth: 0
Expand All @@ -33,12 +33,8 @@ jobs:
run: |
set -euo pipefail
GITLEAKS_VERSION=8.21.2
BASE_URL="https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}"
ARCHIVE="gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz"
curl -fsSLO "${BASE_URL}/${ARCHIVE}"
curl -fsSLO "${BASE_URL}/gitleaks_${GITLEAKS_VERSION}_checksums.txt"
grep " ${ARCHIVE}$" "gitleaks_${GITLEAKS_VERSION}_checksums.txt" | sha256sum -c -
tar -xzf "${ARCHIVE}" gitleaks
curl -fsSLO "https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz"
tar -xzf "gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" gitleaks
sudo mv gitleaks /usr/local/bin/gitleaks
gitleaks version

Expand All @@ -55,7 +51,7 @@ jobs:

- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@458d36d7d4f47d0dd16ca424c1d3cda0060f1360 # v3
uses: github/codeql-action/upload-sarif@78ed0c7291d93e40c51b085850dc669a4c3ab73b # v3
with:
sarif_file: gitleaks.sarif
category: gitleaks
19 changes: 5 additions & 14 deletions .github/workflows/markdownlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,12 @@ jobs:
# 整備完了後に continue-on-error を外して赤検知に切り替える。
continue-on-error: true
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.0
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
with:
persist-credentials: false

- name: Setup Node.js
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.0.0
with:
# プロジェクト全体で Node.js 20.19 に統一(ESLint v10 の最低要件に合わせて)
node-version: '20.19'

- name: Install markdownlint-cli2
# DavidAnson/markdownlint-cli2-action は allowed_actions に含まれない
# third-party action のため、npm 経由で実行する。
# --ignore-scripts で postinstall 経由の任意コード実行を防ぐ。
run: npm install -g --no-fund --no-audit --ignore-scripts markdownlint-cli2@0.22.1

- name: Run markdownlint-cli2
run: markdownlint-cli2 --config .markdownlint-cli2.jsonc "**/*.md"
uses: DavidAnson/markdownlint-cli2-action@992badcdf24e3b8eb7e87ff9287fe931bcb00c6e # v20
with:
config: '.markdownlint-cli2.jsonc'
globs: '**/*.md'
Loading
Loading