update-allowed-tools
Overview
Analyzes a skill's full content, SKILL.md and any sibling files in the same directory, to find tools it references or requires, then compares against the skill's allowed-tools frontmatter to find missing entries.
Usage
/update-allowed-tools <skill name>
/update-allowed-tools @path/to/SKILL.md
Instructions
-
Parse argument: The argument is either a file path to a SKILL.md file, or a skill name/description. If no file path is provided, search for the skill using Glob — first in the current working directory (e.g.,
**/skills/**/<name>/SKILL.md), then in~/.claude/skills/**/<name>/SKILL.md. -
Read the skill file and separate the YAML frontmatter from the body content. Also read any other files in the same directory (sibling files referenced by or bundled with the skill).
-
Extract declared allowed-tools: Parse all entries under
allowed-tools:in the frontmatter. -
Scan all skill content (SKILL.md body + sibling files) for tool usage. Look for:
- Explicit tool names: e.g.,
Read,Write,Edit,Bash,WebFetch,WebSearch,Task,AskUserQuestion,Skill, etc. - Bash command patterns: e.g.,
git diff,git commit,make,npm,docker,python,curl, etc. - For Bash commands found, the required allowed-tool format is
Bash(<command>:*)(e.g.,git stash pushneedsBash(git stash:*)) - For file tools with path patterns (Read, Write, Edit), note the paths referenced (e.g.,
/tmp/needsRead(//tmp/**)) - Skill invocations: e.g.,
commit,Use the commit skill,Skill(commit). The required allowed-tool format isSkill(<name>)(e.g.,commitneedsSkill(commit))
- Explicit tool names: e.g.,
-
Compare: For each tool detected in the body, check if it's covered by an entry in
allowed-tools. Rules:Glob,Grep,Read,Write,Editare available by default for files within the project directory. Only add these when the skill needs to access files outside the project (e.g.,Read(//tmp/**),Write(~/.config/**)).Bashcommands always need explicitBash(<command>:*)entries.- A Bash pattern covers subcommands (e.g.,
Bash(git stash:*)coversgit stash push). - Exact match counts as covered (e.g.,
WebSearchmatchesWebSearch).
-
Update the skill file: For any missing tools found, add them to the
allowed-toolslist in the skill's YAML frontmatter using the Edit tool. Then report what was added. -
Validate: Re-read the updated file to confirm YAML frontmatter remains syntactically valid (proper indentation, no duplicate entries, correct list format).
More from vinta/hal-9000
commit
Use when making any git commit. Always pass a brief description of what changed as the argument.
73sync-skills
(hal-9000) Use when a skill in skills/ has its name or description changed, or is added or removed — syncs README.md, settings.json, and hal_dotfiles.json
46magi
Use when brainstorming ideas, features, or directions for a project where independent perspectives from different model families (Claude/Codex/Gemini) would surface blind spots and spark creative options the user hasn't considered — especially "what cool things can I add", "what should I build next", "give me ideas for X
44second-opinions
Use when wanting independent perspectives from external models (Codex, Gemini) on code, plans, docs, or any task — or when the user asks for a second opinion, codex review, or gemini review
38explore-codebase
Use when navigating unfamiliar code, tracing call flows or symbol definitions, finding files by name or pattern, or locating all references before refactoring
35magi-ex
Use when brainstorming ideas, features, or directions for a project where independent perspectives from different model families (Claude/Codex/Gemini) would surface blind spots and spark creative options the user hasn't considered — especially "what cool things can I add", "what should I build next", "give me ideas for X
21