Commit graph

4 commits

Author SHA1 Message Date
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