## Description
Part 4 of 4. Adds `anti-slop/no-em-dash`, ported from t3code. It flags
em dashes in string literals, template strings, and JSX text. Comments
are not checked.
One change from t3code's version: a string that is only an em dash is
allowed. About 25 hits were the empty-value placeholder in tables and
stats, and that is not prose.
The 90 remaining hits now use a period, comma, colon, or parentheses.
They are in product copy, stories, test titles, and scripts.
User-visible changes:
- Browser tab titles use ` | ` as the separator: `Admin | Onyx` and
`<chat name> | Onyx`.
- The invite timeout and invalid-skill messages are now two sentences.
All 9 locale files have the new invalid-skill string, as the i18n
copy-change hook requires.
## How Has This Been Tested?
- `bun run lint` exits 0.
- A fixture string with an em dash in prose gets a report. A lone `"—"`
does not.
- The changed jest files and `src/i18n` pass.
- Pre-commit passes, including the i18n copy-change and TypeScript
checks.
- Not run: the Playwright specs. Only their test titles, log text, and
fixture text changed.
## Additional Options
- [ ] [Optional] Please cherry-pick this PR to the latest release
version.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->
## Summary by CodeRabbit
* **Style**
* Standardized punctuation across app titles, validation and error
messages, and example content, replacing em dashes with clearer
separators.
* Updated invalid-skill messages across supported languages while
preserving their instructions.
* Text checks now flag em dashes in displayed content to help maintain
consistent punctuation.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->