Skip to content

Commit 8bfc9bd

Browse files
authored
Merge pull request #1 from KeeperHub/chore/plugin-submission-readiness
chore: prepare plugin for Anthropic marketplace submission
2 parents 2a3dbcc + 2ebeec3 commit 8bfc9bd

15 files changed

Lines changed: 256 additions & 22 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
{
1414
"name": "keeperhub",
1515
"source": "./plugins/keeperhub",
16-
"description": "Manage KeeperHub workflows, execute automations, and browse templates from Claude Code. Connects to KeeperHub's remote MCP server with OAuth browser authentication.",
16+
"description": "Build and manage automation workflows from Claude Code. Monitor smart contracts, track on-chain events, configure scheduled tasks, and connect notifications across Discord, Telegram, email, and webhooks. Connects to KeeperHub's remote MCP server with OAuth browser authentication.",
1717
"version": "3.0.0",
1818
"author": {
19-
"name": "KeeperHub"
19+
"name": "KeeperHub",
20+
"email": "support@keeperhub.com",
21+
"url": "https://keeperhub.com"
2022
},
2123
"homepage": "https://app.keeperhub.com",
2224
"repository": "https://github.com/KeeperHub/claude-plugins",
@@ -26,7 +28,7 @@
2628
"workflow",
2729
"automation",
2830
"web3",
29-
"blockchain",
31+
"smart-contracts",
3032
"mcp"
3133
],
3234
"category": "automation"
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: Validate Plugin Structure
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
8+
9+
jobs:
10+
validate:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Validate JSON syntax
16+
run: |
17+
echo "Validating JSON files..."
18+
errors=0
19+
for f in $(find . -name "*.json" -not -path "./node_modules/*"); do
20+
if ! jq empty "$f" 2>/dev/null; then
21+
echo "Invalid JSON: $f"
22+
errors=$((errors + 1))
23+
fi
24+
done
25+
if [ "$errors" -gt 0 ]; then
26+
echo "$errors JSON file(s) have syntax errors"
27+
exit 1
28+
fi
29+
echo "All JSON files valid"
30+
31+
- name: Validate plugin structure
32+
run: |
33+
echo "Checking required files..."
34+
errors=0
35+
36+
for plugin_dir in plugins/*/; do
37+
name=$(basename "$plugin_dir")
38+
echo "Validating plugin: $name"
39+
40+
# Check required manifest
41+
if [ ! -f "$plugin_dir/.claude-plugin/plugin.json" ]; then
42+
echo " Missing: .claude-plugin/plugin.json"
43+
errors=$((errors + 1))
44+
else
45+
# Validate name field exists
46+
plugin_name=$(jq -r '.name // empty' "$plugin_dir/.claude-plugin/plugin.json")
47+
if [ -z "$plugin_name" ]; then
48+
echo " Missing 'name' field in plugin.json"
49+
errors=$((errors + 1))
50+
fi
51+
fi
52+
53+
# Check recommended files
54+
[ ! -f "$plugin_dir/README.md" ] && echo " Warning: Missing README.md"
55+
done
56+
57+
# Check marketplace manifest
58+
if [ ! -f ".claude-plugin/marketplace.json" ]; then
59+
echo "Missing: .claude-plugin/marketplace.json"
60+
errors=$((errors + 1))
61+
fi
62+
63+
# Check repo-level files
64+
[ ! -f "LICENSE" ] && echo "Warning: Missing LICENSE"
65+
[ ! -f "README.md" ] && echo "Warning: Missing README.md"
66+
[ ! -f "SECURITY.md" ] && echo "Warning: Missing SECURITY.md"
67+
68+
if [ "$errors" -gt 0 ]; then
69+
echo "$errors validation error(s) found"
70+
exit 1
71+
fi
72+
echo "All validations passed"
73+
74+
- name: Check MCP endpoint reachability
75+
run: |
76+
for plugin_dir in plugins/*/; do
77+
if [ -f "$plugin_dir/.mcp.json" ]; then
78+
urls=$(jq -r '.. | .url? // empty' "$plugin_dir/.mcp.json" 2>/dev/null)
79+
for url in $urls; do
80+
echo "Checking: $url"
81+
status=$(curl -sf -o /dev/null -w "%{http_code}" --max-time 10 "$url" 2>/dev/null || echo "000")
82+
if [ "$status" = "000" ]; then
83+
echo " Warning: $url is unreachable (may require auth)"
84+
else
85+
echo " Reachable (HTTP $status)"
86+
fi
87+
done
88+
fi
89+
done

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules/
2+
.DS_Store
3+
*.log
4+
.env
5+
.env.local

