Skip to content

Conversation

@tofrankie
Copy link
Contributor

@tofrankie tofrankie commented Sep 8, 2025

🎯 Motivation

When developing Raycast extensions, extension titles often contain proprietary names (brands, app names) that have specific capitalization requirements. For example, the social app "WeChat" should be written as WeChat (not Wechat), similar to how iOS has specific capitalization.

Currently, the prefer-title-case rule enforces standard title case formatting, which can conflict with these proprietary naming conventions (except for built-in words like iOS, GitHub, macOS, etc. as defined in here).

Example

{
  "$schema": "https://www.raycast.com/schemas/extension.json",
  "name": "wechat-devtool",
  "title": "WeChat DevTool"
}

This triggers a warning:

$ npm run lint

> [email protected] lint
> ray lint

wait  - validate package.json file ... /Users/frankie/Web/Git/raycast/extensions/extensions/wechat-devtool/package.json
  4:11  warning  Extension's title has to be Title Cased. Expected "Wechat Devtool"
ready  - validate package.json file
ready  - validate extension icons
ready  - validate extension metadata
ready  - run ESLint
ready  - run Prettier 3.6.2

🛠️ Solution

Add an extraFixedCaseWords configuration option to the prefer-title-case rule that allows developers to specify custom fixed-case words for proprietary names.

Usage:

{
  "rules": {
    "@raycast/prefer-title-case": ["warn", {
      "extraFixedCaseWords": ["WeChat"]
    }]
  }
}

With this configuration, WeChat is recognized as valid, eliminating the warning.

This enhancement makes the ESLint plugin more flexible for real-world extension development while maintaining the benefits of consistent title case formatting.

@mathieudutour
Copy link
Member

Nice! Thanks

@mathieudutour mathieudutour merged commit 566de99 into raycast:main Oct 2, 2025
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants