# Em-Dash Ban in Taste Skill: Rules and Replacements for AI‑Generated Content

> Understand the em-dash ban in Taste Skill and discover valid replacements for AI generated content. Learn formatting rules for consistency.

- Repository: [Leon Lin/taste-skill](https://github.com/Leonxlnx/taste-skill)
- Tags: deep-dive
- Published: 2026-06-01

---

**Taste Skill enforces a strict prohibition on em‑dashes (`—`) across all AI‑generated UI content, mandating replacement with standard hyphens (`-`) to satisfy the Pre‑Flight Check.**

The `Leonxlnx/taste-skill` repository implements rigorous typography constraints designed to standardize LLM outputs. The **em‑dash ban** represents a non‑negotiable design rule defined in Section 9.G of the skill specification, affecting every text element visible to users.

## What Is the Em‑Dash Ban?

The ban constitutes a zero‑tolerance policy against the em‑dash character. According to the design specification in [`skills/taste-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md), the rule explicitly states:

> “**NO em‑dash (`—`) as a design element OR anywhere else**… The em‑dash character is forbidden … Use the regular hyphen (`-`).” [[SKILL.md L649](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md#L649)]

This prohibition extends to both the em‑dash (`—`) and the en‑dash (`–`). Any occurrence triggers an automatic failure during the validation pipeline.

### Pre‑Flight Check Enforcement

The `Pre‑Flight Check` automatically scans generated content for prohibited characters. As documented at line 699 of [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md):

> “If your output contains a single `—` or `–` anywhere visible to the user, the output fails the Pre‑Flight Check and must be rewritten.”

The changelog in [`CHANGELOG.md`](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md) records this implementation as **§9.G Em‑Dash Ban (complete)**, noting the requirement for zero em‑dashes anywhere on the page. [[CHANGELOG.md L36](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md#L36)]

## Scope of the Prohibition

The em‑dash ban applies universally across all UI text generated by the LLM. Prohibited locations include:

- Headlines and eyebrows
- Pills and tags
- Body copy and paragraphs
- Quotes and attribution
- Captions and alt text
- Button text and calls‑to‑action

No exceptions exist for decorative or grammatical usage. The rule applies whether the dash functions as punctuation or as a visual design element.

## Permitted Replacement Character

The only sanctioned substitute is the **regular hyphen** (`-`). The specification explicitly directs developers to “use the regular hyphen (`-`)” instead of an em‑dash. No alternative punctuation—such as double hyphens (`--`) or en‑dashes (`–`)—is permitted or recognized as valid.

## Implementing the Replacement in Code

To comply with the Taste Skill specification, post‑process LLM outputs to sanitize dash characters before submission to the Pre‑Flight Check.

### Python Implementation

```python
def enforce_em_dash_ban(text: str) -> str:
    """
    Replace any em‑dash or en‑dash with a regular hyphen.
    This satisfies Taste Skill's Pre‑Flight Check.
    """
    return text.replace("—", "-").replace("–", "-")

```

### JavaScript Implementation

```javascript
function enforceEmDashBan(str) {
  // Replace both em‑dash and en‑dash with a hyphen
  return str.replace(/[—–]/g, "-");
}

```

Both functions target the Unicode em‑dash (`U+2014`) and en‑dash (`U+2013`), replacing them with the standard ASCII hyphen (`U+002D`) to ensure compliance.

## Source Files Defining the Constraint

The following files in the `Leonxlnx/taste-skill` repository establish and document the em‑dash prohibition:

- **[`skills/taste-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md)** — Contains the complete design rule set at lines 649 and 699, defining the ban’s scope and Pre‑Flight Check consequences.
- **[`CHANGELOG.md`](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md)** — Records the ban’s implementation as Section 9.G at line 36, marking it as a completed feature requirement.
- **[`README.md`](https://github.com/Leonxlnx/taste-skill/blob/main/README.md)** — Summarizes the constraint in the high‑level feature list for quick reference.
- **[`skills/llms.txt`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/llms.txt)** — Lists the em‑dash ban as a core behavioral constraint for LLM systems interacting with the skill.

## Summary

- The **em‑dash ban** in Taste Skill forbids characters `—` and `–` in all AI‑generated UI text.
- Violations cause automatic **Pre‑Flight Check** failures, requiring content rewrites.
- The only permitted replacement is the **standard hyphen** (`-`).
- Enforcement is documented in [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md) Section 9.G and tracked in [`CHANGELOG.md`](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md) at line 36.
- Sanitize outputs using string replacement functions in Python or JavaScript before validation.

## Frequently Asked Questions

### What character replaces the em‑dash in Taste Skill?

You must use the **regular hyphen** (`-`). The specification explicitly forbids em‑dashes and en‑dashes while mandating the standard hyphen as the sole replacement across all headlines, body copy, buttons, and metadata.

### What happens if my output contains an em‑dash?

The output fails the **Pre‑Flight Check** automatically. According to [`SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/SKILL.md) at line 699, any visible occurrence of `—` or `–` triggers a validation failure, forcing you to rewrite the content before deployment.

### Does the em‑dash ban apply to alt text and hidden elements?

Yes. The prohibition covers **every part of the UI** that the LLM may generate, including alt text, captions, attribution lines, and button labels. No visible or semantic exemption exists for any text field.

### Where is the em‑dash ban defined in the source code?

The rule originates in [`skills/taste-skill/SKILL.md`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/taste-skill/SKILL.md) at lines 649 and 699, with the implementation logged in [`CHANGELOG.md`](https://github.com/Leonxlnx/taste-skill/blob/main/CHANGELOG.md) at line 36 as Section 9.G. Additional context appears in [`README.md`](https://github.com/Leonxlnx/taste-skill/blob/main/README.md) and [`skills/llms.txt`](https://github.com/Leonxlnx/taste-skill/blob/main/skills/llms.txt) as a core LLM constraint.