Personal Arsenal
- Shell 85.5%
- Nim 10.1%
- Python 4.2%
- Makefile 0.2%
Small Bash Scripts
Code Design
The scripts follows a set of rules:
- CLI help and arg count requirement by
sbs-help. - Dependency enforcement by
sbs-deps. - Help texts are written in Org Mode. See
sbs-help -
Bash conventions
- Variables and functions in
snake_case. - Always fail-fast for explicit error handling (
set -e) - Declare the args as variables immediately, no positional argument (
1ドル) usage across script.
- Variables and functions in
Script template:
#!/usr/bin/env bash
# my-new-script - Quick description (mandatory, Org Mode used by sbs-help)
# This script is a sample and this line is included in help's description block.
# Also this line
# But not this line
set -e # (mandatory)
sbs-help "0ドル" '<my-mandatory-arg> [my-optional-arg default=test]' 1 "$@"
sbs-deps git --soft curl # (list all required binaries. after --soft means the script work with caveats, execution continues with a warning)
my_mandatory_arg="1ドル"
my_optional_arg="${2:-test}"
# ...
Self Documentation
-
Last update
2026年07月01日T10:10:50-03:00 - addorgnote (4 commits; 53 lines)
- Create notes on the Emacs clocked task via CLI
- annasarchive-yaml (6 commits; 43 lines) Demo asciicast (5 commits behind)
- Given a URL, creates a YAML file in this format.
- asciicastsplay (8 commits; 37 lines)
- Plays a recorded asciicast stored in Git repo index by commit hash.
- asciinemaexplore (10 commits; 69 lines) Demo asciicast (9 commits behind)
- Scrapes https://asciinema.org explore page to JSON
- caststats.nim (15 commits; 80 lines) Demo asciicast (2 commits behind)
- Stats about a asciicast.
- catscr (10 commits; 17 lines) Demo asciicast (5 commits behind)
- Prints the screen screenshot as text in the terminal
- chajson (12 commits; 34 lines) Demo asciicast (10 commits behind)
- Read JSON in Chawan to click on links
- chak (12 commits; 20 lines) Demo asciicast (7 commits behind)
- You accidentally pressed
q, select from Chawan history and go back to your browsing. - chaq (18 commits; 56 lines) Demo asciicast (8 commits behind)
- Chawan query: helper to easily search with Chawan
- chas (18 commits; 92 lines) Demo asciicast (16 commits behind)
- Save Chawan page as rendered ANSI
- chasdiscoursethread (4 commits; 31 lines) Demo asciicast (2 commits behind)
- Iterate
chasover all pages of a discourse threads - claudeusage (8 commits; 35 lines) Demo asciicast (7 commits behind)
- See how fast you eat your tokens.
- confirm (6 commits; 33 lines)
- Drop-in replacement for
gum confirm. - curldiff (6 commits; 43 lines) Demo asciicast (4 commits behind)
- Fetches twice and compare
- curtask (19 commits; 13 lines) Demo asciicast (4 commits behind)
- Returns the ID of the current clocked Org node
- ddglite (8 commits; 49 lines) Demo asciicast (6 commits behind)
- Parses DuckDuckGo Lite search into JSON
- decolor (5 commits; 18 lines)
- Strip ANSI escape codes
- demoji (3 commits; 17 lines)
- Strip emoji and pictographs from text
- discoursesearch (10 commits; 47 lines) Demo asciicast (8 commits behind)
- Searches in a Discorse instance through internal API
- dumpjiraxml (6 commits; 31 lines)
- Fetches Jira issues and writes to a file
- dumpytvideo (7 commits; 85 lines)
- Downloads a YouTube video with all its metadata
- dupefiles (11 commits; 28 lines) Demo asciicast (10 commits behind)
- Ineffective recursive duplicated files finder
- epub2org (7 commits; 54 lines)
- Unpacks EPUB, recurse its HTML files and packs into a single Org file.
- exportslack (7 commits; 109 lines)
- Runs
slackdump, fetch huddles transcripts and slackbot canvases on the provided workspace available onpass'sslack/path. - forgejosearch (7 commits; 49 lines)
- Search in Forgejo instances via API
- fsmps (4 commits; 45 lines)
- Loops each second showing the file/dir stats with size comparison
- gcl (16 commits; 33 lines) Demo asciicast (11 commits behind)
- Batch
git clonethat saves at${OWNER}-${REPO}instead${REPO}, fetches other refs and setups user for Magit Forge. - gcl-gh (6 commits; 31 lines)
- Clone all repos from a GitHub user
- gcl-search-fj (4 commits; 44 lines)
- Searches at Forgejo and clones search results
- getapkpure (4 commits; 18 lines)
- Fetches an APK from apkpure
- getorgnode (24 commits; 63 lines)
- Get Org Node by ID via CLI
- ghfetchcodereviews (4 commits; 62 lines)
- Fetch all PR review comments for a GitHub repo
- ghlastrunjob (6 commits; 16 lines)
- Laziness alias to see last run via
ghCLI - git-file-versions (7 commits; 34 lines) Demo asciicast (3 commits behind)
- Dumps all revisions of a Git tracked file to a dir.
- git-gc (8 commits; 22 lines) Demo asciicast (3 commits behind)
- Convenience script for
git gcwith a size comparison from before and after the GC. - git-set-branch-to-hostname (9 commits; 35 lines) Demo asciicast (5 commits behind)
- Sets the branch of the current Git repo to the system hostname
- goinstallddgresult (9 commits; 32 lines) Demo asciicast (5 commits behind)
- Search a Go package and install it without the need to remember the Git repo
- guixpackagesearch (7 commits; 57 lines) Demo asciicast (6 commits behind)
- Searches on https://packages.guix.gnu.org and parses HTML.
- hnhiring (1 commits; 110 lines)
- Fetch HN "Who is hiring?" thread, rank jobs, emit JSON array
- invertclipboard (8 commits; 25 lines)
- Exchanges
xclipcontent fromprimaryintoclipboardand vice-versa. Pro tip: Use atmuxkeybind. - kiwixjsoncatalog (5 commits; 22 lines)
- Converts
library-zim.xmlto JSONL. No streaming, dumps to stdout, inefficient. - muextractfiles (4 commits; 16 lines)
- Lazy script to search term and extracts its files.
- nanoasciicastaterror (4 commits; 17 lines)
- Edits the current
recactioncast at its corrupted line. - nsla (7 commits; 45 lines) Demo asciicast (4 commits behind)
- traNSLAte: Libre Translate CLI client
- ocrclipimg (6 commits; 11 lines)
- Alias to get text from clipboard image using Tesseract OCR
- pandocrecursive (1 commits; 19 lines)
- Recurse files converting with
pandoc - passaws (7 commits; 18 lines)
- Run AWS CLI with a
passdirectory. - prompt (8 commits; 63 lines)
- Replacing
gumbyfzfwith even more UX. (But less DX) - qrclipimg (3 commits; 11 lines)
- Decodes clipboard QR Code image to text
- qvm-copy-git-bundle (7 commits; 75 lines)
- Generates Git bundles including all branches of multiple repos and moves to another qube
- qvm-move-git-bundle (1 commits; 24 lines)
- Runs /thisago/smallBashScripts/src/branch/master/qvm-copy-git-bundle and deletes the repos on success.
- recact (46 commits; 336 lines)
- Intention driven terminal session recordings
- recaction (16 commits; 61 lines)
- Convenience script for calling
recact - recdemo (11 commits; 28 lines)
- Records a asciicast with pre-configured visuals.
- recloop (26 commits; 94 lines)
- Waits RET to record a session on a specific command, execute a post script and loops it again
- resolveenv (9 commits; 59 lines) Demo asciicast (4 commits behind)
- Preprocess a .env file by resolving
passcalls. - restclient (30 commits; 216 lines) Demo asciicast (9 commits behind)
- Runs Emacs
restclient.elfrom CLI - rewind (11 commits; 81 lines)
- Watch the last lines of your terminal again, and again. (Supports search and arbitrary cast file)
- rmunamedimages (3 commits; 14 lines)
- Deletes OCI images named
<none> - safeopencode (20 commits; 89 lines) Demo asciicast (14 commits behind)
- Runs
opencodeinside a Guix Shell container for file system isolation - savebrowsing (13 commits; 45 lines)
- Commits browser-user repo
- sbs-deps (1 commits; 21 lines)
- [internal] Require binaries from PATH
- sbs-help (3 commits; 78 lines)
[internal]Convenience importing script to generate help texts. Returns error if shouldn't run- sbs-helper-git-repo-p (2 commits; 17 lines)
[internal]Is this a Git repo?- sbs-helper-qubes-p (2 commits; 13 lines)
- No description yet
- site2org (7 commits; 33 lines)
- Fetches a HTML page with
wgetand converts into Org withpandoc. - sqlite2json (5 commits; 33 lines)
- Dumps all SQLite tables into JSON files
- termshot (16 commits; 53 lines) Demo asciicast (12 commits behind)
- Dumps current
tmuxpane, converts to SVG and commits. Tip: Use a keybind. - termshotpdf (3 commits; 22 lines)
- Saves PDF as ansi termshot
- textarea (6 commits; 26 lines) Demo asciicast (3 commits behind)
- Opens
$EDITORat provided file and strips the comments. - timestampsjsonlstats.nim (6 commits; 107 lines)
- Stats from timestamps.jsonl generated by
recact(Unusable yet) - txtfix (7 commits; 53 lines) Demo asciicast (3 commits behind)
- Translate to a language then translate it back to "fix" the text using Libre Translate
- viewansi (9 commits; 42 lines)
- Select and read previously saved ANSI shots from
termshotandchas. - viewawslogs (4 commits; 26 lines)
- Interactively read CloudWatch logs (Nice for noobs!)
- viewghcodereviews (3 commits; 39 lines)
- Render saved PR review JSON files as readable text
- viewslackchat (4 commits; 20 lines)
- Read export JSONs in Markown
- viewslackmedia (7 commits; 40 lines)
- Fetch raw file URL via emacs-slack and pipe to with mpv
- viewslacktranscript (9 commits; 34 lines)
- Formats a Slack Huddle transcript into readable Markdown and reads with
batpager - viewwebpagemedia (9 commits; 23 lines) Demo asciicast (6 commits behind)
- Select a media URL from a HTML page and play with
mpv - wanna4get.nim (5 commits; 83 lines) Demo asciicast (1 commits behind)
- Wanna 4get instances? Without captcha? Let's see.
- webpagejsons (5 commits; 107 lines)
- Extract JSON blobs from a web page as minified JSONL.
- webpageurls (14 commits; 32 lines) Demo asciicast (11 commits behind)
- Greps URLs inside a web page
- wgetrecursesite (6 commits; 50 lines) Demo asciicast (5 commits behind)
- Mirror a website