회사 플러그인 빠른 시작

회사 마켓플레이스의 승인된 플러그인을 설치해 써 보고, 내 플러그인을 올려 게시 심사까지 신청해요.

회사 마켓플레이스에는 회사 구성원이 올리고 워크스페이스 관리자가 승인한 Claude Code · Codex 플러그인이 모여 있어요.
이 문서는 먼저 승인된 플러그인을 설치해 실행해 보고(쓰는 사람), 그다음 내 플러그인을 올려 게시 심사를 신청하는(만드는 사람) 순서로 따라 해요.

axhub CLI v0.50.0 이상이 필요해요. 이 문서의 명령과 출력은 v0.50.0 기준이에요. axhub --version으로 확인하고, 낮으면 axhub update apply --execute --yes로 올려요.

준비물

  • axhub CLI 로그인 — axhub auth login으로 로그인해 둬요. CLI 설치는 CLI › 설치에 있어요.
  • Claude Code 또는 Codex — 플러그인을 설치할 곳이에요. 터미널에서 claude 또는 codex 명령이 실행돼야 해요.
  • 회사 UUID — 바로 아래에서 확인해요.

회사 UUID 확인하기

플러그인 명령은 회사(테넌트)를 --tenant로 받아요. 목록 · 설치는 로그인 상태면 회사 주소(slug)도 받지만, 게시 · 게시 심사 신청과 scoped PAT로 실행하는 명령은 회사 UUID만 받아요. 헷갈리지 않게 처음부터 UUID를 쓰고, 목록에서 쓴 --tenant를 설치 · 게시까지 그대로 이어 써요.

axhub auth status --json

출력의 tenants 목록에서 회사 주소(tenant_slug)가 같은 항목의 tenant_id가 회사 UUID예요.

"tenants":[{"tenant_id":"3f6c2a1e-8d4b-4c7a-9e21-5b0f7d9a1c33","tenant_slug":"acme","role":"member",…}]

매번 붙이기 번거로우면 export AXHUB_TENANT=<회사 UUID>로 정해 둬도 돼요. 아래 명령의 --tenant <회사 UUID>는 그때 빼도 돼요.

쓰는 사람: 승인된 플러그인 설치하기

1

설치할 수 있는 플러그인 보기

axhub plugin list --tenant <회사 UUID>

한 줄에 플러그인 하나씩 설치 이름 · 제공 중인 버전 · 설치 가능 여부 · 앱 주소가 나와요.

weather-tools	1.2.3	installable	weather-tools

installable인 플러그인만 설치할 수 있어요. 처음에는 회사에서 만든 것 중 하는 일이 분명하고 만든 사람을 아는 플러그인을 골라요. 플러그인은 내 컴퓨터에서 hook · 명령 · MCP 서버를 실행할 수 있어서, 게시 심사를 통과했다는 사실만으로 안전하다고 단정하지 않아요.

2

설치 미리보기

axhub plugin install --tenant <회사 UUID> --app weather-tools --version 1.2.3 --host claude

Codex에 설치하려면 --host codex를 써요. --execute가 없으면 네트워크 요청 없이 무엇을 할지만 보여 줘요.

Plugin install preview
  App: weather-tools
  Version: 1.2.3
  Host: claude (user scope)
  No network request, extraction, or host command was performed.
  Next: axhub --tenant <회사 UUID> plugin install --app weather-tools --version 1.2.3 --host claude --execute --yes
3

설치

미리보기의 Next 명령을 그대로 실행해요.

axhub plugin install --tenant <회사 UUID> --app weather-tools --version 1.2.3 --host claude --execute --yes

CLI가 그 버전의 ZIP을 받아 SHA-256을 확인하고, Claude Code · Codex의 플러그인 명령으로 설치해요. 실행 권한이 있던 파일은 실행 권한을 지킨 채 설치돼요.

Installed weather-tools 1.2.3 for claude through marketplace axhub-app-<앱 ID>. Restart the host to load it.
4

새 세션에서 실행

열려 있던 Claude Code · Codex를 닫고 새 세션을 시작해야 플러그인이 올라와요. 먼저 터미널에서 설치됐는지 봐요.

claude plugin list

Codex는 codex plugin list예요. 목록에 weather-tools@axhub-app-<앱 ID>가 보이면 돼요. 새 세션에서 Claude Code는 /weather-tools:<기능 이름>, Codex는 $weather-tools:<기능 이름>으로 플러그인 기능을 불러요. hook이 있는 플러그인은 세션 시작처럼 정해진 순간에 저절로 실행돼요.

업데이트 · 재설치 · 실행 권한 확인과 회사 마켓플레이스를 Claude Code · Codex에 통째로 연결하는 방법은 회사 플러그인 마켓플레이스에 있어요.

만드는 사람: 내 플러그인 올리고 게시 심사 신청하기

올린 플러그인은 게시 심사를 통과해야 회사에 제공돼요. 흐름은 올리기 → 자동 검수 → 워크스페이스 관리자 승인 → 제공이고, 업로드만으로는 아무에게도 보이지 않아요.

1

플러그인 폴더 준비

루트에 .claude-plugin/plugin.json이 있는 플러그인 폴더를 준비해요. name이 설치 이름, version(SemVer)이 올릴 버전이에요. 한 번 올린 버전은 바꿀 수 없어서, 고칠 때마다 버전 번호를 올려요. .claude-plugin/plugin.json 없이 루트에 SKILL.md만 있는 스킬 폴더도 부속 파일과 함께 올라가요.

