From release
Work with Claude Code configuration at global (~/.claude) or project (.claude/) level. Use when editing settings.json (permissions, hooks, statusline, model), managing MCP servers, creating agents/commands/skills, writing CLAUDE.md, setting up rules files, or configuring a new project. Determines context automatically and provides guidance on global vs project placement to avoid duplication.
npx claudepluginhub fairchild/dotclaude --plugin skill-creatorThis skill uses the workspace's default tool permissions.
Work with Claude Code configuration at any level - global (`~/.claude/`) or project (`.claude/`).
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Work with Claude Code configuration at any level - global (~/.claude/) or project (.claude/).
Before making changes, identify where you're working and what already exists:
# Where are we?
pwd
# In a project repo or in ~/.claude itself?
[[ "$(pwd)" == "$HOME/.claude"* ]] && echo "GLOBAL" || echo "PROJECT"
# What config exists at each level?
ls -la ~/.claude/settings.json ~/.claude.json 2>/dev/null
ls -la .claude/settings.json .mcp.json 2>/dev/null
Context determines approach:
| Context | You're configuring... | Primary concern |
|---|---|---|
Global (~/.claude) | Personal defaults for all projects | Reusable patterns |
Project (.claude/) | Project-specific behavior | Avoid duplicating global |
When configuring a project's .claude/ directory, always follow this workflow:
Before adding anything to project config, examine what's already defined globally:
# Check global settings
cat ~/.claude/settings.json 2>/dev/null | jq .
# Check global MCP servers
cat ~/.claude.json 2>/dev/null | jq .mcpServers
# List global agents, commands, skills
ls ~/.claude/agents/ ~/.claude/commands/ ~/.claude/skills/ 2>/dev/null
Only add to project config what is:
Do NOT duplicate:
When making recommendations, always explain WHY:
**Recommendation:** Add this permission to `.claude/settings.json`
**Reasoning:** This permission is project-specific because:
- It references paths unique to this project (`./src/api/**`)
- The global config doesn't cover this use case
- Team members will need this when they clone the repo
**Not adding to global because:** This pattern only makes sense for this project's structure.
Use this to decide where configuration belongs:
| Configuration | Global (~/.claude) | Project (.claude/) |
|---|---|---|
| Permissions | Personal security rules (deny secrets, keys) | Project-specific paths, team-agreed rules |
| Hooks | Personal workflows (formatters, linters) | Project build/test hooks, CI-related |
| StatusLine | Personal preference | Never (statusline is personal) |
| Model | Personal default | Team agreement on model for project |
| MCP Servers | Personal tools (perplexity, notion) | Project-specific APIs, databases |
| Agents | Personal productivity agents | Project-specific workflows |
| Skills | General-purpose skills | Project/domain-specific skills |
| Commands | Personal shortcuts | Project-specific operations |
| CLAUDE.md | Personal preferences, style | Project context, architecture, conventions |
Settings merge from general to specific (later overrides earlier):
~/.claude/settings.json - applies to all projects.claude/settings.json - project-specific, git-committed.claude/settings.local.json - per-machine, gitignoredFor MCP servers:
~/.claude.json (mcpServers key).mcp.json (mcpServers key)For instructions:
~/.claude/CLAUDE.mdCLAUDE.md or .claude/CLAUDE.mdScan projects for Claude Code configuration status and identify overlap:
bun ~/.claude/skills/dotclaude-config/scripts/inventory.ts # scan ~/code/
bun ~/.claude/skills/dotclaude-config/scripts/inventory.ts ~/work # custom path
Reports: configured vs unconfigured projects, skill counts, package managers, and flags project skills that shadow global skills (candidates for removal or promotion to global).
Query official Claude Code documentation:
Task(subagent_type="claude-code-guide", prompt="How do hooks work in settings.json?")
When to use: Latest features, undocumented behavior, syntax verification.
Examine actual configuration across levels:
Task(subagent_type="Explore", prompt="Compare global and project permissions")
Task(subagent_type="Explore", prompt="What MCP servers are configured at each level?")
When to use: Understanding current state, finding conflicts, debugging.
"permissions": {
"allow": ["Bash(git status)", "Read(./src/**)"],
"deny": ["Read(.env)", "Read(**/*.key)"],
"ask": ["Bash(git push:*)"]
}
"hooks": {
"PostToolUse": [{"matcher": "Write|Edit", "hooks": [{"type": "command", "command": "..."}]}]
}
"model": "opus" // or "sonnet", "haiku"
For authoring and organizing CLAUDE.md files — placement, @path imports, rules files, size management — see references/claude-md-patterns.md.
Key rules:
@path imports for detail.claude/rules/*.md for modular, auto-loaded instructions~/.claude/CLAUDE.md, project context in project CLAUDE.mdWhen the current directory IS ~/.claude:
~/.claude is an independent clone that deploys from origin/main. Development happens in ~/code/dotclaude on feature branches. Never commit directly to ~/.claude — it's the deploy target.
# Verify: ~/.claude should be a standalone clone, NOT a worktree
[ -d ~/.claude/.git ] && echo "STANDALONE (correct)" || echo "WORKTREE — see development-workflow.md to migrate"
~/code/dotclaude — feature branches, PRs, all development~/.claude — always on main, updated by SessionStart hook (scripts/deploy.sh)settings.json) push directly from ~/.claude as the one exceptionSee references/development-workflow.md for setup, symlink workflow, and migration from worktree.
When asked to configure a project, produce an audit like this:
## Configuration Audit
### Global Config (already have)
- **Permissions**: deny secrets/keys, allow git commands
- **MCP**: perplexity-mcp (personal)
- **Hooks**: PostToolUse formatter, Stop session-title
- **Model**: opus
### Project Needs
- Custom permission for `./packages/**` paths
- MCP server for project's Supabase instance
- Agent for project's deployment workflow
### Recommendations
1. **Add to `.claude/settings.json`:**
```json
{"permissions": {"allow": ["Read(./packages/**)"]}}
Reasoning: Project-specific path not in global config
Add to .mcp.json:
{"mcpServers": {"supabase": {...}}}
Reasoning: Project database, needs team access via git
Skip adding:
## Common Tasks
### Add a project-specific permission
First check global: `cat ~/.claude/settings.json | jq .permissions`
If not covered, add to `.claude/settings.json`:
```json
"permissions": {"allow": ["Bash(npm run build:*)"]}
Add to .mcp.json (not ~/.claude.json) so team gets it:
{"mcpServers": {"project-db": {"command": "...", "env": {"DB_URL": "${PROJECT_DB_URL}"}}}}
Create .claude/agents/deploy.md for project workflows.
Keep personal agents in ~/.claude/agents/.
Project settings merge with (and can override) global:
// .claude/settings.json - stricter for this project
{"permissions": {"deny": ["Write(./contracts/**)"]}}