Re-opens the work from #159 (that PR was closed and its branch
force-pushed to purge accidentally-committed `graphify-out/` local
files, which blocks GitHub from reopening it — so this is a fresh PR
with identical, cleaned content).
## What
`cx ai-center` — AI Center (GenAI) configuration commands over the AI v3
REST API (`/mgmt/openapi/5/ai/...`): `applications`, `evaluations`,
`custom-evaluations`, `coverage`, `model-pricing` — mirroring the
`ws-ai-mcp` AI Center tool surface — plus the `cx-ai-center` skill
(config commands + the GenAI-span DataPrime query library).
## History
- All review feedback from #159 (bot + Yoav) is already applied; see
#159 for the full discussion/resolved threads.
- Validated end-to-end against real eu2 AI Center data; unit + wiremock
+ `#[ignore]`d e2e tests; `verify-skills` green.
- Branch history was re-baselined on master to fully purge the
`graphify-out/` files (now gitignored).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01Pj6ieK81Qdk1YfcJwqNraV
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
## Summary
- **Collapse 5 single-pillar skills** (`cx-query-logs`,
`cx-query-spans`, `cx-rum`, `cx-dataprime`, `cx-metrics-query`) into a
single `cx-telemetry-querying` gateway skill that covers all telemetry
pillars and loads pillar-specific reference files on demand
- **Introduce `skills/shared/`** as the single source of truth for
language guides and telemetry-pillar how-tos (DataPrime syntax, PromQL
guidelines, logs/spans/metrics/RUM querying)
- **Add `scripts/sync-shared-references.sh`** to distribute shared files
into each consuming skill's `references/` directory as regular file
copies (not symlinks, so `npx skills add coralogix/cx-cli` works
correctly on clients)
- **Update `cx-alerts` and `cx-create-dashboard`** to reference shared
files via local `references/` copies instead of cross-skill name
references
- **Extend `scripts/verify-skills.sh`** with a sync check (check #6)
that fails if any `references/` copy is out of sync with
`skills/shared/`
- **Add `.github/workflows/skills.yml`** CI workflow to validate skill
correctness and reference sync on every PR touching `skills/`
- **Update all developer docs** (`docs/adding-a-skill.md`,
`.claude/skills/add-skill/SKILL.md`, `skills/README.md`, `CLAUDE.md`) to
document the new 8-skill structure and shared references architecture
## Why
Skills were previously cross-referencing each other by skill name (e.g.,
"load `cx-dataprime` skill for syntax help"), which is fragile — if a
skill is renamed or removed, the reference silently breaks. The new
approach uses file-based references: each skill ships its own
`references/` directory with the content it needs, copied from the
canonical `skills/shared/` source by a sync script. CI validates the
copies stay in sync.
## Test plan
- [ ] `bash scripts/verify-skills.sh` — all 8 skills pass, 0 errors
- [ ] `bash scripts/sync-shared-references.sh` — exits 0, no errors
- [ ] No `SKILL.md` references any of the 5 deleted skill names
- [ ] `cx-telemetry-querying` triggers on all former skill trigger
phrases (logs, spans, metrics, RUM, DataPrime)
- [ ] CI workflow (`.github/workflows/skills.yml`) runs and passes on
this PR
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>