ghfs — GitHub Issues/PR をファイルシステム化するツール

Tool

概要

ghfs は GitHub の Issues と Pull Requests をローカルの仮想ファイルシステムとして扱えるようにするツールです。リポジトリ内で CLI を実行すると、.ghfs ディレクトリ下に open/closed の状態に応じた Markdown ファイル(例: 00134-some-bug.md)が生成され、オフラインでの閲覧や一括編集、バッチ操作が可能になります。人間のワークフローだけでなく、外部エージェントやスクリプトからの操作も想定された設計で、TypeScript のパッケージとして提供されています。現時点では「作業中」であり、まだ安定版ではありません。

GitHub

リポジトリの統計情報

  • スター数: 32
  • フォーク数: 1
  • ウォッチャー数: 32
  • コミット数: 8
  • ファイル数: 17
  • メインの言語: TypeScript

主な特徴

  • Issues / PR をローカルの .ghfs ディレクトリに Markdown ファイルとして同期
  • オフライン閲覧と編集、変更をまとめて反映するバッチ処理を想定
  • 人間とエージェント(自動化ツール)両方で操作できる設計
  • TypeScript ベースの CLI パッケージとして配布(pnpm install @ghfs/cli)

技術的なポイント

ghfs のコアアイデアは「GitHub の課題をファイルとして扱う」ことにあり、API から取得した Issues/PR のメタ情報と本文をローカルに Markdown ファイルで表現することで、通常のファイル操作で作業できるようにします。ファイル名はゼロパディングされた番号(例: 00042-…)とタイトルの要約を組み合わせる命名規則になっており、open/closed や pulls/issues といった分類ごとにディレクトリ構造を作成します。これにより、エディタや既存のファイル操作ツールで差分管理、検索、バッチ編集が容易になります。

実装は TypeScript で、CLI パッケージ(@ghfs/cli)として配布され、pnpm によるインストールが案内されています。実行するとリポジトリ直下に .ghfs ディレクトリを作成して同期を行うため、ローカルの Git ワークフローと組み合わせて「変更をコミットして push する」や「差分を起点に API へ変更を反映する」といった運用が想定されます。エージェント向けには、ファイルの変更検出と一括送信のためのバッチ API 呼び出しやフック(例: 編集済みファイルをまとめて PATCH や POST する処理)を備えていることが期待されます。

またリポジトリ内に .gitmodules が存在する点から、サブモジュールや外部コンポーネントとの連携を見越した構成も考えられます。現時点は WIP と明記されているため、API レート制限や認証、コンフリクト解決、ローカルでの編集とリモート状態の同期戦略(優先ルールやマージ手順)などの詳細は継続的に整備されていく見込みです。TypeScript の採用により、型安全な API 層と拡張可能なプラグイン/フック設計が期待できます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .github: dir
    • GitHub Actions ワークフローや issue テンプレートが置かれる想定。CI / CD 設定がここに含まれる。
  • .gitignore: file
    • .ghfs やビルド成果物を無視する設定が記載されている可能性が高い。
  • .gitmodules: file
    • サブモジュールの定義。外部依存やテンプレートをサブモジュールで管理しているかもしれない。
  • .vscode: dir
    • 開発用の VSCode 設定が含まれる(推奨設定、拡張機能、デバッグ構成など)。
  • CONTRIBUTING.md: file
    • コントリビューションガイドライン。ローカルでの開発手順や PR の出し方が書かれている。
  • package.json / pnpm-lock.yaml(想定)
    • TypeScript と CLI 実行に必要な依存関係やスクリプト定義が含まれる。
  • src/(想定)
    • CLI 実装、API ラッパー、同期ロジック、ファイル生成ロジックなどが配置されるディレクトリ。
  • README.md
    • プロジェクトの概要、インストールと初期使用方法(抜粋は下部に記載)。
  • tsconfig.json(想定)
    • TypeScript のコンパイル設定。
  • LICENSE(想定)
    • ライセンス表記。
  • 他 12 ファイル

(上記のうち一部ファイル名はリポジトリ実体に基づく想定説明を含みます)

まとめ

GitHub の Issues/PR をローカルファイルとして扱い、オフラインやバッチ処理を可能にする実験的な CLI ツールです。

リポジトリ情報:

READMEの抜粋:

ghfs

GitHub issues/PRs as filesystem, for offline view and operations in batch. Designed for human and agents.

[!IMPORTANT] Still working in progress, not usable yet.

pnpm install @ghfs/cli

and then run the command inside a repository directory:

ghfs

It will sync the open issues and pull requests to the local filesystem under .ghfs directory, like:

.ghfs/
  issues/
    00134-some-bug.md
    closed/
      00135-fixed-crash.md
  pulls/
    00042-add-ca...