Agent skill

Ghfs

by antfu in antfu/ghfs

Manages ghfs local mirror files in .ghfs/, especially translating user instructions into valid execute operations (execute.md, execute.yml, or per-item edits), running ghfs execute / ghfs sync, and…

MITAuto-check passedWriting & Content

Install Ghfs

skills CLI
$ npx skills add antfu/ghfs --skill ghfs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install antfu/ghfs ghfs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/antfu/ghfs.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ghfs .claude/skills/ghfs && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ghfs
GitHub stars
276
Token cost
~1.5k tokens
SKILL.md length
518 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Manages ghfs local mirror files in .ghfs/, especially translating user instructions into valid execute operations (execute.md, execute.yml, or per-item edits), running ghfs execute / ghfs sync, and…

  • Works in 5 steps: Sync first when local data may be stale:… → Queue requested changes in one or more… → Validate and preview with ghfs execute. → …
  • Tasks involve editing issues/PRs through .ghfs artifacts
  • SKILL.md covers Overview, Main Workflow, Update .ghfs/execute.md Quickly and Update .ghfs/execute.yml…, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Ghfs is an agent skill from antfu/ghfs. Manages ghfs local mirror files in .ghfs/, especially translating user instructions into valid execute operations (execute.md, execute.yml, or per-item edits), running ghfs execute / ghfs sync, and validating issue/PR batch edits. Use when tasks involve editing issues/PRs through .ghfs artifacts, reconciling sync state, or applying queued GitHub operations.

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Translation. It works with GitHub. The repository describes itself as: GitHub issues/PRs as filesystem, for offline view and operations in batch. Designed for human and agents. The licence is MIT.

When your agent uses it

  • Tasks involve editing issues/PRs through .ghfs artifacts
  • Reconciling sync state
  • Applying queued GitHub operations

