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.
Create, list, update, complete, tag, and search macOS Reminders via the rem CLI.
$ npx skills add BRO3886/rem --skill rem-cli -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install BRO3886/rem rem-cli --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/BRO3886/rem.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/rem-cli .claude/skills/rem-cli && 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 "rem-cli" agent skill from https://github.com/BRO3886/rem/tree/main/skills/rem-cli into .claude/skills/rem-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rem-cli", 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/BRO3886/rem/tree/main/skills/rem-cliType 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 BRO3886/rem --skill rem-cli -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install BRO3886/rem rem-cli --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BRO3886/rem.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/rem-cli .agents/skills/rem-cli && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rem-cli" agent skill from https://github.com/BRO3886/rem/tree/main/skills/rem-cli into .agents/skills/rem-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rem-cli", 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 BRO3886/rem --skill rem-cli -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install BRO3886/rem rem-cli --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BRO3886/rem.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/rem-cli .cursor/skills/rem-cli && 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 "rem-cli" agent skill from https://github.com/BRO3886/rem/tree/main/skills/rem-cli into .cursor/skills/rem-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rem-cli", 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/BRO3886/rem.git --path skills/rem-cli--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 BRO3886/rem --skill rem-cli -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install BRO3886/rem rem-cli --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BRO3886/rem.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/rem-cli .gemini/skills/rem-cli && 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 "rem-cli" agent skill from https://github.com/BRO3886/rem/tree/main/skills/rem-cli into .gemini/skills/rem-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rem-cli", 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 BRO3886/rem rem-cliInstalls 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 BRO3886/rem --skill rem-cli -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/BRO3886/rem.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/rem-cli .github/skills/rem-cli && 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 "rem-cli" agent skill from https://github.com/BRO3886/rem/tree/main/skills/rem-cli into .github/skills/rem-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rem-cli", 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 BRO3886/rem --skill rem-cli -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install BRO3886/rem rem-cli --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/BRO3886/rem.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/rem-cli .opencode/skills/rem-cli && 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 "rem-cli" agent skill from https://github.com/BRO3886/rem/tree/main/skills/rem-cli into .opencode/skills/rem-cli/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rem-cli", 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.
rem-cliCreate, list, update, complete, tag, and search macOS Reminders via the rem CLI.
Rem CLI is an agent skill from BRO3886/rem. Create, list, update, complete, tag, and search macOS Reminders via the rem CLI. Use when the user wants to manage Apple Reminders from the terminal, automate reminder workflows, reference reminders in shell scripts, or schedule anything on macOS.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/commands.md` and `references/dates.md`). Compatibility notes: Requires macOS with the rem CLI installed (https://rem.sidv.dev)
It sits in Development, covering Shell scripting. It works with macOS. The repository describes itself as: A powerful ai-native CLI tool for macOS Reminders app. The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d42eb14. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(rem *)Bash(echo *)From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom 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.
Requires macOS with the rem CLI installed (https://rem.sidv.dev)
From compatibility in the SKILL.md frontmatter.
Rem CLI loads about 3.1k tokens when it runs, and up to ~7.5k if it reads all its reference files. Until then it costs about 64 tokens; SKILL.md has 1,621 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 BRO3886/rem at commit d42eb14, republished under its MIT licence (© BRO3886). 1,621 words, ~3,099 tokens.
.claude/skills/rem-cli/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.rem is a single-binary Go CLI that reads and writes the Apple Reminders database in under 200ms via EventKit (cgo). Every rem invocation is fast and safe to run.
date +"%A, %B %-d, %Y"date +"%Y-%m-%d"date +"%H:%M %Z"date +"%A"date -v+1d +"%Y-%m-%d"date -v+1d -v+fri +"%Y-%m-%d"When the user says relative dates like "tomorrow", "next friday", "end of week", or "last tuesday", resolve them against the values above before calling rem. Don't ask the user "what is today" and don't guess from training data.
rem's --due flag accepts natural language directly (see references/dates.md), so in many cases you can pass the user's phrase through verbatim. But if the user asks something ambiguous ("what was I supposed to do yesterday?"), use the ISO date above and query rem with --due-before / --due-after against an exact date.
Use rem any time the user wants to:
Do NOT use rem for:
ical if available, or AppleScript with Calendar.app)| User intent | Command to reach for |
|---|---|
| "what's on my plate" / "today" / "what's overdue" | rem today, rem overdue, rem upcoming --days N |
| "remind me to X (tomorrow / friday / etc)" | rem add "X" --due <date> |
| "remind me about X at Y time" | rem add "X" --due "<date> <time>" — notification is automatic |
| "remind me 15 minutes before" | add --remind-me 15m to rem add |
| "make that one silent / no notification" | add --silent to rem add (not available in -i mode, see gotchas) |
| "tell me more about X" / "show that reminder" | rem show <short-id> |
| "mark X as done" / "mark these done" | rem complete <short-id>... (supports multiple IDs) |
| "undo that / mark X as not done" | rem uncomplete <short-id>... (supports multiple IDs) |
| "delete X" | rem delete <short-id>... (supports multiple IDs) |
| "find reminders about X" | rem search "X" |
| "flag / unflag X" | rem flag <short-id>... or rem unflag <short-id>... (supports multiple IDs) |
| "show me flagged stuff" | rem list --flagged |
| "move X to list Y" | rem update <short-id> --list "Y" (if Y or source is shared: confirm with user first, then -f — see gotchas) |
| "change priority to high" | rem update <short-id> --priority high |
| "add notes to X" | rem update <short-id> --notes "..." |
| "tag this as work" / "add tags" | rem add "Task #work" or rem update <short-id> --add-tags "work,urgent" |
| "remove the urgent tag" | rem update <short-id> --remove-tags "urgent" |
| "make it repeat weekly / monthly" | rem add ... --repeat weekly or --repeat "weekly on mon,wed,fri" |
| "remind me when I get to / leave X" | rem add "..." --location "lat,lng" (+ --on-leave for departure) — see location section |
| "clear the due date on X" | rem update <short-id> --due none |
| "what lists do I have" | rem lists (add --count for per-list totals) |
| "how many reminders total / stats" | rem stats |
| "export my Work list" | rem export --list Work --format json --output-file work.json |
| "import this CSV" | rem import file.csv --dry-run first, then without |
For full flag details on any command, load references/commands.md.
Every rem invocation is <200ms, so the expensive part is YOUR round trip, not the command. Two rules:
complete, uncomplete, flag, unflag, and delete all accept multiple IDs: rem complete AB12 CD34 EF56. Never loop one ID per call.; and header markers in a single Bash invocation — never run them as separate tool calls. See the daily briefing pattern below.Every read command supports -o table|json|plain. Default is table (colored ASCII). When piping to another tool, into a script, or when you need to parse the result, use -o json:
rem today -o json | jq '.[] | .name'
rem overdue -o json | jq 'length'
rem list --incomplete --list Work -o jsonNO_COLOR=1 disables colors. REM_NO_UPDATE_CHECK=1 disables the background update check (set it when scripting to avoid stray output).
rem displays the first 8 characters of each reminder's UUID as its "short ID" (e.g. AB12CD34). You can pass any unique prefix to commands — rem complete AB1 works as long as it matches exactly one reminder. Prefer short IDs when showing reminder IDs back to the user.
When --due is set on rem add, rem auto-attaches an alarm at the due time. This matches Apple Reminders.app behavior. Do NOT pass --remind-me 0m to enable notifications — that's already the default when --due is set.
rem add "Review PR" --due tomorrow → notifies at tomorrow 9 AM (default due time)rem add "Review PR" --due "tomorrow 2pm" --remind-me 15m → notifies 15 minutes beforerem add "Groceries" --due tomorrow --silent → due date, no notification (checklist-style)Full detail: references/commands.md rem add section.
--location "lat,lng" attaches a geofence trigger that fires on arrival by default; add --on-leave for departure, --radius <meters> to widen the fence (0 = system minimum). rem does NO geocoding — you must supply decimal coordinates:
rem add "Buy milk" --location "37.3318,-122.0312" --radius 200 # on arrival
rem update AB12 --location "37.7749,-122.4194" --on-leave # on departure
rem update AB12 --location none # remove geofence onlyA reminder can have both a due date and a location. --remind-me and --location manage separate alarm buckets — clearing one never touches the other.
When the user wants a link attached to a reminder, pass it via --url. rem writes to the real Reminders.app URL field (not the notes body), so the link shows in the Reminders.app UI with Apple's native link card rendering. Clear a URL with --url "".
rem add "Review spec" --due friday --url https://example.com/spec.pdf
rem update AB12 --url https://github.com/org/repo/pull/42
rem update AB12 --url "" # clear--priority high|medium|low|none. rem does accept raw ints, but Apple's 1–9 scale is inverted (1 = highest, 9 = lowest), so the words are safer when relaying from user input.--due none clears the due date in rem update. Same for --remind-me none and --repeat none.flag/unflag too, which behave exactly like update --flagged.#hashtags in the title are parsed and stored as native Reminders.app tags. They stay in the title text AND become tag objects. Pure numbers like #42 are ignored (treated as issue references, not tags).rem delete prompts by default. Pass --force / --yes / -f / -y when scripting to skip the confirmation.rem add -i (interactive form) has no --silent equivalent. If a user wants a silent reminder via the interactive flow, create it then clear the alarm in the same Bash call: id=$(rem add "Task" --due tomorrow -o json | jq -r '.id'); rem update "$id" --remind-me none.URL: https://...) still read correctly as a backward-compat fallback. New reminders always use the native URL field.-y, rem update --list blocks on a confirmation you cannot answer (TTY prompt; non-TTY it errors). Procedure for a move involving a shared list:rem lists -o json | jq -r '.[] | select(.IsShared) | .Name' — if neither source nor target list is in that output, move normally, no flag needed.-y; the prompt exists to protect their data on a list other people see.rem update <id> --list "Shared List" -f.rem list --list "Shared List" -o json (the stderr warning also prints it).--due, --due-before, --due-after, and --remind-me. Load when constructing a date string from a user's phrasing.echo "== OVERDUE =="; rem overdue -o plain; echo "== TODAY =="; rem today -o plain; echo "== NEXT 3 DAYS =="; rem upcoming --days 3 -o plainChain with plain ; (no { } subshell grouping, no $(...) substitution) — permission allowlists check each ;-separated segment, and rem/echo are pre-approved by this skill.
# Archive completed Work items to a JSON backup
rem export --list Work --format json --output-file work-$(date +%Y%m%d).json
# Count overdue items
rem overdue -o json | jq 'length'When the user says something like "remind me to call mom tomorrow at 5pm", parse the title, due date, and list (if mentioned) and run a single rem add:
rem add "Call mom" --due "tomorrow at 5pm" --list PersonalAlways confirm the short ID of the created reminder back to the user so they can reference it later.
© BRO3886, MIT. 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 2 other files (references) in skills/rem-cli of BRO3886/rem.
Open the folder on GitHubat commit d42eb14
Rem CLI 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 |
|---|---|---|---|---|---|---|
| Rem CLI this skillBRO3886/rem | 154 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Mole Bug Patternstw93/Mole | 69k | — | ~2k | Automated safety check: Pass | GPL-3.0 | |
| Shell Toolingowent/libatbus | 234 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Os Scriptingaiskillstore/marketplace | 430 | 3 repos | ~2.2k | Automated safety check: Notes | None | |
| New Mac Setupswyxio/skills | 172 | — | ~4.3k | Automated safety check: Pass | MIT | |
| macOS Intune Baselinevinayaklatthe/microsoft-security-skills | 175 | — | ~2.4k | Automated safety check: Pass | MIT |
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.
owent/libatbus
A skill your agent uses when: running terminal commands, writing or debugging shell/PowerShell scripts, choosing or installing CLI tools, or diagnosing command failures, quoting/escaping errors, or…
aiskillstore/marketplace
Operating system and shell scripting troubleshooting workflow for Linux, macOS, and Windows.
swyxio/skills
Fully automated new Mac setup for fullstack web developers and AI engineers.
vinayaklatthe/microsoft-security-skills
Guidance for hardening macOS endpoints managed by Microsoft Intune — automated device enrollment via Apple Business Manager (ABM), platform single sign-on (PSSO) with Entra ID, FileVault disk…
tw93/Mole
Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.
Works with
Categories
Create, list, update, complete, tag, and search macOS Reminders via the rem CLI. Rem CLI is an agent skill from BRO3886/rem. Create, list, update, complete, tag, and search macOS Reminders via the rem CLI.
Rem CLI fits situations like: the user wants to manage Apple Reminders from the terminal; automate reminder workflows; reference reminders in shell scripts; schedule anything on macOS.
Run `npx skills add BRO3886/rem --skill rem-cli -a claude-code`. Or copy the skill folder (skills/rem-cli in BRO3886/rem) into .claude/skills/rem-cli in your project. Claude Code loads it when a task matches its description.
Run `npx skills add BRO3886/rem --skill rem-cli -a codex`. Or copy the skill folder (skills/rem-cli in BRO3886/rem) into .agents/skills/rem-cli 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 BRO3886/rem --skill rem-cli -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rem-cli, .gemini/skills/rem-cli, .github/skills/rem-cli and .opencode/skills/rem-cli in your project.
Going by SKILL.md and its folder, Rem CLI needs the command-line tools its instructions call (jq). Its frontmatter pre-approves these tools: Bash(rem *), Bash(echo *). Compatibility (from SKILL.md): Requires macOS with the rem CLI installed (https://rem.sidv.dev).
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. 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.
Rem CLI is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k 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 4.4k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Rem CLI: Mole Bug Patterns (tw93/Mole, 69k stars), Shell Tooling (owent/libatbus, 234 stars), Os Scripting (aiskillstore/marketplace, 430 stars) and New Mac Setup (swyxio/skills, 172 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
BRO3886 (a GitHub user) maintains it in BRO3886/rem, which has 154 GitHub stars. The repository was last updated on June 24, 2026.
Source: BRO3886/rem on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.