{
  "metadata": {
    "description": "Claude Code plugins by wow-look-at-my-code",
    "pluginRoot": "./plugins",
    "version": "812"
  },
  "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "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": "812.0.0"
      },
      "version": "812"
    },
    {
      "author": {
        "name": "wow-look-at-my-code"
      },
      "category": "development",
      "description": "Claude Code on the web only: coordinator read path for the session-liveness map stored in the webhook-state KV: liveness_map",
      "keywords": [
        "claude-code-web",
        "watchdog",
        "coordinator",
        "liveness",
        "session",
        "kv",
        "mcp"
      ],
      "mcpServers": "./.mcp.json",
      "name": "watchdog-state",
      "source": {
        "package": "@buildhost/cc-marketplace__watchdog-state",
        "registry": "https://npm.pazer.build",
        "source": "npm",
        "version": "812.0.0"
      },
      "version": "812"
    }
  ]
}