Awesome-omni-skill write-rfc
Write RFCs for the ToolHive ecosystem. Use when the user wants to create a new RFC, proposal, or design document for toolhive, toolhive-studio, toolhive-registry, toolhive-registry-server, toolhive-cloud-ui, or dockyard projects.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/devops/write-rfc-stacklok" ~/.claude/skills/diegosouzapw-awesome-omni-skill-write-rfc-2f7c52 && rm -rf "$T"
skills/devops/write-rfc-stacklok/SKILL.mdWrite RFC Skill
This skill helps you write high-quality RFCs for the ToolHive ecosystem following established patterns and conventions.
Overview
ToolHive RFCs follow a specific format with the naming convention
THV-{NUMBER}-{descriptive-name}.md. The NUMBER must match the PR number and be zero-padded to 4 digits.
Workflow
Step 1: Gather Requirements
Before writing an RFC, ask the user about:
- Problem Statement: What problem are they trying to solve?
- Target Repository: Which repo does this affect?
- Core runtime, CLI (toolhive
), operator (thv
), proxy-runner (thv-operator
), virtual MCP (thv-proxyrunner
)vmcp
- Desktop UI application (Electron/TypeScript)toolhive-studio
- MCP server registry datatoolhive-registry
- Registry API server (toolhive-registry-server
)thv-registry-api
- Cloud/Enterprise web UI (Next.js)toolhive-cloud-ui
- Container packaging for MCP serversdockyard
- Cross-cutting changesmultiple
- Scope: What are the goals and explicit non-goals?
Step 2: Research the Ecosystem
Before drafting, research the relevant codebase:
2.1 Fetch Architectural Documentation
Use
mcp__github__get_file_contents to read from stacklok/toolhive repo's docs/arch/ directory:
| Document | Content |
|---|---|
| Platform overview, key components |
| Local vs Kubernetes modes |
| Nouns (Workloads, Transports, Proxy, etc.) and Verbs |
| stdio, SSE, streamable-http transports |
| Secrets handling, providers |
| Configuration format, permission profiles |
| Registry architecture, MCPRegistry CRD |
| Server grouping concepts |
| Lifecycle management |
| K8s operator, CRDs |
| Virtual MCP aggregation |
2.2 Review Existing RFCs
Read
rfcs/ directory in this repository to understand patterns and check for related proposals.
2.3 Search Relevant Codebases
Use
mcp__github__search_code or mcp__github__get_file_contents to explore:
| Repository | Purpose |
|---|---|
| Core platform, CLI, operator, proxy |
| Desktop UI |
| Registry API server |
| Registry data |
| Cloud/Enterprise UI |
| Container packaging |
Step 3: Draft the RFC
Create the RFC following the template structure from
rfcs/0000-template.md.
Required Metadata
# RFC-XXXX: Title - **Status**: Draft - **Author(s)**: Name (@github-handle) - **Created**: YYYY-MM-DD - **Last Updated**: YYYY-MM-DD - **Target Repository**: [from step 1] - **Related Issues**: [links if applicable]
Core Sections
- Summary - 2-3 sentences capturing the essence
- Problem Statement - Current limitation, who's affected, why it matters
- Goals - Specific objectives (bulleted)
- Non-Goals - Explicit scope boundaries
- Proposed Solution
- High-Level Design (with Mermaid diagrams)
- Detailed Design: Component changes, API changes, configuration changes, data model changes
- Security Considerations (REQUIRED) - See security checklist below
- Alternatives Considered - Other approaches evaluated
- Compatibility - Backward and forward compatibility
- Implementation Plan - Phased approach with tasks
- Testing Strategy - Unit, integration, E2E, performance, security tests
- Documentation - What needs documenting
- Open Questions - Unresolved items
- References - Related links
Security Considerations Checklist (REQUIRED)
Every RFC MUST address:
- Threat Model - Potential threats, attacker capabilities
- Authentication and Authorization - Auth changes, permission models
- Data Security - Sensitive data handling, encryption
- Input Validation - User input, injection vectors
- Secrets Management - Credentials storage, rotation
- Audit and Logging - Security events, compliance
- Mitigations - Security controls implemented
Step 4: Use Proper Conventions
Code Examples
- Use Go for API changes in toolhive, toolhive-registry-server
- Use TypeScript for toolhive-studio, toolhive-cloud-ui changes
- Use YAML for configuration examples
- Use Mermaid for diagrams (flowcharts, sequence diagrams)
Kubernetes CRDs
If the RFC involves Kubernetes, include CRD examples:
apiVersion: toolhive.stacklok.dev/v1alpha1 kind: MCPServer metadata: name: example spec: # ...
CRD types:
MCPServer, MCPRegistry, MCPToolConfig, MCPExternalAuthConfig, MCPGroup, VirtualMCPServer
Step 5: File Naming
The RFC file should be named
THV-XXXX-{descriptive-name}.md where XXXX is the PR number. Since you don't know the PR number yet, use a placeholder like THV-XXXX-{name}.md and remind the user to rename it to match the PR number after creating the PR.
Step 6: Review Checklist
Before finalizing, verify:
- Problem is clearly stated
- Goals and non-goals are explicit
- Security section is complete (all 7 areas addressed)
- Alternatives are discussed
- Diagrams illustrate complex flows
- Code examples are concrete and in the correct language
- Implementation phases are defined
- Testing strategy covers all levels
- File follows naming convention
ToolHive Architecture Summary
Platform Overview
ToolHive is a platform for MCP server management (not just a container runner):
- Proxy layer with middleware (auth, authz, audit, rate limiting)
- Security by default (network isolation, permission profiles)
- Aggregation via Virtual MCP Server
- Registry for curated MCP servers
- Multi-deployment: Local (CLI/UI) and Kubernetes (operator)
Key Binaries
| Binary | Location | Purpose |
|---|---|---|
| toolhive | Main CLI |
| toolhive | Kubernetes operator |
| toolhive | K8s proxy container |
| toolhive | Virtual MCP server (aggregation) |
| toolhive-registry-server | Registry API server |
Transport Types
- stdio - Standard input/output (requires protocol translation)
- SSE - Server-Sent Events (HTTP, transparent proxy)
- streamable-http - HTTP streaming (transparent proxy)
Design Principles
- Platform abstraction over direct execution
- Security by default (network isolation, permissions)
- Extensibility through middleware
- Cloud-native (K8s operators, containers)
- RunConfig as portable API contract
Reference Files
- Template:
rfcs/0000-template.md - Contributing guide:
CONTRIBUTING.md - Existing RFCs:
rfcs/THV-*.md