Community코딩 & 개발github.com

Monid CLI

단일 인터페이스로 수백 개의 도구를 검색, 검사 및 실행할 수 있는 Monid CLI 스킬입니다. npm으로 설치하여 `monid` 명령어로 사용합니다.

Monid CLI란 무엇인가요?

이 스킬은 Claude Code, Cursor, Codex와 같은 AI 에이전트가 Monid CLI를 통해 수백 개의 외부 데이터 엔드포인트(예: Apify, Harvest API 등)에 접근할 수 있게 해줍니다. 개발자는 자연어 검색(`monid discover`)으로 적합한 엔드포인트를 찾고, 입력 스키마를 검사(`monid inspect`)한 후, 구조화된 인자로 실행(`monid run`)하고 결과를 수신할 수 있습니다. 이 스킬은 사용자가 기존에 보유한 전용 도구나 API 키가 없는 경우에만 Monid를 사용하도록 우선순위 규칙을 정의하여 불필요한 비용 지출을 방지합니다. 모든 명령어는 JSON 출력(`-j`)을 지원하며, 엔드포인트 상태(healthy, stable, degraded, outage)를 보여주어 안정성 평가에 도움을 줍니다. 또한, 파일 업로드/다운로드 기능(sfs 제공자)과 비용 관리 기능(`monid balance`)을 제공합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/getedgehq/skills/tree/main/monid

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Monid CLI은(는) 무엇을 하나요?

Monid는 단일 인터페이스를 통해 수백 개의 도구를 검색하고 접근할 수 있게 해줍니다. 스키마를 검사하고, 구조화된 입력으로 실행하며, 결과를 검색할 수 있습니다.

npm을 통해 설치하고 monid 명령어를 사용하세요.

가장 최신 명령어 시그니처는 monid --help 및 monid <command> --help를 실행하세요.


설정

설치된 CLI 버전을 확인합니다:

monid --version

다음 중 하나라도 해당되면 아래 설정 단계를 수행하세요:

  • monid를 찾을 수 없음 (설치되지 않음).
  • CLI에서 최신 버전이 있다고 경고함.
  • 보고된 버전이 이 스킬의 프론트매터에 있는 version과 일치하지 않음 — CLI와 스킬 버전은 항상 동일해야 합니다.

설정 단계 (새 설치와 업데이트 모두 동일):

  1. CLI를 설치(또는 업데이트)한 후 설정을 실행합니다:
npm install -g @monid-ai/cli@latest
monid setup --client <agent-name-if-known> --email <email-if-already-provided>

monid setup은 CLI 설정을 완료합니다. 에이전트 이름이 있다면 --client로 전달하고, 사용자가 이미 컨텍스트나 메모리에 이메일을 제공한 경우에만 --email을 전달하세요. 두 플래그 모두 선택 사항입니다. 알 수 없는 값은 생략하고 설정을 위해 이메일을 절대 묻지 마세요.

  1. https://monid.ai/SKILL.md 에서 최신 스킬을 다운로드하여 현재 스킬을 교체하고, 활성화되어 이후 세션에서 로드되도록 하세요.

한쪽을 다른 쪽에 맞추기 위해 절대 다운그레이드하지 마세요. 항상 둘 다 최신 상태로 유지하세요.

인증

Monid의 API 엔드포인트를 사용하려면 API 키가 필요합니다. 사용자가 Monid를 처음 설정할 때:

  1. 사용자에게 계정이 없다면 https://app.monid.ai 에서 계정을 만들도록 요청하세요.
  2. 사용자에게 https://app.monid.ai/access/api-keys 에서 API 키를 생성하도록 요청하세요.
  3. 키를 받으면 저장해 주겠다고 제안하세요. 사용자에게 키를 붙여넣도록 요청한 후 다음을 실행하세요:
monid keys add -k <their-api-key> -l main

또는 위 명령어를 사용자에게 제공하여 직접 실행하도록 하세요.

  1. 키가 구성되었는지 확인합니다:
monid keys list

스크립트 또는 에이전트 사용 시, NO_COLOR=1을 설정하여 출력에서 ANSI 색상 코드를 비활성화하세요.