Example prompts

  • “Use the ghfs skill to manage ghfs local mirror files in .ghfs/, especially translating user instructions into valid execute operations (execute.md…”
  • “/ghfs”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Sync first when local data may be stale: run ghfs sync.
  2. Queue requested changes in one or more sources
  3. Validate and preview with ghfs execute.
  4. Apply only on explicit user intent: ghfs execute --run.
  5. Report results and remaining queued operations.

What it can do on your machine

Read from SKILL.md and the folder at commit a764460. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown, yaml and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ghfs loads about 1.5k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 518 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~94
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from antfu/ghfs at commit a764460, republished under its MIT licence (© antfu). 518 words, ~1,493 tokens.

Download SKILL.mdSave it as .claude/skills/ghfs/SKILL.md (or your agent's skills folder).
name
ghfs
description
Manages ghfs local mirror files in `.ghfs/`, especially translating user instructions into valid execute operations (`execute.md`, `execute.yml`, or per-item edits), running `ghfs execute` / `ghfs sync`, and validating issue/PR batch edits. Use when tasks involve editing issues/PRs through `.ghfs` artifacts, reconciling sync state, or applying queued GitHub operations.

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:

md
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
Show full SKILL.md (245 more words)Show less

Update .ghfs/execute.yml Precisely

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

yaml
# 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'

- number: 130
  action: add-reaction
  reaction: heart

- number: 130
  action: add-reaction
  reaction: '+1'
  target: {kind: comment, commentId: 9876543}

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
Add/remove a reactionadd-reaction, remove-reactionreaction (one of +1, -1, laugh, hooray, confused, heart, rocket, eyes); optional target (defaults to the issue/PR body)

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:

bash
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.

© antfu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/ghfs of antfu/ghfs.

Open the folder on GitHubat commit a764460

Compare with similar skills

Ghfs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ghfs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ghfs this skillantfu/ghfs276—~1.5kAutomated safety check: PassMIT
Update Gui TranslationsArduPilot/MethodicConfigurator163—~1.5kAutomated safety check: PassGPL-3.0
Dalamud Gamewindow Workflowlokinmodar/Echoglossian121—~882Automated safety check: PassCC-BY-4.0
Dalamud Stringarraydata Workflowlokinmodar/Echoglossian121—~651Automated safety check: PassCC-BY-4.0
Translation Synckdeldycke/dotfiles173—~1.7kAutomated safety check: NotesBSD-2-Clause
Video Translatorshang-zhu/violin1.1k—~1kAutomated safety check: NotesMIT

Similar skills

  • Update Gui Translations

    ArduPilot/MethodicConfigurator

    Update existing GUI translations using AI assistance. An agent skill from ArduPilot/MethodicConfigurator.

    163 GitHub stars~1.5k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Dalamud Gamewindow Workflow

    lokinmodar/Echoglossian

    Work on ActionMenu, MainCommand, AddonContextMenuTitle, and the shared DB-first GameWindow runtime using the repo's game-window flow docs and instructions.

    121 GitHub stars~882 tokensUpdated today
    Writing & ContentAuto-check passed
  • Dalamud Stringarraydata Workflow

    lokinmodar/Echoglossian

    Work on Character-family StringArrayData runtime behavior and shared structured StringArrayData helpers using the repo's structured payload and ownership docs.

    121 GitHub stars~651 tokensUpdated today
    Writing & ContentAuto-check passed
  • Translation Sync

    kdeldycke/dotfiles

    Detect stale translations in readme..md and contributing..md files.

    173 GitHub stars~1.7k tokensUpdated 4 days ago
    Writing & ContentAuto-check: notes
  • Video Translator

    shang-zhu/violin

    Dub a video into another language and generate subtitles using the default Together + Cartesia stack.

    1.1k GitHub stars~1k tokensUpdated 1 mo ago
    Media & CreativeAuto-check: notes
  • Publish Release

    Ayuilos/Miffan

    Publish a GitHub release for this fork, with a bilingual changelog that separates fork-owned changes from changes introduced by upstream merges.

    192 GitHub stars~635 tokensUpdated 2 days ago
    MobileAuto-check passed

Works with

Questions about Ghfs

What does Ghfs do?

Manages ghfs local mirror files in .ghfs/, especially translating user instructions into valid execute operations (execute.md, execute.yml, or per-item edits), running ghfs execute / ghfs sync, and…. Ghfs is an agent skill from antfu/ghfs.yml, or per-item edits), running ghfs execute / ghfs sync, and validating issue/PR batch edits.

When should I use Ghfs?

Ghfs fits situations like: tasks involve editing issues/PRs through .ghfs artifacts; reconciling sync state; applying queued GitHub operations.

How do I install Ghfs in Claude Code?

Run `npx skills add antfu/ghfs --skill ghfs -a claude-code`. Or copy the skill folder (skills/ghfs in antfu/ghfs) into .claude/skills/ghfs in your project. Claude Code loads it when a task matches its description.

How do I install Ghfs in Codex?

Run `npx skills add antfu/ghfs --skill ghfs -a codex`. Or copy the skill folder (skills/ghfs in antfu/ghfs) into .agents/skills/ghfs in your project. Codex loads it when a task matches its description.

Can I use Ghfs in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add antfu/ghfs --skill ghfs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ghfs, .gemini/skills/ghfs, .github/skills/ghfs and .opencode/skills/ghfs in your project.

What does Ghfs need to run?

SKILL.md names no scripts, command-line tools or credentials: Ghfs is instructions for the agent only.

Does Ghfs access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ghfs safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ghfs use?

Ghfs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ghfs use?

About 1.5k tokens (SKILL.md is roughly 6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ghfs?

Skills that share tags, products or a category with Ghfs: Update Gui Translations (ArduPilot/MethodicConfigurator, 163 stars), Dalamud Gamewindow Workflow (lokinmodar/Echoglossian, 121 stars), Dalamud Stringarraydata Workflow (lokinmodar/Echoglossian, 121 stars) and Translation Sync (kdeldycke/dotfiles, 173 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ghfs?

antfu (a GitHub user) maintains it in antfu/ghfs, which has 276 GitHub stars. The repository was last updated on June 26, 2026.

Source: antfu/ghfs on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.