Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
7bd7e5c
[skip ci] Update CHANGELOG.md (prepend template)
github-actions[bot] Mar 31, 2026
dbc5fe2
deps: update dependencies (#17263)
kakkokari-gtyih Apr 1, 2026
5361a38
fix(backend): /api-doc にアクセスできない問題を修正 (#17267)
Copilot Apr 1, 2026
e601fcb
deps: Update vite to v8 (#17238)
kakkokari-gtyih Apr 1, 2026
8169c57
fix(backend): handle array or string in alsoKnownAs (#17275)
evanp Apr 4, 2026
0b7b59f
enhance(frontend): チャンネル指定リノートでリノート先のチャンネルに移動できるように (#17280)
kakkokari-gtyih Apr 5, 2026
a18c909
Revert "deps: Update vite to v8" (#17283)
kakkokari-gtyih Apr 6, 2026
367766d
Bump version to 2026.4.0-alpha.0
github-actions[bot] Apr 6, 2026
ae34578
refactor(frontend): MkButtonのprops等整理 (#17282)
kakkokari-gtyih Apr 6, 2026
38be94b
enhance(frontend): improve nested popup menu ux (#17187)
syuilo Apr 7, 2026
b9923d0
New Crowdin updates (#17260)
syuilo Apr 7, 2026
d4a5048
fix(frontend): routerがmatchAllに入った際に一度 `location.href` による遷移を試みる挙動に関す…
kakkokari-gtyih Apr 7, 2026
b639848
Bump version to 2026.4.0-alpha.1
github-actions[bot] Apr 7, 2026
60018d1
enhance(frontend): niraxにテストを追加 (#17287)
kakkokari-gtyih Apr 7, 2026
5cb3a91
fix(frontend): follow-up of #17282
kakkokari-gtyih Apr 8, 2026
92e0e8e
refactor(frontend): refactor deck events (#17290)
kakkokari-gtyih Apr 8, 2026
4750980
enhance(frontend): update vite to v8 再 (#17289)
kakkokari-gtyih Apr 9, 2026
0355420
Bump version to 2026.4.0-alpha.2
github-actions[bot] Apr 9, 2026
22577e2
perf(frontend): improve about#emojis rendering performance
syuilo Apr 9, 2026
787de92
fix(frontend): bannerUrl が空の場合に /about ページで /null へのアクセスが発生する問題を修正 (#…
danominium Apr 10, 2026
3cb0033
fix(frontend): 連合が無効化されたサーバーでInstance Tickerの設定が中途半端に消えている問題を修正 (#17303)
kakkokari-gtyih Apr 11, 2026
68e3476
fix(frontend): ドライブへの画像アップロード時にファイル名の変更が無視される不具合を修正 (#17302)
FineArchs Apr 11, 2026
29cecd7
fix(backend): 存在しないActorに対するDeleteアクティビティは無視するように (#17294)
kakkokari-gtyih Apr 11, 2026
cdf0438
Bump version to 2026.4.0-alpha.3
github-actions[bot] Apr 11, 2026
4d6256e
deps: Update dependencies (#17304)
kakkokari-gtyih Apr 11, 2026
c9c6ef2
chore(deps): update dependency lodash to v4.18.1 [security] (#17278)
renovate[bot] Apr 13, 2026
5dc5083
fix(backend): ULIDを正しく処理できない問題を修正 (#17310)
chan-mai Apr 15, 2026
6532cb8
Update CHANGELOG.md for #17310 [ci skip]
kakkokari-gtyih Apr 15, 2026
55b0fbd
fix(backend): robots.txtで返却する内容の調整 (#17165)
kakkokari-gtyih Apr 15, 2026
d7ceaa9
fix(backend): attempt to fix flaky e2e test on home timeline streamin…
kakkokari-gtyih Apr 15, 2026
a5b1f83
fix(backend): fix flaky e2e test on recursive drive folder check (#17…
kakkokari-gtyih Apr 15, 2026
12e590a
fix(backend): Prevent retry of inbox jobs with role-based validation …
Copilot Apr 15, 2026
a6de986
Update CHANGELOG.md
syuilo Apr 15, 2026
758a085
Bump version to 2026.4.0-alpha.4
github-actions[bot] Apr 15, 2026
c95aef7
refactor(frontend): ロールポリシーエディタを統合 (#17125)
kakkokari-gtyih Apr 15, 2026
360e805
enhance: アバターデコレーションへのカテゴリの導入 (#17034)
EbiseLutica Apr 15, 2026
8e536eb
Update CHANGELOG.md
syuilo Apr 15, 2026
277a1ef
fix(backend): handle relay-delivered Announce activities correctly (#…
sinoru Apr 15, 2026
024f8bb
Bump version to 2026.4.0-alpha.5
github-actions[bot] Apr 15, 2026
37bfcb6
enhance(backend): bundle backend using Rolldown (#17068)
kakkokari-gtyih Apr 16, 2026
0be3142
fix(backend): devサーバーの起動に失敗することがある問題を修正 (#17317)
kakkokari-gtyih Apr 16, 2026
c640aeb
deps: update security dependencies (#17318)
kakkokari-gtyih Apr 16, 2026
86092f2
Bump version to 2026.4.0-alpha.6
github-actions[bot] Apr 16, 2026
1391269
Update CHANGELOG.md
kakkokari-gtyih Apr 18, 2026
6d15fe3
enhance(backend/test): Migrate tests to vitest (#16935)
kakkokari-gtyih Apr 20, 2026
351fe2f
fix(frontend): loosen MkButton props type (#17329)
kakkokari-gtyih Apr 21, 2026
bda98ba
deps: update security dependencies (#17330)
kakkokari-gtyih Apr 22, 2026
c1b73f9
fix(gh): misskey-jsがpublishされない問題を修正
kakkokari-gtyih Apr 22, 2026
8a85ee1
Bump version to 2026.4.0-beta.0
github-actions[bot] Apr 23, 2026
3a3057a
fix(backend): `RoleService.getAdministratorIds` でユーザーIDが重複する問題を修正 (#1…
kakkokari-gtyih Apr 24, 2026
1dc5c60
fix(backend): meilisearchを使用していない場合のnoteSearchableScopeの値が誤っている問題を修正 …
kakkokari-gtyih Apr 26, 2026
23715c6
fix: change bare activity.actor to getApId(activity.actor) in InboxPr…
evanp Apr 26, 2026
0f5da63
fix(backend): ブロックしたインスタンスのInboxジョブが蓄積し続ける問題を修正 (#17336)
kakkokari-gtyih Apr 26, 2026
b28338c
enhance(frontend): 子メニュー表示時のガードがradioでも効くように
syuilo Apr 26, 2026
9569310
type: 'radio'なMenuItemが機能しなくなっている問題を修正 (#17344)
syuilo Apr 27, 2026
6176cca
fix(frontend): MenuRadioの指定方法変更 (#17345)
kakkokari-gtyih Apr 27, 2026
b45f18c
fix(backend): ノート通知で公開範囲を考慮するように (#17335)
kakkokari-gtyih Apr 27, 2026
21f51be
fix: redirect beta/alpha/rc "what's new" button to GitHub releases pa…
Copilot Apr 27, 2026
7bfd85c
Bump version to 2026.4.0-beta.1
github-actions[bot] Apr 27, 2026
0227148
Update CHANGELOG for #17347
kakkokari-gtyih Apr 27, 2026
985de91
fix(deps): update dependency sanitize-html to v2.17.3 [security] (#17…
renovate[bot] Apr 27, 2026
973b5b5
fix(frontend): まれにリアクション・絵文字ピッカーが動作しなくなる問題を修正 (#17349)
kakkokari-gtyih Apr 30, 2026
665adfc
Bump version to 2026.4.0-beta.2
github-actions[bot] Apr 30, 2026
7c9942f
Bump version to 2026.5.0-alpha.0
github-actions[bot] May 1, 2026
35d6c20
Update CHANGELOG.md
syuilo May 1, 2026
93bd9d5
fix: review fixes for v2026.5.0 release (#17350)
kakkokari-gtyih May 2, 2026
a23a72b
Release: 2026.5.0
github-actions[bot] May 2, 2026
6d9412b
[skip ci] Update CHANGELOG.md (prepend template)
github-actions[bot] May 2, 2026
6229ac3
fix(backend): ULID使用時にnotificationTimelineへのXADDが失敗し続け、通知が約10秒遅延する問題を…
chan-mai May 2, 2026
d55e936
devcontainer用dbコンテナのvolumeのマウントパスを変更 (#17360)
kamiya-s-max May 3, 2026
f5a3d89
fix(backend): 公開範囲がフォロワーの投稿が通知されない問題を修正 (#17363)
kakkokari-gtyih May 3, 2026
39032c4
fix: update summaly (#17355)
kakkokari-gtyih May 3, 2026
2b4bdbf
Bump version to 2026.5.1-alpha.0
github-actions[bot] May 3, 2026
712b51c
Fix(frontend): ロール設定画面でロールをアサイン/アサイン解除した際、リロードしなくても画面に反映されるよう修正 (#17365)
kamiya-s-max May 3, 2026
37412f0
enhance: Add `canCreateChannel` role policy (#17121)
Copilot May 3, 2026
9d20152
Update CHANGELOG.md (follow-up of #17121) [ci skip
kakkokari-gtyih May 3, 2026
723d8ad
refactor: パスキーまわりのライブラリを更新 (#17354)
kakkokari-gtyih May 3, 2026
a5a43c8
chore(deps): update [github actions] update dependencies (major) (#17…
renovate[bot] May 3, 2026
37107c9
chore(deps): update [github actions] update dependencies [ci skip] (#…
renovate[bot] May 3, 2026
22ce7b5
chore(deps): update [docker] update dependencies [ci skip] (#17369)
renovate[bot] May 3, 2026
45f140a
deps: Update dependencies [ci skip] (#17368)
kakkokari-gtyih May 3, 2026
35711fc
fix(backend): Acquire lock of Announce object in announceNote even if…
tirr-c May 3, 2026
45022bc
New Crowdin updates (#17324)
syuilo May 4, 2026
86542f0
Bump version to 2026.5.1-beta.0
github-actions[bot] May 4, 2026
90725d6
enhance(frontend): MkNoteDetailedの公開範囲表示を改善 (#17374)
kakkokari-gtyih May 5, 2026
5b478dd
New Crowdin updates (#17372)
syuilo May 6, 2026
33f59b3
Update CHANGELOG.md
kakkokari-gtyih May 6, 2026
b78e016
Release: 2026.5.1
github-actions[bot] May 6, 2026
a82ba0d
[skip ci] Update CHANGELOG.md (prepend template)
github-actions[bot] May 6, 2026
b528ff9
enhance(frontend): テーマの適用管理を改善 (#17376)
kakkokari-gtyih May 7, 2026
b73ac26
Update CHANGELOG.md
kakkokari-gtyih May 7, 2026
9027129
enhance(frontend): MkInputでthrottleできるように & delay設定できるように
syuilo May 8, 2026
717931c
fix(frontend): ドライブのファイル更新が即座に反映されない問題の修正 (#17383)
4ster1sk May 9, 2026
a09a2c2
enhance: 絵文字データの参照を自前ライブラリに変更 (#17381)
kakkokari-gtyih May 9, 2026
3074784
Fix: リスト編集画面におけるユーザー追加時のユーザー選択ダイアログにおいて、自身のアカウントが検索結果の一覧に表示されない問題を修正 …
Sayamame-beans May 9, 2026
408d056
fix(frontend): デッキのカラムから開いたアンテナ・リストの編集ウィンドウを、"ポップアウト"、"新しいタブで表示"、"リンク…
Sayamame-beans May 10, 2026
a19da12
fix(frontend): missing はい/いいえ in base-role 「チャンネルの作成」 header (#17380)
Copilot May 10, 2026
b950f90
perf: rsa sign on slacc (#17322)
acid-chicken May 12, 2026
f6ea52b
docs: AI コーディングエージェント共通設定を追加 (#17396)
samunohito May 12, 2026
bf3c1f6
Bump version to 2026.5.2-alpha.0
github-actions[bot] May 12, 2026
6665c39
feat: 投稿通知設定したユーザーをリストで見ることができるように (#17385)
4ster1sk May 12, 2026
e233556
Update CHANGELOG.md
syuilo May 12, 2026
f4bca46
Bump version to 2026.5.2-beta.0
github-actions[bot] May 14, 2026
a3227c9
deps: update dependencies (#17400)
kakkokari-gtyih May 14, 2026
62b323b
update re2
syuilo May 15, 2026
08c6efb
fix(deps): update dependency sanitize-html to v2.17.4 [security] [ci …
renovate[bot] May 15, 2026
1684dc9
fix(deps): broken lockfile (#17404)
kakkokari-gtyih May 15, 2026
92c1dc0
Update CONTRIBUTING.md
syuilo May 15, 2026
e6375fb
Update CONTRIBUTING.md
syuilo May 15, 2026
baad1c5
Update CHANGELOG.md
kakkokari-gtyih May 16, 2026
9410bc5
fix: move `users/notify/list` to `following/list` (#17416)
kakkokari-gtyih May 17, 2026
99081be
Bump version to 2026.5.2-beta.1
github-actions[bot] May 17, 2026
fc6c45d
fix: add-i18n-keyの記述が間違っていたので修正 (#17418)
samunohito May 17, 2026
2bc0ccb
Release: 2026.5.2
github-actions[bot] May 17, 2026
badb243
[skip ci] Update CHANGELOG.md (prepend template)
github-actions[bot] May 17, 2026
419cdcf
Update about-misskey.vue
syuilo May 17, 2026
d503b8d
fix(docker): runnerでのpnpmの依存関係チェックを無効化 (#17425)
kakkokari-gtyih May 18, 2026
5b8a38c
Bump version to 2026.5.3-alpha.0
github-actions[bot] May 18, 2026
8a38a05
Release: 2026.5.3
github-actions[bot] May 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .claude/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/settings.local.json
/.credentials.json
76 changes: 76 additions & 0 deletions .claude/THIRD_PARTY_LICENSES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Third-Party Licenses (`.claude/`)

`.claude/` 配下に取り込まれているサードパーティ由来コンポーネントのライセンス・出典情報をまとめる。Misskey 本体は AGPL-3.0-only だが、本ディレクトリ内には MIT ライセンスのファイルが含まれている。各ファイル冒頭にも `SPDX-License-Identifier` と出典コメントを併記している。

最終更新: 2026-05-11

---

## 1. everything-claude-code (ECC)

- 上流リポジトリ: <https://github.com/affaan-m/everything-claude-code>
- 取り込んだバージョン: v2.0.0-rc.1
- ライセンス: **MIT**
- Copyright: Copyright (c) 2026 Affaan Mustafa

### 取り込んだファイル

| `.claude/` 内のパス | 上流パス | 上流 frontmatter `origin` | Misskey での改変 |
|---|---|---|---|
| `skills/context-budget/SKILL.md` | `skills/context-budget/SKILL.md` | ECC | description を日本語化、Misskey 固有メモを追記 |
| `commands/harness-audit.md` | `commands/harness-audit.md` | ECC | scripts 依存の自動採点を、Claude が `pnpm`/`git`/`grep` で手動採点する版に書き換え。Misskey 固有の評価軸 (SPDX / endpoint-list / migration / locales) を組み込み |
| `commands/quality-gate.md` | `commands/quality-gate.md` | ECC | 言語自動判定を排除し Misskey 固定 pipeline (`pnpm` + tsgo + ESLint + Vitest) に。Prettier/Biome フェーズを削除 |

### MIT License (full text)

```
MIT License

Copyright (c) 2026 Affaan Mustafa

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

### 上流 LICENSE ファイル

<https://github.com/affaan-m/everything-claude-code/blob/main/LICENSE>

---

## 2. AGPL コードベースとの互換性

Misskey 本体は **AGPL-3.0-only** で配布されているが、`.claude/` 配下の MIT ライセンスファイルはそのまま MIT として残している。

- MIT は permissive ライセンスで、AGPL を含む copyleft ライセンスのプロジェクトに **取り込み・再配布が許される**
- MIT が要求する条件 (copyright notice + license text の保持) を本ファイル + 各ファイル冒頭の SPDX/出典コメントで満たしている
- Misskey 全体の配布物としては AGPL-3.0-only で扱われるが、`.claude/` 配下の MIT ファイルは個別に MIT として識別可能

`.ts` / `.js` / `.vue` / `.scss` の SPDX 義務化 ([AGENTS.md §1](../AGENTS.md#1-spdx-ヘッダー必須)) は Misskey 本体コード向けで、`.claude/` 配下の `.md` / `.sh` には適用されない。

---

## 3. 新規追加時の手順

`.claude/` に新たにサードパーティ由来のファイルを取り込む際は:

1. ライセンスを確認 (互換性: MIT / Apache-2.0 / BSD は OK、GPL/AGPL は要相談)
2. 各ファイル冒頭に SPDX ヘッダ + 出典コメントを追加
3. 本ファイル §1 のテーブルに 1 行追記
4. 必要なら新しいセクションでライセンス全文を同梱
5. AGENTS.md からの参照を確認 (現状の [AGENTS.md §ツール固有の補助ファイル](../AGENTS.md) で `THIRD_PARTY_LICENSES.md` を案内済。CLAUDE.md は `@AGENTS.md` 経由で読み込むので個別の追記は不要)
23 changes: 23 additions & 0 deletions .claude/agents/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# `.claude/agents/` — プロジェクト固有のサブエージェント

Misskey の特定領域に特化したレビュー / 調査エージェントを `.claude/agents/<name>.md` 形式で配置する。

frontmatter (`name` + `description` + `tools`) は、Claude が **自動でエージェントを呼び出すか判断する** 唯一の手がかりになる。`description` には用途を具体的かつ網羅的に書くこと (動詞 + 対象 + トリガー条件)。

## 実装済サブエージェント

| エージェント名 | 役割 | 優先度 |
|---|---|---|
| [misskey-api-reviewer](misskey-api-reviewer.md) | NestJS DI + meta/paramDef + UUID 重複 + endpoint-list.ts 登録 + ApiError throw + misskey-js 再生成 + e2e + CHANGELOG をチェック | 高 (登録漏れで 404 / autogen CI 落ち頻発) |
| [vue-component-reviewer](vue-component-reviewer.md) | Mk\* 命名 / `<script lang="ts" setup>` / type-only defineProps / SCSS module / CSS 変数 / i18n.ts と i18n.tsx の使い分け / os.\* 経由 / a11y / `*.stories.impl.ts` 併設をチェック | 中 (CI 直撃は SPDX / locales 編集違反のみ。他は実害が出てから検出されるケースが多く API ほどの即死性はない) |

設計方針: `tools` を編集権限なし (Edit/Write を渡さない) に絞り、PR baseline (`git merge-base origin/develop HEAD`) との差分から自動的にレビュー対象を抽出する。

## 新規エージェントを追加する場合

- `.claude/agents/<name>.md` に YAML frontmatter (`name` / `description` / `tools`) と本文 Markdown を書く。
- `description` は呼び出し判断に使われるため、対象ドメイン・主要チェック項目・トリガー条件を **具体的に** 列挙する。
- レビュー専門なら `tools: Read, Grep, Glob, Bash` に絞る (Edit/Write を渡さない)。**`Bash` は任意のシェルコマンドを実行できる強力な権限である点に注意**: レビュー用途では `git diff` / `git ls-files` / `grep` / `sed` 等の **読み取り系コマンドに限定して使う** こと。書き込み・削除・ネットワーク送信を伴う操作は本文中の例示・指示に含めないこと (エージェント本文がガードレールになる)。
- 主要参照ファイルへのリンクは、リポジトリルートからの相対パス (例: `../../packages/backend/...`) で貼る。絶対パスは contributor のホームディレクトリ依存になるので使わない。
- 差分抽出は `git merge-base origin/develop HEAD` を baseline にする (PR / ブランチ全体を見るため)。`git diff HEAD` 単体は **未コミット差分しか取れず、コミット済の PR では空になって誤判定する** ので使わない。
- 完成したらこの README の表にも 1 行追加する。
167 changes: 167 additions & 0 deletions .claude/agents/misskey-api-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
---
name: misskey-api-reviewer
description: Misskey の API エンドポイント (packages/backend/src/server/api/endpoints/) の追加・変更を専門レビューする。SPDX / meta / paramDef / UUID 重複 / endpoint-list.ts 登録 / ApiError throw / misskey-js 再生成 / e2e / CHANGELOG を機械的にチェック。バックエンド API を追加・変更した PR レビューで呼び出す。
tools: Read, Grep, Glob, Bash
---

# Misskey API エンドポイントレビュアー

Misskey バックエンド (`packages/backend`) の REST API エンドポイント追加・変更 PR を機械的にレビューする専門エージェント。規約の根拠は [.claude/skills/add-api-endpoint/SKILL.md](../skills/add-api-endpoint/SKILL.md)。

## 役割

`packages/backend/src/server/api/endpoints/` 配下の `.ts` 変更を対象に、規約逸脱・登録漏れ・型自動生成漏れ・テスト不足を抽出する。良い点には触れず、改善が必要な箇所のみ報告する。

## レビュー対象の特定

呼び出し元から明示的にファイルが渡されたらそれを優先する。渡されなかった場合は **PR / ブランチ全体の差分** を取得する (未コミット差分のみではないことに注意)。

```bash
BASE=$(git merge-base origin/develop HEAD)
{ git diff --name-only "$BASE"...HEAD; git diff --name-only HEAD; git ls-files --others --exclude-standard; } \
| sort -u \
| grep -E '^packages/backend/src/server/api/endpoints/.*\.ts$'
```

`origin/develop` が無い環境では `develop` または `master` にフォールバックする。

加えて以下も同じ baseline で差分対象に含める:

- `packages/backend/src/server/api/endpoint-list.ts`
- `packages/backend/test/e2e/**` (とくに `endpoints.ts` と `<area>.ts`)
- `packages/misskey-js/src/autogen/**`
- `CHANGELOG.md`

差分対象が空なら「レビュー対象の API エンドポイント変更なし」と短く報告して終了。

## チェックリスト

### 1. SPDX ヘッダー (Critical)

新規 `.ts` ファイル冒頭に以下があるか:

```
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
```

欠落すると CI の `spdx` ジョブが落ちる。

### 2. `meta` の必須・推奨フィールド (Major)

[endpoints.ts の型定義](../../packages/backend/src/server/api/endpoints.ts) を真とする。

- `tags`: OpenAPI タグ (機能領域)。
- `requireCredential`: 明示必須 (boolean)。
- `kind`: OAuth scope。`requireCredential: true` のとき必須 (`read:account` / `write:notes` 等)。
- `requireModerator` / `requireAdmin`: 権限制限が要るか。
- `prohibitMoved`: 移行済アカウントを拒否するか (write 系で要検討)。
- `limit`: レート制限 `{ duration, max, key?, minInterval? }`。書き込み系 / コスト高い処理で未指定なら指摘。
- `errors`: エラー定義。各要素に `message` / `code` / `id` (UUID v4) が揃っているか。
- `res`: JSON Schema または `ref: '<EntityName>'`。各プロパティに `optional` / `nullable` が **明示** されているか。
- `requireFile` / `secure` / `allowGet` / `cacheSec` / `description`: 該当するエンドポイントで使い分けているか。

### 3. `meta.errors` の UUID 検証 (Critical)

各 `errors[*].id` が:

1. UUID v4 形式 (`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`) か
2. 既存エンドポイントの `id` と重複していないか

重複検査:

```bash
grep -rn "id: '<生成された UUID>'" packages/backend/src/server/api/endpoints/
```

新規エンドポイントの全 `id` を抽出して衝突を確認する。

### 4. `paramDef` (Major)

- JSON Schema 形式 (`type: 'object'`, `properties`, `required`)
- ID 文字列は `format: 'misskey:id'`
- `required` 配列で必須プロパティを明示
- `as const` または `as const satisfies Schema` で型推論を効かせる (既存実装は前者多数。`as const` 自体が無く `Schema` 型注釈もない場合のみ指摘)

### 5. エンドポイント実装本体 (Major)

- `Endpoint<typeof meta, typeof paramDef>` を継承しているか。
- `@Injectable()` デコレータ + `export default class` 形式か (`// eslint-disable-line import/no-default-export` が必要)。
- DI は `@Inject(DI.xxx)` 形式か。
- **クライアントに返すべき API エラーは `throw new ApiError(meta.errors.<key>)`** ([error.ts](../../packages/backend/src/server/api/error.ts) 参照)。`meta.errors` で定義したエラーケースを `throw new Error(...)` で投げているなら指摘する。
- 防御的アサーション・「起きるはずがない」内部不整合・テスト用 ENV ガード等の **想定外フェイルファスト** は `throw new Error('...')` で構わない。既存実装でも `admin/reset-password.ts` などが採用しているパターン (例: `cannot reset password of root`)。`meta.errors` に対応がない `throw new Error` を一律で指摘しない。
- 同期 `throw` は許容。非同期処理での例外伝搬を確認する。

### 6. ★ `endpoint-list.ts` への登録 (Critical)

最も忘れやすい。**忘れると 404**。[endpoint-list.ts](../../packages/backend/src/server/api/endpoint-list.ts) に 1 行追加されているか:

```ts
export * as '<category>/<name>' from './endpoints/<category>/<name>.js';
```

新規エンドポイントを抽出し、各々が `endpoint-list.ts` に存在するか grep で確認する:

```bash
grep -F "'<category>/<name>'" packages/backend/src/server/api/endpoint-list.ts
```

**並び順の補足**: ファイル全体は厳密なアルファベット順では並んでおらず、同カテゴリ内 (`admin/queue/*` など) でも追加された経緯どおりの順になっている箇所が多い。**順序逸脱は指摘根拠にしない** (誤検知の元)。「行が存在するか」のみを Critical 観点として扱う。

### 7. `misskey-js` 再生成 (Critical)

`meta` / `paramDef` / `res` を変更したら、PR / ブランチに `packages/misskey-js/src/autogen/` 配下の差分が含まれているか確認する:

```bash
BASE=$(git merge-base origin/develop HEAD)
git diff --name-only "$BASE"...HEAD -- packages/misskey-js/src/autogen/
```

差分ゼロなら `pnpm build-misskey-js-with-types` の実行漏れ。CI の `check-misskey-js-autogen` ジョブで必ず落ちるため Critical 扱い。

### 8. e2e テスト (Major)

[test/e2e/endpoints.ts](../../packages/backend/test/e2e/endpoints.ts) または `test/e2e/<area>.ts` (`note.ts`, `users.ts` 等) 配下に、対応する `api('<category>/<name>', ...)` 呼び出しを含む `test(...)` ケースが追加されているか確認する。複雑な分岐 (権限チェック・エラーケース) の網羅も確認する。

**describe ラベルの形式は問わない**: 既存テストは `describe('Note', () => { test('投稿できる', ...) })` のように人間可読ラベルで構造化されており、`<category>/<name>` 形式の describe は使われていない。describe 名の規約違反としては指摘しない。

### 9. CHANGELOG エントリ (Minor)

ユーザー影響がある (新エンドポイント / 既存挙動変更) 場合、`CHANGELOG.md` の `## Unreleased` → `### Server` に 1 行追加されているか確認する。

```
- Feat: /api/<category>/<name> を追加
```

純粋な内部リファクタなら不要。

## 出力形式

優先度別に以下のフォーマットで出力する。

```
## 🔴 Critical
- packages/backend/src/server/api/endpoints/foo/bar.ts:23
meta.errors.fooError.id が UUID v4 形式ではない (実値: 'xxx-xxx')。
`node -e "console.log(crypto.randomUUID())"` で再生成すること。

## 🟡 Major
- ...

## 🔵 Minor
- ...
```

問題のないチェック項目には触れない。全項目クリアなら `✅ レビュー観点上の指摘なし` と短く返す。

## 参照

- [.claude/skills/add-api-endpoint/SKILL.md](../skills/add-api-endpoint/SKILL.md) — 実装側の規約 (本エージェントの根拠)
- [endpoints.ts (meta/paramDef 型定義)](../../packages/backend/src/server/api/endpoints.ts)
- [endpoint-list.ts (★ 登録先)](../../packages/backend/src/server/api/endpoint-list.ts)
- [endpoint-base.ts (Endpoint 基底クラス)](../../packages/backend/src/server/api/endpoint-base.ts)
- [error.ts (ApiError)](../../packages/backend/src/server/api/error.ts)
- [test/e2e/endpoints.ts](../../packages/backend/test/e2e/endpoints.ts)
- [AGENTS.md](../../AGENTS.md) — SPDX / マイグレーション履歴 / CHANGELOG 書式などの最低限ルール (Codex / Copilot と共通)
Loading
Loading