Run karmaIQ regression_diff as a canary promotion gate. Returns one of four verdicts — STABLE, WATCH, REGRESSION, INSUFFICIENT_DATA — that pipelines and humans act on directly. Manual invocation only — must never auto-fire. Compares canary vs stable replicasets, or two services/APIs cross-entity.
How this skill is triggered — by the user, by Claude, or both
Slash command
/karmaiq-promotion-gate:gating-canary-promotionThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill is manual-only. Deliberate promotion decisions must never auto-fire — the user invoked this skill on purpose.
This skill is manual-only. Deliberate promotion decisions must never auto-fire — the user invoked this skill on purpose.
Delegate to the karmaiq-canary-gate subagent when:
Stay inline when:
| Verdict | Pipeline action | Driver |
|---|---|---|
| STABLE | Promote | No deltas above MED thresholds |
| WATCH | Human review required | MED deltas only |
| REGRESSION | Block promotion | Any HIGH-severity delta |
| INSUFFICIENT_DATA | Block promotion | < 2 replicasets observed |
Severity is computed server-side:
get_system_overview(domain="<active>") if not yet called this session. Required by the gate tool.get_time_intervals(duration_minutes=15) for the standard canary window. Override only if user specified.${CLAUDE_PLUGIN_DATA}/../karmaiq-core/domain.txt.regression_diff with raw user-supplied names. Do NOT pre-resolve via search_catalog — the tool fuzzy-matches internally.| Inputs | Mode | Use case |
|---|---|---|
pair_a (svc + api) + pair_b (svc + api) | cross_interface | Compare two specific APIs across services |
pair_a (svc only) | replicaset | Canary vs stable RS of same service |
pair_a (svc + api or api only) | replicaset_filtered | RS comparison filtered to one API |
pair_a (svc only) + pair_b (different svc only) | BLOCKED | Nexus does not implement whole-service cross-diff |
**Verdict**: <STABLE / WATCH / REGRESSION / INSUFFICIENT_DATA>
**Mode**: <cross_interface / replicaset / replicaset_filtered>
<summary line — what was compared and over what window>
### Top drivers
| metric | side A | side B | Δ | severity |
|---|---|---|---|---|
### Recommendation
<one of:>
- STABLE → "Safe to promote."
- WATCH → "Human review required. MED deltas: <list>. Proceed with caution."
- REGRESSION → "Block promotion. Top driver: <name>. Investigate via /karmaiq-firefighter:fire <target>."
- INSUFFICIENT_DATA → "Only one replicaset observed in window. Cannot validate. Extend window or wait for more data."
### Pipeline JSON
```json
{"verdict":"...","mode":"...","drivers":[...],"deltas":[...],"rs_meta":{...}}
regression_diff.karmaiq-firefighter for RCA.disable-model-invocation: true — Claude should never load this without explicit slash invocation)regression_diff with both pair_a_service (no api) AND pair_b_service (different svc, no api) — that mode is blocked server-sideregression_diff returns them; respect what comes backProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Searches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
npx claudepluginhub codekarma-tech-public/codekarma-mcp-plugin --plugin karmaiq-promotion-gate