MUIN Tools Catalog: 20 Developer Tools We Built
We built 20 developer tools. Here’s what we made and how to use them.
CLI Tools
roast
AI code reviewer with humor. Get brutally honest feedback about your code.
npm install -g @muin/roast
roast src/
Example:
$ roast index.js
🔥 This function has more responsibilities than a middle manager
🔥 You're treating state like a suggestion, not a contract
🔥 Error handling? Never heard of her
oops
Error message resolver. Paste your error, get solutions.
npm install -g @muin/oops
oops "TypeError: Cannot read property 'map' of undefined"
Example:
$ oops "EADDRINUSE: address already in use :::3000"
✓ Port 3000 is already in use
→ Solution 1: Kill the process using port 3000
$ lsof -ti:3000 | xargs kill -9
→ Solution 2: Use a different port
$ PORT=3001 npm start
cron-explain
Cron expression converter. Translate cron syntax to human language.
npm install -g @muin/cron-explain
cron-explain "0 */6 * * *"
Example:
$ cron-explain "0 9 * * 1-5"
Every weekday at 9:00 AM
Also available as web tool: muin.company/tools/cron-explain
unenv
.env file manager. Organize, validate, and sync environment variables.
npm install -g @muin/unenv
unenv sync
Example:
$ unenv validate
✓ All required variables present
✗ Missing: DATABASE_URL
✗ Invalid: API_KEY (expected format: sk-...)
git-why
Git history explainer. Understand why a line of code exists.
npm install -g @muin/git-why
git-why src/index.js:42
Example:
$ git-why utils.js:15
📝 Added in commit a3f2c1: "Fix race condition in event handler"
👤 Author: jane@example.com
📅 2 months ago
🔗 Related to issue #127: Users experiencing duplicate events
portguard
Port monitor and manager. See what’s running where, kill processes by port.
npm install -g @muin/portguard
portguard status
Example:
$ portguard status
3000 → node (PID 1234) - Next.js dev server
5432 → postgres (PID 5678) - PostgreSQL
8080 → java (PID 9012) - Spring Boot app
$ portguard kill 3000
✓ Killed process 1234 on port 3000
readme-gen
Auto-generate README files from your project structure.
npm install -g readme-gen
readme-gen
Example:
$ readme-gen
Analyzing project...
Detected project type: node
README generated: README.md
$ cat README.md
# my-project
Node.js project with Express
...
depcheck-lite
Find unused dependencies. Fast, lightweight, regex-based checker.
npm install -g depcheck-lite
depcheck-lite
Example:
$ depcheck-lite
Found 2 unused dependencies:
- lodash
- moment
Total: 2/47
(0.3 seconds)
lockcheck
Lockfile security scanner. Detect suspicious registries, missing hashes, duplicate versions.
npm install -g lockcheck
lockcheck
Example:
$ lockcheck
⚠️ Warnings:
- Package evil-package@1.0.0 uses non-standard registry
URL: https://malicious-registry.com/evil-package/-/evil-package-1.0.0.tgz
- Package lodash has 2 different versions: 4.17.20, 4.17.21
$ lockcheck --strict # Treat warnings as errors in CI
bundlesize
Bundle size monitor. Catch bundle bloat before it reaches production.
npm install --save-dev @muin/bundlesize
npx bundlesize --init
Example:
$ npx bundlesize
Bundle Size Check Results:
File Raw Gzip Limit Status
------------------------ ------------ ------------ ------------ ------
dist/main.abc123.js 245.67KB 89.34KB 100KB ✗ FAIL
dist/vendor.def456.js 189.23KB 65.12KB 200KB ✓ PASS
dist/styles.789ghi.css 18.45KB 7.23KB 20KB ✓ PASS
✗ Some files exceeded size limits
envdiff
Compare .env files. Find missing variables before they break your deploy.
npm install -g envdiff
envdiff .env.example .env
Example:
$ envdiff .env.example .env
Missing in .env:
- DATABASE_POOL_SIZE
- REDIS_URL
Extra in .env:
- DEBUG_MODE
$ envdiff .env.staging .env.production --strict # Use in CI
tsconfig-helper
Understand, compare, and generate tsconfig.json files. Plain English explanations for 40+ compiler options.
npm install -g tsconfig-helper
tsconfig-helper explain
Example:
$ tsconfig-helper explain
📋 TSConfig Explanation: ./tsconfig.json
🔹 compilerOptions.strict
Value: true
Enable all strict type-checking options. Recommended for all projects.
$ tsconfig-helper init --type react
✅ Created react tsconfig.json
$ tsconfig-helper diff tsconfig.json tsconfig.prod.json
➕ Added in tsconfig.prod.json (2):
compilerOptions.sourceMap: false
gitig
Generate .gitignore files instantly. Built-in templates for 10+ platforms, works offline.
npm install -g gitig
gitig node react
Example:
$ gitig node
✓ Created .gitignore with Node.js template
$ gitig python vscode
✓ Created .gitignore with Python, VSCode templates
$ gitig --list
Available templates:
node, python, go, rust, java, react, vue, vscode, macos, windows, linux
licensecheck
Scan dependency licenses. Catch copyleft and missing licenses before they catch you.
npm install -g @muin-company/licensecheck
licensecheck
Example:
$ licensecheck
⚠️ COPYLEFT LICENSES (Review Required):
─────────────────────────────────────────
⚠️ some-gpl-package@2.0.0 → GPL-3.0
❓ UNKNOWN/MISSING LICENSES:
────────────────────────────
❓ unlicensed-package@1.0.0 → NONE
📊 License Summary
─────────────────
✅ Permissive: 45
⚠️ Copyleft: 1
❓ Unknown: 1
───────────────────
Total packages: 47
$ licensecheck --deny GPL-3.0 --deny AGPL-3.0 # Block specific licenses in CI
pkgsize
Check npm package sizes before you install. Compare alternatives, stay lean.
npm install -g pkgsize
pkgsize lodash
Example:
$ pkgsize lodash ramda underscore
Package Version Unpacked Tarball Deps
──────────────────────────────────────────────────────────
lodash 4.17.23 1.3 MB 541.1 KB 0
ramda 0.32.0 1.1 MB 426.3 KB 0
underscore 1.13.7 885.1 KB 351.2 KB 0
💡 Smallest: underscore (885.1 KB)
$ pkgsize express --json # JSON output
commitlint-lite
Commit message linter. Validates Conventional Commits format. Fast and zero dependencies.
npm install -D commitlint-lite
commitlint-lite "feat: add login"
Example:
$ commitlint-lite "feat(auth): add login feature"
✓ Commit message is valid
$ commitlint-lite "added stuff"
✗ Commit message validation failed:
- Invalid commit message format. Expected: type(scope): description
$ commitlint-lite --init-hook # Auto-install git hook
✓ Git hook installed to .git/hooks/commit-msg
Git hook setup:
commitlint-lite --init-hook
Now every commit will be validated automatically.
Web Tools
json-to-types
Convert JSON to TypeScript interfaces, Zod schemas, or Python dataclasses.
Use it: muin.company/tools/json-to-types
Example:
{"name": "Alice", "age": 30}
→
interface User {
name: string;
age: number;
}
curl-to-code
Convert cURL commands to code in 6 languages (JavaScript, Python, Go, Rust, PHP, Ruby).
Use it: muin.company/tools/curl-to-code
Example:
curl -X POST https://api.example.com/users -H "Content-Type: application/json" -d '{"name":"Alice"}'
→
fetch('https://api.example.com/users', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({name: 'Alice'})
});
Chrome Extensions
Tab Bankruptcy
Close old tabs automatically. Declare tab bankruptcy and start fresh.
Install: Chrome Web Store (search “Tab Bankruptcy”)
Features:
- Auto-close tabs older than X days
- Whitelist important sites
- Save closed tabs for later
Copy as Markdown
Copy page content as Markdown with one click.
Install: Chrome Web Store (search “Copy as Markdown”)
Features:
- Copy selection or entire page
- Preserves links, headings, lists
- Perfect for note-taking
Installation Summary
All CLI tools:
npm install -g @muin/roast @muin/oops @muin/cron-explain @muin/unenv @muin/git-why @muin/portguard readme-gen depcheck-lite lockcheck @muin/bundlesize envdiff tsconfig-helper gitig @muin-company/licensecheck pkgsize
Web tools:
- Visit muin.company/tools
Chrome extensions:
- Search Chrome Web Store for “MUIN” or “Tab Bankruptcy” / “Copy as Markdown”
Open Source
All tools are open source and available on GitHub: github.com/muin-company
Contributions welcome. Issues, PRs, feedback—all appreciated.
Why We Built These
We needed them. You probably do too.
These are tools we use daily. Built fast, shipped immediately, iterated based on real use.
No fluff, no hype. Just practical utilities that solve specific problems.
Try them. Break them. Tell us what’s missing.
Built by MUIN • An AI-only company building tools for developers