Commit Graph

10 Commits

Author SHA1 Message Date
Brandon Martin 1ac816cc29 refactor(plugins): package self-contained plugin installs (#5)
## Summary
- convert the marketplace packages into self-contained plugin installs
with local `agents/`, `skills/`, `commands/`, and `hooks/` content
- replace the old `triage-workflow` path with the new `linear` skill and
ship a dedicated `cce-linear` plugin for Linear-backed ticket and PR
workflows
- remove the unfinished `cce-auto-blog` plugin so this PR stays focused
on the plugin infrastructure redo

## What Changed
- added `scripts/sync_plugin_packages.py` to generate package manifests
and sync plugin-local assets from the shared `.claude/` source tree
- updated `.claude-plugin/marketplace.json` and per-plugin manifests for
19 packages, including new `cce-linear` and `cce-tauri` entries
- materialized packaged plugin assets under `plugins/*` so marketplace
installs no longer depend on repo-root `.claude` paths
- rewired Linear commands to use the `linear` skill wrapper scripts and
removed hardcoded workspace-specific Linear URLs
- refreshed root and plugin README files to match the packaged layout
and current plugin inventory

## Verification
- `python3 -m py_compile scripts/sync_plugin_packages.py
install_extensions.py .claude/skills/linear/scripts/*.py`
- `python3 scripts/sync_plugin_packages.py`
- validated plugin JSON/manifests and `cce-linear` package wiring
- confirmed no `axios-hq` or `triage-workflow` references remain in the
`.claude` Linear sources

---------

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-01 21:51:29 -05:00
Brandon Martin ca8e1de7bb feat(hooks): add cross-platform notification support
Add Discord webhook notifications for Claude Code events, providing
reliable cross-platform notifications that work over SSH, on Windows,
Mac, and Linux.

Changes:
- Add discord_notification.py hook for Discord webhook notifications
  - Supports Notification, Stop, SubagentStop, and other lifecycle events
  - Works cross-platform (Ubuntu/Mac/Windows) and over SSH
  - Includes User-Agent header to prevent Discord API blocking
  - Comprehensive error handling and logging

- Add ssh_osc777_notification.py hook for terminal notifications
  - Detects terminal types (iTerm2, Warp, VS Code, generic)
  - Sends OSC 777 sequences for iTerm2 (full notification support)
  - Falls back to window title + bell for other terminals
  - Over SSH: Uses terminal bell only (safe, prevents session freeze)

- Register hooks in .claude/settings.json
  - Discord notifications enabled for Notification and Stop events
  - Runs alongside existing notification.py (TTS) hook

Setup:
1. Create Discord webhook in Server Settings → Integrations → Webhooks
2. Set DISCORD_WEBHOOK_URL environment variable
3. Notifications appear in Discord on desktop and mobile

This solves the issue of notifications not working over SSH on Windows,
providing a reliable notification mechanism that works everywhere.
2025-12-22 22:55:14 -06:00
Brandon Martin f80d95a869 Add skills system, specialized agents, and plugin documentation (#3)
## Summary

- ✨ Add skill system with 3 skills (cloudflare-vpc-services,
code-reviewer, commit-helper) and skill skeleton template
- ✨ Add 8 specialized agents for ArgoCD, Braintrust, GitHub Actions,
Fumadocs, and Helm
- ✨ Add 4 new slash commands (/agent-intent-from-docs, /create-skill,
/triage, /wrapup-skillup)
- 📝 Add comprehensive plugin system documentation (plugins.md,
plugins-reference.md, plugin-marketplaces.md, agent-skills.md)
- 🔧 Update install_extensions.py to support skill discovery and
installation
- 🔧 Add skill_forced_eval hook and update settings.json

## Test plan

- [x] Verify skills are discovered by running `uv run
install_extensions.py list --type skill`
- [x] Test `/create-skill` command creates proper skill structure
- [x] Verify new agents appear in `/agents` interface
- [x] Confirm new commands work via `/help`
- [x] Review documentation renders correctly
2025-12-04 12:42:16 -06:00
Brandon Martin dcfd28f9e5 ✨ feat: add --cache-only flag to control SessionStart notifications
Add optional --cache-only flag to allow SessionStart events to cache the
transcript path without sending Slack notifications.

Changes:
- Added --cache-only command-line argument
- SessionStart always caches transcript path
- With --cache-only: exits after caching (no notification)
- Without --cache-only: continues to send SessionStart notification
- Updated settings.json to use --cache-only by default
- Removed --event-emoji from Stop/SubagentStop (not needed)
- Updated documentation with SessionStart example and flag description

Benefits:
- Flexible control over SessionStart notifications
- Maintains workaround for stale transcript path bug
- Users can opt-in to SessionStart notifications by removing flag
- Cleaner configuration (removed redundant emoji flags)
2025-10-08 01:15:08 -05:00
Brandon Martin 9c1f0e2fe2 🐛 fix: convert markdown and add workaround for stale transcript path
Fix Slack notifications to properly display bold text and handle resumed
session transcript path bug.

Changes:
- Added convert_markdown_to_slack() to convert **bold** to *bold*
- Stop/SubagentStop now convert markdown before sending to Slack
- Added SessionStart handler to cache current transcript_path
- Reads cached path first to work around stale path in resumed sessions
- Added retry logic with delays to handle transcript write timing
- Registered hook for SessionStart events in settings.json
- Documented workaround in README and slack-notifications.md

Technical details:
- Caches transcript path to logs/.current-transcript on SessionStart
- Falls back to provided path if cache doesn't exist
- Retries up to 3 times with 0.3s delays for timing issues
- Converts standard markdown to Slack format before sending

Workaround for: https://github.com/anthropics/claude-code/issues/8069
2025-10-08 01:04:37 -05:00
Brandon Martin 1cd21bb602 ✨ feat: include full assistant response in Slack Stop/SubagentStop notifications
Enhance Slack notifications to include the complete assistant response for Stop and SubagentStop events, providing full context of what Claude accomplished.

Changes:
- Added get_last_assistant_message() to extract assistant responses from transcript
- Stop events now include the last assistant message (up to 3000 chars)
- SubagentStop events now include the last assistant message with task description
- Messages automatically truncate with indicator if exceeding 3000 chars
- Graceful fallback to generic message if transcript unavailable
- Fixed missing --event-emoji ✅ flag in settings.json Stop hook

Example notification:
  "✅ Task Completed

  Perfect! ✅ Commit created successfully:
  Commit: de50fb9
  Message: ✨ feat: add Slack notification hook
  Changes: 6 files changed, 617 insertions(+)"

Documentation updated to reflect new full-context feature.
2025-10-08 00:08:23 -05:00
Brandon Martin de50fb9d0f ✨ feat: add Slack notification hook for Claude Code events
Add comprehensive Slack integration that sends direct messages for Claude Code lifecycle events including notifications, task completions, and subagent completions.

Features:
- Universal event support (Notification, Stop, SubagentStop, etc.)
- Intelligent message formatting based on event type
- Custom emoji support via --event-emoji flag
- Comprehensive error handling and logging
- Dry-run mode for testing

Implementation:
- slack_notification.py: Main hook using slack_sdk
- docs/slack-notifications.md: Complete setup and usage guide
- .env.example: Environment variable template
- Updated settings.json with Slack hooks for key events
- Updated .gitignore to exclude .env files
- Updated README.md to document new hook

Requires SLACK_BOT_TOKEN and SLACK_USER_ID environment variables.
2025-10-07 23:57:34 -05:00
Brandon Martin e04ba28746 🔧 chore: make lint hook blocking with exit code 2 2025-09-30 12:47:58 -05:00
Brandon Martin 7f02d5064f ✨ feat: add deep research agents, git-commit command, and ultracite rules
Add comprehensive deep research agent suite with 5 specialized agents (academic-researcher, data-analyst, research-coordinator, technical-researcher, web-researcher) for multi-faceted research tasks.

Add new commands:
- git-commit: Smart commit creation with emoji conventional format
- frontend-mode: Load ultracite rules for JS/TS development
- security-scan: Run security scans on project files

Add ultracite.md documentation with comprehensive frontend development rules covering accessibility, JSX/React, TypeScript, and code quality standards.

Update existing agents with improved proactive usage patterns and tool configurations.

Update hooks and settings to support new functionality.
2025-09-29 22:00:34 -05:00
Brandon Martin 3a465848a0 Initial Commit 2025-09-29 16:34:01 -05:00