mcpField
S
setperms

setperms

github.com/0xdarkmatterエージェントワークフロー7851 回インストール2 週間前に更新
リポジトリ

setperms について

Claude Code にプロジェクト単位の権限と dev-shell-tools の CLI 設定を導入するスキルです。ローカル設定が Git に登録されないよう保護します。

主な機能

  1. 01Claude Code のローカル権限を生成
  2. 02モダンな CLI ツールの優先ルールを追加
  3. 03上書き前に既存ファイルを確認
  4. 04ローカル設定を Git の対象外に設定
  5. 05権限とルールの設定オプション

活用シーン

  1. 01プロジェクトでの Claude Code 初期設定
  2. 02開発用 CLI ツールの優先設定
  3. 03最小または拡張権限の選択
  4. 04ローカル設定のリモート送信防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/0xdarkmatter/claude-mods --skill setperms

インストール後、Claude Code で/setpermsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
.gitkeep
references/
.gitkeep
scripts/
.gitkeep

詳細

/setperms

Claude Code を最新の dev-shell-tools で初期化し、快適な開発環境を整えます。

この機能について

開発環境一式をインストールします:

  1. 権限(.claude/settings.local.json)- 事前承認済みの CLI ツール
  2. ルール(.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-guardrailsGit の安全ガードレールをスキップします(「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

コメント