setperms について
Claude Code にプロジェクト単位の権限と dev-shell-tools の CLI 設定を導入するスキルです。ローカル設定が Git に登録されないよう保護します。
主な機能
- 01Claude Code のローカル権限を生成
- 02モダンな CLI ツールの優先ルールを追加
- 03上書き前に既存ファイルを確認
- 04ローカル設定を Git の対象外に設定
- 05権限とルールの設定オプション
活用シーン
- 01プロジェクトでの Claude Code 初期設定
- 02開発用 CLI ツールの優先設定
- 03最小または拡張権限の選択
- 04ローカル設定のリモート送信防止
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 0xdarkmatter/ claude-mods --skill setpermsインストール後、Claude Code で/setpermsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/.gitkeepreferences/.gitkeepscripts/.gitkeep詳細
/setperms
Claude Code を最新の dev-shell-tools で初期化し、快適な開発環境を整えます。
この機能について
開発環境一式をインストールします:
- 権限(
.claude/settings.local.json)- 事前承認済みの CLI ツール - ルール(
.claude/rules/cli-tools.md)- 最新のツールを優先するための指示
dev-shell-tools のツール:
コアツール:
- Git:Git へのフルアクセス、lazygit、gh(GitHub CLI)、delta、difft
- ファイル操作:ls、mkdir、cat、wc、tree、eza、bat、chmod
- 検索:rg(ripgrep)、fd、fzf、ast-grep/sg
- ナビゲーション:zoxide/z、broot/br
- データ処理:jq、yq、sd、xargs
- 分析:tokei、procs、hyperfine、dust
開発ツール:
- パッケージマネージャー:npm、npx、node、pnpm、yarn、bun、python、uv、pip、cargo、go、brew
- ビルドツール:just、make、bash、rustc
- ネットワーク:curl、http(httpie)、firecrawl、markitdown
- コンテナー:docker、docker-compose
- アーカイブ:tar、zip、unzip
- テスト:pytest
- データ:sort、uniq、cut、tr、xargs、tee、head、tail、diff
- ドキュメント:tldr
- Windows:powershell
AI CLI ツール:
- gemini:Google Gemini CLI(2M コンテキスト)
- claude:Anthropic Claude CLI
- codex:OpenAI Codex CLI
- perplexity:Perplexity CLI(ウェブ検索)
実行フロー
/setperms
|
+-- Check for existing .claude/ files
| +-- If exists: Ask to overwrite or skip
| +-- If not: Proceed
|
+-- Create .claude directory
+-- Create .claude/rules directory
|
+-- Write settings.local.json (permissions)
+-- Ensure .gitignore excludes settings.local.json (secret-safety)
+-- Write rules/cli-tools.md (tool preferences)
手順
ステップ 1:既存の設定を確認する
ls -la .claude/settings.local.json 2>/dev/null
ls -la .claude/rules/cli-tools.md 2>/dev/null
ファイルが存在する場合は、ユーザーに次のいずれかを尋ねます:
- 上書き:すべて置き換えます
- スキップ:既存の設定を保持し、何もしません
ステップ 2:ディレクトリを作成する
mkdir -p .claude/rules
ステップ 3:権限ファイルを書き込む
.claude/settings.local.json に書き込みます:
{
"permissions": {
"allow": [
"Bash(git:*)",
"Bash(ls:*)",
"Bash(mkdir:*)",
"Bash(cat:*)",
"Bash(wc:*)",
"Bash(tree:*)",
"Bash(curl:*)",
"Bash(rg:*)",
"Bash(fd:*)",
"Bash(fzf:*)",
"Bash(z:*)",
"Bash(zoxide:*)",
"Bash(br:*)",
"Bash(broot:*)",
"Bash(ast-grep:*)",
"Bash(sg:*)",
"Bash(bat:*)",
"Bash(eza:*)",
"Bash(delta:*)",
"Bash(difft:*)",
"Bash(jq:*)",
"Bash(yq:*)",
"Bash(sd:*)",
"Bash(lazygit:*)",
"Bash(gh:*)",
"Bash(tokei:*)",
"Bash(uv:*)",
"Bash(just:*)",
"Bash(http:*)",
"Bash(procs:*)",
"Bash(hyperfine:*)",
"Bash(npm:*)",
"Bash(npx:*)",
"Bash(node:*)",
"Bash(pnpm:*)",
"Bash(yarn:*)",
"Bash(bun:*)",
"Bash(python:*)",
"Bash(pip:*)",
"Bash(cargo:*)",
"Bash(go:*)",
"Bash(rustc:*)",
"Bash(pytest:*)",
"Bash(make:*)",
"Bash(docker:*)",
"Bash(docker-compose:*)",
"Bash(powershell -Command:*)",
"Bash(powershell.exe:*)",
"Bash(bash:*)",
"Bash(chmod:*)",
"Bash(sort:*)",
"Bash(uniq:*)",
"Bash(cut:*)",
"Bash(tr:*)",
"Bash(xargs:*)",
"Bash(tee:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(diff:*)",
"Bash(tar:*)",
"Bash(zip:*)",
"Bash(unzip:*)",
"Bash(command -v:*)",
"Bash(brew:*)",
"Bash(tldr:*)",
"Bash(dust:*)",
"Bash(btm:*)",
"Bash(bottom:*)",
"Bash(markitdown:*)",
"Bash(firecrawl:*)",
"Bash(gemini:*)",
"Bash(claude:*)",
"Bash(codex:*)",
"Bash(perplexity:*)"
],
"deny": [],
"ask": [
"Bash(git reset --hard:*)",
"Bash(git checkout -- :*)",
"Bash(git clean -f:*)",
"Bash(git stash drop:*)",
"Bash(git stash clear:*)",
"Bash(git restore --worktree:*)",
"Bash(git push --force:*)",
"Bash(git push -f:*)",
"Bash(git push origin --force:*)",
"Bash(git push origin -f:*)",
"Bash(git branch -D:*)"
]
},
"hooks": {}
}
ステップ 3b:settings.local.json を Git から保護する(必須)
settings.local.json はユーザー固有のファイルであり、権限ルールにシークレットが頻繁に蓄積します
(Bash(...) の許可エントリーに API キーを埋め込んだり、カスタムコマンドにトークンを含めたりします)。リモートに送信してはなりません。完了前に、リポジトリルートの .gitignore でこのファイルが除外されていることを確認します:
# Add the rule only if it's not already present
grep -qxF '.claude/settings.local.json' .gitignore 2>/dev/null \
|| printf '\n# Local settings (user-specific; may contain API keys)\n.claude/settings.local.json\n' >> .gitignore
# If it was already tracked from a prior commit, stop tracking it (keeps the file)
git ls-files --error-unmatch .claude/settings.local.json >/dev/null 2>&1 \
&& git rm --cached .claude/settings.local.json
プロジェクトに Git リポジトリがない場合は、何も通知せずにスキップします。これは git-ops のプッシュ安全性ゲートと連携します。このゲートも .claude/settings.local.json を追加するプッシュを拒否し、漏洩したキーが再び流出しないよう多層的に保護します。
ステップ 4:ルールファイルを書き込む
.claude/rules/cli-tools.md に書き込みます:
# CLI Tool Preferences (dev-shell-tools)
ALWAYS prefer modern CLI tools over traditional alternatives.
## File Search & Navigation
| Instead of | Use | Why |
|------------|-----|-----|
| `find` | `fd` | 5x faster, respects .gitignore |
| `grep` | `rg` (ripgrep) | 10x faster, respects .gitignore |
| `ls` | `eza` | Git status, tree view |
| `cat` | `bat` | Syntax highlighting |
| `cd` + manual | `z`/`zoxide` | Frecent directories |
| `tree` | `eza --tree` | Interactive |
## Data Processing
| Instead of | Use |
|------------|-----|
| `sed` | `sd` |
| Manual JSON | `jq` |
| Manual YAML | `yq` |
## Git Operations
| Instead of | Use |
|------------|-----|
| `git diff` | `delta` or `difft` |
| Manual git | `lazygit` |
| GitHub web | `gh` |
## Code Analysis
- Line counts: `tokei`
- AST search: `ast-grep` / `sg`
- Benchmarks: `hyperfine`
- Disk usage: `dust`
## System Monitoring
| Instead of | Use |
|------------|-----|
| `du -h` | `dust` |
| `top`/`htop` | `btm` (bottom) |
## Documentation
| Instead of | Use |
|------------|-----|
| `man <cmd>` | `tldr <cmd>` |
## Python
| Instead of | Use |
|------------|-----|
| `pip` | `uv` |
| `python -m venv` | `uv venv` |
## Task Running
Prefer `just` over Makefiles.
## Web Fetching
| Priority | Tool | When to Use |
|----------|------|-------------|
| 1 | `WebFetch` | First attempt - fast, built-in |
| 2 | `r.jina.ai/URL` | JS-rendered pages, cleaner extraction |
| 3 | `firecrawl <url>` | Anti-bot bypass, blocked sites |
## AI CLI Tools
For multi-model analysis:
| Tool | Model | Best For |
|------|-------|----------|
| `gemini` | Gemini 2.5 | 2M context, large codebases |
| `claude` | Claude | Coding, analysis |
| `codex` | OpenAI | Deep reasoning |
| `perplexity` | Perplexity | Web search, current info |
## Git Safety
Destructive commands require confirmation (in "ask" list):
| Command | Risk | Safe Alternative |
|---------|------|------------------|
| `git reset --hard` | Loses uncommitted changes | `git stash` first |
| `git checkout -- <file>` | Discards file changes | `git stash` or `git diff` first |
| `git clean -fd` | Deletes untracked files | `git clean -n` (dry run) first |
| `git stash drop` | Permanently deletes stash | Check `git stash list` first |
| `git push --force` | Overwrites remote history | `git push --force-with-lease` |
| `git branch -D` | Deletes unmerged branch | `git branch -d` (safe delete) |
**Before destructive operations:**
1. Check status: `git status`
2. Check for uncommitted changes: `git diff`
3. Consider stashing: `git stash`
4. Use dry-run flags when available
Reference: https://github.com/0xDarkMatter/dev-shell-tools
ステップ 5:確認する
ユーザーに次の内容を報告します:
Initialized Claude Code with dev-shell-tools:
Created:
.claude/settings.local.json (74 tool permissions, 11 guardrails)
.claude/rules/cli-tools.md (modern tool preferences)
Claude will now:
- Auto-approve dev-shell-tools commands
- Prefer fd over find, rg over grep, bat over cat, etc.
- Use AI CLIs for multi-model analysis
- Ask before destructive git commands (reset --hard, push --force, etc.)
To customize: edit files in .claude/
To add to git: git add .claude/
オプション
| フラグ | 効果 |
|---|---|
--force | 確認せずに既存の設定を上書きします |
--perms-only | 権限のみをインストールし、ルールはスキップします |
--rules-only | ルールのみをインストールし、権限はスキップします |
--minimal | 最小限の権限(git、ls、cat、mkdir のみ) |
--full | クラウド/コンテナーツール(docker、kubectl、terraform など)を追加します |
--no-guardrails | Git の安全ガードレールをスキップします(「ask」リストは空) |
フルテンプレート(--full)
権限に追加:
"Bash(podman:*)",
"Bash(kubectl:*)",
"Bash(helm:*)",
"Bash(terraform:*)",
"Bash(pulumi:*)",
"Bash(aws:*)",
"Bash(gcloud:*)",
"Bash(az:*)",
"Bash(wrangler:*)",
"Bash(flyctl:*)",
"Bash(railway:*)"
注記
- 権限はプロジェクト単位です(他のプロジェクトには影響しません)
- ルールは Claude に最新のツールを優先するよう指示します
~/.claude/のグローバル設定も引き続き適用されます- 変更は次回のツール使用時に反映されます(再起動は不要です)
- ツールの提供元:https://github.com/0xDarkMatter/dev-shell-tools