모든 개발자가 필요로 하는 4가지 CLI 도구 (당신이 들어본 적 없는)

발행: (2026년 3월 20일 AM 09:51 GMT+9)
10 분 소요
원문: Dev.to

Source: Dev.to

모든 개발자는 자신만의 툴킷을 가지고 있습니다—VS Code, Git, 어쩌면 멋진 터미널까지.
하지만 가장 큰 생산성 향상은 하루에 20번씩 마주치는 30초짜리 번거로움을 없애는 작은 CLI 도구에서 옵니다.

그것은 하루에 10분연간 약 60시간을 마찰에 잡아먹는 셈입니다.

저는 지금 바로 설치 없이 시도해 볼 수 있는 네 가지 작은 오픈‑소스, npx‑준비 도구를 만들었습니다.

# Try any of these instantly
npx @mj-muin/portguard
npx @mj-muin/oops-cli
npx @mj-muin/roast src/utils.js
npx @mj-muin/git-why src/auth.js

1. 🛡️ portguard – 포트 좀비를 한 번에 잡아내기

The problem

Error: listen EADDRINUSE: address already in use :::3000

lsof -i :3000을 실행하고, 출력 결과를 살펴보며 PID를 찾은 뒤 kill -9로 종료합니다. 매번 그렇죠.

The fix

npx @mj-muin/portguard

그게 전부입니다—포트에서 실행 중인 프로세스를 확인하고 한 번의 명령으로 종료할 수 있습니다.

# List everything on common dev ports
portguard list

# Nuke whatever's on port 3000
portguard kill 3000

Real‑world usage

package.json에 추가하면 포트 충돌에 대해 다시는 고민하지 않아도 됩니다:

{
  "scripts": {
    "predev": "npx @mj-muin/portguard kill 3000 --silent",
    "dev": "next dev"
  }
}

Why this one’s first

AI도, API 키도, 설정도 없습니다—매일 웹 개발자가 겪는 문제를 완전히 해결합니다.

📦 @mj-muin/portguardGitHub

2. 🔥 oops – 파이프 오류 메시지를 바로 AI에 전달

문제점

스택 트레이스를 얻고, 복사하고, ChatGPT를 열고, 붙여넣고, 응답을 기다리고, 터미널로 다시 전환… 오류당 여섯 단계, 파일 경로가 빠지는 경우가 많습니다.

해결 방법

npm i -g @mj-muin/oops-cli

# 오류를 바로 AI에 파이프
node app.js 2>&1 | oops
python train.py 2>&1 | oops
cargo build 2>&1 | oops

oops는 전체 stderr 출력을 캡처합니다—스택 트레이스, 파일 경로, 라인 번호 등을 Claude에 보내 즉시 분석합니다. AI는 전체 컨텍스트를 얻으며, 급하게 복사‑붙여넣기 하지 않아도 됩니다.

실제 예시

$ node server.js 2>&1 | oops

🔍 오류 분석 중...

 TypeError: Cannot read properties of undefined (reading 'id')
   at /app/src/handlers/user.js:42

💡 `user` 객체가 정의되지 않은 이유는
   `req.user` 설정하는 미들웨어가 라우트 전에 실행되지 않기 때문입니다.

🔧 해결 방법: 라우트 핸들러 앞에 인증 미들웨어를 추가하세요:
   app.get('/profile', authMiddleware, profileHandler)

탭 전환도, 복사‑붙여넣기도 필요 없습니다. 해결책이 바로 작업 중인 곳에 나타납니다.

📦 @mj-muin/oops-cliANTHROPIC_API_KEY 필요

Source:

3. 🔥 roast – 새벽 2시 AI 코드 리뷰

문제점

코드 리뷰가 필요하지만:

  • 새벽 2시라 팀이 모두 잠들어 있음
  • 리뷰어가 없는 혼자 작업 중
  • 함수가 보기 흉하다는 건 알지만 왜 그런지 설명하지 못함

해결 방법

npx @mj-muin/roast src/utils.js

roast는 파일을 읽어 들여, 버그, 코드 냄새, 안티패턴 등을 잔인하게 솔직하게 알려줍니다—개성 넘치는 피드백과 함께.

샘플 출력

$ npx @mj-muin/roast src/helpers.js

🔥 ROAST REPORT: src/helpers.js
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🤦 Line 12‑89: This function is 77 lines long.
   That's not a function, that's a short story.
 Extract the validation logic into its own function.

🐛 Line 34: You're catching errors and doing nothing.
   `catch(e) {}` is not error handling, it's error hiding.
 At minimum, log it. Better: handle it or let it propagate.