CHANGELOG.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [3.0.0] - 2026-03-25
9+
10+
### Added
11+
- Remote HTTP MCP server connection (app.keeperhub.com/mcp)
12+
- OAuth 2.0 browser-based authentication
13+
- API key fallback for headless/CI environments
14+
- 4 auto-invoked skills: workflow-builder, template-browser, execution-monitor, plugin-explorer
15+
- 2 slash commands: /keeperhub:login, /keeperhub:status
16+
- Marketplace configuration for self-hosted distribution
17+
- CI workflow for automated marketplace registry sync
18+
19+
### Changed
20+
- Migrated from local CLI (`kh serve --mcp`) to remote HTTP MCP endpoint
21+
- Simplified installation to single marketplace add + plugin install
22+
23+
## [2.0.0] - 2026-03-01
24+
25+
### Changed
26+
- Restructured as Claude Code plugin (from standalone MCP config)
27+
- Added skill-based architecture with trigger routing
28+
29+
## [1.0.0] - 2026-02-15
30+
31+
### Added
32+
- Initial release as Claude Code plugin
33+
- Basic workflow management commands

CONTRIBUTING.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Contributing to KeeperHub Claude Plugins
2+
3+
Thank you for your interest in contributing. This guide covers the basics.
4+
5+
## Reporting Bugs
6+
7+
Open a GitHub Issue with:
8+
9+
- A clear, descriptive title
10+
- Steps to reproduce the problem
11+
- Expected vs. actual behavior
12+
- Your environment (OS, Claude Code version)
13+
14+
## Suggesting Features
15+
16+
Open a GitHub Issue with the `enhancement` label. Describe the use case and why it would be valuable.
17+
18+
## Submitting Pull Requests
19+
20+
1. Fork the repository
21+
2. Create a feature branch from `main` (`git checkout -b feature/your-change`)
22+
3. Make your changes
23+
4. Test thoroughly
24+
5. Commit with a clear message describing the change
25+
6. Push to your fork and open a PR against `main`
26+
27+
### PR Guidelines
28+
29+
- Keep changes focused and minimal
30+
- Update documentation if your change affects usage
31+
- Ensure any new files follow existing conventions
32+
- One logical change per PR
33+
34+
## Code Style
35+
36+
- No emojis in code, comments, or documentation
37+
- Follow existing file structure and naming conventions
38+
- Keep plugin definitions as JSON/Markdown only (no executable code)
39+
40+
## Code of Conduct
41+
42+
All participants are expected to treat others with respect and professionalism. Harassment, discrimination, and disruptive behavior will not be tolerated. See the project maintainers if you have concerns.
43+
44+
## Questions
45+
46+
If you have questions about contributing, open a GitHub Issue or reach out at support@keeperhub.com.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2025 KeeperHub
3+
Copyright (c) 2025-2026 KeeperHub
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Claude Code plugin marketplace by KeeperHub.
1212

1313
### keeperhub
1414

15-
Build and manage Web3 automation workflows from Claude Code. Create workflows that monitor smart contracts, execute DeFi operations, transfer tokens, and send notifications across Discord, Telegram, email, and webhooks. Connects to KeeperHub's remote MCP server with OAuth browser authentication. Includes 4 skills and 2 slash commands.
15+
Build and manage automation workflows from Claude Code. Create workflows that monitor smart contracts, track on-chain events, run scheduled tasks, and send notifications across Discord, Telegram, email, and webhooks. Connects to KeeperHub's remote MCP server with OAuth browser authentication. Includes 4 skills and 2 slash commands.
1616

