Shieldmonkey is an open-source, Manifest V3 compliant userscript manager designed with security and auditability as the top priorities.
Shieldmonkey enforces a strict Content Security Policy (CSP) to prevent the extension from communicating with external entities unintentionally. External connections from Background Scripts and injected pages are blocked. Consequently, the following features are intentionally excluded:
- Functions that bypass CORS, such as
GM_xmlHttpRequest - Dynamic loading of external scripts via
require - Automatic backup to cloud services
- Automatic script updates
All updates are performed manually by the user, preventing unintentional code replacement or execution in the background.
To ensure transparency, we follow these build policies:
- The source code of the built extension is intentionally not minified (compressed or obfuscated) to prioritize ease of auditing.
- SourceMaps are included for debugging and verification.
- A minified version is also provided for distribution size considerations, but we recommend using the non-minified version.
We provide manual installation from GitHub as an option for users who prioritize auditability and control. You can choose between the convenience and review process of the Browser Stores, or the security of using a fixed, auditable version built from source.
We prioritize supply chain security by leveraging pnpm configuration and strict versioning policies.
- Strict Version Pinning (package.json): All dependencies in
package.jsonare pinned to exact versions (no^or~). We do not use range specifiers, ensuring that the exact same code is used across all builds. pnpm-workspace.yamlConfiguration:blockExoticSubdeps=true: Prevents installation of dependencies from untrusted sources (e.g., Git URLs), ensuring all packages come from the registry.minimumReleaseAge=10080: We only install packages that have been published for at least 7 days. This mitigates the risk of installing newly compromised packages (zero-day malicious updates).trustPolicy=no-downgrade: Prevents dependencies from being silently downgraded to older versions.
ignore-scripts: Script execution is disabled by default inpnpm. We also explicitly setignore-scripts=truein.npmrcas a fallback fornpmusers, preventing malicious build scripts from running.- Immutable Lockfile: We enforce
lockfile=trueand usepnpm install --frozen-lockfilein CI to ensure reproducible builds.
- Script management (install, edit, delete, disable)
- Editing environment powered by CodeMirror 6
.user.jsformat support- Local import/export
- React 19
- Vite (w/ CRXJS)
- TypeScript
- CodeMirror 6
- IndexedDB
- Vanilla CSS / Sass
-
Clone the repository
git clone https://github.com/shieldmonkey/shieldmonkey.git cd shieldmonkey -
Install dependencies Since
ignore-scripts=trueis set in.npmrc, you can safely install dependencies using:pnpm install
-
Build
pnpm run build
-
Load the extension Open
chrome://extensionsin Chrome, enable Developer Mode, and load the generateddistdirectory.
You can run E2E tests to verify Shieldmonkey's functionality.
# Install Playwright Browsers (first time only)
pnpm exec playwright install chromium --with-deps
# Build the extension
pnpm run build
# Run E2E tests
pnpm run test:e2eTests include:
- Script installation and import
- Script management on the options page (create, edit, delete)
- Backup and restore functionality
- CSP policy verification
- Popup page behavior check

