with one click
compare-operator
// Use when comparing a KubeBlocks addon against reference operators, managed database offerings, or KubeBlocks Enterprise capability baselines and producing a gap report.
// Use when comparing a KubeBlocks addon against reference operators, managed database offerings, or KubeBlocks Enterprise capability baselines and producing a gap report.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | compare-operator |
| description | Use when comparing a KubeBlocks addon against reference operators, managed database offerings, or KubeBlocks Enterprise capability baselines and producing a gap report. |
Reference resolution: when this source-derived skill mentions docs/..., resolve it from the shared support package beside the installed user skills: ~/.codex/skills/kubeblocks-addon-source-docs/docs/... for Codex or ~/.claude/skills/kubeblocks-addon-source-docs/docs/... for Claude Code. In the shared kubeblocks-addon-docs checkout, the same files live under skills/kubeblocks-addon-source-docs/docs/.... When it mentions scripts/..., resolve it from the same support package under scripts/.... If you are working inside a checkout of the original apecloud/kubeblocks-addon-skills, repo-relative paths are also valid.
Research and produce a four-column feature comparison between reference operators and KubeBlocks for the same database engine, covering both open-source and enterprise tiers.
Target: $ARGUMENTS
(Format: <engine> [ref-os-operator] [ref-enterprise-product]
Examples:
clickhouse altinity clickhouse-cloud
redis redis-operator redis-enterprise
elasticsearch eck elastic-cloud
If operator names are omitted they are auto-detected.)
The four subjects compared in every feature row:
āāāāāāāāāāāāāāāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā OPEN SOURCE TIER ā ENTERPRISE TIER ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā A. Ref OS Operator ā C. Ref Enterprise Product ā
ā e.g. Altinity ā e.g. ClickHouse Cloud ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā B. KB OS + Addon ā D. KB Enterprise + Addon ā
ā KB open-source ā KB enterprise operator ā
ā + open-source addon ā + same open-source addon ā
āāāāāāāāāāāāāāāāāāāāāāāāāāā“āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Key constraint: The open-source addon is shared between B and D. Features only achievable in D but not B must come from the KB enterprise operator layer, not from the addon.
Gap types produced:
To avoid "rule dilution" (formatting constraints buried under large content volumes):
Do NOT merge the two phases.
ENGINE = first token (e.g., "clickhouse")
REF_OS_OP = second token (e.g., "altinity") ā auto-detect if absent
REF_ENTERPRISE = third token (e.g., "clickhouse-cloud") ā auto-detect if absent
Read docs/kb-enterprise-features.md as the authoritative capability list for
Subject D (KB Enterprise + Addon). This file lists all enterprise-only (ENT),
open-source-enhanced (OS+ENT), and addon-delivered (ADDON) features with layer tags.
Use it to determine D's status for every feature row without re-researching the enterprise codebase.
Features tagged ENT are available only in D; features tagged OS+ENT are available in both B and D.
find addons/${ENGINE} -type f | sort 2>/dev/null || \
find . -path "*/addons/${ENGINE}*" -type f | sort 2>/dev/null
Read every file in:
addons/${ENGINE}/Chart.yaml and values.yamladdons/${ENGINE}/templates/ (all .yaml and .tpl)addons/${ENGINE}/scripts/ (all shell scripts)addons/${ENGINE}/config/ (all config templates)Build an inventory of what the addon currently implements:
Also check the upstream community repo for any features not yet in the local copy:
curl -s "https://api.github.com/repos/apecloud/kubeblocks-addons/contents/addons/${ENGINE}/templates" \
2>/dev/null | python3 -c "import json,sys; [print(x['name']) for x in json.load(sys.stdin) if isinstance(x,dict)]"
Ref OS Operator ā search GitHub:
curl -s "https://api.github.com/search/repositories?q=${ENGINE}+operator+kubernetes&sort=stars&per_page=5" \
2>/dev/null | python3 -c "
import sys,json
for r in json.load(sys.stdin).get('items',[])[:5]:
print(r['full_name'], r['stargazers_count'], r.get('description',''))
"
Ref Enterprise Product ā for well-known engines use known mappings:
Otherwise search: WebSearch("<engine> managed cloud database service features")
Record:
REF_OS_REPO = GitHub owner/repo for the open-source operatorREF_ENT_URL = official docs base URL for the enterprise productExtract facts for all four subjects across all 15 categories.
For each fact record: <feature>: A=<Y/P/N> B=<Y/P/N> C=<Y/P/N> D=<Y/P/N> | <notes>
Sources in order:
# README
curl -s "https://raw.githubusercontent.com/${REF_OS_REPO}/master/README.md" | head -300
# Docs index
curl -s "https://api.github.com/repos/${REF_OS_REPO}/contents/docs" 2>/dev/null \
| python3 -c "import json,sys; [print(x['name']) for x in json.load(sys.stdin) if isinstance(x,dict)]"
# Fetch key docs: configuration, replication, storage, security, monitoring, schema/migration
curl -s "https://raw.githubusercontent.com/${REF_OS_REPO}/master/docs/<filename>.md"
# Source layout (reveals advanced capabilities not in docs)
curl -s "https://api.github.com/repos/${REF_OS_REPO}/git/trees/master?recursive=1" 2>/dev/null \
| python3 -c "
import json,sys
tree = json.load(sys.stdin).get('tree',[])
for f in tree:
p = f['path']
if any(k in p for k in ['schemer','lifecycle','reconcil','controller','operator']):
print(p)
" | head -40
Use WebFetch to read the enterprise product docs. Focus on:
WebFetch(REF_ENT_URL + "/features", "List all features, especially enterprise-only ones")
WebFetch(REF_ENT_URL + "/security", "Security and compliance features")
WebFetch(REF_ENT_URL + "/scaling", "Auto-scaling and resource management")
WebFetch(REF_ENT_URL + "/backup", "Backup, restore, and PITR capabilities")
For each of the 15 categories, produce raw bullets:
Category N: <Name>
- <feature 1>: A=Y B=P C=Y D=N | <brief note>
- <feature 2>: A=N B=N C=Y D=N | enterprise-only
- <feature 3>: A=N B=Y C=N D=Y | KB advantage ā ref operator lacks this
...
Categories:
1. Cluster Lifecycle create/delete/start/stop/upgrade/rollback/suspend/troubleshoot
2. Scaling & Resources vertical/horizontal replicas/shards, drain, make-before-break, auto-scale
3. High Availability replication, failover, quorum, data-loss recovery, cross-AZ
4. Configuration Mgmt settings hierarchy, topology-aware config, hot reload, validation
5. User & Access Mgmt user CRUD, password, profiles, quotas, network ACL, SSO
6. Security & Encryption TLS, cert rotation, inter-node auth, secret refs, audit log, compliance
7. Schema & Data Mgmt schema migration on scale-out, table sync, metadata cleanup (engine-specific)
8. Node Lifecycle Ops graceful drain, query drain, replica lag wait, re-include conditions
9. Storage Management PVC expand, snapshots, watermark, tiered storage, provisioner modes
10. Backup & Restore full/incr, schedule, PITR, retention, multi-backend, cross-region
11. Observability metrics, operator metrics, pod monitor, per-replica, distributed tracing
12. Networking & Services service types, role-based routing, FQDN, ports, private link
13. Day-2 Operations ops abstraction, cancel, timeout, switchover, rebuild, custom ops
14. Templates & Reuse pod/volume/service templates, cross-cluster reuse, override levels
15. Declarative IaC CRD management, Helm, operator config CR, GitOps, multi-tenancy
Self-check after Phase 1:
Start only after Phase 1 is fully complete.
Each table has four data columns:
## <N>. <Category Name>
| ID | Feature | A: Ref OS | B: KB OS+Addon | C: Ref Enterprise | D: KB Ent+Addon | Notes |
|---|---|:---:|:---:|:---:|:---:|---|
| N.1 | <feature> | Y | P | Y | P | <key difference> |
| N.2 | <feature> | N | N | Y | N | Enterprise-only |
| N.3 | <feature> | N | Y | N | Y | KB advantage |
Legend row at the top of the report:
Y = Full supportP = Partial supportN = Not supportedN/A = Not applicable (Cloud-Only or outside K8s operator scope)One row per category, columns for all four subjects:
## Summary: Coverage Statistics
| Category | Total | A Y | A P | A N | B Y | B P | B N | C Y | C P | C N | D Y | D P | D N |
|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| 1. Cluster Lifecycle | N | | | | | | | | | | | | |
...
| **Total** | | | | | | | | | | | | | |
**A (Ref OS Operator)** coverage: XX/TT (XX%)
**B (KB OS + Addon)** coverage: XX/TT (XX%)
**C (Ref Enterprise)** coverage: XX/TT (XX%) [excludes N/A items]
**D (KB Ent + Addon)** coverage: XX/TT (XX%) [excludes N/A items]
For every feature where B = N or B = P but A = Y:
## OS Gap Analysis: Ref OS Operator vs KB OS + Addon
| Layer | When to use |
|---|---|
| **KB å¼ęŗ Operator** | Generic reconciliation logic, new CRD fields, applies to all engines |
| **<Engine> Addon** | Engine-specific scripts, config templates, lifecycle hooks |
| **Operator + Addon åä½** | Operator provides hook/trigger; Addon provides engine logic |
Decision rules:
- Feature requires new reconcile loop logic or new CRD API ā KB Operator
- Feature is pure engine SQL/config, KB has a lifecycle hook for it ā Addon
- Needs both a new operator hook AND engine-specific script ā Operator + Addon
### Per-Category Breakdown (OS gaps)
#### <Category N>
| ID | Feature | B Status | Layer | Rationale |
|---|---|:---:|---|---|
For every feature where D = N or D = P but C = Y AND the feature is not an OS gap (B is already Y):
## Enterprise Gap Analysis: Ref Enterprise vs KB Enterprise + Addon
Note: The open-source addon is shared. Features listed here require the KB Enterprise
operator layer ā they CANNOT be delegated to the addon.
| ID | Feature | D Status | Why Enterprise only | Rationale |
|---|---|:---:|---|---|
Enterprise features typically include:
## KB Advantages (KubeBlocks leads the reference)
| ID | Feature | KB Tier | KB Status | Ref Status | Value |
|---|---|---|:---:|:---:|---|
Separate OS gaps and Enterprise gaps:
## Priority Checklist
### OS Gaps ā P0 Must Have (X items)
Blocks professional-grade open-source management.
| Item | Feature IDs | Layer |
|---|---|---|
### OS Gaps ā P1 Important (X items)
| Item | Feature IDs | Layer |
|---|---|---|
### OS Gaps ā P2 Enhancement (X items)
| Item | Feature IDs | Layer |
|---|---|---|
### Enterprise Gaps ā P0 Must Have (X items)
Blocks enterprise-tier positioning.
| Item | Feature IDs | Layer |
|---|---|---|
### Enterprise Gaps ā P1/P2 (X items)
| Item | Feature IDs | Layer |
|---|---|---|
Priority criteria:
One chain for OS gaps, one for Enterprise gaps:
## Dependency Chains
### OS Gap Chain
[Operator prerequisite A] ā [Operator prerequisite B]
ā
[Addon feature C depends on A+B]
ā
[Addon feature D depends on C]
### Enterprise Gap Chain
[Enterprise feature E] ā [Enterprise feature F]
ā (shared addon unchanged)
[Enterprise feature G]
mkdir -p workspace
OUTFILE="workspace/${ENGINE}-operator-comparison.md"
File structure (in order):
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Coverage Roadmap ā
ā ā
ā OS Tier ā
ā Current: B = XX% ā
ā + P0 done: B ā XX% (parity with A) ā
ā + P1 done: B ā XX% (exceeds A) ā
ā ā
ā Enterprise Tier ā
ā Current: D = XX% ā
ā + P0 done: D ā XX% (parity with C) ā
ā + P1 done: D ā XX% (exceeds C) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Report to user:
Comparison report: workspace/${ENGINE}-operator-comparison.md
Subjects:
A Ref OS Operator : <name> (<GitHub URL>)
B KB OS + Addon : kubeblocks (open-source) + ${ENGINE} addon
C Ref Enterprise : <name> (<docs URL>)
D KB Ent + Addon : kubeblocks (enterprise) + ${ENGINE} addon
Coverage (Y items only):
A: XX% B: XX% C: XX% D: XX%
Top OS gaps (P0): <count> items ā KB Operator: N, Addon: N, Operator+Addon: N
Top Ent gaps (P0): <count> items ā KB Enterprise
KB advantages: <count> items where KB leads
github.com/apecloud/kubeblocks-addons