diff --git a/.claude/.gitignore b/.claude/.gitignore new file mode 100644 index 00000000000..67de78be55d --- /dev/null +++ b/.claude/.gitignore @@ -0,0 +1,2 @@ +/settings.local.json +/.credentials.json diff --git a/.claude/THIRD_PARTY_LICENSES.md b/.claude/THIRD_PARTY_LICENSES.md new file mode 100644 index 00000000000..77b00507a25 --- /dev/null +++ b/.claude/THIRD_PARTY_LICENSES.md @@ -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) + +- 上流リポジトリ: +- 取り込んだバージョン: 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 ファイル + + + +--- + +## 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` 経由で読み込むので個別の追記は不要) diff --git a/.claude/agents/README.md b/.claude/agents/README.md new file mode 100644 index 00000000000..92075d23e3a --- /dev/null +++ b/.claude/agents/README.md @@ -0,0 +1,23 @@ +# `.claude/agents/` — プロジェクト固有のサブエージェント + +Misskey の特定領域に特化したレビュー / 調査エージェントを `.claude/agents/.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\* 命名 / ` + + +``` + +## 国際化 (i18n) + +- 文字列リテラルを直書きしない。 +- 引数なし: `i18n.ts.` で参照する (例: `i18n.ts.deleted`)。 +- 引数あり: `i18n.tsx.(...)` で関数呼び出しする (例: `i18n.tsx.takeOverConfirm({ name })`)。 +- 新規キーは **`locales/ja-JP.yml` のみ** に追加する (他言語は Crowdin で自動配信)。 +- `i18n` は `packages/frontend/src/i18n.ts` (または共有モジュール) から import する。 + +## モーダル / 通知 + +- `os.ts` (`packages/frontend/src/os.ts`) 経由で呼ぶ。 +- `os.alert(...)` / `os.confirm(...)` / `os.popup(...)` / `os.success(...)` など。 +- ブラウザ標準の `window.alert()` / `window.confirm()` を **直接呼ばない**。 + +## アクセシビリティ (PR レビューで指摘されやすい点) + +- クリックハンドラを付けるなら `