permissions-tune
Skill4 starsChanged 8 days agoMITView on GitHub
Propone y aplica reglas de permisos para un proyecto de Claude Code, deducidas de la evidencia en disco. Usar cuando el usuario dice que le pide permiso para todo o al arrancar un proyecto nuevo.
- Installs packages
In this repository12 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- advisorSkill
- ai-project-auditSkill
- ai-project-frameworkSkill
- build-in-publicSkill
- calendar-colorsSkill
- html-human-reviewSkill
- kindle-exportSkill
- learning-reviewSkill
- no-ai-slopSkill
- weekly-reviewSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 94
No sabe si un comando es peligroso en tu contexto: aplica listas fijas.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
permissions-tune
JTBD
"Me pide permiso para todo y me cansa ir dando allow de a uno." El usuario no debería tener que explicar qué va a construir: la evidencia de lo que necesita ya está en disco.
De dónde saca el contexto (sin preguntar)
| Fuente | Qué aporta | Peso |
.claude/settings.local.json | Cada entrada es una aprobación real que ya dio. La señal más fuerte. | ×3 |
Transcripts ~/.claude/projects/<proyecto>/*.jsonl | Frecuencia de uso real. | ×1 |
El repo (package.json, Makefile, pyproject.toml, Cargo.toml, go.mod…) | Anticipa lo que va a necesitar. Sirve en proyectos nuevos sin historial. | marcado ~ |
Comandos
SK="<ruta>/permissions_tune.py"
python3 "$SK" . # vista previa (no escribe nada)
python3 "$SK" . --apply # escribe, dejando backup
python3 "$SK" . --apply --local # forzar settings.local.json
python3 "$SK" . --apply --shared # forzar settings.json
python3 "$SK" . --revert # restaurar el último backup
python3 "$SK" . --min-count 1 # bajar el umbral de evidenciaDónde escribe
Lo decide por proyecto, y siempre lo dice en el reporte:
- Repo con remote →
settings.local.json. Puede ser compartido; no se commitea. - Repo sin remote →
settings.jsondel proyecto.
Se puede forzar con --local / --shared.
Reglas duras (están en el código, no en el prompt)
Un skill que se auto-otorga permisos es una puerta trasera si no tiene límites. Estos están implementados y verificados, no son recomendaciones:
- Nunca comodines de intérpretes, shells ni package runners.
python3:*,node:*,bash:*,npx:*,make:*,eval,ssh— todos equivalen a ejecución de código arbitraria, y permitirlos vuelve decorativa cualquier lista dedeny. En su lugar propone el script concreto que el usuario ya corre (Bash(python3 /ruta/al/script.py:*)). - Nunca
npm run:*ni equivalentes. El nombre del script es parte de la identidad del comando:Bash(npm run build)sí,Bash(npm run:*)no. - Nunca destructivos ni de sistema.
rm,chmod,chown,kill,pkill,dd,launchctl,crontab,defaults… Si el usuario los quiere, los agrega a mano y asume la decisión. - Nunca instaladores.
brew install,pip install,npm install,cargo install— instalar software de internet es ejecución de código con otro nombre. - Nunca
awk/find/xargscon comodín. Tienensystem()y-exec. - Nunca toca
denyniask. Solo suma aallow. Sacar una denegación es decisión manual del usuario. - Nunca
git:*pelado — incluiríapushyreset --hard. Solo subcomandos. - Descarta lo que Claude Code ya auto-permite (
ls,cat,grep,git status,gh pr view…). Una entrada ahí es ruido, no permiso. - Solo propone comandos que existan en el sistema (
which) y scripts que existan en disco. Sin esto se cuelan fragmentos de rutas con espacios. - Por defecto no escribe. Solo con
--apply, y siempre con backup.
Behavior spec
- Corré la vista previa primero y mostrala tal cual. El reporte es el
entregable; no lo resumas en tus palabras ni escribas un
.mdaparte. - Explicá el destino. Decí si va a
settings.jsonosettings.local.jsony por qué, antes de aplicar. - Aplicá solo con el sí del usuario. El default es vista previa a propósito: ampliar permisos es difícil de revertir mentalmente aunque haya backup.
- Si una propuesta te parece de más, decilo. El script filtra por reglas, no por criterio. Revisá la lista antes de recomendarla.
- Distinguí permanente de temporal. Si el usuario quiere amplitud "por un rato" (prototipo, sandbox), el allowlist es la herramienta equivocada: deja permisos permanentes por una necesidad de una tarde. Para eso están los permission modes de sesión. Decilo en vez de engordar el archivo.
- Nunca sugieras desactivar permisos en general ni pases por alto las reglas duras porque el usuario tenga apuro.
Límites conocidos
- Lee los transcripts del proyecto donde corre; no cruza proyectos a propósito.
- La detección de stack cubre Node, Python, Rust, Go, Ruby y Make. Otros stacks caen al camino de evidencia (transcripts + aprobaciones previas).
- No sabe si un comando es peligroso en tu contexto: aplica listas fijas. Revisá la propuesta.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

