safe-uninstall
This skill should be used when the user asks to "remove program", "uninstall app", "delete daemon", "clean up process", "safe uninstall", "find resource hog", "what is this process", "remove bloatware", "kill daemon", "remove LaunchDaemon", "remove security program", "Activity Monitor finding", "high memory process", or wants to safely identify and remove macOS programs and daemons. Also triggers when the user mentions high memory/CPU usage by unknown processes, Activity Monitor concerns, unwanted LaunchDaemons/Agents, or Korean banking security programs (TouchEn, AhnLab, Veraport, INISAFE, CrossEX). Use this skill even when the user simply provides a process name and wants it gone, or describes a process consuming excessive resources they want to investigate.
What this skill does
# Safe Uninstall Safely identify, investigate, and remove macOS programs through a structured workflow: target identification, comprehensive investigation, removal approach selection, risk-assessed execution, and verification. ## Dependency This skill delegates execution of irreversible operations (file deletion, service removal) to **Prosoche** (`/attend`). The epistemic-protocols plugin must be installed for safe execution gating. ## Workflow Overview ``` Target Identification → Investigation → Report → Approach Selection → /attend Execution → Verification ``` ## Phase 1: Target Identification Support two entry points depending on user context. ### A. Resource Scan When the user reports high resource usage, unknown processes, or Activity Monitor concerns, start with a resource scan to identify the target: 1. Scan top processes by memory and CPU: ```bash ps aux --sort=-%mem | head -20 ps aux --sort=-%cpu | head -20 ``` 2. Present non-system processes consuming significant resources (filter out kernel_task, WindowServer, and other known macOS system processes) 3. For unknown processes, gather identification signals: ```bash codesign -dv --verbose=2 <binary_path> 2>&1 # vendor identity ``` 4. User selects target process for investigation ### B. Direct Specification When the user names a specific process or program, confirm the target and derive search patterns (see `references/investigation-paths.md` for pattern derivation). ## Phase 2: Comprehensive Investigation Delegate investigation to a subagent for efficient parallel execution. Derive multiple search patterns from the target: binary path components, process name, vendor name, product name. Use case-insensitive grep across ALL locations. ### Investigation Checklist Every investigation must cover all of these (no shortcuts): | Category | Command Pattern | |----------|----------------| | Running processes | `ps aux \| grep -i -E "<patterns>"` | | LaunchDaemons | `ls /Library/LaunchDaemons/ \| grep -i -E "<patterns>"` | | LaunchAgents (system) | `ls /Library/LaunchAgents/ \| grep -i -E "<patterns>"` | | LaunchAgents (user) | `ls ~/Library/LaunchAgents/ \| grep -i -E "<patterns>"` | | Application Support | `ls "/Library/Application Support/" \| grep -i -E "<patterns>"` | | Applications | `ls /Applications/ \| grep -i -E "<patterns>"` | | Kernel Extensions | `ls /Library/Extensions/ \| grep -i -E "<patterns>"` | | System Extensions | `ls /Library/SystemExtensions/ \| grep -i -E "<patterns>"` | | Privileged Helpers | `ls /Library/PrivilegedHelperTools/ \| grep -i -E "<patterns>"` | | Browser Plugins | `ls "/Library/Internet Plug-Ins/" \| grep -i -E "<patterns>"` | | Login Items | `osascript -e 'tell application "System Events" to get the name of every login item'` | | Package Receipts | `pkgutil --pkgs \| grep -i -E "<patterns>"` | | Uninstaller search | `find /Applications -iname "*uninstall*" \| grep -i -E "<patterns>"` | For each LaunchDaemon/Agent plist found, **read it** to extract KeepAlive, RunAtLoad, and Program properties — these determine the removal strategy. Also check for companion frameworks in sibling Application Support directories (see `references/investigation-paths.md` for known companion patterns). ## Phase 3: Report Present findings as a structured report so the user can make an informed decision. **Template:** ``` ## [Program Name] — Investigation Report **Running Processes:** | PID | User | %MEM | %CPU | Binary Path | |-----|------|------|------|-------------| **LaunchDaemons/Agents (KeepAlive services respawn after kill):** | plist Path | KeepAlive | RunAtLoad | |------------|-----------|-----------| **Installed Files:** | Category | Path | Notes | |----------|------|-------| **Uninstaller:** [path or "Not found"] **Package Receipts:** [list or "None"] **Companion Frameworks:** [list or "None"] ``` ## Phase 4: Removal Approach Selection Present options based on findings: 1. **Official Uninstaller** (when found) — Run first, then verify and clean up leftovers. The vendor understands their own installation layout best. 2. **Manual Removal** — Direct removal of all identified components. Appropriate when no uninstaller exists. ## Phase 5: Execution via Prosoche Invoke `/attend` with the removal task list. Prosoche will classify each task for risk and gate irreversible operations through user judgment. **Typical task ordering** (KeepAlive-aware): 1. Unload services — `launchctl bootout`/`unload` for KeepAlive plist (before kill) 2. Run uninstaller — `open /path/to/Uninstaller.app` (if selected) 3. Verify post-uninstaller — check what remains 4. Kill remaining processes — `kill <PID>` 5. Remove remaining service registrations — `launchctl remove <label>` 6. Delete files — `sudo rm -rf` for remaining directories 7. Remove browser plugins — `sudo rm` symlinks and plugin bundles 8. Forget package receipts — `sudo pkgutil --forget <id>` ### Handling sudo Failures Non-interactive terminal sessions cannot accept sudo passwords. When sudo operations fail: 1. Complete all non-sudo operations (kill, launchctl remove) 2. Collect failed sudo commands into a single executable block 3. Present to user as a copy-paste command with `!` prefix for Claude Code prompt 4. After user executes, proceed to verification ## Phase 6: Verification Run a comprehensive post-removal check against all previously identified items: 1. Processes: `ps aux | grep -i -E "<patterns>" | grep -v grep` 2. Services: `launchctl list 2>/dev/null | grep -i -E "<patterns>"` 3. Files: Check each previously found path exists 4. Package receipts: `pkgutil --pkgs | grep -i -E "<patterns>"` Present final status: ``` ## Removal Verification | Item | Status | |------|--------| | [item description] | [Removed] / [Remaining] | **Result:** [N] items removed, [M] remaining ``` ## Edge Cases - **Process not running**: Search by name in file system (`mdfind -name "<name>"`) to find installed-but-inactive programs - **Companion frameworks**: Detect related vendor directories in Application Support and include in removal scope (present to user for confirmation) - **KeepAlive services**: Always unload via launchctl before killing — otherwise launchd immediately respawns the process - **Modern macOS kext restrictions**: Kernel extensions may be present on disk but not loaded (blocked by SIP). Note in report; still remove files - **Broken symlinks**: Partial uninstalls may leave dangling symlinks (especially browser plugins). Detect via `ls -la` and include in cleanup - **Multiple user contexts**: Some programs install both root-level (LaunchDaemon) and user-level (LaunchAgent) services. Ensure both are addressed
Related in Security
mac-ops
IncludedComprehensive macOS workstation operations — diagnose kernel panics, identify failing drives, audit launchd startup items, decode wake reasons, triage TCC permission denials, manage APFS snapshots, recover from no-boot. Use for: Mac is slow, slow bootup, won't boot, kernel panic, kernel_task hot, mds_stores CPU, photoanalysisd, cloudd, login loop, gray screen, sleep wake failure, drive failing, IO errors, APFS snapshots eating space, Time Machine local snapshots, Spotlight indexing, launchd, LaunchAgent, LaunchDaemon, login items, TCC permissions, Full Disk Access, Screen Recording denied, Gatekeeper, quarantine, com.apple.quarantine, app is damaged, helper tool, /Library/PrivilegedHelperTools, pmset, wake reasons, dark wake, sysdiagnose, panic.ips, DiagnosticReports, configuration profile, MDM profile, remote diagnostics over SSH.
a11y-audit
IncludedRun accessibility audits on web projects combining automated scanning (axe-core, Lighthouse) with WCAG 2.1 AA compliance mapping, manual check guidance, and structured reporting. Output is configurable: markdown report only, markdown plus machine-readable JSON, or markdown plus issue tracker integration. Use this skill whenever the user mentions "accessibility audit", "a11y audit", "WCAG audit", "accessibility check", "compliance scan", or asks to check a web project for accessibility issues. Also trigger when the user wants to verify WCAG conformance or map findings to a specific standard (CAN-ASC-6.2, EN 301 549, ADA/AODA).
erpclaw
IncludedAI-native ERP system with self-extending OS. Full accounting, invoicing, inventory, purchasing, tax, billing, HR, payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and financial reporting. 413 actions across 14 domains, 43 expansion modules. Constitutional guardrails, adversarial audit, schema migration. Double-entry GL, immutable audit trail, US GAAP.
assess
IncludedAssesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with actionable improvement suggestions. Use when evaluating code, designs, architectures, or comparing alternative approaches.
spring-boot-security-jwt
IncludedProvides JWT authentication and authorization patterns for Spring Boot 3.5.x covering token generation with JJWT, Bearer/cookie authentication, database/OAuth2 integration, and RBAC/permission-based access control using Spring Security 6.x. Use when implementing authentication or authorization in Spring Boot applications.
code-hardcode-audit
IncludedDetect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.