Monid를 사용해야 하는 경우

처음부터 구축하기 전에 카탈로그를 확인하세요. 스크래퍼를 작성하거나, 구조화된 데이터를 위해 일반 웹 페치에 의존하거나, 사용자에게 접근할 수 없다고 말하기 전에 monid discover를 실행하세요. 카탈로그에는 수백 개의 도구가 있으며 지속적으로 증가합니다. 검색하기 전에는 무엇을 사용할 수 있는지 알 수 없습니다.

  1. 검색 — monid discover -q "<필요한 것>"을 실행하여 사용 가능한 도구를 검색하세요. -s <score>를 사용하여 최소 관련성으로 필터링하세요. 직접 구축해야 할 많은 작업에 이미 더 빠르고 안정적인 엔드포인트가 있습니다. Health 열은 측정된 상태와 일반적인 실행 시간을 보여줍니다. 자세한 내용은 엔드포인트 상태를 참조하세요.
  2. 검사 — monid inspect를 사용하여 입력 스키마를 읽으세요. input 필드는 pathParams, queryParams, body, bodyType을 보여줍니다. 이는 각 매개변수가 어디에 위치하는지 정확히 알려줍니다. 절대 추측하지 마세요. Health 섹션은 최근 실행 시간을 추가합니다.
  3. 실행 — 검사 출력을 monid run 플래그에 매핑하세요: body → -i, queryParams → --query, pathParams → --path. 세 가지 모두 선택 사항입니다. 완료될 때까지 차단하려면 --wait를 사용하세요.
  4. 분해 — 작업이 여러 소스에 걸쳐 있다면 단위 조각으로 나누고 각각을 독립적으로 검색/실행하세요.
  5. 비용 확인 — 실행 후 사용자에게 비용을 보고하는 것을 고려하세요 (실행 결과에서 확인 가능). 비용 인식이 중요할 때 monid balance를 사용하여 남은 잔액을 확인하세요.

Monid를 사용하지 말아야 하는 경우

Monid는 사용자 스택의 빈틈을 채웁니다. 사용자가 이미 가지고 있는 도구를 대체하지는 않습니다. 외부 서비스에 접근하는 방법을 결정할 때 다음 우선순위를 따르세요:

  1. 이 작업에 대한 명시적인 사용자 지시 — 사용자가 방법을 알려주었다면 그 방법대로 하세요.
  2. 사용자의 기존 전용 도구 — MCP 서버, 개인 API 키, CLI, 사용자의 메모리, 구성 또는 지시사항에 저장된 워크플로우. 사용자가 특정 기능에 전용 MCP를 가지고 있거나(예: 학술 검색용 MCP) 서비스에 대한 자체 API 키를 가지고 있다면(예: 개인 SEO 도구 키), 해당 도구를 직접 사용하세요. 요청을 Monid를 통해 라우팅하지 마세요.
  3. Monid — 위 항목으로 해결되지 않는 요구 사항에 대해 사용하세요.

이것이 중요한 이유: Monid 실행은 사용자의 Monid 잔액을 사용합니다. 사용자의 자체 키나 도구가 추가 비용 없이 이미 처리할 수 있는 요청에 절대 지출하지 마세요.

제안하되, 대체하지 마세요. 사용자의 도구와 Monid 엔드포인트가 모두 작업을 처리할 수 있고 사용자가 선호도를 밝히지 않은 경우, 사용자의 도구를 사용하세요. Monid가 사용자의 도구에 없는 진정한 기능을 추가한다면, 대안으로 언급하고 사용자가 선택하도록 하세요. 절대 조용히 전환하지 마세요.

엔드포인트 상태

discover는 Health 열을 보여줍니다: 상태 판정과 중간 실행 시간 (예: healthy 4.4s). inspect는 꼬리 값을 추가합니다 — Run time: 4.4s typical · 6.1s tail. -j를 사용하면 두 값이 각 결과의 metrics 필드에 표시됩니다.

