{"skill":{"slug":"wip-repo-permissions-hook","displayName":"Wip Repo Permissions Hook","summary":"Repo visibility guard. Blocks repos from going public without a -private counterpart.","description":"---\nname: wip-repo-permissions-hook\ndescription: Repo visibility guard. Blocks repos from going public without a -private counterpart.\nlicense: MIT\ninterface: [cli, module, mcp, hook, plugin]\nmetadata:\n  display-name: \"Repo Visibility Guard\"\n  version: \"1.0.0\"\n  homepage: \"https://github.com/wipcomputer/wip-ai-devops-toolbox\"\n  author: \"Parker Todd Brooks\"\n  category: dev-tools\n  capabilities:\n    - visibility-check\n    - org-audit\n    - public-gate\n  requires:\n    bins: [node, gh]\n  openclaw:\n    requires:\n      bins: [node, gh]\n    install:\n      - id: node\n        kind: node\n        package: \"@wipcomputer/wip-repo-permissions-hook\"\n        bins: [wip-repo-permissions]\n        label: \"Install via npm\"\n    emoji: \"🔒\"\ncompatibility: Requires node, gh (GitHub CLI). Node.js 18+.\n---\n\n# Repo Permissions Hook\n\n## What This Does\n\nPrevents repos from being made public unless a `-private` counterpart exists on GitHub. Protects internal plans, todos, and development context from accidental exposure.\n\n## The Rule\n\nEvery repo that goes public must have a `{name}-private` repo. The private repo holds `ai/` folders with plans, todos, dev updates, and notes. The public repo has the same code without `ai/`.\n\nForks of external projects are exempt.\n\n## How to Use\n\n### Check before changing visibility\n```bash\nnode cli.js check <org>/<repo>\n```\n\n### Audit all public repos\n```bash\nnode cli.js audit <org>\n```\n\n### Install as Claude Code hook\nAdd to `~/.claude/settings.json` under `hooks.PreToolUse` with matcher `\"Bash\"`.\n\n### Install as OpenClaw plugin\nCopy to `~/.ldm/extensions/wip-repo-permissions-hook/` and restart gateway.\n\n### MCP\n\nTools: `repo_permissions_check`, `repo_permissions_audit`\n\nAdd to `.mcp.json`:\n```json\n{\n  \"wip-repo-permissions\": {\n    \"command\": \"node\",\n    \"args\": [\"/path/to/tools/wip-repo-permissions-hook/mcp-server.mjs\"]\n  }\n}\n```\n","tags":{"latest":"1.9.72"},"stats":{"comments":0,"downloads":1066,"installsAllTime":0,"installsCurrent":0,"stars":0,"versions":65},"createdAt":1773289495872,"updatedAt":1778491848315},"latestVersion":{"version":"1.9.72","createdAt":1776806730790,"changelog":"# AI DevOps Toolbox v1.9.72\n\n## Promote v1.9.71-alpha series to stable\n\nCloses #256.\n\nConsolidates 21 alpha prereleases (`v1.9.71-alpha.1` through `v1.9.71-alpha.21`) into a stable v1.9.72 release. No code changes beyond the version bump in the toolbox root `package.json`; the sub-tool code has been stable and dogfooded across the alpha iterations.\n\n## Why\n\nThe root `package.json` had been sitting at `1.9.71-alpha.21` without a stable promotion. That blocked `deploy-public.sh` from syncing the private repo to the public mirror ... the script gates public release on stable root versions.\n\nSymptom during 2026-04-21: wip-branch-guard sub-tool shipped stable (v1.9.82 → v1.9.83 → v1.9.84) to npm successfully, but the public `wipcomputer/wip-ai-devops-toolbox` GitHub releases page did not show any of them because `deploy-public.sh` refused to run with an alpha root.\n\n## What's in the diff\n\n- `package.json`\n  - Version bump `1.9.71-alpha.21` → `1.9.72`\n\nEverything else flows from `wip-release`:\n\n- CHANGELOG.md updated\n- Git tag `v1.9.72`\n- GitHub release on private repo\n- npm publish to `@latest`\n- `deploy-public.sh` runs, syncs private code (minus `ai/`) to `wipcomputer/wip-ai-devops-toolbox`\n- Public GitHub release created\n\n## Sub-tool versions at this release\n\n| Sub-tool | npm version |\n|---|---|\n| `@wipcomputer/wip-branch-guard` | 1.9.84 |\n| Other sub-tools | See their individual `package.json` |\n\nThe sub-tool releases have their own cadence; this release is purely the toolbox root bump.\n\n## Co-authors\n\nParker Todd Brooks, Lēsa (oc-lesa-mini, Opus 4.7), Claude Code (cc-mini, Opus 4.7).","license":"MIT-0"},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"parkertoddbrooks","userId":"s17620xzyc7kfan8m36at57m6n83h8he","displayName":"Parker Todd Brooks","image":"https://avatars.githubusercontent.com/u/585456?v=4"},"moderation":null}