A comprehensive GitHub webhook monitoring service with Claude AI integration for automated repository analysis and management. Built for clidecoder and shawn-storie organizations with universal @clide auto-execution.
- Web Interface: https://hls.clidecoder.com/
- Webhook Endpoint: https://hls.clidecoder.com/webhook
- Health Check: https://hls.clidecoder.com/health
- API Documentation: https://hls.clidecoder.com/api-docs
- Events Documentation: https://hls.clidecoder.com/events
- Prompt Management: https://hls.clidecoder.com/prompts
- Real-time GitHub webhook capture and analysis
- Secure HMAC-SHA256 signature verification with timing attack protection
- SQLite database storage with complete audit trail and foreign key relationships
- Web interface with auto-refresh, filtering, and GitHub link integration
- Support for both organization-level and repository-level webhooks
- Universal Auto-Execution: ALL webhook events trigger Claude analysis automatically (no @clide tag required)
- GitHub CLI Verification: Uses
ghcommands to verify events exist before taking actions - Dangerous Permissions: Runs with
--dangerously-skip-permissionsfor full GitHub access - Template-Based Prompts: Handlebars templates with repository-specific overrides
- Monaco Editor: Web-based prompt template editor with syntax highlighting
- Response Storage: Complete Claude responses stored with execution metrics
- Automated label management and assignment using GitHub CLI
- Pull request review automation and assignee suggestions
- Release management and validation with changelog analysis
- Workflow failure detection and remediation suggestions
- Branch protection recommendations and security scanning
- Issue triage and priority assessment
- Issues: Creation, updates, comments, labels, assignment, milestones
- Pull Requests: Creation, reviews, merges, comments, synchronization
- Pushes: Commit analysis, branch management, security scanning
- Releases: Version analysis, changelog validation, asset management
- Workflows: CI/CD monitoring, failure investigation, optimization
- Comments: Issue comments, PR comments, review comments, commit comments
- Branches/Tags: Creation, deletion, protection rules
- Deployments: Status tracking, environment management
- Security: Vulnerability alerts, code scanning, secret scanning
- And more: Forks, stars, watches, gollum (wiki), check runs/suites
- Go to your repository settings β Webhooks
- Add webhook with these settings:
- Payload URL:
https://hls.clidecoder.com/webhook - Content Type:
application/json - Secret:
0eafeebff81353f861742e1391ba371f045d1fbc586f9033f8e789954c7c9733 - Events: Select "Send me everything" or specific events
- Payload URL:
ALL webhook events automatically trigger Claude analysis - no special tags required! The system will:
- β Receive and verify webhook signature
- β Parse event with repository-specific or generic templates
- β Execute Claude analysis with GitHub CLI verification
- β Store complete response with execution metrics
- β Take automated actions (add labels, assign reviewers, comment, etc.)
Example workflow for any GitHub event:
GitHub Event β HLS Webhook β Claude Analysis β GitHub Actions β Response Storage
Both webhook detail and parsed prompt modals include direct GitHub links:
- Repository links: Direct to GitHub repo
- Issue/PR links: Direct to specific issues and pull requests
- Commit links: Direct to commits and compare views
- Release links: Direct to releases and tags
- Workflow links: Direct to workflow runs and checks
- Comment links: Direct to specific comments
- Real-time webhook feed with event details
- π€ "View Parsed Prompt" buttons for events with templates
- ποΈ "View Last Response" for events with Claude analysis
- One-click Claude execution with "Send to Claude" buttons
- Monaco editor for creating and editing prompt templates
- Repository-specific prompt overrides
- GitHub CLI integration for repository discovery
- Auto-suggestion for unique prompt names
- Comprehensive GitHub events reference
- Event-specific payload examples
- Integration guidance for each event type
- Backend: Node.js + Express
- Database: SQLite with three main tables
- Frontend: Vanilla JS with Monaco Editor and Prism.js
- AI Integration: Claude via command-line interface
- Repository Integration: GitHub CLI (
gh)
-- Core webhook storage
CREATE TABLE webhooks (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
event_type TEXT,
action TEXT,
delivery_id TEXT,
signature TEXT,
payload TEXT,
sender_login TEXT,
sender_id INTEGER,
repository TEXT,
verified BOOLEAN
);
-- Parsed prompt templates
CREATE TABLE parsed_prompts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
webhook_id INTEGER,
repository TEXT,
event_type TEXT,
prompt_template TEXT,
parsed_content TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(webhook_id) REFERENCES webhooks(id)
);
-- Claude AI responses
CREATE TABLE claude_responses (
id INTEGER PRIMARY KEY AUTOINCREMENT,
prompt_id INTEGER,
response_content TEXT,
execution_time INTEGER,
exit_code INTEGER,
error_message TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(prompt_id) REFERENCES parsed_prompts(id)
);GET /api/webhooks- List webhooks with paginationGET /api/webhooks/:id- Get specific webhook detailsDELETE /api/webhooks/:id- Delete webhook
GET /api/parsed-prompts- List parsed promptsGET /api/claude-responses/:promptId- Get Claude responsePOST /api/claude-execute/:id- Execute Claude with prompt
GET /api/prompts- List available prompt templatesPOST /api/prompts/generic/:eventType- Save generic templatePOST /api/prompts/repo/:repo/:eventType- Save repo-specific template
# Clone and setup
git clone <repository>
cd hls
npm install
# Start development server
node hls.js
# Or with PM2 for production-like environment
npm run pm2Server runs on http://localhost:4665 with:
- Webhook endpoint:
/webhook - Web interface:
/ - Health check:
/health
- Signature Verification: HMAC-SHA256 validation with timing attack protection
- Input Sanitization: SQL prepared statements prevent injection
- Environment Configuration: Secure secret management via
.env - GitHub CLI Authentication: Secure repository access for real event verification
- Dangerous Permissions: Controlled use of
--dangerously-skip-permissionsfor GitHub CLI access
HookHaven Repository Test (shawn-storie/HookHaven):
- β Issue #1 with @clide tag processed successfully
- β Claude verified issue exists using GitHub CLI
- β Automated label application and comprehensive analysis
- β Response stored: 59.7 seconds execution time
- β Auto-execution trigger confirmed working
Patient-SPRKZ Repository Test (zpaper-com/patient-sprkz):
- β Issue #3 processed with universal auto-execution
- β GitHub CLI verification successful
- β Added "enhancement" label automatically
- β Comprehensive comment added by Claude
- β Response stored: 88.6 seconds execution time
- β Cross-organization webhook confirmed working
- Total Webhooks Processed: 22+ events across both organizations
- Claude Executions: 6 successful auto-executions
- Database Storage: All webhooks, prompts, and responses stored
- GitHub Actions: Labels, comments, and assignments working
- Performance: Average execution time 60-90 seconds
hls/
βββ hls.js # Main application (single file)
βββ package.json # Dependencies and scripts
βββ ecosystem.config.js # PM2 configuration
βββ .env # Environment variables
βββ CLAUDE.md # Claude Code integration guide
βββ README.md # This file
βββ hls_webhooks.db # SQLite database (auto-created)
βββ prompts/ # Prompt templates
βββ generic/ # Default templates for all repos
β βββ issues.md
β βββ pull_request.md
β βββ push.md
β βββ ...
βββ repos/ # Repository-specific overrides
βββ owner/
βββ repo/
βββ issues.md
βββ ...
This is a specialized tool for GitHub webhook automation with Claude AI. For questions or contributions, please review the CLAUDE.md file for technical details and development guidance.
MIT License - see LICENSE file for details.
Hook Line Sinker - Because every webhook deserves the perfect catch π£