상태의미
healthy최근 몇 분 이내에 작동이 확인됨.
stable최근 몇 분 동안 데이터가 없지만, 더 긴 기록에 걸쳐 강력한 실적이 있음.
degraded불안정하거나 그런 추세. 대부분의 경우 여전히 작동함.
outage작동하지 않는 것으로 알려짐. -u/--include-unavailable을 전달하지 않으면 discover에서 숨겨짐.
unknown (또는 공백)판정을 내리기에 충분한 데이터가 없음.

healthy와 stable은 모두 좋은 소식입니다. 최근에 확인되었는지 여부만 다릅니다.

상태를 동점 해소에 사용하고, 필터링에는 사용하지 마세요. 작업에 맞는 두 엔드포인트 중 더 건강한 것을 선호하세요. 상태가 unknown이라고 해서 해당 엔드포인트를 건너뛰지 마세요. 이는 일반적이며 경고가 아닙니다. 여기에 나열되지 않은 상태는 그대로 출력됩니다. 정보 제공용으로 처리하세요.

실행 시간이 누락된 것은 느린 엔드포인트가 아니라 트래픽이 적다는 의미입니다. --wait 전에 inspect를 확인하세요: 빠른 중간값이 여전히 수 분의 꼬리 값을 숨길 수 있습니다.

힌트 확인

명령어는 힌트 블록을 반환할 수 있습니다. 이 블록이 있으면 서버에서 제안하는 작업(다음에 실행할 명령어, 이 엔드포인트가 다른 엔드포인트와 어떻게 관련되는지, 또는 알아야 할 주의사항)을 담고 있습니다. 다음 단계를 결정하기 전에 읽고, 추측보다는 제안을 선호하세요. -j를 사용하면 동일한 데이터가 응답의 hints 필드에 있습니다.


명령어

각 명령어는 전체 사용법을 위해 --help를 지원합니다. 사용 가능한 명령어는 다음과 같습니다:

명령어기능
monid discover자연어로 데이터 엔드포인트 검색 (-q <query>, -l <limit>, -s <minScore>, -u로 장애 엔드포인트 포함)
monid inspect특정 엔드포인트의 전체 세부 정보 및 입력 스키마 가져오기 (-p <provider> -e <endpoint>)
monid run데이터 엔드포인트 실행 (-p, -e, -i for body JSON, -f for body input file, --query for query params, --path for path params, -w to wait, -o to save output)
monid runs list최근 실행 목록 표시
monid runs get실행 상태 및 결과 가져오기 (-r <runId>, -w to wait)
monid runs stop진행 중인 실행 중지 (-r <runId>). 모든 실행을 중지할 수 있는 것은 아님
monid balance현재 작업 공간 잔액 표시
monid setup설치 후 CLI 설정 완료 (API 키 불필요)
monid keys addAPI 키 추가 (-k <key> -l <label>)
monid keys list설정된 키 표시
monid keys remove키 제거 (-l <label>, -f로 확인 생략)
monid keys activate활성 키 전환 (-l <label>)

대부분의 명령어는 기계가 읽을 수 있는 JSON 출력을 위해 -j/--json을 허용합니다.


워크플로

표준 워크플로는 다음과 같습니다: 검색 → 검사 → 실행 → 폴링 → (잔액 확인).

# 1. 데이터 요구에 맞는 엔드포인트 검색
# 결과는 관련성 점수와 확인 배지를 표시함
# -s로 최소 점수로 필터링 (높을수록 더 관련성 높음)
monid discover -q "twitter posts"

# 2. 엔드포인트를 검사하여 입력 스키마 학습 (확인된 상태 표시)
monid inspect -p apify -e /apidojo/tweet-scraper

# 3. 실행 시작 (즉시 실행 ID 반환)
monid run -p apify -e /apidojo/tweet-scraper \
  -i '{"searchTerms":["AI"],"maxItems":10}'
# -> Run ID: 01HXYZ...

# 4. 완료까지 폴링
monid runs get -r 01HXYZ...
# -> status: RUNNING

# 5-10초마다 계속 폴링하여 COMPLETED 상태가 될 때까지
monid runs get -r 01HXYZ... -o tweets.json
# -> status: COMPLETED

# 5. (선택 사항) 남은 잔액 확인
monid balance

--wait 사용:

