Claude
0f88555485
chore(versioning,docs): normalize stale versions to 2.9.0 + refresh counts
...
Version normalization (scope: only plugins/skills older than 2.7.0):
- Bumped 52 plugin.json + 21 SKILL.md `version` fields from pre-2.7.0
values (1.0.0 / 2.0.x / 2.2.x / 2.3.x / 2.4.x / 2.5.x) to 2.9.0.
Left 2.7.0+ packages untouched. Tool mirrors (.codex/.gemini/.vibe/
.hermes) excluded. All manifests still pass check_plugin_json --all.
Doc count refresh (recomputed raw figures: 338 skills, 16 domains,
62 plugins, 533 Python tools, 676 references):
- marketplace.json: both descriptions + metadata.version -> 2.9.0.
- Root README: headline, badges (Skills 338, Agents 51+, Commands 87+),
intro counts, convert section (338 skills / 9 tools), and the full
domain table rebuilt to 16 domains summing to 338 (adds research-ops,
business-operations, commercial, compliance-os; corrects product 17,
marketing 46, c-level 66, ra-qm 18, finance 4, engineering 51/78).
- Fixed stale per-skill README `Version:` lines left inconsistent by the
bump (andreessen, c-level-agents, product-team, senior-qa).
- Fixed stale domain README footers (product-team 17/17, c-level 66/66,
project-management 9/9).
- CLAUDE.md scope line, structure tree, highlight, and footer synced to
the raw figures.
https://claude.ai/code/session_01PUNmQVE4WYvcrzpq2anC3D
2026-05-27 05:22:59 +00:00
Claude
8fd3155868
fix(plugin-schema): align with live Claude Code spec — migrate to "./"-prefixed skills field
...
Resolves #712 and #714 .
Claude Code's plugin spec (code.claude.com/docs/en/plugins-reference) requires
"All paths must be relative to the plugin root and start with ./". CC 2.1.144+
rejects the bare "skills" form with `Validation errors: skills: Invalid input`,
breaking plugin installs from this repo.
Changes:
- 47 plugin.json manifests migrated from "skills": "skills" → ["./skills"]
(canonical post-CC 2.1.144 form, also accepts string "./skills")
- scripts/check_plugin_json.py rewritten to enforce the live spec:
* Hard-fails on non-"./"-prefixed strings (except the legacy "skills" literal)
* Hard-fails on empty strings/arrays and non-string array entries
* Emits WARN (non-fatal) on the legacy "skills" literal as a safety net
for copied templates — the WARN tolerance can be removed later
* Tested against all four canonical forms + 3 garbage forms
- CLAUDE.md §5 rewritten to document the live spec, including the historical
context of the v2.1.107 → v2.1.144 regression window that's now closed
- 15 stale broken symlinks under .gemini/skills/ removed (orphans from older
reorgs that the sync script didn't prune because its cleanup is disabled)
Verification:
- scripts/check_plugin_json.py --all → 0 FAIL, 0 WARN, exit 0 (69 files OK)
- pytest tests/ → 2103 passed
- find . -type l ! -exec test -e {} \; → 0 broken symlinks
- Live spec forms tested: ["./"], ["./skills"], "./skills", ["./a","./b"] all pass
- Garbage forms rejected: bare "./", empty array, non-string entries, plain strings
2026-05-21 07:03:11 +00:00
Claude
663bc8afa2
fix(plugin.json): drop "./" prefix from skills field to clear /doctor warning ( #686 )
...
Claude Code 2.1.133+ rejects "skills": "./skills" with a "Path escapes
plugin directory" warning, even though ./skills resolves to a valid
subdirectory inside the plugin root. Per the upstream docs example, the
correct value is "skills" (no ./ prefix), which works across all CC
versions and other tools (Codex, Gemini CLI, etc.).
Applied to all 47 plugin.json files that used "./skills"; updated
CLAUDE.md ClawHub publishing constraints to document the new convention
and reference the issue.
2026-05-19 03:43:34 +00:00
Claude
6c16309801
feat(skills): ship kubernetes-operator (Phase 2 — operator pattern discipline)
...
Phase 2 of the multi-skill build effort. Same 14-step pipeline as Phase 1.
## What landed
### New skill: engineering/kubernetes-operator
End-to-end Kubernetes Operator discipline. Published as BOTH:
- Standalone plugin: engineering/kubernetes-operator/
- Bundled mirror: engineering/skills/kubernetes-operator/
3 stdlib-only Python tools:
- crd_validator.py — checks CRD YAMLs for status subresource,
structural schema, conditions array, printer
columns, version policy, scope
- reconcile_lint.py — finds reconcile-loop bugs in Go: time.Sleep,
spec mutation via r.Update, missing requeue,
oversized reconcile bodies, panic/os.Exit,
unbalanced finalizer add/remove
- operator_capability_audit.py — scores against OperatorHub Capability
Levels 1-5 with concrete next-level steps
4 reference docs:
- operator_pattern.md — what an operator IS, when to use vs Helm/Deployment
- crd_design.md — anatomy of a production CRD, versioning, conversion
- reconcile_loop.md — idempotence patterns, error/requeue, status subresource
- tooling_landscape.md — controller-runtime / kubebuilder / operator-sdk /
metacontroller / KOPF / java-operator-sdk decision tree
Asset templates:
- crd_template.yaml — passes crd_validator.py PASS-clean
- reconcile_skeleton.go — passes reconcile_lint.py PASS-clean
Plus: SKILL.md (213 lines), README.md, /operator-audit slash command.
### Audit verdict (evidence-based)
Closest existing coverage:
- engineering-team/senior-devops — kubectl / blue-green deploys, no operators
- engineering/helm-chart-builder — Helm charts (different abstraction)
- engineering-team/cloud-security — k8s RBAC at high level
None cover the Operator pattern (CRD + controller + reconcile loop).
Verdict: BUILD. Gap is real and tooling-shaped.
### Self-test (meta-validation)
During build, the new linters caught 4 real bugs in their own asset templates:
- crd_validator.py wrongly anchored regexes to start-of-line, misclassifying
indented YAML keys (scope, singular, listKind) as missing
- reconcile_lint.py checked finalizer add/remove balance per-function,
missing the cross-function pattern in the asset (Add in main reconcile,
Remove in reconcileDelete)
Both linters fixed; assets re-tested; both PASS clean.
This is Karpathy principle 4 in action: verifiable goals catch real bugs.
### Marketplace / registry
- marketplace.json: kubernetes-operator registered as standalone plugin
- engineering-advanced-skills bundle: 45 → 46 → 47 skills, version → 2.4.1
- engineering/.claude-plugin/plugin.json: version + skill list updated
- mkdocs.yml: nav entry under "Engineering - POWERFUL"
- docs/skills/engineering/kubernetes-operator.md: docs page (manual,
pending generate-docs.py classification fix)
- docs/commands/operator-audit.md: auto-generated
- .codex/, .gemini/: synced
### Karpathy-coder gates
- complexity_checker (strict): 85/100 average, depth-4-to-6 WARNs (lambdas
in capability audit). Same range as karpathy-coder's own scripts (70/100
baseline). Verdict: WARN, not FAIL.
- All 1648 tests pass (was 1630; added 18 for the new skill).
- mkdocs build --strict: succeeded in 14.44s.
### Verifiable success criteria (all green)
✓ scripts/*.py --help → exit 0 for all 3 scripts
✓ SKILL.md frontmatter → name + description + tags + compatible_tools
✓ plugin.json schema → 8 fields exact (verified by check_plugin_json.py)
✓ sync_skill_bundles → standalone ↔ bundled mirror in sync
✓ marketplace.json → standalone entry + bundle counts updated
✓ generate-docs.py → command page generated (skill page manual)
✓ mkdocs build --strict → succeeded
✓ cross-tool sync → codex + gemini synced
✓ pytest tests/ → 1648 passed, 0 failed
✓ CHANGELOG.md → [Unreleased] entry expanded
✓ Self-test → linters caught + fixed 4 real bugs in own assets
## Files
- engineering/kubernetes-operator/ (new standalone plugin)
- engineering/skills/kubernetes-operator/ (new bundled mirror)
- commands/operator-audit.md (new slash command)
- docs/skills/engineering/kubernetes-operator.md (new docs page)
- docs/commands/operator-audit.md (auto-generated)
- mkdocs.yml (nav entries)
- .claude-plugin/marketplace.json (registered)
- engineering/.claude-plugin/plugin.json (bundle bumped)
- CHANGELOG.md ([Unreleased] expanded)
- .codex/, .gemini/ (cross-tool sync)
https://claude.ai/code/session_01Dq12xJakFRxwaoU8Pqejdm
2026-05-09 09:01:45 +00:00