Thank you for your interest in fude.nvim.
- Bug reports, feature requests, and questions are welcome. Please open an issue.
- Pull requests from outside contributors are not accepted. If you have a fix or an idea, please describe it in an issue instead.
AI tools have made it easier to create and submit malicious pull requests. This does not mean that every external pull request is malicious, but determining whether one contains malicious changes takes significant time and effort. As maintainers, we have chosen not to take on that review burden, so we do not accept external pull requests. We appreciate your willingness to contribute and hope you understand this decision.
When reporting a bug, please include:
- Your Neovim version (
nvim --version) - The fude.nvim commit hash
- Your
ghversion (gh --version) - Minimal steps to reproduce, and the PR URL if possible (or an anonymized example)
- Output of
:messagesor the stack trace if provided
以下はコラボレーター向けの開発ドキュメントです。
以下を含めてください:
- Neovim バージョン (
nvim --version) gh --versionおよびgh auth statusの成否- 最小再現手順と、可能であれば対象 PR の URL(または匿名化した例)
:messagesの内容やスタックトレース
git clone https://github.com/flexphere/fude.nvim
cd fude.nvim
make setup # pre-commit フック (lint + format-check + test) を有効化必要なツール:
| Tool | 用途 |
|---|---|
| StyLua | フォーマッタ(.stylua.toml: tabs, 120 cols, double quotes) |
| Luacheck | Linter (.luacheckrc) |
| Neovim >= 0.10 | ランタイム(CI は 0.10 / 0.11 / stable でテスト) |
| GitHub CLI | 動作確認時に必要 |
make lint # luacheck
make format # stylua(自動修正)
make format-check # stylua --check
make test # plenary-busted テスト
make all # lint + format-check + test + check-state-deps + check-purity + check-docs
make check-state-deps # CLAUDE.md の State Dependencies 表と実コードの整合性検証
make check-purity # `*/data.lua` `*/format.lua` の純粋性 (vim API / state 不参照) 検証
make check-docs # lua/fude/commands.lua / plugin/fude.lua のコマンド登録と doc/fude.txt のタグの双方向整合性検証
make coverage # luacov でテストカバレッジ計測 (要 `luarocks install --local luacov`)push 前に make all が通ることを必ず確認してください。make setup で .githooks/pre-commit が有効化され、コミット時に自動実行されます。
make check-* 系は CLAUDE.md / 純粋性宣言 / doc/fude.txt の各「文書化された建前」が実コードと乖離していないかを機械検証します。make all / pre-commit / CI で自動実行されるため、手動で個別に走らせる必要はほとんどありませんが、ピンポイントで確認したい場合に利用してください。
make coverage は make all には含まれません(報告のみ・閾値強制なし)。CI では別 job として実行され、レポートは GitHub Actions の artifact coverage-report から取得できます。ローカルで実行する場合は luarocks install --local luacov を先に実行してください。
テストは tests/fude/*_spec.lua に置き、plenary.nvim の busted スタイルで実行します。gh のモック、diff.to_repo_relative のモック、非同期コールバックの待機ヘルパは tests/helpers.lua にあります。
実装・変更時のガイドライン:
- 純粋関数(
build_*/find_*/parse_*/format_*等)を抽出してユニットテスト - vim API や非同期コールバックに触れる場合は
helpers.mock_gh/helpers.wait_forを使った統合テスト after_eachでhelpers.cleanup()を呼び、モックと state を復元
コマンドは lua/fude/commands.lua のレジストリに 1 エントリ追加します(name / desc / category / available / run)。plugin/fude.lua の登録と :FudeCommandPalette コマンドパレットの両方に自動で反映されます。
コマンド・キーマップ・設定を追加/変更したときは以下を更新してください:
README.md(Features / Commands / Configuration)doc/fude.txt- モジュールの責務が変わる場合は
CLAUDE.mdの Architecture セクション
doc/fude.txt 編集後は help タグを再生成:
nvim --headless -c "helptags doc/" -c q- コミットメッセージ: 英語、Conventional Commits 形式(
feat:/fix:/refactor:/test:/docs:) - PR タイトル・本文: 日本語(コード例・識別子・ファイルパスは英語のまま)
- レビュー返信: 日本語
- 1 PR 1 関心を心がけ、レビューしやすい粒度に分割してください
本リポジトリには開発フローを補助する Claude Code スキルが .claude/skills/ に同梱されています。以下が推奨フローです:
- 実装:
/developにやりたいことを伝え、対話しながら計画を固めます。計画に合意した後は、実装・テスト・セルフレビュー・ドキュメント更新・PR 作成・Copilot レビューへの対応までを確認なしで進めます。 - レビュー対応: 人間のレビュー指摘があれば
/review-respondで対応してください。コード修正、セルフレビュー、動作確認、返信・push まで一貫して行います。
各スキルの詳細:
| スキル | 役割 |
|---|---|
/develop |
計画 → 実装 → テスト → ドキュメント → セルフレビュー → PR 作成 → Copilot レビュー対応 |
/self-review |
3 ラウンドセルフレビュー(pj-checklist 2 ラウンド + /review 1 ラウンド) |
/pr |
コミット分割 → コミット → draft PR 作成 |
/review-respond |
レビュー対応 → 修正 → セルフレビュー → 返信・push |
/pj-checklist |
fude.nvim 固有の実装・レビューチェックリスト |
Claude Code を使わない場合も、上記と同等のチェック(make all 実行、テスト追加、ドキュメント更新、セルフレビュー)を通していただければ問題ありません。
モジュール別の責務、主要パターン(非同期フロー、state 管理、純粋関数の抽出)、config.state の読み書きマトリクスは CLAUDE.md の Architecture セクションを参照してください。