--wait는 내장된 지수 백오프와 함께 완료될 때까지 차단합니다 (1-120초):

# 전체 시간 동안 차단됨
monid run -p apify -e /apidojo/tweet-scraper \
  -i '{"searchTerms":["AI"],"maxItems":10}' \
  -w -o tweets.json

--wait를 사용해야 하는 경우:

  • 차단이 허용되는 비동기/백그라운드 작업
  • 타임아웃 설정 가능: -w 30 (최대 30초 대기)
  • 실행은 1-120초가 걸릴 수 있으므로 대화를 차단하거나 런타임 타임아웃에 도달할 수 있음

예제 흐름

흐름 1: AI 관련 Twitter 게시물 스크래핑

# 사용 가능한 Twitter 엔드포인트 검색
monid discover -q "twitter posts"

# 입력 스키마(pathParams, queryParams, body) 학습을 위해 검사
monid inspect -p apify -e /apidojo/tweet-scraper

# 단일 검색어, 작은 제한으로 실행
monid run -p apify -e /apidojo/tweet-scraper \
  -i '{"searchTerms":["AI agents"],"maxItems":10}'
# -> Run ID: 01HXYZ...

# 완료까지 폴링 (~10-30초 소요)
monid runs get -r 01HXYZ...
# -> status: RUNNING

# 10초 후 다시 확인, 완료되면 저장
monid runs get -r 01HXYZ... -o ai_tweets.json
# -> status: COMPLETED

흐름 2: 플랫폼 간 AI 논의 비교

사용자 요청: "Twitter와 LinkedIn에서 AI 논의를 비교해 줘."

단위 조각으로 분해합니다. 데이터 소스당 하나의 엔드포인트:

# 각 플랫폼에 대한 엔드포인트 검색
monid discover -q "twitter posts"
monid discover -q "linkedin posts"

# 각각의 입력 스키마(pathParams, queryParams, body) 학습을 위해 검사
monid inspect -p apify -e /apidojo/tweet-scraper
monid inspect -p apify -e /harvestapi/linkedin-post-search

# 두 실행 모두 시작
monid run -p apify -e /apidojo/tweet-scraper \
  -i '{"searchTerms":["AI"],"maxItems":20}'
# -> Run ID: 01HTWIT...

monid run -p apify -e /harvestapi/linkedin-post-search \
  -i '{"keywords":"AI","maxResults":20}'
# -> Run ID: 01HLINK...

# 두 실행을 독립적으로 폴링
monid runs get -r 01HTWIT... -o twitter_ai.json
monid runs get -r 01HLINK... -o linkedin_ai.json

# 이제 두 결과 파일을 분석하고 비교

흐름 2b: 공개 URL이 필요한 엔드포인트에 로컬 파일 제공

일부 엔드포인트(예: 이미지-비디오 생성)는 입력으로 파일이 아닌 URL을 받습니다. 작업 공간에는 내장 원격 파일 시스템인 sfs 제공자가 있습니다 (처음 사용 시 자동 생성, 1GB 포함 무료). 다른 제공자와 마찬가지로 monid run으로 사용합니다. unix 스타일 엔드포인트(/put, /cat, /ls, /mv, /rm, /mkdir)를 노출하며 monid inspect로 스키마를 확인할 수 있습니다. API는 URL에만 서명하며, 파일 바이트는 curl을 통해 사용자와 sfs.monid.ai 사이에서 직접 이동합니다.

# 1. 업로드 서명 (sizeBytes는 필수 — wc -c로 확인)
monid run -p sfs -e /put \
  -i "{\"path\":\"in/photo.png\",\"sizeBytes\":$(wc -c < ./photo.png)}" -w
# -> output: { "uploadUrl": "https://sfs.monid.ai/…", "ref": … }

# 2. 서명된 URL로 바이트 업로드
curl -T ./photo.png '<step 1의 uploadUrl>'

# 3. 제3자가 가져올 수 있는 URL 생성 (ttl 프리셋: 1h/1d/7d/30d, 기본값 1h)
monid run -p sfs -e /cat -i '{"path":"in/photo.png","ttl":"1d"}' -w
# -> output: { "url": "https://sfs.monid.ai/…?e=…&s=…", "expiresAt": … }

