Merge pull request 'fix: CI build-docs link validation + non-portable cp -n warning' (#164) from fix/classification-schema-link-validation into main
CI / github-mirror (push) Skipped
CI / test (push) Successful in 4m28s
CI / build-docs (push) Successful in 4m10s

This commit was merged in pull request #164.
This commit is contained in:
2026-09-22 02:52:42 +00:00
committed by Gitea
6 changed files with 377 additions and 8 deletions
+195 -1
View File
@@ -912,6 +912,9 @@ cat README.md
cat \[ti]/projects/myapp cat \[ti]/projects/myapp
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(ls)\f[R],
\f[V]bypasses-shadow(cat)\f[R]
.SS copy .SS copy
.IP .IP
.nf .nf
@@ -930,6 +933,8 @@ copy ./mydir/ \[ti]/backup
copy ./mydir/ \[ti]/backup # copies mydir INTO backup, not backup/mydir/ copy ./mydir/ \[ti]/backup # copies mydir INTO backup, not backup/mydir/
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cp)\f[R]
.SS du .SS du
.IP .IP
.nf .nf
@@ -951,6 +956,8 @@ du \[ti]/Downloads
du --disk du --disk
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(du)\f[R]
.SS dusize .SS dusize
.IP .IP
.nf .nf
@@ -968,6 +975,8 @@ dusize \[ti]/Downloads
dusize \[ti]/Videos dusize \[ti]/Videos
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(du)\f[R]
.SS lD .SS lD
.IP .IP
.nf .nf
@@ -987,6 +996,8 @@ Example:
lD \[ti]/projects lD \[ti]/projects
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS ls .SS ls
.IP .IP
.nf .nf
@@ -1005,6 +1016,8 @@ ls
ls -a \[ti]/projects ls -a \[ti]/projects
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS lsr .SS lsr
.IP .IP
.nf .nf
@@ -1024,6 +1037,8 @@ Example:
lsr \[ti]/projects lsr \[ti]/projects
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS lss .SS lss
.IP .IP
.nf .nf
@@ -1043,6 +1058,8 @@ Example:
lss \[ti]/downloads lss \[ti]/downloads
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS lstree .SS lstree
.IP .IP
.nf .nf
@@ -1062,6 +1079,8 @@ Example:
lstree \[ti]/projects/myapp lstree \[ti]/projects/myapp
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS lt .SS lt
.IP .IP
.nf .nf
@@ -1081,6 +1100,8 @@ Example:
lt \[ti]/projects lt \[ti]/projects
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS ltr .SS ltr
.IP .IP
.nf .nf
@@ -1101,6 +1122,8 @@ Example:
ltr \[ti]/projects ltr \[ti]/projects
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS lx .SS lx
.IP .IP
.nf .nf
@@ -1120,6 +1143,8 @@ Example:
lx \[ti]/projects lx \[ti]/projects
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ls)\f[R]
.SS mkcd .SS mkcd
.IP .IP
.nf .nf
@@ -1145,6 +1170,8 @@ mkcd \[ti]/projects/myapp
mkcd \[ti]/projects/newapp/src mkcd \[ti]/projects/newapp/src
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cd)\f[R]
.SS mkdir .SS mkdir
.IP .IP
.nf .nf
@@ -1163,6 +1190,8 @@ Example:
mkdir \[ti]/projects/myapp/src mkdir \[ti]/projects/myapp/src
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(mkdir)\f[R]
.SS mv .SS mv
.IP .IP
.nf .nf
@@ -1188,6 +1217,8 @@ Example:
mv \[ti]/.config/btop/themes/themes \[ti]/.config/btop/themes mv \[ti]/.config/btop/themes/themes \[ti]/.config/btop/themes
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(mv)\f[R]
.SS poke .SS poke
.IP .IP
.nf .nf
@@ -1227,6 +1258,8 @@ rg \[dq]fish_greeting\[dq] \[ti]/.config/fish/
rg -l \[dq]TODO\[dq] \[ti]/projects/myapp rg -l \[dq]TODO\[dq] \[ti]/projects/myapp
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(rg)\f[R]
.SS rm .SS rm
.IP .IP
.nf .nf
@@ -1263,6 +1296,9 @@ rm -e
rm -S sensitive_key.pem rm -S sensitive_key.pem
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(rm)\f[R],
\f[V]destructive\f[R]
.SS scrub .SS scrub
.IP .IP
.nf .nf
@@ -1290,6 +1326,9 @@ scrub -a
scrub -d scrub -d
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(rm)\f[R],
\f[V]bypasses-shadow(rm)\f[R], \f[V]destructive\f[R]
.SS 5.2 Navigation .SS 5.2 Navigation
.SS cdi .SS cdi
.IP .IP
@@ -1389,6 +1428,8 @@ edit --editor=code --clipboard
edit --text=\[dq]hello world\[dq] edit --text=\[dq]hello world\[dq]
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(rm)\f[R]
.SS fc .SS fc
.IP .IP
.nf .nf
@@ -1412,6 +1453,9 @@ fc
fc git fc git
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(rm)\f[R],
\f[V]self-limiting(cat)\f[R]
.SS less .SS less
.IP .IP
.nf .nf
@@ -1428,6 +1472,8 @@ Example:
less /var/log/syslog less /var/log/syslog
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cat,less)\f[R]
.SS md .SS md
.IP .IP
.nf .nf
@@ -1475,6 +1521,8 @@ md --new-window one.md two.md
.PP .PP
\f[B]Dependencies:\f[R] \f[V]marktext\f[R], \f[V]firejail\f[R], \f[B]Dependencies:\f[R] \f[V]marktext\f[R], \f[V]firejail\f[R],
\f[V]bkg\f[R] \f[V]bkg\f[R]
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(mkdir)\f[R]
.SS rawfish .SS rawfish
.IP .IP
.nf .nf
@@ -1507,6 +1555,8 @@ Example:
view /etc/fstab view /etc/fstab
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(less)\f[R]
.SS 5.4 Git and Version Control .SS 5.4 Git and Version Control
.SS auto-pull .SS auto-pull
.IP .IP
@@ -1600,6 +1650,9 @@ gi -b -p
gi -s node > .gitignore gi -s node > .gitignore
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(grep,cat)\f[R],
\f[V]network\f[R], \f[V]blocking-prompt\f[R]
.SS git-clean .SS git-clean
.IP .IP
.nf .nf
@@ -1623,6 +1676,8 @@ git-clean --force
git-clean git-clean
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS gitui .SS gitui
.IP .IP
.nf .nf
@@ -1660,6 +1715,8 @@ gitup
gitup --all gitup --all
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS hist .SS hist
.IP .IP
.nf .nf
@@ -1819,6 +1876,9 @@ not, so they are chained with the git commands that do the linking:
\f[V]_mkrep_verbose\f[R], \f[V]_mkrep_add_origin\f[R], \f[V]_mkrep_verbose\f[R], \f[V]_mkrep_add_origin\f[R],
\f[V]_mkrep_default_remote_cmd\f[R], \f[V]_mkrep_remote_url\f[R], \f[V]_mkrep_default_remote_cmd\f[R], \f[V]_mkrep_remote_url\f[R],
\f[V]_mkrep_repo_exists\f[R], \f[V]git\f[R] \f[V]_mkrep_repo_exists\f[R], \f[V]git\f[R]
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cd)\f[R],
\f[V]self-limiting(rm)\f[R], \f[V]destructive\f[R], \f[V]network\f[R]
.SS 5.5 Package Management .SS 5.5 Package Management
.SS cleanup .SS cleanup
.IP .IP
@@ -1837,6 +1897,8 @@ Example:
cleanup cleanup
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(grep)\f[R]
.SS parur .SS parur
.IP .IP
.nf .nf
@@ -1855,6 +1917,8 @@ Example:
parur parur
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS pkg .SS pkg
.IP .IP
.nf .nf
@@ -1890,6 +1954,8 @@ pkg -i ripgrep fd-find
pkg -u cowsay pkg -u cowsay
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS search .SS search
.IP .IP
.nf .nf
@@ -1910,6 +1976,8 @@ Example:
search neovim search neovim
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS upgrade .SS upgrade
.IP .IP
.nf .nf
@@ -1927,6 +1995,8 @@ Example:
upgrade upgrade
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS 5.6 Dependency Management .SS 5.6 Dependency Management
.SS check_fish_deps .SS check_fish_deps
.IP .IP
@@ -2018,6 +2088,8 @@ Example:
fzf-update fzf-update
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS 5.7 System and Monitoring .SS 5.7 System and Monitoring
.SS limine-edit .SS limine-edit
.IP .IP
@@ -2091,6 +2163,8 @@ sbver
sbver --brief sbver --brief
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(grep)\f[R]
.SS screensleep .SS screensleep
.IP .IP
.nf .nf
@@ -2158,6 +2232,8 @@ Example:
top top
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(top)\f[R]
.SS 5.8 Terminal Management .SS 5.8 Terminal Management
.SS bkg .SS bkg
.IP .IP
@@ -2306,6 +2382,8 @@ jobrunner kill build
\f[B]Dependencies:\f[R] \f[V]tmux\f[R], \f[V]screen\f[R], \f[B]Dependencies:\f[R] \f[V]tmux\f[R], \f[V]screen\f[R],
\f[V]__jobrunner_sessions\f[R] \f[V]__jobrunner_sessions\f[R]
.PP .PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cat,rm)\f[R]
.PP
\f[B]Used by:\f[R] \f[V]jr\f[R] \f[B]Used by:\f[R] \f[V]jr\f[R]
.SS jr .SS jr
.IP .IP
@@ -2392,6 +2470,9 @@ Example:
ssh user\[at]host ssh user\[at]host
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ssh)\f[R],
\f[V]network\f[R]
.SS tab .SS tab
.IP .IP
.nf .nf
@@ -2538,6 +2619,8 @@ Example:
gip gip
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS gip4 .SS gip4
.IP .IP
.nf .nf
@@ -2553,6 +2636,8 @@ Example:
gip4 gip4
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS gip6 .SS gip6
.IP .IP
.nf .nf
@@ -2573,6 +2658,8 @@ Example:
gip6 gip6
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS ping .SS ping
.IP .IP
.nf .nf
@@ -2592,6 +2679,8 @@ ping google.com
ping --legend google.com ping --legend google.com
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(ping)\f[R]
.SS qr .SS qr
.IP .IP
.nf .nf
@@ -2613,6 +2702,9 @@ qr \[dq]https://example.com\[dq]
echo \[dq]hello\[dq] | qr echo \[dq]hello\[dq] | qr
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(cat)\f[R],
\f[V]network\f[R]
.SS 5.11 Pager and Logging .SS 5.11 Pager and Logging
.SS logs .SS logs
.IP .IP
@@ -2647,6 +2739,9 @@ logs
logs -c scrollback logs -c scrollback
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cat)\f[R],
\f[V]self-limiting(rm)\f[R], \f[V]network\f[R]
.SS smart_exit .SS smart_exit
.IP .IP
.nf .nf
@@ -2675,6 +2770,9 @@ smart_exit
smart_exit --no-log smart_exit --no-log
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(rm,mkdir)\f[R],
\f[V]destructive\f[R]
.SS sponge_filter_secrets .SS sponge_filter_secrets
.IP .IP
.nf .nf
@@ -2797,6 +2895,9 @@ agents-init --quiet
\f[B]Dependencies:\f[R] \f[V]_agents_repo_install_tools\f[R], \f[B]Dependencies:\f[R] \f[V]_agents_repo_install_tools\f[R],
\f[V]_agents_repo_sync\f[R], \f[V]_agents_init_ensure_gitignore\f[R] \f[V]_agents_repo_sync\f[R], \f[V]_agents_init_ensure_gitignore\f[R]
.PP .PP
\f[B]Classification:\f[R] \f[V]self-limiting(rm,mkdir)\f[R],
\f[V]bypasses-shadow(mv)\f[R]
.PP
\f[B]Used by:\f[R] \f[V]agy\f[R], \f[V]claude\f[R] \f[B]Used by:\f[R] \f[V]agy\f[R], \f[V]claude\f[R]
.SS agents-vault .SS agents-vault
.IP .IP
@@ -2984,6 +3085,8 @@ agents-vault --restore
\f[V]_agents_repo_ensure_symlink\f[R], \f[V]_agents_repo_sync\f[R], \f[V]_agents_repo_ensure_symlink\f[R], \f[V]_agents_repo_sync\f[R],
\f[V]_agents_repo_install_tools\f[R], \f[V]git\f[R], \f[V]hostname\f[R] \f[V]_agents_repo_install_tools\f[R], \f[V]git\f[R], \f[V]hostname\f[R]
.PP .PP
\f[B]Classification:\f[R] \f[V]self-limiting(rm,mkdir)\f[R]
.PP
\f[B]Used by:\f[R] \f[V]agy\f[R], \f[V]claude\f[R] \f[B]Used by:\f[R] \f[V]agy\f[R], \f[V]claude\f[R]
.SS agy .SS agy
.IP .IP
@@ -3045,6 +3148,8 @@ Example:
antigravity-ide antigravity-ide
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(grep)\f[R]
.SS claude .SS claude
.IP .IP
.nf .nf
@@ -3082,6 +3187,8 @@ claude \[dq]Explain the recent changes\[dq]
.fi .fi
.PP .PP
\f[B]Dependencies:\f[R] \f[V]agents-init\f[R], \f[V]agents-vault\f[R] \f[B]Dependencies:\f[R] \f[V]agents-init\f[R], \f[V]agents-vault\f[R]
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(claude)\f[R]
.SS claude-docs .SS claude-docs
.IP .IP
.nf .nf
@@ -3099,6 +3206,8 @@ Example:
claude-docs claude-docs
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(claude)\f[R]
.SS claude-pr .SS claude-pr
.IP .IP
.nf .nf
@@ -3116,6 +3225,8 @@ Example:
claude-pr claude-pr
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(claude)\f[R]
.SS docker .SS docker
.IP .IP
.nf .nf
@@ -3222,6 +3333,8 @@ superpowers on
superpowers off -g superpowers off -g
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(claude)\f[R]
.SS 5.13 Media and Utilities .SS 5.13 Media and Utilities
.SS dng2avif .SS dng2avif
.IP .IP
@@ -3249,6 +3362,8 @@ dng2avif photo.dng
dng2avif -q 85 -s 5 -i shot.dng -o out.avif dng2avif -q 85 -s 5 -i shot.dng -o out.avif
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(rm)\f[R]
.SS key-crypt .SS key-crypt
.IP .IP
.nf .nf
@@ -3299,6 +3414,9 @@ key-crypt --install # register the standalone wrapper + Open With e
.fi .fi
.PP .PP
\f[B]Dependencies:\f[R] \f[V]gpg\f[R], \f[V]tar\f[R] \f[B]Dependencies:\f[R] \f[V]gpg\f[R], \f[V]tar\f[R]
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(rm)\f[R],
\f[V]destructive\f[R]
.SS play-media .SS play-media
.IP .IP
.nf .nf
@@ -3400,6 +3518,8 @@ yt-dlp dQw4w9WgXcQ
yt-dlp --no-embed-thumbnail dQw4w9WgXcQ # drops our thumbnail default yt-dlp --no-embed-thumbnail dQw4w9WgXcQ # drops our thumbnail default
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS 5.14 Miscellaneous .SS 5.14 Miscellaneous
.SS bash .SS bash
.IP .IP
@@ -3417,6 +3537,8 @@ Example:
bash bash
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(bash)\f[R]
.SS bd-pull .SS bd-pull
.IP .IP
.nf .nf
@@ -3455,6 +3577,8 @@ Example:
cffetch cffetch
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(ls)\f[R]
.SS cheat .SS cheat
.IP .IP
.nf .nf
@@ -3528,6 +3652,9 @@ config-help --help
config-help pkg --man config-help pkg --man
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]self-limiting(grep)\f[R],
\f[V]bypasses-shadow(less)\f[R]
.SS config-settings .SS config-settings
.IP .IP
.nf .nf
@@ -3607,6 +3734,8 @@ config-settings
\f[V]__config_settings_state\f[R], \f[V]__config_settings_apply\f[R], \f[V]__config_settings_state\f[R], \f[V]__config_settings_apply\f[R],
\f[V]__config_settings_set_value\f[R], \f[V]python3\f[R] \f[V]__config_settings_set_value\f[R], \f[V]python3\f[R]
.PP .PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(rm)\f[R]
.PP
\f[B]Used by:\f[R] \f[V]config-toggle\f[R] \f[B]Used by:\f[R] \f[V]config-toggle\f[R]
.SS config-toggle .SS config-toggle
.IP .IP
@@ -3676,6 +3805,8 @@ Example:
dockup \[ti]/myapp dockup \[ti]/myapp
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]network\f[R]
.SS ffetch .SS ffetch
.IP .IP
.nf .nf
@@ -3692,6 +3823,8 @@ Example:
ffetch ffetch
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]uses-shadow(ls)\f[R]
.SS fzf_configure_bindings .SS fzf_configure_bindings
.IP .IP
.nf .nf
@@ -3774,6 +3907,8 @@ kitty-logging install
kitty-logging status kitty-logging status
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(grep,mkdir,rm)\f[R]
.SS ld .SS ld
.IP .IP
.nf .nf
@@ -3869,6 +4004,8 @@ rand_string --case=title color animal --separator=dot digits=4
rand_string literal=TEST --separator=underscore verb noun rand_string literal=TEST --separator=underscore verb noun
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(cat)\f[R]
.SS replay .SS replay
.IP .IP
.nf .nf
@@ -3891,6 +4028,8 @@ replay \[dq]source \[ti]/.bashrc\[dq]
replay \[dq]export FOO=bar\[dq] replay \[dq]export FOO=bar\[dq]
\f[R] \f[R]
.fi .fi
.PP
\f[B]Classification:\f[R] \f[V]bypasses-shadow(bash,cd)\f[R]
.SS repo-open .SS repo-open
.IP .IP
.nf .nf
@@ -4728,7 +4867,6 @@ ssh kitten ssh in Kitty terminal system ssh
rg rg --hyperlink-format=kitty system rg rg rg --hyperlink-format=kitty system rg
mkdir verbose path-tree display on creation mkdir -p silently mkdir verbose path-tree display on creation mkdir -p silently
bash XDG bashrc + $SHELL reset on exit system bash bash XDG bashrc + $SHELL reset on exit system bash
history timestamps prepended to every entry fish builtin history
cp / mv forced -i confirmation prompt cp / mv unmodified cp / mv forced -i confirmation prompt cp / mv unmodified
wget forced --continue (resume downloads) system wget wget forced --continue (resume downloads) system wget
grep/fgrep/egrep forced --color=auto system grep variants grep/fgrep/egrep forced --color=auto system grep variants
@@ -4742,6 +4880,12 @@ edit multi-editor launcher (GUI/term + fallbacks) $EDITOR/nvim/na
When C1 is disabled, \f[V]rm\f[R] uses bare \f[V]command rm\f[R] with no When C1 is disabled, \f[V]rm\f[R] uses bare \f[V]command rm\f[R] with no
wrapper \[em] files are permanently deleted, not trashed. wrapper \[em] files are permanently deleted, not trashed.
There is no intermediate safety net. There is no intermediate safety net.
.PP
\f[V]history\f[R] itself is never shadowed \[em] every function in this
config that reads history depends on its stock builtin semantics.
\f[V]pretty-history\f[R] (same \f[V]aliases-tricks\f[R] toggle) is a
separate command that prints history with a timestamp prepended to every
entry.
.SS Sub-categories .SS Sub-categories
.PP .PP
\f[V]__fish_config_op_aliases\f[R] sub-divides into six sub-categories, \f[V]__fish_config_op_aliases\f[R] sub-divides into six sub-categories,
@@ -4771,6 +4915,56 @@ interception.
.PP .PP
\f[V]claude\f[R] (\f[V]AGENTS.md/CLAUDE.md\f[R] auto-linking) and \f[V]claude\f[R] (\f[V]AGENTS.md/CLAUDE.md\f[R] auto-linking) and
\f[V]edit\f[R] (multi-editor launcher), plus \f[V]agy\f[R]. \f[V]edit\f[R] (multi-editor launcher), plus \f[V]agy\f[R].
.SS For function authors
.PP
Calling one of these names bare from inside your own function means the
override runs whenever C1 (or its sub-category) is on \[em] which may
not be what your function wants: a shadow can change stdout
(\f[V]cat\f[R]\[cq]s syntax highlighting, \f[V]mkdir\f[R]\[cq]s tree
display), prompt interactively where none is expected
(\f[V]cp\f[R]/\f[V]mv\f[R]\[cq]s forced \f[V]-i\f[R]), or reshape output
structurally (\f[V]ls\f[R]\[cq]s icons/columns, \f[V]rg\f[R]\[cq]s
hyperlink markers).
If your function\[cq]s logic depends on stock behavior, bypass the
shadow deterministically, regardless of the toggle state:
.IP
.nf
\f[C]
Shadow Bypass Why
─────────────────────────────────────────────────────────────────────────
ls, cat, rm, less, du, command <name> Real external
top, ping, ssh, rg, binaries \[em] a
mkdir, bash, cp, mv, real system command
wget, grep/fgrep/egrep, exists to fall
dir/vdir, claude back to.
cd builtin cd The one true
fish builtin
in this table.
help config __original_help $argv \[ga]help\[ga] is neither
a builtin nor an
external binary
(embedded in the
fish binary
itself) \[em] see
conf.d/help.fish
for why the
wrapper keeps its
own backup copy.
edit (nothing to bypass to) Purely our own
invention, no
stock command
exists. Call
$EDITOR/$VISUAL
yourself if you
want a plain
editor launch.
\f[R]
.fi
.PP
A function\[cq]s own doc header records which of these it depends on:
see the \f[V]CLASSIFICATION\f[R] label (\f[V]uses-shadow(...)\f[R] /
\f[V]bypasses-shadow(...)\f[R]), documented in full at
\f[V]docs/function-classification-schema.md\f[R] (https://git.rootiest.dev/rootiest/fish-config/src/branch/main/docs/function-classification-schema.md).
.SS C2 \[em] Startup Side-Effects .SS C2 \[em] Startup Side-Effects
.PP .PP
These run automatically without any user action. These run automatically without any user action.
+176 -1
View File
@@ -607,6 +607,8 @@ functions). They are active in all interactive sessions.
cat README.md cat README.md
cat ~/projects/myapp cat ~/projects/myapp
**Classification:** `uses-shadow(ls)`, `bypasses-shadow(cat)`
### copy ### copy
Synopsis: copy <source> <dest> Synopsis: copy <source> <dest>
@@ -622,6 +624,8 @@ functions). They are active in all interactive sessions.
copy ./mydir/ ~/backup copy ./mydir/ ~/backup
copy ./mydir/ ~/backup # copies mydir INTO backup, not backup/mydir/ copy ./mydir/ ~/backup # copies mydir INTO backup, not backup/mydir/
**Classification:** `bypasses-shadow(cp)`
### du ### du
Synopsis: du [--disk|--dir|--dua] [args...] Synopsis: du [--disk|--dir|--dua] [args...]
@@ -640,6 +644,8 @@ functions). They are active in all interactive sessions.
du ~/Downloads du ~/Downloads
du --disk du --disk
**Classification:** `bypasses-shadow(du)`
### dusize ### dusize
Synopsis: dusize [dir] Synopsis: dusize [dir]
@@ -654,6 +660,8 @@ functions). They are active in all interactive sessions.
dusize ~/Downloads dusize ~/Downloads
dusize ~/Videos dusize ~/Videos
**Classification:** `uses-shadow(du)`
### lD ### lD
Synopsis: lD [args...] Synopsis: lD [args...]
@@ -670,6 +678,8 @@ functions). They are active in all interactive sessions.
Example: Example:
lD ~/projects lD ~/projects
**Classification:** `bypasses-shadow(ls)`
### ls ### ls
Synopsis: ls [args...] Synopsis: ls [args...]
@@ -685,6 +695,8 @@ functions). They are active in all interactive sessions.
ls ls
ls -a ~/projects ls -a ~/projects
**Classification:** `bypasses-shadow(ls)`
### lsr ### lsr
Synopsis: lsr [args...] Synopsis: lsr [args...]
@@ -701,6 +713,8 @@ functions). They are active in all interactive sessions.
Example: Example:
lsr ~/projects lsr ~/projects
**Classification:** `bypasses-shadow(ls)`
### lss ### lss
Synopsis: lss [args...] Synopsis: lss [args...]
@@ -717,6 +731,8 @@ functions). They are active in all interactive sessions.
Example: Example:
lss ~/downloads lss ~/downloads
**Classification:** `bypasses-shadow(ls)`
### lstree ### lstree
Synopsis: lstree [args...] Synopsis: lstree [args...]
@@ -733,6 +749,8 @@ functions). They are active in all interactive sessions.
Example: Example:
lstree ~/projects/myapp lstree ~/projects/myapp
**Classification:** `bypasses-shadow(ls)`
### lt ### lt
Synopsis: lt [args...] Synopsis: lt [args...]
@@ -749,6 +767,8 @@ functions). They are active in all interactive sessions.
Example: Example:
lt ~/projects lt ~/projects
**Classification:** `bypasses-shadow(ls)`
### ltr ### ltr
Synopsis: ltr [args...] Synopsis: ltr [args...]
@@ -766,6 +786,8 @@ functions). They are active in all interactive sessions.
Example: Example:
ltr ~/projects ltr ~/projects
**Classification:** `bypasses-shadow(ls)`
### lx ### lx
Synopsis: lx [args...] Synopsis: lx [args...]
@@ -782,6 +804,8 @@ functions). They are active in all interactive sessions.
Example: Example:
lx ~/projects lx ~/projects
**Classification:** `bypasses-shadow(ls)`
### mkcd ### mkcd
Synopsis: mkcd [-s | --silent] <dir> Synopsis: mkcd [-s | --silent] <dir>
@@ -804,6 +828,8 @@ functions). They are active in all interactive sessions.
mkcd ~/projects/myapp mkcd ~/projects/myapp
mkcd ~/projects/newapp/src mkcd ~/projects/newapp/src
**Classification:** `bypasses-shadow(cd)`
### mkdir ### mkdir
Synopsis: mkdir [args...] Synopsis: mkdir [args...]
@@ -819,6 +845,8 @@ functions). They are active in all interactive sessions.
Example: Example:
mkdir ~/projects/myapp/src mkdir ~/projects/myapp/src
**Classification:** `bypasses-shadow(mkdir)`
### mv ### mv
Synopsis: mv [args...] Synopsis: mv [args...]
@@ -841,6 +869,8 @@ functions). They are active in all interactive sessions.
Example: Example:
mv ~/.config/btop/themes/themes ~/.config/btop/themes mv ~/.config/btop/themes/themes ~/.config/btop/themes
**Classification:** `bypasses-shadow(mv)`
### poke ### poke
Synopsis: poke <file> [file...] Synopsis: poke <file> [file...]
@@ -874,6 +904,8 @@ functions). They are active in all interactive sessions.
rg "fish_greeting" ~/.config/fish/ rg "fish_greeting" ~/.config/fish/
rg -l "TODO" ~/projects/myapp rg -l "TODO" ~/projects/myapp
**Classification:** `bypasses-shadow(rg)`
### rm ### rm
Synopsis: rm [-e [options] | -S | args...] Synopsis: rm [-e [options] | -S | args...]
@@ -907,6 +939,8 @@ functions). They are active in all interactive sessions.
rm -e rm -e
rm -S sensitive_key.pem rm -S sensitive_key.pem
**Classification:** `bypasses-shadow(rm)`, `destructive`
### scrub ### scrub
Synopsis: scrub [-a] [-d] [-h] Synopsis: scrub [-a] [-d] [-h]
@@ -931,6 +965,8 @@ functions). They are active in all interactive sessions.
scrub -a scrub -a
scrub -d scrub -d
**Classification:** `uses-shadow(rm)`, `bypasses-shadow(rm)`, `destructive`
## 5.2 Navigation ## 5.2 Navigation
### cdi ### cdi
@@ -1020,6 +1056,8 @@ functions). They are active in all interactive sessions.
edit --editor=code --clipboard edit --editor=code --clipboard
edit --text="hello world" edit --text="hello world"
**Classification:** `bypasses-shadow(rm)`
### fc ### fc
Synopsis: fc [command_prefix] Synopsis: fc [command_prefix]
@@ -1040,6 +1078,8 @@ functions). They are active in all interactive sessions.
fc fc
fc git fc git
**Classification:** `bypasses-shadow(rm)`, `self-limiting(cat)`
### less ### less
Synopsis: less [args...] Synopsis: less [args...]
@@ -1053,6 +1093,8 @@ functions). They are active in all interactive sessions.
Example: Example:
less /var/log/syslog less /var/log/syslog
**Classification:** `bypasses-shadow(cat,less)`
### md ### md
Synopsis: md [-r] [--foreground] [marktext-args...] [FILE...] Synopsis: md [-r] [--foreground] [marktext-args...] [FILE...]
@@ -1096,6 +1138,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `marktext`, `firejail`, `bkg` **Dependencies:** `marktext`, `firejail`, `bkg`
**Classification:** `uses-shadow(mkdir)`
### rawfish ### rawfish
Synopsis: rawfish [args...] Synopsis: rawfish [args...]
@@ -1122,6 +1166,8 @@ functions). They are active in all interactive sessions.
Example: Example:
view /etc/fstab view /etc/fstab
**Classification:** `uses-shadow(less)`
## 5.4 Git and Version Control ## 5.4 Git and Version Control
### auto-pull ### auto-pull
@@ -1207,6 +1253,8 @@ functions). They are active in all interactive sessions.
gi -b -p gi -b -p
gi -s node > .gitignore gi -s node > .gitignore
**Classification:** `self-limiting(grep,cat)`, `network`, `blocking-prompt`
### git-clean ### git-clean
Synopsis: git-clean [-h] [-f] Synopsis: git-clean [-h] [-f]
@@ -1227,6 +1275,8 @@ functions). They are active in all interactive sessions.
git-clean --force git-clean --force
git-clean git-clean
**Classification:** `network`
### gitui ### gitui
Synopsis: gitui [args...] Synopsis: gitui [args...]
@@ -1258,6 +1308,8 @@ functions). They are active in all interactive sessions.
gitup gitup
gitup --all gitup --all
**Classification:** `network`
### hist ### hist
Synopsis: hist Synopsis: hist
@@ -1407,6 +1459,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `_fish_mkdir_p`, `__fish_palette`, `_mkrep_say`, `_mkrep_verbose`, `_mkrep_add_origin`, `_mkrep_default_remote_cmd`, `_mkrep_remote_url`, `_mkrep_repo_exists`, `git` **Dependencies:** `_fish_mkdir_p`, `__fish_palette`, `_mkrep_say`, `_mkrep_verbose`, `_mkrep_add_origin`, `_mkrep_default_remote_cmd`, `_mkrep_remote_url`, `_mkrep_repo_exists`, `git`
**Classification:** `bypasses-shadow(cd)`, `self-limiting(rm)`, `destructive`, `network`
## 5.5 Package Management ## 5.5 Package Management
### cleanup ### cleanup
@@ -1423,6 +1477,8 @@ functions). They are active in all interactive sessions.
Example: Example:
cleanup cleanup
**Classification:** `self-limiting(grep)`
### parur ### parur
Synopsis: parur Synopsis: parur
@@ -1438,6 +1494,8 @@ functions). They are active in all interactive sessions.
Example: Example:
parur parur
**Classification:** `network`
### pkg ### pkg
Synopsis: pkg [-h] [-i|-u] <package> [package...] Synopsis: pkg [-h] [-i|-u] <package> [package...]
@@ -1470,6 +1528,8 @@ functions). They are active in all interactive sessions.
pkg -i ripgrep fd-find pkg -i ripgrep fd-find
pkg -u cowsay pkg -u cowsay
**Classification:** `network`
### search ### search
Synopsis: search [args...] Synopsis: search [args...]
@@ -1487,6 +1547,8 @@ functions). They are active in all interactive sessions.
Example: Example:
search neovim search neovim
**Classification:** `network`
### upgrade ### upgrade
Synopsis: upgrade Synopsis: upgrade
@@ -1501,6 +1563,8 @@ functions). They are active in all interactive sessions.
Example: Example:
upgrade upgrade
**Classification:** `network`
## 5.6 Dependency Management ## 5.6 Dependency Management
### check_fish_deps ### check_fish_deps
@@ -1584,6 +1648,8 @@ functions). They are active in all interactive sessions.
Example: Example:
fzf-update fzf-update
**Classification:** `network`
## 5.7 System and Monitoring ## 5.7 System and Monitoring
### limine-edit ### limine-edit
@@ -1646,6 +1712,8 @@ functions). They are active in all interactive sessions.
sbver sbver
sbver --brief sbver --brief
**Classification:** `self-limiting(grep)`
### screensleep ### screensleep
Synopsis: screensleep Synopsis: screensleep
@@ -1701,6 +1769,8 @@ functions). They are active in all interactive sessions.
Example: Example:
top top
**Classification:** `bypasses-shadow(top)`
## 5.8 Terminal Management ## 5.8 Terminal Management
### bkg ### bkg
@@ -1830,6 +1900,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `tmux`, `screen`, `__jobrunner_sessions` **Dependencies:** `tmux`, `screen`, `__jobrunner_sessions`
**Classification:** `bypasses-shadow(cat,rm)`
**Used by:** `jr` **Used by:** `jr`
### jr ### jr
@@ -1905,6 +1977,8 @@ functions). They are active in all interactive sessions.
Example: Example:
ssh user@host ssh user@host
**Classification:** `bypasses-shadow(ssh)`, `network`
### tab ### tab
Synopsis: tab [args...] Synopsis: tab [args...]
@@ -2032,6 +2106,8 @@ functions). They are active in all interactive sessions.
Example: Example:
gip gip
**Classification:** `network`
### gip4 ### gip4
Synopsis: gip4 Synopsis: gip4
@@ -2044,6 +2120,8 @@ functions). They are active in all interactive sessions.
Example: Example:
gip4 gip4
**Classification:** `network`
### gip6 ### gip6
Synopsis: gip6 Synopsis: gip6
@@ -2061,6 +2139,8 @@ functions). They are active in all interactive sessions.
Example: Example:
gip6 gip6
**Classification:** `network`
### ping ### ping
Synopsis: ping [args...] Synopsis: ping [args...]
@@ -2077,6 +2157,8 @@ functions). They are active in all interactive sessions.
ping google.com ping google.com
ping --legend google.com ping --legend google.com
**Classification:** `bypasses-shadow(ping)`
### qr ### qr
Synopsis: qr [text...] Synopsis: qr [text...]
@@ -2095,6 +2177,8 @@ functions). They are active in all interactive sessions.
qr "https://example.com" qr "https://example.com"
echo "hello" | qr echo "hello" | qr
**Classification:** `self-limiting(cat)`, `network`
## 5.11 Pager and Logging ## 5.11 Pager and Logging
### logs ### logs
@@ -2127,6 +2211,8 @@ functions). They are active in all interactive sessions.
logs logs
logs -c scrollback logs -c scrollback
**Classification:** `bypasses-shadow(cat)`, `self-limiting(rm)`, `network`
### smart_exit ### smart_exit
Synopsis: smart_exit [-h] [-n] Synopsis: smart_exit [-h] [-n]
@@ -2152,6 +2238,8 @@ functions). They are active in all interactive sessions.
smart_exit smart_exit
smart_exit --no-log smart_exit --no-log
**Classification:** `self-limiting(rm,mkdir)`, `destructive`
### sponge_filter_secrets ### sponge_filter_secrets
Synopsis: sponge_filter_secrets <command> <exit_code> <previously_in_history> Synopsis: sponge_filter_secrets <command> <exit_code> <previously_in_history>
@@ -2267,6 +2355,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `_agents_repo_install_tools`, `_agents_repo_sync`, `_agents_init_ensure_gitignore` **Dependencies:** `_agents_repo_install_tools`, `_agents_repo_sync`, `_agents_init_ensure_gitignore`
**Classification:** `self-limiting(rm,mkdir)`, `bypasses-shadow(mv)`
**Used by:** `agy`, `claude` **Used by:** `agy`, `claude`
### agents-vault ### agents-vault
@@ -2448,6 +2538,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `_agents_vault_dir`, `_agents_repo_slug`, `_agents_repo_local_slug`, `_agents_repo_ensure_symlink`, `_agents_repo_sync`, `_agents_repo_install_tools`, `git`, `hostname` **Dependencies:** `_agents_vault_dir`, `_agents_repo_slug`, `_agents_repo_local_slug`, `_agents_repo_ensure_symlink`, `_agents_repo_sync`, `_agents_repo_install_tools`, `git`, `hostname`
**Classification:** `self-limiting(rm,mkdir)`
**Used by:** `agy`, `claude` **Used by:** `agy`, `claude`
### agy ### agy
@@ -2504,6 +2596,8 @@ functions). They are active in all interactive sessions.
Example: Example:
antigravity-ide antigravity-ide
**Classification:** `self-limiting(grep)`
### claude ### claude
Synopsis: claude [ARGS...] Synopsis: claude [ARGS...]
@@ -2538,6 +2632,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `agents-init`, `agents-vault` **Dependencies:** `agents-init`, `agents-vault`
**Classification:** `bypasses-shadow(claude)`
### claude-docs ### claude-docs
Synopsis: claude-docs Synopsis: claude-docs
@@ -2552,6 +2648,8 @@ functions). They are active in all interactive sessions.
Example: Example:
claude-docs claude-docs
**Classification:** `uses-shadow(claude)`
### claude-pr ### claude-pr
Synopsis: claude-pr Synopsis: claude-pr
@@ -2566,6 +2664,8 @@ functions). They are active in all interactive sessions.
Example: Example:
claude-pr claude-pr
**Classification:** `uses-shadow(claude)`
### docker ### docker
Synopsis: docker [subcommand] [args...] Synopsis: docker [subcommand] [args...]
@@ -2660,6 +2760,8 @@ functions). They are active in all interactive sessions.
superpowers on superpowers on
superpowers off -g superpowers off -g
**Classification:** `uses-shadow(claude)`
## 5.13 Media and Utilities ## 5.13 Media and Utilities
### dng2avif ### dng2avif
@@ -2685,6 +2787,8 @@ functions). They are active in all interactive sessions.
dng2avif photo.dng dng2avif photo.dng
dng2avif -q 85 -s 5 -i shot.dng -o out.avif dng2avif -q 85 -s 5 -i shot.dng -o out.avif
**Classification:** `self-limiting(rm)`
### key-crypt ### key-crypt
Synopsis: key-crypt [options] <input> [output] Synopsis: key-crypt [options] <input> [output]
@@ -2732,6 +2836,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `gpg`, `tar` **Dependencies:** `gpg`, `tar`
**Classification:** `bypasses-shadow(rm)`, `destructive`
### play-media ### play-media
Synopsis: play-media [-p|--player <cmd>] Synopsis: play-media [-p|--player <cmd>]
@@ -2821,6 +2927,8 @@ functions). They are active in all interactive sessions.
yt-dlp dQw4w9WgXcQ yt-dlp dQw4w9WgXcQ
yt-dlp --no-embed-thumbnail dQw4w9WgXcQ # drops our thumbnail default yt-dlp --no-embed-thumbnail dQw4w9WgXcQ # drops our thumbnail default
**Classification:** `network`
## 5.14 Miscellaneous ## 5.14 Miscellaneous
### bash ### bash
@@ -2836,6 +2944,8 @@ functions). They are active in all interactive sessions.
Example: Example:
bash bash
**Classification:** `bypasses-shadow(bash)`
### bd-pull ### bd-pull
Synopsis: bd-pull <owner/repo> Synopsis: bd-pull <owner/repo>
@@ -2868,6 +2978,8 @@ functions). They are active in all interactive sessions.
Example: Example:
cffetch cffetch
**Classification:** `uses-shadow(ls)`
### cheat ### cheat
Synopsis: cheat <topic> [args...] Synopsis: cheat <topic> [args...]
@@ -2935,6 +3047,8 @@ functions). They are active in all interactive sessions.
config-help --help config-help --help
config-help pkg --man config-help pkg --man
**Classification:** `self-limiting(grep)`, `bypasses-shadow(less)`
### config-settings ### config-settings
Synopsis: config-settings [-h | --help] Synopsis: config-settings [-h | --help]
@@ -3008,6 +3122,8 @@ functions). They are active in all interactive sessions.
**Dependencies:** `__fish_palette`, `__config_settings_state`, `__config_settings_apply`, `__config_settings_set_value`, `python3` **Dependencies:** `__fish_palette`, `__config_settings_state`, `__config_settings_apply`, `__config_settings_set_value`, `python3`
**Classification:** `bypasses-shadow(rm)`
**Used by:** `config-toggle` **Used by:** `config-toggle`
### config-toggle ### config-toggle
@@ -3069,6 +3185,8 @@ functions). They are active in all interactive sessions.
Example: Example:
dockup ~/myapp dockup ~/myapp
**Classification:** `network`
### ffetch ### ffetch
Synopsis: ffetch [args...] Synopsis: ffetch [args...]
@@ -3082,6 +3200,8 @@ functions). They are active in all interactive sessions.
Example: Example:
ffetch ffetch
**Classification:** `uses-shadow(ls)`
### fzf_configure_bindings ### fzf_configure_bindings
Synopsis: fzf_configure_bindings [--directory=<key>] [--git_log=<key>] [--git_status=<key>] Synopsis: fzf_configure_bindings [--directory=<key>] [--git_log=<key>] [--git_status=<key>]
@@ -3155,6 +3275,8 @@ functions). They are active in all interactive sessions.
kitty-logging install kitty-logging install
kitty-logging status kitty-logging status
**Classification:** `bypasses-shadow(grep,mkdir,rm)`
### ld ### ld
Synopsis: ld Synopsis: ld
@@ -3241,6 +3363,8 @@ functions). They are active in all interactive sessions.
rand_string --case=title color animal --separator=dot digits=4 rand_string --case=title color animal --separator=dot digits=4
rand_string literal=TEST --separator=underscore verb noun rand_string literal=TEST --separator=underscore verb noun
**Classification:** `bypasses-shadow(cat)`
### replay ### replay
Synopsis: replay <commands> Synopsis: replay <commands>
@@ -3260,6 +3384,8 @@ functions). They are active in all interactive sessions.
replay "source ~/.bashrc" replay "source ~/.bashrc"
replay "export FOO=bar" replay "export FOO=bar"
**Classification:** `bypasses-shadow(bash,cd)`
### repo-open ### repo-open
Synopsis: repo-open [-p|--print] [-r|--root] Synopsis: repo-open [-p|--print] [-r|--root]
@@ -3757,7 +3883,6 @@ all of these commands.
rg rg --hyperlink-format=kitty system rg rg rg --hyperlink-format=kitty system rg
mkdir verbose path-tree display on creation mkdir -p silently mkdir verbose path-tree display on creation mkdir -p silently
bash XDG bashrc + $SHELL reset on exit system bash bash XDG bashrc + $SHELL reset on exit system bash
history timestamps prepended to every entry fish builtin history
cp / mv forced -i confirmation prompt cp / mv unmodified cp / mv forced -i confirmation prompt cp / mv unmodified
wget forced --continue (resume downloads) system wget wget forced --continue (resume downloads) system wget
grep/fgrep/egrep forced --color=auto system grep variants grep/fgrep/egrep forced --color=auto system grep variants
@@ -3769,6 +3894,11 @@ all of these commands.
When C1 is disabled, `rm` uses bare `command rm` with no wrapper — files When C1 is disabled, `rm` uses bare `command rm` with no wrapper — files
are permanently deleted, not trashed. There is no intermediate safety net. are permanently deleted, not trashed. There is no intermediate safety net.
`history` itself is never shadowed — every function in this config that
reads history depends on its stock builtin semantics. `pretty-history`
(same `aliases-tricks` toggle) is a separate command that prints history
with a timestamp prepended to every entry.
### Sub-categories ### Sub-categories
`__fish_config_op_aliases` sub-divides into six sub-categories, each with `__fish_config_op_aliases` sub-divides into six sub-categories, each with
@@ -3801,6 +3931,51 @@ and the `help config` interception.
`claude` (`AGENTS.md/CLAUDE.md` auto-linking) and `edit` (multi-editor `claude` (`AGENTS.md/CLAUDE.md` auto-linking) and `edit` (multi-editor
launcher), plus `agy`. launcher), plus `agy`.
### For function authors
Calling one of these names bare from inside your own function means the
override runs whenever C1 (or its sub-category) is on — which may not be
what your function wants: a shadow can change stdout (`cat`'s syntax
highlighting, `mkdir`'s tree display), prompt interactively where none is
expected (`cp`/`mv`'s forced `-i`), or reshape output structurally (`ls`'s
icons/columns, `rg`'s hyperlink markers). If your function's logic depends
on stock behavior, bypass the shadow deterministically, regardless of the
toggle state:
Shadow Bypass Why
─────────────────────────────────────────────────────────────────────────
ls, cat, rm, less, du, command <name> Real external
top, ping, ssh, rg, binaries — a
mkdir, bash, cp, mv, real system command
wget, grep/fgrep/egrep, exists to fall
dir/vdir, claude back to.
cd builtin cd The one true
fish builtin
in this table.
help config __original_help $argv `help` is neither
a builtin nor an
external binary
(embedded in the
fish binary
itself) — see
conf.d/help.fish
for why the
wrapper keeps its
own backup copy.
edit (nothing to bypass to) Purely our own
invention, no
stock command
exists. Call
$EDITOR/$VISUAL
yourself if you
want a plain
editor launch.
A function's own doc header records which of these it depends on: see the
`CLASSIFICATION` label (`uses-shadow(...)` / `bypasses-shadow(...)`),
documented in full at
[`docs/function-classification-schema.md`](https://git.rootiest.dev/rootiest/fish-config/src/branch/main/docs/function-classification-schema.md).
## C2 — Startup Side-Effects ## C2 — Startup Side-Effects
These run automatically without any user action. Disabling These run automatically without any user action. Disabling
@@ -110,5 +110,5 @@ toggle state:
A function's own doc header records which of these it depends on: see the A function's own doc header records which of these it depends on: see the
`CLASSIFICATION` label (`uses-shadow(...)` / `bypasses-shadow(...)`), `CLASSIFICATION` label (`uses-shadow(...)` / `bypasses-shadow(...)`),
documented in full at documented in full at
[`docs/function-classification-schema.md`](../../function-classification-schema.md). [`docs/function-classification-schema.md`](https://git.rootiest.dev/rootiest/fish-config/src/branch/main/docs/function-classification-schema.md).
+2 -2
View File
@@ -20,7 +20,7 @@
# having no backup at all. # having no backup at all.
# #
# When <link> is an existing real directory, its contents are copied into # When <link> is an existing real directory, its contents are copied into
# <target> without clobbering (cp -n) before the directory is replaced by # <target> without clobbering (cp --update=none) before the directory is replaced by
# the link, so adopting a populated live directory never overwrites the # the link, so adopting a populated live directory never overwrites the
# copy already in the vault. # copy already in the vault.
# #
@@ -60,7 +60,7 @@ function _agents_repo_ensure_symlink --argument-names link target
else if test -d "$link" else if test -d "$link"
set -l contents (command ls -A "$link" 2>/dev/null) set -l contents (command ls -A "$link" 2>/dev/null)
if test (count $contents) -gt 0 if test (count $contents) -gt 0
command cp -rn "$link/." "$target/"; or return 1 command cp -r --update=none "$link/." "$target/"; or return 1
end end
rm -rf "$link"; or return 1 rm -rf "$link"; or return 1
else if test -e "$link" else if test -e "$link"
+2 -2
View File
@@ -354,7 +354,7 @@ function agents-init --description 'scaffold AGENTS/ sub-repo with agent spec fi
set -l rel (string replace "$root/" "" "$src") set -l rel (string replace "$root/" "" "$src")
set -l contents (command ls -A "$src" 2>/dev/null) set -l contents (command ls -A "$src" 2>/dev/null)
if test (count $contents) -gt 0 if test (count $contents) -gt 0
if not command cp -rn "$src/." "$canonical/" if not command cp -r --update=none "$src/." "$canonical/"
echo "$c_err""Error: could not merge $rel → AGENTS/$tgt$c_reset" >&2 echo "$c_err""Error: could not merge $rel → AGENTS/$tgt$c_reset" >&2
return 1 return 1
end end
@@ -437,7 +437,7 @@ function agents-init --description 'scaffold AGENTS/ sub-repo with agent spec fi
test -d "$devlogs_dir"; or mkdir -p "$devlogs_dir" test -d "$devlogs_dir"; or mkdir -p "$devlogs_dir"
set -l contents (command ls -A "$docs_devlogs" 2>/dev/null) set -l contents (command ls -A "$docs_devlogs" 2>/dev/null)
if test (count $contents) -gt 0 if test (count $contents) -gt 0
if not command cp -rn "$docs_devlogs/." "$devlogs_dir/" if not command cp -r --update=none "$docs_devlogs/." "$devlogs_dir/"
echo "$c_err""Error: could not copy docs/devlogs → AGENTS/devlogs$c_reset" >&2 echo "$c_err""Error: could not copy docs/devlogs → AGENTS/devlogs$c_reset" >&2
return 1 return 1
end end
+1 -1
View File
@@ -893,7 +893,7 @@ function agents-vault --description 'track curated agent memory in a host-scoped
if test -n "$stash" if test -n "$stash"
test -f "$stash/origin" test -f "$stash/origin"
and command cat "$stash/origin" >>"$entry/origin" 2>/dev/null and command cat "$stash/origin" >>"$entry/origin" 2>/dev/null
command cp -rn "$stash/." "$entry/" 2>/dev/null command cp -r --update=none "$stash/." "$entry/" 2>/dev/null
rm -rf "$stash" rm -rf "$stash"
end end
printf 'renamed: %s → %s (%s)\n' "$prev_slug" "$slug" (date -I) >>"$entry/origin" printf 'renamed: %s → %s (%s)\n' "$prev_slug" "$slug" (date -I) >>"$entry/origin"