1717
```
1818
/plugin install keeperhub@keeperhub-plugins
@@ -31,8 +31,8 @@ After install, run `/mcp` in Claude Code and authorize the keeperhub server via
3131
- **plugin-explorer** -- discover available plugins and integrations
3232

3333
**Example use cases:**
34-
- "Create a workflow that monitors my Aave health factor every 15 minutes and sends a Telegram alert if it drops below 1.5"
35-
- "Show me available workflow templates for wallet monitoring"
34+
- "Create a workflow that monitors a smart contract event every 15 minutes and sends a Telegram alert when a specific condition is met"
35+
- "Show me available workflow templates for on-chain event monitoring"
3636
- "Why did my last workflow execution fail? Show me the logs"
3737
- "What KeeperHub plugins and integrations are available?"
38-
- "Set up an automation that checks ETH price hourly and sends a Discord notification when it crosses $3000"
38+
- "Set up an automation that runs a scheduled check hourly and sends a Discord notification when a threshold is crossed"

SECURITY.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Security Policy
2+
3+
## Reporting Vulnerabilities
4+
5+
If you discover a security vulnerability in this project, please report it responsibly.
6+
7+
- **Email**: security@keeperhub.com
8+
- **Expected response time**: 48 hours
9+
- **Do not** open public GitHub issues for security vulnerabilities.
10+
11+
Please include a description of the vulnerability, steps to reproduce, and any relevant context.
12+
13+
## Supported Versions
14+
15+
| Version | Supported |
16+
| ------- | ------------------ |
17+
| 3.0.x | Yes |
18+
| < 3.0 | No |
19+
20+
## Security Practices
21+
22+
- **HTTPS only**: All communication with the remote MCP server uses HTTPS with TLS 1.2 or higher.
23+
- **OAuth 2.0 authentication**: The plugin uses browser-based OAuth 2.0 flows. No credentials are stored in the plugin configuration files.
24+
- **No hardcoded secrets**: API keys and tokens are provided exclusively via environment variables. They are never committed to the repository.
25+
- **No executable code**: This plugin consists entirely of markdown and JSON configuration files. There is no executable code to audit or exploit.
26+
- **Server-side reviews**: The remote MCP server at `app.keeperhub.com` undergoes regular security reviews and penetration testing.
27+
28+
## Scope
29+
30+
### In scope
31+
32+
- Plugin configuration files in this repository (markdown and JSON)
33+
- Behavior of the MCP endpoint at `app.keeperhub.com/mcp`
34+
- OAuth flow and token handling between Claude and the MCP server
35+
36+
### Out of scope
37+
38+
- The KeeperHub web application itself (report separately at security@keeperhub.com)
39+
- Third-party dependencies or services not maintained by KeeperHub
40+
- Claude Desktop or Claude Code client vulnerabilities (report to Anthropic)
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
"name": "keeperhub",
3-
"description": "Manage KeeperHub workflows, execute automations, and browse templates from Claude Code. Connects to KeeperHub's remote MCP server with OAuth browser authentication.",
3+
"description": "Build and manage automation workflows from Claude Code. Monitor smart contracts, track on-chain events, configure scheduled tasks, and connect notifications across Discord, Telegram, email, and webhooks. Connects to KeeperHub's remote MCP server with OAuth browser authentication.",
44
"version": "3.0.0",
5-
"author": { "name": "KeeperHub" },
5+
"author": { "name": "KeeperHub", "email": "support@keeperhub.com", "url": "https://keeperhub.com" },
66
"homepage": "https://app.keeperhub.com",
77
"repository": "https://github.com/KeeperHub/claude-plugins",
88
"license": "MIT",
9-
"keywords": ["keeperhub", "workflow", "automation", "web3", "blockchain", "mcp"]
9+
"keywords": ["keeperhub", "workflow", "automation", "web3", "smart-contracts", "mcp"]
1010
}

plugins/keeperhub/CLAUDE.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# KeeperHub Plugin
2+
3+
This is a Claude Code plugin that connects to KeeperHub's remote MCP server for workflow automation.
4+
5+
## Architecture
6+
7+
- Pure markdown and JSON plugin (no executable code)
8+
- Connects to remote MCP server at `app.keeperhub.com/mcp` via HTTP
9+
- Authentication via OAuth 2.0 (browser) or API key (environment variable)
10+
11+
## Components
12+
13+
- **Skills**: 4 auto-invoked skills for workflow building, template browsing, execution monitoring, and plugin exploration
14+
- **Commands**: 2 slash commands for login setup and status checking
15+
- **MCP Server**: Remote HTTP connection configured in `.mcp.json`
16+
17+
## Key Patterns
18+
19+
- All skills check authentication before making API calls
20+
- Skills route to each other for out-of-scope requests
21+
- Progressive disclosure: start simple, add complexity only when needed

0 commit comments

Comments
 (0)