Skip to content

Latest commit

 

History

History
135 lines (93 loc) · 7.55 KB

CONTRIBUTING.md

File metadata and controls

135 lines (93 loc) · 7.55 KB

Contributing to fude.nvim

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 gh version (gh --version)
  • Minimal steps to reproduce, and the PR URL if possible (or an anonymized example)
  • Output of :messages or the stack trace if provided

Collaborator guide

以下はコラボレーター向けの開発ドキュメントです。

目次

Issue の報告

以下を含めてください:

  • 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

コミット・PR 規約

  • コミットメッセージ: 英語、Conventional Commits 形式(feat: / fix: / refactor: / test: / docs:)
  • PR タイトル・本文: 日本語(コード例・識別子・ファイルパスは英語のまま)
  • レビュー返信: 日本語
  • 1 PR 1 関心を心がけ、レビューしやすい粒度に分割してください

推奨開発フロー(Claude Code 利用時)

本リポジトリには開発フローを補助する Claude Code スキルが .claude/skills/ に同梱されています。以下が推奨フローです:

  1. 実装: /develop にやりたいことを伝え、対話しながら計画を固めます。計画に合意した後は、実装・テスト・セルフレビュー・ドキュメント更新・PR 作成・Copilot レビューへの対応までを確認なしで進めます。
  2. レビュー対応: 人間のレビュー指摘があれば /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 セクションを参照してください。