Mole Bug Patterns
tw93/Mole
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.
Current Fish shell scripting, functions, abbreviations, completions, variables, events, configuration, plugins, testing, and safety guidance.
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install shepherdjerred/monorepo fish-helper --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "fish-helper" agent skill from https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helper into .claude/skills/fish-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fish-helper", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helperType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install shepherdjerred/monorepo fish-helper --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shepherdjerred/monorepo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/fish-helper .agents/skills/fish-helper && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fish-helper" agent skill from https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helper into .agents/skills/fish-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fish-helper", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install shepherdjerred/monorepo fish-helper --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shepherdjerred/monorepo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/fish-helper .cursor/skills/fish-helper && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fish-helper" agent skill from https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helper into .cursor/skills/fish-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fish-helper", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/shepherdjerred/monorepo.git --path packages/dotfiles/dot_agents/skills/fish-helper--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install shepherdjerred/monorepo fish-helper --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shepherdjerred/monorepo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/fish-helper .gemini/skills/fish-helper && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fish-helper" agent skill from https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helper into .gemini/skills/fish-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fish-helper", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install shepherdjerred/monorepo fish-helperInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/shepherdjerred/monorepo.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/fish-helper .github/skills/fish-helper && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fish-helper" agent skill from https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helper into .github/skills/fish-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fish-helper", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add shepherdjerred/monorepo --skill fish-helper -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install shepherdjerred/monorepo fish-helper --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/shepherdjerred/monorepo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/dotfiles/dot_agents/skills/fish-helper .opencode/skills/fish-helper && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fish-helper" agent skill from https://github.com/shepherdjerred/monorepo/tree/main/packages/dotfiles/dot_agents/skills/fish-helper into .opencode/skills/fish-helper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fish-helper", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fish-helperCurrent 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. 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.
Read from SKILL.md and the folder at commit da14ae9. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from shepherdjerred/monorepo at commit da14ae9, republished under its GPL-3.0 licence (© shepherdjerred). 784 words, ~2,006 tokens.
.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.Write Fish as Fish rather than translated POSIX shell. Preserve argv boundaries, propagate statuses, make configuration idempotent, and distinguish optional integrations from required tools.
Verified against Fish 4.8.1 on 2026-08-03:
fish --versionFish 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.
Use exported global variables in version-controlled config for child-process environment:
set -gx EDITOR nvim
fish_add_path --global $HOME/.local/binUniversal 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:
MODE=test command --flagStandalone assignment still uses set.
Accept commands as the remaining arguments and invoke them directly:
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
endDo not turn command arguments into source text with eval. Invoke the argv list directly or call an exact function.
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.
require_tool rg
or returnCheck 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.
read normally reads one line. It does not turn a whole file into an array by adding list flags:
while read -l line
process_line $line
end < file.txtUse 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.
Use abbreviations for interactive expansion and functions for reusable logic. Cursor markers default to %:
abbr --add L --position anywhere --set-cursor '% | less'The expansion needs the marker for cursor movement.
Enable transient prompts with a variable, not a function:
set -g fish_transient_prompt 1Fish 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.
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_add_path --global $HOME/.local/bin
set -gx EDITOR nvim
status is-interactive
or returnUse fish --profile-startup <file> -ic exit to profile startup. Plain --profile excludes startup/config loading.
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:
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.
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:
set -e fish_traceUse $version or compatibility variable $FISH_VERSION; $fish_version does not exist in Fish 4.8.1.
eval and remote curl | source installation patterns.type --path, verify exactly one intended file, then source it.read --silent; environment variables can still leak through child processes and diagnostics.fish_add_path --global for version-controlled environment setup.eval.status list-files.© 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
SKILL.md and 4 other files (references) in packages/dotfiles/dot_agents/skills/fish-helper of shepherdjerred/monorepo.
Open the folder on GitHubat commit da14ae9
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fish Helper this skillshepherdjerred/monorepo | 112 | — | ~2k | Automated safety check: Pass | GPL-3.0 | |
| Mole Bug Patternstw93/Mole | 70k | — | ~2k | Automated safety check: Pass | GPL-3.0 | |
| CLI DeveloperJeffallan/claude-skills | 12k | 2 repos | ~1.2k | Automated safety check: Pass | MIT | |
| JSON Processing with jqcharmbracelet/crush | 29k | — | ~746 | Automated safety check: Pass | Custom licence | |
| Shellm Architecture Referencelaude-institute/headlong | 1.2k | — | ~2k | Automated safety check: Notes | Apache-2.0 | |
| Bash Scriptingpromovaweb/setupvibe | 101 | 5 repos | ~1.2k | Automated safety check: Pass | GPL-3.0 |
tw93/Mole
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.
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.
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.
laude-institute/headlong
Explains how shellm's bash-based recursive LLM shell fits together - its core engine, identity system, memory, skills and trajectory log.
promovaweb/setupvibe
Bash scripting workflow for creating production-ready shell scripts with defensive patterns, error handling, and testing.
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.
shepherdjerred/monorepo
Bun runtime APIs and current operational patterns for files, processes, modules, networking, databases, tests, and deployment.
shepherdjerred/monorepo
Current Bun test runner guidance for discovery, isolation, parallelism, sharding, changed tests, mocks, timers, snapshots, coverage, DOM Testing Library, and integration teardown.
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…
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…
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"…
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
Works with
Categories
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.
Fish Helper fits situations like: reviewing Fish config; tasks that involve Shell scripting.
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.
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.
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.
Going by SKILL.md and its folder, Fish Helper needs the command-line tools its instructions call (curl). Our summary lists: Docker.
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.
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.
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.
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.
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.
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.