CLI가 패키지에 담는 규칙은 이래요.

  • .git · .venv · __pycache__ · .DS_Store · __MACOSX는 늘 빠지고, node_modules는 --keep-dir node_modules를 줄 때만 담겨요.
  • .gitignore는 적용하지 않아요. 빌드한 dist/도 그대로 올라가니, 뺄 경로는 --exclude <glob>으로 정해요.
  • 실행 권한이 있는 파일은 실행 권한을 지켜 올라가요. Windows에서는 git 저장소 안에서 게시하거나 --executable <경로>로 실행 파일을 지정해요.
  • .env · *.key · id_rsa* · 개인 키가 든 *.pem 같은 비밀 파일이 있으면 미리보기에서 멈춰요(plugin_secret_files).
2

게시용 PAT 발급

게시는 OAuth 로그인 대신 plugins:read · plugins:write 권한의 PAT로 해요. 로그인한 상태에서 한 번 발급해 두면 돼요.

axhub auth pat issue --scopes plugins:read,plugins:write --tenant-id <회사 UUID> --use

--use는 토큰 값을 화면에 보여 주지 않고 이 CLI에 저장만 해요. Saved PAT in keychain.이 나오면 끝이에요. 토큰 값을 출력하는 --show-token은 쓰지 마세요.

3

미리보기

axhub plugin publish ./weather-tools --tenant <회사 UUID> --submit

--execute가 없으면 네트워크 요청 없이 담길 파일 · 실행 파일 · 제외한 경로 · 위험 요소(hooks · MCP 서버 · bin · 스크립트)를 보여 줘요.

Plugin publish preview (offline)
  Name: weather-tools
  Version: 1.2.3
  Kind: plugin_zip
  Files: 4
    - .claude-plugin/plugin.json
    - hooks/session-start.sh (실행 파일)
    - …
  Risk inventory:
    - …
  Artifact SHA-256: …
  Artifact size: … bytes
  No network request or authentication was performed.
  --submit: 업로드가 끝나면 이 버전의 게시 심사를 바로 신청해요.
  Next: review the preview, then add --attest-distribution-rights --execute.
4

올리고 게시 심사 신청

목록을 확인했으면 배포 권리를 확인하는 --attest-distribution-rights와 --execute를 붙여요. --submit이 있으면 업로드 처리가 끝난 뒤 그 버전의 게시 심사까지 한 번에 신청해요.

axhub plugin publish ./weather-tools --tenant <회사 UUID> --attest-distribution-rights --execute --submit
플러그인 버전 업로드가 끝났어요
  App ID: <앱 ID>
  App slug: weather-tools
  Version ID: <버전 ID>
  Version: 1.2.3
게시 심사를 신청했어요 (신청 ID: <신청 ID>, 자동 검수: awaiting)
결과 알림은 없어요 — `axhub plugin manage status` 로 확인하세요
다음: axhub --tenant <회사 UUID> plugin manage status --app <앱 ID> --version 1.2.3

업로드는 됐는데 신청만 실패하면 publish를 다시 실행하지 말고 안내된 axhub plugin submit 명령만 다시 실행해요. 이미 올린 버전을 나중에 신청할 때도 같은 명령을 써요.

axhub --tenant <회사 UUID> plugin submit --app <앱 ID> --version 1.2.3 --execute

같은 버전을 다시 신청해도 새 신청이 생기지 않고 성공(already_submitted: true)으로 끝나요.

5

상태 확인과 승인

axhub --tenant <회사 UUID> plugin manage status --app <앱 ID> --version 1.2.3 --watch

첫 줄에 지금 상태 하나, 그 아래에 다음에 할 명령과 단계별 상태(업로드 처리 · 자동 검수 · 게시 심사 · 게시 · 제공)가 나와요. --watch는 서버를 기다리는 상태가 끝날 때까지 지켜봐요(기본 5분).

[관리자 심사 대기] 워크스페이스 관리자가 승인하면 제공돼요. 결과 알림은 없으니 이 화면이나 `axhub plugin manage status` 로 확인하세요.
다음: axhub --tenant <회사 UUID> plugin manage status --app <앱 ID> --version 1.2.3
상태:
  업로드 처리: 완료
  …
위험 요약: hooks 1 · MCP 0 · bin 0 · 동적 컨텍스트 0 · 스크립트 0

자동 검수를 통과하면 워크스페이스 관리자가 콘솔의 앱 심사에서 승인해요(앱 심사하기). 승인돼 반영되면 상태가 [제공 중]으로 바뀌고, 그때부터 회사 구성원이 위 순서대로 설치할 수 있어요. 결과 알림은 없으니 이 명령으로 확인해요.

axhub plugin submit --wait는 업로드 처리만 기다려요. 처리가 끝나면 신청하고 바로 끝나요 — 자동 검수나 관리자 승인을 기다리지 않아요. 그 뒤는 axhub plugin manage status --app <앱> --watch로 봐요. publish --execute도 업로드 처리가 끝날 때까지 기다린 뒤 끝나요.

  • 앱 공개 범위가 내부공개 · 외부공개여야 제공돼요. 나만보기 · 일부공개 앱의 플러그인은 승인돼도 설치할 수 없어요 — 플러그인이 제공되는 조건을 보세요.
  • 자동 검수에서 탈락하면 앱 콘솔의 버전 탭에서 검수 결과를 보고 사유를 적어 심사를 요청하거나, 고쳐서 새 버전을 올려요. 비밀정보가 발견된 탈락은 넘길 수 없어요(gate_override_forbidden).
  • 게시 뒤 다른 명령이 권한 오류(종료 코드 4 · 8)로 막히면 저장한 게시용 PAT가 로그인 대신 쓰이고 있는 거예요. axhub auth pat unset으로 활성 PAT를 해제해요.
  • 각 오류 코드의 뜻과 할 일은 회사 플러그인 오류 코드에 있어요.