Agent skill

Skillpack Harvest

by garrytan in garrytan/gbrain

Lift a proven skill from a host repo (e.g. An agent skill from garrytan/gbrain.

MITAuto-check passedDevelopment

Install Skillpack Harvest

skills CLI
$ npx skills add garrytan/gbrain --skill skillpack-harvest -a claude-code

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

GitHub CLI
$ gh skill install garrytan/gbrain skillpack-harvest --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/garrytan/gbrain.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/skillpack-harvest .claude/skills/skillpack-harvest && 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
skillpack-harvest
GitHub stars
31k
Token cost
~2.8k tokens
SKILL.md length
1,416 words
Files
2
Skills in repo
47
Repo updated
First seen
Licence
MIT

At a glance

Lift a proven skill from a host repo (e.g. An agent skill from garrytan/gbrain.

  • Works in 6 steps: Plan → Dry-run + privacy-lint preview → Genericization checklist (the editorial… → …
  • Tasks that involve Linting and formatting
  • SKILL.md covers Contract, Output Format, When it fails and Anti-Patterns, plus 6 more sections
  • Calls bun and git

What it does

Skillpack Harvest is an agent skill from garrytan/gbrain. Lift a proven skill from a host repo (e.g. your OpenClaw fork) back into gbrain's bundle so other clients can scaffold it. Editorial workflow: the CLI does the file copy + privacy lint; this skill drives the judgment-heavy genericization (scrub real names, generalize triggers, lift fork-specific conventions to references).

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.

It sits in Development, covering Linting and formatting. The repository describes itself as: Garry's Opinionated OpenClaw/Hermes Agent Brain. The licence is MIT.

When your agent uses it

  • Tasks that involve Linting and formatting

Example prompts

  • “/skillpack-harvest”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Plan
  2. Dry-run + privacy-lint preview
  3. Genericization checklist (the editorial pass)
  4. Real harvest
  5. Verify in gbrain
  6. Downstream announcement (optional)

What it can do on your machine

Read from SKILL.md and the folder at commit f250a51. 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

    Shell commands in SKILL.md call:

    • bun
    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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

Skillpack Harvest loads about 2.8k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 1,416 words of instructions outside code blocks.

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

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 garrytan/gbrain at commit f250a51, republished under its MIT licence (© garrytan). 1,416 words, ~2,757 tokens.

Download SKILL.mdSave it as .claude/skills/skillpack-harvest/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
skillpack-harvest
description
Lift a proven skill from a host repo (e.g. your OpenClaw fork) back into gbrain's bundle so other clients can scaffold it. Editorial workflow: the CLI does the file copy + privacy lint; this skill drives the judgment-heavy genericization (scrub real names, generalize triggers, lift fork-specific conventions to references).
version
0.33.0
triggers
harvest this skill, harvest my skill, publish this skill to gbrain, lift this skill, share this skill, promote this skill, promote my skill, skill upstream…
mutating
true
writes_pages
false
writes_to
skills/<harvested-slug>/, openclaw.plugin.json

skillpack-harvest — Editorial workflow for lifting host skills into gbrain

Convention: see _brain-filing-rules.md for file placement rules. This skill writes into gbrain's own tree, not the brain repo's notes.

This skill is the inverse of gbrain skillpack scaffold. Scaffold ships skills downstream (gbrain → host). Harvest lifts proven patterns upstream (host → gbrain) so they become references every other client can scaffold.

Contract

A harvest is "properly done" when:

  1. The host skill is mature (used in production, recent routing-eval cases pass).
  2. The editorial genericization in Phase 3 has scrubbed every fork-specific reference (names, real entities, internal channels).
  3. gbrain skillpack harvest --dry-run previewed the file set.
  4. The real gbrain skillpack harvest <slug> --from <host> succeeded with status: harvested (no privacy-lint hits).
  5. bun test test/skills-conformance.test.ts passes on the new skills/<slug>/SKILL.md.
  6. The user has reviewed the diff in gbrain and explicitly approved the commit.

If any of these is incomplete, the skill is NOT yet harvested — the files may sit in gbrain's working tree, but they're not landed.

Output Format

This skill produces three artifacts in gbrain's working tree:

  1. skills/<harvested-slug>/SKILL.md (and any sibling files like routing-eval.jsonl)
  2. Paired source files at their mirror paths (e.g. src/commands/<slug>.ts) when the host SKILL.md declared them in frontmatter sources:
  3. An updated openclaw.plugin.json with the new slug added to skills: (sorted)

The session output to the user is a one-line success summary plus a list of files written. JSON mode (--json) returns the full HarvestResult shape for machine consumption.

When it fails

Follow the agent operator protocol for any gbrain error code, exit code, [AGENT] block or notice block. Specific to this skill:

  • lint_failed: the privacy linter caught a real name or private detail; go back to Phase 3 and replace it with placeholders (alice-example, acme-example, fund-a).
  • gbrain skillpack check --strict reports drift after the harvest: regenerate the bundle and re-run; never ship a drifting skillpack.

Anti-Patterns

  • Skipping the dry-run. Always preview first. Files land in gbrain's working tree; cleanup is a git checkout away, but you shouldn't need to.
  • Trusting the linter alone. The default regex set catches the common cases. It doesn't catch every proper noun. Phase 3 (the editorial pass) is the primary defense.
  • Harvesting --no-lint without justification. The lint exists for a reason. If you bypass it, document why in the commit.
  • Harvesting a skill that's still in flux. Wait until the host version stabilizes. Otherwise you'll harvest, then re-harvest, then re-harvest, and that churns gbrain's bundle for no benefit.
  • Moving files instead of copying. Harvest is a copy. The host retains its skill. Don't rm -rf the source after harvesting.
  • Harvesting batch (multiple skills at once). Not supported, and for good reason — the editorial review per skill is real work.

When to invoke

  • The user developed a skill in their host fork (your OpenClaw or any private downstream fork) and wants other gbrain clients to be able to use it
  • A skill has proven itself in production and is ready to generalize
  • The user explicitly asks to "harvest" or "publish" a skill upstream

Do NOT invoke when:

  • The skill is still in flux locally — let it stabilize first
  • The skill references private content that can't be generalized
  • The user just wants to share a one-off draft (use a gist instead)

Preconditions

Before running this skill, confirm:

  1. The skill is mature. Recent routing-eval.jsonl cases pass; the skill has been used in production at least a few times.

  2. The skill is generalizable. Strip-test in your head: replace every fork-specific name. Does it still make sense as a skill?

  3. The user owns the gbrain checkout. The harvest writes into gbrain's working tree. They'll review and commit. Don't harvest into a checkout the user doesn't intend to commit from.

Workflow

Phase 1 — Plan

Ask the user:

  • What slug should the harvested skill have? (Slugs must be kebab-case, globally unique in the gbrain bundle.)
  • Which host repo is the source? (Path to repo root, not to the skill directory — e.g. ~/git/agent-fork, not ~/git/agent-fork/skills/foo.)
  • Should paired source files come along? (Check the host SKILL.md's frontmatter sources: array.)
Phase 2 — Dry-run + privacy-lint preview

Run the CLI with --dry-run:

bash
gbrain skillpack harvest <slug> --from <host-repo-root> --dry-run

The output shows:

  • Which files would land in gbrain's tree
  • Whether paired sources are included
  • (Implicit) The skill's frontmatter triggers — read them and check they generalize

Do not skip the dry-run. The privacy linter only runs on a real harvest, but the dry-run preview lets you see the files before they land. Spot-check the SKILL.md and any paired source for things the linter might miss (proper nouns, internal project names, etc.).

Show full SKILL.md (659 more words)Show less
Phase 3 — Genericization checklist (the editorial pass)

Before running the real harvest, walk the host's skills/<slug>/ files and apply this checklist. If anything matches, edit the host file FIRST, then run harvest.

  1. Fork-specific names → generic phrasing

    • <personal-fork-name> → your OpenClaw (or OpenClaw deployment); any pet name for the user's private agent gets the same treatment
    • Personal first names (garry, jane, etc.) → the user / you / a generic placeholder
  2. Real entities → placeholders

    • Real people, companies, deals, funds → placeholder slugs (alice-example, acme-example, fund-a, etc.)
    • Email addresses → strip entirely OR use example@example.com
    • Internal Slack channels → #some-channel or strip
    • Specific tracker IDs / Linear ticket numbers → strip
  3. Fork-specific conventions → references

    • Mentions of <host-repo>/docs/... files → either lift the doc into gbrain OR replace with a generic placeholder explanation
    • Mentions of <host-repo>/skills/<other-fork-only-skill> → either decide to harvest that one too, or replace with a generic pattern reference
  4. Triggers array generalizes

    • Read every entry in frontmatter triggers:. None should reference the user's name, fork name, or internal tools.
    • "Have garry sign off on it" → "have the user sign off on it"
  5. routing-eval.jsonl examples are scrubbed

    • Open skills/<slug>/routing-eval.jsonl. Every intent field gets the same scrub as triggers:.
  6. Code comments + log strings

    • If a paired source is going to be harvested, walk it for the same private-pattern leaks. Comments are the most common hiding spot.
Phase 4 — Real harvest

Once Phase 3 is complete, run the real harvest:

bash
gbrain skillpack harvest <slug> --from <host-repo-root>

Default behavior:

  • Path-confinement + symlink rejection at file copy
  • Privacy linter runs against ~/.gbrain/harvest-private-patterns.txt (plus built-in defaults — the canonical private fork name, email addresses, Slack channels; see src/core/skillpack/harvest-lint.ts)
  • On any match → rollback (delete the harvested files) + exit non-zero
  • openclaw.plugin.json updated to add the slug, sorted

Outcomes:

  • harvested — success, manifest updated, files in gbrain's tree
  • lint_failed — privacy linter caught something. Go back to Phase 3, scrub the host file, retry.
  • slug_collision — gbrain already has a skill at that slug. Either use a different slug, or pass --overwrite-local if you really mean to replace.
Phase 5 — Verify in gbrain

After a successful harvest:

  1. bun test test/skills-conformance.test.ts — confirms the new SKILL.md meets the frontmatter contract.
  2. gbrain skillpack check --strict — confirms no drift between bundle and gbrain's own checkout.
  3. gbrain skillpack list — confirms the slug shows up in the bundle.
  4. Review the diff: cd <gbrainRoot> && git diff -- skills/<slug>/
  5. Commit the additions in gbrain (do NOT commit any leftover files in the host repo — harvest is a copy, not a move).
Phase 6 — Downstream announcement (optional)

If other gbrain clients should pick up the new skill:

  • Note it in CHANGELOG.md under "Skills added" for the next release
  • Tag the user / contributor in the PR if the skill came from someone outside the core team

Bypass: --no-lint

The privacy linter is the safety net. The editorial pass is the primary defense. If you've completed Phase 3 thoroughly and the linter is still firing on a false positive, use --no-lint:

bash
gbrain skillpack harvest <slug> --from <host-repo-root> --no-lint

Document the bypass in the commit message. Future maintainers should be able to see WHY the lint was bypassed (e.g. "the fork name appears in a citation, not a real reference — verified manually").

Never bypass the linter on a casual basis. The whole point of the default-on lint is that real names occasionally slip through the editorial pass.

What harvest does NOT do

  • It does NOT move files (it copies). The host's skills/<slug>/ stays in place.
  • It does NOT auto-scrub names. The editorial pass is human-driven.
  • It does NOT publish to npm or a remote bundle. It writes to gbrain's working tree; the user commits + ships via the normal gbrain release process.
  • It does NOT support --all (no batch harvest). One skill at a time keeps the editorial review tractable.

Files this skill touches

  • gbrain's skills/<slug>/ — every file in the host skill dir (copy)
  • gbrain's mirror path for declared paired sources (e.g. src/commands/<slug>.ts if the host SKILL.md declares it in frontmatter)
  • gbrain's openclaw.plugin.json — adds the slug to skills: array, sorted alphabetically, without removing OpenClaw-native plugin fields like id, configSchema, or contracts

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

Files

SKILL.md and 1 other file in skills/skillpack-harvest of garrytan/gbrain.

  • SKILL.md
  • routing-eval.jsonl

Open the folder on GitHubat commit f250a51

Compare with similar skills

Skillpack Harvest 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.

Skillpack Harvest compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Skillpack Harvest this skillgarrytan/gbrain31k—~2.8kAutomated safety check: PassMIT
Minimizing Ty Ecosystem Changesastral-sh/ruff50k—~4.6kAutomated safety check: PassMIT
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.4k—~2.2kAutomated safety check: PassMIT
Babysit PR To Pass CIsgl-project/sglang37k2 repos~3kAutomated safety check: PassApache-2.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT
Summarise Ecosystem Resultsastral-sh/ruff50k—~2.2kAutomated safety check: PassMIT

Similar skills

  • Official

    A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…

    50k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.4k GitHub stars~2.2k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Babysit PR To Pass CI

    sgl-project/sglang

    Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.

    37k GitHub starsUsed in 2 repos~3k tokens
    DevelopmentAuto-check passed
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…

    50k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Go Pedantry

    chromedp/chromedp

    This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…

    13k GitHub stars~3.7k tokensUpdated 4 days ago
    DevelopmentAuto-check passed

More from garrytan/gbrain

All 47 skills in this repo
  • Traces a factual error the user points out back to its source (a brain page, a memory file, SOUL.md or USER.md, or a hallucination) and fixes that source instead of just noting the correction.

    31k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Searches and writes a company-wide knowledge brain through the gbrain CLI, so durable decisions and facts about people, projects and history stay findable beyond one session.

    31k GitHub stars~875 tokensUpdated today
    Auto-check passed
  • Idea Ingest

    garrytan/gbrain

    Ingest links, articles, tweets, and ideas into the brain. An agent skill from garrytan/gbrain.

    31k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Sends what your notes already know about a topic to Perplexity, so the cited web search reports only what is new, such as entity updates or deal changes.

    31k GitHub stars~2k tokensUpdated today
    Auto-check: notes
  • Schema Unify

    garrytan/gbrain

    Migrate a brain from gbrain-base (or any pack) to gbrain-base-v2's 14-canonical-type taxonomy via gbrain onboard --check + the unify-types Minion handler.

    31k GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Skillpack Check

    garrytan/gbrain

    Run gbrain skillpack-check to produce an agent-readable JSON health report for the gbrain install.

    31k GitHub stars~1.4k tokensUpdated today
    Auto-check passed

Categories

Questions about Skillpack Harvest

What does Skillpack Harvest do?

Lift a proven skill from a host repo (e.g. An agent skill from garrytan/gbrain. Skillpack Harvest is an agent skill from garrytan/gbrain.g.

When should I use Skillpack Harvest?

Skillpack Harvest fits situations like: tasks that involve Linting and formatting.

How do I install Skillpack Harvest in Claude Code?

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

How do I install Skillpack Harvest in Codex?

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

Can I use Skillpack Harvest 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 garrytan/gbrain --skill skillpack-harvest -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skillpack-harvest, .gemini/skills/skillpack-harvest, .github/skills/skillpack-harvest and .opencode/skills/skillpack-harvest in your project.

What does Skillpack Harvest need to run?

Going by SKILL.md and its folder, Skillpack Harvest needs the command-line tools its instructions call (bun and git).

Does Skillpack Harvest access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Skillpack Harvest 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 Skillpack Harvest use?

Skillpack Harvest 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 Skillpack Harvest use?

About 2.8k tokens (SKILL.md is roughly 11k 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 Skillpack Harvest?

Skills that share tags, products or a category with Skillpack Harvest: Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars), Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.4k stars), Babysit PR To Pass CI (sgl-project/sglang, 37k stars) and Rust Best Practices (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Skillpack Harvest?

garrytan (a GitHub user) maintains it in garrytan/gbrain, which has 30,736 GitHub stars. The repository holds 47 skills in this directory. The repository was last updated on October 10, 2026.

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