Skip to content

sync: dev → main (v0.3.1)#37

Merged
auroracapital merged 13 commits intomainfrom
sync/final
Apr 12, 2026
Merged

sync: dev → main (v0.3.1)#37
auroracapital merged 13 commits intomainfrom
sync/final

Conversation

@auroracapital
Copy link
Copy Markdown
Collaborator

@auroracapital auroracapital commented Apr 12, 2026

Full sync — bug fixes, preflight, onboarding, ASCII README


Open with Devin

Note

Medium Risk
Adds a new parallel preflight script that probes local auth state (keychain, gh, aws, Slack HTTP) and feeds cached results into setup detection; mistakes here could cause false setup status or unexpected local network calls during onboarding. Other changes are mostly UX/docs but touch first-run/setup flows that affect many users.

Overview
Improves onboarding and setup performance by introducing bin/ops-setup-preflight, which runs multiple setup probes in parallel and caches results under /tmp/ops-preflight/ for the /ops:setup wizard.

bin/ops-setup-detect is updated to prefer the preflight cache (CLI presence, MCP server list, existing registry) and now reports whether cached preflight data was used. The setup experience is further refined with a dynamic skill/agent count in bin/ops-welcome, tighter/quiet dependency installs (timeouts + silenced output) in scripts/setup.sh, and updated /ops:setup instructions (preflight step, clearer GSD install guidance, and Linux-compatible date usage for wacli).

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

auroracapital and others added 13 commits April 12, 2026 21:35
…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>
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>
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>
…gram/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>
…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>
* 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>
Copilot AI review requested due to automatic review settings April 12, 2026 16:40
@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

@auroracapital auroracapital merged commit 8f419ab into main Apr 12, 2026
@auroracapital auroracapital deleted the sync/final branch April 12, 2026 16:40
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 12, 2026

Warning

Rate limit exceeded

@auroracapital has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 14 minutes and 19 seconds before requesting another review.

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 14 minutes and 19 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e0153e9f-d5a6-49bf-9eec-49fb21cfe5d8

📥 Commits

Reviewing files that changed from the base of the PR and between ac20808 and a3a2c74.

📒 Files selected for processing (6)
  • README.md
  • claude-ops/bin/ops-setup-detect
  • claude-ops/bin/ops-setup-preflight
  • claude-ops/bin/ops-welcome
  • claude-ops/scripts/setup.sh
  • claude-ops/skills/setup/SKILL.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/final

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.

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: a3a2c74e69

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

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 Remove non-portable timeout wrapper around brew install

auto_install now calls timeout 30 brew install ..., but the default macOS userland does not ship a timeout binary (it provides gtimeout only if coreutils is installed). In the common case where a required tool is missing but Homebrew is present, this command fails immediately and the setup flow reports the tool as missing instead of auto-installing it, which regresses the primary onboarding path on macOS.

Useful? React with 👍 / 👎.

Comment on lines +50 to +53
if [ "$USE_CACHE" = true ] && [ -f "$PREFLIGHT/mcp-servers.txt" ]; then
while IFS= read -r name; do
[ -n "$name" ] && MCP_CONFIGURED+=("$name")
done < "$PREFLIGHT/mcp-servers.txt"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Keep fallback MCP discovery when cache is incomplete

When preflight cache is present, detection now unconditionally trusts /tmp/ops-preflight/mcp-servers.txt and skips the legacy scan paths. The new preflight writer only populates that file from ~/.claude.json, so environments that keep MCP entries in other supported files (like ~/.claude/.mcp.json or the plugin .mcp.json) are now misdetected as unconfigured, leading /ops:setup to prompt unnecessary reconfiguration.

Useful? React with 👍 / 👎.

{
# gog/Gmail probe
if command -v gog &>/dev/null; then
gog auth status 2>&1 > "$OUT/gog-auth.txt"
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 shell redirect order 2>&1 > file is incorrect. It should be > file 2>&1 to capture both stdout and stderr in the output file.
Severity: HIGH

Suggested Fix

Change the redirect order from 2>&1 > file to > file 2>&1 for the gog auth status and gh auth status commands on lines 46 and 73 to correctly capture both stdout and stderr.

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/bin/ops-setup-preflight#L46

Potential issue: In `ops-setup-preflight`, commands like `gog auth status` and `gh auth
status` use the redirect order `2>&1 > "$OUT/..."`. This incorrectly sends stderr to the
terminal instead of the specified file. The setup wizard relies on reading these files
to diagnose authentication failures. When an authentication error occurs, the diagnostic
message is lost, preventing the wizard from correctly identifying the problem and
guiding the user. This affects the setup flow when users are not authenticated.

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

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, causing the auto-installation of tools to fail silently.
Severity: CRITICAL

Suggested Fix

Check if timeout (or gtimeout on macOS) is available before using it. If it is not available, run the brew install command without a timeout as a fallback.

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 `setup.sh` script uses the `timeout` command, which is part of GNU
coreutils and not available on macOS by default. On a standard macOS system, the
`auto_install` function will fail silently when trying to install required tools via
Homebrew. The `timeout` command fails, the `&&` chain short-circuits, and the tool is
incorrectly reported as missing. This prevents the automatic installation of
dependencies, breaking the setup process for macOS users without `coreutils` installed.

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

Comment on lines +66 to +69
if [ -f "$HOME/.claude.json" ]; then
jq -r '.mcpServers // {} | keys[]' "$HOME/.claude.json" 2>/dev/null > "$OUT/mcp-servers.txt" || true
fi
} &
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 preflight script only checks one of three possible locations for MCP configurations, causing the detection script to miss existing configurations when using the cache.
Severity: HIGH

