[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-cli-zunoworks-gateguard-en":3,"guides-for-zunoworks-gateguard":301,"similar-k17fzvw7q4e13rbrdphydzdfwx86nqag-en":302},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":246,"isFallback":232,"parentExtension":249,"providers":250,"relations":255,"repo":257,"tags":297,"workflow":298},1778699617694.4897,"k17fzvw7q4e13rbrdphydzdfwx86nqag",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"A fact-forcing hook gate for Claude Code. Makes the AI pause and investigate before editing.",{"pypi":12},"gateguard-ai","gateguard","https://github.com/zunoworks/gateguard",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":230,"workflow":244},1778699634441.52,"kn7bg9p7g2mzwkywmp7v47azan86mmtf","en",{"checks":20,"evaluatedAt":198,"extensionSummary":199,"features":200,"nonGoals":205,"promptVersionExtension":209,"promptVersionScoring":210,"purpose":211,"rationale":212,"score":213,"summary":214,"tags":215,"targetMarket":223,"tier":224,"useCases":225},[21,26,29,32,36,39,44,48,51,54,58,62,65,69,72,75,78,81,84,87,91,95,99,103,107,110,113,116,120,123,126,129,132,135,138,142,146,150,153,157,160,163,166,169,172,175,178,181,184,187,191,194],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly states the problem of AI agents making edits without sufficient investigation or understanding of the context.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The extension offers a novel 'deny + force investigation + demand evidence' approach, which is distinct from simple self-evaluation prompts and demonstrably improves code quality.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The tool is installable via pip, integrates with Claude Code hooks, and its described workflow covers the complete lifecycle of AI-assisted coding modifications, including destructive operations.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The extension focuses solely on acting as a gatekeeper for AI code modifications, adhering to a single, well-defined responsibility.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the tool's core function of forcing the AI to investigate before editing.",{"category":40,"check":41,"severity":42,"summary":43},"Invocation","Scoped tools","not_applicable","This is a CLI tool with commands, not a skill with tools. The concept of 'scoped tools' does not directly apply in the same way.",{"category":45,"check":46,"severity":24,"summary":47},"Documentation","Configuration & parameter reference","The configuration options in `.gateguard.yml` are clearly presented, and the CLI commands with their parameters and flags are documented in the README.",{"category":33,"check":49,"severity":24,"summary":50},"Tool naming","The CLI commands ('init', 'logs', 'reset') and the hook commands ('gateguard-hook') are descriptive and follow a clear naming convention.",{"category":33,"check":52,"severity":24,"summary":53},"Minimal I/O surface","The CLI commands accept specific arguments or operate based on configuration files, and the hook processing is designed to produce minimal, structured output or deny.",{"category":55,"check":56,"severity":24,"summary":57},"License","License usability","The extension is licensed under the MIT license, which is permissive and clearly stated in the LICENSE file and pyproject.toml.",{"category":59,"check":60,"severity":24,"summary":61},"Maintenance","Commit recency","The last commit was on April 24, 2026, which is within the last 3 months.",{"category":59,"check":63,"severity":24,"summary":64},"Dependency Management","The primary dependency is `pyyaml` and dev dependencies are listed; typical Python package management practices apply.",{"category":66,"check":67,"severity":24,"summary":68},"Security","Secret Management","The tool does not handle or expose secrets directly; its purpose is to gate AI actions, not to manage user credentials.",{"category":66,"check":70,"severity":24,"summary":71},"Injection","The tool operates on provided commands and file paths, and its hook mechanism is designed to prevent unintended instruction execution.",{"category":66,"check":73,"severity":24,"summary":74},"Transitive Supply-Chain Grenades","The tool relies on local Python dependencies and its own scripts; it does not fetch external code or data at runtime.",{"category":66,"check":76,"severity":24,"summary":77},"Sandbox Isolation","The tool operates within the Claude Code environment and interacts with its configuration and state files, without attempting to modify arbitrary user files outside its defined scope.",{"category":66,"check":79,"severity":24,"summary":80},"Sandbox escape primitives","The hook script is designed to run within the Claude Code environment and does not appear to contain primitives for escaping this sandbox.",{"category":66,"check":82,"severity":24,"summary":83},"Data Exfiltration","The tool's primary function is to gate AI actions and collect local audit logs, with no outbound calls for data exfiltration.",{"category":66,"check":85,"severity":24,"summary":86},"Hidden Text Tricks","The bundled code and documentation do not contain any hidden text tricks or obfuscation designed to mislead the model.",{"category":88,"check":89,"severity":24,"summary":90},"Hooks","Opaque code execution","The Python code is provided as plain, readable source and does not use obfuscation techniques like base64 payloads or `eval`.",{"category":92,"check":93,"severity":24,"summary":94},"Portability","Structural Assumption","The tool makes reasonable assumptions about user project structure for initialization and interacts with user-specific Claude Code configuration directories.",{"category":96,"check":97,"severity":24,"summary":98},"Trust","Issues Attention","There are 0 open and 0 closed issues in the last 90 days, indicating either a new project or low recent activity with no outstanding issues.",{"category":100,"check":101,"severity":24,"summary":102},"Versioning","Release Management","The project declares its version in pyproject.toml and on PyPI, with clear release tags.",{"category":104,"check":105,"severity":24,"summary":106},"Code Execution","Validation","The tool uses standard Python practices for parsing configuration and command-line arguments, implying internal validation.",{"category":66,"check":108,"severity":24,"summary":109},"Unguarded Destructive Operations","Destructive Bash commands are explicitly handled by the `fact_force_bash_destructive` gate, which forces investigation before execution.",{"category":104,"check":111,"severity":24,"summary":112},"Error Handling","The Python scripts handle JSON parsing errors and provide default fallbacks; the hook logic is designed to deny and report errors, not crash.",{"category":104,"check":114,"severity":24,"summary":115},"Logging","The tool logs gate events to `~/.gateguard/gate_log.jsonl`, providing an audit trail for actions.",{"category":117,"check":118,"severity":42,"summary":119},"Compliance","GDPR","The tool does not operate on personal data; it gates AI actions within a development environment.",{"category":117,"check":121,"severity":24,"summary":122},"Target market","The tool is designed for Claude Code and general Python development workflows, with no specific regional limitations detected. 'global' is appropriate.",{"category":92,"check":124,"severity":24,"summary":125},"Runtime stability","The tool is a Python script intended for standard POSIX environments where Claude Code runs, with no OS-specific assumptions.",{"category":45,"check":127,"severity":24,"summary":128},"README","The README file is comprehensive, clearly states the extension's purpose, and provides installation, usage, and workflow details.",{"category":33,"check":130,"severity":24,"summary":131},"Tool surface size","The CLI exposes a small, focused set of commands (init, logs, reset) plus the hook scripts.",{"category":40,"check":133,"severity":24,"summary":134},"Overlapping near-synonym tools","The CLI commands are distinct and do not have overlapping synonyms.",{"category":45,"check":136,"severity":24,"summary":137},"Phantom features","All features mentioned in the README, such as the different gates and CLI commands, have corresponding implementations.",{"category":139,"check":140,"severity":24,"summary":141},"Install","Installation instruction","The README provides clear installation instructions via pip and a copy-pasteable setup command ('gateguard init').",{"category":143,"check":144,"severity":24,"summary":145},"Errors","Actionable error messages","The tool provides clear error messages for configuration issues, hook failures, and invalid inputs, guiding the user on remediation.",{"category":147,"check":148,"severity":24,"summary":149},"Execution","Pinned dependencies","Dependencies are declared in pyproject.toml, and Python packaging best practices imply pinning via lockfiles or standard resolution.",{"category":33,"check":151,"severity":42,"summary":152},"Dry-run preview","The tool's function is to gate AI actions, not to perform destructive operations that would require a dry-run preview.",{"category":154,"check":155,"severity":42,"summary":156},"Protocol","Idempotent retry & timeouts","The tool's core logic is hook-based and transactional within the Claude Code environment; it does not involve remote calls or state-changing operations requiring these specific protocol guarantees.",{"category":117,"check":158,"severity":24,"summary":159},"Telemetry opt-in","The tool's logging is local and opt-in via usage, with no telemetry sent to external services.",{"category":40,"check":161,"severity":24,"summary":162},"Hierarchical discoverable arguments","The CLI commands are flat but simple, and help text with examples is provided for each command.",{"category":40,"check":164,"severity":24,"summary":165},"Unknown-flag handling","Standard Python argparse is used, which typically handles unknown flags with informative errors.",{"category":66,"check":167,"severity":24,"summary":168},"Secrets not in argv","The tool does not handle user secrets directly; its gates focus on AI behavior, not credential management.",{"category":40,"check":170,"severity":24,"summary":171},"Parseable --version","`gateguard --version` outputs a single line in a parseable format.",{"category":40,"check":173,"severity":24,"summary":174},"Flag precedence","Configuration is managed via `.gateguard.yml` and CLI arguments, with clear precedence implied by standard CLI tool behavior and documented init process.",{"category":40,"check":176,"severity":42,"summary":177},"Schema introspection","As a CLI tool primarily interacting with Claude Code's hook system and local configuration, it does not expose machine-readable schemas for its own operations.",{"category":40,"check":179,"severity":24,"summary":180},"Prompt bypass","The CLI commands do not involve interactive prompts; the hook mechanism relies on structured output and configuration, not user input during execution.",{"category":139,"check":182,"severity":24,"summary":183},"No unnecessary global install","The primary installation method is `pip install`, which is standard for Python packages and can be used with virtual environments.",{"category":139,"check":185,"severity":24,"summary":186},"Pipe-to-shell installer","The installation instructions use `pip install`, avoiding insecure pipe-to-shell methods.",{"category":188,"check":189,"severity":24,"summary":190},"Output","Stream separation","The CLI tool separates standard output (version, logs) from diagnostics (errors) appropriately. The hook output is structured JSON.",{"category":188,"check":192,"severity":24,"summary":193},"Structured output mode","The hook mechanism produces structured JSON output when denying actions, enabling the AI to process the feedback. The CLI also provides structured logs.",{"category":195,"check":196,"severity":24,"summary":197},"Subprocess behavior","Signal handling","As a Python script, it will generally inherit standard signal handling, and its short-lived operations are unlikely to cause persistent orphaned processes.",1778699634327,"GateGuard is a Python CLI tool that acts as a pre-execution hook for AI agents like Claude Code. It intercepts file edit, write, and bash commands, forcing the AI to present concrete facts and context before proceeding, thereby improving code quality and reducing errors.",[201,202,203,204],"Forces AI investigation before file edits and bash commands","Implements gates for read-before-edit, fact-forcing edits/writes, and destructive bash commands","Provides a CLI for initialization, log viewing, and state reset","Tracks file reads to enforce read-before-edit policy",[206,207,208],"Replacing the AI agent itself","Directly managing user credentials or secrets","Performing arbitrary file operations outside the AI's gated workflow","3.0.0","4.4.0","To enhance the reliability and quality of AI-generated code by preventing premature or context-deficient modifications, ensuring the AI investigates thoroughly before acting.","The extension is a well-documented, production-ready CLI tool with a clear purpose and robust security and implementation practices. The only non-applicable checks are due to the tool's specific nature as a hook/CLI rather than a service or library with broader protocol requirements.",98,"A robust and secure CLI tool that enhances AI coding quality by enforcing investigation before code modifications.",[216,217,218,219,220,221,222],"claude","ai-agent","guardrail","python","cli","developer-tool","code-quality","global","verified",[226,227,228,229],"Ensuring AI agents understand code context before making changes","Preventing AI agents from deviating from established code patterns or user instructions","Improving the quality and reliability of code generated by AI assistants","Auditing AI's decision-making process before destructive operations",{"codeQuality":231,"collectedAt":233,"documentation":234,"maintenance":237,"security":240,"testCoverage":242},{"hasLockfile":232},false,1778699620115,{"descriptionLength":235,"readmeSize":236},92,9336,{"closedIssues90d":8,"forks":8,"hasChangelog":232,"openIssues90d":8,"pushedAt":238,"stars":239},1777043361000,2,{"hasNpmPackage":232,"license":241,"smitheryVerified":232},"MIT",{"hasCi":243,"hasTests":243},true,{"updatedAt":245},1778699634441,{"basePath":247,"githubOwner":248,"githubRepo":13,"locale":18,"slug":13,"type":220},"","zunoworks",null,{"evaluate":251,"extract":253},{"promptVersionExtension":209,"promptVersionScoring":210,"score":213,"tags":252,"targetMarket":223,"tier":224},[216,217,218,219,220,221,222],{"commitSha":254},"HEAD",{"repoId":256},"kd7cpymv9nv5641nqx7d2mj0p586nzwt",{"_creationTime":258,"_id":256,"identity":259,"providers":260,"workflow":293},1778699613042.667,{"githubOwner":248,"githubRepo":13,"sourceUrl":14},{"classify":261,"discover":283,"github":286},{"commitSha":254,"extensions":262},[263],{"basePath":247,"installMethods":264,"rationale":265,"selectedPaths":266,"source":282,"sourceLanguage":18,"type":220},{"pypi":12},"cli ecosystem detected at /",[267,270,272,275,278,280],{"path":268,"priority":269},"pyproject.toml","mandatory",{"path":271,"priority":269},"README.md",{"path":273,"priority":274},"LICENSE","high",{"path":276,"priority":277},"src/gateguard/cli.py","medium",{"path":279,"priority":277},"src/gateguard/hook.py",{"path":281,"priority":277},"src/gateguard/read_tracker.py","rule",{"sources":284},[285],"manual",{"closedIssues90d":8,"description":10,"forks":8,"license":241,"openIssues90d":8,"pushedAt":238,"readmeSize":236,"stars":239,"topics":287},[288,222,289,290,291,219,292],"claude-code","developer-tools","hook","llm-safety","ai-guardrail",{"classifiedAt":294,"discoverAt":295,"extractAt":296,"githubAt":296,"updatedAt":294},1778699617498,1778699613042,1778699615911,[217,216,220,222,221,218,219],{"evaluatedAt":245,"extractAt":299,"updatedAt":300},1778699617694,1778699656961,[],[303,333,363,389,417,444],{"_creationTime":304,"_id":305,"community":306,"display":307,"identity":313,"providers":316,"relations":326,"tags":328,"workflow":329},1778697107735.8984,"k177h2k24qprbp2pjjs5tsb9r586nywg",{"reviewCount":8},{"description":308,"installMethods":309,"name":311,"sourceUrl":312},"AI Constraint Engine — enforces CLAUDE.md, .cursorrules, AGENTS.md rules as laws. 51 MCP tools, 991 tests. Official MCP Registry. npx speclock protect",{"pypi":310},"speclock_ros2","speclock-ros2","https://github.com/sgroy10/speclock",{"basePath":311,"githubOwner":314,"githubRepo":315,"locale":18,"slug":311,"type":220},"sgroy10","speclock",{"evaluate":317,"extract":325},{"promptVersionExtension":209,"promptVersionScoring":210,"score":318,"tags":319,"targetMarket":223,"tier":224},100,[320,321,221,220,322,323,324],"ai-constraints","code-enforcement","security","mcp","robotics",{"commitSha":254},{"repoId":327},"kd73m85wtkj05xmfff4vq695hn86mgg4",[320,220,321,221,323,324,322],{"evaluatedAt":330,"extractAt":331,"updatedAt":332},1778697123911,1778697107735,1778697174406,{"_creationTime":334,"_id":335,"community":336,"display":337,"identity":343,"providers":347,"relations":357,"tags":359,"workflow":360},1778692456956.1392,"k175y95md19renhn0q6ve6e8ed86n081",{"reviewCount":8},{"description":338,"installMethods":339,"name":341,"sourceUrl":342},"Open-source AI agent firewall for MCP security: agent egress control, DLP, SSRF, and prompt injection defense.",{"go":340},"github.com/pipelockdev/pipelock/tools/demo-metrics","demo-metrics","https://github.com/luckyPipewrench/pipelock",{"basePath":344,"githubOwner":345,"githubRepo":346,"locale":18,"slug":341,"type":220},"tools/demo-metrics","luckyPipewrench","pipelock",{"evaluate":348,"extract":356},{"promptVersionExtension":209,"promptVersionScoring":210,"score":349,"tags":350,"targetMarket":223,"tier":224},99,[322,351,352,217,323,353,354,355],"firewall","proxy","dlp","injection-defense","command-line",{"commitSha":254},{"repoId":358},"kd728h5jcjjje6rbqwymfj9zph86m4jp",[217,355,353,351,354,323,352,322],{"evaluatedAt":361,"extractAt":362,"updatedAt":361},1778692536994,1778692456956,{"_creationTime":364,"_id":365,"community":366,"display":367,"identity":372,"providers":374,"relations":382,"tags":384,"workflow":385},1778696712851.9753,"k177hk154d2wjt39bm54ke8kyn86mz3n",{"reviewCount":8},{"description":368,"installMethods":369,"name":370,"sourceUrl":371},"Context cleaning for Claude Code — prune bloated sessions, protect Agent Teams from context loss, auto-guard with tiered pruning",{"npm":370,"pypi":370},"cozempic","https://github.com/Ruya-AI/cozempic",{"basePath":247,"githubOwner":373,"githubRepo":370,"locale":18,"slug":370,"type":220},"Ruya-AI",{"evaluate":375,"extract":381},{"promptVersionExtension":209,"promptVersionScoring":210,"score":349,"tags":376,"targetMarket":223,"tier":224},[216,377,378,379,380,220,219],"session","context","pruning","optimization",{"commitSha":254},{"repoId":383},"kd79d77qmyh3826dwhk7ynx9xd86nmqm",[216,220,378,380,379,219,377],{"evaluatedAt":386,"extractAt":387,"updatedAt":388},1778696840607,1778696712852,1778696925194,{"_creationTime":390,"_id":391,"community":392,"display":393,"identity":399,"providers":402,"relations":411,"tags":413,"workflow":414},1778698535352.3315,"k171k49wrnbgw2q102k3tpdj8d86nk41",{"reviewCount":8},{"description":394,"installMethods":395,"name":397,"sourceUrl":398},"AI Elements is a component library and custom registry built on top of shadcn/ui to help you build AI-native applications faster.",{"npm":396},"ai-elements","Vercel CLI","https://github.com/vercel/ai-elements",{"basePath":400,"githubOwner":401,"githubRepo":396,"locale":18,"slug":220,"type":220},"packages/cli","vercel",{"evaluate":403,"extract":409},{"promptVersionExtension":209,"promptVersionScoring":210,"score":349,"tags":404,"targetMarket":223,"tier":224},[220,405,401,221,406,407,408],"deployment","automation","infrastructure","cloud",{"commitSha":254,"license":410},"Apache-2.0",{"repoId":412},"kd7bmemx4stzs4sg8v742f96hs86nn1h",[406,220,408,405,221,407,401],{"evaluatedAt":415,"extractAt":416,"updatedAt":415},1778698656693,1778698535352,{"_creationTime":418,"_id":419,"community":420,"display":421,"identity":427,"providers":430,"relations":438,"tags":440,"workflow":441},1778694578248.1074,"k1761s0cbnce7qwccb3zrxct5186mkxt",{"reviewCount":8},{"description":422,"installMethods":423,"name":425,"sourceUrl":426},"The fastest path to AI-powered full stack observability, even for lean teams.",{"cargo":424},"rdp","Netdata Field Encoder CLI","https://github.com/netdata/netdata",{"basePath":428,"githubOwner":429,"githubRepo":429,"locale":18,"slug":424,"type":220},"src/crates/rdp","netdata",{"evaluate":431,"extract":436},{"promptVersionExtension":209,"promptVersionScoring":210,"score":349,"tags":432,"targetMarket":223,"tier":224},[433,434,435,220,221],"observability","data-processing","encoding",{"commitSha":254,"license":437},"GPL-3.0-or-later",{"repoId":439},"kd70yp91ybn40a638h3hzz6nbd86m2cw",[220,434,221,435,433],{"evaluatedAt":442,"extractAt":443,"updatedAt":442},1778694927532,1778694578248,{"_creationTime":445,"_id":446,"community":447,"display":448,"identity":453,"providers":456,"relations":465,"tags":467,"workflow":468},1778688084060.638,"k177a2tx8trp59d6qddfgyqfhs86m99h",{"reviewCount":8},{"description":449,"installMethods":450,"name":451,"sourceUrl":452},"A meta-prompting, context engineering and spec-driven development system for Claude Code, OpenCode, Gemini and Codex by TÂCHES.",{"npm":451},"get-shit-done-cc","https://github.com/gsd-build/get-shit-done",{"basePath":247,"githubOwner":454,"githubRepo":455,"locale":18,"slug":455,"type":220},"gsd-build","get-shit-done",{"evaluate":457,"extract":464},{"promptVersionExtension":209,"promptVersionScoring":210,"score":458,"tags":459,"targetMarket":223,"tier":224},97,[460,216,461,462,220,463],"ai","workflow","development","code-generation",{"commitSha":254,"license":241},{"repoId":466},"kd742g8972gs9150hkbr4r696986nzza",[460,216,220,463,462,461],{"evaluatedAt":469,"extractAt":470,"updatedAt":471},1778688110243,1778688084060,1778688164454]