Skip to content

fix: critical setup flow bugs (fatal shell redirects, wrong scripts, sync installs)#33

Merged
auroracapital merged 1 commit intodevfrom
fix/critical-setup-flow-bugs
Apr 12, 2026
Merged

fix: critical setup flow bugs (fatal shell redirects, wrong scripts, sync installs)#33
auroracapital merged 1 commit intodevfrom
fix/critical-setup-flow-bugs

Conversation

@auroracapital
Copy link
Copy Markdown
Collaborator

@auroracapital auroracapital commented Apr 12, 2026

Summary

  • [FATAL] Step 8 banner: Moved completion banner from ! fence to regular bash fence — <N> placeholders inside a ! block are interpreted as shell input redirects, causing the command to fail
  • [FATAL] Step 3a Telegram scout: Replaced incorrect ops-slack-autolink.mjs --scout-only (wrong binary) with direct keychain check using security find-generic-password for all 4 Telegram credential entries
  • [FATAL] Step 2b GSD install: Replaced claude plugin marketplace add ... bash commands (not valid shell) with slash command instructions, clarifying these run in Claude Code not terminal
  • [CRITICAL] setup.sh brew installs: Wrapped brew install with timeout 30 to prevent SessionStart hook hangs
  • [CRITICAL] setup.sh npm silencing: Changed 2>/dev/null to &>/dev/null on both npm install lines to suppress stdout noise
  • [CRITICAL] CLI appendix + Step 3b.2: Added Linux date -d '1 day ago' fallback alongside macOS-only date -v-1d
  • [ALSO] ops-welcome dynamic counts: Replaced hardcoded 15 skills / 9 agents with dynamic ls counts from skills/*/ and agents/*.md

Test plan

  • Run /ops:setup and verify Step 8 banner fires without redirect errors
  • Verify Telegram scout in Step 3a checks keychain correctly (not slack script)
  • Verify GSD install step shows slash command instructions, not a bash block
  • Verify setup.sh completes in ≤30s even on slow Homebrew
  • Verify no npm stdout noise in SessionStart hook output
  • Verify ops-welcome shows correct live skill/agent counts

🤖 Generated with Claude Code


Open with Devin

Note

Medium Risk
Touches SessionStart/setup flow paths by adding timeout around Homebrew installs, changing output redirection, and updating wizard commands; mistakes here could still block onboarding or hide install errors. Changes are localized to shell scripts and setup documentation, with no runtime business logic or data model changes.

Overview
Resolves several setup/onboarding footguns: the setup wizard now uses a background preflight cache, corrects Telegram keychain “scout” instructions, and replaces invalid GSD install shell commands with Claude Code slash-command guidance.

Hardens the SessionStart scripts/setup.sh auto-installs by adding a timeout to brew install and fully silencing npm install output, and updates WhatsApp wacli date handling to work on both macOS and Linux.

Updates bin/ops-welcome to compute and display dynamic counts for skills and agents instead of hardcoded numbers, and adjusts the final completion banner snippet to avoid shell redirect parsing issues.

Reviewed by Cursor Bugbot for commit 811b92d. Bugbot is set up for automated code reviews on this repo. Configure here.

…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>
Copilot AI review requested due to automatic review settings April 12, 2026 16:35
@blocksorg
Copy link
Copy Markdown
Contributor

blocksorg Bot commented Apr 12, 2026

Mention Blocks like a regular teammate with your question or request:

@blocks review this pull request
@blocks make the following changes ...
@blocks create an issue from what was mentioned in the following comment ...
@blocks explain the following code ...
@blocks are there any security or performance concerns?

Run @blocks /help for more information.

Workspace settings | Disable this message

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 12, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d41bcf30-a6b9-4d4b-a3bd-768f9f35a07b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/critical-setup-flow-bugs

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@auroracapital auroracapital merged commit 43a90b9 into dev Apr 12, 2026
3 of 5 checks passed
@auroracapital auroracapital deleted the fix/critical-setup-flow-bugs branch April 12, 2026 16:35
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
timeout 30 brew install "$brew_pkg" &>/dev/null && INSTALLED+=("$tool") && return 0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: The script uses the timeout command, which is not available on macOS by default. With set -e enabled, this will cause the script to exit prematurely.
Severity: HIGH

Suggested Fix

Before using the timeout command, check if it is available using command -v timeout. If it is not found, either fall back to running brew install without a timeout or consider installing coreutils via brew to make timeout available.

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#L17

Potential issue: The script is configured with `set -e`, which causes it to exit
immediately if any command fails. On line 17, the `timeout` command is used to limit the
execution time of `brew install`. However, `timeout` is a GNU utility and is not
available by default on macOS, where this script is intended to run. When the script
attempts to execute the non-existent `timeout` command, it fails with exit code 127.
This triggers `set -e` and causes the entire script to terminate silently, preventing
the auto-installation of required tools and breaking the setup process for users on
standard macOS systems.

Did we get this right? 👍 / 👎 to inform future reviews.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 811b92de77

ℹ️ 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".


Run the detector and parse its JSON output:
```!
${CLAUDE_PLUGIN_ROOT}/bin/ops-setup-preflight &>/dev/null &
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Stop referencing missing ops-setup-preflight binary

Step 0 now tells the setup flow to run ${CLAUDE_PLUGIN_ROOT}/bin/ops-setup-preflight, but there is no such executable in this repo (repo-wide search for ops-setup-preflight only finds this reference). Because the very next instruction says to wait for /tmp/ops-preflight/.complete and to avoid re-running probes, this can stall the wizard or leave it waiting on cache files that are never produced. Please add the binary or guard this step with an existence check and fallback to direct probes.

Useful? React with 👍 / 👎.

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
timeout 30 brew install "$brew_pkg" &>/dev/null && INSTALLED+=("$tool") && return 0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Guard brew install timeout for macOS compatibility

Wrapping Homebrew installs with timeout 30 assumes timeout is present, but default macOS environments do not ship GNU timeout (users typically only have it as gtimeout after installing coreutils). In that common setup, missing tools will no longer auto-install even when brew is available, so setup silently regresses on first-run machines. Add a command -v timeout check or a macOS-safe fallback before using this wrapper.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 3 potential issues.

Fix All in Cursor

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 811b92d. Configure here.

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
timeout 30 brew install "$brew_pkg" &>/dev/null && INSTALLED+=("$tool") && return 0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

timeout unavailable on macOS breaks all brew auto-installs

High Severity

The timeout command is not available on macOS by default — it's a GNU coreutils utility. Since this script explicitly checks for brew (a macOS package manager), its primary target is macOS. On every macOS system without coreutils installed, timeout 30 brew install ... will fail with "command not found," causing the && chain to short-circuit. Every tool that could be auto-installed will silently land in MISSING instead. The old brew install worked; the new code regresses it entirely on macOS.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 811b92d. Configure here.

- Existing registry: `cat /tmp/ops-preflight/existing-registry.json`
- Existing prefs: `cat /tmp/ops-preflight/existing-prefs.json`

Wait for `/tmp/ops-preflight/.complete` to exist before reading (it should be ready within 2-3 seconds). NEVER re-run a probe that already has cached results — read the cache file instead.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Preflight script referenced in SKILL.md doesn't exist

High Severity

Step 0 executes ${CLAUDE_PLUGIN_ROOT}/bin/ops-setup-preflight via a ! fence, but no ops-setup-preflight script exists in the bin/ directory. The error is suppressed by &>/dev/null &, so it fails silently. The LLM is then instructed to wait for /tmp/ops-preflight/.complete to appear before proceeding — that file will never be created, causing the setup wizard to hang indefinitely at Step 0.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 811b92d. Configure here.

# --- Dynamic counts ---
PLUGIN_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
SKILL_COUNT=$(ls -d "${PLUGIN_ROOT}/skills"/*/ 2>/dev/null | wc -l | tr -d ' ')
AGENT_COUNT=$(ls "${PLUGIN_ROOT}/agents"/*.md 2>/dev/null | wc -l | tr -d ' ')
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pipefail crashes welcome script on empty glob match

Medium Severity

The script has set -euo pipefail (line 4). If the ls -d or ls glob on these lines matches nothing (e.g., empty directory, broken symlink for $0, partial install), ls exits non-zero. With pipefail, the whole pipeline returns that non-zero code, and since SKILL_COUNT=$(...) is a plain assignment (not local), set -e terminates the script immediately. The welcome banner would cut off after the progress bars without showing the summary or /ops:setup instructions. Adding || true after the pipeline would prevent this.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 811b92d. Configure here.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the claude-ops setup flow documentation and bootstrap scripts to prevent fatal shell parsing issues, correct incorrect setup steps, improve cross-platform compatibility, and make the welcome banner show live skill/agent counts.

Changes:

  • Added a “preflight” step and updated /ops:setup instructions (GSD install via slash commands, Telegram scout, WhatsApp date fallback, completion banner fence change).
  • Updated scripts/setup.sh auto-installs (Homebrew install wrapped with a timeout; npm install output silenced more aggressively).
  • Updated bin/ops-welcome to compute skill/agent counts dynamically from the filesystem.

Reviewed changes

Copilot reviewed 2 out of 3 changed files in this pull request and generated 4 comments.

File Description
claude-ops/skills/setup/SKILL.md Setup wizard doc updates: new preflight concept, corrected Telegram/GSD instructions, Linux date fallback, completion banner fence change.
claude-ops/scripts/setup.sh Adjusts auto-install behavior for brew and npm install output suppression.
claude-ops/bin/ops-welcome Replaces hardcoded “15 skills / 9 agents” with dynamic directory-based counts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +35 to +48
## Step 0 — Preflight (runs in background while you read)

Run the detector and parse its JSON output:
```!
${CLAUDE_PLUGIN_ROOT}/bin/ops-setup-preflight &>/dev/null &
```

**Preflight data**: All probe results are cached at `/tmp/ops-preflight/`. Before running ANY diagnostic command, check if the result already exists there:
- CLI status: `cat /tmp/ops-preflight/clis.txt`
- Slack: `cat /tmp/ops-preflight/slack.json`
- Telegram: `cat /tmp/ops-preflight/telegram.txt`
- gog/Gmail: `cat /tmp/ops-preflight/gog-gmail.json`
- gog/Calendar: `cat /tmp/ops-preflight/gog-cal.json`
- WhatsApp: `cat /tmp/ops-preflight/wacli-doctor.json` and `wacli-chats.json`
- MCP servers: `cat /tmp/ops-preflight/mcp-servers.txt`
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ops-setup-preflight is referenced here, but there is no claude-ops/bin/ops-setup-preflight (or any other file by that name) in the repo. As written, this preflight step will fail and the documented /tmp/ops-preflight/* cache files (and .complete) will never be produced. Either add the missing script to claude-ops/bin/ (and ensure it creates the listed cache files), or remove/replace this step.

Also: the WhatsApp cache bullet lists wacli-chats.json without the /tmp/ops-preflight/ prefix, unlike the other entries.

Copilot uses AI. Check for mistakes.
```bash
for svc in telegram-api-id telegram-api-hash telegram-phone telegram-session; do
security find-generic-password -s "$svc" -w 2>/dev/null
security find-generic-password -s "$svc" -w 2>/dev/null && echo "FOUND: $svc"
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This keychain “scout” command uses security find-generic-password ... -w, which prints the secret value to stdout. With the added && echo "FOUND: $svc", the password will be emitted into the session output/logs whenever the item exists, which is a credential leak. For an existence check, suppress stdout (or omit -w) and rely on the exit code, then print only the service name.

Suggested change
security find-generic-password -s "$svc" -w 2>/dev/null && echo "FOUND: $svc"
security find-generic-password -s "$svc" >/dev/null 2>&1 && echo "FOUND: $svc"

Copilot uses AI. Check for mistakes.
Comment on lines 824 to 828
After displaying the summary, run the completion banner to celebrate the successful setup. Pass the actual counts from the setup session:

```!
```bash
bash ${CLAUDE_PLUGIN_ROOT}/bin/ops-setup-complete --channels <N> --projects <N> --agents 9 --skills 15
```
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This completion command still hard-codes --agents 9 --skills 15 even though the surrounding text says to “Pass the actual counts from the setup session.” Consider making these placeholders (like --channels <N>) or deriving them from the detected filesystem counts so the banner stays accurate as skills/agents change.

Copilot uses AI. Check for mistakes.
Comment on lines 15 to 18
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
timeout 30 brew install "$brew_pkg" &>/dev/null && INSTALLED+=("$tool") && return 0
fi
Copy link

Copilot AI Apr 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

timeout is not available by default on macOS (common Homebrew installs provide gtimeout unless coreutils is installed with default names). Using timeout 30 brew install ... will therefore fail on a typical macOS setup and prevent auto-install from working. Add a check/fallback (e.g., use gtimeout when present, or run brew install without a timeout when neither exists).

Copilot uses AI. Check for mistakes.
auroracapital added a commit that referenced this pull request Apr 12, 2026
* 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>
auroracapital added a commit that referenced this pull request Apr 13, 2026
…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>
auroracapital added a commit that referenced this pull request Apr 13, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants