# CCPP Emmet

> Emmet for every language, expanded before the file is written, so Claude types less.

Published 2026-09-23, updated 2026-09-23.

Claude writes abbreviations, CCPP Emmet expands them into the full code or markup before it reaches the disk. Fewer output tokens, the same files.

Install:

```
ccpp emmet profiles
```

Output tokens are the slowest and most expensive tokens of a session. Boilerplate is most of them. CCPP Emmet lets Claude write the short form and expands it on the way to the file.

## Why it matters

- **Write less, get the same file**: An abbreviation expands deterministically into the code it stands for. The file on disk is exactly what a human would have typed.
- **Beyond HTML**: Dictionaries describe each language, so the same syntax covers markup, stylesheets and code.
- **Invisible when unused**: A document opts in with its envelope. Every other write goes through untouched.

## How it works

A file that starts with the `#!emmet` envelope is expanded by the hook before Claude Code writes it. The Lua package `emmet` does the same inside a chunk.

```
#!emmet html
nav.menu>ul>li*4>a[href=#]{Item $}
```

## Specifications

| | |
|---|---|
| Stage | Beta |
| Expansion | Deterministic, from dictionaries shipped with the plugin |
| Interfaces | ccpp emmet, a Claude Code hook, the Lua package emmet |
| Platforms | Linux, macOS, Windows |

**Free with every account**

Install the emmet plugin from the CCPP marketplace.

[Create a free account](/signup)
