Skip to content
Toolwright

Contribute

The easiest way to add to Toolwright is to add a tool. Each one lives in its own folder, so you never need to touch the rest of the app.

Add a tool in five steps

  1. Pick an idea from the most-voted requests (or open an issue first if you’re unsure it fits).
  2. Scaffold it:
    git clone https://github.com/RaydanAridiCS/toolwright
    cd toolwright
    npm install
    npm run new-tool my-tool-name
  3. Write the logic as pure functions in packages/core/src and test them. Keep it free of React and the DOM so it can be reused and tested in Node.
  4. Build the UI in packages/tools/src/tools/my-tool-name/Tool.tsx. For text-in/text-out tools, the TransformTool component gives you input, output, options, copy, download and shareable links in about 20 lines.
  5. Run the checks and open a pull request:
    npm run lint && npm run typecheck && npm test

The rules of the workshop

  • No network calls from tools. Input must never leave the device. The Content Security Policy blocks it and the end-to-end tests fail if a tool tries.
  • Be honest in the copy. Say what the tool can’t do. Never overstate security.
  • Test the logic. New core functions need unit tests, including edge cases and bad input.
  • Accessible by default. Label every control, support keyboard use, and don’t rely on color alone.
  • Keep dependencies light. Prefer platform APIs. New packages need a clear reason.

Other ways to help

  • Report bugs or privacy concerns on GitHub.
  • Improve documentation and tool descriptions.
  • Check tools on your devices and tell us what breaks.
  • Translate or review the tool help text.

Full guides (architecture, writing a tool, testing) are in the docs folder. Thank you for helping build it.