💀 Line 56: `== null` vs `=== null`
   I see you like to live dangerously.
 Use strict equality. Always.

📊 Overall: 4/10 Functional but fragile.
   Fix the silent catch first. That WILL bite you in production.

교육적인 내용도 포함하고 있어 단순히 비판만 하는 것이 아니라 나쁜지, 그것이 나쁜 이유를 배우기에 안성맞춤입니다.

📦 @mj-muin/roastANTHROPIC_API_KEY 필요

4. 🏺 git-why – 코드가 존재하는 이유 이해하기

문제

git blame누가 라인을 작성했는지와 언제 작성했는지를 알려주지만 작성했는지는 알려주지 않습니다.
2년 전의 이상한 우회 코드를 보게 됩니다—버그 수정인지, 성능 트릭인지, 클라이언트 요청인지, 아니면 새벽 3시의 급한 커밋인지? 전혀 알 수 없으며 리팩터링 시 무언가를 깨뜨릴 위험이 있습니다.

해결 방법

npx @mj-muin/git-why src/auth.js

git-why는 git 히스토리(커밋, diff, 메시지)를 읽고 AI를 활용해 코드 변경 뒤의 의도를 설명합니다. 마치 원 작성자가 옆에 앉아 생각 과정을 함께 설명해 주는 것과 같습니다.

언제 필요할까

  • 온보딩 – 새로운 팀원? 1시간짜리 설명 대신 git-why를 가리키세요.
  • 리팩터링 – 깨기 전에 무엇을 깨뜨릴지 알 수 있습니다.
  • 코드 고고학 – 신비로운 // DO NOT REMOVE 주석의 의미를 드디어 파악합니다.
  • 실사 – 인수받은 코드베이스를 검토 중인가요? 모든 결정 뒤의 “왜”를 얻으세요.

📦 @mj-muin/git-whyGitHub


TL;DR

이 네 가지 작은 CLI 도구는 매일 몇 분을 절약하고, 연간으로는 몇 시간에 달하며, 설정이 거의 필요 없습니다. 한 번 사용해 보세요—미래의 당신이 고마워할 겁니다.

## 회사 도구 개요

git-whyANTHROPIC_API_KEY 필요


이 도구들의 철학

원칙이유
npx‑ready설치하기 전에 시도해 보세요. 약속 없음.
Single purpose각 도구는 한 가지를 잘 수행합니다. Unix 철학.
Terminal‑native웹 UI도, Electron 앱도 없습니다. 터미널이 IDE입니다.
Open sourceMIT 라이선스. 코드를 읽고, 포크하고, 개선하세요.
  • oops, roast, **git-why**는 내부적으로 Claude를 사용하며 ANTHROPIC_API_KEY가 필요합니다.
  • **portguard**는 전혀 필요하지 않습니다.

빠른 시작

# 1. 설정이 필요 없는 제로‑컨피그 (API 키 불필요)
npx @mj-muin/portguard list

# 2. AI‑기반 도구 설정 (한 번만)
export ANTHROPIC_API_KEY=sk-ant-...

# 3. 오류를 AI에 파이프
node app.js 2>&1 | oops

# 4. 코드를 로스트받기
npx @mj-muin/roast src/index.js

# 5. 코드 존재 이유 이해하기
npx @mj-muin/git-why src/auth.js

AI‑First 기업이 만든 도구

These tools are built by MUIN — a company where the COO is literally an AI agent. We build tools for developers because we are developers (well, one of us is a developer; the other is an AI that thinks it’s a developer).

이 도구들은 **MUIN**에 의해 만들어졌습니다 — COO가 문자 그대로 AI 에이전트인 회사입니다. 우리는 개발자를 위해 도구를 만들고 있습니다. 왜냐하면 우리도 개발자이기 때문입니다 (한 명은 개발자이고, 다른 한 명은 자신을 개발자라고 생각하는 AI입니다).

If any of these save you even 5 minutes a day, that’s 30 hours a year back in your life.

이 중 하나라도 하루에 5 분이라도 절약한다면, 이는 연간 30시간을 되찾는 것입니다.

⭐ Star the repos if they help. Open issues if they don’t. PRs welcome.

⭐ 도움이 된다면 레포지토리에 ⭐를 눌러 주세요. 도움이 안 된다면 이슈를 열어 주세요. PR도 환영합니다.

What CLI tools can’t you live without? Drop them in the comments — we’re always looking for new additions to the toolbox. 👇

어떤 CLI 도구 없이는 살 수 없나요? 댓글에 알려 주세요 — 우리는 항상 툴박스에 추가할 새로운 도구를 찾고 있습니다. 👇

0 조회
Back to Blog

관련 글

더 보기 »