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
- Pick an idea from the most-voted requests (or open an issue first if you’re unsure it fits).
- Scaffold it:
git clone https://github.com/RaydanAridiCS/toolwright cd toolwright npm install npm run new-tool my-tool-name - Write the logic as pure functions in
packages/core/srcand test them. Keep it free of React and the DOM so it can be reused and tested in Node. - Build the UI in
packages/tools/src/tools/my-tool-name/Tool.tsx. For text-in/text-out tools, theTransformToolcomponent gives you input, output, options, copy, download and shareable links in about 20 lines. - 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
corefunctions 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.