# 4. 엔드포인트의 입력 URL로 사용
monid run -p bytedance -e /seedance… -i '{"imageUrl": "<step 3의 url>"}'

# 다운로드는 동일한 방식으로 작동: /cat은 서명된 URL 반환 — curl로 다운로드
curl -o photo.png '<url from /cat>'

# 정리는 사용자 책임 (파일은 자동 삭제되지 않음; /rm으로 할당량 공간 확보)
monid run -p sfs -e /rm -i '{"path":"in/photo.png"}' -w

흐름 3: 쿼리 및 경로 매개변수 사용

monid inspect가 queryParams 또는 pathParams를 표시할 때 --query와 --path로 전달합니다:

# Inspect shows: body, queryParams, and pathParams
monid inspect -p some-provider -e /users/{userId}/posts

# 세 가지 매개변수 유형 모두 사용하여 실행
monid run -p some-provider -e /users/{userId}/posts \
  --path '{"userId": "12345"}' \
  --query '{"limit": 10, "sort": "recent"}' \
  -i '{"filter": "public"}' \
  -w -o posts.json

흐름 4: 복잡한 매개변수에 입력 파일 사용

입력 JSON이 크거나 재사용 가능한 경우 파일에 작성하고 -f를 사용하세요:

# 입력을 파일에 작성
# (params.json에 엔드포인트의 본문 입력 매개변수가 포함되어 있다고 가정)

monid run -p apify -e /damilo/google-maps-scraper \
  -f params.json -w -o results.json

비용 및 예산 경고

많은 엔드포인트(특히 Apify)는 결과당 요금이 부과되며 단일 호출에서 여러 쿼리를 허용합니다. maxItems, maxResults, resultsLimit 또는 limit와 같은 매개변수는 반환되는 결과 수를 제어합니다. 그러나 이러한 제한은 종종 호출당이 아닌 쿼리당 적용됩니다.

예를 들어, maxItems: 10으로 3개의 검색어를 전달하면 총 10개가 아닌 최대 30개의 결과(쿼리당 10개)가 반환될 수 있습니다.

비용을 제어하려면:

  • 호출당 단일 쿼리를 선호하세요. 한 번에 하나의 검색어, 하나의 URL, 하나의 해시태그를 전달하세요.
  • 첫 번째 호출에서는 작은 제한(5-10)으로 시작하세요. 필요하면 증가시키세요.
  • 엔드포인트가 배열을 허용하는 경우(예: searchTerms, hashtags, urls), 사용자가 명시적으로 여러 개를 요청하지 않는 한 하나의 요소만 전달하세요.
  • monid inspect의 입력 스키마를 확인하여 어떤 매개변수가 볼륨을 제어하는지 식별하세요.

키 관리

monid keys add -k <api-key> -l <label>     # 키 추가 (첫 번째 키는 자동 활성화)
monid keys list                              # 설정된 모든 키 표시
monid keys activate -l <label>               # 활성 키 전환
monid keys remove -l <label>                 # 키 제거 (-f로 확인 생략)

API 키 형식: monid_<stage>_<secret> (예: monid_live_abc123...). 키 생성은 https://app.monid.ai/access/api-keys 에서 가능합니다.

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

getedgehq/agent-evals

Build evals for an AI agent that already does real work. Use when someone asks "how do I know my agent is right", wants to test an agent before trusting it, compare models on cost versus quality, or turn production failures into tests. Walks from first tasks and yes/no verifiers, to isolated environments, to a trace-driven improvement loop.

getedgehq/cli-ux-review

Audit a command-line tool for user-friendliness — clear situation / next-step / options in every output, colour-highlighted runnable commands, no raw jargon, no silent hangs. Invoke for "CLI UX audit", "review my CLI", "is this CLI intuitive", or before any CLI release.

getedgehq/generate-image

Generate images with OpenAI GPT Image 2 via the Codex CLI, billed through the user's ChatGPT Plus subscription (no OpenAI API key, no per-image API cost). Use when the user asks to create, generate, or make an image, picture, illustration, icon, hero graphic, or concept art from a text prompt.

