Community코딩 & 개발github.com

Portifact

정적 아티팩트(HTML 사이트, 마크다운, 일반 텍스트)를 게시하고 공유하며, 접근을 제어하고 검토자 주석을 수집할 수 있습니다. 사용자가 계획, 보고서, 프로토타입 또는 문서를 링크로 공유하거나 Portifact, portifact CLI 또는 Portifact MCP 서버를 언급할 때 사용하세요.

Portifact란 무엇인가요?

Portifact는 정적 아티팩트(HTML 사이트, 마크다운, 일반 텍스트)를 고유한 URL과 함께 게시하고, 접근 제어, 만료 및 복원 기능을 제공하며, 인증된 검토자의 선택적 주석을 지원하는 개발자 도구입니다. AI 에이전트(Claude Code, Cursor, Codex 등)는 `portifact` CLI 또는 원격 MCP 서버를 통해 Portifact를 활용할 수 있어, 계획, 보고서, 프로토타입 또는 문서를 안전하게 공유하고 협업할 수 있습니다. 주요 기능으로는 파일 및 폴더 게시, 액세스 모드(공개, 인증, 제한) 설정, 버전 관리 및 롤백, Git 소스 연결, ZIP 파일 확장, 주석 스레드 관리, 사용량 및 액세스 로그 확인 등이 포함됩니다. CLI는 단일 실행 파일로 설치가 간편하며, OAuth 장치 흐름을 통해 로그인하고, 자격 증명은 운영 체제의 자격 증명 저장소에 안전하게 보관됩니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/leynier/portifact/tree/HEAD/skills/portifact

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

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

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

문서

Portifact은(는) 무엇을 하나요?

Portifact는 정적 아티팩트를 고유한 URL, 액세스 제어, 만료 및 복원 기능, 그리고 인증된 검토자의 선택적 주석과 함께 게시합니다. 에이전트는 portifact CLI 또는 원격 MCP 서버를 통해 이를 사용합니다.

설치된 버전이 지원하는 기능 확인

Portifact는 초기 개발 단계에 있으며 릴리스마다 명령어가 추가됩니다. 명령어를 사용하기 전에:

  1. portifact --version을 실행하여 CLI가 설치되었는지 확인합니다.
  2. portifact --help를 실행하여 이 버전이 지원하는 명령어를 확인합니다.
  3. --help에 나열된 명령어와 플래그만 사용하세요. 명령어를 추측하지 마십시오. 사용자가 설치된 버전으로 할 수 없는 작업을 요청하면 알리고 업데이트를 제안하세요.

