Awesome-claude-code claude-code-knowledge
Comprehensive knowledge base for Claude Code formats, patterns, and configuration. Use when creating, improving, or auditing commands, agents, skills, hooks, memory, plugins, or settings.
git clone https://github.com/dykyi-roman/awesome-claude-code
T=$(mktemp -d) && git clone --depth=1 https://github.com/dykyi-roman/awesome-claude-code "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/claude-code-knowledge" ~/.claude/skills/dykyi-roman-awesome-claude-code-claude-code-knowledge && rm -rf "$T"
skills/claude-code-knowledge/SKILL.mdClaude Code Knowledge Base
Component Types Overview
| Type | Path | Invocation | Context Cost |
|---|---|---|---|
| Command | | | Loaded on invocation |
| Agent | | | Loaded into subagent context |
| Skill | | Auto or | Loaded by description match |
| Hook | | Automatic on event | Zero (shell script) |
| Rules | | Auto-loaded always | Always in system prompt |
| Memory | (various levels) | Auto-loaded always | Always in system prompt |
Commands
Path:
.claude/commands/name.md
Invocation: /name or /name arguments
--- description: Required. What the command does. allowed-tools: Optional. Restrict tools (comma-separated). model: Optional. opus/sonnet/haiku — or alias from settings. argument-hint: Optional. Hint shown in autocomplete. --- Command instructions here. Use $ARGUMENTS for full argument string. Use $ARGUMENTS[0], $ARGUMENTS[1] for positional args. Use $1, $2 as shorthand for $ARGUMENTS[N]. Use ${CLAUDE_SESSION_ID} for session identifier.
Key rules:
- Equivalent to
with.claude/skills/name/SKILL.mduser-invocable: true - Commands in subdirectories:
→.claude/commands/sub/name.md/sub/name - Budget:
(default 15000 chars)SLASH_COMMAND_TOOL_CHAR_BUDGET
Agents (Subagents)
Path:
.claude/agents/name.md
Invocation: Task tool with subagent_type="name"
--- name: agent-name # required, matches filename without .md description: Required. When to use. "PROACTIVELY" for auto-invoke. tools: Optional. All by default. Comma-separated. disallowedTools: Optional. Denylist complement to tools. model: Optional. opus | sonnet | haiku | inherit permissionMode: Optional. default | acceptEdits | plan | dontAsk | delegate | bypassPermissions skills: Optional. Auto-load skills (comma-separated inline list). hooks: Optional. Lifecycle hooks scoped to this agent. memory: Optional. user | project | local — CLAUDE.md scope to load. --- Agent system prompt here.
Permission modes:
— ask user for each tool usedefault
— auto-allow file edits, ask for othersacceptEdits
— read-only exploration, no writesplan
— run without asking, within sandboxdontAsk
— inherit parent permissionsdelegate
— skip all permission checks (dangerous)bypassPermissions
Built-in subagent types: Explore, Plan, general-purpose, Bash, statusline-setup, claude-code-guide
Execution: foreground (blocks) or background (
run_in_background: true). Resume via agent ID.
Scope priority: CLI
--agents flag > project .claude/agents/ > user ~/.claude/agents/ > plugin agents
Skills
Path:
.claude/skills/name/SKILL.md
Invocation: /name (if user-invocable) or auto-loaded by agent/description match
--- name: skill-name # lowercase, hyphens, max 64 chars description: Required. What and when. Max 1024 chars. allowed-tools: Optional. Restrict tools. model: Optional. Model override when skill is active. context: Optional. "fork" for isolated subagent execution. agent: Optional. Which subagent type to run in (Explore, Plan, etc). hooks: Optional. Lifecycle hooks scoped to this skill. disable-model-invocation: true # only user can invoke user-invocable: false # only Claude can invoke --- Skill instructions here. Use $ARGUMENTS, $ARGUMENTS[N], $N for user input. Use !`command` for dynamic context injection (shell output inserted).
Folder structure:
skill-name/ ├── SKILL.md # required, max 500 lines ├── references/ # large content extracted here ├── scripts/ # executable code └── assets/ # templates, resources
Invocation control matrix:
| | Who can invoke |
|---|---|---|
| false (default) | true (default) | Both user and Claude |
| true | true | User only (via ) |
| false | false | Claude only (auto-load) |
| true | false | Nobody (disabled) |
Hooks
Path:
.claude/settings.json (or agent/skill frontmatter hooks: field)
Hook Events (12)
| Event | When | Matcher | Can Block |
|---|---|---|---|
| Before tool execution | Tool name | Yes |
| After tool execution | Tool name | No |
| On notification | — | No |
| Agent stops | — | No |
| Subagent completes | Agent name | No |
| Before context compaction | — | No |
| After context compaction | — | No |
| Tool execution error | Tool name | No |
| Before user message processed | — | No |
| After user message processed | — | No |
| Session begins | — | No |
| Session ends | — | No |
Hook Types (3)
{"type": "command", "command": "./script.sh"} {"type": "prompt", "prompt": "Check if output is safe"} {"type": "agent", "agent": "validator-agent"}
Exit Codes
| Code | Behavior |
|---|---|
| 0 | Allow (continue) |
| 2 | Block (deny tool use, PreToolUse only) |
| Other | Log warning, continue |
Hook Configuration
{ "hooks": { "PreToolUse": [ { "matcher": "Write|Edit", "hooks": [ {"type": "command", "command": "php -l $CLAUDE_FILE_PATH", "async": false} ] } ] } }
Matcher patterns: exact name,
| OR, regex. MCP tools: mcp__server__tool.
For comprehensive hooks reference see references/hooks-reference.md.
Memory & CLAUDE.md
Hierarchy (top to bottom, higher = higher priority)
| Level | Location | Scope |
|---|---|---|
| Managed | System dirs (enterprise) | Organization-wide |
| User | | All user projects |
| User rules | | All user projects |
| Project | (project root) | This project |
| Project rules | | This project |
| Local | (project root, auto-gitignored) | This machine only |
| Nested | , | Subdirectory context |
Rules Files
.claude/rules/*.md — modular rules, always loaded into system prompt.
Path-specific rules via
paths frontmatter:
--- paths: - src/Domain/** - src/Application/** --- These rules apply only when working with files matching the glob patterns above.
Import Syntax
@path/to/file.md # relative to current file @/absolute/path.md # absolute path @~/user/path.md # home directory
Import recursion limit: 5 hops max.
Commands
— view and edit memory files/memory
— generate initial CLAUDE.md from project analysis/init
For full reference see references/memory-and-rules.md.
Plugins
Path:
.claude-plugin/plugin.json (plugin root)
{ "name": "my-plugin", "description": "What this plugin provides", "version": "1.0.0", "author": "Name", "repository": "https://github.com/user/repo" }
Plugin structure:
.claude-plugin/ ├── plugin.json # manifest (required) ├── commands/ # namespaced as /plugin:command ├── agents/ # available as subagent_type ├── skills/ # namespaced as /plugin:skill ├── hooks/hooks.json # plugin-scoped hooks ├── .mcp.json # MCP server config └── .lsp.json # LSP server config
Namespaced invocation:
/plugin-name:skill-name
Installation sources: GitHub, Git URL, NPM, File path, Directory.
For full reference see references/plugins-reference.md.
Permissions
Rule Syntax
{ "permissions": { "allow": ["Read", "Glob", "Grep"], "deny": ["Bash(rm *)"], "ask": ["Write", "Edit"] } }
Specifier patterns:
| Pattern | Example | Matches |
|---|---|---|
| | All Read calls |
| | Exact command |
| | Gitignore-style glob |
| | Domain filter |
| | MCP tool |
| | Specific subagent |
Evaluation order: deny → ask → allow (deny wins over allow)
For full reference see references/settings-and-permissions.md.
MCP (Model Context Protocol)
Config:
.mcp.json (project root) or in settings.json
{ "mcpServers": { "server-name": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-name"], "env": {"API_KEY": "..."} } } }
Tool naming:
mcp__servername__toolname
Scope hierarchy: project
.mcp.json > user settings > plugin .mcp.json
Permission:
enableAllProjectMcpServers, allowedMcpServers, deniedMcpServers in settings.
Settings
Hierarchy: managed > CLI args > local > project > user
| Level | Location |
|---|---|
| User | |
| Project | |
| Local | (gitignored) |
| Managed | Enterprise system dirs |
Key settings areas: permissions, hooks, sandbox, MCP, model config, context management, attribution.
For full schema reference see references/settings-and-permissions.md.
Decision Framework
When to use which component type:
| Goal | Best Component | Reason |
|---|---|---|
| Reusable saved prompt | Command | User invokes, low context cost |
| Complex analysis in isolation | Agent | Separate context window |
| Knowledge base / templates | Skill | Auto-loaded, shared across agents |
| Auto-trigger on events | Hook | Zero context cost, shell execution |
| Project-wide instructions | CLAUDE.md | Always in context |
| Path-specific rules | Rules () | Conditional loading |
| Distributable extension | Plugin | Namespaced, installable |
| External tool integration | MCP | Standardized protocol |
Context Cost Awareness
| Component | Context Budget Impact |
|---|---|
| CLAUDE.md + rules | Always loaded (~500 lines recommended max) |
| Skills (auto-loaded) | Loaded when description matches (~15K chars budget) |
| Skills (by agent) | Loaded into agent's context window |
| Agents | Separate context window (no parent cost) |
| Hooks (command type) | Zero context cost (shell execution) |
| Hooks (prompt/agent type) | Uses context for LLM evaluation |
| MCP tools | Tool descriptions always in context |
| Plugins | Components loaded per their type rules |
Patterns
Parallel Agents
Run in parallel: 1. Task: researcher — study architecture 2. Task: security-scanner — check security 3. Task: performance-analyzer — check performance Wait for all and combine results.
Progressive Disclosure
SKILL.md — brief instructions (max 500 lines) references/ — details loaded when needed scripts/ — execute without reading into context
Chained Agents
1. researcher → studies the task 2. planner → creates plan based on research 3. implementer → implements the plan 4. reviewer → reviews implementation
Agent Teams (Coordinator Pattern)
coordinator (opus) → delegates via Task tool ├── auditor-1 (sonnet, parallel) ├── auditor-2 (sonnet, parallel) └── generator (sonnet, sequential after audit) Coordinator uses TaskCreate/TaskUpdate for progress tracking.
Plugin Distribution
Package as .claude-plugin/ → publish to GitHub/NPM Users install: enabledPlugins in settings Skills namespaced: /plugin-name:skill-name
Validation Checklists
Commands
-
is filled and specificdescription - Path:
.claude/commands/*.md -
used if$ARGUMENTS
definedargument-hint -
specified consciously (opus for complex, haiku for fast)model - Instructions are clear and step-by-step
Agents
-
andname
are filleddescription -
matches filename (withoutname
).md -
are minimally necessarytools -
used if most tools needed except fewdisallowedTools -
chosen consciouslymodel -
appropriate for taskpermissionMode -
is comma-separated inline list (not YAML array)skills: - Coordinators have
in toolsTaskCreate, TaskUpdate - Coordinators have
in skillstask-progress-knowledge
Skills
-
is lowercase with hyphens, matches folder namename -
< 1024 characters, explains "when to use"description -
< 500 linesSKILL.md - Large content extracted to
references/ -
if needs isolated executioncontext: fork - Path:
.claude/skills/name/SKILL.md
Hooks
- JSON is valid
- Event name is one of 12 valid events
-
is correct tool/agent name or patternmatcher -
script exists and is executablecommand - Exit codes handled properly (0=allow, 2=block)
-
only for non-blocking operationsasync: true
Memory/Rules
-
< 500 lines (recommended)CLAUDE.md -
for modular rules.claude/rules/*.md -
inCLAUDE.local.md.gitignore -
resolve (max 5 hops)@imports -
frontmatter uses valid glob patternspaths
Settings
- Valid JSON in
settings.json - Permission rules follow deny → ask → allow order
-
is gitignoredsettings.local.json - Sandbox configured if auto-allowing Bash
- MCP servers explicitly allowed/denied
Reference Files
Detailed documentation for specific areas:
- Hooks Reference — all 12 events, 3 types, matchers, I/O, exit codes
- Skills Advanced — context:fork, agent, hooks, model, invocation control
- Subagents Advanced — memory, hooks, disallowedTools, background, resume
- Memory and Rules — CLAUDE.md hierarchy, rules/, @imports, paths
- Plugins Reference — plugin structure, manifest, marketplace, migration
- Settings and Permissions — full schema, sandbox, permissions, env vars