getedgehq/harness-first

Diagnose and fix an unreliable, expensive, or unsafe LLM agent by auditing its harness (golden set, judge, cost caps, data layer, action approvals, tracing) before blaming or swapping the model. Use when someone says an agent is "burning tokens", "hallucinating", "brittle", gives inconsistent answers, asks whether to switch to a cheaper/better model, or wants to ship an agent or prompt change to customers.

getedgehq/http-error-triage

Run before concluding anything from an HTTP error on a third-party API. Separates a real credential/entitlement problem from a CDN or WAF block, a wrong endpoint, or a client-signature ban. Use whenever an API returns 401/403/402/429 and you are about to say "the key is dead", "credits are exhausted", "the plan lacks access", or "we are rate limited".

getedgehq/linkedin-media-prep

Convert, crop, resize, and compress images and videos for optimal LinkedIn upload quality and file size. Use when the user wants to prepare a photo, image, or video for LinkedIn (profile picture, cover photo, post image, article featured image, post video, or video ad), optimize file size for LinkedIn, crop and resize for LinkedIn dimensions, convert HEIC/RAW/PNG/MOV to LinkedIn-ready JPEG or MP4, or mentions LinkedIn media requirements, specs, or limits.

getedgehq/opendraft

An 18-agent pipeline that turns one topic line into a drafted

getedgehq/people-search

Find and rank professional people for recruiting, partnerships, sales, or research from user-provided data, public web sources, an authenticated search session, or a connected provider. Use for people discovery, LinkedIn or Sales Navigator search design, profile-list ranking, or provider filter translation.

getedgehq/rocketlist

Turn a CV into a shortlist of live startup roles from Rocketlist's public job board, including adjacent job titles the person would never have searched for, each with its published salary, the evidence for the fit, and a direct apply link. Use for "find roles I would be a strong fit for", career pivots, remote or VC-backed job hunts, and salary-visible role discovery.

getedgehq/security-audit-checklist

Run a comprehensive security audit across application code, cloud infrastructure, containers, CI/CD pipelines, and infrastructure-as-code. Covers privacy compliance, OWASP basics, secret leakage, API security, IAM misconfigurations, storage exposure, Kubernetes hardening, and network security. Use when the user asks to audit, review, or harden app or cloud security, check for secrets, scan for XSS/SQLi, verify security headers, review Terraform/CloudFormation, audit AWS/GCP/Azure configs, or perform any security-focused review.

getedgehq/shadcn-first

>-

getedgehq/skills

Develop or review a branded long-form YouTube channel using Simon Kaiser's public creator-led approach: audience fit, recurring formats, natural brand integration, Time with Brand, and an organic, paid, and Shorts strategy. Use for channel strategy, format briefs, and pilots.

getedgehq/skills

Build a YouTube strategy, evidence-backed idea slate, and title plus thumbnail package using Paddy Galloway's public method. Use when planning a channel, choosing concepts, or preparing a video before filming.

getedgehq/skills

Build or review a buyer-centered strategic narrative using Andy Raskin's public method. Use for sales or investor deck stories, homepage positioning, keynotes, launch narratives, and why-now messaging.

getedgehq/skills

Turn a product URL, launch brief, or approved script into a production-ready launch video. Use for product reveals, feature announcements, SaaS launches, and narrated product films; not for generic explainers or editing existing footage.

getedgehq/strip-image-ai-metadata

Strip C2PA and AI-generation metadata from images (PNG, JPEG, WebP) to remove "Generated by AI" / "ChatGPT" / "DALL-E" labels that platforms like LinkedIn, Instagram, and X display. Use when the user wants to clean AI-generated images before posting, remove AI attribution from photos, strip C2PA manifests, sanitize image metadata for professional use, or verify whether an image contains C2PA data.

getedgehq/top-down-comms

>-

getedgehq/workplan

Create, update, or close work plans for multi-step tasks. Use when starting refactors, bug lists, feature work, migrations, or any task with 2+ steps. Also use after auto-compaction to re-orient. Triggers: "workplan", "work plan", "create a plan", "what's the plan", "where was I", or when Claude detects

관련 스킬