api-security
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Use when the user wants to check, understand, or harden the security of their Mac, or asks whether their laptop is secure and what to fix. Runs a full macOS security audit, explains each finding in plain language (what it is, why it matters, what changing it would affect), and
Claude Code
$ npx -y skills add djadmin/fort --skill fort --agent claude-code
Codex
$ npx skills add djadmin/fort --skill fort -a codex -y
Cursor
$ npx skills add djadmin/fort --skill fort -a cursor -y
Gemini CLI
$ npx skills add djadmin/fort --skill fort -a gemini-cli -y
GitHub Copilot
$ npx skills add djadmin/fort --skill fort -a github-copilot -y
OpenCode
$ npx skills add djadmin/fort --skill fort -a opencode -y
Windsurf
$ npx skills add djadmin/fort --skill fort -a windsurf -y
name: fort description: >- Use when the user wants to check, understand, or harden the security of their Mac, or asks whether their laptop is secure and what to fix. Runs a full macOS security audit, explains each finding in plain language (what it is, why it matters, what changing it would affect), and applies only the fixes the user approves. Also produces SOC 2 / ISO 27001 / NIST / CIS evidence on request. Triggers on phrases like "is my Mac secure", "audit my laptop", "harden my Mac", "what security gaps do I have", "fix my firewall / screen lock / FileVault", "check my endpoint security". tools: allowed: ["Bash", "Read"]
`fort` is a single Go binary that runs 16 deterministic security checks on a Mac, shows the exact command and output behind each result, and can fix the ones that are safe to automate. This skill drives that CLI directly over the shell.
Your job is not to re-implement the checks. `fort` is the source of truth for *what* the posture is. You add the layer a binary can't: explain **what each finding means and why it matters**, prioritize them, respect what the user has told you about how they use the machine, and apply fixes selectively and only with consent.
**Auditing is always safe. Fixing changes the user's system settings — treat every fix like running a command on their machine: preview it, get an explicit yes, then apply. Never apply a fix the user hasn't specifically approved, and never "fix everything" implicitly.** Default to read-only. When in doubt, audit and explain; don't change anything.
Run `fort --version` first. The plugin does not bundle the binary, so it needs `fort` present on the machine — but don't dead-end if it's missing. Offer to install it:
`brew install djadmin/tap/fort`
Install only with the user's go-ahead, then re-run `fort --version` to confirm before auditing. fort is macOS-only; on other platforms, say so rather than trying to install.
| Goal | Command | Changes the system? | |---|---|---| | Full audit, human-readable | `fort` | No | | Full audit, structured data to reason over | `fort --json` | No | | Audit specific checks only | `fort --only firewall,osupdates --json` | No | | Preview the exact fix command for a check | `fort --only firewall --dry-run` | No | | Apply a fix, with fort's own confirm prompt | `fort --only firewall --fix` | **Yes** | | Apply a fix non-interactively (after the user approved) | `fort --only firewall --fix --yes` | **Yes** | | Write an HTML evidence report | `fort --report` | No (writes `fort-report.html`) |
Notes:
the output, don't treat a non-zero exit as a crash.
`status`, `current` vs `expected`, `fixable`, the `evidence` (the literal command fort ran and its output), and `frameworks` mappings.
you want to apply exactly the checks the user agreed to.
Run `fort --json`. Lead with the score and a one-line verdict, then walk the findings in priority order — failures that expose the machine first, lower-risk items after. Don't dump JSON at the user.
This is the point of the skill. For each finding that matters, tell the user:
your data if the laptop is lost or stolen").
fort ran and what it returned). Showing the evidence is what makes this trustworthy instead of a black box.
See `reference/checks.md` for a per-check explainer (what it is, why it matters, what to watch out for when changing it). Read it when you need depth on a finding or the user asks "what happens if I change this?"
A finding being "fail" doesn't mean blindly fix it. If the user says they use SSH to reach this machine, don't push to disable remote login. If they need an admin account for daily work, explain the trade-off rather than insisting. Prioritize against how *they* use the Mac, not a generic checklist.
When the user wants to fix something, run `fort --only <id> --dry-run` and show them the exact command fort would run (`would run: sudo …`). Let them see it before it happens.
After an explicit yes, run `fort --only <approved-ids> --fix` (or add `--yes` once they've confirmed, to skip the second prompt). Fix exactly the checks they agreed to — never expand the scope. Some fixes need `sudo` and will prompt for a password; that's the user's machine asking, which is correct.
Re-run `fort --only <ids> --json` to confirm each change took effect. If the user needs proof for an audit or wants a record, offer `fort --report` and tell them where the HTML lands (`fort-report.html`, printable to PDF).
Use these exact IDs with `--only`. Never invent IDs; if unsure, run `fort --json` and read them back. Full explainers are in `reference/checks.md`.
Know your Mac's security posture, fix the gaps, and keep it locked down. One command. fort runs 15+ security checks on your Mac, fixes what it safely can, and writes an auditor-ready report. No agent, no signup, no MDM enrollment. Just a single binary.
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…