Suggested Fix

Update the ops-setup-preflight script to scan all three documented locations for MCP configurations ($SCRIPT_DIR/.mcp.json, $HOME/.claude/.mcp.json, and $HOME/.claude.json) to ensure the preflight cache is complete.

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/bin/ops-setup-preflight#L66-L69

Potential issue: The `ops-setup-preflight` script, which generates a cache, only checks
`~/.claude.json` for MCP server configurations. However, the `ops-setup-detect` script
is designed to check three locations but will exclusively use the incomplete cache if it
exists. This causes MCP configurations located in `$SCRIPT_DIR/.mcp.json` or
`$HOME/.claude/.mcp.json` to be ignored. As a result, already configured services, like
the Telegram MCP shipped with the plugin, are not detected, potentially leading to user
confusion or redundant configuration steps.

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

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

Sync from devmain focused on onboarding polish and faster setup by adding a background “preflight” probe cache and refreshing docs/UI.

Changes:

  • Revamped root README with ASCII/terminal-style sections and updated onboarding flow.
  • Added background setup preflight (ops-setup-preflight) and updated detection to consume cached results.
  • Small setup UX improvements (dynamic skill/agent counts; improved cross-platform date usage in WhatsApp guidance; quieter installs).

Reviewed changes

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

Show a summary per file
File Description
README.md Reworked landing/onboarding copy and terminal-style presentation.
claude-ops/skills/setup/SKILL.md Adds preflight instructions, clarifies plugin install steps, and improves cross-platform WhatsApp probing guidance.
claude-ops/scripts/setup.sh Tweaks auto-install behavior (adds a 30s timeout) and silences npm installs.
claude-ops/bin/ops-welcome Computes skill/agent counts dynamically for the welcome banner.
claude-ops/bin/ops-setup-preflight New background preflight script writing probe outputs to /tmp/ops-preflight/.
claude-ops/bin/ops-setup-detect Uses preflight cache (when complete) to speed up detection and tool presence checks.

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

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 isn’t available by default on macOS (coreutils provides gtimeout), so timeout 30 brew install ... will fail on many machines and prevent auto-install. Consider detecting an available timeout implementation (timeout/gtimeout) and falling back to running brew install normally (or using Brew env flags to reduce hang risk) when not present.

Copilot uses AI. Check for mistakes.
- 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`
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.

The WhatsApp preflight cache list links wacli-chats.json without the /tmp/ops-preflight/ prefix, while the preflight script writes it under /tmp/ops-preflight/wacli-chats.json. Update the doc path so users (and the wizard) read the correct cache file.

Suggested change
- WhatsApp: `cat /tmp/ops-preflight/wacli-doctor.json` and `wacli-chats.json`
- WhatsApp: `cat /tmp/ops-preflight/wacli-doctor.json` and `cat /tmp/ops-preflight/wacli-chats.json`

Copilot uses AI. Check for mistakes.
Comment thread README.md
Comment on lines +12 to 16
**Business Operating System for Claude Code**

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./claude-ops/LICENSE)
[![Version](https://img.shields.io/badge/version-0.3.0-blue.svg)](https://github.com/Lifecycle-Innovations-Limited/claude-ops/releases)
[![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-blueviolet.svg)](https://claude.ai/settings/plugins)
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.

PR title/description indicate v0.3.1, but this README still advertises v0.3.0 (version badge and footer). Update these version strings (or adjust the PR metadata) to avoid shipping mismatched release info.

Copilot uses AI. Check for mistakes.
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 a3a2c74. Configure here.


{
# GitHub auth check
gh auth status 2>&1 > "$OUT/gh-auth.txt" || true
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Redirect order causes stderr to miss cache file

Medium Severity

gh auth status 2>&1 > "$OUT/gh-auth.txt" and gog auth status 2>&1 > "$OUT/gog-auth.txt" use incorrect redirect ordering. In bash, 2>&1 is evaluated first (pointing stderr at the terminal), then > redirects only stdout to the file. Since both gh auth status and gog auth status write their output to stderr, the resulting cache files will be empty or missing the meaningful status data. The correct form is > file 2>&1 or &> file.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit a3a2c74. Configure here.

if [ -f "$HOME/.claude.json" ]; then
jq -r '.mcpServers // {} | keys[]' "$HOME/.claude.json" 2>/dev/null > "$OUT/mcp-servers.txt" || true
fi
} &
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 MCP scan misses two config file locations

Medium Severity

The preflight MCP detection only scans $HOME/.claude.json, but ops-setup-detect's non-cached fallback scans three locations: $SCRIPT_DIR/.mcp.json, $HOME/.claude/.mcp.json, and $HOME/.claude.json. When the preflight cache is active, MCP servers configured in the plugin's own .mcp.json or $HOME/.claude/.mcp.json are silently dropped from the detection results.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit a3a2c74. 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 command unavailable on macOS breaks auto-install

High Severity

The timeout command is not available on macOS by default (it's a GNU coreutils utility). Since this tool is macOS-centric (uses security keychain, Homebrew, etc.), timeout 30 brew install ... will fail with exit code 127 on every invocation. Because it's in an && chain, the failure is silent (&>/dev/null suppresses the error message), but no tool ever gets installed — every tool silently falls through to MISSING. This is a regression from the previous brew install "$brew_pkg" 2>/dev/null which worked correctly on macOS.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit a3a2c74. Configure here.

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