feat: add cef plugin (cef:develop + cef:deploy)#4
Conversation
marketplace.json + plugin.json + two skills with progressive-disclosure references, grounded in the SDK source. Passes claude plugin validate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- SKILL.md: use npx cef (bare cef not on PATH in a fresh project) - anatomy.md: add eventSchemas + cef typegen example (typed payloads) - testing.md: assert a published event's payload - cubbies.md: adding a second cubby (declare alias in config AND test harness) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reflect the shipped 'cef deploy' CLI (--endpoint, default dev) across the skill; keep AS creation + token minting as human-only ROC steps; use npx cef. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Remove internal ADR IDs and private source-path citations from the develop skill references (public plugin — external tools shouldn't see them). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
spoluyan
left a comment
There was a problem hiding this comment.
CI is green (validate / CodeQL / Analyze) and the structure is solid: the two-skill split (shared develop trigger vs. side-effecting deploy intent) is the right call, the "detect the missing prerequisite → hand back the exact next step" table is genuinely useful, and the two-identity model (DDC bucket owner vs. Agent Service) is clearly explained. ADR/source-path scrubbing in commit 4 is good hygiene for a public plugin.
Requesting changes for content contradictions that claude plugin validate can't catch but a user following the deploy flow will hit:
- 🔴
cef deployis "coming" inroc-deploy.mdbut shipped indeploy/SKILL.md— and the SKILL.md links to that file. Reconcile roc-deploy.md to the shipped-CLI reality (commit8b04053updated SKILL.md but not its reference). - 🟠
agentIdshape disagrees —{pubkey}:{uuid}(anatomy) vs{pubkey}:{alias}(credentials, roc-deploy). Users construct deployment keys from this. - 🟠
targetingis DEPRECATED in anatomy but the only mechanism shown in engagements.md — the file pitched as teaching "selection decorators" demonstrates the deprecated path and never shows@Condition/@Priority/@Weight/etc. - 🟡 "stub pending the API" for
publishcontradicts the deploy skill treating publish as fully functional. - 🟡 Minor:
lifecycle: "per-stream"in the cubbies example isn't in anatomy's field list.
Inline comments below cite exact locations. Issues 1–2 are in the deploy path and will actively mislead a user mid-flow; 3–5 are adjacent and worth fixing in the same pass.
- deploy makes an agent live; publish (marketplace) is optional and last - document the deployments/ folder (one record per file; audiences/A-B via targeting + priority/weight) and the cef deploy command surface - scrub internal refs (ADRs, .go/source paths, TSS-DKG, vault-api, orchestrator) - align flags with the shipped CLI (drop --name) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- agentId is {asPubkey}:{alias} (was {uuid}); consistent across files
- cef publish = card on marketplace (optional, last); manifest stays in the
DDC bucket; drop 'stub pending the API'; reorder pipeline (deploy before publish)
- multi-engagement selection example uses per-engagement priority/weight/limit
(+ @Priority/@Weight/... decorators), not the deprecated targeting table
- disambiguate agent-config targeting (deprecated) vs deployment targeting (current)
- drop the unsupported lifecycle config field from the cubbies example
- scrub remaining internal naming (orchestrator -> platform, HandlerFor/AR)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…l-style) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Small follow-up to two review comments on #4 (merged): 1. **`cef typegen` types model input/output.** Made explicit in `engagements.md` that typegen fetches each model's spec and fills `KnownModels` as `ModelHandle<I, O>` — so both the **input and output** of `infer`/`stream` are typed, not just the alias (falls back to untyped without typegen). 2. **Finding available models.** Added a note that you browse models and copy a model's `ref` from **ROC** (there is no CLI command to list them), paste it into `models` in `cef.config.ts`, then run `cef typegen`. Short pointer added to the anatomy `models` field too. `claude plugin validate` ✔. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: upalinski <ulad.palinski@cere.io> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the
cefClaude Code plugin — the centrally-published, auto-updated authoring guidance thatcef init-scaffolded projects auto-wire (via.claude/settings.json).Contents
.claude-plugin/marketplace.json— marketplacecef;plugins/cef/.claude-plugin/plugin.json— plugincefv0.1.0.cef:develop(model-invoked) — author/extend/debug agents. Lean SKILL.md routing intoreferences/: anatomy, engagements, cubbies, widgets, testing, constraints.cef:deploy(confirmation-gated) — thebuild → push → deployworkflow (deploy makes an agent live; publish is optional/last), thedeployments/folder, and a "detect the missing prerequisite → hand back the exact next step" table.references/: credentials, roc-deploy.Design
Two skills, from the developer-journey UX analysis: steps that share the "developing a CEF agent" trigger → one
developskill; shipping is a distinct, side-effecting intent → separatedeployskill.Public-safe
No internal decision-record IDs, private source paths (
packages/.../src,.go),orchestrator/TSS-DKG/vault-apinaming, or example emails.claude plugin validate✔; validate + CodeQL green.Review fixes applied (spoluyan + owner)
agentIdis{asPubkey}:{alias}everywhere (was stale{uuid}).cef publish= agent card on the marketplace (optional, last); the manifest stays in the DDC bucket; dropped "stub"; pipeline reordered so deploy precedes publish.priority/weight/limit(+@Priority/… decorators), not the deprecated targeting table; disambiguated agent-config targeting (deprecated) vs deployment targeting (current, verified against the orchestrator structs).lifecycleconfig setting from the cubbies example (the@OnStart/@OnClosemethods stay).cef deploydocumented as shipped;--deployments <path>accepts a file or a directory (kubectl-apply -fstyle).Authored via a parallel workflow (references + skills), then reviewed and revised.
🤖 Generated with Claude Code