| name | policy |
| description | 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". |
| version | 1.0.1 |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| license | Apache-2.0 |
| compatibility | Requires Claude Code with the slack-channel plugin installed and paired (state under ~/.claude/channels/slack/), plus Bun to run the in-repo policy validator script. |
| tags | ["slack","policy","access-control","mcp"] |
| user-invocable | true |
| argument-hint | list | lint | add <id> <effect> <json-match> [--reason "..."] [--ttl-ms N] [--approvers N] [--priority N] | remove <id> |
| allowed-tools | ["Read","Write","Bash(bun:*)","Bash(chmod:*)","Bash(mv:*)"] |
/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
/slack-channel:policy list
/slack-channel:policy lint
/slack-channel:policy add <id> <effect> <json-match> [--reason "..."] [--ttl-ms N] [--approvers N] [--priority N]
/slack-channel:policy remove <id>
Effect is one of auto_approve, deny, require_approval.
json-match is a JSON object literal for the match field — e.g.
'{"tool":"read_file","pathPrefix":"/workspace/docs"}'. At least one field
must be populated; the validator rejects empty matches.
Options by effect
| Effect | Required | Optional |
|---|
auto_approve | — | --priority |
deny | --reason "…" (1-200) | --priority |
require_approval | — | --ttl-ms, --approvers, --priority |
Defaults: priority=100, ttl-ms=300000 (5 min), .