## Summary
- replace the Linear skill wrappers with shared GraphQL-only scripts and
add GraphQL-native document list/read helpers
- rewrite the source Linear skill docs and references to remove the old
Linearis-specific guidance
- bump to , resync the packaged plugin, and update packaged command/docs
wording to match the GraphQL flow
## Test Plan
- python -m compileall .claude/skills/linear/scripts
plugins/cce-linear/skills/linear/scripts
- uv run .claude/skills/linear/scripts/create-ticket.py --help
- uv run .claude/skills/linear/scripts/search-issues.py --help
- uv run .claude/skills/linear/scripts/create-project.py --help
- uv run .claude/skills/linear/scripts/list-documents.py --help
## Summary
- add a new `typescript-v6` skill under `.claude/skills/` with TS 6
upgrade guidance, focused references, and trigger metadata grounded in
the official release notes
- add a dedicated `typescript-v6` plugin package and sync wiring so the
skill ships separately from the existing `cce-typescript` agent plugin
- update the root README and regenerate marketplace/plugin outputs via
`python3 scripts/sync_plugin_packages.py`
## Verification
- `python3 scripts/sync_plugin_packages.py`
- `python3 -m py_compile scripts/sync_plugin_packages.py`
- `lsp_diagnostics scripts/sync_plugin_packages.py`
- `git diff --check`
## Summary
- rename the original `vitest-4` skill/package to `vitest-v4` across the
repo and the packaged `cce-vite` plugin so the version is explicit in
the skill name
- add a new rich `vite-v8` skill package in the repo and package it into
`cce-vite` alongside `vitest-v4`
- deepen both Vite/Vitest skill packages with richer failure-mode-driven
references, execution guidance, migration notes, and cross-linked
reference indexes modeled after the stronger `tauri-v2` style
- register `cce-vite` in `.claude-plugin/marketplace.json` and add
`cce-vite` to `scripts/sync_plugin_packages.py` so the plugin package
and marketplace entry are reproducible from source
- update plugin metadata, author metadata, and README
inventories/install docs to match the final packaged scope
## Verification
- ran `lsp_diagnostics` across the enriched markdown skill directories
with no issues
- validated `plugins/cce-vite/.claude-plugin/plugin.json` and
`.claude-plugin/marketplace.json` parse as JSON
- validated relative markdown links across the repo-root and packaged
Vite/Vitest skill trees
- verified no repo-facing `vitest-4` references remain
- ran `python -m py_compile scripts/sync_plugin_packages.py`
- ran `python scripts/sync_plugin_packages.py` successfully
- ran `git diff --check` with no whitespace issues
## Summary
- expand the `tauri-v2` skill package into a layered v2+ reference with
stronger guidance for mobile entry points, `WebviewWindow` usage,
capabilities, IPC, official plugins, updater/distribution, and advanced
runtime topics
- improve discoverability and progressive disclosure with direct
deep-dive links from `SKILL.md`, tables of contents in long reference
files, consistent verification notes, and a clearer deprecated/legacy
position for the companion agent
- bump the packaged `cce-tauri` plugin to `1.0.1`, regenerate synced
marketplace/plugin outputs, and remove empty placeholder `assets/` and
`scripts/` directories that only contained generic README stubs
## Summary
- remove the redundant `manifest.hooks` entry from the generated
`cce-core` plugin manifest
- keep `plugins/cce-core/hooks/hooks.json` in the standard plugin
location with the wrapped `hooks` record
- update the sync script so regenerated packages do not reintroduce the
duplicate-hook error
## Why
Marketplace installs of `cce-core` now fail with:
```text
Hook load failed: Duplicate hooks file detected: ./hooks/hooks.json resolves to already-loaded file ...
The standard hooks/hooks.json is loaded automatically, so manifest.hooks should only reference additional hook files.
```
The previous hook-schema fix made the standard `hooks/hooks.json` file
valid, but `plugin.json` still pointed at that same standard file. That
caused the plugin loader to load it twice.
## Changes
- remove `hooks: "./hooks/hooks.json"` from generated plugin manifests
- regenerate `plugins/cce-core/.claude-plugin/plugin.json`
## Verification
- `python3 scripts/sync_plugin_packages.py`
- `python3 -m py_compile scripts/sync_plugin_packages.py
install_extensions.py`
- validated `plugins/cce-core/.claude-plugin/plugin.json` no longer has
a `hooks` field
- validated `plugins/cce-core/hooks/hooks.json` still contains a
top-level `hooks` object
## Summary
- wrap the generated `plugins/cce-core/hooks/hooks.json` contents under
a top-level `hooks` key
- keep `cce-core` pointing at `./hooks/hooks.json` while making the file
shape match the plugin loader schema
- update the package sync script so regenerated core hooks stay valid
## Why
Marketplace installs of `cce-core` failed with:
```text
Hook load failed: [
{
"expected": "record",
"code": "invalid_type",
"path": ["hooks"],
"message": "Invalid input: expected record, received undefined"
}
]
```
The plugin loader expects the external hooks file to contain a top-level
`hooks` record. Our generated file started directly with event keys like
`PreToolUse` and `PostToolUse`, so the loader could not find `hooks`.
## Changes
- update `scripts/sync_plugin_packages.py` to emit `{ "hooks": { ... }
}` for the generated core hooks file
- regenerate `plugins/cce-core/hooks/hooks.json`
## Verification
- `python3 scripts/sync_plugin_packages.py`
- `python3 -m py_compile scripts/sync_plugin_packages.py
install_extensions.py`
- validated `plugins/cce-core/hooks/hooks.json` contains a top-level
`hooks` object
## Summary
- remove explicit `agents`, `skills`, and `commands` fields from
generated plugin manifests
- rely on Claude Code's standard auto-discovery for plugin-root
`agents/`, `skills/`, and `commands/` directories
- flatten packaged agents to `agents/*.md` so discovery does not depend
on nested-path recursion
- keep the fix minimal by only retaining the explicit `hooks` entry for
`cce-core`
## Why
A local plugin install failed with:
```text
Plugin has an invalid manifest file ... Validation errors: agents: Invalid input
```
Our packaged plugins already follow the standard directory structure, so
the extra manifest path fields were unnecessary and were the most likely
validator mismatch. Greptile also flagged that many generated plugin
agents were nested under paths like `agents/specialized/...`, which
could silently fail if discovery is non-recursive. This change aligns
the packages with the default plugin structure instead of relying on
special manifest fields or recursive discovery.
## Changes
- update `scripts/sync_plugin_packages.py` to stop emitting manifest
path overrides
- flatten generated packaged agents to plugin-root `agents/*.md`
- regenerate all packaged plugin manifests with minimal metadata-only
manifests
- regenerate all packaged plugin agent files into the flat standard
layout
## Verification
- `python3 scripts/sync_plugin_packages.py`
- `python3 -m py_compile scripts/sync_plugin_packages.py
install_extensions.py`
- validated all 19 generated plugin manifests as JSON
- confirmed no generated manifest still contains `agents`, `skills`, or
`commands`
- confirmed packaged agents are flat: `flat_agents=78 nested_agents=0`
## 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>
Add comprehensive plugin architecture with marketplace support:
- 17 focused plugins for different tech stacks
- Dual-mode installation (plugin vs standalone)
- Standardized README.md for all plugins
- marketplace.json for plugin discovery
Plugins included:
- cce-core: Essential foundation (agents, hooks, commands)
- cce-kubernetes: K8s operations and health diagnostics
- cce-cloudflare: Workers, AI, Workflows, VPC
- cce-esphome: ESPHome IoT development
- cce-web-react: React/Next.js/TanStack
- cce-django: Django backend development
- cce-research: Deep research coordination
- cce-grafana: Grafana plugin development
- cce-homeassistant: Home Assistant dashboards
- cce-temporal: Temporal.io workflows
- cce-typescript: TypeScript tooling
- cce-web-vue: Vue.js/Nuxt development
- cce-devops: CI/CD and DevOps tools
- cce-ai: AI/ML development
- cce-anthropic: Claude Agent SDK
- cce-go: Go development
- cce-python: Python CLI with Typer
Each plugin includes complete metadata, installation instructions,
and usage examples. Users install only what they need for their stack.
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.
Add specialized agent and skill for Home Assistant Lovelace dashboard
configuration, card selection, view layouts, theming, and custom card
development.
Agent (.claude/agents/specialized/homeassistant/):
- ha-dashboard-expert.md with Context7 library references
Skill (.claude/skills/ha-dashboard/):
- SKILL.md with quick start, rules, and troubleshooting
- README.md with auto-trigger keywords
- references/ with card, view, theme, and pattern documentation
- assets/ with dashboard template and card snippets
Shell scripts for plugin development workflow:
- create_plugin.sh: Scaffold new plugins with @grafana/create-plugin
- dev_server.sh: Start Docker development environment
Python scripts for cluster health diagnostics:
- discover_apis.py: Detect installed operators via API groups
- health_orchestrator.py: Map APIs to specialized agents
- aggregate_report.py: Combine results into unified report
New slash commands for Linear integration:
- /create-linear-pr: Create ticket, branch, commit, and PR in one flow
- /existing-linear: Create PR for existing Linear ticket
Automates the full workflow from staged changes to opened PR with proper
ticket linking and success criteria validation.
New Grafana ecosystem extensions:
- grafana-plugin-scaffolding skill for creating panel/datasource/app plugins
- grafana-billing skill for querying Prometheus/Loki billing metrics
- grafana-plugin-expert agent for SDK guidance and development patterns
Supports Grafana v12.x+ with @grafana/create-plugin scaffolder integration.
Dynamic cluster health assessment system using API discovery to detect
installed operators and dispatch specialized sub-agents for comprehensive
health checks.
Includes:
- kubernetes-health skill with discovery scripts
- k8s-health-orchestrator agent for coordination
- Specialized agents for Core, Crossplane, ArgoCD, Cert-Manager, Prometheus
- /k8s-health command for easy invocation
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)
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
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.
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.
- Update description to clarify it analyzes changes and auto-generates commit messages
- Correct argument list from `[message] | --no-verify | --amend` to `[message] [--amend] (Optional)`
- Remove unsupported `--no-verify` flag
- Clarify that message argument is optional hint (e.g., ticket number), not full commit message
- Add comprehensive contribution guidelines covering:
- Code of conduct and licensing terms
- Getting started guide for new contributors
- Development workflow and branch conventions
- Extension creation guides (agents, hooks, commands)
- Testing procedures and style guidelines
- Pull request process and commit message format
- Switch from proprietary to MIT License for maximum adoption
- Update README.md with cleaner structure and highlights section
- Add reference to CONTRIBUTING.md in CLAUDE.md
- Remove non-commercial restrictions to encourage community growth
Add two specialized agents for Anthropic's Claude Agent SDK:
- TypeScript/Node.js expert for type-safe agent development with Zod
- Python expert for async agent development with anyio/asyncio
Both agents cover:
- Query patterns and streaming responses
- Custom tool creation with MCP integration
- Permission modes and security controls
- Hook system for lifecycle events
- FastAPI/Django integration (Python)
- Production deployment patterns
Also updated:
- README.md: Added Anthropic section and expanded Cloudflare/Crossplane sections
- CLAUDE.md: Added reminder to update README when adding extensions
The agents leverage comprehensive research from official Anthropic documentation
(October 2025 release) and provide production-ready implementation guidance.
Add five specialized agents covering the Cloudflare Workers ecosystem:
- cloudflare-workers-expert: Core Workers runtime, APIs, and storage
- cloudflare-workflows-expert: Durable execution engine and orchestration
- cloudflare-workers-ai-expert: AI inference with 50+ models at the edge
- cloudflare-workers-for-platforms-expert: Multi-tenant serverless infrastructure
- cloudflare-ai-agents-sdk-expert: AI agent framework with state management
Each agent includes:
- Comprehensive documentation analysis from official Cloudflare docs
- "MUST BE USED" triggers for automatic delegation
- Complete API reference and best practices
- Production-ready code examples and patterns
- Clear delegation guidelines to related specialists
Also enhanced agent-from-docs command to support multi-agent creation
strategy when URLs represent distinct platform verticals.
All agents placed in .claude/agents/specialized/cloudflare/
Created comprehensive Go development agent based on:
- Google Go Style Guide (guide, best practices, decisions)
- Go 1.25 features (synctest, WaitGroup.Go, hash.Cloner)
- Effective Go principles
Enforces strict Google style conventions:
- MixedCaps naming, no util packages
- Error handling with %w wrapping
- Goroutine lifecycle management
- Consumer-defined interfaces
- Table-driven tests (no assertion libraries)
- Context as first parameter
Agent proactively activates for Go files and provides structured
code reviews with severity levels, refactoring examples, and
specific style guide references.
Updated agent-from-docs command to launch multiple technical-researcher agents in parallel when multiple documentation URLs are provided, improving efficiency and reducing total analysis time.
Remove verbose XML example blocks from description fields in data-analyst,
research-coordinator, and technical-researcher agents. Descriptions now
concise and action-oriented, matching the pattern used in web-researcher
and academic-researcher agents.