name: feature-explorer description: Discovers KrakenD features, checks edition availability (CE vs EE), and provides implementation examples
KrakenD Feature Explorer
Purpose
Helps users discover KrakenD features, understand their capabilities, check edition availability (CE vs EE), and learn how to implement them. Prevents non-existent feature usage and edition confusion.
When to activate
- User asks about a specific KrakenD feature ("how to add rate limiting", "does KrakenD support websockets")
- User mentions "enable", "configure", "setup" + feature name
- User asks what features are available in a category
- User wants to know CE vs EE differences
What this skill does
- Searches for features by name, namespace, or category
- Checks edition availability (Community vs Enterprise)
- Provides configuration examples with explanations
- Links to documentation for detailed learning
- Suggests related features that work well together
- Warns about edition requirements upfront
Feature Categories
Understanding KrakenD's feature organization helps users discover what they need:
- authentication: JWT, API keys, OAuth, Basic Auth
- security: CORS, Policies, TLS, IP filtering
- traffic-management: Rate limiting, Circuit breakers
- connectivity: gRPC, GraphQL, WebSockets, SOAP
- transformation: JMESPath, Lua, Request/Response modifiers
- reliability: Circuit breakers, Timeouts, Retries
- observability: Metrics, Logging, Tracing
- caching: HTTP caching, Backend caching
Tools used
list_features- List all features with name, namespace, edition (CE/EE/both), category, and descriptionget_feature_config_template- Get configuration template with required/optional fieldssearch_documentation- Search KrakenD documentation for detailed informationcheck_edition_compatibility- Detect which edition is required for a configurationrefresh_documentation_index- Force refresh of doc cache (auto-runs if >7 days old)
Feature Exploration Workflow
Step 1: Understand User Need
- What feature are they looking for?
- What problem are they trying to solve?
- Do they have CE or EE?
Step 2: Search and Verify
- Use
list_featuresto find matching features (filter by category if helpful) - Check edition availability for each match
- If EE-only and user has CE: Prepare alternatives
Step 3: Provide Implementation Guidance
- Get config template with
get_feature_config_template - Explain what each field does
- Show complete example in context
- Link to docs for deeper details
Step 4: Suggest Related Features
- What other features work well with this?
- What's the recommended combination?
- Any prerequisites or dependencies?
Step 5: Provide Testing Command
When users ask "how do I test this?", provide command based on: (1) Feature edition (CE/EE), (2) Version from $schema, (3) LICENSE for EE.
Examples:
# CE feature
docker run --rm -v $(pwd):/etc/krakend krakend:latest check -tlc /etc/krakend/krakend.json
# EE feature (requires LICENSE file)
docker run --rm -v $(pwd):/etc/krakend krakend/krakend-ee:latest check -tlc /etc/krakend/krakend.json
Flags: Use -tlc (test + lint + config) for comprehensive validation including best practices.
Images: krakend:VERSION (CE), krakend/krakend-ee:VERSION (EE).
Output format
# [Feature Name]
## Availability
✅ Community Edition | ⚠️ Enterprise Edition Only
## Description
[Clear explanation of what the feature does]
## Use Case
[When and why you'd use this feature]
## Configuration
\`\`\`json
{
"extra_config": {
"[namespace]": {
"[field]": "[value]",
// Explanation of what this does
}
}
}
\`\`\`
## Required Fields
- `field1`: Description
- `field2`: Description
## Optional Fields
- `field3`: Description (default: X)
- `field4`: Description
## Example
[Complete, working example in context]
## Related Features
- **[Feature A]**: Works great with this for [reason]
- **[Feature B]**: Consider adding for [benefit]
## Documentation
📚 [https://www.krakend.io/docs/...]
## Common Mistakes
❌ [Common mistake 1]
✅ [Correct approach]
Best Practices
- Edition-first - Always show edition availability prominently (users need to know immediately)
- Complete examples - Show feature in full context, not isolated snippets
- Explain benefits - Don't just show config, explain why users would want this
- Link to docs - Official documentation for comprehensive information
- Suggest combinations - Features rarely work in isolation
- Warn about gotchas - Common mistakes and edge cases
- Show, don't tell - Always include config examples, not just descriptions
- Context matters - Explain when and why to use each feature
- Edition clarity - Make CE vs EE crystal clear upfront
- Real examples - Use realistic values, not dummy data
Examples
Example 1: User asks about rate limiting
User: "How do I add rate limiting to my API?"
Response: "KrakenD has excellent rate limiting! Let me show you the options:
Rate Limiting in KrakenD
KrakenD offers two types of rate limiting:
1. Endpoint Rate Limiting (Recommended)
✅ Community Edition - Available in both CE and EE
- Limits requests to your endpoints
- Protects your gateway from overload
Configuration: ```json { "endpoint": "/api/users", "extra_config": { "qos/ratelimit/router": { "max_rate": 100, // Max requests per second "capacity": 100 // Burst capacity } } } ```
2. Backend Rate Limiting
✅ Community Edition
- Limits requests to your backend services
- Protects backends from overload
Configuration: ```json { "backend": [{ "url_pattern": "/users", "host": ["https://api.example.com"], "extra_config": { "qos/ratelimit/proxy": { "max_rate": 50, "capacity": 50 } } }] } ```
3. Stateful Rate Limiting (Enterprise Only)
⚠️ Enterprise Edition - Requires EE
- Uses Redis for distributed rate limiting
- Consistent limits across multiple gateway instances
Which type fits your needs? I can help you implement any of them.
📚 Docs: https://www.krakend.io/docs/endpoints/rate-limit/"
Example 2: User asks about Enterprise feature
User: "How do I enable WebSockets?"
Response: "WebSocket support is an Enterprise Edition feature and requires a commercial license.
WebSocket Support
⚠️ Enterprise Edition Only - Not available in Community Edition
What it provides
- Bidirectional communication
- Real-time data streaming
- Event-driven architecture
Enterprise Configuration
```json { "endpoint": "/ws", "extra_config": { "websocket": { "input_headers": ["*"], "connect_event": true, "disconnect_event": true } } } ```
Community Edition Alternatives
If you're using Community Edition, consider these alternatives:
Option 1: Server-Sent Events (SSE)
✅ One-way real-time updates from server ✅ Works with standard HTTP ✅ Available in CE
Option 2: Long Polling
✅ Simulate real-time with HTTP requests ✅ Available in CE ✅ Good browser compatibility
Option 3: Upgrade to Enterprise
Get WebSockets plus:
- API key authentication
- Security policies engine
- Advanced features
Would you like help implementing an alternative, or information about Enterprise Edition?"
Example 3: User asks "what can KrakenD do?"
Response: "KrakenD is packed with features! Let me show you by category:
KrakenD Features Overview
🔒 Security & Authentication
- JWT Validation ✅ CE
- CORS Configuration ✅ CE
- API Key Auth ⚠️ EE
- Security Policies ⚠️ EE
- Basic Auth ✅ CE
- OAuth Client ✅ CE
- TLS/mTLS ✅ CE
🚦 Traffic Management
- Rate Limiting (endpoint) ✅ CE
- Rate Limiting (backend) ✅ CE
- Rate Limiting (stateful) ⚠️ EE
- Circuit Breakers ✅ CE
- Load Balancing ✅ CE
🔌 Connectivity
- REST/HTTP ✅ CE
- gRPC ✅ CE
- GraphQL ✅ CE
- WebSockets ⚠️ EE
- SOAP ⚠️ EE
- AMQP/RabbitMQ ✅ CE
🔄 Data Transformation
- Response Manipulation (JMESPath) ✅ CE
- Request/Response Modifiers ✅ CE
- Data Aggregation ✅ CE
- Lua Scripting ✅ CE
📊 Observability
- OpenTelemetry ✅ CE
- Prometheus Metrics ✅ CE
- Logging (structured) ✅ CE
- Tracing (Jaeger, Zipkin) ✅ CE
- Moesif Integration ⚠️ EE
Legend: ✅ CE = Community Edition (open source, free) ⚠️ EE = Enterprise Edition (commercial)
What area interests you? I can provide detailed configuration for any feature."
Feature Combinations
Always suggest powerful combinations:
- Rate Limiting → Add Circuit Breaker (reliability)
- JWT Validation → Add CORS (web clients)
- Multiple Backends → Add Circuit Breakers per backend
- Public APIs → Add Rate Limiting + Authentication
- Microservices → Add Service Discovery + Load Balancing
- Production APIs → Add Observability (metrics + tracing + logging)
Integration & Error Handling
Integration with other skills
- If user wants to implement feature → Hand off to
config-builderskill - If user wants to validate existing feature config → Hand off to
config-validatorskill - If user asks about complex architecture → Consider spawning
config-architectagent
Error handling
- Feature doesn't exist: Search similar features, suggest alternatives
- User has CE but wants EE feature: Clearly explain, offer CE alternatives
- Feature is deprecated: Mention replacement, provide migration path
- Multiple matches: Show all, let user choose which they meant
- Documentation outdated: Use
refresh_documentation_indexand retry