SkillAgentSearch skills...

cem-serve

The standards-based Web Components multitool. Generate Custom Elements Manifests, Dev Server, LSP, and MCP for your app or design system

Install / Use

npx skills add bennypowers/cem --skill cem-serve

Installs into whichever agent you are using.

About this skill
📄

SKILL.md

Installable skill definition

Quality Score

76/100

Category

Design

Supported Platforms

Universal

Our assessment of cem-serve

cem-serve scores 76/100 on our quality scale, 234th of 267 Design skills we index.

Its SKILL.md is 3.5 KB long, well organised into 15 sections with 4 code examples: a solid amount of guidance for an agent.

It has no GitHub stars yet, so there is no community track record; judge it on its content.

Substance
26/30
Structure
20/20
Description
15/15
Adoption
0/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 3 days ago, so cem-serve is actively maintained.
  • Our last check on 2026-09-26 found the source still online.
  • No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
  • Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

Safety scan

No issues found

Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.

AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.

cem-serve compared with similar skills

All 4 of these similar skills score higher than cem-serve; compare them before choosing.

SkillScoreStarsUpdatedFormat
cem-serve (this skill)by bennypowers7603d agoSKILL.md
taste-skillby Leonxlnx100110.6ktodayCLAUDE.md
Agent-Reachby Panniantong100109.2ktodayCLAUDE.md
headroomby headroomlabs-ai10078.9ktodayCLAUDE.md
CowAgentby zhayujie10047.8ktodayCLAUDE.md

Frequently asked questions

How do I install cem-serve?
Run npx skills add bennypowers/cem --skill cem-serve. The install tabs above show the steps for each supported agent.
Which AI agents does cem-serve work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is cem-serve safe to use?
Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is cem-serve still maintained?
The repository was last updated 3 days ago, so cem-serve is actively maintained.

name: cem-serve description: > Set up cem serve for custom element development. Use when the user asks to "start dev server", "set up cem serve", "preview elements", "run demos", or needs help configuring the dev server, import maps, or CSS transforms. tools: Read, Bash, Glob, Grep

Set Up CEM Serve for Development

Configure and run cem serve to preview custom elements with live reload, auto-generated import maps, and interactive knobs.

Best Practices

Package Dependencies

Runtime imports must be in dependencies, not devDependencies. The import map generator only resolves packages from dependencies.

{
  "dependencies": {
    "lit": "^3.0.0"
  },
  "devDependencies": {
    "@pwrs/cem": "^0.9.0"
  }
}

Project Config

Create .config/cem.yaml with generate and serve sections:

generate:
  files:
    - elements/*/my-*.ts
  output: custom-elements.json
  designTokens:
    spec: tokens/my-tokens.json
    prefix: my-prefix
  demoDiscovery:
    fileGlob: elements/*/demo/*.html
    urlPattern: /elements/:tag/demo/:demo.html
    urlTemplate: /elements/{{.tag}}/demo/{{.demo}}/
serve:
  transforms:
    css:
      include:
        - "elements/**/*.css"
  • generate.files: globs for element source files
  • generate.output: manifest output path
  • generate.designTokens: DTCG token file and CSS custom property prefix
  • generate.demoDiscovery: how to find and route demo files
  • serve.transforms.css.include: globs for CSS files to serve as JS modules (enables import styles from './el.css' with { type: 'css' })

Demo Files

Demos are HTML partials, not full documents. No <!DOCTYPE>, <html>, or <head>. Include inline <script type="module"> and <style> as needed.

The index.html demo is the default — keep it minimal (simplest possible usage). Additional demos show specific features or variants.

Use <meta itemprop="name"> and <meta itemprop="description"> on non-index demos for display in the dev server UI.

For demo authoring conventions, see the write-demos skill.

Testing with Chromeless Mode

cem serve --rendering=chromeless strips the dev server UI, serving bare demo HTML with import maps and transforms — ideal for browser-based testing with Playwright or Puppeteer. Append ?rendering=chromeless to any demo URL for per-request chromeless mode without restarting.

See the gen-tests skill for full test scaffolding with page objects against chromeless demos.

Workflow

1. Generate the Manifest

cem generate

Verify demos appear without warnings. If you see "No URL configured for demo", check that demoDiscovery.urlPattern uses URLPattern syntax (:param captures, not regex).

2. Start the Server

cem serve

Default port is 8000. Use --port <n> to change.

3. Verify

Open http://localhost:8000. The UI should show element demos in the sidebar. Check browser console for import errors — if a bare specifier fails, the package needs to be in dependencies.

Troubleshooting

Bare specifier errors

Move the package from devDependencies to dependencies and reinstall.

Duplicate demo route warnings

Delete the cached manifest and regenerate: rm custom-elements.json && cem generate

Port in use

lsof -ti:8000 | xargs kill or use --port.

Stale manifest on background regen

cem serve regenerates the manifest in the background on file changes. If the background regen produces a smaller/empty manifest, ensure generate.files in the config matches your source globs — the background regen uses the config, not CLI args.

Related Skills

View on GitHub
GitHub Stars0
CategoryDesign
Updated3d ago
Forks0

Trust signals

80/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 medium1 low