|
| 1 | +# Cursor Rules |
| 2 | + |
| 3 | +## Writing Style |
| 4 | + |
| 5 | +- **No em dashes.** Never use `—` (em dash). Use a hyphen `-`, a comma, a period, or rewrite the sentence. |
| 6 | +- **No filler words.** Cut "basically", "simply", "just", "actually", "in order to", "leverage", "utilize". Say what you mean. |
| 7 | +- **No hedge stacking.** One qualifier max. Not "it might potentially possibly help" but "it may help". |
| 8 | +- **Active voice.** "The server returns X" not "X is returned by the server". |
| 9 | +- **Short sentences.** If a sentence has more than one comma-separated clause, split it. |
| 10 | +- **No marketing tone.** Don't say "powerful", "seamless", "robust", "comprehensive", "elegant". Describe what it does, not how great it is. |
| 11 | +- **Parallel structure in lists.** Every item in a bullet list or table column should use the same grammatical form (all verb phrases, all noun phrases, etc.). |
| 12 | +- **Code over prose.** When explaining how something works, show a code example first. Add prose only if the code isn't self-explanatory. |
| 13 | + |
| 14 | +## Skill File Conventions |
| 15 | + |
| 16 | +- Every skill lives in `skills/<skill-name>/SKILL.md` |
| 17 | +- YAML frontmatter is required with `name` (matching the directory name) and `description` (one line, when-to-use guidance) |
| 18 | +- Required sections in order: Trigger, Required Inputs, Workflow, Key References (if applicable), Example Interaction, MCP Usage, Common Pitfalls, See Also |
| 19 | +- Keep `## MCP Usage` present even for non-MCP skills (state that no MCP tool exists yet) |
| 20 | + |
| 21 | +## Rule File Conventions |
| 22 | + |
| 23 | +- Rules use `.mdc` extension in the `rules/` directory |
| 24 | +- YAML frontmatter must include `description` and `alwaysApply` (boolean) |
| 25 | +- If `alwaysApply` is false, include `globs` to scope when the rule activates |
| 26 | + |
| 27 | +## Mobile Development Conventions |
| 28 | + |
| 29 | +- Default framework: Expo (React Native) with TypeScript |
| 30 | +- Flutter support is planned but not yet implemented |
| 31 | +- Prefer Expo SDK libraries over raw React Native community packages when available |
| 32 | +- Use file-based routing (Expo Router) over React Navigation stack-based routing |
| 33 | +- Always include platform checks (`Platform.OS`) when writing platform-specific code |
| 34 | +- Never hardcode API keys, signing credentials, or tokens in source files |
| 35 | + |
| 36 | +## MCP Tool Naming |
| 37 | + |
| 38 | +- All MCP tool names use `mobile_camelCase` prefix (e.g. `mobile_checkDevEnvironment`, `mobile_scaffoldProject`) |
| 39 | +- Each tool lives in its own file under `mcp-server/src/tools/` |
| 40 | +- Each tool file exports `register(server: McpServer): void` |
| 41 | +- Use `.js` extension on all imports (ESM) |
| 42 | + |
| 43 | +## Release Checklist |
| 44 | + |
| 45 | +When preparing a release: |
| 46 | +1. Update version in `.cursor-plugin/plugin.json` |
| 47 | +2. Update version in `mcp-server/package.json` |
| 48 | +3. Update version in `packages/mobile-dev-tools/package.json` |
| 49 | +4. Update `CHANGELOG.md` with new entry |
| 50 | +5. Update `ROADMAP.md` current version marker |
| 51 | +6. Update `CLAUDE.md` version reference |
| 52 | +7. Verify counts in `plugin.json` description match disk |
| 53 | +8. Run `pytest tests/ -v` to verify all tests pass |
| 54 | +9. Build MCP server: `cd mcp-server && npm run build` |
0 commit comments