Omnitool is a prototype Chrome extension allowing fast access to custom utilities.
Omnitool was inspired by my developer experience on a small team supporting a suite of web applications for a Fortune 50 client. Day-to-day operations included tedious, repeated tasks such as:
- Navigating complicated environments.
- Making frequent API calls to trigger cache clears and other operations.
- Inspecting and reproducing web application state.
- Debugging client-initiated service calls.
Team members had previously written a handful of small and useful one-off browser extensions. I designed Omnitool as a way to consolidate these one-off tools in an efficient, flexible interface.
Omnitool has an omnibox-style interface for utility search and invocation. It offers speed, simplicity, and flexibility for tasks lacking support from built-in browser tools.
Some noteworthy features:
- SIMPLICITY
- A unified tool search interface.
- A consistent command-based model for tool invocation.
- A pattern for wrapping pre-existing pages as tools with an 'iframe'.
- FAST
- Opens with a configurable keyboard shortcut (rec. CMD + K).
- Autocomplete for tool search.
- An invocation history with shortcuts for tool selection and re-invocation.
- FLEXIBLE
- Tool definitions that support a wide range of custom tools.
- Optional tool implementations patterns for tool panes, tool execution output, and hybrid text/GUI tool interfaces.
- Tool 'pinning' to allow for multiple tool selection.
The Omnitool 'demo-tools' branch includes tool samples that showcase these features (as shown in the above screenshots).
The tool development pattern is very straightforward. A tool definition consists of a small package of files.
The tool logic and metadata are defined in a JS/TS module.
The optional tool UI is defined in a linked Vue component.
See source on GitHub.
Some outstanding items:
- Omnitool is not listed in the Chrome Web Store. Although I haven't tried yet, this may be impossible due to the store's "single purpose" policy for extensions, which has been in effect since 2013. This policy requires "extensions to have only a single purpose with respect to its subject matter or browser function". In the meantime, the extension may be loaded in developer mode as an "unpacked extension" without impacting functionality.
- Adding a new tool currently requires a rebuild and reload. Hot-swappable tools would enhance ease of tool sharing and developer synchronization.
- Omnitool lacks global and tool-specific configuration options. It does save a small amount of state on close, but adding configuration or customization would require an update.
Thank you for reading!