Skip to content
Back to skills

Macos Rules

ASecurity

macOS-specific patterns: launchd agent configuration, brew vs pip, zsh regex quirks, file descriptor limits.

  • 5 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
ai-agentspythonshellbashtesting

Works with

  • terminal
  • cli

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 4, 2026

npx -y skills add juan294/cc-rpi --skill macos-rules --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Macos Rules?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Macos Rules
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/juan294-macos-rules/badge)](https://www.skillsdirectory.com/skills/juan294-macos-rules)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "macos-rules"
description: "macOS-specific patterns: launchd agent configuration, brew vs pip, zsh regex quirks, file descriptor limits."
---

# macOS Development

## pip on macOS

Wrong -- system pip blocked on Python 3.12+ (PEP 668):

```bash
pip3 install some-tool  # externally-managed-environment
```

Right -- use Homebrew or pipx:

```bash
brew install some-tool
pipx install some-python-app
```

## zsh Regex and Special Characters

Shell quoting and executable capabilities are separate. Single-quoted
patterns pass literally to bash and zsh. macOS BSD grep does not support
`-P`; wrapping it in `bash -c` does not add PCRE support.

For JSON, parse JSON:

```bash
python3 -c 'import json; print(json.load(open("package.json"))["version"])'
```

For plain text use `rg`, a supported `grep -E` pattern, or Python `re`.
Discover which executable is installed and check its help before using
nonportable flags. Use a script for complex parsing.

## launchd Agent Configuration

Historical sessions reported a location-dependent Claude CLI failure under
launchd, with an unrecorded client version. That observation does not establish
that all direct script launches crash or that current clients need a wrapper.
For a reproduced failure, capture client/macOS versions, arguments, cwd,
resource limits and sanitized logs before selecting a workaround.

The following is the historical wrapper recipe; choose limits and environment
from the actual job requirements rather than treating these numbers as native
minimums. Installing or starting a scheduled job is an explicit opt-in.

Historical wrapper, resource-limit and environment example:

```xml
<key>ProgramArguments</key>
<array>
  <string>/bin/bash</string>
  <string>-c</string>
  <string>exec /bin/bash /project/scripts/agent.sh</string>
</array>
<key>HardResourceLimits</key>
<dict><key>NumberOfFiles</key><integer>122880</integer></dict>
<key>SoftResourceLimits</key>
<dict><key>NumberOfFiles</key><integer>122880</integer></dict>
<key>EnvironmentVariables</key>
<dict>
  <key>HOME</key><string>/Users/you</string>
  <key>TERM</key><string>xterm-256color</string>
  <key>PATH</key><string>/usr/local/bin:/usr/bin:/bin</string>
</dict>
```

Scheduled jobs need authentication that works without interactive prompts.
Inspect the installed client's supported authentication setup; a previously
configured session may already work. `claude setup-token` is one supported
setup route, not proof that every job must create a new token. Never print
credentials or launch an inference probe without the relevant authorization.

## launchd Testing

Terminal execution alone does not verify the scheduler environment:

```bash
./scripts/agent.sh  # works in terminal, fails silently under launchd
```

For an explicitly authorized scheduled-job test, inspect launchctl and logs:

```bash
launchctl start com.yourorg.agent
launchctl list | grep yourorg  # exit code shows 0 even on crash -- check logs, not just this
```

A historical failure returned zero despite an error. Check job logs and the
expected output as well as status; a successful launch request is not evidence
that the agent task completed.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…