Agent skill

Fish Helper

by shepherdjerred in shepherdjerred/monorepo

Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance.

GPL-3.0Auto-check passedDevelopment

Install Fish Helper

skills CLI
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a claude-code

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

GitHub CLI
$ gh skill install shepherdjerred/monorepo fish-helper --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/shepherdjerred/monorepo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/fish-helper .claude/skills/fish-helper && 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
fish-helper
GitHub stars
112
Token cost
~2k tokens
SKILL.md length
784 words
Files
5 (incl. references)
Skills in repo
63
Repo updated
First seen
Licence
GPL-3.0

At a glance

Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance.

  • Reviewing Fish config
  • SKILL.md covers Current baseline, Variables and environment, Preserve argv and Error propagation, plus 8 more sections
  • Calls curl
  • Tasks that involve Shell scripting

What it does

Fish Helper is an agent skill from shepherdjerred/monorepo. Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance. Use when writing or reviewing Fish config, .fish scripts, completions, functions, prompts, or plugin setup.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/functions-completions-config.md`, `references/plugins-and-testing.md` and `references/releases.md`).

It sits in Development, covering Shell scripting. It works with Bash. The repository describes itself as: Monorepo for all of my projects. The licence is GPL-3.0.

When your agent uses it

  • Reviewing Fish config
  • Tasks that involve Shell scripting

Example prompts

  • “/fish-helper”

Requirements

  • Docker

What it can do on your machine

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

    • curl

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

  • Network

    No URLs in SKILL.md. Its commands use curl, 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

Fish Helper loads about 2k tokens when it runs, and up to ~5.2k if it reads all its reference files. Until then it costs about 66 tokens; SKILL.md has 784 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~66
When it runs · the whole SKILL.md, loaded when a task matches
~2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.2k

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 shepherdjerred/monorepo at commit da14ae9, republished under its GPL-3.0 licence (© shepherdjerred). 784 words, ~2,006 tokens.

Download SKILL.mdSave it as .claude/skills/fish-helper/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
fish-helper
description
Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance. Use when writing or reviewing Fish config, `.fish` scripts, completions, functions, prompts, or plugin setup.

Fish Helper

Write Fish as Fish rather than translated POSIX shell. Preserve argv boundaries, propagate statuses, make configuration idempotent, and distinguish optional integrations from required tools.

Current baseline

Verified against Fish 4.8.1 on 2026-08-03:

fish
fish --version

Fish 4.8 changed installed/embedded completion and function layout, added cd -L/-P, and removed automatic __fish_initialized universal creation. Fish 4.7 changed noninteractive theme initialization; Fish 4.6 changed emoji width and added prompt environment controls; Fish 4.5 mainly fixed Vi-mode regressions.

Read references/releases.md for the 51-page research ledger. Read references/syntax-and-safety.md for variables, argv, statuses, reading, tracing, temp directories, and shell boundaries. Read references/functions-completions-config.md for functions, events, abbreviations, completions, startup, prompts, and themes. Read references/plugins-and-testing.md for Fisher, popular plugins, testing, and installation security.

Variables and environment

Use exported global variables in version-controlled config for child-process environment:

fish
set -gx EDITOR nvim
fish_add_path --global $HOME/.local/bin

Universal variables remain supported, but Fish 4.3 stopped creating several user-facing defaults as universal values. Use universal state only when cross-session persistence is intentional. set -U EDITOR vim is not exported; set -Ux is persistent and exported but can create hidden machine state.

Use fish_add_path --global for idempotent, version-controlled path changes. Do not replace PATH with a short hard-coded list or prepend the same directory every time config is sourced.

Fish supports command-scoped environment overrides:

fish
MODE=test command --flag

Standalone assignment still uses set.

Preserve argv

Accept commands as the remaining arguments and invoke them directly:

fish
function retry --description 'Retry a command with exact arguments'
    argparse --stop-nonopt 'n/max-attempts=' -- $argv
    or return

    set -l max_attempts 3
    if set -q _flag_max_attempts
        set max_attempts $_flag_max_attempts
    end
    if not string match --quiet --regex '^[1-9][0-9]*$' -- $max_attempts
        echo 'retry: max-attempts must be a positive integer' >&2
        return 2
    end
    if test (count $argv) -eq 0
        echo 'retry: missing command' >&2
        return 2
    end

    set -l attempt 1
    while test $attempt -le $max_attempts
        $argv
        set -l command_status $status
        if test $command_status -eq 0
            return 0
        end
        if test $attempt -eq $max_attempts
            return $command_status
        end
        set attempt (math $attempt + 1)
        or return
    end
end

Do not turn command arguments into source text with eval. Invoke the argv list directly or call an exact function.

Error propagation

Fish functions return the status of their last command unless overridden. A helper named die that only executes return 1 returns from itself; its caller continues unless it propagates the status.

fish
require_tool rg
or return

Check mktemp, pushd, reads, generated init commands, and cleanup explicitly. Required tools should fail fast. Only optional integrations may be conditionally absent, and the config should label them optional.

Reading input

read normally reads one line. It does not turn a whole file into an array by adding list flags:

fish
while read -l line
    process_line $line
end < file.txt

Use string split when delimiter-based parsing is deliberate. Use read --silent for interactive secrets, or a tool-specific credential file/secret manager; do not write credential-shaped literals into shell config.

Abbreviations

Use abbreviations for interactive expansion and functions for reusable logic. Cursor markers default to %:

fish
abbr --add L --position anywhere --set-cursor '% | less'

The expansion needs the marker for cursor movement.

Transient prompts and themes

Enable transient prompts with a variable, not a function:

fish
set -g fish_transient_prompt 1

Fish reruns fish_prompt, fish_right_prompt, and fish_mode_prompt with --final-rendering.

Prefer fish_config theme choose THEME for adaptive theme behavior. fish_config theme save stores universal colors and disables dynamic light/dark switching. Theme files use fish_color_command blue, not assignment syntax.

Startup and configuration

Fish searches user conf.d, system configuration, and user/vendor data directories according to documented priority; snippets are naturally sorted, and only the first same-named file is run. Do not describe a simple system-then-user order.

Put environment and path setup needed by noninteractive Fish before an interactive-only guard:

fish
fish_add_path --global $HOME/.local/bin
set -gx EDITOR nvim

status is-interactive
or return

Use fish --profile-startup <file> -ic exit to profile startup. Plain --profile excludes startup/config loading.

Show full SKILL.md (299 more words)Show less

Completions and events

Fish 4.8 embeds bundled completions/functions; use status list-files to inspect embedded files rather than assuming /usr/share/fish/completions.

Register multiple commands with repeated --command or brace expansion:

fish
complete --command={docker,podman} --long-option help --description 'Show help'

Dynamic completion generators must be fast, bounded, side-effect-free, and must not interpret untrusted source. Avoid network calls on each Tab press.

Variable event handlers can coalesce updates, can run on same-value sets, and have unspecified ordering across handlers. Universal updates from another shell have distinct delivery behavior. Use events for notifications, not ordering-critical state machines.

Tracing and introspection

type --type name prints classifications such as function, builtin, or file. type --short only suppresses full function definitions.

Tracing is enabled when fish_trace is set and non-empty. Disable it by erasing the variable:

fish
set -e fish_trace

Use $version or compatibility variable $FISH_VERSION; $fish_version does not exist in Fish 4.8.1.

Security

  • Avoid eval and remote curl | source installation patterns.
  • Pin and inspect a downloaded plugin installer before sourcing it.
  • Resolve source paths with type --path, verify exactly one intended file, then source it.
  • Keep dynamic completions and event handlers free of destructive side effects.
  • Use secret managers, protected credential files, or read --silent; environment variables can still leak through child processes and diagnostics.
  • Preserve exact arguments rather than re-parsing command text.
  • Create and clean temporary directories only after each operation succeeds, preserving the wrapped command status.

Review checklist

  • Verify Fish 4.8.1 behavior and the project's minimum version.
  • Use exported globals and fish_add_path --global for version-controlled environment setup.
  • Preserve argv and avoid eval.
  • Propagate failures through functions and cleanup.
  • Read complete files with a loop or explicit splitting.
  • Use the current transient-prompt variable and adaptive theme workflow.
  • Put noninteractive environment setup before the interactive guard.
  • Treat completion subprocesses and event handlers as bounded, side-effect-free hooks.
  • Inspect embedded completion paths with status list-files.
  • Pin and review third-party plugin installation.

© shepherdjerred, GPL-3.0. 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 4 other files (references) in packages/dotfiles/dot_agents/skills/fish-helper of shepherdjerred/monorepo.

  • SKILL.md
  • references/functions-completions-config.md
  • references/plugins-and-testing.md
  • references/releases.md
  • references/syntax-and-safety.md

Open the folder on GitHubat commit da14ae9

Compare with similar skills

Fish Helper 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.

Fish Helper compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fish Helper this skillshepherdjerred/monorepo112—~2kAutomated safety check: PassGPL-3.0
Mole Bug Patternstw93/Mole70k—~2kAutomated safety check: PassGPL-3.0
CLI DeveloperJeffallan/claude-skills12k2 repos~1.2kAutomated safety check: PassMIT
JSON Processing with jqcharmbracelet/crush29k—~746Automated safety check: PassCustom licence
Shellm Architecture Referencelaude-institute/headlong1.2k—~2kAutomated safety check: NotesApache-2.0
Bash Scriptingpromovaweb/setupvibe1015 repos~1.2kAutomated safety check: PassGPL-3.0

Similar skills

  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • CLI Developer

    Jeffallan/claude-skills

    Walks through designing, building and polishing a command-line tool: user workflow and command hierarchy, implementation in commander, click, typer or cobra, completions and cross-platform testing.

    12k GitHub starsUsed in 2 repos~1.2k tokens
    DevelopmentAuto-check passed
  • JSON Processing with jq

    charmbracelet/crush

    Explains the jq command built into Crush for querying, filtering and reshaping JSON, including its supported flags and where it differs from standard jq.

    29k GitHub stars~746 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Shellm Architecture Reference

    laude-institute/headlong

    Explains how shellm's bash-based recursive LLM shell fits together - its core engine, identity system, memory, skills and trajectory log.

    1.2k GitHub stars~2k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Bash Scripting

    promovaweb/setupvibe

    Bash scripting workflow for creating production-ready shell scripts with defensive patterns, error handling, and testing.

    101 GitHub starsUsed in 5 repos~1.2k tokens
    DevelopmentAuto-check passed
  • Cpp

    crazyguitar/cppcheatsheet

    Comprehensive C/C++ programming reference covering everything from C11-C23 and C++11-C++23, system programming, CUDA GPU computing, debugging tools, Rust interop, and advanced topics.

    290 GitHub stars~1.8k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from shepherdjerred/monorepo

All 63 skills in this repo
  • Bun Runtime Best Practices

    shepherdjerred/monorepo

    Bun runtime APIs and current operational patterns for files, processes, modules, networking, databases, tests, and deployment.

    112 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Bun Test Patterns

    shepherdjerred/monorepo

    Current Bun test runner guidance for discovery, isolation, parallelism, sharding, changed tests, mocks, timers, snapshots, coverage, DOM Testing Library, and integration teardown.

    112 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Bun Workspaces

    shepherdjerred/monorepo

    Current Bun workspace guidance for isolated and hoisted linkers, catalogs, filters, scripts, dependency classes, lockfiles, lifecycle trust, caches, publishing, TypeScript package exports, and…

    112 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Deep Research

    shepherdjerred/monorepo

    This skill should be used when the user asks to "deep research", "research this topic", "investigate thoroughly", "do a deep dive on", "comprehensive research on", "find everything about", "survey…

    112 GitHub stars~4.7k tokensUpdated today
    Auto-check: notes
  • Figma Use

    shepherdjerred/monorepo

    This skill should be used when the user asks to "create a Figma design", "design in Figma", "make a Figma mockup", "create an app icon", "design UI", "render JSX to Figma", "export from Figma"…

    112 GitHub stars~946 tokensUpdated today
    Auto-check passed
  • Gh Helper

    shepherdjerred/monorepo

    Complete GitHub operations via gh CLI - repos, issues, PRs, code search, releases, file management When user mentions GitHub, repositories, issues, PRs, gh command, code search, commits, file contents

    112 GitHub stars~4.4k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Fish Helper

What does Fish Helper do?

Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance. Fish Helper is an agent skill from shepherdjerred/monorepo. Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance.

When should I use Fish Helper?

Fish Helper fits situations like: reviewing Fish config; tasks that involve Shell scripting.

How do I install Fish Helper in Claude Code?

Run `npx skills add shepherdjerred/monorepo --skill fish-helper -a claude-code`. Or copy the skill folder (packages/dotfiles/dot_agents/skills/fish-helper in shepherdjerred/monorepo) into .claude/skills/fish-helper in your project. Claude Code loads it when a task matches its description.

How do I install Fish Helper in Codex?

Run `npx skills add shepherdjerred/monorepo --skill fish-helper -a codex`. Or copy the skill folder (packages/dotfiles/dot_agents/skills/fish-helper in shepherdjerred/monorepo) into .agents/skills/fish-helper in your project. Codex loads it when a task matches its description.

Can I use Fish Helper 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 shepherdjerred/monorepo --skill fish-helper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fish-helper, .gemini/skills/fish-helper, .github/skills/fish-helper and .opencode/skills/fish-helper in your project.

What does Fish Helper need to run?

Going by SKILL.md and its folder, Fish Helper needs the command-line tools its instructions call (curl). Our summary lists: Docker.

Does Fish Helper access the network?

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

Is Fish Helper 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 Fish Helper use?

Fish Helper is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fish Helper use?

About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.2k tokens, read only when the agent opens those files.

What are the alternatives to Fish Helper?

Skills that share tags, products or a category with Fish Helper: Mole Bug Patterns (tw93/Mole, 70k stars), CLI Developer (Jeffallan/claude-skills, 12k stars), JSON Processing with jq (charmbracelet/crush, 29k stars) and Shellm Architecture Reference (laude-institute/headlong, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fish Helper?

shepherdjerred (a GitHub user) maintains it in shepherdjerred/monorepo, which has 112 GitHub stars. The repository holds 63 skills in this directory. The repository was last updated on October 8, 2026.

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