소스 정보
- 저장소
- ccwq/infocard-pub
- 최근 소스 활동
- 2026년 8월 20일 13:40
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 1
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ccwq/infocard-pub --skill infocard-pub-hardening명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Use before infocard .docs authoring to select a registered theme from content-aware candidates. Owns the only content-to-theme association, capability filtering, bounded reproducible variation, and theme-decision.json.
Use when one URL or a complete user brief should become one published infocard through the .docs promotion workflow.
Light-batch publish 2–3 cards in parallel without worktree.
SKILL.md 표시 중
| name | infocard-pub-hardening |
| description | Infocard-pub 硬故障加固:截图 base64 截断/guard 误杀/npm 门禁/视觉验收失败。 |
| category | infocard |
| tags | ["infocard","build","screenshot","preflight","hardening"] |
| ID | 症状 | 根因 | 修复 |
|---|---|---|---|
| H-1 | npm run check-wiki-duplicate 超时或权限拒绝 | 审批门禁拦截只读 npm 命令 | 改用 grep 手动查重,或申请命令白名单 |
| H-2 | python3 -m http.server 被识别为长驻进程拦截 | 终端 guard 误杀 | 强制使用 live-server(见下方正确操作) |
| H-3 | browser_cdp desktop 截图 PNG/JPEG 文件损坏(broken chunk / 非 base64 字符) | persisted-output 对超长 base64 中间插入 ... 截断 | 必须指定 screenshot_path=绝对路径 走文件落盘,禁止 base64 返回 |
| H-4 | vision_analyze 接收截图失败或误判 | 直接传 base64 字符串或 file:// URL | 始终用已落盘的绝对路径传给 vision_analyze,禁止传 base64 |
症状:命令超时未响应,或返回权限错误。
临时绕行(不依赖门禁白名单):
# 手动 grep 查重(repo 根目录执行)
grep -r "slug\|title" docs/*.html.meta.yaml | grep -i "<关键词>"
grep -r "title:" docs/*.html.meta.yaml | grep -i "<关键词>"
长期解决:向门禁 owner 申请将 npm run check-wiki-duplicate 加入只读命令白名单。
症状:前台 python3 -m http.server 被识别为长驻进程,触发审批拦截。
正确操作:
# ❌ 禁止:前台 python http.server(会被 guard 误杀)
python3 -m http.server 5588
# ✅ 正确:使用 live-server
cd /path/to/wt-<slug>
command -v live-server >/dev/null || { echo "live-server is required on PATH" >&2; exit 1; }
live-server --port=5588 --host=10.6.8.14 .
验证:curl -s --max-time 5 http://10.6.8.14:5588/docs/<slug>.html | head -5
症状:PNG 文件无法打开("broken PNG chunk")、JPEG 解码失败(66 个非 base64 字符)。
根因:browser_cdp 返回的 base64 输出超过长度阈值时,persisted-output 在中间插入 ... 截断,导致 base64 字符串损坏。
正确操作:
// ✅ 正确:指定 screenshot_path 走文件落盘
browser_cdp({
method: 'Page.captureScreenshot',
params: { format: 'png', fullPage: false },
screenshot_path: '/tmp/card-desktop.png' // ← 必须指定
})
// ❌ 错误:返回 base64 到 terminal(会被截断)
browser_cdp({ method: 'Page.captureScreenshot', params: { format: 'png' } })
// → 超过长度时 base64 中间插入 "..." → 文件损坏
验证截图完整性:
file /tmp/card-desktop.png # 期望:PNG image data
identify /tmp/card-desktop.png # 期望:显示尺寸,无 error
症状:vision_analyze 报告无法读取图像、返回空结果,或误判页面内容。
根因:传入了 base64 字符串或 file:// 协议路径。
正确操作:
// Step 1:先用 browser_cdp 落盘截图(H-3 规则)
browser_cdp({
method: 'Page.captureScreenshot',
params: { format: 'png' },
screenshot_path: '/tmp/card-desktop.png'
})
// Step 2:vision_analyze 用绝对路径,禁止 base64
vision_analyze({
image_url: '/tmp/card-desktop.png', // ✅ 绝对路径
question: '桌面端视觉验收:critical/major/minor 并说明'
})
严禁:
image_url: 'data:image/png;base64,...'(会截断)image_url: 'file:///tmp/card-desktop.png'(file:// 在部分环境下不可用)执行 npm run build 前,依次确认:
npm run check-wiki-duplicate 超时 → 改手动 grep 查重screenshot_path 落盘,验证 file 命令确认完整live-server,禁止 python3 -m http.serverdate 为 ISO 格式 "YYYY-MM-DD HH:MM:SS",无尾部 ---npm run build 成功输出 wrote _index.yamlinfocard-authoring-workflow — 完整发布流程(worktree / meta.yaml / build / commit)browser-cdp-only-operations — 9222 CDP 强制规则infocard-visual-pass-loop — 视觉验收循环