docs: rewrite READMEs with MCP vs CLI guide and correct install flow#11
docs: rewrite READMEs with MCP vs CLI guide and correct install flow#11auroracapital merged 1 commit intodevfrom
Conversation
…d org URLs - 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>
|
Mention Blocks like a regular teammate with your question or request: @blocks review this pull request Run |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ 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 |
| auto_install jq jq | ||
| auto_install gh gh | ||
| auto_install git git | ||
|
|
||
| # Infrastructure (auto-installed if brew available) | ||
| auto_install aws awscli | ||
| auto_install node node |
There was a problem hiding this comment.
Bug: Due to set -e, the script exits silently if auto_install fails, preventing the missing tools report from being printed.
Severity: HIGH
Suggested Fix
Wrap the calls to auto_install in a conditional or use || true to prevent a non-zero exit code from terminating the script. For example: auto_install jq jq || true.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: claude-ops/scripts/setup.sh#L26-L32
Potential issue: The script uses `set -e`, which causes it to exit immediately if any
command fails. The `auto_install` function is called as a bare command and returns a
non-zero exit code if a tool is missing and cannot be installed (e.g., on Linux without
Homebrew, or if `brew install` fails). When this happens, the script exits prematurely,
before it can execute the final reporting section that informs the user which tools are
missing. This results in the script failing silently without providing any diagnostic
output.
Did we get this right? 👍 / 👎 to inform future reviews.
|
|
||
| echo "" | ||
| for tool in "${MISSING[@]}"; do | ||
| echo " ✗ ops: $tool not found — run /ops:setup to configure" | ||
| done |
There was a problem hiding this comment.
Bug: The script crashes on older bash versions (e.g., macOS default) when all tools are already installed because set -u treats the empty MISSING array as an error.
Severity: MEDIUM
Suggested Fix
Guard the array expansion to make it safe for older bash versions under set -u. A common pattern is to use parameter expansion with a default empty value, for example: for tool in "${MISSING[@]+${MISSING[@]}}". This ensures the expression is valid even if the array is empty.
Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.
Location: claude-ops/scripts/setup.sh#L52-L55
Potential issue: The script enables `set -u`, which treats unset variables as errors. On
older bash versions, such as bash 3.2 which was the default on macOS, an empty array is
treated as an unset variable. If the script runs in such an environment and all tools
are already installed, the `MISSING` array will be empty. The loop `for tool in
"${MISSING[@]}"` will then cause the script to crash with an unbound variable error,
preventing it from completing successfully.
Did we get this right? 👍 / 👎 to inform future reviews.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 24979bff95
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
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".
| check_tool "git" "git" "repository management" "required" | ||
| check_tool "gh" "gh" "GitHub PRs and CI" "required" | ||
| # Core (auto-installed silently) | ||
| auto_install jq jq |
There was a problem hiding this comment.
Prevent setup script from aborting on first missing tool
With set -e enabled, calling auto_install directly here causes the script to exit immediately whenever a tool is missing and Homebrew is unavailable (or brew install fails), because auto_install returns 1 in that case. That means later checks never run, MISSING entries are never printed, and the SessionStart hook (setup.sh ... | grep '✗') often shows nothing even though dependencies are missing. This breaks first-run diagnostics on non-Homebrew environments and hides actionable setup guidance.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is ON, but it could not run because the spend limit has been reached. To enable Bugbot Autofix, raise your spend limit in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 24979bf. Configure here.
|
|
||
| # Infrastructure (auto-installed if brew available) | ||
| auto_install aws awscli | ||
| auto_install node node |
There was a problem hiding this comment.
Script exits on first missing tool due to set -e
High Severity
The auto_install function returns 1 when a tool is missing and brew is unavailable (or brew install fails). Because the calls on lines 26–32 are bare statements (not inside if, ||, or &&), set -e on line 4 terminates the entire script on the first non-zero return. This means subsequent tool checks, npm install steps, registry validation, and the reporting loop at the end never execute. On any non-macOS system (or macOS without Homebrew), the first missing tool silently kills the script.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 24979bf. Configure here.
| echo "" | ||
| for tool in "${MISSING[@]}"; do | ||
| echo " ✗ ops: $tool not found — run /ops:setup to configure" | ||
| done |
There was a problem hiding this comment.
Empty array expansion fails with set -u on macOS bash
Medium Severity
On the happy path where all tools are already installed, MISSING remains an empty array. Expanding "${MISSING[@]}" on line 53 with set -u active triggers an "unbound variable" error on bash versions before 4.4 — including macOS's default bash 3.2. This means the script errors out on the success case, preventing the registry check from running and producing a spurious non-zero exit. A length guard (if [ ${#MISSING[@]} -gt 0 ]) around the for loop — like the one already protecting INSTALLED on line 49 — would avoid this.
Reviewed by Cursor Bugbot for commit 24979bf. Configure here.
There was a problem hiding this comment.
Pull request overview
Updates repository and plugin documentation to reflect the new GitHub org/repo, clarifies installation/configuration flows (including MCP vs CLI tradeoffs), and adjusts the setup script to auto-install key dependencies during startup/setup.
Changes:
- Rewrites root and plugin READMEs (new install flow,
/ops:*command syntax, MCP vs CLI comparison, updated structure/links). - Updates contact and repository metadata (SECURITY email, marketplace owner email, plugin homepage/repo URLs).
- Enhances
scripts/setup.shto auto-install core tools (via Homebrew when available) and install Node dependencies when missing.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| SECURITY.md | Updates security contact email address. |
| README.md | Reworks root documentation: new install flow, command reference, architecture/structure, updated URLs. |
| claude-ops/scripts/setup.sh | Adds auto-install + dependency bootstrap behavior and reduces output to problems. |
| claude-ops/README.md | Aligns slash command syntax, updates install instructions, and adds integration categorization. |
| claude-ops/.claude-plugin/plugin.json | Updates author/repo/homepage URLs to the new org. |
| .claude-plugin/marketplace.json | Updates marketplace owner email address. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ## Requirements | ||
|
|
||
| Add to `~/.claude/settings.json`: | ||
| Just [Claude Code](https://claude.ai/code) 1.0+. Everything else is installed automatically. | ||
|
|
||
| ```json | ||
| { | ||
| "plugins": [ | ||
| { | ||
| "source": "https://github.com/auroracapital/claude-ops" | ||
| } | ||
| ] | ||
| } | ||
| ``` | ||
|
|
||
| Then configure integrations: | ||
| The setup wizard (`/ops:setup`) walks you through each integration interactively — "Do you want AWS CLI? [Yes/No]", "Connect Slack? [OAuth/Skip]", etc. Missing CLIs are auto-installed via Homebrew. MCP servers connect via OAuth. No config files to edit manually. | ||
|
|
There was a problem hiding this comment.
The “Requirements” section says only Claude Code is needed and “everything else is installed automatically”, but the install flow described below relies on Homebrew being present (and setup.sh only installs tools if brew exists). Please clarify platform/tooling prerequisites (e.g., Homebrew on macOS, and what Linux users should do) so users don’t assume dependencies will always auto-install.
| auto_install() { | ||
| local tool="$1" | ||
| local brew_pkg="$2" | ||
| if ! command -v "$tool" &>/dev/null; then | ||
| if command -v brew &>/dev/null; then | ||
| brew install "$brew_pkg" 2>/dev/null && INSTALLED+=("$tool") && return 0 | ||
| fi |
There was a problem hiding this comment.
setup.sh suppresses errors from brew install and npm install (2>/dev/null, --silent) and the SessionStart hook further filters output to only show "✗" lines. If installs fail, users may get no actionable signal and later hit runtime failures. Consider surfacing a brief warning when an install attempt fails (and/or logging to a file), while keeping SessionStart output minimal.
| for tool in "${MISSING[@]}"; do | ||
| echo " ✗ ops: $tool not found — run /ops:setup to configure" | ||
| done |
There was a problem hiding this comment.
The message ✗ ops: <tool> not found — run /ops:setup to configure is confusing because this script is documented as being called by /ops:setup. When a tool can’t be auto-installed, please print concrete next steps (e.g., "install Homebrew", "brew install ", or a manual install URL) instead of instructing the user to rerun the same command.
| ## Requirements | ||
|
|
||
| - [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 1.0+ | ||
| - [GSD](https://github.com/auroracapital/get-shit-done) (prerequisite — provides project roadmap state) | ||
| - Node.js 18+ (for Telegram MCP server) | ||
| - AWS CLI (configured, for ECS + cost data) | ||
| - GitHub CLI (`gh`, for PRs and CI) | ||
| - [Claude Code](https://claude.ai/code) 1.0+ | ||
| - GitHub CLI (`gh`) — for PRs and CI status | ||
|
|
||
| ### Optional integrations | ||
| Everything else is optional. The setup wizard (`/ops:setup`) auto-detects what's installed and configures accordingly. |
There was a problem hiding this comment.
The README still implies a fully automatic install experience, but core tooling is only auto-installed when Homebrew is available. Also, gh is listed as a requirement even though the setup flow auto-installs it via Homebrew. Please align the requirements/wording with the actual behavior (what’s required up front vs what can be auto-installed, and on which platforms).
| if [ -f "$PLUGIN_ROOT/telegram-server/package.json" ] && command -v node &>/dev/null; then | ||
| if [ ! -d "$PLUGIN_ROOT/telegram-server/node_modules" ]; then | ||
| (cd "$PLUGIN_ROOT/telegram-server" && npm install --silent 2>/dev/null) && INSTALLED+=("telegram-deps") | ||
| fi | ||
| fi | ||
|
|
||
| echo "" | ||
| echo "## Infrastructure Tools" | ||
| check_tool "aws" "aws" "/ops-infra ECS health" "optional" | ||
| check_tool "sentry-cli" "sentry-cli" "/ops-triage Sentry issues" "optional" | ||
| # Plugin bin deps | ||
| if [ -f "$PLUGIN_ROOT/package.json" ] && command -v node &>/dev/null; then | ||
| if [ ! -d "$PLUGIN_ROOT/node_modules" ]; then | ||
| (cd "$PLUGIN_ROOT" && npm install --silent 2>/dev/null) && INSTALLED+=("plugin-deps") | ||
| fi |
There was a problem hiding this comment.
Both the plugin root and telegram-server have package-lock.json, but the script uses npm install. For deterministic, lockfile-respecting installs (and to avoid npm rewriting the lockfile in some environments), consider using npm ci when a lockfile is present and node_modules/ is absent.
…-install) (#14) * 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> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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>
… telegram fix) (#32) * 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> * fix(telegram): graceful degradation when credentials are missing (#28) Server no longer exits at startup when TELEGRAM_API_ID/HASH/SESSION are unset. It starts as a valid MCP server and returns a clear "not configured" error on every tool call instead of crashing, keeping the plugin loadable without Telegram credentials. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: polish README with ASCII art and terminal aesthetic (#29) Rewrote README with block ASCII logo, terminal-style /ops:go dashboard mockup, box-drawing tables throughout, and section headers — no content removed. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram/WhatsApp flows (#30) * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram flows - Replace broken `gog inbox list` probe with `gog gmail labels list --json` - Replace broken `gog cal events --time-min` probe with `gog cal list --json --max 3` - Add CLI Reference Appendix with exact, tested syntax for gog, wacli, Slack, and keychain - Preferences step now always asks owner name, timezone (7 options), verbosity, and default channels — never auto-fills from memory - Registry step now scans filesystem for git repos via find and presents multiSelect; adds "Auto-detect from existing registry" option - Add parallelization rule to Hard Rules: run all diagnostic probes in parallel, background slow commands - Telegram flow now requires explicit opt-in ask before starting phone/auth flow; no silent skip - WhatsApp backfill failures are now swallowed silently; summary line never shows message counts or 0-result spam - Never show user's real name or email unless explicitly provided in the current session - Fix `wacli chats` → `wacli chats list` (correct subcommand) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: add first-run onboarding banners (ops-welcome + ops-setup-complete) Animated ASCII art welcome sequence on first SessionStart (gates on preferences.json existence). Setup completion dashboard with channel/ project/agent/skill counts. Both scripts use ANSI colors with NO_COLOR graceful degradation. SessionStart hook updated to run welcome before setup check. Setup SKILL.md Step 8 calls completion banner with actual counts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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> * fix(telegram): graceful degradation when credentials are missing (#28) Server no longer exits at startup when TELEGRAM_API_ID/HASH/SESSION are unset. It starts as a valid MCP server and returns a clear "not configured" error on every tool call instead of crashing, keeping the plugin loadable without Telegram credentials. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: polish README with ASCII art and terminal aesthetic (#29) Rewrote README with block ASCII logo, terminal-style /ops:go dashboard mockup, box-drawing tables throughout, and section headers — no content removed. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram/WhatsApp flows (#30) * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram flows - Replace broken `gog inbox list` probe with `gog gmail labels list --json` - Replace broken `gog cal events --time-min` probe with `gog cal list --json --max 3` - Add CLI Reference Appendix with exact, tested syntax for gog, wacli, Slack, and keychain - Preferences step now always asks owner name, timezone (7 options), verbosity, and default channels — never auto-fills from memory - Registry step now scans filesystem for git repos via find and presents multiSelect; adds "Auto-detect from existing registry" option - Add parallelization rule to Hard Rules: run all diagnostic probes in parallel, background slow commands - Telegram flow now requires explicit opt-in ask before starting phone/auth flow; no silent skip - WhatsApp backfill failures are now swallowed silently; summary line never shows message counts or 0-result spam - Never show user's real name or email unless explicitly provided in the current session - Fix `wacli chats` → `wacli chats list` (correct subcommand) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: add first-run onboarding banners (ops-welcome + ops-setup-complete) Animated ASCII art welcome sequence on first SessionStart (gates on preferences.json existence). Setup completion dashboard with channel/ project/agent/skill counts. Both scripts use ANSI colors with NO_COLOR graceful degradation. SessionStart hook updated to run welcome before setup check. Setup SKILL.md Step 8 calls completion banner with actual counts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: critical setup flow bugs (fatal shell redirects, wrong scripts, sync installs) (#33) - Fix Step 8 completion banner: move from ! fence to regular bash fence so <N> placeholders aren't shell-redirected - Fix Step 3a Telegram scout: replace incorrect ops-slack-autolink call with direct keychain check - Fix Step 2b GSD install: replace bash claude plugin commands (not shell commands) with slash command instructions - Fix setup.sh: add 30s timeout to brew installs and silence npm stdout with &>/dev/null - Fix CLI appendix + Step 3b.2: add Linux date fallback alongside macOS date -v-1d - Fix ops-welcome: detect actual skill/agent counts dynamically instead of hardcoding 15/9 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: preflight data gatherer for zero-wait setup * fix: critical setup flow bugs (fatal shell redirects, wrong scripts, sync installs) - Fix Step 8 completion banner: move from ! fence to regular bash fence so <N> placeholders aren't shell-redirected - Fix Step 3a Telegram scout: replace incorrect ops-slack-autolink call with direct keychain check - Fix Step 2b GSD install: replace bash claude plugin commands (not shell commands) with slash command instructions - Fix setup.sh: add 30s timeout to brew installs and silence npm stdout with &>/dev/null - Fix CLI appendix + Step 3b.2: add Linux date fallback alongside macOS date -v-1d - Fix ops-welcome: detect actual skill/agent counts dynamically instead of hardcoding 15/9 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: preflight data gatherer for zero-wait setup Add ops-setup-preflight script that runs all environment probes in parallel as background jobs, writing results to /tmp/ops-preflight/ so the setup wizard has zero-latency data by the time the user answers the first question. Update ops-setup-detect to read from the preflight cache when available, avoiding redundant probes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…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>
…-install) (#14) * 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> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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>
… telegram fix) (#32) * 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> * fix(telegram): graceful degradation when credentials are missing (#28) Server no longer exits at startup when TELEGRAM_API_ID/HASH/SESSION are unset. It starts as a valid MCP server and returns a clear "not configured" error on every tool call instead of crashing, keeping the plugin loadable without Telegram credentials. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: polish README with ASCII art and terminal aesthetic (#29) Rewrote README with block ASCII logo, terminal-style /ops:go dashboard mockup, box-drawing tables throughout, and section headers — no content removed. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram/WhatsApp flows (#30) * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram flows - Replace broken `gog inbox list` probe with `gog gmail labels list --json` - Replace broken `gog cal events --time-min` probe with `gog cal list --json --max 3` - Add CLI Reference Appendix with exact, tested syntax for gog, wacli, Slack, and keychain - Preferences step now always asks owner name, timezone (7 options), verbosity, and default channels — never auto-fills from memory - Registry step now scans filesystem for git repos via find and presents multiSelect; adds "Auto-detect from existing registry" option - Add parallelization rule to Hard Rules: run all diagnostic probes in parallel, background slow commands - Telegram flow now requires explicit opt-in ask before starting phone/auth flow; no silent skip - WhatsApp backfill failures are now swallowed silently; summary line never shows message counts or 0-result spam - Never show user's real name or email unless explicitly provided in the current session - Fix `wacli chats` → `wacli chats list` (correct subcommand) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: add first-run onboarding banners (ops-welcome + ops-setup-complete) Animated ASCII art welcome sequence on first SessionStart (gates on preferences.json existence). Setup completion dashboard with channel/ project/agent/skill counts. Both scripts use ANSI colors with NO_COLOR graceful degradation. SessionStart hook updated to run welcome before setup check. Setup SKILL.md Step 8 calls completion banner with actual counts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* 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> * fix(telegram): graceful degradation when credentials are missing (#28) Server no longer exits at startup when TELEGRAM_API_ID/HASH/SESSION are unset. It starts as a valid MCP server and returns a clear "not configured" error on every tool call instead of crashing, keeping the plugin loadable without Telegram credentials. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: polish README with ASCII art and terminal aesthetic (#29) Rewrote README with block ASCII logo, terminal-style /ops:go dashboard mockup, box-drawing tables throughout, and section headers — no content removed. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram/WhatsApp flows (#30) * fix(setup): fix CLI probes, add appendix, improve registry/prefs/Telegram flows - Replace broken `gog inbox list` probe with `gog gmail labels list --json` - Replace broken `gog cal events --time-min` probe with `gog cal list --json --max 3` - Add CLI Reference Appendix with exact, tested syntax for gog, wacli, Slack, and keychain - Preferences step now always asks owner name, timezone (7 options), verbosity, and default channels — never auto-fills from memory - Registry step now scans filesystem for git repos via find and presents multiSelect; adds "Auto-detect from existing registry" option - Add parallelization rule to Hard Rules: run all diagnostic probes in parallel, background slow commands - Telegram flow now requires explicit opt-in ask before starting phone/auth flow; no silent skip - WhatsApp backfill failures are now swallowed silently; summary line never shows message counts or 0-result spam - Never show user's real name or email unless explicitly provided in the current session - Fix `wacli chats` → `wacli chats list` (correct subcommand) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: add first-run onboarding banners (ops-welcome + ops-setup-complete) Animated ASCII art welcome sequence on first SessionStart (gates on preferences.json existence). Setup completion dashboard with channel/ project/agent/skill counts. Both scripts use ANSI colors with NO_COLOR graceful degradation. SessionStart hook updated to run welcome before setup check. Setup SKILL.md Step 8 calls completion banner with actual counts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: critical setup flow bugs (fatal shell redirects, wrong scripts, sync installs) (#33) - Fix Step 8 completion banner: move from ! fence to regular bash fence so <N> placeholders aren't shell-redirected - Fix Step 3a Telegram scout: replace incorrect ops-slack-autolink call with direct keychain check - Fix Step 2b GSD install: replace bash claude plugin commands (not shell commands) with slash command instructions - Fix setup.sh: add 30s timeout to brew installs and silence npm stdout with &>/dev/null - Fix CLI appendix + Step 3b.2: add Linux date fallback alongside macOS date -v-1d - Fix ops-welcome: detect actual skill/agent counts dynamically instead of hardcoding 15/9 Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: preflight data gatherer for zero-wait setup * fix: critical setup flow bugs (fatal shell redirects, wrong scripts, sync installs) - Fix Step 8 completion banner: move from ! fence to regular bash fence so <N> placeholders aren't shell-redirected - Fix Step 3a Telegram scout: replace incorrect ops-slack-autolink call with direct keychain check - Fix Step 2b GSD install: replace bash claude plugin commands (not shell commands) with slash command instructions - Fix setup.sh: add 30s timeout to brew installs and silence npm stdout with &>/dev/null - Fix CLI appendix + Step 3b.2: add Linux date fallback alongside macOS date -v-1d - Fix ops-welcome: detect actual skill/agent counts dynamically instead of hardcoding 15/9 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * feat: preflight data gatherer for zero-wait setup Add ops-setup-preflight script that runs all environment probes in parallel as background jobs, writing results to /tmp/ops-preflight/ so the setup wizard has zero-latency data by the time the user answers the first question. Update ops-setup-detect to read from the preflight cache when available, avoiding redundant probes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>


Summary
/plugin marketplace add+/plugin installcommands, comprehensive MCP vs CLI comparison table showing what each integration path gains/loses/ops:*colon syntax, GSD demoted to optional, integrations categorized (CLI-only / MCP-only / choose-with-tradeoffs / plugin-bundled)Test plan
/ops:setupstill detects and installs tools🤖 Generated with Claude Code
Note
Medium Risk
Mostly documentation/metadata updates, but
scripts/setup.shnow auto-installs tools and runsnpm install(triggered onSessionStart), which can affect developer environments and startup behavior.Overview
Updates project metadata and docs to the
Lifecycle-Innovations-Limited/claude-opsrepo, fixes the Claude Code installation flow (/plugin marketplace add+/plugin install), and standardizes command syntax to/ops:*.Adds a detailed MCP vs CLI integration guide and reorganizes requirements/integration sections in both READMEs.
Changes
claude-ops/scripts/setup.shfrom a reporting-only checker to an auto-installer (Homebrew installs forjq/gh/git/aws/nodeplusnpm installfor plugin/Telegram deps) and simplifies output to only surface missing tools/registry issues.Reviewed by Cursor Bugbot for commit 24979bf. Bugbot is set up for automated code reviews on this repo. Configure here.