Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
antfu avatar

Ghfs

  • 28 installs
  • 272 repo stars
  • Updated June 26, 2026
  • antfu/ghfs

ghfs is a Claude Code skill for managing a local .ghfs/ filesystem mirror of GitHub issues and pull requests, queuing and applying batch edits via execute.md, execute.yml, or per-item frontmatter.

About

This skill operates ghfs, a tool that mirrors GitHub issues and pull requests into a local .ghfs/ filesystem. A developer uses it to queue batch edits (close, label, assign, set-title, comment) in execute.md, execute.yml, or per-item Markdown frontmatter, then preview with ghfs execute and apply with --run. It translates user instructions into valid operations and validates issue and PR batch edits.

  • Mirrors GitHub issues and pull requests into a local .ghfs/ filesystem
  • Queues batch edits via execute.md, execute.yml, or per-item frontmatter
  • Runs in report mode by default; --run applies edits to GitHub

Ghfs by the numbers

  • 28 all-time installs (skills.sh)
  • Ranked #362 of 733 Git & Pull Requests skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
At a glance

ghfs capabilities & compatibility

Capabilities
github issue management · batch edit · pr management
Works with
github
Use cases
project management
From the docs

What ghfs says it does

Use this skill to operate ghfs as a local filesystem mirror for GitHub issues and pull requests.
SKILL.md
Default execute mode is report mode. Use `--run` to mutate GitHub.
SKILL.md
npx skills add https://github.com/antfu/ghfs --skill ghfs

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs28
repo stars272
Last updatedJune 26, 2026
Repositoryantfu/ghfs

What it does

Batch-edit GitHub issues and pull requests through a local .ghfs/ mirror and apply them via ghfs execute --run.

Who is it for?

Queuing and applying batch edits to GitHub issues and PRs through local .ghfs artifacts

Skip if: One-off single-issue edits better done in the GitHub UI or gh CLI

When should I use this skill?

Tasks involve editing issues or PRs through .ghfs artifacts or reconciling sync state

What you get

Queued, validated batch edits applied to GitHub with sync history preserved

  • Queued execute.md or execute.yml operations
  • Applied GitHub issue and PR edits

By the numbers

  • Maps user intent to 20+ named actions across issues and PRs

Files

SKILL.mdMarkdownGitHub ↗

Ghfs

Overview

Use this skill to operate ghfs as a local filesystem mirror for GitHub issues and pull requests.

  • ghfs sync mirrors remote content into .ghfs/.
  • ghfs execute merges operations from .ghfs/execute.yml, .ghfs/execute.md, and per-item markdown frontmatter differences.
  • Default execute mode is report mode. Use --run to mutate GitHub.

Key .ghfs files:

  • execute.md: queued commands (human-friendly)
  • execute.yml: queued operations (YAML array)
  • schema/execute.schema.json: schema for execute.yml
  • .sync.json: sync and execution run history (skip reading it)
  • issues.md, pulls.md, repo.json: aggregated mirror views
  • issues/**/*.md, pulls/**/*.md: per-item mirrors

Main Workflow

1. Sync first when local data may be stale: run ghfs sync. 2. Queue requested changes in one or more sources:

  • .ghfs/execute.md for quick command-style edits (recommended).
  • .ghfs/execute.yml for explicit structured operations.
  • .ghfs/issues/**/*.md or .ghfs/pulls/**/*.md frontmatter for direct per-item edits.

3. Validate and preview with ghfs execute. 4. Apply only on explicit user intent: ghfs execute --run. 5. Report results and remaining queued operations.

Execution behavior to remember:

  • Merge order is execute.yml -> execute.md -> per-item generated operations.
  • Operations run in file order.
  • On --run, successful operations are removed from queued YAML/MD sources; failed and not-yet-run entries remain.
  • Per-item generated operations are recomputed from current frontmatter on each run.
  • After run, ghfs runs targeted sync for affected numbers automatically.

Update .ghfs/execute.md Quickly

Use one command per line:

close #123 #124
set-title #125 "Improve sync summary output"
label #125 enhancement, cli
assign #126 octocat
comment #126 "Need more context"
close-comment #127 "Closing as completed"

Rules:

  • Action names are case-insensitive and aliases are accepted.
  • # and // line comments plus <!-- ... --> HTML comment blocks are supported and preserved.
  • Multi-target commands are supported for: close, reopen, clear-milestone, unlock, mark-ready-for-review, convert-to-draft.

Common aliases:

  • open -> reopen
  • closes -> close
  • close-comment / comment-close / close-and-comment / comment-and-close -> close-with-comment
  • label / labels / tag / tags / add-tag -> add-labels
  • assign / assignee / assignees -> add-assignees
  • title / retitle -> set-title
  • comment -> add-comment
  • ready / undraft -> mark-ready-for-review
  • draft -> convert-to-draft

Update .ghfs/execute.yml Precisely

Keep root as a YAML array and include number + action for each entry.

# yaml-language-server: $schema=./schema/execute.schema.json
- number: 125
  action: set-title
  title: Improve sync summary output

- number: 125
  action: add-labels
  labels: [enhancement, cli]

- number: 126
  action: request-reviewers
  reviewers: [octocat]
  ifUnchangedSince: '2026-03-05T04:10:00Z'

Map user intent to action fields:

User intentactionRequired extra fields
Close / reopenclose, reopennone
Change titleset-titletitle
Replace bodyset-bodybody
Add commentadd-commentbody
Close with commentclose-with-commentbody
Add/remove/set labelsadd-labels, remove-labels, set-labelslabels (non-empty string array)
Add/remove/set assigneesadd-assignees, remove-assignees, set-assigneesassignees (non-empty string array)
Set/clear milestoneset-milestone, clear-milestonemilestone for set
Lock/unlock conversationlock, unlockoptional reason for lock
PR reviewer actionsrequest-reviewers, remove-reviewersreviewers (non-empty string array)
PR draft statemark-ready-for-review, convert-to-draftnone

Rules:

  • number must be a positive integer.
  • ifUnchangedSince must be ISO datetime when present.
  • request-reviewers, remove-reviewers, mark-ready-for-review, and convert-to-draft are PR-only.
  • Keep operation order aligned with user intent because execution is sequential.
  • Append operations unless user explicitly asks to replace or clear the queue.

Practical number resolution:

  • Parse from filenames such as .ghfs/issues/00123-foo.md -> number: 123.
  • Use .ghfs/issues.md / .ghfs/pulls.md when matching by title.

Update Per-Item Markdown Frontmatter

Edit frontmatter in .ghfs/issues/**/*.md or .ghfs/pulls/**/*.md:

  • title
  • state (open / closed)
  • labels
  • assignees
  • milestone

ghfs execute compares edited frontmatter against tracked state and generates operations automatically (with ifUnchangedSince safeguards).

Run Sync and Execute via CLI

Preferred commands:

ghfs sync
ghfs sync --full
ghfs sync --since 2026-03-01T00:00:00Z
ghfs execute
ghfs execute --run

Useful flags:

  • --repo owner/name when repo cannot be auto-resolved.
  • --non-interactive for scripted runs.
  • --continue-on-error to keep applying later ops after a failure.

Related skills

FAQ

Does ghfs mutate GitHub by default?

No; the default execute mode is report mode. You must pass --run to mutate GitHub.

In what order do queued operations merge?

Merge order is execute.yml, then execute.md, then per-item generated operations, and operations run in file order.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.