--help에 login이 나열된 버전은 로그인, 로그아웃 및 로그인된 계정 표시가 가능합니다. --help에 publish도 나열된 버전은 파일과 폴더를 게시하고 아티팩트 및 해당 액세스를 관리할 수 있으며, --help에 versions, rollback 및 pull이 나열된 버전은 버전 나열, 롤백 및 다운로드가 가능하고, --help에 annotations가 나열된 버전은 아래 설명된 대로 댓글 스레드를 관리할 수 있습니다. portifact publish --help에 --source, --ref 및 --assets가 나열된 버전은 ZIP 파일을 게시하고, 비공개 소스를 첨부하며, 마크다운 자산을 게시합니다. portifact pull --help에 --git이 나열된 버전은 비공개 소스의 Git 기록을 빌드합니다. --help에 usage가 나열된 버전은 계정의 할당량을 표시하고, logs가 나열된 버전은 아티팩트를 누가 열었는지 표시하며, licenses가 나열된 버전은 바이너리의 오픈 소스 소프트웨어 라이선스를 출력합니다 (portifact licenses; https://portifact.com/third-party-notices에도 있음). https://app.portifact.com/mcp의 MCP 서버는 작은 문서를 나열, 게시 및 관리하고, 버전을 나열, 다운로드 및 롤백하며, 주석을 읽기, 쓰기, 중재 및 내보내고, 사용량 및 액세스 로그를 보고할 수 있습니다. 자세한 내용은 아래를 참조하세요.

CLI 설치 또는 업데이트

CLI는 단일 실행 파일이며 Node나 Bun이 필요하지 않습니다. 사용자 컴퓨터에 소프트웨어를 설치하기 전에 물어보세요.

curl -fsSL https://portifact.com/install | bash
irm https://portifact.com/install.ps1 | iex
  • Alpine Linux에서는 먼저 C++ 런타임을 설치하세요: apk add libstdc++ libgcc.
  • 동일한 명령어를 다시 실행하여 업데이트합니다.
  • PORTIFACT_VERSION=0.2.0을 설정하여 특정 버전을 설치합니다.
  • 비대화형 또는 샌드박스 환경에서는 PORTIFACT_NO_MODIFY_PATH=1을 설정하고 셸 프로필을 편집하는 대신 ~/.portifact/bin/portifact를 직접 호출하세요.
  • 설치 프로그램은 릴리스 체크섬에 대해 다운로드를 확인하고 불일치 시 중지됩니다. 실패한 확인을 우회하지 마세요.

로그인

먼저 portifact whoami --json으로 확인합니다. 종료 코드 0은 {"server","userId","clientId","scopes"}를 출력합니다. 종료 코드 3은 이 장치가 로그인되지 않았거나 세션이 종료되었음을 의미합니다.

로그인하려면 portifact login을 실행하세요 (파싱 가능한 결과를 위해 --json 추가). OAuth 장치 흐름을 사용합니다:

  1. CLI는 페이지(https://app.portifact.com/device)와 8자리 코드를 stderr에 출력하고, 터미널에 사람이 있을 때 브라우저를 엽니다. --no-browser를 전달하여 브라우저 열기를 건너뜁니다.
  2. 사용자에게 페이지와 코드를 정확히 출력된 대로 보여주고, 거기에 로그인하고, 페이지에 동일한 코드가 표시되는지 확인하고 승인하도록 요청하세요. 절대 사용자를 대신하여 승인하지 말고, 해당 페이지에서 아무것도 다시 붙여넣도록 요청하지 마세요. 로그인 페이지는 사용자에게 18세 이상인지 확인하고 약관(https://portifact.com/terms)에 동의하도록 요청합니다. 그 선택은 사용자의 몫이므로 절대 대신 동의하지 마세요. 페이지에서 해당 주소로 이메일 코드를 보낼 수 없다고 표시되거나(이전 이메일이 반송되거나 스팸으로 신고됨) 이번 달에 이메일 코드가 일시 중지되었다고 표시되면 사용자에게 Google 또는 GitHub로 로그인하도록 알리세요.
  3. 명령어는 사용자가 승인하거나 거부하거나 코드가 만료될 때까지(10분) 대기하므로 사용자가 stderr를 볼 수 있는 곳에서 실행하고 완료될 때까지 두세요.

자격 증명은 운영 체제의 자격 증명 저장소로 이동합니다. 저장소가 없는 경우(예: Secret Service가 없는 Linux 서버) 사용자 구성 디렉토리(Linux의 경우 /.config/portifact, macOS의 경우 /Library/Application Support/portifact, Windows의 경우 %APPDATA%\portifact)에 있는 credentials.json` 파일에 사용자 전용 권한으로 저장되며 CLI는 경고를 출력합니다. 해당 파일이나 저장된 토큰을 읽거나, 인쇄하거나, 복사하거나, 업로드하지 마세요. CLI는 자체적으로 새로 고칩니다.

portifact logout은 서버에서 이 장치의 토큰을 취소한 다음 제거합니다. 토큰을 취소하므로 먼저 사용자에게 확인하세요. 서버에 연결할 수 없으면 자격 증명을 유지하고 종료 코드 1로 종료됩니다. 나중에 다시 실행하세요.

PORTIFACT_APP_ORIGIN은 CLI를 다른 서버로 지정하며 테스트 및 스테이징 용도로 존재합니다. 사용자가 요청하지 않는 한 설정하지 마세요.

게시

--help에 publish가 나열된 버전에서만 가능합니다.

  1. 먼저 미리보기: portifact publish <path> --dry-run --json은 로그인하거나 업로드하지 않고 매니페스트를 빌드합니다. {"dryRun","type","name","entrypoint","totalBytes","files":[{"path","size","sha256","contentType"}],"excluded":[{"path","reason"}]}를 반환하며, --source와 함께 "sources":{"chosenBy","totalBytes","files","excluded","origin","lfsPointers"}도 반환합니다. 사용자에게 파일, 소스 및 제외된 항목을 보여주고, 개인 정보로 보이는 것이 있으면 중지하세요.
  2. 게시: portifact publish <path> --json. 결과는 {"artifactId","versionId","versionNumber","url","expiresAt","uploadId","files","totalBytes","sourceFiles","sourceBytes","sourceOrigin","uploadedFiles","uploadedBytes"}입니다. 진행률과 매니페스트는 stderr로 전송됩니다.
  • 유형은 경로에서 유추됩니다: 폴더, .zip 또는 .html 파일은 site, .md는 markdown, .txt는 text입니다. 다른 파일의 경우 --type site|markdown|text를 전달하세요. 폴더와 ZIP 파일은 사이트만 가능합니다.
  • 단일 HTML 파일은 사이트의 index.html로 게시됩니다. 폴더에는 index.html 또는 먼저 열 페이지와 함께 --entry <path>가 필요합니다.
  • --name은 아티팩트 목록에 표시되는 이름을 설정합니다. 기본값은 파일 또는 폴더 이름입니다.
  • --artifact <id>는 기존 아티팩트의 새 버전을 게시하며, --name이 이름을 변경하지 않는 한 이름, 유형 및 액세스를 유지합니다. 다른 사람이 중간에 게시하면 version_conflict(종료 코드 6)로 실패합니다. 아티팩트를 확인하고 다시 게시하세요.
  • 폴더는 항상 .git, node_modules, 캐시, OS 파일 및 비밀을 보유할 수 있는 파일(.env 및 예제를 제외한 .env.*, .dev.vars, .npmrc, .netrc, SSH 키, *.pem, *.key, *.p12, Terraform 상태 등)을 제외합니다. 이러한 파일을 직접 지정하는 것은 거부됩니다. 필터는 검토가 아닌 안전 장치이므로 매니페스트를 계속 확인하세요.
  • 심볼릭 링크와 특수 파일은 거부되며 절대 따라가지 않습니다.
  • 계정에 이미 저장된 파일은 다시 업로드되지 않습니다. 중단된 업로드는 재시도되며, 업로드가 시작된 후 게시에 실패하면 CLI가 업로드를 취소하여 반만 게시되는 것을 방지합니다.
  • 진행률에 Uploaded part <n> of <m> of <path>가 표시되는 버전은 64MiB를 초과하는 파일을 16MiB 부분으로 디스크에서 스트리밍하여 업로드하므로 대용량 파일이 메모리에 맞을 필요가 없으며 실패한 부분은 자체적으로 다시 전송됩니다. 버전은 부분 크기에 관계없이 게시된 파일을 최대 250MB까지 보유할 수 있습니다.
  • ZIP 파일은 업로드 전에 사용자 컴퓨터에서 확장됩니다. 모든 파일이 하나의 폴더 안에 있으면 해당 폴더가 루트가 됩니다. 링크, 특수 파일, 암호화된 항목, 아카이브를 벗어나는 경로, 충돌하는 이름, 겹치는 항목, 선언된 크기보다 200배 이상 확장되는 파일, 10,000개 이상의 항목 및 크기 제한을 초과하는 모든 것은 거부됩니다(invalid_input, 종료 코드 2, 또는 quota_exceeded, 종료 코드 7). 기본 제외 및 비밀 필터도 해당 항목에 적용됩니다.
  • --source <path>는 비공개 소스를 버전에 첨부합니다: 소유자만 보고 다운로드할 수 있으며(pull --source), 스토리지에는 포함되지만 게시된 크기에는 포함되지 않으며, 게시된 파일과 소스 파일을 합쳐 최대 1,000개입니다. 경로는 폴더, 단일 파일 또는 ZIP 파일일 수 있습니다. git 저장소 내의 폴더에서 git이 파일을 선택합니다: 버전이 지정된 파일과 무시하지 않는 새 파일(서브모듈 또는 중첩 저장소 제외). --ref <commit>는 대신 해당 커밋의 트리를 정확히 첨부합니다(브랜치, 태그 또는 커밋 ID, 커밋되지 않은 변경 사항은 포함되지 않음). 그런 다음 CLI는 커밋, 브랜치, 자격 증명이 없는 원격 및 커밋되지 않은 변경 사항이 있었는지 여부를 버전의 sourceOrigin으로 기록합니다. 저장소 외부 또는 git이 설치되지 않은 경우 폴더는 기본 제외 항목으로 검색됩니다. 비밀을 보유할 수 있는 파일은 git이 무엇을 말하든 절대 첨부되지 않습니다. stderr의 경고는 Git LFS 포인터를 나열하며, 이는 포인터로 첨부되고 내용은 아닙니다. 먼저 git lfs pull을 제안하세요.
  • --assets <dir>은 마크다운 문서와 함께 이미지 및 기타 파일이 포함된 폴더를 문서에 대한 상대 경로에 게시하므로 상대 링크가 작동합니다. 폴더는 문서의 폴더 안에 있어야 하며 기본 제외 항목이 적용됩니다.
  • Portifact는 markdown 또는 text 아티팩트 자체를 렌더링합니다. 해당 URL은 문서에서 렌더링된 페이지를 열며, 마크다운의 원시 HTML은 텍스트로 표시되고 아무것도 실행되지 않습니다. 원본 파일은 아티팩트 URL 아래의 자체 경로(예: <url>plan.md 또는 publish_document의 경우 <url>index.md)에서 페이지와 동일한 액세스 권한으로 다운로드됩니다. 문서는 최대 5MB의 UTF-8 텍스트이며, text 아티팩트는 단일 파일입니다.

아티팩트 관리

--help에 이러한 명령어가 나열된 버전에서만 가능합니다. 모든 명령어는 --json을 사용합니다.

  • portifact list [--limit N] [--cursor C] [--search TEXT] [--state active|archived|suspended|purging] [--type site|markdown|text] [--access public|authenticated|restricted] [--annotations off|open|locked]는 {"items":[...],"nextCursor"}를 반환합니다. nextCursor를 동일한 필터와 함께 --cursor로 전달하여 다음 페이지를 가져옵니다. 각 항목은 portifact info가 반환하는 내용에 "activity":{"versions","currentBytes","openThreads","lastAnnotationAt"}가 추가된 것입니다: 보존된 버전(현재 버전 포함), 현재 버전의 바이트(게시된 파일 및 소스, 버전이 없으면 null), 현재 버전의 열린 스레드 및 모든 버전의 스레드가 마지막으로 변경된 시간(스레드가 없으면 null). 트래픽은 아티팩트별이 아닌 계정별로 계산되므로 portifact usage에만 있습니다. --search는 이름의 일부(대소문자 구분 없이 문자) 또는 ID의 일부와 일치하며, 제공된 모든 필터가 충족되어야 하므로 모든 항목을 페이지로 검색하는 대신 이를 사용하여 아티팩트를 찾으세요. portifact info <id>는 하나의 항목을 반환합니다: {"id","name","type","state","accessMode","annotations","currentVersionId","url","expiresAt","archivedAt","purgeAt","createdAt","updatedAt"}에 아티팩트가 일시 중단된 동안 "suspension":{"reason"}이 추가됩니다.
  • portifact renew <id>, archive <id> 및 restore <id>는 {"artifactId","state","expiresAt","purgeAt"}를 반환합니다. 보관하기 전에 물어보세요.
  • portifact delete <id>는 영구적으로 삭제합니다. 터미널에 있는 사람에게 아티팩트 ID를 입력하도록 요청합니다. 터미널이 없으면 --yes가 필요하며, 그렇지 않으면 종료 코드 2로 실패합니다. 사용자가 해당 아티팩트를 확인한 후에만 --yes를 전달하세요.

액세스 제어

--help에 access가 나열된 버전에서만 가능합니다. 모든 명령어는 --json을 사용하고 {"artifactId","mode","readers","indexable","embeddable","policyGeneration"}를 출력합니다.

  • portifact access <id>는 현재 정책을 표시합니다. 게시 후 액세스 모드를 보고하는 데 사용하세요.
  • portifact access set <id> restricted|authenticated|public: restricted는 소유자와 나열된 독자, authenticated는 Portifact에 로그인한 모든 사용자, public은 링크가 있는 모든 사람입니다. 처음 7일 이내의 계정은 아티팩트를 공개할 수 없습니다(account_too_new_for_public, 종료 코드 7).
  • portifact access add <id> <email>... 및 access remove <id> <email>...는 독자 목록을 변경합니다(한 번에 최대 100개 주소). 독자는 모드가 restricted인 경우에만 의미가 있습니다.

버전, 롤백 및 다운로드

--help에 이러한 명령어가 나열된 버전에서만 가능합니다. 모든 명령어는 --json을 사용합니다.

아티팩트는 현재 버전과 지난 7일 동안 교체된 버전을 유지합니다. 롤백 및 다운로드는 보존된 버전에 대해서만 작동합니다.

  • portifact versions <id>는 최신순으로 나열합니다. --json은 {"artifactId","items":[{"id","number","current","entrypoint","publishedBytes","sourceBytes","publishedFiles","sourceFiles","rendererVersion","committedAt","expiresAt","sourceOrigin"}]}를 출력합니다. expiresAt은 이전 버전이 더 이상 유지되지 않는 시점이며 현재 버전의 경우 null입니다. sourceOrigin은 소스가 git에서 온 경우 {"commit","branch","remote","dirty"}이고, 그렇지 않으면 null입니다. 기원은 게시자가 선언한 것입니다. Portifact는 이를 확인할 수 없습니다.
  • portifact rollback <id> <version-id>는 보존된 버전을 다시 현재 버전으로 만듭니다. 동일한 파일로 새 버전으로 게시되고, 30일을 다시 시작하며, 액세스를 변경하지 않습니다: 해당 버전 이후에 제거된 독자는 계속 제거됩니다. 롤백하기 전에 사용자에게 물어보세요. {"artifactId","versionId","versionNumber","url","expiresAt","fromVersionId","fromVersionNumber"}를 반환합니다. 다른 사람이 중간에 게시하면 version_conflict(종료 코드 6)로 실패합니다. versions를 다시 확인하고 사용자에게 물어보세요. portifact rollback --help가 "version ID or number"라고 말하는 버전에서는 <version-id>가 버전 번호(3 또는 v3)일 수도 있으며, pull --version도 이를 허용합니다. 보존되지 않은 번호는 not_found(종료 코드 5)로 실패합니다.
  • portifact pull <id> --out <dir>는 현재 버전의 게시된 파일을 <dir>/published에 다운로드합니다. 비공개 소스의 경우 --source를 추가하고(<dir>/source, 소유자 전용), 둘 다의 경우 --published --source를, 이전 버전의 경우 --version <version-id>를 추가합니다. <dir>은 아직 존재하지 않아야 합니다. pull은 절대 디렉토리 외부에 쓰지 않으며, .git 폴더 내부의 경로를 거부하고, 모든 파일의 SHA-256을 확인하며, 실패하면 폴더를 제거합니다(download_failed, 종료 코드 1). {"artifactId","versionId","versionNumber","out","files":[{"kind","path","size","sha256"}],"totalBytes"}를 반환합니다. 아티팩트가 공유된 사람은 게시된 파일만 가져옵니다. 소스는 소유자가 --source로만 가져옵니다.
    • portifact pull --help에 --git이 나열된 버전에서 pull <id> --git은 소스 파일의 Git 기록을 <dir>/source에 빌드합니다. 기록에는 게시 시점의 git 상태가 포함됩니다: 하나의 커밋(--source가 git 저장소를 가리켰는지 여부) 또는 --ref가 사용된 경우 sourceOrigin.commit의 커밋에서 시작하여 압축되고 서명이 제거된 히스토리(사용자가 게시에 사용한 시점을 나타내는 저자 타임스탬프 포함)가 포함됩니다.
    • 풀은 로컬로 연결을 시도합니다. 실패하면 네트워크를 통해 다운로드하고, 10분 이내에 재시도 가능하며(진행률은 표준 오류), 실패하면 종료 코드 1을 반환합니다.

주석

--help에 annotations가 나열된 버전에서만 가능합니다. 모든 명령어는 --json을 사용합니다. 주석은 독자와 검토자가 아티팩트 페이지에 댓글을 달 수 있는 기능입니다. 게시자가 아티팩트에서 주석을 켠 경우에만 사용할 수 있습니다. 주석이 꺼져 있거나 잠겨 있으면 읽기 전용이거나 완전히 비활성화됩니다. 아직 구독하지 않은 독자는 주석을 볼 수 있지만 달 수 없습니다. 주석 스레드는 버전에 속하며, 버전이 보존되는 동안에만 존재합니다(따라서 이전 버전의 스레드는 만료될 수 있지만 현재 버전과 롤백된 버전의 스레드는 보존됩니다).

  • portifact annotations threads <id>는 이 아티팩트의 모든 공개 스레드를 나열합니다(JSON: {"items":[{"id","versionId","versionNumber","path","resolved","pinned","collapsed","resolvedAt","resolvedBy","commentCount","lastActivityAt","createdAt","updatedAt","source"}]}). 기본적으로 아티팩트의 현재 버전에 속한 공개 스레드만 나열됩니다. --all-versions를 전달하여 모든 버전의 스레드를 포함하세요. source는 이 스레드가 시작된 위치를 나타냅니다: review(포털을 통해), api(MCP 서버를 통해) 또는 import(임베디드 댓글).
    • 실시간으로: 아티팩트 페이지는 이 스레드에 새 댓글이 달리면 페이지를 열어둔 모든 사람에게 알립니다. MCP 서버는 최대 30초마다 폴링해야 합니다.
  • portifact annotations export <id>는 이 아티팩트의 모든 주석 스레드와 댓글을 JSON으로 내보냅니다: {"versionId":"...","versionNumber":1,"versionCommittedAt":"...","threads":[{"id":"...","resolved":false,"pinned":false,"source":"api","comments":[{"id":"...","author":{"id":"...","name":"...",“email":"..."},"body":"...","createdAt":"...","updatedAt":"..."}]}]}. 답글은 답글이 달린 댓글의 "parentId"로 표시되며, 루트 댓글은 parentId가 없습니다. 중재된 댓글은 "moderatedAt", "moderatedBy" 및 "moderationReason"과 함께 표시됩니다. --all-versions를 전달하여 모든 버전의 스레드를 포함하세요.
  • portifact annotations threads <id> <threadId>는 하나의 스레드와 해당 댓글을 표시합니다({"thread":{...},"comments":[...]}).
  • portifact annotations comment <id> <threadId> <text>는 스레드에 댓글을 답니다. 답글을 달려면 --parent <commentId>를 전달하세요. 자체 댓글은 --parent <commentId>를 사용할 수 있습니다.
  • portifact annotations resolve <id> <threadId> 및 annotations unresolve <id> <threadId>는 스레드를 확인 또는 확인 해제합니다. 확인 전에 사용자에게 물어보고, 가능한 경우 이유를 제공하세요.
  • portifact annotations moderate <id> <commentId>는 개별 댓글을 중재하여 숨깁니다. 해당 스레드에 더 많은 댓글이 달릴 수 있습니다. --reason을 요구하며, 항상 사용자에게 이유를 설명하세요. 중재 전에 사용자에게 확인하세요.
  • portifact annotations settings <id>는 현재 주석 설정을 표시합니다: {"artifactId","enabled","allowAnonymous","requireReview","moderateAll","autoLockDays"}. enabled가 true인 경우에만 사용할 수 있습니다.
  • portifact annotations settings <id> off|open|locked는 주석을 켜거나 끕니다(여기에서 설정을 변경하는 것은 미리보기, 체험판을 보여주거나 설정이 곧 변경될 것임을 나타내는 경우와 같이 드문 경우에만 해당됩니다. 대부분의 경우 포털을 통해 수행하는 것이 좋습니다).
  • 주석에 대한 액세스는 아티팩트의 액세스 설정을 따릅니다. 주석이 활성화된 경우에도 public 아티팩트는 공개 주석을 가지며, authenticated 아티팩트는 Portifact에 로그인한 사람들의 주석을 가지며(따라서 각 댓글 작성자가 표시됨), restricted 아티팩트는 독자 목록에 있는 사람들의 주석을 가집니다. 따라서 portifact annotations settings <id> open을 설정한 후 portifact access set <id> public을 수행할 수 있습니다. 새 공개 아티팩트의 모든 사람이 댓글을 달 수 있습니다(또는 7일 규칙이 적용되므로 사용자에게 해당되면 알려주세요).

사용량 및 로그

--help에 이러한 명령어가 나열된 버전에서만 가능합니다. 모든 명령어는 --json을 사용합니다.

  • portifact usage는 계정의 사용량 할당량을 인쇄합니다: {"totalPublishedBytes","totalPublishedBytesLimit","publishedBytes","sourceBytes","artifactCount",“artifactCountLimit","versionsThisMonth","versionsThisMonthLimit","trafficThisMonth","trafficThisMonthLimit"}.
  • portifact logs <id>는 이 아티팩트에 대한 액세스 로그를 인쇄합니다: {"items":[{"id","artifactId",“kind","actor","actorType","createdAt","metadata":{...}}]}. 시스템이 작업을 수행한 경우 actor는 null일 수 있습니다.

MCP 서버

MCP 서버는 https://app.portifact.com/mcp에 있습니다 (PORTIFACT_APP_ORIGIN이 설정된 경우 구성 가능). 이는 에이전트(MCP 클라이언트)가 이전 섹션에 설명된 대로 문서를 나열, 게시 및 관리하고, 버전을 나열, 다운로드 및 롤백하고, 주석을 읽기, 쓰기, 중재 및 내보내고, 사용량 및 액세스 로그를 보고할 수 있도록 합니다. 서버는 MCP resources 및 tools를 통해 액세스되며, 세부 사항은 생략되었습니다.

귀하의 MCP 클라이언트가 이미 서버를 구성했거나 사용자가 귀하를 위해 구성하기를 원할 수 있습니다. 그렇지 않으면 하나를 설정해야 할 수 있습니다:

{
  "mcpServers": {
    "portifact": {
      "url": "https://app.portifact.com/mcp"
    }
  }
}

구성하기 전에 사용자가 계정이 있는지 확인하세요. 포털의 인증은 MCP와 동일한 계정의 세션 간에 공유됩니다. 서버에 연결할 수 없으면 사용자에게 브라우저에서 세션을 새로 고치라고 요청하거나 portifact login을 통해 CLI를 다시 인증하도록 요청하세요.

Portifact MCP 서버는 대용량 파일을 처리할 수 없습니다. 각 문서는 게시 파일 5MB로 제한됩니다. 더 큰 파일의 경우 system 도구 publish_artifact 대신 CLI 사용을 제안하고, 이전 섹션에 설명된 대로 portifact publish를 사용하여 파일을 업로드하세요.

요약

게시하기 전에 CLI 명령어를 실행할 때 --dry-run을 사용하세요. 항상 사용자 권한을 존중하고 삭제 또는 보관하기 전에 물어보세요. 사용자가 의도한 것보다 더 넓은 액세스 권한을 실수로 설정하지 않도록 하세요.

관련 스킬