sync: dev → main (uninstall skill + CI fix)#27
Conversation
…d org URLs (#11) - All GitHub URLs now point to Lifecycle-Innovations-Limited/claude-ops - Root README: correct /plugin marketplace add + install commands, MCP vs CLI comparison table showing what each path gains/loses per integration - Inner README: consistent /ops:* colon syntax, GSD as optional, integrations split into CLI-only / MCP-only / choose-with-tradeoffs / plugin-bundled - setup.sh: auto-install missing core tools + npm deps on SessionStart - plugin.json: updated author URL, homepage, repository - marketplace.json + SECURITY.md: updated email Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Setup wizard now offers to install GSD (Get Shit Done) as a companion plugin. Pulls latest version via plugin marketplace. Users choose [Install GSD] or [Skip]. Enhances /ops:go, /ops:projects, /ops:next dashboards with project roadmap state. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Interactive uninstall that cleans up everything: keychain credentials, preferences, cache, shell profile exports, MCP registrations, and the plugin itself. Confirms each deletion step before proceeding. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Mention Blocks like a regular teammate with your question or request: @blocks review this pull request Run |
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 10 minutes and 14 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
💡 Codex Reviewclaude-ops/claude-ops/scripts/setup.sh Line 26 in a0b26c5 Calling The uninstall instructions use BSD-only ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
There was a problem hiding this comment.
Pull request overview
Syncs dev into main, updating repo/org references and improving contributor/CI plumbing while adding an uninstall workflow and expanding setup guidance for companion plugins.
Changes:
- Update documentation and plugin metadata to reflect the new GitHub org and
/ops:*command naming. - Add an
uninstallskill and extend setup wizard docs with “Companion plugins” (GSD) instructions. - Adjust CI gitleaks execution and add GitHub PR/issue templates + contributing guide.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| SECURITY.md | Updates security contact email. |
| README.md | Updates top-level README branding, install steps, and command reference. |
| claude-ops/skills/uninstall/SKILL.md | Introduces a guided uninstall procedure for plugin artifacts/credentials. |
| claude-ops/skills/setup/SKILL.md | Adds “Companion plugins” section (GSD) to setup wizard flow. |
| claude-ops/scripts/setup.sh | Changes setup script behavior to auto-install dependencies and install Node deps. |
| claude-ops/README.md | Updates internal plugin README for /ops:* naming and new install guidance. |
| claude-ops/.claude-plugin/plugin.json | Updates author/repo URLs to the new org. |
| .github/workflows/ci.yml | Replaces gitleaks GitHub Action usage with manual download + execution. |
| .github/PULL_REQUEST_TEMPLATE.md | Adds a PR template for consistent submissions. |
| .github/ISSUE_TEMPLATE/feature_request.md | Adds feature request issue template. |
| .github/ISSUE_TEMPLATE/bug_report.md | Adds bug report issue template. |
| .github/CONTRIBUTING.md | Adds contributor workflow and guidelines. |
| .claude-plugin/marketplace.json | Updates marketplace owner email. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ## Step 6 — Remove MCP registrations | ||
|
|
||
| Check if `~/.claude.json` contains MCP server entries added by the plugin (telegram, slack-mcp). For each: | ||
|
|
||
| Ask via `AskUserQuestion`: | ||
|
|
||
| ``` | ||
| Remove MCP server registration: <server-name> from ~/.claude.json? | ||
| [Yes] [Skip] | ||
| ``` | ||
|
|
||
| On Yes, use `jq` to remove the entry: | ||
|
|
||
| ```bash | ||
| jq 'del(.mcpServers["<server-name>"])' ~/.claude.json > /tmp/claude-json-tmp && mv /tmp/claude-json-tmp ~/.claude.json | ||
| ``` |
There was a problem hiding this comment.
Step 6 removes MCP registrations by directly editing ~/.claude.json with jq. This conflicts with the repo’s established rule that the plugin must never touch ~/.claude.json (it’s Claude Code’s internal file and MCP registration should be done via Claude Code commands/UI). Instead, instruct the user to remove MCP servers via Claude Code’s MCP management (e.g., the claude mcp ... command family used elsewhere in setup, or the /plugin UI), and avoid any direct writes to ~/.claude.json.
| On Yes, read the file and remove lines containing `CLAUDE_PLUGIN_ROOT`. Use `sed` or similar — do NOT rewrite the entire file. Only remove the specific export line. | ||
|
|
||
| ```bash | ||
| sed -i '' '/CLAUDE_PLUGIN_ROOT/d' "<file>" |
There was a problem hiding this comment.
The suggested sed -i '' invocation is BSD/macOS-specific and will fail on GNU sed (Linux). If this skill is intended to be cross-platform, switch to a portable approach (e.g., use a backup suffix, or branch on OS) so removing CLAUDE_PLUGIN_ROOT exports works consistently.
| On Yes, read the file and remove lines containing `CLAUDE_PLUGIN_ROOT`. Use `sed` or similar — do NOT rewrite the entire file. Only remove the specific export line. | |
| ```bash | |
| sed -i '' '/CLAUDE_PLUGIN_ROOT/d' "<file>" | |
| On Yes, read the file and remove lines containing `CLAUDE_PLUGIN_ROOT`. Use `sed` or similar — do NOT rewrite the entire file. Only remove the specific export line. Prefer a portable in-place edit that works on both macOS and Linux. | |
| ```bash | |
| sed -i.bak '/CLAUDE_PLUGIN_ROOT/d' "<file>" && rm -f "<file>.bak" |
| - name: Install gitleaks | ||
| run: | | ||
| curl -sSfL https://github.com/gitleaks/gitleaks/releases/latest/download/gitleaks_8.24.3_linux_amd64.tar.gz | tar xz | ||
| curl -sSfL https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz | tar xz |
There was a problem hiding this comment.
CI installs gitleaks by downloading and extracting a tarball via curl | tar but does not verify integrity (checksum/signature). For supply-chain safety, download to a file and verify a published checksum (or use the official gitleaks/gitleaks-action pinned to a commit SHA) before executing the binary.
| curl -sSfL https://github.com/gitleaks/gitleaks/releases/download/v8.30.1/gitleaks_8.30.1_linux_x64.tar.gz | tar xz | |
| set -euo pipefail | |
| GITLEAKS_VERSION=8.30.1 | |
| GITLEAKS_TARBALL="gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" | |
| GITLEAKS_CHECKSUMS="gitleaks_${GITLEAKS_VERSION}_checksums.txt" | |
| GITLEAKS_BASE_URL="https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}" | |
| curl -sSfL "${GITLEAKS_BASE_URL}/${GITLEAKS_TARBALL}" -o "${GITLEAKS_TARBALL}" | |
| curl -sSfL "${GITLEAKS_BASE_URL}/${GITLEAKS_CHECKSUMS}" -o "${GITLEAKS_CHECKSUMS}" | |
| grep " ${GITLEAKS_TARBALL}\$" "${GITLEAKS_CHECKSUMS}" | sha256sum -c - | |
| tar xzf "${GITLEAKS_TARBALL}" |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.
Reviewed by Cursor Bugbot for commit d6b7a7b. Configure here.
| grep -l 'CLAUDE_PLUGIN_ROOT' ~/.zshrc ~/.bashrc ~/.zprofile ~/.bash_profile 2>/dev/null | ||
|
|
||
| # MCP registrations | ||
| grep -l 'telegram\|slack-mcp' ~/.claude.json 2>/dev/null |
There was a problem hiding this comment.
BSD grep on macOS doesn't support BRE alternation
Medium Severity
The grep -l 'telegram\|slack-mcp' command uses \| for alternation, which is a GNU grep extension not supported by macOS BSD grep. Since this tool targets macOS (evidenced by security keychain commands throughout), this grep will fail to detect MCP registrations in ~/.claude.json. The 2>/dev/null suppresses the error, so Step 6 silently skips removal, leaving stale MCP entries behind after uninstall. Using grep -El 'telegram|slack-mcp' (extended regex) would work on both platforms.
Reviewed by Cursor Bugbot for commit d6b7a7b. Configure here.
* docs: rewrite READMEs with correct install flow, MCP vs CLI guide, and org URLs (#11) - All GitHub URLs now point to Lifecycle-Innovations-Limited/claude-ops - Root README: correct /plugin marketplace add + install commands, MCP vs CLI comparison table showing what each path gains/loses per integration - Inner README: consistent /ops:* colon syntax, GSD as optional, integrations split into CLI-only / MCP-only / choose-with-tradeoffs / plugin-bundled - setup.sh: auto-install missing core tools + npm deps on SessionStart - plugin.json: updated author URL, homepage, repository - marketplace.json + SECURITY.md: updated email Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: clarify Telegram setup is fully automated (phone + 2 codes) (#12) Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add GSD companion plugin auto-install to setup wizard (#13) Setup wizard now offers to install GSD (Get Shit Done) as a companion plugin. Pulls latest version via plugin marketplace. Users choose [Install GSD] or [Skip]. Enhances /ops:go, /ops:projects, /ops:next dashboards with project roadmap state. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: replace gitleaks-action with local binary * Add CONTRIBUTING.md and issue/PR templates Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): update gitleaks to v8.30.1 — linux_x64 asset name * feat: add /ops:uninstall skill for complete plugin removal (#26) Interactive uninstall that cleans up everything: keychain credentials, preferences, cache, shell profile exports, MCP registrations, and the plugin itself. Confirms each deletion step before proceeding. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>


Sync dev to main
Note
Low Risk
Low risk: changes are limited to CI tooling version pinning and adding documentation/instructions for an uninstall skill, with no runtime code paths modified.
Overview
Adds a new
uninstallskill (claude-ops/skills/uninstall/SKILL.md) that guides users through a fully confirmed removal of claude-ops artifacts (plugin/marketplace entries, prefs/cache, keychain credentials, shell exports, and MCP registrations).Updates CI to download a pinned
gitleaksrelease (v8.30.1) instead of using thelatesttarball URL, improving build determinism.Reviewed by Cursor Bugbot for commit d6b7a7b. Bugbot is set up for automated code reviews on this repo. Configure here.