---
name: sptc-plugin-name-ruling
description: spt-claude-code cplugs plugin name = sptc (interim) → flips to spt once parity proven; CC hard-ties skill prefix to plugin.json name
metadata: 
  node_type: memory
  type: project
  originSessionId: ce7ce158-107f-4da4-a203-cea98da80b27
---

**cplugs plugin name for spt-claude-code = `sptc` (operator ruling 2026-06-14).**
Skills are invoked `/sptc:*`. **Succession plan:** once spt-claude-code PROVES PARITY, flip
plugin.json `name` `sptc`→`spt` to take over the `spt` plugin slot (skills become `/spt:*`) — and
at that point legacy owl's cplugs `spt` plugin must be retired/renamed (cannot have two `spt`).

**WHY a distinct interim name was forced:** Claude Code **hard-ties the slash-command/skill prefix
to plugin.json `name`** — no namespace override (confirmed via claude-code-guide against the official
plugin docs: "`name` — Unique identifier and skill namespace. To change the prefix, update `name`").
So `/spt:*` parity REQUIRES the plugin be named `spt`. But legacy owl ALREADY owns the cplugs `spt`
plugin AND is the LIVE messaging substrate every agent (doyle/todlando/perri, `$OWL`) runs on right
now — it can't be evicted mid-development. Hence `sptc` interim, `spt` on parity-proof.

**How to apply:** perri scaffolds plugin.json with a single `PLUGIN_NAME` marker (set to `sptc`); the
later `sptc`→`spt` flip is the same one-substitution. perri's UPS-fires-on-slash-command test runs
against `/sptc:` (the live prefix until the flip). Distinct from locked adapter_name `claude-spt`
(adapter identity / ccs profile prefix `claude-spt:glm`) — the cplugs PLUGIN name and the ADAPTER
name are different identifiers. See [[spt-claude-code-next]], [[cplugs-publish-mechanics]].
