Your AI writes code. But does it know how to release it? Check license compliance? Protect your identity files? Sync private repos to public? Follow a real development process?
AI DevOps Toolbox is 13 tools that teach your AI how to do all of this. Once installed, you don't run them manually. Your AI knows how to use them and does it automatically. Built by a team of humans and AIs shipping real software together.
The tools in this toolbox use different capabilities. Check what you have and tell the user honestly what you can and cannot do.
What each interface requires:
| Interface | Requires | Examples |
|---|---|---|
| ----------- | ---------- | ---------- |
| CLI | Shell access (run bash/node commands) | wip-release patch, wip-install |
| Module | Node.js import support | import { release } from 'wip-release' |
| MCP | MCP client support | release, license_scan, repos_check |
| OC Plugin | OpenClaw agent runtime | Plugin in ~/.openclaw/extensions/ |
| Skill | SKILL.md file (works in both CC and OpenClaw) | You're reading it right now |
| CC Hook | Claude Code CLI with hooks support | PreToolUse hooks in ~/.claude/settings.json |
Built and tested on:
How to assess your own platform: Check which capabilities you have (shell access, MCP, hooks) and match them to the table above. If you can run shell commands, CLI tools work. If you can connect to MCP servers, MCP tools work. If you have neither, you can still read and explain the tools, but tell the user which commands to run themselves. Do not claim you can run commands you cannot execute.
Always dry-run first. Before installing, deploying, or running any destructive operation, run with --dry-run so the user can see exactly what will change. Only proceed with the real operation when the user explicitly says to.
Write dev updates as you work. When doing significant work on a repo that uses this toolbox, write a dev update to ai/dev-updates/YYYY-MM-DD--HH-MM--agent--description.md. The release pipeline auto-detects these and uses them as release notes. No more thin one-liners.
Always dry-run first:
npm install -g @wipcomputer/universal-installer
wip-install wipcomputer/wip-ai-devops-toolbox --dry-run
Show the user what will change. When they're ready:
wip-install wipcomputer/wip-ai-devops-toolbox
Or install individually:
npm install -g @wipcomputer/wip-release @wipcomputer/wip-license-hook @wipcomputer/universal-installer @wipcomputer/wip-repos
Takes anything you build and makes it work across every AI interface. You write code in any language. This tool turns it into a CLI, MCP Server, OpenClaw Plugin, Skill, and Claude Code Hook. One command, all six interfaces.
Commands:
wip-install wipcomputer/wip-ai-devops-toolbox # install a toolbox from GitHub
wip-install /path/to/local/repo # install from local path
wip-install wipcomputer/wip-ai-devops-toolbox --dry-run # preview without changes
wip-install --json /path/to/repo # output detection as JSON
What happens when you run wip-install:
tools/ directory with sub-tools, it enters toolbox mode and installs each one| Interface | What it does | Where it writes |
|---|---|---|
| ----------- | ------------- | ----------------- |
| CLI | npm install -g . (falls back to npm link) | Global bin directory (/opt/homebrew/bin/ or equivalent) |
| Module | Confirms importable. No extra deployment needed | Already available via npm |
| MCP Server | Registers via claude mcp add --scope user. Also adds to OpenClaw's .mcp.json if it exists | ~/.claude/ (user scope) and ~/.openclaw/.mcp.json |
| OpenClaw Plugin | Copies to ~/.ldm/extensions/ and ~/.openclaw/extensions/. Runs npm install --omit=dev. Removes existing directory first for a clean copy | ~/.ldm/extensions/ and ~/.openclaw/extensions/ |
| Skill | Copies SKILL.md to OpenClaw's skill directory so both CC and OpenClaw can use it | ~/.openclaw/skills/ |
| CC Hook | Adds a PreToolUse hook entry to Claude Code settings. Checks for duplicates first | ~/.claude/settings.json |
~/.ldm/extensions/registry.jsonSafety:
--dry-run first on a system you don't fully controlrm -rf on the target extension directory before copying. Safe as long as the tool name doesn't collide with an existing plugin that isn't part of the toolboxInterfaces: CLI, Module, Skill
Your team's conventions, baked in. Best practices for AI-assisted development teams.
What it covers:
ai/ folder convention, private/public pattern)cc-mini/, lesa-mini/, cc-air/)How to use it: Read DEV-GUIDE.md before doing repo work. It's the reference for how the team operates.
Interface: Documentation (no CLI, no MCP)
Scheduled automation that runs whether anyone remembers or not. macOS .app bundle with Full Disk Access.
What it runs:
backup.sh ... backs up critical filesbranch-protect.sh ... audits branch protection rules across all reposvisibility-audit.sh ... checks repo visibility matches the public/private patterncrystal-capture.sh ... triggers memory crystal captureCommands:
open -W ~/Applications/LDMDevTools.app --args backup
open -W ~/Applications/LDMDevTools.app --args branch-protect
open -W ~/Applications/LDMDevTools.app --args visibility-audit
Scripts can also run standalone without the .app:
bash tools/ldm-jobs/backup.sh
bash tools/ldm-jobs/branch-protect.sh
bash tools/ldm-jobs/visibility-audit.sh
Where it writes: Depends on the script. Backup writes to the backup target. Audits write to stdout.
Interface: Standalone macOS app
Release software correctly. Version bump, changelog, npm publish, GitHub release. One command, nothing forgotten.
Commands:
wip-release patch --notes="description" # bump patch (1.0.0 -> 1.0.1)
wip-release minor --notes="description" # bump minor (1.0.0 -> 1.1.0)
wip-release major --notes="description" # bump major (1.0.0 -> 2.0.0)
wip-release patch --dry-run # preview without changes
wip-release patch --no-publish # bump + tag only, skip npm/GitHub
wip-release patch --notes-file=path # read notes from a file
wip-release patch # auto-detect notes (see below)
Release notes auto-detection (first match wins):
--notes-file=path ... explicit file pathRELEASE-NOTES-v{ver}.md in repo root (e.g. RELEASE-NOTES-v1-7-4.md)ai/dev-updates/YYYY-MM-DD* ... today's dev update files (most recent first)--notes="one-liner" ... used as fallback, but if a dev update exists with more content, the dev update winsWrite dev updates as you work. wip-release picks them up automatically. No more thin release notes.
What happens when you run wip-release:
.license-guard.json exists, checks LICENSE file, copyright, CLA.md, README license section. Aborts if any check fails.package.jsonSKILL.md (if it exists)CHANGELOG.md with the new version entryv{version}private: true)--merged-YYYY-MM-DDWhere it writes: package.json, SKILL.md, CHANGELOG.md, git tags, npm registry, GitHub Releases
Safety:
--dry-run previews everything without writingprivate: true) is non-fatal; release continuesMCP tools: release, release_status
Interfaces: CLI, Module, MCP, Skill
Publish safely. Syncs a private repo to its clean public counterpart.
Commands:
bash scripts/deploy-public.sh <private-repo-path> <public-github-repo>
# Example:
bash scripts/deploy-public.sh /path/to/memory-crystal-private wipcomputer/memory-crystal
What happens when you run it:
/tmp/ai/ and .git/cc-mini/deploy-YYYYMMDD-HHMMSS)Where it writes: Public GitHub repo (via PR). Local /tmp/ for the clone (cleaned up).
Safety:
ai/ folder is automatically excluded. Internal plans, todos, dev context never reach public.Interfaces: CLI, Skill
Cleans up after itself. Renames merged branches so you know what's done.
Commands:
bash scripts/post-merge-rename.sh # rename merged branches
bash scripts/post-merge-rename.sh --prune # rename + delete old ones
bash scripts/post-merge-rename.sh --dry-run # preview without changes
What happens:
--merged-YYYY-MM-DD (e.g., cc-mini/feature becomes cc-mini/feature--merged-2026-03-10)--prune: for each developer prefix (cc-mini/, lesa-mini/, etc.), keeps the last 3 merged branches and deletes the rest from the remoteRules:
mainWhere it writes: Remote branch names on GitHub (renames and deletes)
Interfaces: CLI, Skill
Knows what it can never overwrite. Blocks destructive edits to identity files.
Protected files: CLAUDE.md, SOUL.md, MEMORY.md, SHARED-CONTEXT.md, IDENTITY.md
How it works as a CC Hook:
Write and Edit tool callsWrite (full overwrite) is blockedEdit (partial edit) is allowed (appending/updating sections is fine){"decision": "block", "reason": "..."} or {"decision": "allow"}Commands:
wip-file-guard --list # list protected files
wip-file-guard --check <filepath> # check if a file is protected
As a CC Hook (automatic):
Configured in ~/.claude/settings.json under hooks.PreToolUse. Runs automatically on every Write/Edit call. No manual invocation needed.
As an OpenClaw Plugin:
Deployed to ~/.openclaw/extensions/wip-file-guard/. Blocks destructive edits in the OpenClaw agent pipeline.
Where it writes: Nothing. It only reads and blocks.
Interfaces: CLI, Module, OpenClaw Plugin, Skill, CC Hook
Enforces licensing on every commit. Copyright, dual-license, CLA. Checked automatically.
Commands:
wip-license-guard check # audit current repo
wip-license-guard check --fix # audit and auto-fix issues
wip-license-guard init # interactive first-run setup
wip-license-guard init --from-standard # apply WIP Computer defaults without prompting
What it checks:
## License sectiontools/Config: .license-guard.json in repo root. Created by init. Contains copyright holder, license type, year, and what to enforce.
As a wip-release gate:
Step 0 of wip-release reads .license-guard.json and runs the same checks. Aborts the release if compliance fails.
--from-standard generates:
.license-guard.json with WIP Computer defaultsLICENSE file (dual MIT+AGPL)CLA.mdWhere it writes: .license-guard.json, LICENSE, CLA.md, README (with --fix)
Interfaces: CLI
Catches license changes in dependencies before they ship.
Commands:
wip-license-hook scan # scan all dependencies for license changes
wip-license-hook scan --json # output as JSON
wip-license-hook audit # full compliance audit
wip-license-hook ledger # show the license compliance ledger
wip-license-hook gate # pass/fail gate for CI or pre-merge
What it does:
package.json and package-lock.jsonlicense-ledger.json) tracks every dependency's license over timegate returns exit code 0 (pass) or 1 (fail) for CI integrationGit hooks:
pre-push hook blocks pushes if license changes are detectedpre-pull hook warns on pull if upstream changed licensesMCP tools: license_scan, license_audit, license_gate, license_ledger
Where it writes: license-ledger.json (the compliance record)
Interfaces: CLI, Module, MCP, Skill
Never accidentally exposes a private repo.
Commands:
wip-repo-permissions check wipcomputer/memory-crystal # check one repo
wip-repo-permissions audit wipcomputer # audit entire org
What it checks:
-private counterpart?As a CC Hook (automatic):
Intercepts commands that could change repo visibility (e.g., gh repo edit --visibility public). Blocks if the -private counterpart doesn't exist.
As an OpenClaw Plugin:
Deployed to ~/.openclaw/extensions/wip-repo-permissions-hook/. Same check in the agent pipeline.
MCP tools: repo_permissions_check, repo_permissions_audit
Where it writes: Nothing. It only reads and blocks.
Interfaces: CLI, Module, MCP, OpenClaw Plugin, Skill, CC Hook
Knows where every repo belongs. One source of truth for folder structure.
Commands:
wip-repos check # compare filesystem to manifest
wip-repos sync --dry-run # preview what sync would move
wip-repos sync # move repos to match manifest
wip-repos add <org/repo> <category> # add a repo to the manifest
wip-repos move <org/repo> <new-category> # move a repo in the manifest
wip-repos tree # show the manifest as a tree
What it does:
repos-manifest.json (the single source of truth)check reports drift (repos in wrong locations, missing repos, unknown repos)sync moves repos to match the manifestMCP tools: repos_check, repos_sync_plan, repos_add, repos_move, repos_tree
Where it writes: Moves directories on the filesystem (with sync). Updates repos-manifest.json (with add/move).
Interfaces: CLI, Module, MCP, Skill
Scaffold the standard ai/ directory in any repo. One command.
Commands:
wip-repo-init /path/to/repo # scaffold ai/ in a repo
wip-repo-init /path/to/repo --dry-run # preview without changes
wip-repo-init /path/to/repo --yes # skip confirmation prompt
What happens:
New repo (no ai/ folder): Creates the full standard structure with READMEs explaining what goes where.
Existing repo (ai/ folder exists): Shows you what will happen and asks for confirmation:
ai/ contents to ai/_sort/ai_old/ai_old/ into the new structure at your own paceNothing is deleted. Your old files are all in ai/_sort/ai_old/.
The standard structure:
ai/
read-me-first.md <- explains everything, links to all sections
_sort/ <- holding pen for files that need sorting
_trash/ <- archive (never delete, move here)
dev-updates/ <- engineering changelog, auto-detected by wip-release
product/
readme-first-product.md <- the product bible
notes/ <- freeform notes, research
plans-prds/ <- plans with lifecycle stages
roadmap.md <- prioritized roadmap
current/ <- plans being built now
upcoming/ <- plans that are next
archive-complete/ <- plans that shipped
todos/ <- per-agent todo files
product-ideas/ <- ideas that aren't plans yet
Every folder has a _trash/ subfolder. Every section has a README.
Where it writes: Creates directories and files inside ai/. If an existing ai/ is present, moves it to ai/_sort/ai_old/.
Interfaces: CLI, Skill
Generate or validate READMEs following the WIP Computer standard. One command.
Commands:
wip-readme-format /path/to/repo # generate README-init-*.md section files
wip-readme-format /path/to/repo --deploy # assemble sections into README.md
wip-readme-format /path/to/repo --dry-run # preview without writing
wip-readme-format /path/to/repo --check # validate existing README against standard
What happens:
Generate mode (default): Detects interfaces, reads SKILL.md for tool names, generates separate section files:
README-init-badges.md ... org header + interface badgesREADME-init-title.md ... title + taglineREADME-init-teach.md ... "Teach Your AI" onboarding blockREADME-init-features.md ... features list (preserved from existing README or auto-generated for toolbox repos)README-init-coverage.md ... interface coverage table (toolbox repos only)README-init-more-info.md ... links to docsREADME-init-license.md ... license block + built-by lineREADME-init-technical.md ... technical content extracted from old READMEDeploy mode: Backs up existing README.md and TECHNICAL.md to ai/_trash/, assembles section files in order into README.md, moves technical to TECHNICAL.md, deletes the staging files.
Edit any section independently before deploying. Same pattern as release notes: staging, review, deploy.
Toolbox mode: For repos with tools/ subdirectories, aggregates interfaces from all sub-tools for badges, generates an interface coverage table using SKILL.md name: frontmatter for human-readable names.
Where it writes: README-init-*.md files in the repo root (staging). On deploy: README.md, TECHNICAL.md, and backups to ai/_trash/.
Interfaces: CLI, Skill
Tools with MCP interfaces are agent-callable. Add to .mcp.json:
{
"wip-release": {
"command": "node",
"args": ["/path/to/tools/wip-release/mcp-server.mjs"]
},
"wip-license-hook": {
"command": "node",
"args": ["/path/to/tools/wip-license-hook/mcp-server.mjs"]
},
"wip-repo-permissions": {
"command": "node",
"args": ["/path/to/tools/wip-repo-permissions-hook/mcp-server.mjs"]
},
"wip-repos": {
"command": "node",
"args": ["/path/to/tools/wip-repos/mcp-server.mjs"]
}
}
All MCP tools:
| Tool | Function | What it does |
|---|---|---|
| ------ | ---------- | ------------- |
| wip-release | release | Run a release (patch/minor/major) |
| wip-release | release_status | Get current version and release state |
| wip-license-hook | license_scan | Scan dependencies for license changes |
| wip-license-hook | license_audit | Full compliance audit |
| wip-license-hook | license_gate | Pass/fail gate for merges |
| wip-license-hook | license_ledger | Show the compliance record |
| wip-repo-permissions | repo_permissions_check | Check if a repo can go public |
| wip-repo-permissions | repo_permissions_audit | Audit entire org visibility |
| wip-repos | repos_check | Compare filesystem to manifest |
| wip-repos | repos_sync_plan | Preview what sync would change |
| wip-repos | repos_add | Add a repo to the manifest |
| wip-repos | repos_move | Move a repo in the manifest |
| wip-repos | repos_tree | Show manifest as a tree |
Example prompts your AI can act on directly:
"Scan all dependencies for license changes" -> license_scan
"Check if memory-crystal can go public" -> repo_permissions_check
"Do a patch release with notes 'fix login bug'" -> release
"Show me which repos aren't in the manifest" -> repos_check
"Audit the whole org's repo visibility" -> repo_permissions_audit
"What version is this repo at?" -> release_status
"Gate this merge on license compliance" -> license_gate
"Show the license compliance ledger" -> license_ledger
| # | Tool | CLI | Module | MCP | OC Plugin | Skill | CC Hook | ClawHub |
|---|---|---|---|---|---|---|---|---|
| --- | ------ | ----- | -------- | ----- | ----------- | ------- | --------- | --------- |
| Setup & Onboarding | ||||||||
| 1 | Universal Installer | Y | Y | Y | ||||
| 2 | Dev Guide | |||||||
| Infrastructure | ||||||||
| 3 | LDM Dev Tools.app | |||||||
| Release & Deploy | ||||||||
| 4 | Release Pipeline | Y | Y | Y | Y | Y | ||
| 5 | Private-to-Public Sync | Y | Y | |||||
| 6 | Post-Merge Branch Naming | Y | Y | |||||
| License, Compliance, and Protection | ||||||||
| 7 | Identity File Protection | Y | Y | Y | Y | Y | Y | |
| 8 | License Guard | Y | ||||||
| 9 | License Rug-Pull Detection | Y | Y | Y | Y | Y | ||
| Repo Management | ||||||||
| 10 | Repo Visibility Guard | Y | Y | Y | Y | Y | Y | Y |
| 11 | Repo Manifest Reconciler | Y | Y | Y | Y | Y | ||
| 12 | Repo Init | Y | Y | |||||
| 13 | README Formatter | Y | Y |
MIT All CLI tools, MCP servers, skills, and hooks (use anywhere, no restrictions).
AGPLv3 Commercial redistribution, marketplace listings, or bundling into paid services.
AGPLv3 for personal use is free. Commercial licenses available.
Built by Parker Todd Brooks, Lēsa (OpenClaw, Claude Opus 4.6), Claude Code (Claude Opus 4.6).
共 1 个版本