@clack-platform/cli 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -13
- package/dist/cli.js +1419 -232
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ clack whoami --json
|
|
|
19
19
|
clack logout
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
`login`이 표시한 코드를 앱 **마이페이지 → 계정 → 내 정보 수정하기 → 외부 도구 연결 → 코드로 승인**에서 입력한다. 요청한 권한을 확인하고 승인하면 CLI에 연결된다. 기본 요청 권한은 `profile:read` 하나다. `profile`, `product`, `content`, `creator-content`, `skill`, `platform` 묶음은 각각 읽기·쓰기를 모두 요청한다(`creator-content:publish`, `skill:publish`는 별도 명시가 필요하다). `platform`은 내 콘텐츠의 서버 키·공유 문서 관리 전용 권한이다(아래 "플랫폼 전용 PAT 도구" 절 참고). 소셜 로그인 사용자도 앱에서 승인할 수 있다. 웹 승인 화면은 별도 후속 단계이므로 현재는 앱 승인을 사용한다.
|
|
22
|
+
`login`이 표시한 코드를 앱 **마이페이지 → 계정 → 내 정보 수정하기 → 외부 도구 연결 → 코드로 승인**에서 입력한다. 요청한 권한을 확인하고 승인하면 CLI에 연결된다. 기본 요청 권한은 `profile:read` 하나다. `profile`, `product`, `content`, `creator-content`, `skill`, `platform`, `custom-page` 묶음은 각각 읽기·쓰기를 모두 요청한다(`creator-content:publish`, `skill:publish`, `custom-page:publish`는 별도 명시가 필요하다). 명령별 필요 권한은 각 명령의 `--help`와 아래 절의 권한 표에 적혀 있다. `platform`은 내 콘텐츠의 서버 키·공유 문서 관리 전용 권한이다(아래 "플랫폼 전용 PAT 도구" 절 참고). 소셜 로그인 사용자도 앱에서 승인할 수 있다. 웹 승인 화면은 별도 후속 단계이므로 현재는 앱 승인을 사용한다.
|
|
23
23
|
|
|
24
24
|
수동 발급한 토큰은 `clack login --token`의 숨김 프롬프트에 붙여 넣는다. 비대화형 실행에서는 이 명령의 표준 입력으로 전달할 수 있다. `--token <값>`도 지원하지만 셸 기록을 피하려면 프롬프트나 `CLACK_TOKEN` 환경변수를 사용한다. 토큰 원문은 정상 결과·오류·상세 로그에 출력하지 않는다.
|
|
25
25
|
|
|
@@ -31,6 +31,22 @@ clack token list --json
|
|
|
31
31
|
clack token revoke 123 --yes
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
### 승인 대기 중 실행이 끊기는 경우(에이전트용)
|
|
35
|
+
|
|
36
|
+
`login`은 코드를 발급한 즉시(폴링을 시작하기 전에) 그 요청을 자격 저장소 옆에 0600 권한으로 저장해 둔다. 그래서 승인을 기다리는 도중에 프로세스가 끝나도(에이전트가 턴을 종료하는 경우 등) 승인 자체는 유실되지 않는다 — 다음 실행에서 `clack login --resume`으로 같은 코드를 이어서 기다리면 된다.
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
clack login --no-wait --json # 코드만 발급하고 즉시 반환 (user_code·주소·만료 시각을 JSON으로 출력)
|
|
40
|
+
# … 사용자가 앱에서 승인할 시간을 준다(턴 종료 등) …
|
|
41
|
+
clack login --resume # 같은 요청을 이어서 기다리다가 승인되면 저장한다
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`--no-wait` 없이 그냥 `clack login`을 실행했다가 대기 중 중단된 경우에도 `clack login --resume`으로 이어받을 수 있다. `--resume`은 새 코드를 발급하지 않으며, 저장된 요청이 이미 만료·거부·소비됐으면(`EXPIRED_TOKEN`·`ACCESS_DENIED`·`DEVICE_CODE_CONSUMED`) 그 사실을 분명한 오류 코드로 알리고 자동으로 새 요청을 만들지 않는다 — 이때는 `clack login`을 다시 실행한다. 저장된 요청이 없으면 `DEVICE_REQUEST_NOT_FOUND`, 발급 당시와 다른 `--env`·`--base-url`로 재개를 시도하면 `DEVICE_REQUEST_ORIGIN_MISMATCH`를 반환한다(둘 다 요청을 지우지 않으므로 `--env`를 바로잡아 다시 시도할 수 있다). `--resume`은 `--token`과 함께 쓸 수 없다.
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
clack login --resume --env dev # 발급 당시와 같은 환경이어야 한다. 다르면 DEVICE_REQUEST_ORIGIN_MISMATCH
|
|
48
|
+
```
|
|
49
|
+
|
|
34
50
|
## 주요 명령
|
|
35
51
|
|
|
36
52
|
세부 필드·선택지는 각 명령의 `--help`에서 확인한다.
|
|
@@ -49,7 +65,7 @@ clack token revoke 123 --yes
|
|
|
49
65
|
| 설정 | `config get`, `config set <키> <값>` |
|
|
50
66
|
| HTML 콘텐츠 | `content config/list/status/create/upload/complete/preview/submit/withdraw/publish/unpublish` |
|
|
51
67
|
| 에이전트 연결 | `mcp config`, `skills` |
|
|
52
|
-
| 스킬 패키지·관리 | `skill validate`, `skill push`, `skill complete`, `skill submit`, `skill list`, `skill get`, `skill form`, `skill status`, `skill cancel`, `skill release`, `skill deprecate` |
|
|
68
|
+
| 스킬 패키지·관리 | `skill validate`, `skill pack`, `skill editor dev`, `skill push`, `skill complete`, `skill submit`, `skill list`, `skill get`, `skill form`, `skill status`, `skill cancel`, `skill release`, `skill deprecate` |
|
|
53
69
|
| 콘텐츠 서버 키(platform:read/write) | `content server-keys list/revoke` (발급·회전은 크리에이터 센터 전용) |
|
|
54
70
|
| 공유 문서 관리(platform:read/write) | `content shared collections/list/get/hide/delete` |
|
|
55
71
|
| 플랫폼 서버 키 데이터 | `platform usage`, `platform data get`, `platform data list`, `platform data leaderboard`, `platform data put`, `platform data patch`, `platform data delete` |
|
|
@@ -89,7 +105,7 @@ clack channel post create --from-markdown draft.md --status draft
|
|
|
89
105
|
|
|
90
106
|
CLI 안내는 한국어다. `lang`은 API 콘텐츠 언어에 사용한다. `--verbose`는 메서드·경로·시간 계약만 표준 오류로 표시한다. `doctor`는 현재 연결·권한·만료와 서버 메타 API의 한도·읽기/쓰기·MCP·디바이스 연결 상태를 검사한다. 메타 조회 실패는 오류로 반환한다.
|
|
91
107
|
|
|
92
|
-
`--json` 성공 결과는 `{ok:true,data,pagination?,time_contract}`, 실패 결과는 `{ok:false,status,code,message,retry_after?}`다. 시간 문자열은 API 원문과 `time_contract`를 함께 유지한다. 사람용 출력은 알려진 시각 필드에 중앙 파서를 적용하며 `--time utc`로 실제 UTC를 표시할 수 있다. 생년월일과 본문은 시간으로 변환하지 않는다.
|
|
108
|
+
`--json` 성공 결과는 `{ok:true,data,pagination?,time_contract}`, 실패 결과는 `{ok:false,status,code,message,retry_after?}`다. 시간 문자열은 API 원문과 `time_contract`를 함께 유지한다. 사람용 출력은 알려진 시각 필드에 중앙 파서를 적용하며 `--time utc`로 실제 UTC를 표시할 수 있다. 생년월일과 본문은 시간으로 변환하지 않는다. 기본값(`--time local`)은 실행 환경의 로캘·타임존과 무관하게 `YYYY-MM-DD HH:MM KST` 고정 형식으로 표시한다(클랙 서비스는 항상 한국 시간 기준이다).
|
|
93
109
|
|
|
94
110
|
| 종료 코드 | 의미 |
|
|
95
111
|
|---|---|
|
|
@@ -124,7 +140,7 @@ clack skills --json
|
|
|
124
140
|
|
|
125
141
|
원격 MCP는 프로필·상품·게시글·채널 도구 외에 스킬 목록·상세·업로드(`create_skill`→`request_skill_version_upload`→`complete_skill_version`)·심사 제출·공개(`submit_skill_version`, `release_skill_version`, `get_skill_version`), 승인된 HTML 콘텐츠 공개(`publish_creator_content`), 공유 문서 조회·숨김·삭제(`list_shared_documents`, `hide_shared_document`, `delete_shared_document` 등)도 제공한다. 각 도구는 해당 스코프(`skill:*`, `creator-content:publish`, `platform:read`/`platform:write`)를 가진 토큰에만 노출되며, 파괴적 도구는 `confirm:true` 전에는 미리보기만 반환한다. 원격 MCP는 로컬 파일을 읽지 못하므로 스킬 ZIP 전송은 `clack skill push` 또는 로컬 플랫폼 MCP의 `platform_skill_push`를 사용한다.
|
|
126
142
|
|
|
127
|
-
에이전트 스킬은 별도 공개 저장소 [clack-project/skills](https://github.com/clack-project/skills)에서 `npx skills add clack-project/skills`로 설치한다.
|
|
143
|
+
에이전트 스킬은 별도 공개 저장소 [clack-project/skills](https://github.com/clack-project/skills)에서 `npx skills add clack-project/skills`로 설치한다. 모두 10종으로, 일반 계정 관리용 6종(`clack-setup`·`clack-products`·`clack-content`·`clack-channel`·`clack-profile`·`clack-mcp`)과 크리에이터용 4종(`clack-creator-content`·`clack-page`·`clack-skill-package`·`clack-platform-data`)이다. 스킬에 필요한 CLI는 0.1.1 이상이다(`clack-mcp`는 CLI 없이도 쓸 수 있고, 설정 출력에 CLI를 쓸 때는 0.1.0 이상). `clack skills`는 설치를 실행하지 않고 안내만 출력한다. 스킬 목록과 스킬별 요구 CLI 버전도 함께 보여 준다. 스킬 하나만 선택 설치할 때는 `-s clack-products`, 여러 개는 `--skill clack-setup clack-creator-content clack-page`처럼 나열하고, 전역 설치에는 `-g`를 사용한다.
|
|
128
144
|
|
|
129
145
|
## 검증과 배포
|
|
130
146
|
|
|
@@ -140,7 +156,17 @@ GitHub Actions는 Linux·macOS·Windows × Node 20·22에서 `pnpm check`와 패
|
|
|
140
156
|
|
|
141
157
|
## HTML 콘텐츠 개발 테스트
|
|
142
158
|
|
|
143
|
-
크리에이터 콘텐츠는 기존 게시글·포켓과 별도 권한을 사용합니다.
|
|
159
|
+
크리에이터 콘텐츠는 기존 게시글·포켓과 별도 권한을 사용합니다. 앱 확인·심사·공개 기능의 제공 여부는 환경마다 다르며 `clack content config`의 `app_preview_enabled`·`review_enabled`·`publication_enabled`로 확인합니다. CLI로 앱 확인 요건을 우회할 수 없습니다.
|
|
160
|
+
|
|
161
|
+
| 명령 | 필요한 PAT 권한 |
|
|
162
|
+
|---|---|
|
|
163
|
+
| `config` | 없음(로그인 불필요) |
|
|
164
|
+
| `list`, `status`, `preview` | `creator-content:read` |
|
|
165
|
+
| `create`, `upload`, `complete`, `withdraw` | `creator-content:write` |
|
|
166
|
+
| `submit` | `creator-content:write`와 `creator-content:publish` 모두 |
|
|
167
|
+
| `publish`, `unpublish` | `creator-content:publish` |
|
|
168
|
+
|
|
169
|
+
제출 순서는 `upload` → `preview`(같은 계정의 앱에서 열어 확인 완료) → `submit`입니다. 앱 확인 전에 제출하면 `PREVIEW_CONFIRMATION_REQUIRED`(409)가 반환됩니다.
|
|
144
170
|
|
|
145
171
|
```bash
|
|
146
172
|
clack login --env dev --scopes creator-content:read,creator-content:write,creator-content:publish
|
|
@@ -151,7 +177,7 @@ clack content status --env dev <콘텐츠-UUID>
|
|
|
151
177
|
clack content preview --env dev <콘텐츠-UUID> <버전-UUID>
|
|
152
178
|
```
|
|
153
179
|
|
|
154
|
-
`content upload`는 최대 30 MiB의 HTML/ZIP을 체크섬과 함께 비공개 저장소에 전송합니다. 전송 후 완료 응답만 실패하면 출력된 `content complete` 명령으로 같은 업로드를 재처리할 수 있습니다. `--dry-run`은 파일·입력 검사만 수행합니다. `creator-content` 약식 scope는 읽기·쓰기만 요청하며
|
|
180
|
+
`content upload`는 최대 30 MiB의 HTML/ZIP을 체크섬과 함께 비공개 저장소에 전송합니다. 전송 후 완료 응답만 실패하면 출력된 `content complete` 명령으로 같은 업로드를 재처리할 수 있습니다. `--dry-run`은 파일·입력 검사만 수행합니다. `creator-content` 약식 scope는 읽기·쓰기만 요청하며 `submit`·`publish`·`unpublish`에 필요한 `creator-content:publish`는 명시적으로 요청해야 합니다. 정책 내용을 크리에이터 센터에서 확인한 뒤 `--policy-version`으로 동의한 버전을 지정하세요.
|
|
155
181
|
|
|
156
182
|
ZIP에 `clack.content.json` 또는 `.clack/`가 있으면 업로드 전에 선언·경로·크기와 프로필 파일 대응을 확인하고 표준 오류에 경고합니다. 선언이 없는 기존 정적 ZIP도 계속 업로드할 수 있습니다. 경고는 업로드를 막지 않으며 서버의 최종 검증·심사 결과를 대신하지 않습니다. 전송 없이 확인하려면 `content upload ... --dry-run`을 사용하세요.
|
|
157
183
|
|
|
@@ -163,7 +189,7 @@ clack content publish --env dev <콘텐츠-UUID> <버전-UUID>
|
|
|
163
189
|
|
|
164
190
|
## 스킬 패키지 개발 검증
|
|
165
191
|
|
|
166
|
-
`clack.skill.json`과 `SKILL.md`가 있는 디렉터리 또는 ZIP을 검사합니다. 로컬 검증은 로그인 없이 실행할 수 있습니다. 서버
|
|
192
|
+
`clack.skill.json`과 `SKILL.md`가 있는 디렉터리 또는 ZIP을 검사합니다. 로컬 검증은 로그인 없이 실행할 수 있습니다. 서버 경로(`validate --remote`, `push` 등)는 현재 개발 환경에서 기능 플래그가 켜진 계정과 아래 표의 권한을 가진 개인 액세스 토큰이 필요합니다.
|
|
167
193
|
|
|
168
194
|
```sh
|
|
169
195
|
clack skill validate ./my-skill
|
|
@@ -184,11 +210,19 @@ clack skill deprecate <스킬-UUID> --env dev
|
|
|
184
210
|
|
|
185
211
|
`push`는 서버 사전 검증 후 새 스킬 또는 기존 스킬의 버전을 예약하고, 서명된 URL에 ZIP을 전송한 뒤 완료 처리합니다. 완료 응답만 실패하면 출력된 `skill complete` 명령으로 같은 버전을 재처리합니다. `--dry-run`은 서버를 변경하지 않습니다.
|
|
186
212
|
|
|
187
|
-
|
|
213
|
+
| 명령 | 필요한 PAT 권한 |
|
|
214
|
+
|---|---|
|
|
215
|
+
| `validate`(로컬) | 없음(로그인 불필요) |
|
|
216
|
+
| `list`, `get`, `form`, `status` | `skill:read` |
|
|
217
|
+
| `validate --remote`, `push`, `complete`, `cancel` | `skill:write` |
|
|
218
|
+
| `submit` | `skill:write`와 `skill:publish` 모두 |
|
|
219
|
+
| `release`, `deprecate` | `skill:publish` |
|
|
220
|
+
|
|
221
|
+
`clack login --scopes skill` 약식은 읽기·쓰기만 요청하므로 제출·게시·지원 종료에는 `skill:publish`를 추가해야 합니다. 변경 명령은 개인 액세스 토큰(PAT)만 사용합니다. `submit`은 서버에서 검증 완료 상태와 패키지 해시를 조회한 뒤 확인을 받고 심사를 요청합니다. `--dry-run`은 제출 요청 없이 상태만 확인합니다. `release`는 심사를 통과한 버전만 허용하고, `--visibility public`은 별도 라이브러리 등재 승인이 필요합니다. 심사 판정은 관리자 화면에서 처리합니다. `deprecate`는 스킬 전체를 지원 종료 상태로 바꾸며 되돌릴 수 없습니다. 확인 후에만 실행되고(비대화형은 `--yes` 필요), 새 설치·새 제작은 막히지만 기존 콘텐츠가 고정한 버전은 계속 동작합니다.
|
|
188
222
|
|
|
189
223
|
### 스킬 플러그인 정적 검사(plugin-static-v2)
|
|
190
224
|
|
|
191
|
-
`clack.skill.json`의 `authoring.plugin`으로 제작 화면 플러그인을 선언하면 서버가 번들을 구문 트리(JS·HTML·CSS)로 검사합니다. 위험 기능을 쓰지 않는다고 증명할 수 있는 코드만 통과하고, 판단할 수 없는 코드는 오류로 봅니다. 요약은 다음과 같고 크리에이터 센터 `/creator/skills/help/plugin`에도 같은 안내가 있습니다. 메시지 예제·권한 동의·심사 준비를 포함한 상세 안내의 정본은 크리에이터 가이드 `/guide/reference/templates/editor-plugins`(T09)와 실습 과정 `/guide/courses/center-editor-plugin`(T05)입니다.
|
|
225
|
+
`clack.skill.json`의 `authoring.plugin`으로 제작 화면 플러그인을 선언하면 서버가 번들을 구문 트리(JS·HTML·CSS)로 검사합니다. 위험 기능을 쓰지 않는다고 증명할 수 있는 코드만 통과하고, 판단할 수 없는 코드는 오류로 봅니다. 요약은 다음과 같고 크리에이터 센터 `/ko/creator/skills/help/plugin`에도 같은 안내가 있습니다. 메시지 예제·권한 동의·심사 준비를 포함한 상세 안내의 정본은 크리에이터 가이드 `/ko/guide/reference/templates/editor-plugins`(T09)와 실습 과정 `/ko/guide/courses/center-editor-plugin`(T05)입니다.
|
|
192
226
|
|
|
193
227
|
- 선언: `bundle`(진입 HTML)·`sha256`·`fields`·`permissions`·`purpose`. 권한은 `getFormSchema`·`getFormValues`·`setFormValues`·`listApprovedAssets`·`requestAssetUpload`만 있고, 권한·필드가 늘면 크리에이터에게 다시 동의를 받습니다.
|
|
194
228
|
- 번들: 파일 50개, 파일당 512 KiB, 전체 2 MiB, 코드 합계 512 KiB 이하. 형식은 html·js·mjs·css·json·png·jpg·webp·gif·woff·woff2만 허용합니다.
|
|
@@ -198,6 +232,23 @@ clack skill deprecate <스킬-UUID> --env dev
|
|
|
198
232
|
- 로드 토큰: iframe 주소의 실행 토큰은 300초 동안 유효하고 번들 안 상대 경로 자원도 같은 토큰으로 검사합니다. 센터는 만료 30초 전에 새 토큰으로 플러그인을 다시 엽니다. 필요한 자원은 첫 로드 때 불러오고, 상태는 `setFormValues`로 저장한 뒤 다시 열렸을 때 `getFormValues`로 이어 갑니다.
|
|
199
233
|
- 심사: 업로드는 구조 오류만 422 `SKILL_PLUGIN_INVALID`로 거부하고, 코드 판정은 줄 번호와 함께 심사 근거로 남깁니다. 관리자가 번들 소스를 직접 확인한 뒤 승인하며 플러그인과 결과 콘텐츠는 자동 공개되지 않습니다. 이전 규칙(v1)으로 검사된 대기 플러그인은 승인할 수 없으니(409 `PLUGIN_STATIC_CHECK_STALE`) 새 버전으로 다시 올립니다.
|
|
200
234
|
|
|
235
|
+
|
|
236
|
+
## 스킬 에디터(`authoring.editor`) 개발
|
|
237
|
+
|
|
238
|
+
스킬이 전체 화면 제작 UI(에디터)를 제공하는 스킬입니다. v1은 크리에이터 센터에서만 쓸 수 있어 `skill list`·`skill get` 결과에 `availability: "센터 전용"`으로 표시됩니다(서버가 `center_only`·`editor`를 내려줄 때).
|
|
239
|
+
|
|
240
|
+
- `clack skill validate [dir]`: 에디터 번들 구조·한도(파일 50개·파일 512 KiB·전체 2 MiB·코드 512 KiB)·번들 해시, `output.data` 스키마(`output-data.v1`: `pattern` 금지, `uniqueItems`는 스칼라 배열만), 예시 문서를 로컬에서 검사합니다. 지연 로드 의심(`loading="lazy"`·동적 `import()`·CSS `url()`)은 경고로만 알립니다. 에디터 코드의 구문 트리 정적 검사(`editor-static-v1`)와 심사는 서버 판정이 최종입니다.
|
|
241
|
+
- `clack skill pack [dir] [-o out.zip] [--write-manifest]`: ZIP을 만들면서 `authoring.editor.sha256`을 번들 해시로 채웁니다. `--write-manifest`는 채운 값을 디렉터리의 `clack.skill.json`에도 기록합니다. `skill push`도 같은 값을 채워 올립니다.
|
|
242
|
+
- `clack skill editor dev [--editor <dir>] [--document <json>] [--schema <json>]`: SDK의 모의 호스트로 `http://localhost:5170`에서 에디터를 열어 봅니다(로그인 불필요). SDK(`@clack/skill-editor-sdk`)는 `--sdk-dir`, `CLACK_SKILL_EDITOR_SDK_DIR`, 현재 디렉터리에서 설치된 패키지, `CLACK_MONOREPO_DIR/clack-skill-editor-sdk` 순서로 찾으며, SDK에서 `pnpm build`를 먼저 실행해야 합니다.
|
|
243
|
+
|
|
244
|
+
스킬 에디터 SDK는 아직 npm에 공개되지 않았고 CLI 패키지에도 들어 있지 않습니다. SDK 소스 디렉터리(클랙 내부 작업자는 내부 저장소 체크아웃의 `clack-skill-editor-sdk`)에서 한 번 빌드한 뒤 그 위치를 알려 줍니다.
|
|
245
|
+
|
|
246
|
+
```sh
|
|
247
|
+
cd <내부 저장소>/clack-skill-editor-sdk && pnpm install && pnpm build
|
|
248
|
+
clack skill editor dev --sdk-dir <내부 저장소>/clack-skill-editor-sdk --editor ./editor --schema ./output/data.schema.json --document ./examples/basic.json
|
|
249
|
+
# 또는 CLACK_MONOREPO_DIR=<내부 저장소> clack skill editor dev ...
|
|
250
|
+
```
|
|
251
|
+
|
|
201
252
|
## 플랫폼 전용 PAT 도구(서버 키·공유 문서·콘텐츠 공개)
|
|
202
253
|
|
|
203
254
|
`platform:read`·`platform:write` 스코프의 개인 액세스 토큰(PAT)으로 내 콘텐츠의 서버 키(`csk_`)를 조회·폐기하고, 이용자가 쓴 공유(shared) 문서를 조회·숨김·삭제합니다. `platform:read`는 조회, `platform:write`는 폐기·숨김·삭제입니다. 서버 키 발급·회전은 PAT보다 오래 사는 비밀값을 만들므로 크리에이터 센터 로그인 세션에서만 할 수 있고, `content server-keys issue`·`rotate`는 센터 안내만 출력합니다. 서버 키 원문은 센터의 발급·회전 응답에만 한 번 담깁니다.
|
|
@@ -236,14 +287,14 @@ clack platform data patch scores slot --file ./score-patch.json --if-rev 1 --env
|
|
|
236
287
|
clack platform data delete scores slot --env dev
|
|
237
288
|
```
|
|
238
289
|
|
|
239
|
-
`clack mcp config --platform --env dev`는 서버 키 조회와 PAT 개인 도구를 함께 쓸 수 있는 로컬 stdio MCP 설정을 출력합니다. 에이전트 실행 환경에 서버 키 도구용 `CLACK_SERVER_KEY`,
|
|
290
|
+
`clack mcp config --platform --env dev`는 서버 키 조회와 PAT 개인 도구를 함께 쓸 수 있는 로컬 stdio MCP 설정을 출력합니다. 에이전트 실행 환경에 서버 키 도구용 `CLACK_SERVER_KEY`, 스킬·제작·콘텐츠 공개·공유 문서 도구용 `CLACK_TOKEN`(`platform:read`/`platform:write`, 필요 시 `skill:*`, 제작은 `creator-content:write`, 콘텐츠 공개는 `creator-content:publish`)을 각각 필요한 만큼만 설정합니다. 둘 다 로컬 프로세스 환경변수로만 전달되며 CLI 자격 파일에서 자동으로 읽지 않습니다. Claude 설정 조각은 기본 출력, Codex 설정 조각은 `--codex`로 받습니다. 설정에는 키·토큰 원문이 들어가지 않습니다.
|
|
240
291
|
|
|
241
292
|
```sh
|
|
242
293
|
clack mcp config --platform --env dev
|
|
243
294
|
clack mcp config --platform --codex --env dev
|
|
244
295
|
```
|
|
245
296
|
|
|
246
|
-
서버 키(`CLACK_SERVER_KEY`) 도구는 `platform_usage_get`, `platform_server_data_get/list/leaderboard/put/patch/delete`입니다. PAT(`CLACK_TOKEN`) 도구는 `platform_skill_list/get/push/status/submit/release`, `platform_content_publish`, `platform_shared_collections_list`, `platform_shared_documents_list`, `platform_shared_document_get/hide/delete`입니다. `platform_skill_push`는 `dir`(생략 시 현재 디렉터리)의 로컬 스킬 패키지를 검증·업로드합니다. 파괴적 도구(단일 문서 변경, 스킬 심사 제출·공개, 콘텐츠 공개, 공유 문서 숨김·삭제)는 먼저 미리보기와 `confirmation_required`를 반환하고, 입력에 `confirm: true`를 명시해야 실제 요청을 보냅니다. `mcp serve-platform`은 MCP 클라이언트가 실행하는 명령으로, 표준 출력은 JSON-RPC 메시지 전용입니다. 서버 키·PAT의 인증·스코프·테넌트 검사는 모두 API에서 수행합니다.
|
|
297
|
+
서버 키(`CLACK_SERVER_KEY`) 도구는 `platform_usage_get`, `platform_server_data_get/list/leaderboard/put/patch/delete`입니다. PAT(`CLACK_TOKEN`) 도구는 `platform_authoring`, `platform_skill_list/get/push/status/submit/release`, `platform_content_publish`, `platform_shared_collections_list`, `platform_shared_documents_list`, `platform_shared_document_get/hide/delete`입니다. `platform_skill_push`는 `dir`(생략 시 현재 디렉터리)의 로컬 스킬 패키지를 검증·업로드합니다. 파괴적 도구(단일 문서 변경, 스킬 심사 제출·공개, 콘텐츠 공개, 공유 문서 숨김·삭제)는 먼저 미리보기와 `confirmation_required`를 반환하고, 입력에 `confirm: true`를 명시해야 실제 요청을 보냅니다. `mcp serve-platform`은 MCP 클라이언트가 실행하는 명령으로, 표준 출력은 JSON-RPC 메시지 전용입니다. 서버 키·PAT의 인증·스코프·테넌트 검사는 모두 API에서 수행합니다.
|
|
247
298
|
|
|
248
299
|
## 세계관·공개 홈 꾸미기
|
|
249
300
|
|
|
@@ -273,7 +324,7 @@ clack page restore PAGE_ID PREVIOUS_VERSION_ID --revision 1
|
|
|
273
324
|
clack page disable PAGE_ID --revision 2
|
|
274
325
|
```
|
|
275
326
|
|
|
276
|
-
헤더는 `fixed`, `scroll_hide`, `translucent_scroll_hide`, `floating_close` 중 선택한다. 파일과 헤더를 한 버전으로 저장하므로 헤더만 바뀌어도 앱 확인·심사가 필요하다. 승인만으로 자동 적용되지 않으며 복원도 최신 수정 번호가 필요하다. 충돌 시 `status`를 다시 읽고 의도한 버전을 확인한다. 기본 화면 전환은 파일을 삭제하지 않는다. 업로드 완료 요청만 실패하면 오류에 표시된 `clack page complete PAGE_ID UPLOAD_ID`로 재시도할 수 있다.
|
|
327
|
+
헤더는 `fixed`, `scroll_hide`, `translucent_scroll_hide`, `floating_close`(전체 화면, 화면 끝까지), `floating_close_safe_area`(전체 화면, 안전 영역 안쪽) 중 선택한다. 파일과 헤더를 한 버전으로 저장하므로 헤더만 바뀌어도 앱 확인·심사가 필요하다. 승인만으로 자동 적용되지 않으며 복원도 최신 수정 번호가 필요하다. 충돌 시 `status`를 다시 읽고 의도한 버전을 확인한다. 기본 화면 전환은 파일을 삭제하지 않는다. 업로드 완료 요청만 실패하면 오류에 표시된 `clack page complete PAGE_ID UPLOAD_ID`로 재시도할 수 있다.
|
|
277
328
|
|
|
278
329
|
페이지 파일은 유지하고 헤더만 바꾸려면 `clack page presentation PAGE_ID VERSION_ID --header scroll_hide --color light`를 사용합니다. 새 비공개 버전이 만들어지며 응답의 새 버전 ID로 앱 확인과 심사를 다시 진행합니다. 기존 적용본은 유지됩니다.
|
|
279
330
|
|
|
@@ -286,7 +337,7 @@ clack page submit PAGE_ID NEW_VERSION_ID
|
|
|
286
337
|
clack page status PAGE_ID
|
|
287
338
|
```
|
|
288
339
|
|
|
289
|
-
`presentation`은 재호출하면 다른 버전을 만들므로 응답이 유실되면 `status`의 버전 이력을 먼저 확인한다. 같은 업로드를 확정하는 `complete`의 멱등 재시도와 구분한다. 파일은 재사용해도 새 버전은 일일 업로드·논리 저장 한도에 포함된다. 외부 MCP에서도 `revise_custom_page_presentation`으로 같은 작업을
|
|
340
|
+
`presentation`은 재호출하면 다른 버전을 만들므로 응답이 유실되면 `status`의 버전 이력을 먼저 확인한다. 같은 업로드를 확정하는 `complete`의 멱등 재시도와 구분한다. 파일은 재사용해도 새 버전은 일일 업로드·논리 저장 한도에 포함된다. 외부 MCP에서도 `revise_custom_page_presentation`으로 같은 작업을 수행한다. 헤더 값과 화면 표시·안전 영역 규칙은 스킬 저장소의 [페이지 헤더·화면 표시 규칙](https://github.com/clack-project/skills/blob/main/clack-page/references/presentation.md)을 참고한다.
|
|
290
341
|
|
|
291
342
|
### 이미지 화보·캐릭터 가져오기 제작
|
|
292
343
|
|
|
@@ -300,3 +351,7 @@ clack page status PAGE_ID
|
|
|
300
351
|
- AI 채우기는 `fill-quote` → `fill` → `fill-status`, 자산 목록은 `assets`, 이미지 작업 조회는 `tool`, 폼 검증은 `validate`를 사용한다.
|
|
301
352
|
|
|
302
353
|
`image_list` 값은 `[{"asset_id":"UUID","scene":"장면","pose":"구도","mood":"분위기","aspect":"1:1"}]`이며 한 번에 최대 8장, 콘텐츠당 최대 24장을 사용한다. 스킬의 `max_calls`와 플랫폼 설정 중 작은 한도를 적용한다. 참조 이미지 생성은 공급자 검증 전 비활성이며 현재 외모·화풍·팔레트 텍스트로 동일성을 안내한다.
|
|
354
|
+
|
|
355
|
+
크리에이터 센터·가이드는 `/ko`·`/en` 주소를 사용하며 로그인 상태에서는 앱 언어 설정을 따릅니다. 콘텐츠는 SDK 1.2.0의 `clack.locale` 또는 `window.__clack_env?.locale`에서 앱 언어(`language`)·기기 지역(`region`)·BCP 47 태그(`tag`)를 동기적으로 읽습니다. 번역은 `language`로 고르고 숫자·날짜는 `tag`를 `Intl`에 전달합니다. 기존 `me().locale`은 `ko|en`이고 `me().locale_tag`가 전체 태그입니다.
|
|
356
|
+
|
|
357
|
+
새 다국어 계약은 개발 센터와 최신 staging 테스터 앱에서 제공하며, 운영에서는 센터 초기 출시와 함께 별도로 활성화합니다. 상세 계약과 예제는 개발 센터의 가이드 P11(`/ko/guide/reference/platform/multilingual-content`)을 확인하세요. 앱 언어 환경값이 없는 구버전 앱에서는 `clack.locale.source`가 `browser`이며 브라우저 언어로 대체됩니다.
|