Agent skill · software engineering · jeremylongshore

policy

Author MCP tool-call policy rules without hand-editing access.json. Use when adding, linting, or removing auto_approve/deny/require_approval rules for the Slack channel's policy engine. Trigger with "/slack-channel:policy", "add a policy rule", "lint my slack policy", or "remove a policy rule".

Why this skill is useful

Adds a validation script and specific commands for managing Slack channel policy rules that the AI wouldn't reliably generate on its own.

What it needs

Requires bun installed locally. About 5k tokens when loaded. Last updated 2026-08-07. 2,604 stars on the source repository.

What this skill does

/slack-channel:policy Overview Author, lint, and remove policy rules under access.json's top-level policy field. The evaluator (evaluate() in policy.ts) is the veto layer for every MCP tool call — this skill is the ergonomic front door to authoring rules without opening access.json in a text editor. See ACCESS.md §Policy schema for the full rule shape and semantics. This skill does not replace the hand-edit path; it complements it. Prerequisites A completed install (/slack-channel:install) — the state file ~/.claude/channels/slack/access.json must exist. Bun available on PATH — every write is validated by running bun scripts/policy-validate.ts from the plugin repo. Familiarity with the rule shape in ACCESS.md §Policy schema (linked above) helps when composing json-match objects. Usage Effect is one of autoapprove, deny, requireapproval. json-match is a JSON object literal for the match field — e.g. '{"tool":"readfile","pathPrefix":"/workspace/docs"}'. At least one field must be populated; the validator rejects empty matches. Options by effect Effect Required Optional -------------------- ------------------------ -------------------------------------------- autoapprove — --priority deny --reason "…" (1-200) --priority requireapproval — --ttl-ms, --approvers, --priority Defaults: priority=100, ttl-ms=300000 (5 min), approvers=1. State file ~/.claude/channels/slack/access.json — the policy field is a JSON array. A missing or empty array means "no authored rules" and is valid. Instructions Parse $ARGUMENTS and execute the matching subcommand. Before every write, run the validator script. Exit cleanly without writing if validation fails. list 1. Read ~/.claude/channels/slack/access.json 2. If the policy field is missing or empty, print No policy rules authored. Evaluator applies defaults — see ACCESS.md §Default-branch behavior. and return. 3. Otherwise, print a table: id effect match summary extras. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills jeremylongshore/policy

View the source on GitHub

Browse the @skills marketplace