跳到主要内容
知仓学习社ZHICANG

permissions

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

执行命令联网写文件严重 5 · 高危 3oliver-kriska/claude-elixir-phoenix

它会碰到什么

扫了多少4 个文本文件,18 KB
它会碰到什么执行命令联网写文件
命中总数8 处
命中统计严重 5 · 高 3 · 中 0 · 低 0
逐条看命中(8 条严重或高危)
  • 严重 references/risk-classification.md:152exec-pipe-to-shell
    | `curl * \| sh` | Remote code execution |
  • 严重 references/risk-classification.md:153exec-pipe-to-shell
    | `wget * \| sh` | Remote code execution |
  • 严重 references/risk-classification.md:154exec-pipe-to-shell
    | `curl * \| bash` | Remote code execution |
  • 严重 SKILL.md:26exec-pipe-to-shell
    1. **NEVER auto-allow RED** — `rm`, `sudo`, `kill`, `curl|sh`, `mix ecto.reset`, `git push --force`, `chmod 777`
  • 严重 SKILL.md:37exec-pipe-to-shell
    | RED | `rm -rf`, `sudo`, `kill`, `curl|sh`,`mix ecto.reset/drop`,`git push --force`,`git reset --hard` | Never recommend |
  • references/extraction-script.md:16identity-config-write
    '.claude/settings.json', '.claude/settings.local.json']:
  • references/settings-format.md:16identity-config-write
    | Local (personal) | `.claude/settings.local.json` | No (gitignored) |
  • references/settings-format.md:155identity-config-write
    | Personal preferences | `.claude/settings.local.json` (local) |

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

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

  1. NEVER auto-allow REDrm, sudo, kill, curl|sh, mix ecto.reset, git push --force, chmod 777
  2. Evidence-based only — Only recommend commands actually approved in sessions
  3. Show before writing — Present full diff, get explicit confirmation
  4. 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 ${CLAUDE_SKILL_DIR}/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:

  1. Classify as GREEN / YELLOW / RED per table above
  2. 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 *)
  1. Check for redundancy: skip if a broader existing pattern covers it
  2. Also scan for garbage in current settings: Bash(done), Bash(fi),

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

  1. **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

  • ${CLAUDE_SKILL_DIR}/references/risk-classification.md — Full classification rules
  • ${CLAUDE_SKILL_DIR}/references/settings-format.md — Permission pattern format

Related

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).

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 553
本站分层T2
该仓技能数322
原文件路径plugins/elixir-phoenix/skills/permissions/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 322 个技能