mcpbeat

Phx Permissions

oliver-kriska/phx-permissions

Recommend safe Bash permissions for Elixir mix commands in settings.json. Use when permission prompts slow workflow, "fix permissions", "reduce prompts", "auto-allow mix".

5k tokens
context cost
the whole folder, loaded on every use
4
files
instructions only
0
copies elsewhere
how many repositories repackaged it
514
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill phx-permissions

What comes with it

13 474 bytes besides the instruction
references/extraction-script.md
references/risk-classification.md
references/settings-format.md

What it tells the agent to use

found in the instruction text
Bash runs shell commands — read the instruction before connecting
Grep reads your files

The instruction itself

13 sections, as written by the author

Permission Analyzer

Scan recent session transcripts to find Bash commands you keep approving,

cross-reference with current settings.json, and recommend adding the missing ones.

Primary goal: Discover MISSING permissions from actual usage.

Secondary goal: Clean up redundant/garbage entries.

Usage

phx-permissions [--days=14] [--dry-run] — Scans session JSONL files, finds uncovered Bash commands, classifies risk, and recommends settings.json changes. Use --dry-run to preview without writing.

Arguments

$ARGUMENTS--days=N (default: 14), --dry-run (preview only).

Iron Laws

  • NEVER auto-allow REDrm, sudo, kill, curl|sh, mix ecto.reset, git push --force, chmod 777
  • Evidence-based only — Only recommend commands actually approved in sessions
  • Show before writing — Present full diff, get explicit confirmation
  • Preserve existing — Merge, never overwrite

Risk Classification

| Level | Examples | Action |

|-------|----------|--------|

| GREEN | ls, cat, grep, tail, which, mkdir, cd, mix test/compile/credo/format, git status/log/diff | Auto-recommend |

| YELLOW | git add/commit/push, mix ecto.migrate, mix deps.get, npm install, docker build/run, source, mise exec | Recommend with note |

| RED | rm -rf, sudo, kill, curl|sh,mix ecto.reset/drop,git push --force,git reset --hard | Never recommend |

Workflow

Step 1: Extract Bash Commands from Session JSONL Files

Run the extraction script from references/extraction-script.md.

This scans all project JSONL files from the last N days, checks each Bash command

against current settings.json patterns, and reports uncovered commands with counts.

IMPORTANT: Run this FIRST. Do NOT skip to settings cleanup.

Step 2: Classify and Recommend

For each uncovered command from Step 1 output:

  • Classify as GREEN / YELLOW / RED per table above
  • Generate permission pattern: normalize to Bash(base_command *) format

(use SPACE before *, NOT colon — :* is deprecated)

  • mkdir -p (94x) → Bash(mkdir *)
  • mise exec (39x) → Bash(mise *)
  • tail -5 (20x) → Bash(tail *)
  • Check for redundancy: skip if a broader existing pattern covers it
  • Also scan for garbage in current settings: Bash(done), Bash(fi),

Bash(__NEW_LINE_*), partial heredocs, entries covered by broader patterns

  • Fix deprecated :* patterns — replace any Bash(name:*) with Bash(name *)

(space before *). The :* suffix is deprecated and may not match reliably

Present a combined table:

## Permission Recommendations (last N days)

### ADD — Missing permissions (from session scan)
| Pattern to Add | Times Used | Risk | Example |
|...

### REMOVE — Redundant/garbage entries
| Entry | Reason |
|...

### RED — Require manual approval (not adding)
| Command | Count | Risk |
|...

Step 3: Interactive Triage (unless --dry-run)

Walk through findings interactively using AskUserQuestion. Present items

in batches by risk level, starting with GREEN (safest):

Batch 1 — GREEN items (read-only, tests, safe tools):

Use AskUserQuestion with options:

  • "Add all GREEN" — approve entire batch
  • "Pick individually" — show each one for yes/no
  • "Skip GREEN" — move to YELLOW

Batch 2 — YELLOW items (write ops, need caution):

Always show individually — one AskUserQuestion per item with options:

  • "Add" — include in settings
  • "Skip" — keep requiring manual approval
  • "Customize" — let user edit the pattern before adding

Batch 3 — REMOVE candidates (garbage/redundant):

Use AskUserQuestion with options:

  • "Remove all" — clean up entire batch
  • "Pick individually" — show each for yes/no
  • "Keep all" — skip cleanup

Track approved items in a list. After triage, show final summary of

what will be added/removed and ask for confirmation.

Step 4: Apply

Merge approved additions into ~/.claude/settings.json under permissions.allow.

Remove approved garbage entries. Report final counts.

Workflow-artifact permissions (always check)

The plugin's workflow writes to .claude/plans/, .claude/solutions/, and

.claude/reviews/. If these aren't covered, phx-compound and review agents

get write-blocked mid-workflow. Recommend (GREEN):

Write(.claude/plans/), Write(.claude/solutions/), Write(.claude/reviews/**).

References

  • references/risk-classification.md — Full classification rules
  • references/settings-format.md — Permission pattern format

Long mix output flooding context? phx-mix-compression installs rtk filters

that compress mix test/credo/dialyzer/compile output before it reaches the

transcript (5-15% token savings on mix-heavy sessions).

How to use it

Copy the folder

Take oliver-kriska/phx-permissions from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npm. Without those the skill loads but fails at the first command.