[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-anthropic-plugin-settings":3,"mdc-fecazu-key":38,"related-repo-anthropic-plugin-settings":5692,"related-org-anthropic-plugin-settings":5797},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":33,"sourceUrl":36,"mdContent":37},"plugin-settings","manage plugin settings and configuration","This skill should be used when the user asks about \"plugin settings\", \"store plugin configuration\", \"user-configurable plugin\", \".local.md files\", \"plugin state files\", \"read YAML frontmatter\", \"per-project plugin settings\", or wants to make plugin behavior configurable. Documents the .claude\u002Fplugin-name.local.md pattern for storing plugin-specific configuration with YAML frontmatter and markdown content.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"anthropic","Anthropic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fanthropic.png","anthropics",[13,17,18,21],{"name":14,"slug":15,"type":16},"Configuration","configuration","tag",{"name":9,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"YAML","yaml",{"name":22,"slug":23,"type":16},"Plugin Development","plugin-development",32228,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official","2026-04-10T04:55:42.635238",null,3591,[30,31,32],"claude-code","mcp","skills",{"repoUrl":25,"stars":24,"forks":28,"topics":34,"description":35},[30,31,32],"Official, Anthropic-managed directory of high quality Claude Code Plugins.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fclaude-plugins-official\u002Ftree\u002FHEAD\u002Fplugins\u002Fplugin-dev\u002Fskills\u002Fplugin-settings","---\nname: plugin-settings\ndescription: This skill should be used when the user asks about \"plugin settings\", \"store plugin configuration\", \"user-configurable plugin\", \".local.md files\", \"plugin state files\", \"read YAML frontmatter\", \"per-project plugin settings\", or wants to make plugin behavior configurable. Documents the .claude\u002Fplugin-name.local.md pattern for storing plugin-specific configuration with YAML frontmatter and markdown content.\nversion: 0.1.0\n---\n\n# Plugin Settings Pattern for Claude Code Plugins\n\n## Overview\n\nPlugins can store user-configurable settings and state in `.claude\u002Fplugin-name.local.md` files within the project directory. This pattern uses YAML frontmatter for structured configuration and markdown content for prompts or additional context.\n\n**Key characteristics:**\n- File location: `.claude\u002Fplugin-name.local.md` in project root\n- Structure: YAML frontmatter + markdown body\n- Purpose: Per-project plugin configuration and state\n- Usage: Read from hooks, commands, and agents\n- Lifecycle: User-managed (not in git, should be in `.gitignore`)\n\n## File Structure\n\n### Basic Template\n\n```markdown\n---\nenabled: true\nsetting1: value1\nsetting2: value2\nnumeric_setting: 42\nlist_setting: [\"item1\", \"item2\"]\n---\n\n# Additional Context\n\nThis markdown body can contain:\n- Task descriptions\n- Additional instructions\n- Prompts to feed back to Claude\n- Documentation or notes\n```\n\n### Example: Plugin State File\n\n**.claude\u002Fmy-plugin.local.md:**\n```markdown\n---\nenabled: true\nstrict_mode: false\nmax_retries: 3\nnotification_level: info\ncoordinator_session: team-leader\n---\n\n# Plugin Configuration\n\nThis plugin is configured for standard validation mode.\nContact @team-lead with questions.\n```\n\n## Reading Settings Files\n\n### From Hooks (Bash Scripts)\n\n**Pattern: Check existence and parse frontmatter**\n\n```bash\n#!\u002Fbin\u002Fbash\nset -euo pipefail\n\n# Define state file path\nSTATE_FILE=\".claude\u002Fmy-plugin.local.md\"\n\n# Quick exit if file doesn't exist\nif [[ ! -f \"$STATE_FILE\" ]]; then\n  exit 0  # Plugin not configured, skip\nfi\n\n# Parse YAML frontmatter (between --- markers)\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$STATE_FILE\")\n\n# Extract individual fields\nENABLED=$(echo \"$FRONTMATTER\" | grep '^enabled:' | sed 's\u002Fenabled: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\nSTRICT_MODE=$(echo \"$FRONTMATTER\" | grep '^strict_mode:' | sed 's\u002Fstrict_mode: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\n\n# Check if enabled\nif [[ \"$ENABLED\" != \"true\" ]]; then\n  exit 0  # Disabled\nfi\n\n# Use configuration in hook logic\nif [[ \"$STRICT_MODE\" == \"true\" ]]; then\n  # Apply strict validation\n  # ...\nfi\n```\n\nSee `examples\u002Fread-settings-hook.sh` for complete working example.\n\n### From Commands\n\nCommands can read settings files to customize behavior:\n\n```markdown\n---\ndescription: Process data with plugin\nallowed-tools: [\"Read\", \"Bash\"]\n---\n\n# Process Command\n\nSteps:\n1. Check if settings exist at `.claude\u002Fmy-plugin.local.md`\n2. Read configuration using Read tool\n3. Parse YAML frontmatter to extract settings\n4. Apply settings to processing logic\n5. Execute with configured behavior\n```\n\n### From Agents\n\nAgents can reference settings in their instructions:\n\n```markdown\n---\nname: configured-agent\ndescription: Agent that adapts to project settings\n---\n\nCheck for plugin settings at `.claude\u002Fmy-plugin.local.md`.\nIf present, parse YAML frontmatter and adapt behavior according to:\n- enabled: Whether plugin is active\n- mode: Processing mode (strict, standard, lenient)\n- Additional configuration fields\n```\n\n## Parsing Techniques\n\n### Extract Frontmatter\n\n```bash\n# Extract everything between --- markers\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$FILE\")\n```\n\n### Read Individual Fields\n\n**String fields:**\n```bash\nVALUE=$(echo \"$FRONTMATTER\" | grep '^field_name:' | sed 's\u002Ffield_name: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\n```\n\n**Boolean fields:**\n```bash\nENABLED=$(echo \"$FRONTMATTER\" | grep '^enabled:' | sed 's\u002Fenabled: *\u002F\u002F')\n# Compare: if [[ \"$ENABLED\" == \"true\" ]]; then\n```\n\n**Numeric fields:**\n```bash\nMAX=$(echo \"$FRONTMATTER\" | grep '^max_value:' | sed 's\u002Fmax_value: *\u002F\u002F')\n# Use: if [[ $MAX -gt 100 ]]; then\n```\n\n### Read Markdown Body\n\nExtract content after second `---`:\n\n```bash\n# Get everything after closing ---\nBODY=$(awk '\u002F^---$\u002F{i++; next} i>=2' \"$FILE\")\n```\n\n## Common Patterns\n\n### Pattern 1: Temporarily Active Hooks\n\nUse settings file to control hook activation:\n\n```bash\n#!\u002Fbin\u002Fbash\nSTATE_FILE=\".claude\u002Fsecurity-scan.local.md\"\n\n# Quick exit if not configured\nif [[ ! -f \"$STATE_FILE\" ]]; then\n  exit 0\nfi\n\n# Read enabled flag\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$STATE_FILE\")\nENABLED=$(echo \"$FRONTMATTER\" | grep '^enabled:' | sed 's\u002Fenabled: *\u002F\u002F')\n\nif [[ \"$ENABLED\" != \"true\" ]]; then\n  exit 0  # Disabled\nfi\n\n# Run hook logic\n# ...\n```\n\n**Use case:** Enable\u002Fdisable hooks without editing hooks.json (requires restart).\n\n### Pattern 2: Agent State Management\n\nStore agent-specific state and configuration:\n\n**.claude\u002Fmulti-agent-swarm.local.md:**\n```markdown\n---\nagent_name: auth-agent\ntask_number: 3.5\npr_number: 1234\ncoordinator_session: team-leader\nenabled: true\ndependencies: [\"Task 3.4\"]\n---\n\n# Task Assignment\n\nImplement JWT authentication for the API.\n\n**Success Criteria:**\n- Authentication endpoints created\n- Tests passing\n- PR created and CI green\n```\n\nRead from hooks to coordinate agents:\n\n```bash\nAGENT_NAME=$(echo \"$FRONTMATTER\" | grep '^agent_name:' | sed 's\u002Fagent_name: *\u002F\u002F')\nCOORDINATOR=$(echo \"$FRONTMATTER\" | grep '^coordinator_session:' | sed 's\u002Fcoordinator_session: *\u002F\u002F')\n\n# Send notification to coordinator\ntmux send-keys -t \"$COORDINATOR\" \"Agent $AGENT_NAME completed task\" Enter\n```\n\n### Pattern 3: Configuration-Driven Behavior\n\n**.claude\u002Fmy-plugin.local.md:**\n```markdown\n---\nvalidation_level: strict\nmax_file_size: 1000000\nallowed_extensions: [\".js\", \".ts\", \".tsx\"]\nenable_logging: true\n---\n\n# Validation Configuration\n\nStrict mode enabled for this project.\nAll writes validated against security policies.\n```\n\nUse in hooks or commands:\n\n```bash\nLEVEL=$(echo \"$FRONTMATTER\" | grep '^validation_level:' | sed 's\u002Fvalidation_level: *\u002F\u002F')\n\ncase \"$LEVEL\" in\n  strict)\n    # Apply strict validation\n    ;;\n  standard)\n    # Apply standard validation\n    ;;\n  lenient)\n    # Apply lenient validation\n    ;;\nesac\n```\n\n## Creating Settings Files\n\n### From Commands\n\nCommands can create settings files:\n\n```markdown\n# Setup Command\n\nSteps:\n1. Ask user for configuration preferences\n2. Create `.claude\u002Fmy-plugin.local.md` with YAML frontmatter\n3. Set appropriate values based on user input\n4. Inform user that settings are saved\n5. Remind user to restart Claude Code for hooks to recognize changes\n```\n\n### Template Generation\n\nProvide template in plugin README:\n\n```markdown\n## Configuration\n\nCreate `.claude\u002Fmy-plugin.local.md` in your project:\n\n\\`\\`\\`markdown\n---\nenabled: true\nmode: standard\nmax_retries: 3\n---\n\n# Plugin Configuration\n\nYour settings are active.\n\\`\\`\\`\n\nAfter creating or editing, restart Claude Code for changes to take effect.\n```\n\n## Best Practices\n\n### File Naming\n\n✅ **DO:**\n- Use `.claude\u002Fplugin-name.local.md` format\n- Match plugin name exactly\n- Use `.local.md` suffix for user-local files\n\n❌ **DON'T:**\n- Use different directory (not `.claude\u002F`)\n- Use inconsistent naming\n- Use `.md` without `.local` (might be committed)\n\n### Gitignore\n\nAlways add to `.gitignore`:\n\n```gitignore\n.claude\u002F*.local.md\n.claude\u002F*.local.json\n```\n\nDocument this in plugin README.\n\n### Defaults\n\nProvide sensible defaults when settings file doesn't exist:\n\n```bash\nif [[ ! -f \"$STATE_FILE\" ]]; then\n  # Use defaults\n  ENABLED=true\n  MODE=standard\nelse\n  # Read from file\n  # ...\nfi\n```\n\n### Validation\n\nValidate settings values:\n\n```bash\nMAX=$(echo \"$FRONTMATTER\" | grep '^max_value:' | sed 's\u002Fmax_value: *\u002F\u002F')\n\n# Validate numeric range\nif ! [[ \"$MAX\" =~ ^[0-9]+$ ]] || [[ $MAX -lt 1 ]] || [[ $MAX -gt 100 ]]; then\n  echo \"⚠️  Invalid max_value in settings (must be 1-100)\" >&2\n  MAX=10  # Use default\nfi\n```\n\n### Restart Requirement\n\n**Important:** Settings changes require Claude Code restart.\n\nDocument in your README:\n\n```markdown\n## Changing Settings\n\nAfter editing `.claude\u002Fmy-plugin.local.md`:\n1. Save the file\n2. Exit Claude Code\n3. Restart: `claude` or `cc`\n4. New settings will be loaded\n```\n\nHooks cannot be hot-swapped within a session.\n\n## Security Considerations\n\n### Sanitize User Input\n\nWhen writing settings files from user input:\n\n```bash\n# Escape quotes in user input\nSAFE_VALUE=$(echo \"$USER_INPUT\" | sed 's\u002F\"\u002F\\\\\"\u002Fg')\n\n# Write to file\ncat > \"$STATE_FILE\" \u003C\u003CEOF\n---\nuser_setting: \"$SAFE_VALUE\"\n---\nEOF\n```\n\n### Validate File Paths\n\nIf settings contain file paths:\n\n```bash\nFILE_PATH=$(echo \"$FRONTMATTER\" | grep '^data_file:' | sed 's\u002Fdata_file: *\u002F\u002F')\n\n# Check for path traversal\nif [[ \"$FILE_PATH\" == *\"..\"* ]]; then\n  echo \"⚠️  Invalid path in settings (path traversal)\" >&2\n  exit 2\nfi\n```\n\n### Permissions\n\nSettings files should be:\n- Readable by user only (`chmod 600`)\n- Not committed to git\n- Not shared between users\n\n## Real-World Examples\n\n### multi-agent-swarm Plugin\n\n**.claude\u002Fmulti-agent-swarm.local.md:**\n```markdown\n---\nagent_name: auth-implementation\ntask_number: 3.5\npr_number: 1234\ncoordinator_session: team-leader\nenabled: true\ndependencies: [\"Task 3.4\"]\nadditional_instructions: Use JWT tokens, not sessions\n---\n\n# Task: Implement Authentication\n\nBuild JWT-based authentication for the REST API.\nCoordinate with auth-agent on shared types.\n```\n\n**Hook usage (agent-stop-notification.sh):**\n- Checks if file exists (line 15-18: quick exit if not)\n- Parses frontmatter to get coordinator_session, agent_name, enabled\n- Sends notifications to coordinator if enabled\n- Allows quick activation\u002Fdeactivation via `enabled: true\u002Ffalse`\n\n### ralph-loop Plugin\n\n**.claude\u002Fralph-loop.local.md:**\n```markdown\n---\niteration: 1\nmax_iterations: 10\ncompletion_promise: \"All tests passing and build successful\"\n---\n\nFix all the linting errors in the project.\nMake sure tests pass after each fix.\n```\n\n**Hook usage (stop-hook.sh):**\n- Checks if file exists (line 15-18: quick exit if not active)\n- Reads iteration count and max_iterations\n- Extracts completion_promise for loop termination\n- Reads body as the prompt to feed back\n- Updates iteration count on each loop\n\n## Quick Reference\n\n### File Location\n\n```\nproject-root\u002F\n└── .claude\u002F\n    └── plugin-name.local.md\n```\n\n### Frontmatter Parsing\n\n```bash\n# Extract frontmatter\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$FILE\")\n\n# Read field\nVALUE=$(echo \"$FRONTMATTER\" | grep '^field:' | sed 's\u002Ffield: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\n```\n\n### Body Parsing\n\n```bash\n# Extract body (after second ---)\nBODY=$(awk '\u002F^---$\u002F{i++; next} i>=2' \"$FILE\")\n```\n\n### Quick Exit Pattern\n\n```bash\nif [[ ! -f \".claude\u002Fmy-plugin.local.md\" ]]; then\n  exit 0  # Not configured\nfi\n```\n\n## Additional Resources\n\n### Reference Files\n\nFor detailed implementation patterns:\n\n- **`references\u002Fparsing-techniques.md`** - Complete guide to parsing YAML frontmatter and markdown bodies\n- **`references\u002Freal-world-examples.md`** - Deep dive into multi-agent-swarm and ralph-loop implementations\n\n### Example Files\n\nWorking examples in `examples\u002F`:\n\n- **`read-settings-hook.sh`** - Hook that reads and uses settings\n- **`create-settings-command.md`** - Command that creates settings file\n- **`example-settings.md`** - Template settings file\n\n### Utility Scripts\n\nDevelopment tools in `scripts\u002F`:\n\n- **`validate-settings.sh`** - Validate settings file structure\n- **`parse-frontmatter.sh`** - Extract frontmatter fields\n\n## Implementation Workflow\n\nTo add settings to a plugin:\n\n1. Design settings schema (which fields, types, defaults)\n2. Create template file in plugin documentation\n3. Add gitignore entry for `.claude\u002F*.local.md`\n4. Implement settings parsing in hooks\u002Fcommands\n5. Use quick-exit pattern (check file exists, check enabled field)\n6. Document settings in plugin README with template\n7. Remind users that changes require Claude Code restart\n\nFocus on keeping settings simple and providing good defaults when settings file doesn't exist.\n",{"data":39,"body":41},{"name":4,"description":6,"version":40},"0.1.0",{"type":42,"children":43},"root",[44,53,60,75,84,129,135,142,402,408,416,562,568,574,582,1216,1229,1235,1240,1441,1447,1452,1582,1588,1594,1657,1663,1671,1772,1780,1866,1874,1963,1969,1981,2042,2048,2054,2059,2402,2412,2418,2423,2431,2663,2668,2897,2903,2910,3090,3095,3299,3305,3310,3315,3425,3431,3436,3597,3603,3609,3619,3651,3661,3701,3707,3718,3742,3747,3753,3758,3876,3882,3887,4157,4163,4173,4178,4308,4313,4319,4325,4330,4487,4493,4498,4696,4702,4707,4732,4738,4744,4751,4938,4946,4975,4981,4989,5092,5100,5128,5134,5140,5150,5156,5326,5332,5390,5396,5465,5471,5477,5482,5513,5519,5531,5576,5582,5594,5625,5631,5636,5681,5686],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"plugin-settings-pattern-for-claude-code-plugins",[50],{"type":51,"value":52},"text","Plugin Settings Pattern for Claude Code Plugins",{"type":45,"tag":54,"props":55,"children":57},"h2",{"id":56},"overview",[58],{"type":51,"value":59},"Overview",{"type":45,"tag":61,"props":62,"children":63},"p",{},[64,66,73],{"type":51,"value":65},"Plugins can store user-configurable settings and state in ",{"type":45,"tag":67,"props":68,"children":70},"code",{"className":69},[],[71],{"type":51,"value":72},".claude\u002Fplugin-name.local.md",{"type":51,"value":74}," files within the project directory. This pattern uses YAML frontmatter for structured configuration and markdown content for prompts or additional context.",{"type":45,"tag":61,"props":76,"children":77},{},[78],{"type":45,"tag":79,"props":80,"children":81},"strong",{},[82],{"type":51,"value":83},"Key characteristics:",{"type":45,"tag":85,"props":86,"children":87},"ul",{},[88,101,106,111,116],{"type":45,"tag":89,"props":90,"children":91},"li",{},[92,94,99],{"type":51,"value":93},"File location: ",{"type":45,"tag":67,"props":95,"children":97},{"className":96},[],[98],{"type":51,"value":72},{"type":51,"value":100}," in project root",{"type":45,"tag":89,"props":102,"children":103},{},[104],{"type":51,"value":105},"Structure: YAML frontmatter + markdown body",{"type":45,"tag":89,"props":107,"children":108},{},[109],{"type":51,"value":110},"Purpose: Per-project plugin configuration and state",{"type":45,"tag":89,"props":112,"children":113},{},[114],{"type":51,"value":115},"Usage: Read from hooks, commands, and agents",{"type":45,"tag":89,"props":117,"children":118},{},[119,121,127],{"type":51,"value":120},"Lifecycle: User-managed (not in git, should be in ",{"type":45,"tag":67,"props":122,"children":124},{"className":123},[],[125],{"type":51,"value":126},".gitignore",{"type":51,"value":128},")",{"type":45,"tag":54,"props":130,"children":132},{"id":131},"file-structure",[133],{"type":51,"value":134},"File Structure",{"type":45,"tag":136,"props":137,"children":139},"h3",{"id":138},"basic-template",[140],{"type":51,"value":141},"Basic Template",{"type":45,"tag":143,"props":144,"children":149},"pre",{"className":145,"code":146,"language":147,"meta":148,"style":148},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nenabled: true\nsetting1: value1\nsetting2: value2\nnumeric_setting: 42\nlist_setting: [\"item1\", \"item2\"]\n---\n\n# Additional Context\n\nThis markdown body can contain:\n- Task descriptions\n- Additional instructions\n- Prompts to feed back to Claude\n- Documentation or notes\n","markdown","",[150],{"type":45,"tag":67,"props":151,"children":152},{"__ignoreMap":148},[153,165,186,205,223,242,298,306,316,331,339,349,363,376,389],{"type":45,"tag":154,"props":155,"children":158},"span",{"class":156,"line":157},"line",1,[159],{"type":45,"tag":154,"props":160,"children":162},{"style":161},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[163],{"type":51,"value":164},"---\n",{"type":45,"tag":154,"props":166,"children":168},{"class":156,"line":167},2,[169,175,180],{"type":45,"tag":154,"props":170,"children":172},{"style":171},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[173],{"type":51,"value":174},"enabled",{"type":45,"tag":154,"props":176,"children":177},{"style":161},[178],{"type":51,"value":179},":",{"type":45,"tag":154,"props":181,"children":183},{"style":182},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[184],{"type":51,"value":185}," true\n",{"type":45,"tag":154,"props":187,"children":189},{"class":156,"line":188},3,[190,195,199],{"type":45,"tag":154,"props":191,"children":192},{"style":171},[193],{"type":51,"value":194},"setting1",{"type":45,"tag":154,"props":196,"children":197},{"style":161},[198],{"type":51,"value":179},{"type":45,"tag":154,"props":200,"children":202},{"style":201},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[203],{"type":51,"value":204}," value1\n",{"type":45,"tag":154,"props":206,"children":208},{"class":156,"line":207},4,[209,214,218],{"type":45,"tag":154,"props":210,"children":211},{"style":171},[212],{"type":51,"value":213},"setting2",{"type":45,"tag":154,"props":215,"children":216},{"style":161},[217],{"type":51,"value":179},{"type":45,"tag":154,"props":219,"children":220},{"style":201},[221],{"type":51,"value":222}," value2\n",{"type":45,"tag":154,"props":224,"children":226},{"class":156,"line":225},5,[227,232,236],{"type":45,"tag":154,"props":228,"children":229},{"style":171},[230],{"type":51,"value":231},"numeric_setting",{"type":45,"tag":154,"props":233,"children":234},{"style":161},[235],{"type":51,"value":179},{"type":45,"tag":154,"props":237,"children":239},{"style":238},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[240],{"type":51,"value":241}," 42\n",{"type":45,"tag":154,"props":243,"children":245},{"class":156,"line":244},6,[246,251,255,260,265,270,274,279,284,289,293],{"type":45,"tag":154,"props":247,"children":248},{"style":171},[249],{"type":51,"value":250},"list_setting",{"type":45,"tag":154,"props":252,"children":253},{"style":161},[254],{"type":51,"value":179},{"type":45,"tag":154,"props":256,"children":257},{"style":161},[258],{"type":51,"value":259}," [",{"type":45,"tag":154,"props":261,"children":262},{"style":161},[263],{"type":51,"value":264},"\"",{"type":45,"tag":154,"props":266,"children":267},{"style":201},[268],{"type":51,"value":269},"item1",{"type":45,"tag":154,"props":271,"children":272},{"style":161},[273],{"type":51,"value":264},{"type":45,"tag":154,"props":275,"children":276},{"style":161},[277],{"type":51,"value":278},",",{"type":45,"tag":154,"props":280,"children":281},{"style":161},[282],{"type":51,"value":283}," \"",{"type":45,"tag":154,"props":285,"children":286},{"style":201},[287],{"type":51,"value":288},"item2",{"type":45,"tag":154,"props":290,"children":291},{"style":161},[292],{"type":51,"value":264},{"type":45,"tag":154,"props":294,"children":295},{"style":161},[296],{"type":51,"value":297},"]\n",{"type":45,"tag":154,"props":299,"children":301},{"class":156,"line":300},7,[302],{"type":45,"tag":154,"props":303,"children":304},{"style":161},[305],{"type":51,"value":164},{"type":45,"tag":154,"props":307,"children":309},{"class":156,"line":308},8,[310],{"type":45,"tag":154,"props":311,"children":313},{"emptyLinePlaceholder":312},true,[314],{"type":51,"value":315},"\n",{"type":45,"tag":154,"props":317,"children":319},{"class":156,"line":318},9,[320,325],{"type":45,"tag":154,"props":321,"children":322},{"style":161},[323],{"type":51,"value":324},"# ",{"type":45,"tag":154,"props":326,"children":328},{"style":327},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[329],{"type":51,"value":330},"Additional Context\n",{"type":45,"tag":154,"props":332,"children":334},{"class":156,"line":333},10,[335],{"type":45,"tag":154,"props":336,"children":337},{"emptyLinePlaceholder":312},[338],{"type":51,"value":315},{"type":45,"tag":154,"props":340,"children":342},{"class":156,"line":341},11,[343],{"type":45,"tag":154,"props":344,"children":346},{"style":345},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[347],{"type":51,"value":348},"This markdown body can contain:\n",{"type":45,"tag":154,"props":350,"children":352},{"class":156,"line":351},12,[353,358],{"type":45,"tag":154,"props":354,"children":355},{"style":161},[356],{"type":51,"value":357},"-",{"type":45,"tag":154,"props":359,"children":360},{"style":345},[361],{"type":51,"value":362}," Task descriptions\n",{"type":45,"tag":154,"props":364,"children":366},{"class":156,"line":365},13,[367,371],{"type":45,"tag":154,"props":368,"children":369},{"style":161},[370],{"type":51,"value":357},{"type":45,"tag":154,"props":372,"children":373},{"style":345},[374],{"type":51,"value":375}," Additional instructions\n",{"type":45,"tag":154,"props":377,"children":379},{"class":156,"line":378},14,[380,384],{"type":45,"tag":154,"props":381,"children":382},{"style":161},[383],{"type":51,"value":357},{"type":45,"tag":154,"props":385,"children":386},{"style":345},[387],{"type":51,"value":388}," Prompts to feed back to Claude\n",{"type":45,"tag":154,"props":390,"children":392},{"class":156,"line":391},15,[393,397],{"type":45,"tag":154,"props":394,"children":395},{"style":161},[396],{"type":51,"value":357},{"type":45,"tag":154,"props":398,"children":399},{"style":345},[400],{"type":51,"value":401}," Documentation or notes\n",{"type":45,"tag":136,"props":403,"children":405},{"id":404},"example-plugin-state-file",[406],{"type":51,"value":407},"Example: Plugin State File",{"type":45,"tag":61,"props":409,"children":410},{},[411],{"type":45,"tag":79,"props":412,"children":413},{},[414],{"type":51,"value":415},".claude\u002Fmy-plugin.local.md:",{"type":45,"tag":143,"props":417,"children":419},{"className":145,"code":418,"language":147,"meta":148,"style":148},"---\nenabled: true\nstrict_mode: false\nmax_retries: 3\nnotification_level: info\ncoordinator_session: team-leader\n---\n\n# Plugin Configuration\n\nThis plugin is configured for standard validation mode.\nContact @team-lead with questions.\n",[420],{"type":45,"tag":67,"props":421,"children":422},{"__ignoreMap":148},[423,430,445,462,479,496,513,520,527,539,546,554],{"type":45,"tag":154,"props":424,"children":425},{"class":156,"line":157},[426],{"type":45,"tag":154,"props":427,"children":428},{"style":161},[429],{"type":51,"value":164},{"type":45,"tag":154,"props":431,"children":432},{"class":156,"line":167},[433,437,441],{"type":45,"tag":154,"props":434,"children":435},{"style":171},[436],{"type":51,"value":174},{"type":45,"tag":154,"props":438,"children":439},{"style":161},[440],{"type":51,"value":179},{"type":45,"tag":154,"props":442,"children":443},{"style":182},[444],{"type":51,"value":185},{"type":45,"tag":154,"props":446,"children":447},{"class":156,"line":188},[448,453,457],{"type":45,"tag":154,"props":449,"children":450},{"style":171},[451],{"type":51,"value":452},"strict_mode",{"type":45,"tag":154,"props":454,"children":455},{"style":161},[456],{"type":51,"value":179},{"type":45,"tag":154,"props":458,"children":459},{"style":182},[460],{"type":51,"value":461}," false\n",{"type":45,"tag":154,"props":463,"children":464},{"class":156,"line":207},[465,470,474],{"type":45,"tag":154,"props":466,"children":467},{"style":171},[468],{"type":51,"value":469},"max_retries",{"type":45,"tag":154,"props":471,"children":472},{"style":161},[473],{"type":51,"value":179},{"type":45,"tag":154,"props":475,"children":476},{"style":238},[477],{"type":51,"value":478}," 3\n",{"type":45,"tag":154,"props":480,"children":481},{"class":156,"line":225},[482,487,491],{"type":45,"tag":154,"props":483,"children":484},{"style":171},[485],{"type":51,"value":486},"notification_level",{"type":45,"tag":154,"props":488,"children":489},{"style":161},[490],{"type":51,"value":179},{"type":45,"tag":154,"props":492,"children":493},{"style":201},[494],{"type":51,"value":495}," info\n",{"type":45,"tag":154,"props":497,"children":498},{"class":156,"line":244},[499,504,508],{"type":45,"tag":154,"props":500,"children":501},{"style":171},[502],{"type":51,"value":503},"coordinator_session",{"type":45,"tag":154,"props":505,"children":506},{"style":161},[507],{"type":51,"value":179},{"type":45,"tag":154,"props":509,"children":510},{"style":201},[511],{"type":51,"value":512}," team-leader\n",{"type":45,"tag":154,"props":514,"children":515},{"class":156,"line":300},[516],{"type":45,"tag":154,"props":517,"children":518},{"style":161},[519],{"type":51,"value":164},{"type":45,"tag":154,"props":521,"children":522},{"class":156,"line":308},[523],{"type":45,"tag":154,"props":524,"children":525},{"emptyLinePlaceholder":312},[526],{"type":51,"value":315},{"type":45,"tag":154,"props":528,"children":529},{"class":156,"line":318},[530,534],{"type":45,"tag":154,"props":531,"children":532},{"style":161},[533],{"type":51,"value":324},{"type":45,"tag":154,"props":535,"children":536},{"style":327},[537],{"type":51,"value":538},"Plugin Configuration\n",{"type":45,"tag":154,"props":540,"children":541},{"class":156,"line":333},[542],{"type":45,"tag":154,"props":543,"children":544},{"emptyLinePlaceholder":312},[545],{"type":51,"value":315},{"type":45,"tag":154,"props":547,"children":548},{"class":156,"line":341},[549],{"type":45,"tag":154,"props":550,"children":551},{"style":345},[552],{"type":51,"value":553},"This plugin is configured for standard validation mode.\n",{"type":45,"tag":154,"props":555,"children":556},{"class":156,"line":351},[557],{"type":45,"tag":154,"props":558,"children":559},{"style":345},[560],{"type":51,"value":561},"Contact @team-lead with questions.\n",{"type":45,"tag":54,"props":563,"children":565},{"id":564},"reading-settings-files",[566],{"type":51,"value":567},"Reading Settings Files",{"type":45,"tag":136,"props":569,"children":571},{"id":570},"from-hooks-bash-scripts",[572],{"type":51,"value":573},"From Hooks (Bash Scripts)",{"type":45,"tag":61,"props":575,"children":576},{},[577],{"type":45,"tag":79,"props":578,"children":579},{},[580],{"type":51,"value":581},"Pattern: Check existence and parse frontmatter",{"type":45,"tag":143,"props":583,"children":587},{"className":584,"code":585,"language":586,"meta":148,"style":148},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","#!\u002Fbin\u002Fbash\nset -euo pipefail\n\n# Define state file path\nSTATE_FILE=\".claude\u002Fmy-plugin.local.md\"\n\n# Quick exit if file doesn't exist\nif [[ ! -f \"$STATE_FILE\" ]]; then\n  exit 0  # Plugin not configured, skip\nfi\n\n# Parse YAML frontmatter (between --- markers)\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$STATE_FILE\")\n\n# Extract individual fields\nENABLED=$(echo \"$FRONTMATTER\" | grep '^enabled:' | sed 's\u002Fenabled: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\nSTRICT_MODE=$(echo \"$FRONTMATTER\" | grep '^strict_mode:' | sed 's\u002Fstrict_mode: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\n\n# Check if enabled\nif [[ \"$ENABLED\" != \"true\" ]]; then\n  exit 0  # Disabled\nfi\n\n# Use configuration in hook logic\nif [[ \"$STRICT_MODE\" == \"true\" ]]; then\n  # Apply strict validation\n  # ...\nfi\n","bash",[588],{"type":45,"tag":67,"props":589,"children":590},{"__ignoreMap":148},[591,600,619,626,634,661,668,676,723,741,749,756,764,819,826,834,935,1030,1038,1047,1098,1115,1123,1131,1140,1190,1199,1208],{"type":45,"tag":154,"props":592,"children":593},{"class":156,"line":157},[594],{"type":45,"tag":154,"props":595,"children":597},{"style":596},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[598],{"type":51,"value":599},"#!\u002Fbin\u002Fbash\n",{"type":45,"tag":154,"props":601,"children":602},{"class":156,"line":167},[603,609,614],{"type":45,"tag":154,"props":604,"children":606},{"style":605},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[607],{"type":51,"value":608},"set",{"type":45,"tag":154,"props":610,"children":611},{"style":201},[612],{"type":51,"value":613}," -euo",{"type":45,"tag":154,"props":615,"children":616},{"style":201},[617],{"type":51,"value":618}," pipefail\n",{"type":45,"tag":154,"props":620,"children":621},{"class":156,"line":188},[622],{"type":45,"tag":154,"props":623,"children":624},{"emptyLinePlaceholder":312},[625],{"type":51,"value":315},{"type":45,"tag":154,"props":627,"children":628},{"class":156,"line":207},[629],{"type":45,"tag":154,"props":630,"children":631},{"style":596},[632],{"type":51,"value":633},"# Define state file path\n",{"type":45,"tag":154,"props":635,"children":636},{"class":156,"line":225},[637,642,647,651,656],{"type":45,"tag":154,"props":638,"children":639},{"style":345},[640],{"type":51,"value":641},"STATE_FILE",{"type":45,"tag":154,"props":643,"children":644},{"style":161},[645],{"type":51,"value":646},"=",{"type":45,"tag":154,"props":648,"children":649},{"style":161},[650],{"type":51,"value":264},{"type":45,"tag":154,"props":652,"children":653},{"style":201},[654],{"type":51,"value":655},".claude\u002Fmy-plugin.local.md",{"type":45,"tag":154,"props":657,"children":658},{"style":161},[659],{"type":51,"value":660},"\"\n",{"type":45,"tag":154,"props":662,"children":663},{"class":156,"line":244},[664],{"type":45,"tag":154,"props":665,"children":666},{"emptyLinePlaceholder":312},[667],{"type":51,"value":315},{"type":45,"tag":154,"props":669,"children":670},{"class":156,"line":300},[671],{"type":45,"tag":154,"props":672,"children":673},{"style":596},[674],{"type":51,"value":675},"# Quick exit if file doesn't exist\n",{"type":45,"tag":154,"props":677,"children":678},{"class":156,"line":308},[679,685,690,695,700,704,709,713,718],{"type":45,"tag":154,"props":680,"children":682},{"style":681},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[683],{"type":51,"value":684},"if",{"type":45,"tag":154,"props":686,"children":687},{"style":161},[688],{"type":51,"value":689}," [[",{"type":45,"tag":154,"props":691,"children":692},{"style":161},[693],{"type":51,"value":694}," !",{"type":45,"tag":154,"props":696,"children":697},{"style":161},[698],{"type":51,"value":699}," -f",{"type":45,"tag":154,"props":701,"children":702},{"style":161},[703],{"type":51,"value":283},{"type":45,"tag":154,"props":705,"children":706},{"style":345},[707],{"type":51,"value":708},"$STATE_FILE",{"type":45,"tag":154,"props":710,"children":711},{"style":161},[712],{"type":51,"value":264},{"type":45,"tag":154,"props":714,"children":715},{"style":161},[716],{"type":51,"value":717}," ]];",{"type":45,"tag":154,"props":719,"children":720},{"style":681},[721],{"type":51,"value":722}," then\n",{"type":45,"tag":154,"props":724,"children":725},{"class":156,"line":318},[726,731,736],{"type":45,"tag":154,"props":727,"children":728},{"style":605},[729],{"type":51,"value":730},"  exit",{"type":45,"tag":154,"props":732,"children":733},{"style":238},[734],{"type":51,"value":735}," 0",{"type":45,"tag":154,"props":737,"children":738},{"style":596},[739],{"type":51,"value":740},"  # Plugin not configured, skip\n",{"type":45,"tag":154,"props":742,"children":743},{"class":156,"line":333},[744],{"type":45,"tag":154,"props":745,"children":746},{"style":681},[747],{"type":51,"value":748},"fi\n",{"type":45,"tag":154,"props":750,"children":751},{"class":156,"line":341},[752],{"type":45,"tag":154,"props":753,"children":754},{"emptyLinePlaceholder":312},[755],{"type":51,"value":315},{"type":45,"tag":154,"props":757,"children":758},{"class":156,"line":351},[759],{"type":45,"tag":154,"props":760,"children":761},{"style":596},[762],{"type":51,"value":763},"# Parse YAML frontmatter (between --- markers)\n",{"type":45,"tag":154,"props":765,"children":766},{"class":156,"line":365},[767,772,777,782,787,792,797,802,806,810,814],{"type":45,"tag":154,"props":768,"children":769},{"style":345},[770],{"type":51,"value":771},"FRONTMATTER",{"type":45,"tag":154,"props":773,"children":774},{"style":161},[775],{"type":51,"value":776},"=$(",{"type":45,"tag":154,"props":778,"children":779},{"style":327},[780],{"type":51,"value":781},"sed",{"type":45,"tag":154,"props":783,"children":784},{"style":201},[785],{"type":51,"value":786}," -n",{"type":45,"tag":154,"props":788,"children":789},{"style":161},[790],{"type":51,"value":791}," '",{"type":45,"tag":154,"props":793,"children":794},{"style":201},[795],{"type":51,"value":796},"\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }",{"type":45,"tag":154,"props":798,"children":799},{"style":161},[800],{"type":51,"value":801},"'",{"type":45,"tag":154,"props":803,"children":804},{"style":161},[805],{"type":51,"value":283},{"type":45,"tag":154,"props":807,"children":808},{"style":345},[809],{"type":51,"value":708},{"type":45,"tag":154,"props":811,"children":812},{"style":161},[813],{"type":51,"value":264},{"type":45,"tag":154,"props":815,"children":816},{"style":161},[817],{"type":51,"value":818},")\n",{"type":45,"tag":154,"props":820,"children":821},{"class":156,"line":378},[822],{"type":45,"tag":154,"props":823,"children":824},{"emptyLinePlaceholder":312},[825],{"type":51,"value":315},{"type":45,"tag":154,"props":827,"children":828},{"class":156,"line":391},[829],{"type":45,"tag":154,"props":830,"children":831},{"style":596},[832],{"type":51,"value":833},"# Extract individual fields\n",{"type":45,"tag":154,"props":835,"children":837},{"class":156,"line":836},16,[838,843,847,852,856,861,865,870,875,879,884,888,892,897,901,906,910,914,918,922,927,931],{"type":45,"tag":154,"props":839,"children":840},{"style":345},[841],{"type":51,"value":842},"ENABLED",{"type":45,"tag":154,"props":844,"children":845},{"style":161},[846],{"type":51,"value":776},{"type":45,"tag":154,"props":848,"children":849},{"style":605},[850],{"type":51,"value":851},"echo",{"type":45,"tag":154,"props":853,"children":854},{"style":161},[855],{"type":51,"value":283},{"type":45,"tag":154,"props":857,"children":858},{"style":345},[859],{"type":51,"value":860},"$FRONTMATTER",{"type":45,"tag":154,"props":862,"children":863},{"style":161},[864],{"type":51,"value":264},{"type":45,"tag":154,"props":866,"children":867},{"style":161},[868],{"type":51,"value":869}," |",{"type":45,"tag":154,"props":871,"children":872},{"style":327},[873],{"type":51,"value":874}," grep",{"type":45,"tag":154,"props":876,"children":877},{"style":161},[878],{"type":51,"value":791},{"type":45,"tag":154,"props":880,"children":881},{"style":201},[882],{"type":51,"value":883},"^enabled:",{"type":45,"tag":154,"props":885,"children":886},{"style":161},[887],{"type":51,"value":801},{"type":45,"tag":154,"props":889,"children":890},{"style":161},[891],{"type":51,"value":869},{"type":45,"tag":154,"props":893,"children":894},{"style":327},[895],{"type":51,"value":896}," sed",{"type":45,"tag":154,"props":898,"children":899},{"style":161},[900],{"type":51,"value":791},{"type":45,"tag":154,"props":902,"children":903},{"style":201},[904],{"type":51,"value":905},"s\u002Fenabled: *\u002F\u002F",{"type":45,"tag":154,"props":907,"children":908},{"style":161},[909],{"type":51,"value":801},{"type":45,"tag":154,"props":911,"children":912},{"style":161},[913],{"type":51,"value":869},{"type":45,"tag":154,"props":915,"children":916},{"style":327},[917],{"type":51,"value":896},{"type":45,"tag":154,"props":919,"children":920},{"style":161},[921],{"type":51,"value":791},{"type":45,"tag":154,"props":923,"children":924},{"style":201},[925],{"type":51,"value":926},"s\u002F^\"\\(.*\\)\"$\u002F\\1\u002F",{"type":45,"tag":154,"props":928,"children":929},{"style":161},[930],{"type":51,"value":801},{"type":45,"tag":154,"props":932,"children":933},{"style":161},[934],{"type":51,"value":818},{"type":45,"tag":154,"props":936,"children":938},{"class":156,"line":937},17,[939,944,948,952,956,960,964,968,972,976,981,985,989,993,997,1002,1006,1010,1014,1018,1022,1026],{"type":45,"tag":154,"props":940,"children":941},{"style":345},[942],{"type":51,"value":943},"STRICT_MODE",{"type":45,"tag":154,"props":945,"children":946},{"style":161},[947],{"type":51,"value":776},{"type":45,"tag":154,"props":949,"children":950},{"style":605},[951],{"type":51,"value":851},{"type":45,"tag":154,"props":953,"children":954},{"style":161},[955],{"type":51,"value":283},{"type":45,"tag":154,"props":957,"children":958},{"style":345},[959],{"type":51,"value":860},{"type":45,"tag":154,"props":961,"children":962},{"style":161},[963],{"type":51,"value":264},{"type":45,"tag":154,"props":965,"children":966},{"style":161},[967],{"type":51,"value":869},{"type":45,"tag":154,"props":969,"children":970},{"style":327},[971],{"type":51,"value":874},{"type":45,"tag":154,"props":973,"children":974},{"style":161},[975],{"type":51,"value":791},{"type":45,"tag":154,"props":977,"children":978},{"style":201},[979],{"type":51,"value":980},"^strict_mode:",{"type":45,"tag":154,"props":982,"children":983},{"style":161},[984],{"type":51,"value":801},{"type":45,"tag":154,"props":986,"children":987},{"style":161},[988],{"type":51,"value":869},{"type":45,"tag":154,"props":990,"children":991},{"style":327},[992],{"type":51,"value":896},{"type":45,"tag":154,"props":994,"children":995},{"style":161},[996],{"type":51,"value":791},{"type":45,"tag":154,"props":998,"children":999},{"style":201},[1000],{"type":51,"value":1001},"s\u002Fstrict_mode: *\u002F\u002F",{"type":45,"tag":154,"props":1003,"children":1004},{"style":161},[1005],{"type":51,"value":801},{"type":45,"tag":154,"props":1007,"children":1008},{"style":161},[1009],{"type":51,"value":869},{"type":45,"tag":154,"props":1011,"children":1012},{"style":327},[1013],{"type":51,"value":896},{"type":45,"tag":154,"props":1015,"children":1016},{"style":161},[1017],{"type":51,"value":791},{"type":45,"tag":154,"props":1019,"children":1020},{"style":201},[1021],{"type":51,"value":926},{"type":45,"tag":154,"props":1023,"children":1024},{"style":161},[1025],{"type":51,"value":801},{"type":45,"tag":154,"props":1027,"children":1028},{"style":161},[1029],{"type":51,"value":818},{"type":45,"tag":154,"props":1031,"children":1033},{"class":156,"line":1032},18,[1034],{"type":45,"tag":154,"props":1035,"children":1036},{"emptyLinePlaceholder":312},[1037],{"type":51,"value":315},{"type":45,"tag":154,"props":1039,"children":1041},{"class":156,"line":1040},19,[1042],{"type":45,"tag":154,"props":1043,"children":1044},{"style":596},[1045],{"type":51,"value":1046},"# Check if enabled\n",{"type":45,"tag":154,"props":1048,"children":1050},{"class":156,"line":1049},20,[1051,1055,1059,1063,1068,1072,1077,1081,1086,1090,1094],{"type":45,"tag":154,"props":1052,"children":1053},{"style":681},[1054],{"type":51,"value":684},{"type":45,"tag":154,"props":1056,"children":1057},{"style":161},[1058],{"type":51,"value":689},{"type":45,"tag":154,"props":1060,"children":1061},{"style":161},[1062],{"type":51,"value":283},{"type":45,"tag":154,"props":1064,"children":1065},{"style":345},[1066],{"type":51,"value":1067},"$ENABLED",{"type":45,"tag":154,"props":1069,"children":1070},{"style":161},[1071],{"type":51,"value":264},{"type":45,"tag":154,"props":1073,"children":1074},{"style":161},[1075],{"type":51,"value":1076}," !=",{"type":45,"tag":154,"props":1078,"children":1079},{"style":161},[1080],{"type":51,"value":283},{"type":45,"tag":154,"props":1082,"children":1083},{"style":201},[1084],{"type":51,"value":1085},"true",{"type":45,"tag":154,"props":1087,"children":1088},{"style":161},[1089],{"type":51,"value":264},{"type":45,"tag":154,"props":1091,"children":1092},{"style":161},[1093],{"type":51,"value":717},{"type":45,"tag":154,"props":1095,"children":1096},{"style":681},[1097],{"type":51,"value":722},{"type":45,"tag":154,"props":1099,"children":1101},{"class":156,"line":1100},21,[1102,1106,1110],{"type":45,"tag":154,"props":1103,"children":1104},{"style":605},[1105],{"type":51,"value":730},{"type":45,"tag":154,"props":1107,"children":1108},{"style":238},[1109],{"type":51,"value":735},{"type":45,"tag":154,"props":1111,"children":1112},{"style":596},[1113],{"type":51,"value":1114},"  # Disabled\n",{"type":45,"tag":154,"props":1116,"children":1118},{"class":156,"line":1117},22,[1119],{"type":45,"tag":154,"props":1120,"children":1121},{"style":681},[1122],{"type":51,"value":748},{"type":45,"tag":154,"props":1124,"children":1126},{"class":156,"line":1125},23,[1127],{"type":45,"tag":154,"props":1128,"children":1129},{"emptyLinePlaceholder":312},[1130],{"type":51,"value":315},{"type":45,"tag":154,"props":1132,"children":1134},{"class":156,"line":1133},24,[1135],{"type":45,"tag":154,"props":1136,"children":1137},{"style":596},[1138],{"type":51,"value":1139},"# Use configuration in hook logic\n",{"type":45,"tag":154,"props":1141,"children":1143},{"class":156,"line":1142},25,[1144,1148,1152,1156,1161,1165,1170,1174,1178,1182,1186],{"type":45,"tag":154,"props":1145,"children":1146},{"style":681},[1147],{"type":51,"value":684},{"type":45,"tag":154,"props":1149,"children":1150},{"style":161},[1151],{"type":51,"value":689},{"type":45,"tag":154,"props":1153,"children":1154},{"style":161},[1155],{"type":51,"value":283},{"type":45,"tag":154,"props":1157,"children":1158},{"style":345},[1159],{"type":51,"value":1160},"$STRICT_MODE",{"type":45,"tag":154,"props":1162,"children":1163},{"style":161},[1164],{"type":51,"value":264},{"type":45,"tag":154,"props":1166,"children":1167},{"style":161},[1168],{"type":51,"value":1169}," ==",{"type":45,"tag":154,"props":1171,"children":1172},{"style":161},[1173],{"type":51,"value":283},{"type":45,"tag":154,"props":1175,"children":1176},{"style":201},[1177],{"type":51,"value":1085},{"type":45,"tag":154,"props":1179,"children":1180},{"style":161},[1181],{"type":51,"value":264},{"type":45,"tag":154,"props":1183,"children":1184},{"style":161},[1185],{"type":51,"value":717},{"type":45,"tag":154,"props":1187,"children":1188},{"style":681},[1189],{"type":51,"value":722},{"type":45,"tag":154,"props":1191,"children":1193},{"class":156,"line":1192},26,[1194],{"type":45,"tag":154,"props":1195,"children":1196},{"style":596},[1197],{"type":51,"value":1198},"  # Apply strict validation\n",{"type":45,"tag":154,"props":1200,"children":1202},{"class":156,"line":1201},27,[1203],{"type":45,"tag":154,"props":1204,"children":1205},{"style":596},[1206],{"type":51,"value":1207},"  # ...\n",{"type":45,"tag":154,"props":1209,"children":1211},{"class":156,"line":1210},28,[1212],{"type":45,"tag":154,"props":1213,"children":1214},{"style":681},[1215],{"type":51,"value":748},{"type":45,"tag":61,"props":1217,"children":1218},{},[1219,1221,1227],{"type":51,"value":1220},"See ",{"type":45,"tag":67,"props":1222,"children":1224},{"className":1223},[],[1225],{"type":51,"value":1226},"examples\u002Fread-settings-hook.sh",{"type":51,"value":1228}," for complete working example.",{"type":45,"tag":136,"props":1230,"children":1232},{"id":1231},"from-commands",[1233],{"type":51,"value":1234},"From Commands",{"type":45,"tag":61,"props":1236,"children":1237},{},[1238],{"type":51,"value":1239},"Commands can read settings files to customize behavior:",{"type":45,"tag":143,"props":1241,"children":1243},{"className":145,"code":1242,"language":147,"meta":148,"style":148},"---\ndescription: Process data with plugin\nallowed-tools: [\"Read\", \"Bash\"]\n---\n\n# Process Command\n\nSteps:\n1. Check if settings exist at `.claude\u002Fmy-plugin.local.md`\n2. Read configuration using Read tool\n3. Parse YAML frontmatter to extract settings\n4. Apply settings to processing logic\n5. Execute with configured behavior\n",[1244],{"type":45,"tag":67,"props":1245,"children":1246},{"__ignoreMap":148},[1247,1254,1271,1321,1328,1335,1347,1354,1362,1389,1402,1415,1428],{"type":45,"tag":154,"props":1248,"children":1249},{"class":156,"line":157},[1250],{"type":45,"tag":154,"props":1251,"children":1252},{"style":161},[1253],{"type":51,"value":164},{"type":45,"tag":154,"props":1255,"children":1256},{"class":156,"line":167},[1257,1262,1266],{"type":45,"tag":154,"props":1258,"children":1259},{"style":171},[1260],{"type":51,"value":1261},"description",{"type":45,"tag":154,"props":1263,"children":1264},{"style":161},[1265],{"type":51,"value":179},{"type":45,"tag":154,"props":1267,"children":1268},{"style":201},[1269],{"type":51,"value":1270}," Process data with plugin\n",{"type":45,"tag":154,"props":1272,"children":1273},{"class":156,"line":188},[1274,1279,1283,1287,1291,1296,1300,1304,1308,1313,1317],{"type":45,"tag":154,"props":1275,"children":1276},{"style":171},[1277],{"type":51,"value":1278},"allowed-tools",{"type":45,"tag":154,"props":1280,"children":1281},{"style":161},[1282],{"type":51,"value":179},{"type":45,"tag":154,"props":1284,"children":1285},{"style":161},[1286],{"type":51,"value":259},{"type":45,"tag":154,"props":1288,"children":1289},{"style":161},[1290],{"type":51,"value":264},{"type":45,"tag":154,"props":1292,"children":1293},{"style":201},[1294],{"type":51,"value":1295},"Read",{"type":45,"tag":154,"props":1297,"children":1298},{"style":161},[1299],{"type":51,"value":264},{"type":45,"tag":154,"props":1301,"children":1302},{"style":161},[1303],{"type":51,"value":278},{"type":45,"tag":154,"props":1305,"children":1306},{"style":161},[1307],{"type":51,"value":283},{"type":45,"tag":154,"props":1309,"children":1310},{"style":201},[1311],{"type":51,"value":1312},"Bash",{"type":45,"tag":154,"props":1314,"children":1315},{"style":161},[1316],{"type":51,"value":264},{"type":45,"tag":154,"props":1318,"children":1319},{"style":161},[1320],{"type":51,"value":297},{"type":45,"tag":154,"props":1322,"children":1323},{"class":156,"line":207},[1324],{"type":45,"tag":154,"props":1325,"children":1326},{"style":161},[1327],{"type":51,"value":164},{"type":45,"tag":154,"props":1329,"children":1330},{"class":156,"line":225},[1331],{"type":45,"tag":154,"props":1332,"children":1333},{"emptyLinePlaceholder":312},[1334],{"type":51,"value":315},{"type":45,"tag":154,"props":1336,"children":1337},{"class":156,"line":244},[1338,1342],{"type":45,"tag":154,"props":1339,"children":1340},{"style":161},[1341],{"type":51,"value":324},{"type":45,"tag":154,"props":1343,"children":1344},{"style":327},[1345],{"type":51,"value":1346},"Process Command\n",{"type":45,"tag":154,"props":1348,"children":1349},{"class":156,"line":300},[1350],{"type":45,"tag":154,"props":1351,"children":1352},{"emptyLinePlaceholder":312},[1353],{"type":51,"value":315},{"type":45,"tag":154,"props":1355,"children":1356},{"class":156,"line":308},[1357],{"type":45,"tag":154,"props":1358,"children":1359},{"style":345},[1360],{"type":51,"value":1361},"Steps:\n",{"type":45,"tag":154,"props":1363,"children":1364},{"class":156,"line":318},[1365,1370,1375,1380,1384],{"type":45,"tag":154,"props":1366,"children":1367},{"style":161},[1368],{"type":51,"value":1369},"1.",{"type":45,"tag":154,"props":1371,"children":1372},{"style":345},[1373],{"type":51,"value":1374}," Check if settings exist at ",{"type":45,"tag":154,"props":1376,"children":1377},{"style":161},[1378],{"type":51,"value":1379},"`",{"type":45,"tag":154,"props":1381,"children":1382},{"style":201},[1383],{"type":51,"value":655},{"type":45,"tag":154,"props":1385,"children":1386},{"style":161},[1387],{"type":51,"value":1388},"`\n",{"type":45,"tag":154,"props":1390,"children":1391},{"class":156,"line":333},[1392,1397],{"type":45,"tag":154,"props":1393,"children":1394},{"style":161},[1395],{"type":51,"value":1396},"2.",{"type":45,"tag":154,"props":1398,"children":1399},{"style":345},[1400],{"type":51,"value":1401}," Read configuration using Read tool\n",{"type":45,"tag":154,"props":1403,"children":1404},{"class":156,"line":341},[1405,1410],{"type":45,"tag":154,"props":1406,"children":1407},{"style":161},[1408],{"type":51,"value":1409},"3.",{"type":45,"tag":154,"props":1411,"children":1412},{"style":345},[1413],{"type":51,"value":1414}," Parse YAML frontmatter to extract settings\n",{"type":45,"tag":154,"props":1416,"children":1417},{"class":156,"line":351},[1418,1423],{"type":45,"tag":154,"props":1419,"children":1420},{"style":161},[1421],{"type":51,"value":1422},"4.",{"type":45,"tag":154,"props":1424,"children":1425},{"style":345},[1426],{"type":51,"value":1427}," Apply settings to processing logic\n",{"type":45,"tag":154,"props":1429,"children":1430},{"class":156,"line":365},[1431,1436],{"type":45,"tag":154,"props":1432,"children":1433},{"style":161},[1434],{"type":51,"value":1435},"5.",{"type":45,"tag":154,"props":1437,"children":1438},{"style":345},[1439],{"type":51,"value":1440}," Execute with configured behavior\n",{"type":45,"tag":136,"props":1442,"children":1444},{"id":1443},"from-agents",[1445],{"type":51,"value":1446},"From Agents",{"type":45,"tag":61,"props":1448,"children":1449},{},[1450],{"type":51,"value":1451},"Agents can reference settings in their instructions:",{"type":45,"tag":143,"props":1453,"children":1455},{"className":145,"code":1454,"language":147,"meta":148,"style":148},"---\nname: configured-agent\ndescription: Agent that adapts to project settings\n---\n\nCheck for plugin settings at `.claude\u002Fmy-plugin.local.md`.\nIf present, parse YAML frontmatter and adapt behavior according to:\n- enabled: Whether plugin is active\n- mode: Processing mode (strict, standard, lenient)\n- Additional configuration fields\n",[1456],{"type":45,"tag":67,"props":1457,"children":1458},{"__ignoreMap":148},[1459,1466,1483,1499,1506,1513,1538,1546,1558,1570],{"type":45,"tag":154,"props":1460,"children":1461},{"class":156,"line":157},[1462],{"type":45,"tag":154,"props":1463,"children":1464},{"style":161},[1465],{"type":51,"value":164},{"type":45,"tag":154,"props":1467,"children":1468},{"class":156,"line":167},[1469,1474,1478],{"type":45,"tag":154,"props":1470,"children":1471},{"style":171},[1472],{"type":51,"value":1473},"name",{"type":45,"tag":154,"props":1475,"children":1476},{"style":161},[1477],{"type":51,"value":179},{"type":45,"tag":154,"props":1479,"children":1480},{"style":201},[1481],{"type":51,"value":1482}," configured-agent\n",{"type":45,"tag":154,"props":1484,"children":1485},{"class":156,"line":188},[1486,1490,1494],{"type":45,"tag":154,"props":1487,"children":1488},{"style":171},[1489],{"type":51,"value":1261},{"type":45,"tag":154,"props":1491,"children":1492},{"style":161},[1493],{"type":51,"value":179},{"type":45,"tag":154,"props":1495,"children":1496},{"style":201},[1497],{"type":51,"value":1498}," Agent that adapts to project settings\n",{"type":45,"tag":154,"props":1500,"children":1501},{"class":156,"line":207},[1502],{"type":45,"tag":154,"props":1503,"children":1504},{"style":161},[1505],{"type":51,"value":164},{"type":45,"tag":154,"props":1507,"children":1508},{"class":156,"line":225},[1509],{"type":45,"tag":154,"props":1510,"children":1511},{"emptyLinePlaceholder":312},[1512],{"type":51,"value":315},{"type":45,"tag":154,"props":1514,"children":1515},{"class":156,"line":244},[1516,1521,1525,1529,1533],{"type":45,"tag":154,"props":1517,"children":1518},{"style":345},[1519],{"type":51,"value":1520},"Check for plugin settings at ",{"type":45,"tag":154,"props":1522,"children":1523},{"style":161},[1524],{"type":51,"value":1379},{"type":45,"tag":154,"props":1526,"children":1527},{"style":201},[1528],{"type":51,"value":655},{"type":45,"tag":154,"props":1530,"children":1531},{"style":161},[1532],{"type":51,"value":1379},{"type":45,"tag":154,"props":1534,"children":1535},{"style":345},[1536],{"type":51,"value":1537},".\n",{"type":45,"tag":154,"props":1539,"children":1540},{"class":156,"line":300},[1541],{"type":45,"tag":154,"props":1542,"children":1543},{"style":345},[1544],{"type":51,"value":1545},"If present, parse YAML frontmatter and adapt behavior according to:\n",{"type":45,"tag":154,"props":1547,"children":1548},{"class":156,"line":308},[1549,1553],{"type":45,"tag":154,"props":1550,"children":1551},{"style":161},[1552],{"type":51,"value":357},{"type":45,"tag":154,"props":1554,"children":1555},{"style":345},[1556],{"type":51,"value":1557}," enabled: Whether plugin is active\n",{"type":45,"tag":154,"props":1559,"children":1560},{"class":156,"line":318},[1561,1565],{"type":45,"tag":154,"props":1562,"children":1563},{"style":161},[1564],{"type":51,"value":357},{"type":45,"tag":154,"props":1566,"children":1567},{"style":345},[1568],{"type":51,"value":1569}," mode: Processing mode (strict, standard, lenient)\n",{"type":45,"tag":154,"props":1571,"children":1572},{"class":156,"line":333},[1573,1577],{"type":45,"tag":154,"props":1574,"children":1575},{"style":161},[1576],{"type":51,"value":357},{"type":45,"tag":154,"props":1578,"children":1579},{"style":345},[1580],{"type":51,"value":1581}," Additional configuration fields\n",{"type":45,"tag":54,"props":1583,"children":1585},{"id":1584},"parsing-techniques",[1586],{"type":51,"value":1587},"Parsing Techniques",{"type":45,"tag":136,"props":1589,"children":1591},{"id":1590},"extract-frontmatter",[1592],{"type":51,"value":1593},"Extract Frontmatter",{"type":45,"tag":143,"props":1595,"children":1597},{"className":584,"code":1596,"language":586,"meta":148,"style":148},"# Extract everything between --- markers\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$FILE\")\n",[1598],{"type":45,"tag":67,"props":1599,"children":1600},{"__ignoreMap":148},[1601,1609],{"type":45,"tag":154,"props":1602,"children":1603},{"class":156,"line":157},[1604],{"type":45,"tag":154,"props":1605,"children":1606},{"style":596},[1607],{"type":51,"value":1608},"# Extract everything between --- markers\n",{"type":45,"tag":154,"props":1610,"children":1611},{"class":156,"line":167},[1612,1616,1620,1624,1628,1632,1636,1640,1644,1649,1653],{"type":45,"tag":154,"props":1613,"children":1614},{"style":345},[1615],{"type":51,"value":771},{"type":45,"tag":154,"props":1617,"children":1618},{"style":161},[1619],{"type":51,"value":776},{"type":45,"tag":154,"props":1621,"children":1622},{"style":327},[1623],{"type":51,"value":781},{"type":45,"tag":154,"props":1625,"children":1626},{"style":201},[1627],{"type":51,"value":786},{"type":45,"tag":154,"props":1629,"children":1630},{"style":161},[1631],{"type":51,"value":791},{"type":45,"tag":154,"props":1633,"children":1634},{"style":201},[1635],{"type":51,"value":796},{"type":45,"tag":154,"props":1637,"children":1638},{"style":161},[1639],{"type":51,"value":801},{"type":45,"tag":154,"props":1641,"children":1642},{"style":161},[1643],{"type":51,"value":283},{"type":45,"tag":154,"props":1645,"children":1646},{"style":345},[1647],{"type":51,"value":1648},"$FILE",{"type":45,"tag":154,"props":1650,"children":1651},{"style":161},[1652],{"type":51,"value":264},{"type":45,"tag":154,"props":1654,"children":1655},{"style":161},[1656],{"type":51,"value":818},{"type":45,"tag":136,"props":1658,"children":1660},{"id":1659},"read-individual-fields",[1661],{"type":51,"value":1662},"Read Individual Fields",{"type":45,"tag":61,"props":1664,"children":1665},{},[1666],{"type":45,"tag":79,"props":1667,"children":1668},{},[1669],{"type":51,"value":1670},"String fields:",{"type":45,"tag":143,"props":1672,"children":1674},{"className":584,"code":1673,"language":586,"meta":148,"style":148},"VALUE=$(echo \"$FRONTMATTER\" | grep '^field_name:' | sed 's\u002Ffield_name: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\n",[1675],{"type":45,"tag":67,"props":1676,"children":1677},{"__ignoreMap":148},[1678],{"type":45,"tag":154,"props":1679,"children":1680},{"class":156,"line":157},[1681,1686,1690,1694,1698,1702,1706,1710,1714,1718,1723,1727,1731,1735,1739,1744,1748,1752,1756,1760,1764,1768],{"type":45,"tag":154,"props":1682,"children":1683},{"style":345},[1684],{"type":51,"value":1685},"VALUE",{"type":45,"tag":154,"props":1687,"children":1688},{"style":161},[1689],{"type":51,"value":776},{"type":45,"tag":154,"props":1691,"children":1692},{"style":605},[1693],{"type":51,"value":851},{"type":45,"tag":154,"props":1695,"children":1696},{"style":161},[1697],{"type":51,"value":283},{"type":45,"tag":154,"props":1699,"children":1700},{"style":345},[1701],{"type":51,"value":860},{"type":45,"tag":154,"props":1703,"children":1704},{"style":161},[1705],{"type":51,"value":264},{"type":45,"tag":154,"props":1707,"children":1708},{"style":161},[1709],{"type":51,"value":869},{"type":45,"tag":154,"props":1711,"children":1712},{"style":327},[1713],{"type":51,"value":874},{"type":45,"tag":154,"props":1715,"children":1716},{"style":161},[1717],{"type":51,"value":791},{"type":45,"tag":154,"props":1719,"children":1720},{"style":201},[1721],{"type":51,"value":1722},"^field_name:",{"type":45,"tag":154,"props":1724,"children":1725},{"style":161},[1726],{"type":51,"value":801},{"type":45,"tag":154,"props":1728,"children":1729},{"style":161},[1730],{"type":51,"value":869},{"type":45,"tag":154,"props":1732,"children":1733},{"style":327},[1734],{"type":51,"value":896},{"type":45,"tag":154,"props":1736,"children":1737},{"style":161},[1738],{"type":51,"value":791},{"type":45,"tag":154,"props":1740,"children":1741},{"style":201},[1742],{"type":51,"value":1743},"s\u002Ffield_name: *\u002F\u002F",{"type":45,"tag":154,"props":1745,"children":1746},{"style":161},[1747],{"type":51,"value":801},{"type":45,"tag":154,"props":1749,"children":1750},{"style":161},[1751],{"type":51,"value":869},{"type":45,"tag":154,"props":1753,"children":1754},{"style":327},[1755],{"type":51,"value":896},{"type":45,"tag":154,"props":1757,"children":1758},{"style":161},[1759],{"type":51,"value":791},{"type":45,"tag":154,"props":1761,"children":1762},{"style":201},[1763],{"type":51,"value":926},{"type":45,"tag":154,"props":1765,"children":1766},{"style":161},[1767],{"type":51,"value":801},{"type":45,"tag":154,"props":1769,"children":1770},{"style":161},[1771],{"type":51,"value":818},{"type":45,"tag":61,"props":1773,"children":1774},{},[1775],{"type":45,"tag":79,"props":1776,"children":1777},{},[1778],{"type":51,"value":1779},"Boolean fields:",{"type":45,"tag":143,"props":1781,"children":1783},{"className":584,"code":1782,"language":586,"meta":148,"style":148},"ENABLED=$(echo \"$FRONTMATTER\" | grep '^enabled:' | sed 's\u002Fenabled: *\u002F\u002F')\n# Compare: if [[ \"$ENABLED\" == \"true\" ]]; then\n",[1784],{"type":45,"tag":67,"props":1785,"children":1786},{"__ignoreMap":148},[1787,1858],{"type":45,"tag":154,"props":1788,"children":1789},{"class":156,"line":157},[1790,1794,1798,1802,1806,1810,1814,1818,1822,1826,1830,1834,1838,1842,1846,1850,1854],{"type":45,"tag":154,"props":1791,"children":1792},{"style":345},[1793],{"type":51,"value":842},{"type":45,"tag":154,"props":1795,"children":1796},{"style":161},[1797],{"type":51,"value":776},{"type":45,"tag":154,"props":1799,"children":1800},{"style":605},[1801],{"type":51,"value":851},{"type":45,"tag":154,"props":1803,"children":1804},{"style":161},[1805],{"type":51,"value":283},{"type":45,"tag":154,"props":1807,"children":1808},{"style":345},[1809],{"type":51,"value":860},{"type":45,"tag":154,"props":1811,"children":1812},{"style":161},[1813],{"type":51,"value":264},{"type":45,"tag":154,"props":1815,"children":1816},{"style":161},[1817],{"type":51,"value":869},{"type":45,"tag":154,"props":1819,"children":1820},{"style":327},[1821],{"type":51,"value":874},{"type":45,"tag":154,"props":1823,"children":1824},{"style":161},[1825],{"type":51,"value":791},{"type":45,"tag":154,"props":1827,"children":1828},{"style":201},[1829],{"type":51,"value":883},{"type":45,"tag":154,"props":1831,"children":1832},{"style":161},[1833],{"type":51,"value":801},{"type":45,"tag":154,"props":1835,"children":1836},{"style":161},[1837],{"type":51,"value":869},{"type":45,"tag":154,"props":1839,"children":1840},{"style":327},[1841],{"type":51,"value":896},{"type":45,"tag":154,"props":1843,"children":1844},{"style":161},[1845],{"type":51,"value":791},{"type":45,"tag":154,"props":1847,"children":1848},{"style":201},[1849],{"type":51,"value":905},{"type":45,"tag":154,"props":1851,"children":1852},{"style":161},[1853],{"type":51,"value":801},{"type":45,"tag":154,"props":1855,"children":1856},{"style":161},[1857],{"type":51,"value":818},{"type":45,"tag":154,"props":1859,"children":1860},{"class":156,"line":167},[1861],{"type":45,"tag":154,"props":1862,"children":1863},{"style":596},[1864],{"type":51,"value":1865},"# Compare: if [[ \"$ENABLED\" == \"true\" ]]; then\n",{"type":45,"tag":61,"props":1867,"children":1868},{},[1869],{"type":45,"tag":79,"props":1870,"children":1871},{},[1872],{"type":51,"value":1873},"Numeric fields:",{"type":45,"tag":143,"props":1875,"children":1877},{"className":584,"code":1876,"language":586,"meta":148,"style":148},"MAX=$(echo \"$FRONTMATTER\" | grep '^max_value:' | sed 's\u002Fmax_value: *\u002F\u002F')\n# Use: if [[ $MAX -gt 100 ]]; then\n",[1878],{"type":45,"tag":67,"props":1879,"children":1880},{"__ignoreMap":148},[1881,1955],{"type":45,"tag":154,"props":1882,"children":1883},{"class":156,"line":157},[1884,1889,1893,1897,1901,1905,1909,1913,1917,1921,1926,1930,1934,1938,1942,1947,1951],{"type":45,"tag":154,"props":1885,"children":1886},{"style":345},[1887],{"type":51,"value":1888},"MAX",{"type":45,"tag":154,"props":1890,"children":1891},{"style":161},[1892],{"type":51,"value":776},{"type":45,"tag":154,"props":1894,"children":1895},{"style":605},[1896],{"type":51,"value":851},{"type":45,"tag":154,"props":1898,"children":1899},{"style":161},[1900],{"type":51,"value":283},{"type":45,"tag":154,"props":1902,"children":1903},{"style":345},[1904],{"type":51,"value":860},{"type":45,"tag":154,"props":1906,"children":1907},{"style":161},[1908],{"type":51,"value":264},{"type":45,"tag":154,"props":1910,"children":1911},{"style":161},[1912],{"type":51,"value":869},{"type":45,"tag":154,"props":1914,"children":1915},{"style":327},[1916],{"type":51,"value":874},{"type":45,"tag":154,"props":1918,"children":1919},{"style":161},[1920],{"type":51,"value":791},{"type":45,"tag":154,"props":1922,"children":1923},{"style":201},[1924],{"type":51,"value":1925},"^max_value:",{"type":45,"tag":154,"props":1927,"children":1928},{"style":161},[1929],{"type":51,"value":801},{"type":45,"tag":154,"props":1931,"children":1932},{"style":161},[1933],{"type":51,"value":869},{"type":45,"tag":154,"props":1935,"children":1936},{"style":327},[1937],{"type":51,"value":896},{"type":45,"tag":154,"props":1939,"children":1940},{"style":161},[1941],{"type":51,"value":791},{"type":45,"tag":154,"props":1943,"children":1944},{"style":201},[1945],{"type":51,"value":1946},"s\u002Fmax_value: *\u002F\u002F",{"type":45,"tag":154,"props":1948,"children":1949},{"style":161},[1950],{"type":51,"value":801},{"type":45,"tag":154,"props":1952,"children":1953},{"style":161},[1954],{"type":51,"value":818},{"type":45,"tag":154,"props":1956,"children":1957},{"class":156,"line":167},[1958],{"type":45,"tag":154,"props":1959,"children":1960},{"style":596},[1961],{"type":51,"value":1962},"# Use: if [[ $MAX -gt 100 ]]; then\n",{"type":45,"tag":136,"props":1964,"children":1966},{"id":1965},"read-markdown-body",[1967],{"type":51,"value":1968},"Read Markdown Body",{"type":45,"tag":61,"props":1970,"children":1971},{},[1972,1974,1980],{"type":51,"value":1973},"Extract content after second ",{"type":45,"tag":67,"props":1975,"children":1977},{"className":1976},[],[1978],{"type":51,"value":1979},"---",{"type":51,"value":179},{"type":45,"tag":143,"props":1982,"children":1984},{"className":584,"code":1983,"language":586,"meta":148,"style":148},"# Get everything after closing ---\nBODY=$(awk '\u002F^---$\u002F{i++; next} i>=2' \"$FILE\")\n",[1985],{"type":45,"tag":67,"props":1986,"children":1987},{"__ignoreMap":148},[1988,1996],{"type":45,"tag":154,"props":1989,"children":1990},{"class":156,"line":157},[1991],{"type":45,"tag":154,"props":1992,"children":1993},{"style":596},[1994],{"type":51,"value":1995},"# Get everything after closing ---\n",{"type":45,"tag":154,"props":1997,"children":1998},{"class":156,"line":167},[1999,2004,2008,2013,2017,2022,2026,2030,2034,2038],{"type":45,"tag":154,"props":2000,"children":2001},{"style":345},[2002],{"type":51,"value":2003},"BODY",{"type":45,"tag":154,"props":2005,"children":2006},{"style":161},[2007],{"type":51,"value":776},{"type":45,"tag":154,"props":2009,"children":2010},{"style":327},[2011],{"type":51,"value":2012},"awk",{"type":45,"tag":154,"props":2014,"children":2015},{"style":161},[2016],{"type":51,"value":791},{"type":45,"tag":154,"props":2018,"children":2019},{"style":201},[2020],{"type":51,"value":2021},"\u002F^---$\u002F{i++; next} i>=2",{"type":45,"tag":154,"props":2023,"children":2024},{"style":161},[2025],{"type":51,"value":801},{"type":45,"tag":154,"props":2027,"children":2028},{"style":161},[2029],{"type":51,"value":283},{"type":45,"tag":154,"props":2031,"children":2032},{"style":345},[2033],{"type":51,"value":1648},{"type":45,"tag":154,"props":2035,"children":2036},{"style":161},[2037],{"type":51,"value":264},{"type":45,"tag":154,"props":2039,"children":2040},{"style":161},[2041],{"type":51,"value":818},{"type":45,"tag":54,"props":2043,"children":2045},{"id":2044},"common-patterns",[2046],{"type":51,"value":2047},"Common Patterns",{"type":45,"tag":136,"props":2049,"children":2051},{"id":2050},"pattern-1-temporarily-active-hooks",[2052],{"type":51,"value":2053},"Pattern 1: Temporarily Active Hooks",{"type":45,"tag":61,"props":2055,"children":2056},{},[2057],{"type":51,"value":2058},"Use settings file to control hook activation:",{"type":45,"tag":143,"props":2060,"children":2062},{"className":584,"code":2061,"language":586,"meta":148,"style":148},"#!\u002Fbin\u002Fbash\nSTATE_FILE=\".claude\u002Fsecurity-scan.local.md\"\n\n# Quick exit if not configured\nif [[ ! -f \"$STATE_FILE\" ]]; then\n  exit 0\nfi\n\n# Read enabled flag\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$STATE_FILE\")\nENABLED=$(echo \"$FRONTMATTER\" | grep '^enabled:' | sed 's\u002Fenabled: *\u002F\u002F')\n\nif [[ \"$ENABLED\" != \"true\" ]]; then\n  exit 0  # Disabled\nfi\n\n# Run hook logic\n# ...\n",[2063],{"type":45,"tag":67,"props":2064,"children":2065},{"__ignoreMap":148},[2066,2073,2097,2104,2112,2151,2163,2170,2177,2185,2232,2303,2310,2357,2372,2379,2386,2394],{"type":45,"tag":154,"props":2067,"children":2068},{"class":156,"line":157},[2069],{"type":45,"tag":154,"props":2070,"children":2071},{"style":596},[2072],{"type":51,"value":599},{"type":45,"tag":154,"props":2074,"children":2075},{"class":156,"line":167},[2076,2080,2084,2088,2093],{"type":45,"tag":154,"props":2077,"children":2078},{"style":345},[2079],{"type":51,"value":641},{"type":45,"tag":154,"props":2081,"children":2082},{"style":161},[2083],{"type":51,"value":646},{"type":45,"tag":154,"props":2085,"children":2086},{"style":161},[2087],{"type":51,"value":264},{"type":45,"tag":154,"props":2089,"children":2090},{"style":201},[2091],{"type":51,"value":2092},".claude\u002Fsecurity-scan.local.md",{"type":45,"tag":154,"props":2094,"children":2095},{"style":161},[2096],{"type":51,"value":660},{"type":45,"tag":154,"props":2098,"children":2099},{"class":156,"line":188},[2100],{"type":45,"tag":154,"props":2101,"children":2102},{"emptyLinePlaceholder":312},[2103],{"type":51,"value":315},{"type":45,"tag":154,"props":2105,"children":2106},{"class":156,"line":207},[2107],{"type":45,"tag":154,"props":2108,"children":2109},{"style":596},[2110],{"type":51,"value":2111},"# Quick exit if not configured\n",{"type":45,"tag":154,"props":2113,"children":2114},{"class":156,"line":225},[2115,2119,2123,2127,2131,2135,2139,2143,2147],{"type":45,"tag":154,"props":2116,"children":2117},{"style":681},[2118],{"type":51,"value":684},{"type":45,"tag":154,"props":2120,"children":2121},{"style":161},[2122],{"type":51,"value":689},{"type":45,"tag":154,"props":2124,"children":2125},{"style":161},[2126],{"type":51,"value":694},{"type":45,"tag":154,"props":2128,"children":2129},{"style":161},[2130],{"type":51,"value":699},{"type":45,"tag":154,"props":2132,"children":2133},{"style":161},[2134],{"type":51,"value":283},{"type":45,"tag":154,"props":2136,"children":2137},{"style":345},[2138],{"type":51,"value":708},{"type":45,"tag":154,"props":2140,"children":2141},{"style":161},[2142],{"type":51,"value":264},{"type":45,"tag":154,"props":2144,"children":2145},{"style":161},[2146],{"type":51,"value":717},{"type":45,"tag":154,"props":2148,"children":2149},{"style":681},[2150],{"type":51,"value":722},{"type":45,"tag":154,"props":2152,"children":2153},{"class":156,"line":244},[2154,2158],{"type":45,"tag":154,"props":2155,"children":2156},{"style":605},[2157],{"type":51,"value":730},{"type":45,"tag":154,"props":2159,"children":2160},{"style":238},[2161],{"type":51,"value":2162}," 0\n",{"type":45,"tag":154,"props":2164,"children":2165},{"class":156,"line":300},[2166],{"type":45,"tag":154,"props":2167,"children":2168},{"style":681},[2169],{"type":51,"value":748},{"type":45,"tag":154,"props":2171,"children":2172},{"class":156,"line":308},[2173],{"type":45,"tag":154,"props":2174,"children":2175},{"emptyLinePlaceholder":312},[2176],{"type":51,"value":315},{"type":45,"tag":154,"props":2178,"children":2179},{"class":156,"line":318},[2180],{"type":45,"tag":154,"props":2181,"children":2182},{"style":596},[2183],{"type":51,"value":2184},"# Read enabled flag\n",{"type":45,"tag":154,"props":2186,"children":2187},{"class":156,"line":333},[2188,2192,2196,2200,2204,2208,2212,2216,2220,2224,2228],{"type":45,"tag":154,"props":2189,"children":2190},{"style":345},[2191],{"type":51,"value":771},{"type":45,"tag":154,"props":2193,"children":2194},{"style":161},[2195],{"type":51,"value":776},{"type":45,"tag":154,"props":2197,"children":2198},{"style":327},[2199],{"type":51,"value":781},{"type":45,"tag":154,"props":2201,"children":2202},{"style":201},[2203],{"type":51,"value":786},{"type":45,"tag":154,"props":2205,"children":2206},{"style":161},[2207],{"type":51,"value":791},{"type":45,"tag":154,"props":2209,"children":2210},{"style":201},[2211],{"type":51,"value":796},{"type":45,"tag":154,"props":2213,"children":2214},{"style":161},[2215],{"type":51,"value":801},{"type":45,"tag":154,"props":2217,"children":2218},{"style":161},[2219],{"type":51,"value":283},{"type":45,"tag":154,"props":2221,"children":2222},{"style":345},[2223],{"type":51,"value":708},{"type":45,"tag":154,"props":2225,"children":2226},{"style":161},[2227],{"type":51,"value":264},{"type":45,"tag":154,"props":2229,"children":2230},{"style":161},[2231],{"type":51,"value":818},{"type":45,"tag":154,"props":2233,"children":2234},{"class":156,"line":341},[2235,2239,2243,2247,2251,2255,2259,2263,2267,2271,2275,2279,2283,2287,2291,2295,2299],{"type":45,"tag":154,"props":2236,"children":2237},{"style":345},[2238],{"type":51,"value":842},{"type":45,"tag":154,"props":2240,"children":2241},{"style":161},[2242],{"type":51,"value":776},{"type":45,"tag":154,"props":2244,"children":2245},{"style":605},[2246],{"type":51,"value":851},{"type":45,"tag":154,"props":2248,"children":2249},{"style":161},[2250],{"type":51,"value":283},{"type":45,"tag":154,"props":2252,"children":2253},{"style":345},[2254],{"type":51,"value":860},{"type":45,"tag":154,"props":2256,"children":2257},{"style":161},[2258],{"type":51,"value":264},{"type":45,"tag":154,"props":2260,"children":2261},{"style":161},[2262],{"type":51,"value":869},{"type":45,"tag":154,"props":2264,"children":2265},{"style":327},[2266],{"type":51,"value":874},{"type":45,"tag":154,"props":2268,"children":2269},{"style":161},[2270],{"type":51,"value":791},{"type":45,"tag":154,"props":2272,"children":2273},{"style":201},[2274],{"type":51,"value":883},{"type":45,"tag":154,"props":2276,"children":2277},{"style":161},[2278],{"type":51,"value":801},{"type":45,"tag":154,"props":2280,"children":2281},{"style":161},[2282],{"type":51,"value":869},{"type":45,"tag":154,"props":2284,"children":2285},{"style":327},[2286],{"type":51,"value":896},{"type":45,"tag":154,"props":2288,"children":2289},{"style":161},[2290],{"type":51,"value":791},{"type":45,"tag":154,"props":2292,"children":2293},{"style":201},[2294],{"type":51,"value":905},{"type":45,"tag":154,"props":2296,"children":2297},{"style":161},[2298],{"type":51,"value":801},{"type":45,"tag":154,"props":2300,"children":2301},{"style":161},[2302],{"type":51,"value":818},{"type":45,"tag":154,"props":2304,"children":2305},{"class":156,"line":351},[2306],{"type":45,"tag":154,"props":2307,"children":2308},{"emptyLinePlaceholder":312},[2309],{"type":51,"value":315},{"type":45,"tag":154,"props":2311,"children":2312},{"class":156,"line":365},[2313,2317,2321,2325,2329,2333,2337,2341,2345,2349,2353],{"type":45,"tag":154,"props":2314,"children":2315},{"style":681},[2316],{"type":51,"value":684},{"type":45,"tag":154,"props":2318,"children":2319},{"style":161},[2320],{"type":51,"value":689},{"type":45,"tag":154,"props":2322,"children":2323},{"style":161},[2324],{"type":51,"value":283},{"type":45,"tag":154,"props":2326,"children":2327},{"style":345},[2328],{"type":51,"value":1067},{"type":45,"tag":154,"props":2330,"children":2331},{"style":161},[2332],{"type":51,"value":264},{"type":45,"tag":154,"props":2334,"children":2335},{"style":161},[2336],{"type":51,"value":1076},{"type":45,"tag":154,"props":2338,"children":2339},{"style":161},[2340],{"type":51,"value":283},{"type":45,"tag":154,"props":2342,"children":2343},{"style":201},[2344],{"type":51,"value":1085},{"type":45,"tag":154,"props":2346,"children":2347},{"style":161},[2348],{"type":51,"value":264},{"type":45,"tag":154,"props":2350,"children":2351},{"style":161},[2352],{"type":51,"value":717},{"type":45,"tag":154,"props":2354,"children":2355},{"style":681},[2356],{"type":51,"value":722},{"type":45,"tag":154,"props":2358,"children":2359},{"class":156,"line":378},[2360,2364,2368],{"type":45,"tag":154,"props":2361,"children":2362},{"style":605},[2363],{"type":51,"value":730},{"type":45,"tag":154,"props":2365,"children":2366},{"style":238},[2367],{"type":51,"value":735},{"type":45,"tag":154,"props":2369,"children":2370},{"style":596},[2371],{"type":51,"value":1114},{"type":45,"tag":154,"props":2373,"children":2374},{"class":156,"line":391},[2375],{"type":45,"tag":154,"props":2376,"children":2377},{"style":681},[2378],{"type":51,"value":748},{"type":45,"tag":154,"props":2380,"children":2381},{"class":156,"line":836},[2382],{"type":45,"tag":154,"props":2383,"children":2384},{"emptyLinePlaceholder":312},[2385],{"type":51,"value":315},{"type":45,"tag":154,"props":2387,"children":2388},{"class":156,"line":937},[2389],{"type":45,"tag":154,"props":2390,"children":2391},{"style":596},[2392],{"type":51,"value":2393},"# Run hook logic\n",{"type":45,"tag":154,"props":2395,"children":2396},{"class":156,"line":1032},[2397],{"type":45,"tag":154,"props":2398,"children":2399},{"style":596},[2400],{"type":51,"value":2401},"# ...\n",{"type":45,"tag":61,"props":2403,"children":2404},{},[2405,2410],{"type":45,"tag":79,"props":2406,"children":2407},{},[2408],{"type":51,"value":2409},"Use case:",{"type":51,"value":2411}," Enable\u002Fdisable hooks without editing hooks.json (requires restart).",{"type":45,"tag":136,"props":2413,"children":2415},{"id":2414},"pattern-2-agent-state-management",[2416],{"type":51,"value":2417},"Pattern 2: Agent State Management",{"type":45,"tag":61,"props":2419,"children":2420},{},[2421],{"type":51,"value":2422},"Store agent-specific state and configuration:",{"type":45,"tag":61,"props":2424,"children":2425},{},[2426],{"type":45,"tag":79,"props":2427,"children":2428},{},[2429],{"type":51,"value":2430},".claude\u002Fmulti-agent-swarm.local.md:",{"type":45,"tag":143,"props":2432,"children":2434},{"className":145,"code":2433,"language":147,"meta":148,"style":148},"---\nagent_name: auth-agent\ntask_number: 3.5\npr_number: 1234\ncoordinator_session: team-leader\nenabled: true\ndependencies: [\"Task 3.4\"]\n---\n\n# Task Assignment\n\nImplement JWT authentication for the API.\n\n**Success Criteria:**\n- Authentication endpoints created\n- Tests passing\n- PR created and CI green\n",[2435],{"type":45,"tag":67,"props":2436,"children":2437},{"__ignoreMap":148},[2438,2445,2462,2479,2496,2511,2526,2559,2566,2573,2585,2592,2600,2607,2627,2639,2651],{"type":45,"tag":154,"props":2439,"children":2440},{"class":156,"line":157},[2441],{"type":45,"tag":154,"props":2442,"children":2443},{"style":161},[2444],{"type":51,"value":164},{"type":45,"tag":154,"props":2446,"children":2447},{"class":156,"line":167},[2448,2453,2457],{"type":45,"tag":154,"props":2449,"children":2450},{"style":171},[2451],{"type":51,"value":2452},"agent_name",{"type":45,"tag":154,"props":2454,"children":2455},{"style":161},[2456],{"type":51,"value":179},{"type":45,"tag":154,"props":2458,"children":2459},{"style":201},[2460],{"type":51,"value":2461}," auth-agent\n",{"type":45,"tag":154,"props":2463,"children":2464},{"class":156,"line":188},[2465,2470,2474],{"type":45,"tag":154,"props":2466,"children":2467},{"style":171},[2468],{"type":51,"value":2469},"task_number",{"type":45,"tag":154,"props":2471,"children":2472},{"style":161},[2473],{"type":51,"value":179},{"type":45,"tag":154,"props":2475,"children":2476},{"style":238},[2477],{"type":51,"value":2478}," 3.5\n",{"type":45,"tag":154,"props":2480,"children":2481},{"class":156,"line":207},[2482,2487,2491],{"type":45,"tag":154,"props":2483,"children":2484},{"style":171},[2485],{"type":51,"value":2486},"pr_number",{"type":45,"tag":154,"props":2488,"children":2489},{"style":161},[2490],{"type":51,"value":179},{"type":45,"tag":154,"props":2492,"children":2493},{"style":238},[2494],{"type":51,"value":2495}," 1234\n",{"type":45,"tag":154,"props":2497,"children":2498},{"class":156,"line":225},[2499,2503,2507],{"type":45,"tag":154,"props":2500,"children":2501},{"style":171},[2502],{"type":51,"value":503},{"type":45,"tag":154,"props":2504,"children":2505},{"style":161},[2506],{"type":51,"value":179},{"type":45,"tag":154,"props":2508,"children":2509},{"style":201},[2510],{"type":51,"value":512},{"type":45,"tag":154,"props":2512,"children":2513},{"class":156,"line":244},[2514,2518,2522],{"type":45,"tag":154,"props":2515,"children":2516},{"style":171},[2517],{"type":51,"value":174},{"type":45,"tag":154,"props":2519,"children":2520},{"style":161},[2521],{"type":51,"value":179},{"type":45,"tag":154,"props":2523,"children":2524},{"style":182},[2525],{"type":51,"value":185},{"type":45,"tag":154,"props":2527,"children":2528},{"class":156,"line":300},[2529,2534,2538,2542,2546,2551,2555],{"type":45,"tag":154,"props":2530,"children":2531},{"style":171},[2532],{"type":51,"value":2533},"dependencies",{"type":45,"tag":154,"props":2535,"children":2536},{"style":161},[2537],{"type":51,"value":179},{"type":45,"tag":154,"props":2539,"children":2540},{"style":161},[2541],{"type":51,"value":259},{"type":45,"tag":154,"props":2543,"children":2544},{"style":161},[2545],{"type":51,"value":264},{"type":45,"tag":154,"props":2547,"children":2548},{"style":201},[2549],{"type":51,"value":2550},"Task 3.4",{"type":45,"tag":154,"props":2552,"children":2553},{"style":161},[2554],{"type":51,"value":264},{"type":45,"tag":154,"props":2556,"children":2557},{"style":161},[2558],{"type":51,"value":297},{"type":45,"tag":154,"props":2560,"children":2561},{"class":156,"line":308},[2562],{"type":45,"tag":154,"props":2563,"children":2564},{"style":161},[2565],{"type":51,"value":164},{"type":45,"tag":154,"props":2567,"children":2568},{"class":156,"line":318},[2569],{"type":45,"tag":154,"props":2570,"children":2571},{"emptyLinePlaceholder":312},[2572],{"type":51,"value":315},{"type":45,"tag":154,"props":2574,"children":2575},{"class":156,"line":333},[2576,2580],{"type":45,"tag":154,"props":2577,"children":2578},{"style":161},[2579],{"type":51,"value":324},{"type":45,"tag":154,"props":2581,"children":2582},{"style":327},[2583],{"type":51,"value":2584},"Task Assignment\n",{"type":45,"tag":154,"props":2586,"children":2587},{"class":156,"line":341},[2588],{"type":45,"tag":154,"props":2589,"children":2590},{"emptyLinePlaceholder":312},[2591],{"type":51,"value":315},{"type":45,"tag":154,"props":2593,"children":2594},{"class":156,"line":351},[2595],{"type":45,"tag":154,"props":2596,"children":2597},{"style":345},[2598],{"type":51,"value":2599},"Implement JWT authentication for the API.\n",{"type":45,"tag":154,"props":2601,"children":2602},{"class":156,"line":365},[2603],{"type":45,"tag":154,"props":2604,"children":2605},{"emptyLinePlaceholder":312},[2606],{"type":51,"value":315},{"type":45,"tag":154,"props":2608,"children":2609},{"class":156,"line":378},[2610,2616,2622],{"type":45,"tag":154,"props":2611,"children":2613},{"style":2612},"--shiki-light:#39ADB5;--shiki-light-font-weight:bold;--shiki-default:#89DDFF;--shiki-default-font-weight:bold;--shiki-dark:#89DDFF;--shiki-dark-font-weight:bold",[2614],{"type":51,"value":2615},"**",{"type":45,"tag":154,"props":2617,"children":2619},{"style":2618},"--shiki-light:#E53935;--shiki-light-font-weight:bold;--shiki-default:#F07178;--shiki-default-font-weight:bold;--shiki-dark:#F07178;--shiki-dark-font-weight:bold",[2620],{"type":51,"value":2621},"Success Criteria:",{"type":45,"tag":154,"props":2623,"children":2624},{"style":2612},[2625],{"type":51,"value":2626},"**\n",{"type":45,"tag":154,"props":2628,"children":2629},{"class":156,"line":391},[2630,2634],{"type":45,"tag":154,"props":2631,"children":2632},{"style":161},[2633],{"type":51,"value":357},{"type":45,"tag":154,"props":2635,"children":2636},{"style":345},[2637],{"type":51,"value":2638}," Authentication endpoints created\n",{"type":45,"tag":154,"props":2640,"children":2641},{"class":156,"line":836},[2642,2646],{"type":45,"tag":154,"props":2643,"children":2644},{"style":161},[2645],{"type":51,"value":357},{"type":45,"tag":154,"props":2647,"children":2648},{"style":345},[2649],{"type":51,"value":2650}," Tests passing\n",{"type":45,"tag":154,"props":2652,"children":2653},{"class":156,"line":937},[2654,2658],{"type":45,"tag":154,"props":2655,"children":2656},{"style":161},[2657],{"type":51,"value":357},{"type":45,"tag":154,"props":2659,"children":2660},{"style":345},[2661],{"type":51,"value":2662}," PR created and CI green\n",{"type":45,"tag":61,"props":2664,"children":2665},{},[2666],{"type":51,"value":2667},"Read from hooks to coordinate agents:",{"type":45,"tag":143,"props":2669,"children":2671},{"className":584,"code":2670,"language":586,"meta":148,"style":148},"AGENT_NAME=$(echo \"$FRONTMATTER\" | grep '^agent_name:' | sed 's\u002Fagent_name: *\u002F\u002F')\nCOORDINATOR=$(echo \"$FRONTMATTER\" | grep '^coordinator_session:' | sed 's\u002Fcoordinator_session: *\u002F\u002F')\n\n# Send notification to coordinator\ntmux send-keys -t \"$COORDINATOR\" \"Agent $AGENT_NAME completed task\" Enter\n",[2672],{"type":45,"tag":67,"props":2673,"children":2674},{"__ignoreMap":148},[2675,2749,2823,2830,2838],{"type":45,"tag":154,"props":2676,"children":2677},{"class":156,"line":157},[2678,2683,2687,2691,2695,2699,2703,2707,2711,2715,2720,2724,2728,2732,2736,2741,2745],{"type":45,"tag":154,"props":2679,"children":2680},{"style":345},[2681],{"type":51,"value":2682},"AGENT_NAME",{"type":45,"tag":154,"props":2684,"children":2685},{"style":161},[2686],{"type":51,"value":776},{"type":45,"tag":154,"props":2688,"children":2689},{"style":605},[2690],{"type":51,"value":851},{"type":45,"tag":154,"props":2692,"children":2693},{"style":161},[2694],{"type":51,"value":283},{"type":45,"tag":154,"props":2696,"children":2697},{"style":345},[2698],{"type":51,"value":860},{"type":45,"tag":154,"props":2700,"children":2701},{"style":161},[2702],{"type":51,"value":264},{"type":45,"tag":154,"props":2704,"children":2705},{"style":161},[2706],{"type":51,"value":869},{"type":45,"tag":154,"props":2708,"children":2709},{"style":327},[2710],{"type":51,"value":874},{"type":45,"tag":154,"props":2712,"children":2713},{"style":161},[2714],{"type":51,"value":791},{"type":45,"tag":154,"props":2716,"children":2717},{"style":201},[2718],{"type":51,"value":2719},"^agent_name:",{"type":45,"tag":154,"props":2721,"children":2722},{"style":161},[2723],{"type":51,"value":801},{"type":45,"tag":154,"props":2725,"children":2726},{"style":161},[2727],{"type":51,"value":869},{"type":45,"tag":154,"props":2729,"children":2730},{"style":327},[2731],{"type":51,"value":896},{"type":45,"tag":154,"props":2733,"children":2734},{"style":161},[2735],{"type":51,"value":791},{"type":45,"tag":154,"props":2737,"children":2738},{"style":201},[2739],{"type":51,"value":2740},"s\u002Fagent_name: *\u002F\u002F",{"type":45,"tag":154,"props":2742,"children":2743},{"style":161},[2744],{"type":51,"value":801},{"type":45,"tag":154,"props":2746,"children":2747},{"style":161},[2748],{"type":51,"value":818},{"type":45,"tag":154,"props":2750,"children":2751},{"class":156,"line":167},[2752,2757,2761,2765,2769,2773,2777,2781,2785,2789,2794,2798,2802,2806,2810,2815,2819],{"type":45,"tag":154,"props":2753,"children":2754},{"style":345},[2755],{"type":51,"value":2756},"COORDINATOR",{"type":45,"tag":154,"props":2758,"children":2759},{"style":161},[2760],{"type":51,"value":776},{"type":45,"tag":154,"props":2762,"children":2763},{"style":605},[2764],{"type":51,"value":851},{"type":45,"tag":154,"props":2766,"children":2767},{"style":161},[2768],{"type":51,"value":283},{"type":45,"tag":154,"props":2770,"children":2771},{"style":345},[2772],{"type":51,"value":860},{"type":45,"tag":154,"props":2774,"children":2775},{"style":161},[2776],{"type":51,"value":264},{"type":45,"tag":154,"props":2778,"children":2779},{"style":161},[2780],{"type":51,"value":869},{"type":45,"tag":154,"props":2782,"children":2783},{"style":327},[2784],{"type":51,"value":874},{"type":45,"tag":154,"props":2786,"children":2787},{"style":161},[2788],{"type":51,"value":791},{"type":45,"tag":154,"props":2790,"children":2791},{"style":201},[2792],{"type":51,"value":2793},"^coordinator_session:",{"type":45,"tag":154,"props":2795,"children":2796},{"style":161},[2797],{"type":51,"value":801},{"type":45,"tag":154,"props":2799,"children":2800},{"style":161},[2801],{"type":51,"value":869},{"type":45,"tag":154,"props":2803,"children":2804},{"style":327},[2805],{"type":51,"value":896},{"type":45,"tag":154,"props":2807,"children":2808},{"style":161},[2809],{"type":51,"value":791},{"type":45,"tag":154,"props":2811,"children":2812},{"style":201},[2813],{"type":51,"value":2814},"s\u002Fcoordinator_session: *\u002F\u002F",{"type":45,"tag":154,"props":2816,"children":2817},{"style":161},[2818],{"type":51,"value":801},{"type":45,"tag":154,"props":2820,"children":2821},{"style":161},[2822],{"type":51,"value":818},{"type":45,"tag":154,"props":2824,"children":2825},{"class":156,"line":188},[2826],{"type":45,"tag":154,"props":2827,"children":2828},{"emptyLinePlaceholder":312},[2829],{"type":51,"value":315},{"type":45,"tag":154,"props":2831,"children":2832},{"class":156,"line":207},[2833],{"type":45,"tag":154,"props":2834,"children":2835},{"style":596},[2836],{"type":51,"value":2837},"# Send notification to coordinator\n",{"type":45,"tag":154,"props":2839,"children":2840},{"class":156,"line":225},[2841,2846,2851,2856,2860,2865,2869,2873,2878,2883,2888,2892],{"type":45,"tag":154,"props":2842,"children":2843},{"style":327},[2844],{"type":51,"value":2845},"tmux",{"type":45,"tag":154,"props":2847,"children":2848},{"style":201},[2849],{"type":51,"value":2850}," send-keys",{"type":45,"tag":154,"props":2852,"children":2853},{"style":201},[2854],{"type":51,"value":2855}," -t",{"type":45,"tag":154,"props":2857,"children":2858},{"style":161},[2859],{"type":51,"value":283},{"type":45,"tag":154,"props":2861,"children":2862},{"style":345},[2863],{"type":51,"value":2864},"$COORDINATOR",{"type":45,"tag":154,"props":2866,"children":2867},{"style":161},[2868],{"type":51,"value":264},{"type":45,"tag":154,"props":2870,"children":2871},{"style":161},[2872],{"type":51,"value":283},{"type":45,"tag":154,"props":2874,"children":2875},{"style":201},[2876],{"type":51,"value":2877},"Agent ",{"type":45,"tag":154,"props":2879,"children":2880},{"style":345},[2881],{"type":51,"value":2882},"$AGENT_NAME",{"type":45,"tag":154,"props":2884,"children":2885},{"style":201},[2886],{"type":51,"value":2887}," completed task",{"type":45,"tag":154,"props":2889,"children":2890},{"style":161},[2891],{"type":51,"value":264},{"type":45,"tag":154,"props":2893,"children":2894},{"style":201},[2895],{"type":51,"value":2896}," Enter\n",{"type":45,"tag":136,"props":2898,"children":2900},{"id":2899},"pattern-3-configuration-driven-behavior",[2901],{"type":51,"value":2902},"Pattern 3: Configuration-Driven Behavior",{"type":45,"tag":61,"props":2904,"children":2905},{},[2906],{"type":45,"tag":79,"props":2907,"children":2908},{},[2909],{"type":51,"value":415},{"type":45,"tag":143,"props":2911,"children":2913},{"className":145,"code":2912,"language":147,"meta":148,"style":148},"---\nvalidation_level: strict\nmax_file_size: 1000000\nallowed_extensions: [\".js\", \".ts\", \".tsx\"]\nenable_logging: true\n---\n\n# Validation Configuration\n\nStrict mode enabled for this project.\nAll writes validated against security policies.\n",[2914],{"type":45,"tag":67,"props":2915,"children":2916},{"__ignoreMap":148},[2917,2924,2941,2958,3025,3041,3048,3055,3067,3074,3082],{"type":45,"tag":154,"props":2918,"children":2919},{"class":156,"line":157},[2920],{"type":45,"tag":154,"props":2921,"children":2922},{"style":161},[2923],{"type":51,"value":164},{"type":45,"tag":154,"props":2925,"children":2926},{"class":156,"line":167},[2927,2932,2936],{"type":45,"tag":154,"props":2928,"children":2929},{"style":171},[2930],{"type":51,"value":2931},"validation_level",{"type":45,"tag":154,"props":2933,"children":2934},{"style":161},[2935],{"type":51,"value":179},{"type":45,"tag":154,"props":2937,"children":2938},{"style":201},[2939],{"type":51,"value":2940}," strict\n",{"type":45,"tag":154,"props":2942,"children":2943},{"class":156,"line":188},[2944,2949,2953],{"type":45,"tag":154,"props":2945,"children":2946},{"style":171},[2947],{"type":51,"value":2948},"max_file_size",{"type":45,"tag":154,"props":2950,"children":2951},{"style":161},[2952],{"type":51,"value":179},{"type":45,"tag":154,"props":2954,"children":2955},{"style":238},[2956],{"type":51,"value":2957}," 1000000\n",{"type":45,"tag":154,"props":2959,"children":2960},{"class":156,"line":207},[2961,2966,2970,2974,2978,2983,2987,2991,2995,3000,3004,3008,3012,3017,3021],{"type":45,"tag":154,"props":2962,"children":2963},{"style":171},[2964],{"type":51,"value":2965},"allowed_extensions",{"type":45,"tag":154,"props":2967,"children":2968},{"style":161},[2969],{"type":51,"value":179},{"type":45,"tag":154,"props":2971,"children":2972},{"style":161},[2973],{"type":51,"value":259},{"type":45,"tag":154,"props":2975,"children":2976},{"style":161},[2977],{"type":51,"value":264},{"type":45,"tag":154,"props":2979,"children":2980},{"style":201},[2981],{"type":51,"value":2982},".js",{"type":45,"tag":154,"props":2984,"children":2985},{"style":161},[2986],{"type":51,"value":264},{"type":45,"tag":154,"props":2988,"children":2989},{"style":161},[2990],{"type":51,"value":278},{"type":45,"tag":154,"props":2992,"children":2993},{"style":161},[2994],{"type":51,"value":283},{"type":45,"tag":154,"props":2996,"children":2997},{"style":201},[2998],{"type":51,"value":2999},".ts",{"type":45,"tag":154,"props":3001,"children":3002},{"style":161},[3003],{"type":51,"value":264},{"type":45,"tag":154,"props":3005,"children":3006},{"style":161},[3007],{"type":51,"value":278},{"type":45,"tag":154,"props":3009,"children":3010},{"style":161},[3011],{"type":51,"value":283},{"type":45,"tag":154,"props":3013,"children":3014},{"style":201},[3015],{"type":51,"value":3016},".tsx",{"type":45,"tag":154,"props":3018,"children":3019},{"style":161},[3020],{"type":51,"value":264},{"type":45,"tag":154,"props":3022,"children":3023},{"style":161},[3024],{"type":51,"value":297},{"type":45,"tag":154,"props":3026,"children":3027},{"class":156,"line":225},[3028,3033,3037],{"type":45,"tag":154,"props":3029,"children":3030},{"style":171},[3031],{"type":51,"value":3032},"enable_logging",{"type":45,"tag":154,"props":3034,"children":3035},{"style":161},[3036],{"type":51,"value":179},{"type":45,"tag":154,"props":3038,"children":3039},{"style":182},[3040],{"type":51,"value":185},{"type":45,"tag":154,"props":3042,"children":3043},{"class":156,"line":244},[3044],{"type":45,"tag":154,"props":3045,"children":3046},{"style":161},[3047],{"type":51,"value":164},{"type":45,"tag":154,"props":3049,"children":3050},{"class":156,"line":300},[3051],{"type":45,"tag":154,"props":3052,"children":3053},{"emptyLinePlaceholder":312},[3054],{"type":51,"value":315},{"type":45,"tag":154,"props":3056,"children":3057},{"class":156,"line":308},[3058,3062],{"type":45,"tag":154,"props":3059,"children":3060},{"style":161},[3061],{"type":51,"value":324},{"type":45,"tag":154,"props":3063,"children":3064},{"style":327},[3065],{"type":51,"value":3066},"Validation Configuration\n",{"type":45,"tag":154,"props":3068,"children":3069},{"class":156,"line":318},[3070],{"type":45,"tag":154,"props":3071,"children":3072},{"emptyLinePlaceholder":312},[3073],{"type":51,"value":315},{"type":45,"tag":154,"props":3075,"children":3076},{"class":156,"line":333},[3077],{"type":45,"tag":154,"props":3078,"children":3079},{"style":345},[3080],{"type":51,"value":3081},"Strict mode enabled for this project.\n",{"type":45,"tag":154,"props":3083,"children":3084},{"class":156,"line":341},[3085],{"type":45,"tag":154,"props":3086,"children":3087},{"style":345},[3088],{"type":51,"value":3089},"All writes validated against security policies.\n",{"type":45,"tag":61,"props":3091,"children":3092},{},[3093],{"type":51,"value":3094},"Use in hooks or commands:",{"type":45,"tag":143,"props":3096,"children":3098},{"className":584,"code":3097,"language":586,"meta":148,"style":148},"LEVEL=$(echo \"$FRONTMATTER\" | grep '^validation_level:' | sed 's\u002Fvalidation_level: *\u002F\u002F')\n\ncase \"$LEVEL\" in\n  strict)\n    # Apply strict validation\n    ;;\n  standard)\n    # Apply standard validation\n    ;;\n  lenient)\n    # Apply lenient validation\n    ;;\nesac\n",[3099],{"type":45,"tag":67,"props":3100,"children":3101},{"__ignoreMap":148},[3102,3176,3183,3209,3221,3229,3237,3249,3257,3264,3276,3284,3291],{"type":45,"tag":154,"props":3103,"children":3104},{"class":156,"line":157},[3105,3110,3114,3118,3122,3126,3130,3134,3138,3142,3147,3151,3155,3159,3163,3168,3172],{"type":45,"tag":154,"props":3106,"children":3107},{"style":345},[3108],{"type":51,"value":3109},"LEVEL",{"type":45,"tag":154,"props":3111,"children":3112},{"style":161},[3113],{"type":51,"value":776},{"type":45,"tag":154,"props":3115,"children":3116},{"style":605},[3117],{"type":51,"value":851},{"type":45,"tag":154,"props":3119,"children":3120},{"style":161},[3121],{"type":51,"value":283},{"type":45,"tag":154,"props":3123,"children":3124},{"style":345},[3125],{"type":51,"value":860},{"type":45,"tag":154,"props":3127,"children":3128},{"style":161},[3129],{"type":51,"value":264},{"type":45,"tag":154,"props":3131,"children":3132},{"style":161},[3133],{"type":51,"value":869},{"type":45,"tag":154,"props":3135,"children":3136},{"style":327},[3137],{"type":51,"value":874},{"type":45,"tag":154,"props":3139,"children":3140},{"style":161},[3141],{"type":51,"value":791},{"type":45,"tag":154,"props":3143,"children":3144},{"style":201},[3145],{"type":51,"value":3146},"^validation_level:",{"type":45,"tag":154,"props":3148,"children":3149},{"style":161},[3150],{"type":51,"value":801},{"type":45,"tag":154,"props":3152,"children":3153},{"style":161},[3154],{"type":51,"value":869},{"type":45,"tag":154,"props":3156,"children":3157},{"style":327},[3158],{"type":51,"value":896},{"type":45,"tag":154,"props":3160,"children":3161},{"style":161},[3162],{"type":51,"value":791},{"type":45,"tag":154,"props":3164,"children":3165},{"style":201},[3166],{"type":51,"value":3167},"s\u002Fvalidation_level: *\u002F\u002F",{"type":45,"tag":154,"props":3169,"children":3170},{"style":161},[3171],{"type":51,"value":801},{"type":45,"tag":154,"props":3173,"children":3174},{"style":161},[3175],{"type":51,"value":818},{"type":45,"tag":154,"props":3177,"children":3178},{"class":156,"line":167},[3179],{"type":45,"tag":154,"props":3180,"children":3181},{"emptyLinePlaceholder":312},[3182],{"type":51,"value":315},{"type":45,"tag":154,"props":3184,"children":3185},{"class":156,"line":188},[3186,3191,3195,3200,3204],{"type":45,"tag":154,"props":3187,"children":3188},{"style":681},[3189],{"type":51,"value":3190},"case",{"type":45,"tag":154,"props":3192,"children":3193},{"style":161},[3194],{"type":51,"value":283},{"type":45,"tag":154,"props":3196,"children":3197},{"style":345},[3198],{"type":51,"value":3199},"$LEVEL",{"type":45,"tag":154,"props":3201,"children":3202},{"style":161},[3203],{"type":51,"value":264},{"type":45,"tag":154,"props":3205,"children":3206},{"style":681},[3207],{"type":51,"value":3208}," in\n",{"type":45,"tag":154,"props":3210,"children":3211},{"class":156,"line":207},[3212,3217],{"type":45,"tag":154,"props":3213,"children":3214},{"style":201},[3215],{"type":51,"value":3216},"  strict",{"type":45,"tag":154,"props":3218,"children":3219},{"style":161},[3220],{"type":51,"value":818},{"type":45,"tag":154,"props":3222,"children":3223},{"class":156,"line":225},[3224],{"type":45,"tag":154,"props":3225,"children":3226},{"style":596},[3227],{"type":51,"value":3228},"    # Apply strict validation\n",{"type":45,"tag":154,"props":3230,"children":3231},{"class":156,"line":244},[3232],{"type":45,"tag":154,"props":3233,"children":3234},{"style":161},[3235],{"type":51,"value":3236},"    ;;\n",{"type":45,"tag":154,"props":3238,"children":3239},{"class":156,"line":300},[3240,3245],{"type":45,"tag":154,"props":3241,"children":3242},{"style":201},[3243],{"type":51,"value":3244},"  standard",{"type":45,"tag":154,"props":3246,"children":3247},{"style":161},[3248],{"type":51,"value":818},{"type":45,"tag":154,"props":3250,"children":3251},{"class":156,"line":308},[3252],{"type":45,"tag":154,"props":3253,"children":3254},{"style":596},[3255],{"type":51,"value":3256},"    # Apply standard validation\n",{"type":45,"tag":154,"props":3258,"children":3259},{"class":156,"line":318},[3260],{"type":45,"tag":154,"props":3261,"children":3262},{"style":161},[3263],{"type":51,"value":3236},{"type":45,"tag":154,"props":3265,"children":3266},{"class":156,"line":333},[3267,3272],{"type":45,"tag":154,"props":3268,"children":3269},{"style":201},[3270],{"type":51,"value":3271},"  lenient",{"type":45,"tag":154,"props":3273,"children":3274},{"style":161},[3275],{"type":51,"value":818},{"type":45,"tag":154,"props":3277,"children":3278},{"class":156,"line":341},[3279],{"type":45,"tag":154,"props":3280,"children":3281},{"style":596},[3282],{"type":51,"value":3283},"    # Apply lenient validation\n",{"type":45,"tag":154,"props":3285,"children":3286},{"class":156,"line":351},[3287],{"type":45,"tag":154,"props":3288,"children":3289},{"style":161},[3290],{"type":51,"value":3236},{"type":45,"tag":154,"props":3292,"children":3293},{"class":156,"line":365},[3294],{"type":45,"tag":154,"props":3295,"children":3296},{"style":681},[3297],{"type":51,"value":3298},"esac\n",{"type":45,"tag":54,"props":3300,"children":3302},{"id":3301},"creating-settings-files",[3303],{"type":51,"value":3304},"Creating Settings Files",{"type":45,"tag":136,"props":3306,"children":3308},{"id":3307},"from-commands-1",[3309],{"type":51,"value":1234},{"type":45,"tag":61,"props":3311,"children":3312},{},[3313],{"type":51,"value":3314},"Commands can create settings files:",{"type":45,"tag":143,"props":3316,"children":3318},{"className":145,"code":3317,"language":147,"meta":148,"style":148},"# Setup Command\n\nSteps:\n1. Ask user for configuration preferences\n2. Create `.claude\u002Fmy-plugin.local.md` with YAML frontmatter\n3. Set appropriate values based on user input\n4. Inform user that settings are saved\n5. Remind user to restart Claude Code for hooks to recognize changes\n",[3319],{"type":45,"tag":67,"props":3320,"children":3321},{"__ignoreMap":148},[3322,3334,3341,3348,3360,3389,3401,3413],{"type":45,"tag":154,"props":3323,"children":3324},{"class":156,"line":157},[3325,3329],{"type":45,"tag":154,"props":3326,"children":3327},{"style":161},[3328],{"type":51,"value":324},{"type":45,"tag":154,"props":3330,"children":3331},{"style":327},[3332],{"type":51,"value":3333},"Setup Command\n",{"type":45,"tag":154,"props":3335,"children":3336},{"class":156,"line":167},[3337],{"type":45,"tag":154,"props":3338,"children":3339},{"emptyLinePlaceholder":312},[3340],{"type":51,"value":315},{"type":45,"tag":154,"props":3342,"children":3343},{"class":156,"line":188},[3344],{"type":45,"tag":154,"props":3345,"children":3346},{"style":345},[3347],{"type":51,"value":1361},{"type":45,"tag":154,"props":3349,"children":3350},{"class":156,"line":207},[3351,3355],{"type":45,"tag":154,"props":3352,"children":3353},{"style":161},[3354],{"type":51,"value":1369},{"type":45,"tag":154,"props":3356,"children":3357},{"style":345},[3358],{"type":51,"value":3359}," Ask user for configuration preferences\n",{"type":45,"tag":154,"props":3361,"children":3362},{"class":156,"line":225},[3363,3367,3372,3376,3380,3384],{"type":45,"tag":154,"props":3364,"children":3365},{"style":161},[3366],{"type":51,"value":1396},{"type":45,"tag":154,"props":3368,"children":3369},{"style":345},[3370],{"type":51,"value":3371}," Create ",{"type":45,"tag":154,"props":3373,"children":3374},{"style":161},[3375],{"type":51,"value":1379},{"type":45,"tag":154,"props":3377,"children":3378},{"style":201},[3379],{"type":51,"value":655},{"type":45,"tag":154,"props":3381,"children":3382},{"style":161},[3383],{"type":51,"value":1379},{"type":45,"tag":154,"props":3385,"children":3386},{"style":345},[3387],{"type":51,"value":3388}," with YAML frontmatter\n",{"type":45,"tag":154,"props":3390,"children":3391},{"class":156,"line":244},[3392,3396],{"type":45,"tag":154,"props":3393,"children":3394},{"style":161},[3395],{"type":51,"value":1409},{"type":45,"tag":154,"props":3397,"children":3398},{"style":345},[3399],{"type":51,"value":3400}," Set appropriate values based on user input\n",{"type":45,"tag":154,"props":3402,"children":3403},{"class":156,"line":300},[3404,3408],{"type":45,"tag":154,"props":3405,"children":3406},{"style":161},[3407],{"type":51,"value":1422},{"type":45,"tag":154,"props":3409,"children":3410},{"style":345},[3411],{"type":51,"value":3412}," Inform user that settings are saved\n",{"type":45,"tag":154,"props":3414,"children":3415},{"class":156,"line":308},[3416,3420],{"type":45,"tag":154,"props":3417,"children":3418},{"style":161},[3419],{"type":51,"value":1435},{"type":45,"tag":154,"props":3421,"children":3422},{"style":345},[3423],{"type":51,"value":3424}," Remind user to restart Claude Code for hooks to recognize changes\n",{"type":45,"tag":136,"props":3426,"children":3428},{"id":3427},"template-generation",[3429],{"type":51,"value":3430},"Template Generation",{"type":45,"tag":61,"props":3432,"children":3433},{},[3434],{"type":51,"value":3435},"Provide template in plugin README:",{"type":45,"tag":143,"props":3437,"children":3439},{"className":145,"code":3438,"language":147,"meta":148,"style":148},"## Configuration\n\nCreate `.claude\u002Fmy-plugin.local.md` in your project:\n\n\\`\\`\\`markdown\n---\nenabled: true\nmode: standard\nmax_retries: 3\n---\n\n# Plugin Configuration\n\nYour settings are active.\n\\`\\`\\`\n\nAfter creating or editing, restart Claude Code for changes to take effect.\n",[3440],{"type":45,"tag":67,"props":3441,"children":3442},{"__ignoreMap":148},[3443,3456,3463,3488,3495,3503,3510,3518,3526,3534,3541,3548,3559,3566,3574,3582,3589],{"type":45,"tag":154,"props":3444,"children":3445},{"class":156,"line":157},[3446,3451],{"type":45,"tag":154,"props":3447,"children":3448},{"style":161},[3449],{"type":51,"value":3450},"## ",{"type":45,"tag":154,"props":3452,"children":3453},{"style":327},[3454],{"type":51,"value":3455},"Configuration\n",{"type":45,"tag":154,"props":3457,"children":3458},{"class":156,"line":167},[3459],{"type":45,"tag":154,"props":3460,"children":3461},{"emptyLinePlaceholder":312},[3462],{"type":51,"value":315},{"type":45,"tag":154,"props":3464,"children":3465},{"class":156,"line":188},[3466,3471,3475,3479,3483],{"type":45,"tag":154,"props":3467,"children":3468},{"style":345},[3469],{"type":51,"value":3470},"Create ",{"type":45,"tag":154,"props":3472,"children":3473},{"style":161},[3474],{"type":51,"value":1379},{"type":45,"tag":154,"props":3476,"children":3477},{"style":201},[3478],{"type":51,"value":655},{"type":45,"tag":154,"props":3480,"children":3481},{"style":161},[3482],{"type":51,"value":1379},{"type":45,"tag":154,"props":3484,"children":3485},{"style":345},[3486],{"type":51,"value":3487}," in your project:\n",{"type":45,"tag":154,"props":3489,"children":3490},{"class":156,"line":207},[3491],{"type":45,"tag":154,"props":3492,"children":3493},{"emptyLinePlaceholder":312},[3494],{"type":51,"value":315},{"type":45,"tag":154,"props":3496,"children":3497},{"class":156,"line":225},[3498],{"type":45,"tag":154,"props":3499,"children":3500},{"style":345},[3501],{"type":51,"value":3502},"\\`\\`\\`markdown\n",{"type":45,"tag":154,"props":3504,"children":3505},{"class":156,"line":244},[3506],{"type":45,"tag":154,"props":3507,"children":3508},{"style":161},[3509],{"type":51,"value":164},{"type":45,"tag":154,"props":3511,"children":3512},{"class":156,"line":300},[3513],{"type":45,"tag":154,"props":3514,"children":3515},{"style":345},[3516],{"type":51,"value":3517},"enabled: true\n",{"type":45,"tag":154,"props":3519,"children":3520},{"class":156,"line":308},[3521],{"type":45,"tag":154,"props":3522,"children":3523},{"style":345},[3524],{"type":51,"value":3525},"mode: standard\n",{"type":45,"tag":154,"props":3527,"children":3528},{"class":156,"line":318},[3529],{"type":45,"tag":154,"props":3530,"children":3531},{"style":345},[3532],{"type":51,"value":3533},"max_retries: 3\n",{"type":45,"tag":154,"props":3535,"children":3536},{"class":156,"line":333},[3537],{"type":45,"tag":154,"props":3538,"children":3539},{"style":161},[3540],{"type":51,"value":164},{"type":45,"tag":154,"props":3542,"children":3543},{"class":156,"line":341},[3544],{"type":45,"tag":154,"props":3545,"children":3546},{"emptyLinePlaceholder":312},[3547],{"type":51,"value":315},{"type":45,"tag":154,"props":3549,"children":3550},{"class":156,"line":351},[3551,3555],{"type":45,"tag":154,"props":3552,"children":3553},{"style":161},[3554],{"type":51,"value":324},{"type":45,"tag":154,"props":3556,"children":3557},{"style":327},[3558],{"type":51,"value":538},{"type":45,"tag":154,"props":3560,"children":3561},{"class":156,"line":365},[3562],{"type":45,"tag":154,"props":3563,"children":3564},{"emptyLinePlaceholder":312},[3565],{"type":51,"value":315},{"type":45,"tag":154,"props":3567,"children":3568},{"class":156,"line":378},[3569],{"type":45,"tag":154,"props":3570,"children":3571},{"style":345},[3572],{"type":51,"value":3573},"Your settings are active.\n",{"type":45,"tag":154,"props":3575,"children":3576},{"class":156,"line":391},[3577],{"type":45,"tag":154,"props":3578,"children":3579},{"style":345},[3580],{"type":51,"value":3581},"\\`\\`\\`\n",{"type":45,"tag":154,"props":3583,"children":3584},{"class":156,"line":836},[3585],{"type":45,"tag":154,"props":3586,"children":3587},{"emptyLinePlaceholder":312},[3588],{"type":51,"value":315},{"type":45,"tag":154,"props":3590,"children":3591},{"class":156,"line":937},[3592],{"type":45,"tag":154,"props":3593,"children":3594},{"style":345},[3595],{"type":51,"value":3596},"After creating or editing, restart Claude Code for changes to take effect.\n",{"type":45,"tag":54,"props":3598,"children":3600},{"id":3599},"best-practices",[3601],{"type":51,"value":3602},"Best Practices",{"type":45,"tag":136,"props":3604,"children":3606},{"id":3605},"file-naming",[3607],{"type":51,"value":3608},"File Naming",{"type":45,"tag":61,"props":3610,"children":3611},{},[3612,3614],{"type":51,"value":3613},"✅ ",{"type":45,"tag":79,"props":3615,"children":3616},{},[3617],{"type":51,"value":3618},"DO:",{"type":45,"tag":85,"props":3620,"children":3621},{},[3622,3634,3639],{"type":45,"tag":89,"props":3623,"children":3624},{},[3625,3627,3632],{"type":51,"value":3626},"Use ",{"type":45,"tag":67,"props":3628,"children":3630},{"className":3629},[],[3631],{"type":51,"value":72},{"type":51,"value":3633}," format",{"type":45,"tag":89,"props":3635,"children":3636},{},[3637],{"type":51,"value":3638},"Match plugin name exactly",{"type":45,"tag":89,"props":3640,"children":3641},{},[3642,3643,3649],{"type":51,"value":3626},{"type":45,"tag":67,"props":3644,"children":3646},{"className":3645},[],[3647],{"type":51,"value":3648},".local.md",{"type":51,"value":3650}," suffix for user-local files",{"type":45,"tag":61,"props":3652,"children":3653},{},[3654,3656],{"type":51,"value":3655},"❌ ",{"type":45,"tag":79,"props":3657,"children":3658},{},[3659],{"type":51,"value":3660},"DON'T:",{"type":45,"tag":85,"props":3662,"children":3663},{},[3664,3676,3681],{"type":45,"tag":89,"props":3665,"children":3666},{},[3667,3669,3675],{"type":51,"value":3668},"Use different directory (not ",{"type":45,"tag":67,"props":3670,"children":3672},{"className":3671},[],[3673],{"type":51,"value":3674},".claude\u002F",{"type":51,"value":128},{"type":45,"tag":89,"props":3677,"children":3678},{},[3679],{"type":51,"value":3680},"Use inconsistent naming",{"type":45,"tag":89,"props":3682,"children":3683},{},[3684,3685,3691,3693,3699],{"type":51,"value":3626},{"type":45,"tag":67,"props":3686,"children":3688},{"className":3687},[],[3689],{"type":51,"value":3690},".md",{"type":51,"value":3692}," without ",{"type":45,"tag":67,"props":3694,"children":3696},{"className":3695},[],[3697],{"type":51,"value":3698},".local",{"type":51,"value":3700}," (might be committed)",{"type":45,"tag":136,"props":3702,"children":3704},{"id":3703},"gitignore",[3705],{"type":51,"value":3706},"Gitignore",{"type":45,"tag":61,"props":3708,"children":3709},{},[3710,3712,3717],{"type":51,"value":3711},"Always add to ",{"type":45,"tag":67,"props":3713,"children":3715},{"className":3714},[],[3716],{"type":51,"value":126},{"type":51,"value":179},{"type":45,"tag":143,"props":3719,"children":3722},{"className":3720,"code":3721,"language":3703,"meta":148,"style":148},"language-gitignore shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".claude\u002F*.local.md\n.claude\u002F*.local.json\n",[3723],{"type":45,"tag":67,"props":3724,"children":3725},{"__ignoreMap":148},[3726,3734],{"type":45,"tag":154,"props":3727,"children":3728},{"class":156,"line":157},[3729],{"type":45,"tag":154,"props":3730,"children":3731},{},[3732],{"type":51,"value":3733},".claude\u002F*.local.md\n",{"type":45,"tag":154,"props":3735,"children":3736},{"class":156,"line":167},[3737],{"type":45,"tag":154,"props":3738,"children":3739},{},[3740],{"type":51,"value":3741},".claude\u002F*.local.json\n",{"type":45,"tag":61,"props":3743,"children":3744},{},[3745],{"type":51,"value":3746},"Document this in plugin README.",{"type":45,"tag":136,"props":3748,"children":3750},{"id":3749},"defaults",[3751],{"type":51,"value":3752},"Defaults",{"type":45,"tag":61,"props":3754,"children":3755},{},[3756],{"type":51,"value":3757},"Provide sensible defaults when settings file doesn't exist:",{"type":45,"tag":143,"props":3759,"children":3761},{"className":584,"code":3760,"language":586,"meta":148,"style":148},"if [[ ! -f \"$STATE_FILE\" ]]; then\n  # Use defaults\n  ENABLED=true\n  MODE=standard\nelse\n  # Read from file\n  # ...\nfi\n",[3762],{"type":45,"tag":67,"props":3763,"children":3764},{"__ignoreMap":148},[3765,3804,3812,3829,3846,3854,3862,3869],{"type":45,"tag":154,"props":3766,"children":3767},{"class":156,"line":157},[3768,3772,3776,3780,3784,3788,3792,3796,3800],{"type":45,"tag":154,"props":3769,"children":3770},{"style":681},[3771],{"type":51,"value":684},{"type":45,"tag":154,"props":3773,"children":3774},{"style":161},[3775],{"type":51,"value":689},{"type":45,"tag":154,"props":3777,"children":3778},{"style":161},[3779],{"type":51,"value":694},{"type":45,"tag":154,"props":3781,"children":3782},{"style":161},[3783],{"type":51,"value":699},{"type":45,"tag":154,"props":3785,"children":3786},{"style":161},[3787],{"type":51,"value":283},{"type":45,"tag":154,"props":3789,"children":3790},{"style":345},[3791],{"type":51,"value":708},{"type":45,"tag":154,"props":3793,"children":3794},{"style":161},[3795],{"type":51,"value":264},{"type":45,"tag":154,"props":3797,"children":3798},{"style":161},[3799],{"type":51,"value":717},{"type":45,"tag":154,"props":3801,"children":3802},{"style":681},[3803],{"type":51,"value":722},{"type":45,"tag":154,"props":3805,"children":3806},{"class":156,"line":167},[3807],{"type":45,"tag":154,"props":3808,"children":3809},{"style":596},[3810],{"type":51,"value":3811},"  # Use defaults\n",{"type":45,"tag":154,"props":3813,"children":3814},{"class":156,"line":188},[3815,3820,3824],{"type":45,"tag":154,"props":3816,"children":3817},{"style":345},[3818],{"type":51,"value":3819},"  ENABLED",{"type":45,"tag":154,"props":3821,"children":3822},{"style":161},[3823],{"type":51,"value":646},{"type":45,"tag":154,"props":3825,"children":3826},{"style":201},[3827],{"type":51,"value":3828},"true\n",{"type":45,"tag":154,"props":3830,"children":3831},{"class":156,"line":207},[3832,3837,3841],{"type":45,"tag":154,"props":3833,"children":3834},{"style":345},[3835],{"type":51,"value":3836},"  MODE",{"type":45,"tag":154,"props":3838,"children":3839},{"style":161},[3840],{"type":51,"value":646},{"type":45,"tag":154,"props":3842,"children":3843},{"style":201},[3844],{"type":51,"value":3845},"standard\n",{"type":45,"tag":154,"props":3847,"children":3848},{"class":156,"line":225},[3849],{"type":45,"tag":154,"props":3850,"children":3851},{"style":681},[3852],{"type":51,"value":3853},"else\n",{"type":45,"tag":154,"props":3855,"children":3856},{"class":156,"line":244},[3857],{"type":45,"tag":154,"props":3858,"children":3859},{"style":596},[3860],{"type":51,"value":3861},"  # Read from file\n",{"type":45,"tag":154,"props":3863,"children":3864},{"class":156,"line":300},[3865],{"type":45,"tag":154,"props":3866,"children":3867},{"style":596},[3868],{"type":51,"value":1207},{"type":45,"tag":154,"props":3870,"children":3871},{"class":156,"line":308},[3872],{"type":45,"tag":154,"props":3873,"children":3874},{"style":681},[3875],{"type":51,"value":748},{"type":45,"tag":136,"props":3877,"children":3879},{"id":3878},"validation",[3880],{"type":51,"value":3881},"Validation",{"type":45,"tag":61,"props":3883,"children":3884},{},[3885],{"type":51,"value":3886},"Validate settings values:",{"type":45,"tag":143,"props":3888,"children":3890},{"className":584,"code":3889,"language":586,"meta":148,"style":148},"MAX=$(echo \"$FRONTMATTER\" | grep '^max_value:' | sed 's\u002Fmax_value: *\u002F\u002F')\n\n# Validate numeric range\nif ! [[ \"$MAX\" =~ ^[0-9]+$ ]] || [[ $MAX -lt 1 ]] || [[ $MAX -gt 100 ]]; then\n  echo \"⚠️  Invalid max_value in settings (must be 1-100)\" >&2\n  MAX=10  # Use default\nfi\n",[3891],{"type":45,"tag":67,"props":3892,"children":3893},{"__ignoreMap":148},[3894,3965,3972,3980,4102,4128,4150],{"type":45,"tag":154,"props":3895,"children":3896},{"class":156,"line":157},[3897,3901,3905,3909,3913,3917,3921,3925,3929,3933,3937,3941,3945,3949,3953,3957,3961],{"type":45,"tag":154,"props":3898,"children":3899},{"style":345},[3900],{"type":51,"value":1888},{"type":45,"tag":154,"props":3902,"children":3903},{"style":161},[3904],{"type":51,"value":776},{"type":45,"tag":154,"props":3906,"children":3907},{"style":605},[3908],{"type":51,"value":851},{"type":45,"tag":154,"props":3910,"children":3911},{"style":161},[3912],{"type":51,"value":283},{"type":45,"tag":154,"props":3914,"children":3915},{"style":345},[3916],{"type":51,"value":860},{"type":45,"tag":154,"props":3918,"children":3919},{"style":161},[3920],{"type":51,"value":264},{"type":45,"tag":154,"props":3922,"children":3923},{"style":161},[3924],{"type":51,"value":869},{"type":45,"tag":154,"props":3926,"children":3927},{"style":327},[3928],{"type":51,"value":874},{"type":45,"tag":154,"props":3930,"children":3931},{"style":161},[3932],{"type":51,"value":791},{"type":45,"tag":154,"props":3934,"children":3935},{"style":201},[3936],{"type":51,"value":1925},{"type":45,"tag":154,"props":3938,"children":3939},{"style":161},[3940],{"type":51,"value":801},{"type":45,"tag":154,"props":3942,"children":3943},{"style":161},[3944],{"type":51,"value":869},{"type":45,"tag":154,"props":3946,"children":3947},{"style":327},[3948],{"type":51,"value":896},{"type":45,"tag":154,"props":3950,"children":3951},{"style":161},[3952],{"type":51,"value":791},{"type":45,"tag":154,"props":3954,"children":3955},{"style":201},[3956],{"type":51,"value":1946},{"type":45,"tag":154,"props":3958,"children":3959},{"style":161},[3960],{"type":51,"value":801},{"type":45,"tag":154,"props":3962,"children":3963},{"style":161},[3964],{"type":51,"value":818},{"type":45,"tag":154,"props":3966,"children":3967},{"class":156,"line":167},[3968],{"type":45,"tag":154,"props":3969,"children":3970},{"emptyLinePlaceholder":312},[3971],{"type":51,"value":315},{"type":45,"tag":154,"props":3973,"children":3974},{"class":156,"line":188},[3975],{"type":45,"tag":154,"props":3976,"children":3977},{"style":596},[3978],{"type":51,"value":3979},"# Validate numeric range\n",{"type":45,"tag":154,"props":3981,"children":3982},{"class":156,"line":207},[3983,3987,3991,3995,3999,4004,4008,4013,4018,4023,4028,4033,4038,4043,4048,4052,4057,4062,4067,4072,4076,4080,4084,4089,4094,4098],{"type":45,"tag":154,"props":3984,"children":3985},{"style":681},[3986],{"type":51,"value":684},{"type":45,"tag":154,"props":3988,"children":3989},{"style":161},[3990],{"type":51,"value":694},{"type":45,"tag":154,"props":3992,"children":3993},{"style":161},[3994],{"type":51,"value":689},{"type":45,"tag":154,"props":3996,"children":3997},{"style":161},[3998],{"type":51,"value":283},{"type":45,"tag":154,"props":4000,"children":4001},{"style":345},[4002],{"type":51,"value":4003},"$MAX",{"type":45,"tag":154,"props":4005,"children":4006},{"style":161},[4007],{"type":51,"value":264},{"type":45,"tag":154,"props":4009,"children":4010},{"style":161},[4011],{"type":51,"value":4012}," =~",{"type":45,"tag":154,"props":4014,"children":4015},{"style":345},[4016],{"type":51,"value":4017}," ^",{"type":45,"tag":154,"props":4019,"children":4020},{"style":161},[4021],{"type":51,"value":4022},"[",{"type":45,"tag":154,"props":4024,"children":4025},{"style":345},[4026],{"type":51,"value":4027},"0-9",{"type":45,"tag":154,"props":4029,"children":4030},{"style":161},[4031],{"type":51,"value":4032},"]",{"type":45,"tag":154,"props":4034,"children":4035},{"style":345},[4036],{"type":51,"value":4037},"+$ ",{"type":45,"tag":154,"props":4039,"children":4040},{"style":161},[4041],{"type":51,"value":4042},"]]",{"type":45,"tag":154,"props":4044,"children":4045},{"style":161},[4046],{"type":51,"value":4047}," ||",{"type":45,"tag":154,"props":4049,"children":4050},{"style":161},[4051],{"type":51,"value":689},{"type":45,"tag":154,"props":4053,"children":4054},{"style":345},[4055],{"type":51,"value":4056}," $MAX ",{"type":45,"tag":154,"props":4058,"children":4059},{"style":161},[4060],{"type":51,"value":4061},"-lt",{"type":45,"tag":154,"props":4063,"children":4064},{"style":238},[4065],{"type":51,"value":4066}," 1",{"type":45,"tag":154,"props":4068,"children":4069},{"style":161},[4070],{"type":51,"value":4071}," ]]",{"type":45,"tag":154,"props":4073,"children":4074},{"style":161},[4075],{"type":51,"value":4047},{"type":45,"tag":154,"props":4077,"children":4078},{"style":161},[4079],{"type":51,"value":689},{"type":45,"tag":154,"props":4081,"children":4082},{"style":345},[4083],{"type":51,"value":4056},{"type":45,"tag":154,"props":4085,"children":4086},{"style":161},[4087],{"type":51,"value":4088},"-gt",{"type":45,"tag":154,"props":4090,"children":4091},{"style":238},[4092],{"type":51,"value":4093}," 100",{"type":45,"tag":154,"props":4095,"children":4096},{"style":161},[4097],{"type":51,"value":717},{"type":45,"tag":154,"props":4099,"children":4100},{"style":681},[4101],{"type":51,"value":722},{"type":45,"tag":154,"props":4103,"children":4104},{"class":156,"line":225},[4105,4110,4114,4119,4123],{"type":45,"tag":154,"props":4106,"children":4107},{"style":605},[4108],{"type":51,"value":4109},"  echo",{"type":45,"tag":154,"props":4111,"children":4112},{"style":161},[4113],{"type":51,"value":283},{"type":45,"tag":154,"props":4115,"children":4116},{"style":201},[4117],{"type":51,"value":4118},"⚠️  Invalid max_value in settings (must be 1-100)",{"type":45,"tag":154,"props":4120,"children":4121},{"style":161},[4122],{"type":51,"value":264},{"type":45,"tag":154,"props":4124,"children":4125},{"style":161},[4126],{"type":51,"value":4127}," >&2\n",{"type":45,"tag":154,"props":4129,"children":4130},{"class":156,"line":244},[4131,4136,4140,4145],{"type":45,"tag":154,"props":4132,"children":4133},{"style":345},[4134],{"type":51,"value":4135},"  MAX",{"type":45,"tag":154,"props":4137,"children":4138},{"style":161},[4139],{"type":51,"value":646},{"type":45,"tag":154,"props":4141,"children":4142},{"style":201},[4143],{"type":51,"value":4144},"10",{"type":45,"tag":154,"props":4146,"children":4147},{"style":596},[4148],{"type":51,"value":4149},"  # Use default\n",{"type":45,"tag":154,"props":4151,"children":4152},{"class":156,"line":300},[4153],{"type":45,"tag":154,"props":4154,"children":4155},{"style":681},[4156],{"type":51,"value":748},{"type":45,"tag":136,"props":4158,"children":4160},{"id":4159},"restart-requirement",[4161],{"type":51,"value":4162},"Restart Requirement",{"type":45,"tag":61,"props":4164,"children":4165},{},[4166,4171],{"type":45,"tag":79,"props":4167,"children":4168},{},[4169],{"type":51,"value":4170},"Important:",{"type":51,"value":4172}," Settings changes require Claude Code restart.",{"type":45,"tag":61,"props":4174,"children":4175},{},[4176],{"type":51,"value":4177},"Document in your README:",{"type":45,"tag":143,"props":4179,"children":4181},{"className":145,"code":4180,"language":147,"meta":148,"style":148},"## Changing Settings\n\nAfter editing `.claude\u002Fmy-plugin.local.md`:\n1. Save the file\n2. Exit Claude Code\n3. Restart: `claude` or `cc`\n4. New settings will be loaded\n",[4182],{"type":45,"tag":67,"props":4183,"children":4184},{"__ignoreMap":148},[4185,4197,4204,4229,4241,4253,4296],{"type":45,"tag":154,"props":4186,"children":4187},{"class":156,"line":157},[4188,4192],{"type":45,"tag":154,"props":4189,"children":4190},{"style":161},[4191],{"type":51,"value":3450},{"type":45,"tag":154,"props":4193,"children":4194},{"style":327},[4195],{"type":51,"value":4196},"Changing Settings\n",{"type":45,"tag":154,"props":4198,"children":4199},{"class":156,"line":167},[4200],{"type":45,"tag":154,"props":4201,"children":4202},{"emptyLinePlaceholder":312},[4203],{"type":51,"value":315},{"type":45,"tag":154,"props":4205,"children":4206},{"class":156,"line":188},[4207,4212,4216,4220,4224],{"type":45,"tag":154,"props":4208,"children":4209},{"style":345},[4210],{"type":51,"value":4211},"After editing ",{"type":45,"tag":154,"props":4213,"children":4214},{"style":161},[4215],{"type":51,"value":1379},{"type":45,"tag":154,"props":4217,"children":4218},{"style":201},[4219],{"type":51,"value":655},{"type":45,"tag":154,"props":4221,"children":4222},{"style":161},[4223],{"type":51,"value":1379},{"type":45,"tag":154,"props":4225,"children":4226},{"style":345},[4227],{"type":51,"value":4228},":\n",{"type":45,"tag":154,"props":4230,"children":4231},{"class":156,"line":207},[4232,4236],{"type":45,"tag":154,"props":4233,"children":4234},{"style":161},[4235],{"type":51,"value":1369},{"type":45,"tag":154,"props":4237,"children":4238},{"style":345},[4239],{"type":51,"value":4240}," Save the file\n",{"type":45,"tag":154,"props":4242,"children":4243},{"class":156,"line":225},[4244,4248],{"type":45,"tag":154,"props":4245,"children":4246},{"style":161},[4247],{"type":51,"value":1396},{"type":45,"tag":154,"props":4249,"children":4250},{"style":345},[4251],{"type":51,"value":4252}," Exit Claude Code\n",{"type":45,"tag":154,"props":4254,"children":4255},{"class":156,"line":244},[4256,4260,4265,4269,4274,4278,4283,4287,4292],{"type":45,"tag":154,"props":4257,"children":4258},{"style":161},[4259],{"type":51,"value":1409},{"type":45,"tag":154,"props":4261,"children":4262},{"style":345},[4263],{"type":51,"value":4264}," Restart: ",{"type":45,"tag":154,"props":4266,"children":4267},{"style":161},[4268],{"type":51,"value":1379},{"type":45,"tag":154,"props":4270,"children":4271},{"style":201},[4272],{"type":51,"value":4273},"claude",{"type":45,"tag":154,"props":4275,"children":4276},{"style":161},[4277],{"type":51,"value":1379},{"type":45,"tag":154,"props":4279,"children":4280},{"style":345},[4281],{"type":51,"value":4282}," or ",{"type":45,"tag":154,"props":4284,"children":4285},{"style":161},[4286],{"type":51,"value":1379},{"type":45,"tag":154,"props":4288,"children":4289},{"style":201},[4290],{"type":51,"value":4291},"cc",{"type":45,"tag":154,"props":4293,"children":4294},{"style":161},[4295],{"type":51,"value":1388},{"type":45,"tag":154,"props":4297,"children":4298},{"class":156,"line":300},[4299,4303],{"type":45,"tag":154,"props":4300,"children":4301},{"style":161},[4302],{"type":51,"value":1422},{"type":45,"tag":154,"props":4304,"children":4305},{"style":345},[4306],{"type":51,"value":4307}," New settings will be loaded\n",{"type":45,"tag":61,"props":4309,"children":4310},{},[4311],{"type":51,"value":4312},"Hooks cannot be hot-swapped within a session.",{"type":45,"tag":54,"props":4314,"children":4316},{"id":4315},"security-considerations",[4317],{"type":51,"value":4318},"Security Considerations",{"type":45,"tag":136,"props":4320,"children":4322},{"id":4321},"sanitize-user-input",[4323],{"type":51,"value":4324},"Sanitize User Input",{"type":45,"tag":61,"props":4326,"children":4327},{},[4328],{"type":51,"value":4329},"When writing settings files from user input:",{"type":45,"tag":143,"props":4331,"children":4333},{"className":584,"code":4332,"language":586,"meta":148,"style":148},"# Escape quotes in user input\nSAFE_VALUE=$(echo \"$USER_INPUT\" | sed 's\u002F\"\u002F\\\\\"\u002Fg')\n\n# Write to file\ncat > \"$STATE_FILE\" \u003C\u003CEOF\n---\nuser_setting: \"$SAFE_VALUE\"\n---\nEOF\n",[4334],{"type":45,"tag":67,"props":4335,"children":4336},{"__ignoreMap":148},[4337,4345,4399,4406,4414,4449,4456,4473,4480],{"type":45,"tag":154,"props":4338,"children":4339},{"class":156,"line":157},[4340],{"type":45,"tag":154,"props":4341,"children":4342},{"style":596},[4343],{"type":51,"value":4344},"# Escape quotes in user input\n",{"type":45,"tag":154,"props":4346,"children":4347},{"class":156,"line":167},[4348,4353,4357,4361,4365,4370,4374,4378,4382,4386,4391,4395],{"type":45,"tag":154,"props":4349,"children":4350},{"style":345},[4351],{"type":51,"value":4352},"SAFE_VALUE",{"type":45,"tag":154,"props":4354,"children":4355},{"style":161},[4356],{"type":51,"value":776},{"type":45,"tag":154,"props":4358,"children":4359},{"style":605},[4360],{"type":51,"value":851},{"type":45,"tag":154,"props":4362,"children":4363},{"style":161},[4364],{"type":51,"value":283},{"type":45,"tag":154,"props":4366,"children":4367},{"style":345},[4368],{"type":51,"value":4369},"$USER_INPUT",{"type":45,"tag":154,"props":4371,"children":4372},{"style":161},[4373],{"type":51,"value":264},{"type":45,"tag":154,"props":4375,"children":4376},{"style":161},[4377],{"type":51,"value":869},{"type":45,"tag":154,"props":4379,"children":4380},{"style":327},[4381],{"type":51,"value":896},{"type":45,"tag":154,"props":4383,"children":4384},{"style":161},[4385],{"type":51,"value":791},{"type":45,"tag":154,"props":4387,"children":4388},{"style":201},[4389],{"type":51,"value":4390},"s\u002F\"\u002F\\\\\"\u002Fg",{"type":45,"tag":154,"props":4392,"children":4393},{"style":161},[4394],{"type":51,"value":801},{"type":45,"tag":154,"props":4396,"children":4397},{"style":161},[4398],{"type":51,"value":818},{"type":45,"tag":154,"props":4400,"children":4401},{"class":156,"line":188},[4402],{"type":45,"tag":154,"props":4403,"children":4404},{"emptyLinePlaceholder":312},[4405],{"type":51,"value":315},{"type":45,"tag":154,"props":4407,"children":4408},{"class":156,"line":207},[4409],{"type":45,"tag":154,"props":4410,"children":4411},{"style":596},[4412],{"type":51,"value":4413},"# Write to file\n",{"type":45,"tag":154,"props":4415,"children":4416},{"class":156,"line":225},[4417,4422,4427,4431,4435,4439,4444],{"type":45,"tag":154,"props":4418,"children":4419},{"style":327},[4420],{"type":51,"value":4421},"cat",{"type":45,"tag":154,"props":4423,"children":4424},{"style":161},[4425],{"type":51,"value":4426}," >",{"type":45,"tag":154,"props":4428,"children":4429},{"style":161},[4430],{"type":51,"value":283},{"type":45,"tag":154,"props":4432,"children":4433},{"style":345},[4434],{"type":51,"value":708},{"type":45,"tag":154,"props":4436,"children":4437},{"style":161},[4438],{"type":51,"value":264},{"type":45,"tag":154,"props":4440,"children":4441},{"style":161},[4442],{"type":51,"value":4443}," \u003C\u003C",{"type":45,"tag":154,"props":4445,"children":4446},{"style":161},[4447],{"type":51,"value":4448},"EOF\n",{"type":45,"tag":154,"props":4450,"children":4451},{"class":156,"line":244},[4452],{"type":45,"tag":154,"props":4453,"children":4454},{"style":201},[4455],{"type":51,"value":164},{"type":45,"tag":154,"props":4457,"children":4458},{"class":156,"line":300},[4459,4464,4469],{"type":45,"tag":154,"props":4460,"children":4461},{"style":201},[4462],{"type":51,"value":4463},"user_setting: \"",{"type":45,"tag":154,"props":4465,"children":4466},{"style":345},[4467],{"type":51,"value":4468},"$SAFE_VALUE",{"type":45,"tag":154,"props":4470,"children":4471},{"style":201},[4472],{"type":51,"value":660},{"type":45,"tag":154,"props":4474,"children":4475},{"class":156,"line":308},[4476],{"type":45,"tag":154,"props":4477,"children":4478},{"style":201},[4479],{"type":51,"value":164},{"type":45,"tag":154,"props":4481,"children":4482},{"class":156,"line":318},[4483],{"type":45,"tag":154,"props":4484,"children":4485},{"style":161},[4486],{"type":51,"value":4448},{"type":45,"tag":136,"props":4488,"children":4490},{"id":4489},"validate-file-paths",[4491],{"type":51,"value":4492},"Validate File Paths",{"type":45,"tag":61,"props":4494,"children":4495},{},[4496],{"type":51,"value":4497},"If settings contain file paths:",{"type":45,"tag":143,"props":4499,"children":4501},{"className":584,"code":4500,"language":586,"meta":148,"style":148},"FILE_PATH=$(echo \"$FRONTMATTER\" | grep '^data_file:' | sed 's\u002Fdata_file: *\u002F\u002F')\n\n# Check for path traversal\nif [[ \"$FILE_PATH\" == *\"..\"* ]]; then\n  echo \"⚠️  Invalid path in settings (path traversal)\" >&2\n  exit 2\nfi\n",[4502],{"type":45,"tag":67,"props":4503,"children":4504},{"__ignoreMap":148},[4505,4579,4586,4594,4653,4677,4689],{"type":45,"tag":154,"props":4506,"children":4507},{"class":156,"line":157},[4508,4513,4517,4521,4525,4529,4533,4537,4541,4545,4550,4554,4558,4562,4566,4571,4575],{"type":45,"tag":154,"props":4509,"children":4510},{"style":345},[4511],{"type":51,"value":4512},"FILE_PATH",{"type":45,"tag":154,"props":4514,"children":4515},{"style":161},[4516],{"type":51,"value":776},{"type":45,"tag":154,"props":4518,"children":4519},{"style":605},[4520],{"type":51,"value":851},{"type":45,"tag":154,"props":4522,"children":4523},{"style":161},[4524],{"type":51,"value":283},{"type":45,"tag":154,"props":4526,"children":4527},{"style":345},[4528],{"type":51,"value":860},{"type":45,"tag":154,"props":4530,"children":4531},{"style":161},[4532],{"type":51,"value":264},{"type":45,"tag":154,"props":4534,"children":4535},{"style":161},[4536],{"type":51,"value":869},{"type":45,"tag":154,"props":4538,"children":4539},{"style":327},[4540],{"type":51,"value":874},{"type":45,"tag":154,"props":4542,"children":4543},{"style":161},[4544],{"type":51,"value":791},{"type":45,"tag":154,"props":4546,"children":4547},{"style":201},[4548],{"type":51,"value":4549},"^data_file:",{"type":45,"tag":154,"props":4551,"children":4552},{"style":161},[4553],{"type":51,"value":801},{"type":45,"tag":154,"props":4555,"children":4556},{"style":161},[4557],{"type":51,"value":869},{"type":45,"tag":154,"props":4559,"children":4560},{"style":327},[4561],{"type":51,"value":896},{"type":45,"tag":154,"props":4563,"children":4564},{"style":161},[4565],{"type":51,"value":791},{"type":45,"tag":154,"props":4567,"children":4568},{"style":201},[4569],{"type":51,"value":4570},"s\u002Fdata_file: *\u002F\u002F",{"type":45,"tag":154,"props":4572,"children":4573},{"style":161},[4574],{"type":51,"value":801},{"type":45,"tag":154,"props":4576,"children":4577},{"style":161},[4578],{"type":51,"value":818},{"type":45,"tag":154,"props":4580,"children":4581},{"class":156,"line":167},[4582],{"type":45,"tag":154,"props":4583,"children":4584},{"emptyLinePlaceholder":312},[4585],{"type":51,"value":315},{"type":45,"tag":154,"props":4587,"children":4588},{"class":156,"line":188},[4589],{"type":45,"tag":154,"props":4590,"children":4591},{"style":596},[4592],{"type":51,"value":4593},"# Check for path traversal\n",{"type":45,"tag":154,"props":4595,"children":4596},{"class":156,"line":207},[4597,4601,4605,4609,4614,4618,4622,4627,4631,4636,4640,4645,4649],{"type":45,"tag":154,"props":4598,"children":4599},{"style":681},[4600],{"type":51,"value":684},{"type":45,"tag":154,"props":4602,"children":4603},{"style":161},[4604],{"type":51,"value":689},{"type":45,"tag":154,"props":4606,"children":4607},{"style":161},[4608],{"type":51,"value":283},{"type":45,"tag":154,"props":4610,"children":4611},{"style":345},[4612],{"type":51,"value":4613},"$FILE_PATH",{"type":45,"tag":154,"props":4615,"children":4616},{"style":161},[4617],{"type":51,"value":264},{"type":45,"tag":154,"props":4619,"children":4620},{"style":161},[4621],{"type":51,"value":1169},{"type":45,"tag":154,"props":4623,"children":4624},{"style":161},[4625],{"type":51,"value":4626}," *",{"type":45,"tag":154,"props":4628,"children":4629},{"style":161},[4630],{"type":51,"value":264},{"type":45,"tag":154,"props":4632,"children":4633},{"style":201},[4634],{"type":51,"value":4635},"..",{"type":45,"tag":154,"props":4637,"children":4638},{"style":161},[4639],{"type":51,"value":264},{"type":45,"tag":154,"props":4641,"children":4642},{"style":161},[4643],{"type":51,"value":4644},"*",{"type":45,"tag":154,"props":4646,"children":4647},{"style":161},[4648],{"type":51,"value":717},{"type":45,"tag":154,"props":4650,"children":4651},{"style":681},[4652],{"type":51,"value":722},{"type":45,"tag":154,"props":4654,"children":4655},{"class":156,"line":225},[4656,4660,4664,4669,4673],{"type":45,"tag":154,"props":4657,"children":4658},{"style":605},[4659],{"type":51,"value":4109},{"type":45,"tag":154,"props":4661,"children":4662},{"style":161},[4663],{"type":51,"value":283},{"type":45,"tag":154,"props":4665,"children":4666},{"style":201},[4667],{"type":51,"value":4668},"⚠️  Invalid path in settings (path traversal)",{"type":45,"tag":154,"props":4670,"children":4671},{"style":161},[4672],{"type":51,"value":264},{"type":45,"tag":154,"props":4674,"children":4675},{"style":161},[4676],{"type":51,"value":4127},{"type":45,"tag":154,"props":4678,"children":4679},{"class":156,"line":244},[4680,4684],{"type":45,"tag":154,"props":4681,"children":4682},{"style":605},[4683],{"type":51,"value":730},{"type":45,"tag":154,"props":4685,"children":4686},{"style":238},[4687],{"type":51,"value":4688}," 2\n",{"type":45,"tag":154,"props":4690,"children":4691},{"class":156,"line":300},[4692],{"type":45,"tag":154,"props":4693,"children":4694},{"style":681},[4695],{"type":51,"value":748},{"type":45,"tag":136,"props":4697,"children":4699},{"id":4698},"permissions",[4700],{"type":51,"value":4701},"Permissions",{"type":45,"tag":61,"props":4703,"children":4704},{},[4705],{"type":51,"value":4706},"Settings files should be:",{"type":45,"tag":85,"props":4708,"children":4709},{},[4710,4722,4727],{"type":45,"tag":89,"props":4711,"children":4712},{},[4713,4715,4721],{"type":51,"value":4714},"Readable by user only (",{"type":45,"tag":67,"props":4716,"children":4718},{"className":4717},[],[4719],{"type":51,"value":4720},"chmod 600",{"type":51,"value":128},{"type":45,"tag":89,"props":4723,"children":4724},{},[4725],{"type":51,"value":4726},"Not committed to git",{"type":45,"tag":89,"props":4728,"children":4729},{},[4730],{"type":51,"value":4731},"Not shared between users",{"type":45,"tag":54,"props":4733,"children":4735},{"id":4734},"real-world-examples",[4736],{"type":51,"value":4737},"Real-World Examples",{"type":45,"tag":136,"props":4739,"children":4741},{"id":4740},"multi-agent-swarm-plugin",[4742],{"type":51,"value":4743},"multi-agent-swarm Plugin",{"type":45,"tag":61,"props":4745,"children":4746},{},[4747],{"type":45,"tag":79,"props":4748,"children":4749},{},[4750],{"type":51,"value":2430},{"type":45,"tag":143,"props":4752,"children":4754},{"className":145,"code":4753,"language":147,"meta":148,"style":148},"---\nagent_name: auth-implementation\ntask_number: 3.5\npr_number: 1234\ncoordinator_session: team-leader\nenabled: true\ndependencies: [\"Task 3.4\"]\nadditional_instructions: Use JWT tokens, not sessions\n---\n\n# Task: Implement Authentication\n\nBuild JWT-based authentication for the REST API.\nCoordinate with auth-agent on shared types.\n",[4755],{"type":45,"tag":67,"props":4756,"children":4757},{"__ignoreMap":148},[4758,4765,4781,4796,4811,4826,4841,4872,4889,4896,4903,4915,4922,4930],{"type":45,"tag":154,"props":4759,"children":4760},{"class":156,"line":157},[4761],{"type":45,"tag":154,"props":4762,"children":4763},{"style":161},[4764],{"type":51,"value":164},{"type":45,"tag":154,"props":4766,"children":4767},{"class":156,"line":167},[4768,4772,4776],{"type":45,"tag":154,"props":4769,"children":4770},{"style":171},[4771],{"type":51,"value":2452},{"type":45,"tag":154,"props":4773,"children":4774},{"style":161},[4775],{"type":51,"value":179},{"type":45,"tag":154,"props":4777,"children":4778},{"style":201},[4779],{"type":51,"value":4780}," auth-implementation\n",{"type":45,"tag":154,"props":4782,"children":4783},{"class":156,"line":188},[4784,4788,4792],{"type":45,"tag":154,"props":4785,"children":4786},{"style":171},[4787],{"type":51,"value":2469},{"type":45,"tag":154,"props":4789,"children":4790},{"style":161},[4791],{"type":51,"value":179},{"type":45,"tag":154,"props":4793,"children":4794},{"style":238},[4795],{"type":51,"value":2478},{"type":45,"tag":154,"props":4797,"children":4798},{"class":156,"line":207},[4799,4803,4807],{"type":45,"tag":154,"props":4800,"children":4801},{"style":171},[4802],{"type":51,"value":2486},{"type":45,"tag":154,"props":4804,"children":4805},{"style":161},[4806],{"type":51,"value":179},{"type":45,"tag":154,"props":4808,"children":4809},{"style":238},[4810],{"type":51,"value":2495},{"type":45,"tag":154,"props":4812,"children":4813},{"class":156,"line":225},[4814,4818,4822],{"type":45,"tag":154,"props":4815,"children":4816},{"style":171},[4817],{"type":51,"value":503},{"type":45,"tag":154,"props":4819,"children":4820},{"style":161},[4821],{"type":51,"value":179},{"type":45,"tag":154,"props":4823,"children":4824},{"style":201},[4825],{"type":51,"value":512},{"type":45,"tag":154,"props":4827,"children":4828},{"class":156,"line":244},[4829,4833,4837],{"type":45,"tag":154,"props":4830,"children":4831},{"style":171},[4832],{"type":51,"value":174},{"type":45,"tag":154,"props":4834,"children":4835},{"style":161},[4836],{"type":51,"value":179},{"type":45,"tag":154,"props":4838,"children":4839},{"style":182},[4840],{"type":51,"value":185},{"type":45,"tag":154,"props":4842,"children":4843},{"class":156,"line":300},[4844,4848,4852,4856,4860,4864,4868],{"type":45,"tag":154,"props":4845,"children":4846},{"style":171},[4847],{"type":51,"value":2533},{"type":45,"tag":154,"props":4849,"children":4850},{"style":161},[4851],{"type":51,"value":179},{"type":45,"tag":154,"props":4853,"children":4854},{"style":161},[4855],{"type":51,"value":259},{"type":45,"tag":154,"props":4857,"children":4858},{"style":161},[4859],{"type":51,"value":264},{"type":45,"tag":154,"props":4861,"children":4862},{"style":201},[4863],{"type":51,"value":2550},{"type":45,"tag":154,"props":4865,"children":4866},{"style":161},[4867],{"type":51,"value":264},{"type":45,"tag":154,"props":4869,"children":4870},{"style":161},[4871],{"type":51,"value":297},{"type":45,"tag":154,"props":4873,"children":4874},{"class":156,"line":308},[4875,4880,4884],{"type":45,"tag":154,"props":4876,"children":4877},{"style":171},[4878],{"type":51,"value":4879},"additional_instructions",{"type":45,"tag":154,"props":4881,"children":4882},{"style":161},[4883],{"type":51,"value":179},{"type":45,"tag":154,"props":4885,"children":4886},{"style":201},[4887],{"type":51,"value":4888}," Use JWT tokens, not sessions\n",{"type":45,"tag":154,"props":4890,"children":4891},{"class":156,"line":318},[4892],{"type":45,"tag":154,"props":4893,"children":4894},{"style":161},[4895],{"type":51,"value":164},{"type":45,"tag":154,"props":4897,"children":4898},{"class":156,"line":333},[4899],{"type":45,"tag":154,"props":4900,"children":4901},{"emptyLinePlaceholder":312},[4902],{"type":51,"value":315},{"type":45,"tag":154,"props":4904,"children":4905},{"class":156,"line":341},[4906,4910],{"type":45,"tag":154,"props":4907,"children":4908},{"style":161},[4909],{"type":51,"value":324},{"type":45,"tag":154,"props":4911,"children":4912},{"style":327},[4913],{"type":51,"value":4914},"Task: Implement Authentication\n",{"type":45,"tag":154,"props":4916,"children":4917},{"class":156,"line":351},[4918],{"type":45,"tag":154,"props":4919,"children":4920},{"emptyLinePlaceholder":312},[4921],{"type":51,"value":315},{"type":45,"tag":154,"props":4923,"children":4924},{"class":156,"line":365},[4925],{"type":45,"tag":154,"props":4926,"children":4927},{"style":345},[4928],{"type":51,"value":4929},"Build JWT-based authentication for the REST API.\n",{"type":45,"tag":154,"props":4931,"children":4932},{"class":156,"line":378},[4933],{"type":45,"tag":154,"props":4934,"children":4935},{"style":345},[4936],{"type":51,"value":4937},"Coordinate with auth-agent on shared types.\n",{"type":45,"tag":61,"props":4939,"children":4940},{},[4941],{"type":45,"tag":79,"props":4942,"children":4943},{},[4944],{"type":51,"value":4945},"Hook usage (agent-stop-notification.sh):",{"type":45,"tag":85,"props":4947,"children":4948},{},[4949,4954,4959,4964],{"type":45,"tag":89,"props":4950,"children":4951},{},[4952],{"type":51,"value":4953},"Checks if file exists (line 15-18: quick exit if not)",{"type":45,"tag":89,"props":4955,"children":4956},{},[4957],{"type":51,"value":4958},"Parses frontmatter to get coordinator_session, agent_name, enabled",{"type":45,"tag":89,"props":4960,"children":4961},{},[4962],{"type":51,"value":4963},"Sends notifications to coordinator if enabled",{"type":45,"tag":89,"props":4965,"children":4966},{},[4967,4969],{"type":51,"value":4968},"Allows quick activation\u002Fdeactivation via ",{"type":45,"tag":67,"props":4970,"children":4972},{"className":4971},[],[4973],{"type":51,"value":4974},"enabled: true\u002Ffalse",{"type":45,"tag":136,"props":4976,"children":4978},{"id":4977},"ralph-loop-plugin",[4979],{"type":51,"value":4980},"ralph-loop Plugin",{"type":45,"tag":61,"props":4982,"children":4983},{},[4984],{"type":45,"tag":79,"props":4985,"children":4986},{},[4987],{"type":51,"value":4988},".claude\u002Fralph-loop.local.md:",{"type":45,"tag":143,"props":4990,"children":4992},{"className":145,"code":4991,"language":147,"meta":148,"style":148},"---\niteration: 1\nmax_iterations: 10\ncompletion_promise: \"All tests passing and build successful\"\n---\n\nFix all the linting errors in the project.\nMake sure tests pass after each fix.\n",[4993],{"type":45,"tag":67,"props":4994,"children":4995},{"__ignoreMap":148},[4996,5003,5020,5037,5062,5069,5076,5084],{"type":45,"tag":154,"props":4997,"children":4998},{"class":156,"line":157},[4999],{"type":45,"tag":154,"props":5000,"children":5001},{"style":161},[5002],{"type":51,"value":164},{"type":45,"tag":154,"props":5004,"children":5005},{"class":156,"line":167},[5006,5011,5015],{"type":45,"tag":154,"props":5007,"children":5008},{"style":171},[5009],{"type":51,"value":5010},"iteration",{"type":45,"tag":154,"props":5012,"children":5013},{"style":161},[5014],{"type":51,"value":179},{"type":45,"tag":154,"props":5016,"children":5017},{"style":238},[5018],{"type":51,"value":5019}," 1\n",{"type":45,"tag":154,"props":5021,"children":5022},{"class":156,"line":188},[5023,5028,5032],{"type":45,"tag":154,"props":5024,"children":5025},{"style":171},[5026],{"type":51,"value":5027},"max_iterations",{"type":45,"tag":154,"props":5029,"children":5030},{"style":161},[5031],{"type":51,"value":179},{"type":45,"tag":154,"props":5033,"children":5034},{"style":238},[5035],{"type":51,"value":5036}," 10\n",{"type":45,"tag":154,"props":5038,"children":5039},{"class":156,"line":207},[5040,5045,5049,5053,5058],{"type":45,"tag":154,"props":5041,"children":5042},{"style":171},[5043],{"type":51,"value":5044},"completion_promise",{"type":45,"tag":154,"props":5046,"children":5047},{"style":161},[5048],{"type":51,"value":179},{"type":45,"tag":154,"props":5050,"children":5051},{"style":161},[5052],{"type":51,"value":283},{"type":45,"tag":154,"props":5054,"children":5055},{"style":201},[5056],{"type":51,"value":5057},"All tests passing and build successful",{"type":45,"tag":154,"props":5059,"children":5060},{"style":161},[5061],{"type":51,"value":660},{"type":45,"tag":154,"props":5063,"children":5064},{"class":156,"line":225},[5065],{"type":45,"tag":154,"props":5066,"children":5067},{"style":161},[5068],{"type":51,"value":164},{"type":45,"tag":154,"props":5070,"children":5071},{"class":156,"line":244},[5072],{"type":45,"tag":154,"props":5073,"children":5074},{"emptyLinePlaceholder":312},[5075],{"type":51,"value":315},{"type":45,"tag":154,"props":5077,"children":5078},{"class":156,"line":300},[5079],{"type":45,"tag":154,"props":5080,"children":5081},{"style":345},[5082],{"type":51,"value":5083},"Fix all the linting errors in the project.\n",{"type":45,"tag":154,"props":5085,"children":5086},{"class":156,"line":308},[5087],{"type":45,"tag":154,"props":5088,"children":5089},{"style":345},[5090],{"type":51,"value":5091},"Make sure tests pass after each fix.\n",{"type":45,"tag":61,"props":5093,"children":5094},{},[5095],{"type":45,"tag":79,"props":5096,"children":5097},{},[5098],{"type":51,"value":5099},"Hook usage (stop-hook.sh):",{"type":45,"tag":85,"props":5101,"children":5102},{},[5103,5108,5113,5118,5123],{"type":45,"tag":89,"props":5104,"children":5105},{},[5106],{"type":51,"value":5107},"Checks if file exists (line 15-18: quick exit if not active)",{"type":45,"tag":89,"props":5109,"children":5110},{},[5111],{"type":51,"value":5112},"Reads iteration count and max_iterations",{"type":45,"tag":89,"props":5114,"children":5115},{},[5116],{"type":51,"value":5117},"Extracts completion_promise for loop termination",{"type":45,"tag":89,"props":5119,"children":5120},{},[5121],{"type":51,"value":5122},"Reads body as the prompt to feed back",{"type":45,"tag":89,"props":5124,"children":5125},{},[5126],{"type":51,"value":5127},"Updates iteration count on each loop",{"type":45,"tag":54,"props":5129,"children":5131},{"id":5130},"quick-reference",[5132],{"type":51,"value":5133},"Quick Reference",{"type":45,"tag":136,"props":5135,"children":5137},{"id":5136},"file-location",[5138],{"type":51,"value":5139},"File Location",{"type":45,"tag":143,"props":5141,"children":5145},{"className":5142,"code":5144,"language":51},[5143],"language-text","project-root\u002F\n└── .claude\u002F\n    └── plugin-name.local.md\n",[5146],{"type":45,"tag":67,"props":5147,"children":5148},{"__ignoreMap":148},[5149],{"type":51,"value":5144},{"type":45,"tag":136,"props":5151,"children":5153},{"id":5152},"frontmatter-parsing",[5154],{"type":51,"value":5155},"Frontmatter Parsing",{"type":45,"tag":143,"props":5157,"children":5159},{"className":584,"code":5158,"language":586,"meta":148,"style":148},"# Extract frontmatter\nFRONTMATTER=$(sed -n '\u002F^---$\u002F,\u002F^---$\u002F{ \u002F^---$\u002Fd; p; }' \"$FILE\")\n\n# Read field\nVALUE=$(echo \"$FRONTMATTER\" | grep '^field:' | sed 's\u002Ffield: *\u002F\u002F' | sed 's\u002F^\"\\(.*\\)\"$\u002F\\1\u002F')\n",[5160],{"type":45,"tag":67,"props":5161,"children":5162},{"__ignoreMap":148},[5163,5171,5218,5225,5233],{"type":45,"tag":154,"props":5164,"children":5165},{"class":156,"line":157},[5166],{"type":45,"tag":154,"props":5167,"children":5168},{"style":596},[5169],{"type":51,"value":5170},"# Extract frontmatter\n",{"type":45,"tag":154,"props":5172,"children":5173},{"class":156,"line":167},[5174,5178,5182,5186,5190,5194,5198,5202,5206,5210,5214],{"type":45,"tag":154,"props":5175,"children":5176},{"style":345},[5177],{"type":51,"value":771},{"type":45,"tag":154,"props":5179,"children":5180},{"style":161},[5181],{"type":51,"value":776},{"type":45,"tag":154,"props":5183,"children":5184},{"style":327},[5185],{"type":51,"value":781},{"type":45,"tag":154,"props":5187,"children":5188},{"style":201},[5189],{"type":51,"value":786},{"type":45,"tag":154,"props":5191,"children":5192},{"style":161},[5193],{"type":51,"value":791},{"type":45,"tag":154,"props":5195,"children":5196},{"style":201},[5197],{"type":51,"value":796},{"type":45,"tag":154,"props":5199,"children":5200},{"style":161},[5201],{"type":51,"value":801},{"type":45,"tag":154,"props":5203,"children":5204},{"style":161},[5205],{"type":51,"value":283},{"type":45,"tag":154,"props":5207,"children":5208},{"style":345},[5209],{"type":51,"value":1648},{"type":45,"tag":154,"props":5211,"children":5212},{"style":161},[5213],{"type":51,"value":264},{"type":45,"tag":154,"props":5215,"children":5216},{"style":161},[5217],{"type":51,"value":818},{"type":45,"tag":154,"props":5219,"children":5220},{"class":156,"line":188},[5221],{"type":45,"tag":154,"props":5222,"children":5223},{"emptyLinePlaceholder":312},[5224],{"type":51,"value":315},{"type":45,"tag":154,"props":5226,"children":5227},{"class":156,"line":207},[5228],{"type":45,"tag":154,"props":5229,"children":5230},{"style":596},[5231],{"type":51,"value":5232},"# Read field\n",{"type":45,"tag":154,"props":5234,"children":5235},{"class":156,"line":225},[5236,5240,5244,5248,5252,5256,5260,5264,5268,5272,5277,5281,5285,5289,5293,5298,5302,5306,5310,5314,5318,5322],{"type":45,"tag":154,"props":5237,"children":5238},{"style":345},[5239],{"type":51,"value":1685},{"type":45,"tag":154,"props":5241,"children":5242},{"style":161},[5243],{"type":51,"value":776},{"type":45,"tag":154,"props":5245,"children":5246},{"style":605},[5247],{"type":51,"value":851},{"type":45,"tag":154,"props":5249,"children":5250},{"style":161},[5251],{"type":51,"value":283},{"type":45,"tag":154,"props":5253,"children":5254},{"style":345},[5255],{"type":51,"value":860},{"type":45,"tag":154,"props":5257,"children":5258},{"style":161},[5259],{"type":51,"value":264},{"type":45,"tag":154,"props":5261,"children":5262},{"style":161},[5263],{"type":51,"value":869},{"type":45,"tag":154,"props":5265,"children":5266},{"style":327},[5267],{"type":51,"value":874},{"type":45,"tag":154,"props":5269,"children":5270},{"style":161},[5271],{"type":51,"value":791},{"type":45,"tag":154,"props":5273,"children":5274},{"style":201},[5275],{"type":51,"value":5276},"^field:",{"type":45,"tag":154,"props":5278,"children":5279},{"style":161},[5280],{"type":51,"value":801},{"type":45,"tag":154,"props":5282,"children":5283},{"style":161},[5284],{"type":51,"value":869},{"type":45,"tag":154,"props":5286,"children":5287},{"style":327},[5288],{"type":51,"value":896},{"type":45,"tag":154,"props":5290,"children":5291},{"style":161},[5292],{"type":51,"value":791},{"type":45,"tag":154,"props":5294,"children":5295},{"style":201},[5296],{"type":51,"value":5297},"s\u002Ffield: *\u002F\u002F",{"type":45,"tag":154,"props":5299,"children":5300},{"style":161},[5301],{"type":51,"value":801},{"type":45,"tag":154,"props":5303,"children":5304},{"style":161},[5305],{"type":51,"value":869},{"type":45,"tag":154,"props":5307,"children":5308},{"style":327},[5309],{"type":51,"value":896},{"type":45,"tag":154,"props":5311,"children":5312},{"style":161},[5313],{"type":51,"value":791},{"type":45,"tag":154,"props":5315,"children":5316},{"style":201},[5317],{"type":51,"value":926},{"type":45,"tag":154,"props":5319,"children":5320},{"style":161},[5321],{"type":51,"value":801},{"type":45,"tag":154,"props":5323,"children":5324},{"style":161},[5325],{"type":51,"value":818},{"type":45,"tag":136,"props":5327,"children":5329},{"id":5328},"body-parsing",[5330],{"type":51,"value":5331},"Body Parsing",{"type":45,"tag":143,"props":5333,"children":5335},{"className":584,"code":5334,"language":586,"meta":148,"style":148},"# Extract body (after second ---)\nBODY=$(awk '\u002F^---$\u002F{i++; next} i>=2' \"$FILE\")\n",[5336],{"type":45,"tag":67,"props":5337,"children":5338},{"__ignoreMap":148},[5339,5347],{"type":45,"tag":154,"props":5340,"children":5341},{"class":156,"line":157},[5342],{"type":45,"tag":154,"props":5343,"children":5344},{"style":596},[5345],{"type":51,"value":5346},"# Extract body (after second ---)\n",{"type":45,"tag":154,"props":5348,"children":5349},{"class":156,"line":167},[5350,5354,5358,5362,5366,5370,5374,5378,5382,5386],{"type":45,"tag":154,"props":5351,"children":5352},{"style":345},[5353],{"type":51,"value":2003},{"type":45,"tag":154,"props":5355,"children":5356},{"style":161},[5357],{"type":51,"value":776},{"type":45,"tag":154,"props":5359,"children":5360},{"style":327},[5361],{"type":51,"value":2012},{"type":45,"tag":154,"props":5363,"children":5364},{"style":161},[5365],{"type":51,"value":791},{"type":45,"tag":154,"props":5367,"children":5368},{"style":201},[5369],{"type":51,"value":2021},{"type":45,"tag":154,"props":5371,"children":5372},{"style":161},[5373],{"type":51,"value":801},{"type":45,"tag":154,"props":5375,"children":5376},{"style":161},[5377],{"type":51,"value":283},{"type":45,"tag":154,"props":5379,"children":5380},{"style":345},[5381],{"type":51,"value":1648},{"type":45,"tag":154,"props":5383,"children":5384},{"style":161},[5385],{"type":51,"value":264},{"type":45,"tag":154,"props":5387,"children":5388},{"style":161},[5389],{"type":51,"value":818},{"type":45,"tag":136,"props":5391,"children":5393},{"id":5392},"quick-exit-pattern",[5394],{"type":51,"value":5395},"Quick Exit Pattern",{"type":45,"tag":143,"props":5397,"children":5399},{"className":584,"code":5398,"language":586,"meta":148,"style":148},"if [[ ! -f \".claude\u002Fmy-plugin.local.md\" ]]; then\n  exit 0  # Not configured\nfi\n",[5400],{"type":45,"tag":67,"props":5401,"children":5402},{"__ignoreMap":148},[5403,5442,5458],{"type":45,"tag":154,"props":5404,"children":5405},{"class":156,"line":157},[5406,5410,5414,5418,5422,5426,5430,5434,5438],{"type":45,"tag":154,"props":5407,"children":5408},{"style":681},[5409],{"type":51,"value":684},{"type":45,"tag":154,"props":5411,"children":5412},{"style":161},[5413],{"type":51,"value":689},{"type":45,"tag":154,"props":5415,"children":5416},{"style":161},[5417],{"type":51,"value":694},{"type":45,"tag":154,"props":5419,"children":5420},{"style":161},[5421],{"type":51,"value":699},{"type":45,"tag":154,"props":5423,"children":5424},{"style":161},[5425],{"type":51,"value":283},{"type":45,"tag":154,"props":5427,"children":5428},{"style":201},[5429],{"type":51,"value":655},{"type":45,"tag":154,"props":5431,"children":5432},{"style":161},[5433],{"type":51,"value":264},{"type":45,"tag":154,"props":5435,"children":5436},{"style":161},[5437],{"type":51,"value":717},{"type":45,"tag":154,"props":5439,"children":5440},{"style":681},[5441],{"type":51,"value":722},{"type":45,"tag":154,"props":5443,"children":5444},{"class":156,"line":167},[5445,5449,5453],{"type":45,"tag":154,"props":5446,"children":5447},{"style":605},[5448],{"type":51,"value":730},{"type":45,"tag":154,"props":5450,"children":5451},{"style":238},[5452],{"type":51,"value":735},{"type":45,"tag":154,"props":5454,"children":5455},{"style":596},[5456],{"type":51,"value":5457},"  # Not configured\n",{"type":45,"tag":154,"props":5459,"children":5460},{"class":156,"line":188},[5461],{"type":45,"tag":154,"props":5462,"children":5463},{"style":681},[5464],{"type":51,"value":748},{"type":45,"tag":54,"props":5466,"children":5468},{"id":5467},"additional-resources",[5469],{"type":51,"value":5470},"Additional Resources",{"type":45,"tag":136,"props":5472,"children":5474},{"id":5473},"reference-files",[5475],{"type":51,"value":5476},"Reference Files",{"type":45,"tag":61,"props":5478,"children":5479},{},[5480],{"type":51,"value":5481},"For detailed implementation patterns:",{"type":45,"tag":85,"props":5483,"children":5484},{},[5485,5499],{"type":45,"tag":89,"props":5486,"children":5487},{},[5488,5497],{"type":45,"tag":79,"props":5489,"children":5490},{},[5491],{"type":45,"tag":67,"props":5492,"children":5494},{"className":5493},[],[5495],{"type":51,"value":5496},"references\u002Fparsing-techniques.md",{"type":51,"value":5498}," - Complete guide to parsing YAML frontmatter and markdown bodies",{"type":45,"tag":89,"props":5500,"children":5501},{},[5502,5511],{"type":45,"tag":79,"props":5503,"children":5504},{},[5505],{"type":45,"tag":67,"props":5506,"children":5508},{"className":5507},[],[5509],{"type":51,"value":5510},"references\u002Freal-world-examples.md",{"type":51,"value":5512}," - Deep dive into multi-agent-swarm and ralph-loop implementations",{"type":45,"tag":136,"props":5514,"children":5516},{"id":5515},"example-files",[5517],{"type":51,"value":5518},"Example Files",{"type":45,"tag":61,"props":5520,"children":5521},{},[5522,5524,5530],{"type":51,"value":5523},"Working examples in ",{"type":45,"tag":67,"props":5525,"children":5527},{"className":5526},[],[5528],{"type":51,"value":5529},"examples\u002F",{"type":51,"value":179},{"type":45,"tag":85,"props":5532,"children":5533},{},[5534,5548,5562],{"type":45,"tag":89,"props":5535,"children":5536},{},[5537,5546],{"type":45,"tag":79,"props":5538,"children":5539},{},[5540],{"type":45,"tag":67,"props":5541,"children":5543},{"className":5542},[],[5544],{"type":51,"value":5545},"read-settings-hook.sh",{"type":51,"value":5547}," - Hook that reads and uses settings",{"type":45,"tag":89,"props":5549,"children":5550},{},[5551,5560],{"type":45,"tag":79,"props":5552,"children":5553},{},[5554],{"type":45,"tag":67,"props":5555,"children":5557},{"className":5556},[],[5558],{"type":51,"value":5559},"create-settings-command.md",{"type":51,"value":5561}," - Command that creates settings file",{"type":45,"tag":89,"props":5563,"children":5564},{},[5565,5574],{"type":45,"tag":79,"props":5566,"children":5567},{},[5568],{"type":45,"tag":67,"props":5569,"children":5571},{"className":5570},[],[5572],{"type":51,"value":5573},"example-settings.md",{"type":51,"value":5575}," - Template settings file",{"type":45,"tag":136,"props":5577,"children":5579},{"id":5578},"utility-scripts",[5580],{"type":51,"value":5581},"Utility Scripts",{"type":45,"tag":61,"props":5583,"children":5584},{},[5585,5587,5593],{"type":51,"value":5586},"Development tools in ",{"type":45,"tag":67,"props":5588,"children":5590},{"className":5589},[],[5591],{"type":51,"value":5592},"scripts\u002F",{"type":51,"value":179},{"type":45,"tag":85,"props":5595,"children":5596},{},[5597,5611],{"type":45,"tag":89,"props":5598,"children":5599},{},[5600,5609],{"type":45,"tag":79,"props":5601,"children":5602},{},[5603],{"type":45,"tag":67,"props":5604,"children":5606},{"className":5605},[],[5607],{"type":51,"value":5608},"validate-settings.sh",{"type":51,"value":5610}," - Validate settings file structure",{"type":45,"tag":89,"props":5612,"children":5613},{},[5614,5623],{"type":45,"tag":79,"props":5615,"children":5616},{},[5617],{"type":45,"tag":67,"props":5618,"children":5620},{"className":5619},[],[5621],{"type":51,"value":5622},"parse-frontmatter.sh",{"type":51,"value":5624}," - Extract frontmatter fields",{"type":45,"tag":54,"props":5626,"children":5628},{"id":5627},"implementation-workflow",[5629],{"type":51,"value":5630},"Implementation Workflow",{"type":45,"tag":61,"props":5632,"children":5633},{},[5634],{"type":51,"value":5635},"To add settings to a plugin:",{"type":45,"tag":5637,"props":5638,"children":5639},"ol",{},[5640,5645,5650,5661,5666,5671,5676],{"type":45,"tag":89,"props":5641,"children":5642},{},[5643],{"type":51,"value":5644},"Design settings schema (which fields, types, defaults)",{"type":45,"tag":89,"props":5646,"children":5647},{},[5648],{"type":51,"value":5649},"Create template file in plugin documentation",{"type":45,"tag":89,"props":5651,"children":5652},{},[5653,5655],{"type":51,"value":5654},"Add gitignore entry for ",{"type":45,"tag":67,"props":5656,"children":5658},{"className":5657},[],[5659],{"type":51,"value":5660},".claude\u002F*.local.md",{"type":45,"tag":89,"props":5662,"children":5663},{},[5664],{"type":51,"value":5665},"Implement settings parsing in hooks\u002Fcommands",{"type":45,"tag":89,"props":5667,"children":5668},{},[5669],{"type":51,"value":5670},"Use quick-exit pattern (check file exists, check enabled field)",{"type":45,"tag":89,"props":5672,"children":5673},{},[5674],{"type":51,"value":5675},"Document settings in plugin README with template",{"type":45,"tag":89,"props":5677,"children":5678},{},[5679],{"type":51,"value":5680},"Remind users that changes require Claude Code restart",{"type":45,"tag":61,"props":5682,"children":5683},{},[5684],{"type":51,"value":5685},"Focus on keeping settings simple and providing good defaults when settings file doesn't exist.",{"type":45,"tag":5687,"props":5688,"children":5689},"style",{},[5690],{"type":51,"value":5691},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":5693,"total":1142},[5694,5710,5725,5740,5753,5766,5785],{"slug":5695,"name":5695,"fn":5696,"description":5697,"org":5698,"tags":5699,"stars":24,"repoUrl":25,"updatedAt":5709},"access","manage iMessage channel access and permissions","Manage iMessage channel access — approve pairings, edit allowlists, set DM\u002Fgroup policy. Use when the user asks to pair, approve someone, check who's allowed, or change policy for the iMessage channel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5700,5703,5706],{"name":5701,"slug":5702,"type":16},"Access Control","access-control",{"name":5704,"slug":5705,"type":16},"iMessage","imessage",{"name":5707,"slug":5708,"type":16},"Messaging","messaging","2026-04-12T04:54:55.917969",{"slug":5711,"name":5711,"fn":5712,"description":5713,"org":5714,"tags":5715,"stars":24,"repoUrl":25,"updatedAt":5724},"agent-development","develop and configure AI agents","This skill should be used when the user asks to \"create an agent\", \"add an agent\", \"write a subagent\", \"agent frontmatter\", \"when to use description\", \"agent examples\", \"agent tools\", \"agent colors\", \"autonomous agent\", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5716,5719,5720,5723],{"name":5717,"slug":5718,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":5721,"slug":5722,"type":16},"Documentation","documentation",{"name":22,"slug":23,"type":16},"2026-04-10T04:55:41.251084",{"slug":5726,"name":5726,"fn":5727,"description":5728,"org":5729,"tags":5730,"stars":24,"repoUrl":25,"updatedAt":5739},"build-mcp-app","build MCP apps with interactive UI","This skill should be used when the user wants to build an \"MCP app\", add \"interactive UI\" or \"widgets\" to an MCP server, \"render components in chat\", build \"MCP UI resources\", make a tool that shows a \"form\", \"picker\", \"dashboard\" or \"confirmation dialog\" inline in the conversation, or mentions \"apps SDK\" in the context of MCP. Use AFTER the build-mcp-server skill has settled the deployment model, or when the user already knows they want UI widgets.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5731,5732,5734,5736],{"name":5717,"slug":5718,"type":16},{"name":5733,"slug":30,"type":16},"Claude Code",{"name":5735,"slug":31,"type":16},"MCP",{"name":5737,"slug":5738,"type":16},"UI Components","ui-components","2026-04-06T17:59:32.421865",{"slug":5741,"name":5741,"fn":5742,"description":5743,"org":5744,"tags":5745,"stars":24,"repoUrl":25,"updatedAt":5752},"build-mcp-server","build MCP servers","This skill should be used when the user asks to \"build an MCP server\", \"create an MCP\", \"make an MCP integration\", \"wrap an API for Claude\", \"expose tools to Claude\", \"make an MCP app\", or discusses building something with the Model Context Protocol. It is the entry point for MCP server development — it interrogates the user about their use case, determines the right deployment model (remote HTTP, MCPB, local stdio), picks a tool-design pattern, and hands off to specialized skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5746,5747,5750,5751],{"name":5717,"slug":5718,"type":16},{"name":5748,"slug":5749,"type":16},"API Development","api-development",{"name":5733,"slug":30,"type":16},{"name":5735,"slug":31,"type":16},"2026-04-06T17:59:33.744601",{"slug":5754,"name":5754,"fn":5755,"description":5756,"org":5757,"tags":5758,"stars":24,"repoUrl":25,"updatedAt":5765},"build-mcpb","package and distribute MCP servers","This skill should be used when the user wants to \"package an MCP server\", \"bundle an MCP\", \"make an MCPB\", \"ship a local MCP server\", \"distribute a local MCP\", discusses \".mcpb files\", mentions bundling a Node or Python runtime with their MCP server, or needs an MCP server that interacts with the local filesystem, desktop apps, or OS and must be installable without the user having Node\u002FPython set up.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5759,5760,5761,5762],{"name":5717,"slug":5718,"type":16},{"name":5733,"slug":30,"type":16},{"name":5735,"slug":31,"type":16},{"name":5763,"slug":5764,"type":16},"Packaging","packaging","2026-04-06T17:59:31.159961",{"slug":5767,"name":5767,"fn":5768,"description":5769,"org":5770,"tags":5771,"stars":24,"repoUrl":25,"updatedAt":5784},"cardputer-buddy","develop MicroPython apps for Cardputer","Iterate on the Cardputer-Adv MicroPython app bundle (Claude Buddy, Snake, Hello) after the device is already provisioned via m5-onboard. Use when the user wants to add a new app, push a single changed .py without re-flashing, watch device serial logs, or run a one-shot REPL command. Trigger on \"add an app\", \"push to the cardputer\", \"tail the device\", \"run on the device\", or follow-up work after \u002Fmaker-setup.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5772,5775,5778,5781],{"name":5773,"slug":5774,"type":16},"Hardware","hardware",{"name":5776,"slug":5777,"type":16},"M5Stack","m5stack",{"name":5779,"slug":5780,"type":16},"MicroPython","micropython",{"name":5782,"slug":5783,"type":16},"Python","python","2026-05-06T05:39:00.134385",{"slug":5786,"name":5786,"fn":5787,"description":5788,"org":5789,"tags":5790,"stars":24,"repoUrl":25,"updatedAt":5796},"claude-automation-recommender","recommend Claude Code automations","Analyze a codebase and recommend Claude Code automations (hooks, subagents, skills, plugins, MCP servers). Use when user asks for automation recommendations, wants to optimize their Claude Code setup, mentions improving Claude Code workflows, asks how to first set up Claude Code for a project, or wants to know what Claude Code features they should use.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5791,5794,5795],{"name":5792,"slug":5793,"type":16},"Agent Context","agent-context",{"name":5733,"slug":30,"type":16},{"name":5735,"slug":31,"type":16},"2026-04-06T18:00:34.049624",{"items":5798,"total":5974},[5799,5820,5834,5846,5863,5874,5895,5913,5927,5937,5945,5958],{"slug":5800,"name":5800,"fn":5801,"description":5802,"org":5803,"tags":5804,"stars":5817,"repoUrl":5818,"updatedAt":5819},"algorithmic-art","create algorithmic art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5805,5808,5811,5814],{"name":5806,"slug":5807,"type":16},"Creative","creative",{"name":5809,"slug":5810,"type":16},"Design","design",{"name":5812,"slug":5813,"type":16},"Generative Art","generative-art",{"name":5815,"slug":5816,"type":16},"JavaScript","javascript",161831,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills","2026-04-06T17:56:15.455818",{"slug":5821,"name":5821,"fn":5822,"description":5823,"org":5824,"tags":5825,"stars":5817,"repoUrl":5818,"updatedAt":5833},"brand-guidelines","apply Anthropic brand colors and typography","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5826,5829,5830],{"name":5827,"slug":5828,"type":16},"Branding","branding",{"name":5809,"slug":5810,"type":16},{"name":5831,"slug":5832,"type":16},"Typography","typography","2026-04-06T17:56:05.042852",{"slug":5835,"name":5835,"fn":5836,"description":5837,"org":5838,"tags":5839,"stars":5817,"repoUrl":5818,"updatedAt":5845},"canvas-design","create posters and visual art as PNG or PDF","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5840,5841,5842],{"name":5806,"slug":5807,"type":16},{"name":5809,"slug":5810,"type":16},{"name":5843,"slug":5844,"type":16},"PDF","pdf","2026-04-06T17:56:03.794732",{"slug":5847,"name":5847,"fn":5848,"description":5849,"org":5850,"tags":5851,"stars":5817,"repoUrl":5818,"updatedAt":5862},"claude-api","build apps with the Claude API","Reference for the Claude API \u002F Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude\u002FAnthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing\u002Fmodel choice\u002Flimits\u002Fcaching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent\u002FMCP\u002Ftool-definition\u002Fmulti-agent\u002FRAG\u002FLLM-judge\u002Fcomputer-use; generate\u002Fsummarize\u002Fextract\u002Fclassify\u002Frewrite\u002Fconverse over NL; debugging refusals\u002Fcutoffs\u002Fstreaming\u002Ftool-calls\u002Ftokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI\u002FGPT\u002FGemini\u002FLlama\u002FMistral\u002FCohere\u002FOllama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5852,5853,5854,5857,5859],{"name":5717,"slug":5718,"type":16},{"name":9,"slug":8,"type":16},{"name":5855,"slug":5856,"type":16},"Anthropic SDK","anthropic-sdk",{"name":5858,"slug":5847,"type":16},"Claude API",{"name":5860,"slug":5861,"type":16},"LLM","llm","2026-07-28T05:36:08.213335",{"slug":5864,"name":5864,"fn":5865,"description":5866,"org":5867,"tags":5868,"stars":5817,"repoUrl":5818,"updatedAt":5873},"doc-coauthoring","co-author documentation and technical specs","Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5869,5870],{"name":5721,"slug":5722,"type":16},{"name":5871,"slug":5872,"type":16},"Technical Writing","technical-writing","2026-04-06T17:56:14.18897",{"slug":5875,"name":5875,"fn":5876,"description":5877,"org":5878,"tags":5879,"stars":5817,"repoUrl":5818,"updatedAt":5894},"docx","create and edit Word documents","Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5880,5883,5885,5888,5891],{"name":5881,"slug":5882,"type":16},"Documents","documents",{"name":5884,"slug":5875,"type":16},"DOCX",{"name":5886,"slug":5887,"type":16},"Office","office",{"name":5889,"slug":5890,"type":16},"Templates","templates",{"name":5892,"slug":5893,"type":16},"Word","word","2026-07-18T05:16:23.136271",{"slug":5896,"name":5896,"fn":5897,"description":5898,"org":5899,"tags":5900,"stars":5817,"repoUrl":5818,"updatedAt":5912},"frontend-design","design production-grade frontend interfaces","Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5901,5902,5905,5908,5911],{"name":5809,"slug":5810,"type":16},{"name":5903,"slug":5904,"type":16},"Frontend","frontend",{"name":5906,"slug":5907,"type":16},"React","react",{"name":5909,"slug":5910,"type":16},"Tailwind CSS","tailwind-css",{"name":5737,"slug":5738,"type":16},"2026-04-06T17:56:16.723469",{"slug":5914,"name":5914,"fn":5915,"description":5916,"org":5917,"tags":5918,"stars":5817,"repoUrl":5818,"updatedAt":5926},"internal-comms","write internal company communications","A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5919,5922,5923],{"name":5920,"slug":5921,"type":16},"Communications","communications",{"name":5889,"slug":5890,"type":16},{"name":5924,"slug":5925,"type":16},"Writing","writing","2026-04-06T17:56:20.695522",{"slug":5928,"name":5928,"fn":5742,"description":5929,"org":5930,"tags":5931,"stars":5817,"repoUrl":5818,"updatedAt":5936},"mcp-builder","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node\u002FTypeScript (MCP SDK).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5932,5933,5934,5935],{"name":5717,"slug":5718,"type":16},{"name":5748,"slug":5749,"type":16},{"name":5860,"slug":5861,"type":16},{"name":5735,"slug":31,"type":16},"2026-04-06T17:56:10.357665",{"slug":5844,"name":5844,"fn":5938,"description":5939,"org":5940,"tags":5941,"stars":5817,"repoUrl":5818,"updatedAt":5944},"read edit and manipulate PDF files","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5942,5943],{"name":5881,"slug":5882,"type":16},{"name":5843,"slug":5844,"type":16},"2026-04-06T17:56:02.483316",{"slug":5946,"name":5946,"fn":5947,"description":5948,"org":5949,"tags":5950,"stars":5817,"repoUrl":5818,"updatedAt":5957},"pptx","create and edit PowerPoint presentations","Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5951,5954],{"name":5952,"slug":5953,"type":16},"PowerPoint","powerpoint",{"name":5955,"slug":5956,"type":16},"Presentations","presentations","2026-07-18T05:16:24.1471",{"slug":5959,"name":5959,"fn":5960,"description":5961,"org":5962,"tags":5963,"stars":5817,"repoUrl":5818,"updatedAt":5973},"skill-creator","create and optimize agent skills","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[5964,5965,5966,5969,5972],{"name":5717,"slug":5718,"type":16},{"name":5721,"slug":5722,"type":16},{"name":5967,"slug":5968,"type":16},"Evals","evals",{"name":5970,"slug":5971,"type":16},"Performance","performance",{"name":5871,"slug":5872,"type":16},"2026-04-19T06:45:40.804",490]