Why do you want to contribute?
I found a single invisible character in one of your Cursor rules and I would
like to fix it.
.cursor/rules/writing-tasks.mdc line 355 has a U+2060 WORD JOINER sitting
between the opening backtick and the identifier:
1. Define a task using `<U+2060>schedules.task()`
It is zero width, so the line reads normally. It has been in the file since the
file was added in March 2025, and GitHub's file view gives no indication it is
there. Any agent that loads the rule receives the extra codepoint inside the
code span, and if the snippet is ever copied into source verbatim, TypeScript
rejects it with TS1127 Invalid character and Node with a SyntaxError. Your docs
also tell users to download this exact file into their own projects
(docs/guides/cursor-rules.mdx, "Installing our Cursor rules", step 2), so the
character ships beyond this repo.
The fix is deleting three bytes. It is the only U+2060 in the repository, and I
would keep the PR to exactly that one line. I have already run pnpm install,
oxfmt --check, oxlint and knip locally against the change; all pass.
I found it with a static analysis tool I maintain for AI agent configuration,
which is how I came to be reading your cursor rules at all. Everything above I
then verified by hand.
Prior contributions or relevant experience
Happy to open the PR as a draft per CONTRIBUTING.md.
Why do you want to contribute?
I found a single invisible character in one of your Cursor rules and I would
like to fix it.
.cursor/rules/writing-tasks.mdcline 355 has a U+2060 WORD JOINER sittingbetween the opening backtick and the identifier:
It is zero width, so the line reads normally. It has been in the file since the
file was added in March 2025, and GitHub's file view gives no indication it is
there. Any agent that loads the rule receives the extra codepoint inside the
code span, and if the snippet is ever copied into source verbatim, TypeScript
rejects it with TS1127 Invalid character and Node with a SyntaxError. Your docs
also tell users to download this exact file into their own projects
(docs/guides/cursor-rules.mdx, "Installing our Cursor rules", step 2), so the
character ships beyond this repo.
The fix is deleting three bytes. It is the only U+2060 in the repository, and I
would keep the PR to exactly that one line. I have already run pnpm install,
oxfmt --check, oxlint and knip locally against the change; all pass.
I found it with a static analysis tool I maintain for AI agent configuration,
which is how I came to be reading your cursor rules at all. Everything above I
then verified by hand.
Prior contributions or relevant experience
across five files in their
.claude/agents/directory, found the same way.analysis for the agent configuration a repo already has: AGENTS.md, CLAUDE.md,
.claude/,.cursor/, hooks, skills, MCP servers, permission rules.Happy to open the PR as a draft per CONTRIBUTING.md.