curl -L -o agent-artifact-publisher.skill "https://aiskillstore.io/v1/agent/skills/abdbfba5-eb97-4534-a310-b5630a0b0e7d/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "abdbfba5-eb97-4534-a310-b5630a0b0e7d",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Publish agent-generated markdown/HTML/code to a share link on the user's own GitHub Gist, GitLab Snippet, or Google Drive — full publish/update/delete/list lifecycle, one schema for all three backends.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
제공된 스킬 메타데이터와 코드 파일을 면밀히 검토한 결과, 다음과 같은 판단을 내렸습니다. 1. **선언된 permissions(network/filesystem/subprocess)과 실제 코드 일치 여부**: * `network: true`: `lib/http_util.py`에서 `urllib.request`를 사용하여 GitHub, GitLab, Google Drive API와 통신하는 것이 확인되었습니다. 이는 스킬의 핵심 기능에 필수적이며 선언된 권한과 일치합니다. * `filesystem: false`: 코드에서 사용자 파일 시스템에 접근하거나 파일을 읽고 쓰는 작업은 발견되지 않았습니다. `sys.path.insert`는 내부 모듈 로딩을 위한 것이며, 일반적인 파일 시스템 접근으로 간주되지 않습니다. * `subprocess: false`: `os.system`, `subprocess.run`, `eval`, `exec` 등 외부 프로세스를 실행할 수 있는 함수 호출은 발견되지 않았습니다. 정적 분석 결과(`forbidden_exec_files_found: []`)도 이를 뒷받침합니다. * `env_vars`: `GITHUB_TOKEN`, `GITLAB_TOKEN`, `GOOGLE_ACCESS_TOKEN`은 `os.environ.get()`을 통해 환경 변수에서 안전하게 로드됩니다. 2. **악의적 목적의 코드 여부**: 데이터 탈취, 시스템 파괴, 난독화 등 악의적인 목적으로 보이는 코드는 발견되지 않았습니다. 스킬의 목적은 사용자 제공 콘텐츠를 외부 서비스에 게시하는 것이며, 그 외의 불필요한 동작은 없습니다. 3. **선언되지 않은 외부 통신 여부**: 모든 외부 통신은 GitHub Gist, GitLab Snippet, Google Drive API 및 HTML 미리보기를 위한 `htmlpreview.github.io`로 이루어집니다. 이들은 스킬의 설명과 기능에 명시된 목적과 정확히 일치하며, 예상치 못한 통신은 없습니다. 4. **사용자 데이터 무단 수집/전송 여부**: 스킬은 사용자가 입력으로 제공하는 `content`와 `description`을 외부 서비스에 게시하는 용도로만 사용합니다. 이 외의 사용자 데이터를 무단으로 수집하거나 제3자에게 전송하는 행위는 발견되지 않았습니다. `provenance.py`에서 생성되는 세션 ID는 스킬이 게시한 아티팩트를 식별하기 위한 내부용이며, 사용자 식별 정보와는 무관합니다. 5. **코드 품질 및 목적 일치 여부**: 코드는 잘 구조화되어 있고, 표준 라이브러리를 사용하며, 명확한 오류 처리 로직을 가지고 있습니다. 백엔드 선택, 대체 로직, 입력 유효성 검사 등이 견고하게 구현되어 있습니다. `urllib` 사용은 외부 의존성을 최소화하려는 의도로 보이며, `BackendError` 클래스는 구조화된 오류 메시지를 제공하여 디버깅 및 사용자 경험에 긍정적입니다. 정적 분석 결과 또한 'approved' 상태로, 어떠한 위험 요소나 난독화, 금지된 실행 파일도 발견되지 않았습니다. 전반적으로 이 스킬은 안전하며, 선언된 기능과 권한에 충실하게 작동합니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
No 'backend' given, GITHUB_TOKEN configured -> auto-selects gist (top priority).
{
"action": "publish",
"content": "# Research Report\n\n## Key Findings\n- Finding one\n- Finding two",
"description": "Weekly research summary",
"filename": "research-report.md",
"public": false
}
{
"backend_used": "gist",
"created_at": "2026-08-22T02:10:00+00:00",
"files": [
{
"filename": "research-report.md",
"raw_url": "https://gist.githubusercontent.com/\u003cuser\u003e/3f2a9b1c.../raw/research-report.md"
}
],
"preview_url": null,
"raw_url": "https://gist.githubusercontent.com/\u003cuser\u003e/3f2a9b1c.../raw/research-report.md",
"resource_id": "gist:3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d",
"share_url": "https://gist.github.com/\u003cuser\u003e/3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d"
}
filename ends in .html -> preview_url is auto-generated via htmlpreview.github.io.
{
"action": "publish",
"content": "\u003chtml\u003e\u003cbody\u003e\u003ch1\u003eMetrics Dashboard\u003c/h1\u003e\u003cp\u003eUptime: 99.9%\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e",
"description": "Live metrics dashboard",
"filename": "dashboard.html",
"public": true
}
{
"backend_used": "gist",
"created_at": "2026-08-22T02:12:00+00:00",
"preview_url": "https://htmlpreview.github.io/?https://gist.githubusercontent.com/\u003cuser\u003e/7c1d2e3f.../raw/dashboard.html",
"raw_url": "https://gist.githubusercontent.com/\u003cuser\u003e/7c1d2e3f.../raw/dashboard.html",
"resource_id": "gist:7c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f",
"share_url": "https://gist.github.com/\u003cuser\u003e/7c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f"
}
GITHUB_TOKEN is absent; the skill silently skips gist and uses the next configured backend.
{
"action": "publish",
"content": "## Deploy Notes\nRollout completed at 02:00 UTC.",
"filename": "deploy-notes.md"
}
{
"backend_used": "gitlab",
"created_at": "2026-08-22T02:14:00+00:00",
"preview_url": null,
"raw_url": "https://gitlab.com/-/snippets/65432109/raw/main/deploy-notes.md",
"resource_id": "gitlab:65432109",
"share_url": "https://gitlab.com/-/snippets/65432109"
}
backend='gdrive' forces Drive even if GITHUB_TOKEN/GITLAB_TOKEN are also configured.
{
"action": "publish",
"backend": "gdrive",
"content": "# Q3 Plan (draft)\n\nBudget, milestones, owners.",
"description": "Q3 plan draft",
"filename": "quarterly-plan.md"
}
{
"backend_used": "gdrive",
"created_at": "2026-08-22T02:16:00+00:00",
"preview_url": null,
"raw_url": "https://drive.google.com/uc?id=1AbCdEfGhIjKlMnOpQrStUvWxYz2345\u0026export=download",
"resource_id": "gdrive:1AbCdEfGhIjKlMnOpQrStUvWxYz2345",
"share_url": "https://drive.google.com/file/d/1AbCdEfGhIjKlMnOpQrStUvWxYz2345/view"
}
update keeps resource_id and share_url identical; only content changes.
{
"action": "update",
"content": "# Research Report (corrected)\n\n## Key Findings\n- Finding one\n- Finding two, fixed",
"resource_id": "gist:3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d"
}
{
"backend_used": "gist",
"created_at": "2026-08-22T02:20:00+00:00",
"preview_url": null,
"raw_url": "https://gist.githubusercontent.com/\u003cuser\u003e/3f2a9b1c.../raw/research-report.md",
"resource_id": "gist:3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d",
"share_url": "https://gist.github.com/\u003cuser\u003e/3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d"
}
delete immediately revokes the share link. resource_id encodes the backend so no extra lookup is needed.
{
"action": "delete",
"resource_id": "gist:3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d"
}
{
"backend_used": "gist",
"deleted": true,
"resource_id": "gist:3f2a9b1c8e0d4a5b6c7d8e9f0a1b2c3d"
}
list_backends never calls a backend API — it only checks which env vars are set locally.
{
"action": "list_backends"
}
{
"available_backends": [
{
"backend": "gist",
"configured": true,
"env_var": "GITHUB_TOKEN"
},
{
"backend": "gitlab",
"configured": false,
"env_var": "GITLAB_TOKEN"
},
{
"backend": "gdrive",
"configured": false,
"env_var": "GOOGLE_ACCESS_TOKEN"
}
]
}
mock responses are never returned; a missing-token call fails loudly and stops.
{
"action": "publish",
"content": "test content"
}
{
"error": {
"code": "no_backend_configured",
"message": "No backend token is set. Provide at least one of GITHUB_TOKEN (gist), GITLAB_TOKEN (gitlab), or GOOGLE_ACCESS_TOKEN (gdrive)."
}
}
All examples are also available via the agent API:
/v1/agent/skills/abdbfba5-eb97-4534-a310-b5630a0b0e7d/schema
No reviews yet. Be the first to leave one!