{
  "metadata": {
    "description": "Claude Code plugins by wow-look-at-my-code",
    "pluginRoot": "./plugins",
    "version": "925"
  },
  "name": "wow-cc-marketplace",
  "owner": {
    "name": "wow-look-at-my-code"
  },
  "plugins": [
    {
      "author": {
        "name": "mhaynie"
      },
      "category": "development",
      "description": "Parses Bash commands with shfmt's syntax tree: denies heredocs and any perl invocation, strips 2\u003e/dev/null everywhere plus trailing | head / | tail / | grep / || true / 2\u003e\u00261 from the final statement only, rewrites a final trailing \u003e file into | tee file, caps every sleep at 3 seconds, removes constant narration echo/printf entirely by rewriting it to the no-op : (seeing through command/builtin/backslash/quoting wrappers while keeping real printf formatting), ensures set -o pipefail, and never emits a rewrite that lost a statement",
      "hooks": {
        "PreToolUse": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/hook.sh",
                "type": "command"
              }
            ],
            "matcher": "Bash"
          }
        ]
      },
      "keywords": [
        "bash",
        "cleanup",
        "rewrite",
        "hook",
        "stderr",
        "devnull",
        "shfmt",
        "ast",
        "tee",
        "pipefail",
        "sleep",
        "echo",
        "printf",
        "perl",
        "narration"
      ],
      "name": "cleanup-bash-cmds",
      "source": {
        "package": "@buildhost/cc-marketplace__cleanup-bash-cmds",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "description": "Detects permission-seeking patterns in assistant messages and blocks the stop with a lecture about autonomy",
      "hooks": {
        "Stop": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/detect-permission-seeking",
                "type": "command"
              }
            ]
          }
        ]
      },
      "keywords": [
        "stop",
        "permission",
        "autonomy",
        "behavior",
        "hook"
      ],
      "name": "detect-permission-seeking",
      "source": {
        "package": "@buildhost/cc-marketplace__detect-permission-seeking",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "Corrective reference notes the model loads before touching things it reliably gets wrong from stale training data",
      "keywords": [
        "docs",
        "reference",
        "dockerfile",
        "docker-compose",
        "skills"
      ],
      "name": "docs",
      "source": {
        "package": "@buildhost/cc-marketplace__docs",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "description": "Auto-approve readonly git and gh commands using JSON-driven rules",
      "hooks": {
        "PermissionRequest": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/enhanced-auto-allow",
                "type": "command"
              }
            ],
            "matcher": "*"
          },
          {
            "hooks": [
              {
                "command": "printf '{\"hookSpecificOutput\":{\"hookEventName\":\"PermissionRequest\",\"decision\":{\"behavior\":\"allow\"}}}'",
                "type": "command"
              }
            ],
            "matcher": "mcp__claude_ai_GitHub_API__get_commit|mcp__claude_ai_GitHub_API__get_copilot_job_status|mcp__claude_ai_GitHub_API__get_file_contents|mcp__claude_ai_GitHub_API__get_label|mcp__claude_ai_GitHub_API__get_latest_release|mcp__claude_ai_GitHub_API__get_me|mcp__claude_ai_GitHub_API__get_release_by_tag|mcp__claude_ai_GitHub_API__get_tag|mcp__claude_ai_GitHub_API__get_team_members|mcp__claude_ai_GitHub_API__get_teams|mcp__claude_ai_GitHub_API__issue_read|mcp__claude_ai_GitHub_API__list_branches|mcp__claude_ai_GitHub_API__list_commits|mcp__claude_ai_GitHub_API__list_issue_types|mcp__claude_ai_GitHub_API__list_issues|mcp__claude_ai_GitHub_API__list_pull_requests|mcp__claude_ai_GitHub_API__list_releases|mcp__claude_ai_GitHub_API__list_tags|mcp__claude_ai_GitHub_API__pull_request_read|mcp__claude_ai_GitHub_API__search_code|mcp__claude_ai_GitHub_API__search_issues|mcp__claude_ai_GitHub_API__search_pull_requests|mcp__claude_ai_GitHub_API__search_repositories|mcp__claude_ai_GitHub_API__search_users"
          }
        ]
      },
      "keywords": [
        "git",
        "github",
        "auto-allow",
        "permissions"
      ],
      "name": "enhanced-auto-allow",
      "source": {
        "package": "@buildhost/cc-marketplace__enhanced-auto-allow",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "category": "development",
      "description": "Blocks the Stop event while the TodoWrite list still has pending or in-progress items, so the assistant doesn't accidentally stop with work unfinished",
      "hooks": {
        "Stop": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/finish-your-todos",
                "type": "command"
              }
            ]
          }
        ]
      },
      "keywords": [
        "stop",
        "todo",
        "todowrite",
        "tasks",
        "autonomy",
        "hook"
      ],
      "name": "finish-your-todos",
      "source": {
        "package": "@buildhost/cc-marketplace__finish-your-todos",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "description": "When the user's message contains a question mark, blocks every tool call except read-only lookups (Read/Grep/Glob) until the assistant answers in plain text; a message that interrupts a running turn also makes the assistant resume the interrupted work instead of stopping after its reply",
      "hooks": {
        "PreToolUse": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/focus-please",
                "type": "command"
              }
            ],
            "matcher": "*"
          }
        ],
        "Stop": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/focus-please",
                "type": "command"
              }
            ]
          }
        ],
        "UserPromptSubmit": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/focus-please",
                "type": "command"
              }
            ]
          }
        ]
      },
      "keywords": [
        "focus",
        "question",
        "attention",
        "block",
        "tools",
        "hook",
        "userpromptsubmit",
        "pretooluse",
        "stop",
        "interrupt",
        "resume"
      ],
      "name": "focus-please",
      "source": {
        "package": "@buildhost/cc-marketplace__focus-please",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "Restores the builtin Glob tool that Claude Code removed in 2.1.117: ripgrep-backed file pattern matching with byte-for-byte 2.1.116 behavior",
      "keywords": [
        "glob",
        "search",
        "files",
        "ripgrep",
        "mcp",
        "builtin"
      ],
      "mcpServers": "./.mcp.json",
      "name": "glob",
      "source": {
        "package": "@buildhost/cc-marketplace__glob",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "Restores the builtin Grep tool that Claude Code removed in 2.1.117: ripgrep-backed content search mirroring 2.1.116 behavior, with a clearer output-mode set",
      "keywords": [
        "grep",
        "search",
        "content",
        "regex",
        "ripgrep",
        "mcp",
        "builtin"
      ],
      "mcpServers": "./.mcp.json",
      "name": "grep",
      "source": {
        "package": "@buildhost/cc-marketplace__grep",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "Create organized, well-structured HTML demo pages with separate CSS and JS files",
      "keywords": [
        "html",
        "demo",
        "frontend",
        "prototype"
      ],
      "name": "html-demo",
      "source": {
        "package": "@buildhost/cc-marketplace__html-demo",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "MCP server wrapping jq for JSON filtering, querying, and transforming without Bash permission prompts",
      "keywords": [
        "jq",
        "json",
        "filter",
        "query",
        "mcp"
      ],
      "mcpServers": "./.mcp.json",
      "name": "jq",
      "source": {
        "package": "@buildhost/cc-marketplace__jq",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "description": "Blocks the Write tool from overwriting existing files - forces use of Edit instead",
      "hooks": {
        "PreToolUse": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/hook.sh",
                "type": "command"
              }
            ],
            "matcher": "Write"
          }
        ]
      },
      "keywords": [
        "write",
        "edit",
        "overwrite",
        "guard",
        "hook"
      ],
      "name": "no-overwrites",
      "source": {
        "package": "@buildhost/cc-marketplace__no-overwrites",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "description": "Fetch text content from URLs referenced with @https://... in prompts",
      "hooks": {
        "UserPromptSubmit": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/prompt-url-fetch",
                "type": "command"
              }
            ]
          }
        ]
      },
      "keywords": [
        "fetch",
        "url",
        "text",
        "content"
      ],
      "name": "prompt-url-fetch",
      "source": {
        "package": "@buildhost/cc-marketplace__prompt-url-fetch",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "mhaynie"
      },
      "description": "Blocks direct go build/test commands - use go-toolchain instead",
      "hooks": {
        "PreToolUse": [
          {
            "hooks": [
              {
                "command": "${CLAUDE_PLUGIN_ROOT}/build/recommend-go-toolchain",
                "type": "command"
              }
            ],
            "matcher": "Bash"
          }
        ]
      },
      "keywords": [
        "go",
        "build",
        "test",
        "toolchain",
        "hook"
      ],
      "name": "recommend-go-toolchain",
      "source": {
        "package": "@buildhost/cc-marketplace__recommend-go-toolchain",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "Claude Code on the web only: the complete coordinator-watchdog unit. Three hooks (PreToolUse dispatch guard on the local arm marker, PostToolUse arm-state recorder for send_later/create_trigger, async all-web-sessions heartbeat speaking the liveness bridge's two-action contract) plus the read-only liveness_map MCP tool over the bridge's list action. Unset WATCHDOG_STATE_HOOK_API_KEY = documented clean no-op; set key + failing bridge = loud systemMessage",
      "hooks": {
        "PostToolUse": [
          {
            "hooks": [
              {
                "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/watchdog-state.ts\"",
                "timeout": 10,
                "type": "command"
              }
            ],
            "matcher": "mcp__claude-code-remote__send_later|mcp__Claude_Code_Remote__send_later|mcp__claude-code-remote__create_trigger|mcp__Claude_Code_Remote__create_trigger|mcp__claude-code-remote__delete_trigger|mcp__Claude_Code_Remote__delete_trigger"
          },
          {
            "hooks": [
              {
                "async": true,
                "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/session-heartbeat.ts\"",
                "timeout": 10,
                "type": "command"
              }
            ],
            "matcher": "*"
          }
        ],
        "PreToolUse": [
          {
            "hooks": [
              {
                "command": "node \"${CLAUDE_PLUGIN_ROOT}/hooks/watchdog-guard.ts\"",
                "timeout": 15,
                "type": "command"
              }
            ],
            "matcher": "mcp__webagent__start_project_session|mcp__claude-code-remote__send_message|mcp__Claude_Code_Remote__send_message"
          }
        ]
      },
      "keywords": [
        "claude-code-web",
        "watchdog",
        "coordinator",
        "liveness",
        "heartbeat",
        "hooks",
        "session",
        "mcp"
      ],
      "mcpServers": "./.mcp.json",
      "name": "watchdog-state",
      "source": {
        "package": "@buildhost/cc-marketplace__watchdog-state",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "925.0.0"
      },
      "version": "925"
    }
  ]
}