{"data":{"skill":{"slug":"op7418-guizang-social-card-skill","name":"guizang-social-card-skill","icon":"📦","repo":"https://github.com/op7418/guizang-social-card-skill/tree/main/","status":"approved","author":"op7418","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"f646dc55-1978-4c10-9b43-4281895026a4","skill_id":"a93d1d7f-16d9-4eb2-8688-e04d24d6647c","version":3,"content_hash":"v2:3e4b6c31a74a3bd1a291c98cf585d720cb9fbc88:0c623a1db450e2a0fb95e910f2169f62f2ad9cbc7bcfc7ce92cd6ccb9e9a96ce:99e2fc7b0cca9f4e481b78785b1655b8b7bc4ffb876b0212a664cafbce4cc846:43f96b4d62f6310dfcedfd91a724963a","risk_level":"medium","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"Most static findings are false positives from Markdown code spans, CSS class names, design terminology, relative asset URLs, and legitimate local validation scripts. Confirmed issues are limited to remote template dependencies, public web image fetching, Mapbox network usage, and a curl-based asset workflow. Additional semantic review found token-handling and third-party package execution risks in the map and Live Photo workflows.","remediation":[{"issue":"Remote fonts and CDN script dependencies in seed templates","severity":"medium","suggestion":"Vendor fonts and icon scripts locally, or pin remote assets with integrity checks and document that rendering contacts external hosts."},{"issue":"Mapbox token can be embedded in generated map image URLs","severity":"medium","suggestion":"Use scoped public tokens, avoid writing tokenized URLs to committed files, and strip or redact tokens from provenance files and final reports."},{"issue":"Live Photo packaging executes third-party package code","severity":"medium","suggestion":"Pin makelive in every uvx example, require user confirmation before first install, and prefer a locked local environment for repeated use."},{"issue":"Web-sourced image workflow can fetch untrusted external files","severity":"low","suggestion":"Ask for explicit approval before web downloads, validate MIME type and size, keep files task-scoped, and retain source provenance."},{"issue":"Binary WebP texture assets are not statically inspectable","severity":"low","suggestion":"Track checksums and source notes for bundled binary assets, and re-review them when they change."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"assets/magazine-bg-webgl.js","line_end":53,"line_start":50},{"file":"assets/magazine-bg-webgl.js","line_end":99,"line_start":54},{"file":"README.en.md","line_end":288,"line_start":287},{"file":"README.en.md","line_end":293,"line_start":288},{"file":"README.md","line_end":287,"line_start":286},{"file":"README.md","line_end":292,"line_start":287},{"file":"scripts/check-skill-docs.mjs","line_end":16,"line_start":16},{"file":"scripts/check-skill-docs.mjs","line_end":27,"line_start":27},{"file":"scripts/check-skill-docs.mjs","line_end":64,"line_start":64},{"file":"scripts/check-skill-docs.mjs","line_end":85,"line_start":85},{"file":"scripts/check-skill-docs.mjs","line_end":176,"line_start":176},{"file":"scripts/check-skill-docs.mjs","line_end":179,"line_start":179},{"file":"scripts/check-skill-docs.mjs","line_end":184,"line_start":184},{"file":"scripts/check-skill-docs.mjs","line_end":188,"line_start":188},{"file":"scripts/make-video-contact-sheet.py","line_end":14,"line_start":14},{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":23,"line_start":23},{"file":"SKILL.md","line_end":35,"line_start":35},{"file":"SKILL.md","line_end":70,"line_start":70},{"file":"SKILL.md","line_end":71,"line_start":71},{"file":"SKILL.md","line_end":72,"line_start":72},{"file":"SKILL.md","line_end":73,"line_start":73},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":77,"line_start":77},{"file":"SKILL.md","line_end":78,"line_start":78},{"file":"SKILL.md","line_end":79,"line_start":79},{"file":"SKILL.md","line_end":80,"line_start":80},{"file":"SKILL.md","line_end":81,"line_start":81},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":84,"line_start":84},{"file":"SKILL.md","line_end":85,"line_start":85},{"file":"SKILL.md","line_end":95,"line_start":95},{"file":"SKILL.md","line_end":97,"line_start":97},{"file":"SKILL.md","line_end":105,"line_start":100},{"file":"SKILL.md","line_end":128,"line_start":105},{"file":"SKILL.md","line_end":128,"line_start":128},{"file":"SKILL.md","line_end":131,"line_start":130},{"file":"SKILL.md","line_end":160,"line_start":131},{"file":"SKILL.md","line_end":166,"line_start":160},{"file":"SKILL.md","line_end":170,"line_start":166},{"file":"SKILL.md","line_end":174,"line_start":170},{"file":"SKILL.md","line_end":176,"line_start":174},{"file":"SKILL.md","line_end":178,"line_start":176},{"file":"SKILL.md","line_end":178,"line_start":178},{"file":"SKILL.md","line_end":190,"line_start":182},{"file":"SKILL.md","line_end":190,"line_start":190},{"file":"SKILL.md","line_end":191,"line_start":191}]},{"factor":"network","evidence":[{"file":"assets/template-editorial-card.html","line_end":7,"line_start":7},{"file":"assets/template-editorial-card.html","line_end":8,"line_start":8},{"file":"assets/template-editorial-card.html","line_end":9,"line_start":9},{"file":"assets/template-swiss-card.html","line_end":7,"line_start":7},{"file":"assets/template-swiss-card.html","line_end":8,"line_start":8},{"file":"assets/template-swiss-card.html","line_end":9,"line_start":9},{"file":"assets/template-swiss-card.html","line_end":10,"line_start":10},{"file":"LICENSE","line_end":4,"line_start":4},{"file":"LICENSE","line_end":646,"line_start":646},{"file":"LICENSE","line_end":661,"line_start":661},{"file":"README.en.md","line_end":27,"line_start":27},{"file":"README.en.md","line_end":33,"line_start":33},{"file":"README.en.md","line_end":163,"line_start":163},{"file":"README.en.md","line_end":180,"line_start":180},{"file":"README.md","line_end":27,"line_start":27},{"file":"README.md","line_end":33,"line_start":33},{"file":"README.md","line_end":163,"line_start":163},{"file":"README.md","line_end":180,"line_start":180},{"file":"references/map-component.md","line_end":22,"line_start":22},{"file":"references/map-component.md","line_end":31,"line_start":31},{"file":"SKILL.md","line_end":262,"line_start":262},{"file":"SKILL.md","line_end":263,"line_start":263},{"file":"SKILL.md","line_end":264,"line_start":264},{"file":"SKILL.md","line_end":265,"line_start":265}]},{"factor":"filesystem","evidence":[{"file":"assets/template-editorial-card.html","line_end":425,"line_start":425},{"file":"assets/template-editorial-card.html","line_end":426,"line_start":426},{"file":"assets/template-editorial-card.html","line_end":427,"line_start":427},{"file":"assets/template-editorial-card.html","line_end":428,"line_start":428},{"file":"assets/template-editorial-card.html","line_end":429,"line_start":429},{"file":"assets/template-swiss-card.html","line_end":416,"line_start":416},{"file":"assets/template-swiss-card.html","line_end":417,"line_start":417},{"file":"assets/template-swiss-card.html","line_end":418,"line_start":418},{"file":"assets/template-swiss-card.html","line_end":419,"line_start":419},{"file":"HANDOFF.md","line_end":138,"line_start":138},{"file":"HANDOFF.md","line_end":459,"line_start":459},{"file":"HANDOFF.md","line_end":401,"line_start":401},{"file":"HANDOFF.md","line_end":459,"line_start":459},{"file":"PRODUCT.md","line_end":214,"line_start":214},{"file":"PRODUCT.md","line_end":214,"line_start":214},{"file":"README.en.md","line_end":33,"line_start":33},{"file":"README.en.md","line_end":39,"line_start":39},{"file":"README.en.md","line_end":170,"line_start":170},{"file":"README.en.md","line_end":171,"line_start":171},{"file":"README.en.md","line_end":172,"line_start":172},{"file":"README.en.md","line_end":180,"line_start":180},{"file":"README.en.md","line_end":33,"line_start":33},{"file":"README.en.md","line_end":39,"line_start":39},{"file":"README.en.md","line_end":170,"line_start":170},{"file":"README.en.md","line_end":171,"line_start":171},{"file":"README.en.md","line_end":172,"line_start":172},{"file":"README.en.md","line_end":180,"line_start":180},{"file":"README.md","line_end":33,"line_start":33},{"file":"README.md","line_end":39,"line_start":39},{"file":"README.md","line_end":170,"line_start":170},{"file":"README.md","line_end":171,"line_start":171},{"file":"README.md","line_end":172,"line_start":172},{"file":"README.md","line_end":180,"line_start":180},{"file":"README.md","line_end":33,"line_start":33},{"file":"README.md","line_end":39,"line_start":39},{"file":"README.md","line_end":170,"line_start":170},{"file":"README.md","line_end":171,"line_start":171},{"file":"README.md","line_end":172,"line_start":172},{"file":"README.md","line_end":180,"line_start":180},{"file":"references/live-photo-production.md","line_end":226,"line_start":226},{"file":"references/live-photo-production.md","line_end":227,"line_start":227},{"file":"references/live-photo-production.md","line_end":234,"line_start":234},{"file":"references/live-photo-production.md","line_end":235,"line_start":235},{"file":"references/live-photo-production.md","line_end":640,"line_start":640},{"file":"references/live-photo-production.md","line_end":644,"line_start":644},{"file":"references/live-photo-production.md","line_end":648,"line_start":648},{"file":"references/live-photo-production.md","line_end":799,"line_start":799},{"file":"references/live-photo-production.md","line_end":800,"line_start":800},{"file":"references/map-component.md","line_end":31,"line_start":31},{"file":"references/screenshot-treatment.md","line_end":110,"line_start":110}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Hardcoded URL","locations":[{"file":"assets/template-swiss-card.html","line_end":10,"line_start":10}],"confidence":0.88,"description":"<script src=\"https://unpkg.com/lucide@latest/dist/umd/lucide.min.js\"></script>","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The Swiss seed template loads lucide from unpkg at render time, which executes third-party JavaScript in the browser context. This is an intentional dependency but remains a supply-chain and network exposure risk."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":272,"line_start":272}],"confidence":0.72,"description":"- Use WebFetch or `curl` to download the image into the task folder's `assets/` directory.","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This line explicitly permits using curl to download web images into task assets. The command is task-scoped, but it is real external command and network behavior."},{"title":"Map API Token Exposure Risk","locations":[{"file":"references/map-component.md","line_end":31,"line_start":19}],"confidence":0.82,"description":"The map component guidance builds Mapbox Static image URLs with an access_token query parameter. Generated HTML or provenance files can expose scoped map tokens if shared or committed.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The documentation explicitly requires MAPBOX_ACCESS_TOKEN and shows the token embedded in an image URL. The risk depends on generated artifact handling, but the exposure path is clear."},{"title":"Third-Party Package Execution For Live Photo Packaging","locations":[{"file":"references/live-photo-production.md","line_end":228,"line_start":209},{"file":"scripts/package-live-photo.py","line_end":8,"line_start":6}],"confidence":0.86,"description":"The Live Photo workflow uses uvx and makelive to execute third-party package code during packaging. Some examples omit the pinned version even though the text recommends pinning.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The commands are documented and the wrapper imports makelive directly. This is legitimate functionality, but it introduces package supply-chain risk and should be pinned and confirmed."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"assets/template-editorial-card.html","line_end":7,"line_start":7}],"confidence":0.82,"description":"<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The editorial seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency."},{"title":"Hardcoded URL","locations":[{"file":"assets/template-editorial-card.html","line_end":8,"line_start":8}],"confidence":0.82,"description":"<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The editorial seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency."},{"title":"Hardcoded URL","locations":[{"file":"assets/template-editorial-card.html","line_end":9,"line_start":9}],"confidence":0.82,"description":"<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;700","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The editorial seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency."},{"title":"Hardcoded URL","locations":[{"file":"assets/template-swiss-card.html","line_end":7,"line_start":7}],"confidence":0.82,"description":"<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency."},{"title":"Hardcoded URL","locations":[{"file":"assets/template-swiss-card.html","line_end":8,"line_start":8}],"confidence":0.82,"description":"<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency."},{"title":"Hardcoded URL","locations":[{"file":"assets/template-swiss-card.html","line_end":9,"line_start":9}],"confidence":0.82,"description":"<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency."},{"title":"Hardcoded URL","locations":[{"file":"references/map-component.md","line_end":22,"line_start":22}],"confidence":0.8,"description":"https://api.mapbox.com/styles/v1/mapbox/light-v11/static/","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The map reference documents Mapbox Static image URLs for real route rendering. This is intentional map functionality, but it relies on a third-party network service."},{"title":"Hardcoded URL","locations":[{"file":"references/map-component.md","line_end":31,"line_start":31}],"confidence":0.8,"description":"<img src=\"https://api.mapbox.com/styles/v1/mapbox/light-v11/static/.../1200x675@2x?access_token=...\"","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The map reference documents Mapbox Static image URLs for real route rendering. This is intentional map functionality, but it relies on a third-party network service."},{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":262,"line_start":262}],"confidence":0.76,"description":"1. **Unsplash** — `https://unsplash.com/s/photos/<keyword>`. Strong for outdoor / lifestyle / atmosp","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production."},{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":263,"line_start":263}],"confidence":0.76,"description":"2. **Pexels** — `https://www.pexels.com/search/<keyword>/` or `https://www.pexels.com/zh-cn/search/<","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production."},{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":264,"line_start":264}],"confidence":0.76,"description":"3. **Flickr CC-licensed pool** — `https://www.flickr.com/search/?text=<keyword>&license=2%2C3%2C4%2C","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production."},{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":265,"line_start":265}],"confidence":0.76,"description":"4. **Wallhaven** — `https://wallhaven.cc/search?q=<keyword>`. Strong for game / anime / wallpaper th","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-b/lemon-grid.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-b/lemon-green-dot-shadow.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-b/safety-orange-halftone.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-b/ikb-dot-gradient.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-a/kraft-paper.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-a/monocle-classic.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-a/indigo-porcelain.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-a/dune.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."},{"title":"Unscanned file (binary) — manual review required","locations":[{"file":"assets/screenshot-backgrounds/style-a/forest-ink.webp","line_end":1,"line_start":1}],"confidence":1,"description":"[unscanned: binary]","review_kind":"security","source_category":"metadata","source_severity":"low","confidence_reasoning":"Force-confirmed metadata/low static finding; AI false-positive verdict rejected."}],"dangerous_patterns":[],"files_scanned":35,"total_lines":9783,"audit_model":"codex","audited_at":"2026-07-09T07:23:21.671+00:00","created_at":"2026-07-09T10:47:24.722733+00:00","static_findings":[{"id":"external_commands:assets/magazine-bg-webgl.js:50:ruby-shell-backtick-execution","file":"assets/magazine-bg-webgl.js","pattern":"Ruby/shell backtick execution","snippet":"const vert = `","category":"external_commands","line_end":53,"severity":"medium","line_start":50},{"id":"external_commands:assets/magazine-bg-webgl.js:54:ruby-shell-backtick-execution","file":"assets/magazine-bg-webgl.js","pattern":"Ruby/shell backtick execution","snippet":"const frag = `","category":"external_commands","line_end":99,"severity":"medium","line_start":54},{"id":"blocker:assets/magazine-bg-webgl.js:52:system-reconnaissance","file":"assets/magazine-bg-webgl.js","pattern":"System reconnaissance","snippet":"void main(){ gl_Position = vec4(aPos, 0.0, 1.0); }","category":"blocker","line_end":52,"severity":"low","line_start":52},{"id":"blocker:assets/magazine-bg-webgl.js:85:system-reconnaissance","file":"assets/magazine-bg-webgl.js","pattern":"System reconnaissance","snippet":"void main(){","category":"blocker","line_end":85,"severity":"low","line_start":85},{"id":"network:assets/template-editorial-card.html:7:hardcoded-url","file":"assets/template-editorial-card.html","pattern":"Hardcoded URL","snippet":"<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">","category":"network","line_end":7,"severity":"low","line_start":7},{"id":"network:assets/template-editorial-card.html:8:hardcoded-url","file":"assets/template-editorial-card.html","pattern":"Hardcoded URL","snippet":"<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"network:assets/template-editorial-card.html:9:hardcoded-url","file":"assets/template-editorial-card.html","pattern":"Hardcoded URL","snippet":"<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;700","category":"network","line_end":9,"severity":"low","line_start":9},{"id":"filesystem:assets/template-editorial-card.html:425:path-traversal-sequence","file":"assets/template-editorial-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-dune             { background: #d8c9a8 url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":425,"severity":"high","line_start":425},{"id":"filesystem:assets/template-editorial-card.html:426:path-traversal-sequence","file":"assets/template-editorial-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-forest-ink       { background: #1f2a24 url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":426,"severity":"high","line_start":426},{"id":"filesystem:assets/template-editorial-card.html:427:path-traversal-sequence","file":"assets/template-editorial-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-indigo-porcelain { background: #cfd6dd url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":427,"severity":"high","line_start":427},{"id":"filesystem:assets/template-editorial-card.html:428:path-traversal-sequence","file":"assets/template-editorial-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-kraft-paper      { background: #c9a983 url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":428,"severity":"high","line_start":428},{"id":"filesystem:assets/template-editorial-card.html:429:path-traversal-sequence","file":"assets/template-editorial-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-monocle-classic  { background: #e8e1d4 url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":429,"severity":"high","line_start":429},{"id":"blocker:assets/template-editorial-card.html:386:screen-capture-upload","file":"assets/template-editorial-card.html","pattern":"Screen capture upload","snippet":"/* Use for UI screenshots / web captures / code shots. Replaces .frame-img","category":"blocker","line_end":386,"severity":"high","line_start":386},{"id":"blocker:assets/template-editorial-card.html:325:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-top: 1px solid var(--line);","category":"blocker","line_end":325,"severity":"low","line_start":325},{"id":"blocker:assets/template-editorial-card.html:410:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":".frame-shot.bg-grid     {","category":"blocker","line_end":410,"severity":"low","line_start":410},{"id":"blocker:assets/template-editorial-card.html:461:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border: 1px solid var(--line);","category":"blocker","line_end":461,"severity":"low","line_start":461},{"id":"blocker:assets/template-editorial-card.html:470:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-bottom: 1px solid var(--line);","category":"blocker","line_end":470,"severity":"low","line_start":470},{"id":"blocker:assets/template-editorial-card.html:524:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":".map-block > svg .map-grid  { stroke: var(--line); stroke-width: .15; opacity: .55; }","category":"blocker","line_end":524,"severity":"low","line_start":524},{"id":"blocker:assets/template-editorial-card.html:538:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border: 2px solid var(--paper);","category":"blocker","line_end":538,"severity":"low","line_start":538},{"id":"blocker:assets/template-editorial-card.html:595:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-left: 3px solid var(--accent);","category":"blocker","line_end":595,"severity":"low","line_start":595},{"id":"blocker:assets/template-editorial-card.html:621:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-bottom: 1px solid var(--line);","category":"blocker","line_end":621,"severity":"low","line_start":621},{"id":"blocker:assets/template-editorial-card.html:650:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-left: 1px solid var(--line);","category":"blocker","line_end":650,"severity":"low","line_start":650},{"id":"blocker:assets/template-editorial-card.html:668:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-bottom: 1px solid var(--line);","category":"blocker","line_end":668,"severity":"low","line_start":668},{"id":"blocker:assets/template-editorial-card.html:701:system-reconnaissance","file":"assets/template-editorial-card.html","pattern":"System reconnaissance","snippet":"border-left: 3px solid var(--accent);","category":"blocker","line_end":701,"severity":"low","line_start":701},{"id":"network:assets/template-swiss-card.html:7:hardcoded-url","file":"assets/template-swiss-card.html","pattern":"Hardcoded URL","snippet":"<link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">","category":"network","line_end":7,"severity":"low","line_start":7},{"id":"network:assets/template-swiss-card.html:8:hardcoded-url","file":"assets/template-swiss-card.html","pattern":"Hardcoded URL","snippet":"<link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>","category":"network","line_end":8,"severity":"low","line_start":8},{"id":"network:assets/template-swiss-card.html:9:hardcoded-url","file":"assets/template-swiss-card.html","pattern":"Hardcoded URL","snippet":"<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600","category":"network","line_end":9,"severity":"low","line_start":9},{"id":"network:assets/template-swiss-card.html:10:hardcoded-url","file":"assets/template-swiss-card.html","pattern":"Hardcoded URL","snippet":"<script src=\"https://unpkg.com/lucide@latest/dist/umd/lucide.min.js\"></script>","category":"network","line_end":10,"severity":"low","line_start":10},{"id":"filesystem:assets/template-swiss-card.html:416:path-traversal-sequence","file":"assets/template-swiss-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-ikb-dot          { background: #0c1a3a url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":416,"severity":"high","line_start":416},{"id":"filesystem:assets/template-swiss-card.html:417:path-traversal-sequence","file":"assets/template-swiss-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-lemon-green-dot  { background: #d6e08a url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":417,"severity":"high","line_start":417},{"id":"filesystem:assets/template-swiss-card.html:418:path-traversal-sequence","file":"assets/template-swiss-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-lemon-grid       { background: #e6e9b8 url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":418,"severity":"high","line_start":418},{"id":"filesystem:assets/template-swiss-card.html:419:path-traversal-sequence","file":"assets/template-swiss-card.html","pattern":"Path traversal sequence","snippet":".frame-shot.bg-asset-safety-orange    { background: #ff5b1f url(\"../assets/screenshot-backgrounds/st","category":"filesystem","line_end":419,"severity":"high","line_start":419},{"id":"blocker:assets/template-swiss-card.html:342:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border: 1px solid var(--grey-2);","category":"blocker","line_end":342,"severity":"low","line_start":342},{"id":"blocker:assets/template-swiss-card.html:397:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"/* background tones — pure / dot / grid only. No accent colour fills. */","category":"blocker","line_end":397,"severity":"low","line_start":397},{"id":"blocker:assets/template-swiss-card.html:401:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":".frame-shot.bg-grid     {","category":"blocker","line_end":401,"severity":"low","line_start":401},{"id":"blocker:assets/template-swiss-card.html:418:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":".frame-shot.bg-asset-lemon-grid       { background: #e6e9b8 url(\"../assets/screenshot-backgrounds/st","category":"blocker","line_end":418,"severity":"low","line_start":418},{"id":"blocker:assets/template-swiss-card.html:448:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border: 1px solid var(--grey-2);","category":"blocker","line_end":448,"severity":"low","line_start":448},{"id":"blocker:assets/template-swiss-card.html:457:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border-bottom: 1px solid var(--grey-2);","category":"blocker","line_end":457,"severity":"low","line_start":457},{"id":"blocker:assets/template-swiss-card.html:511:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":".map-block > svg .map-grid  { stroke: var(--grey-2); stroke-width: .15; opacity: .5; }","category":"blocker","line_end":511,"severity":"low","line_start":511},{"id":"blocker:assets/template-swiss-card.html:524:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border: 2px solid var(--paper);","category":"blocker","line_end":524,"severity":"low","line_start":524},{"id":"blocker:assets/template-swiss-card.html:614:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border-top: 1px solid var(--grey-2);","category":"blocker","line_end":614,"severity":"low","line_start":614},{"id":"blocker:assets/template-swiss-card.html:735:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border-bottom: 1px solid var(--grey-2);","category":"blocker","line_end":735,"severity":"low","line_start":735},{"id":"blocker:assets/template-swiss-card.html:806:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border-top: 1px solid var(--grey-2);","category":"blocker","line_end":806,"severity":"low","line_start":806},{"id":"blocker:assets/template-swiss-card.html:843:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":"border-bottom: 1px solid var(--grey-2);","category":"blocker","line_end":843,"severity":"low","line_start":843},{"id":"blocker:assets/template-swiss-card.html:876:system-reconnaissance","file":"assets/template-swiss-card.html","pattern":"System reconnaissance","snippet":".poster *[style*=\"linear-gradient\"] { outline: 4px solid red !important; }","category":"blocker","line_end":876,"severity":"low","line_start":876},{"id":"filesystem:HANDOFF.md:138:path-traversal-sequence","file":"HANDOFF.md","pattern":"Path traversal sequence","snippet":"- 素材路径用相对 URL `../assets/screenshot-backgrounds/style-{a|b}/{name}.webp`,假设 deck 的 `index.html` 在 `l","category":"filesystem","line_end":138,"severity":"high","line_start":138},{"id":"filesystem:HANDOFF.md:459:hidden-file-in-home-directory","file":"HANDOFF.md","pattern":"Hidden file in home directory","snippet":"- 不要改 PPT skill(在 `~/.claude/skills/guizang-ppt-skill/`)。本 skill 借了它的视觉原则但**独立维护**。","category":"filesystem","line_end":459,"severity":"high","line_start":459},{"id":"filesystem:HANDOFF.md:401:hidden-file-access","file":"HANDOFF.md","pattern":"Hidden file access","snippet":"python3 /Users/guohao/.agents/skills/skill-creator/scripts/quick_validate.py .","category":"filesystem","line_end":401,"severity":"medium","line_start":401},{"id":"filesystem:HANDOFF.md:459:hidden-file-access","file":"HANDOFF.md","pattern":"Hidden file access","snippet":"- 不要改 PPT skill(在 `~/.claude/skills/guizang-ppt-skill/`)。本 skill 借了它的视觉原则但**独立维护**。","category":"filesystem","line_end":459,"severity":"medium","line_start":459},{"id":"blocker:HANDOFF.md:24:system-reconnaissance","file":"HANDOFF.md","pattern":"System reconnaissance","snippet":"│       └── style-b/                   #   4 张 Swiss(ikb-dot / lemon-green-dot / lemon-grid / safety","category":"blocker","line_end":24,"severity":"low","line_start":24},{"id":"blocker:HANDOFF.md:125:system-reconnaissance","file":"HANDOFF.md","pattern":"System reconnaissance","snippet":"主题:**截图美化素材从 PPT skill 迁移**。v0.11 当时只 port 了规则文档(`references/screenshot-treatment.md` 154 行)和工具类(`.f","category":"blocker","line_end":125,"severity":"low","line_start":125},{"id":"blocker:HANDOFF.md:133:system-reconnaissance","file":"HANDOFF.md","pattern":"System reconnaissance","snippet":"- `references/screenshot-treatment.md` 加 \"Solid `bg-*` vs asset `bg-asset-*`\" 小节:两张对照表 + 4 条 rules o","category":"blocker","line_end":133,"severity":"low","line_start":133},{"id":"blocker:HANDOFF.md:141:system-reconnaissance","file":"HANDOFF.md","pattern":"System reconnaissance","snippet":"- `r-3x4` / `r-1x1` 高比例板仍优先用 solid `bg-*`,asset 材质在过裁切时会变怪","category":"blocker","line_end":141,"severity":"low","line_start":141},{"id":"network:LICENSE:4:hardcoded-url","file":"LICENSE","pattern":"Hardcoded URL","snippet":"Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>","category":"network","line_end":4,"severity":"low","line_start":4},{"id":"network:LICENSE:646:hardcoded-url","file":"LICENSE","pattern":"Hardcoded URL","snippet":"along with this program.  If not, see <https://www.gnu.org/licenses/>.","category":"network","line_end":646,"severity":"low","line_start":646},{"id":"network:LICENSE:661:hardcoded-url","file":"LICENSE","pattern":"Hardcoded URL","snippet":"<https://www.gnu.org/licenses/>.","category":"network","line_end":661,"severity":"low","line_start":661},{"id":"blocker:LICENSE:175:system-reconnaissance","file":"LICENSE","pattern":"System reconnaissance","snippet":"When you convey a covered work, you waive any legal power to forbid","category":"blocker","line_end":176,"severity":"low","line_start":175},{"id":"blocker:LICENSE:180:system-reconnaissance","file":"LICENSE","pattern":"System reconnaissance","snippet":"users, your or third parties' legal rights to forbid circumvention of","category":"blocker","line_end":180,"severity":"low","line_start":180},{"id":"blocker:LICENSE:247:system-reconnaissance","file":"LICENSE","pattern":"System reconnaissance","snippet":"written offer, valid for at least three years and valid for as","category":"blocker","line_end":247,"severity":"low","line_start":247},{"id":"blocker:LICENSE:337:system-reconnaissance","file":"LICENSE","pattern":"System reconnaissance","snippet":"that they are valid under applicable law.  If additional permissions","category":"blocker","line_end":337,"severity":"low","line_start":337},{"id":"filesystem:PRODUCT.md:214:hidden-file-in-home-directory","file":"PRODUCT.md","pattern":"Hidden file in home directory","snippet":"**执行路径**:`~/.claude/skills/guizang-ppt-skill/` 已经有现成的截图处理资产,直接 port 过来即可(与 v0.4 拷 Swiss class 的方式一致—","category":"filesystem","line_end":214,"severity":"high","line_start":214},{"id":"filesystem:PRODUCT.md:214:hidden-file-access","file":"PRODUCT.md","pattern":"Hidden file access","snippet":"**执行路径**:`~/.claude/skills/guizang-ppt-skill/` 已经有现成的截图处理资产,直接 port 过来即可(与 v0.4 拷 Swiss class 的方式一致—","category":"filesystem","line_end":214,"severity":"medium","line_start":214},{"id":"blocker:PRODUCT.md:40:system-reconnaissance","file":"PRODUCT.md","pattern":"System reconnaissance","snippet":"- Massimo Vignelli / Helmut Schmid 的瑞士网格","category":"blocker","line_end":40,"severity":"low","line_start":40},{"id":"external_commands:README.en.md:287:ruby-shell-backtick-execution","file":"README.en.md","pattern":"Ruby/shell backtick execution","snippet":"├── screenshot-treatment.md           ← `.frame-shot` utilities + screenshot beautification","category":"external_commands","line_end":288,"severity":"medium","line_start":287},{"id":"external_commands:README.en.md:288:ruby-shell-backtick-execution","file":"README.en.md","pattern":"Ruby/shell backtick execution","snippet":"├── map-component.md                  ← `.map-block` MapLibre map","category":"external_commands","line_end":293,"severity":"medium","line_start":288},{"id":"network:README.en.md:27:hardcoded-url","file":"README.en.md","pattern":"Hardcoded URL","snippet":"npx skills add https://github.com/op7418/guizang-social-card-skill --skill guizang-social-card-skill","category":"network","line_end":27,"severity":"low","line_start":27},{"id":"network:README.en.md:33:hardcoded-url","file":"README.en.md","pattern":"Hardcoded URL","snippet":"Install guizang-social-card-skill for me. Clone https://github.com/op7418/guizang-social-card-skill ","category":"network","line_end":33,"severity":"low","line_start":33},{"id":"network:README.en.md:163:hardcoded-url","file":"README.en.md","pattern":"Hardcoded URL","snippet":"npx skills add https://github.com/op7418/guizang-social-card-skill --skill guizang-social-card-skill","category":"network","line_end":163,"severity":"low","line_start":163},{"id":"network:README.en.md:180:hardcoded-url","file":"README.en.md","pattern":"Hardcoded URL","snippet":"git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-social-ca","category":"network","line_end":180,"severity":"low","line_start":180},{"id":"filesystem:README.en.md:33:hidden-file-in-home-directory","file":"README.en.md","pattern":"Hidden file in home directory","snippet":"Install guizang-social-card-skill for me. Clone https://github.com/op7418/guizang-social-card-skill ","category":"filesystem","line_end":33,"severity":"high","line_start":33},{"id":"filesystem:README.en.md:39:hidden-file-in-home-directory","file":"README.en.md","pattern":"Hidden file in home directory","snippet":"Update guizang-social-card-skill for me. Go to ~/.claude/skills/guizang-social-card-skill, run git p","category":"filesystem","line_end":39,"severity":"high","line_start":39},{"id":"filesystem:README.en.md:170:hidden-file-in-home-directory","file":"README.en.md","pattern":"Hidden file in home directory","snippet":"> 1. Make sure `~/.claude/skills/` exists (create if not)","category":"filesystem","line_end":170,"severity":"high","line_start":170},{"id":"filesystem:README.en.md:171:hidden-file-in-home-directory","file":"README.en.md","pattern":"Hidden file in home directory","snippet":"> 2. Run `git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang","category":"filesystem","line_end":171,"severity":"high","line_start":171},{"id":"filesystem:README.en.md:172:hidden-file-in-home-directory","file":"README.en.md","pattern":"Hidden file in home directory","snippet":"> 3. Verify: `ls ~/.claude/skills/guizang-social-card-skill/` should show `SKILL.md`, `assets/`, `re","category":"filesystem","line_end":172,"severity":"high","line_start":172},{"id":"filesystem:README.en.md:180:hidden-file-in-home-directory","file":"README.en.md","pattern":"Hidden file in home directory","snippet":"git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-social-ca","category":"filesystem","line_end":180,"severity":"high","line_start":180},{"id":"filesystem:README.en.md:33:hidden-file-access","file":"README.en.md","pattern":"Hidden file access","snippet":"Install guizang-social-card-skill for me. Clone https://github.com/op7418/guizang-social-card-skill ","category":"filesystem","line_end":33,"severity":"medium","line_start":33},{"id":"filesystem:README.en.md:39:hidden-file-access","file":"README.en.md","pattern":"Hidden file access","snippet":"Update guizang-social-card-skill for me. Go to ~/.claude/skills/guizang-social-card-skill, run git p","category":"filesystem","line_end":39,"severity":"medium","line_start":39},{"id":"filesystem:README.en.md:170:hidden-file-access","file":"README.en.md","pattern":"Hidden file access","snippet":"> 1. Make sure `~/.claude/skills/` exists (create if not)","category":"filesystem","line_end":170,"severity":"medium","line_start":170},{"id":"filesystem:README.en.md:171:hidden-file-access","file":"README.en.md","pattern":"Hidden file access","snippet":"> 2. Run `git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang","category":"filesystem","line_end":171,"severity":"medium","line_start":171},{"id":"filesystem:README.en.md:172:hidden-file-access","file":"README.en.md","pattern":"Hidden file access","snippet":"> 3. Verify: `ls ~/.claude/skills/guizang-social-card-skill/` should show `SKILL.md`, `assets/`, `re","category":"filesystem","line_end":172,"severity":"medium","line_start":172},{"id":"filesystem:README.en.md:180:hidden-file-access","file":"README.en.md","pattern":"Hidden file access","snippet":"git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-social-ca","category":"filesystem","line_end":180,"severity":"medium","line_start":180},{"id":"blocker:README.en.md:13:at-command-scheduling","file":"README.en.md","pattern":"at command scheduling","snippet":"An agent skill for Claude Code, Codex, and similar coding-agent environments. It generates **Xiaohon","category":"blocker","line_end":13,"severity":"medium","line_start":13},{"id":"blocker:README.en.md:62:at-command-scheduling","file":"README.en.md","pattern":"at command scheduling","snippet":"- 📐 **3 canvas sizes**: `.poster.xhs` 1080×1440 (Xiaohongshu 3:4), `.poster.wide` 2100×900 (WeChat ","category":"blocker","line_end":62,"severity":"medium","line_start":62},{"id":"blocker:README.en.md:189:at-command-scheduling","file":"README.en.md","pattern":"at command scheduling","snippet":"- \"Make a WeChat 21:9 hero + 1:1 share card\"","category":"blocker","line_end":189,"severity":"medium","line_start":189},{"id":"blocker:README.en.md:81:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"| Two-grid / three-grid / four-grid puzzle | Multiple video wells inside one Live Photo, usually wit","category":"blocker","line_end":81,"severity":"low","line_start":81},{"id":"blocker:README.en.md:92:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"3. **Choose the structure**: one strong clip becomes a single-video card; multiple strong clips beco","category":"blocker","line_end":92,"severity":"low","line_start":92},{"id":"blocker:README.en.md:100:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"Turn this coffee video into a 5-second Xiaohongshu Live Photo. Use only one headline and avoid the c","category":"blocker","line_end":100,"severity":"low","line_start":100},{"id":"blocker:README.en.md:101:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"These four travel clips are strong. Make a four-grid Live Photo with no added text.","category":"blocker","line_end":101,"severity":"low","line_start":101},{"id":"blocker:README.en.md:135:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"| Screenshot tutorial / tool walkthrough | `.frame-shot` + `.device-browser`, prefer Swiss grid base","category":"blocker","line_end":135,"severity":"low","line_start":135},{"id":"blocker:README.en.md:143:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"- **Layout precision**: CSS Grid + strict type / margin / grid rules far exceed Markdown's layout re","category":"blocker","line_end":143,"severity":"low","line_start":143},{"id":"blocker:README.en.md:282:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"├── background-systems.md             ← Ink flow / grid / paper layers","category":"blocker","line_end":282,"severity":"low","line_start":282},{"id":"blocker:README.en.md:298:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"2. **Structure over decoration** — type / contrast / grid carries the hierarchy, not shadows or card","category":"blocker","line_end":298,"severity":"low","line_start":298},{"id":"blocker:README.en.md:301:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"5. **Select and avoid first** — full-bleed images need a quiet zone; text drop zones must clear the ","category":"blocker","line_end":301,"severity":"low","line_start":301},{"id":"blocker:README.en.md:311:system-reconnaissance","file":"README.en.md","pattern":"System reconnaissance","snippet":"- Massimo Vignelli / Helvetica Forever / Swiss International Typographic Style grid systems","category":"blocker","line_end":311,"severity":"low","line_start":311},{"id":"external_commands:README.md:286:ruby-shell-backtick-execution","file":"README.md","pattern":"Ruby/shell backtick execution","snippet":"├── screenshot-treatment.md           ← `.frame-shot` 工具类 + 截图美化","category":"external_commands","line_end":287,"severity":"medium","line_start":286},{"id":"external_commands:README.md:287:ruby-shell-backtick-execution","file":"README.md","pattern":"Ruby/shell backtick execution","snippet":"├── map-component.md                  ← `.map-block` MapLibre 地图","category":"external_commands","line_end":292,"severity":"medium","line_start":287},{"id":"network:README.md:27:hardcoded-url","file":"README.md","pattern":"Hardcoded URL","snippet":"npx skills add https://github.com/op7418/guizang-social-card-skill --skill guizang-social-card-skill","category":"network","line_end":27,"severity":"low","line_start":27},{"id":"network:README.md:33:hardcoded-url","file":"README.md","pattern":"Hardcoded URL","snippet":"帮我安装 guizang-social-card-skill。请把 https://github.com/op7418/guizang-social-card-skill 克隆到 ~/.claude/","category":"network","line_end":33,"severity":"low","line_start":33},{"id":"network:README.md:163:hardcoded-url","file":"README.md","pattern":"Hardcoded URL","snippet":"npx skills add https://github.com/op7418/guizang-social-card-skill --skill guizang-social-card-skill","category":"network","line_end":163,"severity":"low","line_start":163},{"id":"network:README.md:180:hardcoded-url","file":"README.md","pattern":"Hardcoded URL","snippet":"git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-social-ca","category":"network","line_end":180,"severity":"low","line_start":180},{"id":"filesystem:README.md:33:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"帮我安装 guizang-social-card-skill。请把 https://github.com/op7418/guizang-social-card-skill 克隆到 ~/.claude/","category":"filesystem","line_end":33,"severity":"high","line_start":33},{"id":"filesystem:README.md:39:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"帮我更新 guizang-social-card-skill。请进入 ~/.claude/skills/guizang-social-card-skill 执行 git pull,然后告诉我当前最新 ","category":"filesystem","line_end":39,"severity":"high","line_start":39},{"id":"filesystem:README.md:170:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"> 1. 确保 `~/.claude/skills/` 目录存在(不存在就创建)","category":"filesystem","line_end":170,"severity":"high","line_start":170},{"id":"filesystem:README.md:171:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"> 2. 执行 `git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-","category":"filesystem","line_end":171,"severity":"high","line_start":171},{"id":"filesystem:README.md:172:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"> 3. 验证:`ls ~/.claude/skills/guizang-social-card-skill/` 应该看到 `SKILL.md`、`assets/`、`references/` 三项","category":"filesystem","line_end":172,"severity":"high","line_start":172},{"id":"filesystem:README.md:180:hidden-file-in-home-directory","file":"README.md","pattern":"Hidden file in home directory","snippet":"git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-social-ca","category":"filesystem","line_end":180,"severity":"high","line_start":180},{"id":"filesystem:README.md:33:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"帮我安装 guizang-social-card-skill。请把 https://github.com/op7418/guizang-social-card-skill 克隆到 ~/.claude/","category":"filesystem","line_end":33,"severity":"medium","line_start":33},{"id":"filesystem:README.md:39:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"帮我更新 guizang-social-card-skill。请进入 ~/.claude/skills/guizang-social-card-skill 执行 git pull,然后告诉我当前最新 ","category":"filesystem","line_end":39,"severity":"medium","line_start":39},{"id":"filesystem:README.md:170:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"> 1. 确保 `~/.claude/skills/` 目录存在(不存在就创建)","category":"filesystem","line_end":170,"severity":"medium","line_start":170},{"id":"filesystem:README.md:171:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"> 2. 执行 `git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-","category":"filesystem","line_end":171,"severity":"medium","line_start":171},{"id":"filesystem:README.md:172:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"> 3. 验证:`ls ~/.claude/skills/guizang-social-card-skill/` 应该看到 `SKILL.md`、`assets/`、`references/` 三项","category":"filesystem","line_end":172,"severity":"medium","line_start":172},{"id":"filesystem:README.md:180:hidden-file-access","file":"README.md","pattern":"Hidden file access","snippet":"git clone https://github.com/op7418/guizang-social-card-skill.git ~/.claude/skills/guizang-social-ca","category":"filesystem","line_end":180,"severity":"medium","line_start":180},{"id":"blocker:README.md:143:system-reconnaissance","file":"README.md","pattern":"System reconnaissance","snippet":"- **版式精确**:CSS Grid + 严格字号 / 留白 / 网格,远超 Markdown 排版能力","category":"blocker","line_end":143,"severity":"low","line_start":143},{"id":"blocker:references/background-systems.md:13:system-reconnaissance","file":"references/background-systems.md","pattern":"System reconnaissance","snippet":"3. Ink wash, contour field, or WebGL fluid canvas.","category":"blocker","line_end":13,"severity":"low","line_start":13},{"id":"blocker:references/category-cookbook.md:28:system-reconnaissance","file":"references/category-cookbook.md","pattern":"System reconnaissance","snippet":"| 旅行攻略 / travel | A pretty place photo has atmosphere but not process | add arrival, route, movement","category":"blocker","line_end":28,"severity":"low","line_start":28},{"id":"blocker:references/category-cookbook.md:32:system-reconnaissance","file":"references/category-cookbook.md","pattern":"System reconnaissance","snippet":"| 美食手作 / food & craft | Finished photo misses the satisfying change | show pour, stir, cut, assemble","category":"blocker","line_end":32,"severity":"low","line_start":32},{"id":"blocker:references/category-cookbook.md:64:system-reconnaissance","file":"references/category-cookbook.md","pattern":"System reconnaissance","snippet":"- **Style mode**: Swiss × IKB Blue or × Safety Orange. Avoid lemon-yellow / lemon-green for serious ","category":"blocker","line_end":64,"severity":"low","line_start":64},{"id":"blocker:references/category-cookbook.md:66:system-reconnaissance","file":"references/category-cookbook.md","pattern":"System reconnaissance","snippet":"- **Image source**: Avoid stock business photos. If you need an image, prefer a diagram, a screensho","category":"blocker","line_end":66,"severity":"low","line_start":66},{"id":"blocker:references/category-cookbook.md:176:system-reconnaissance","file":"references/category-cookbook.md","pattern":"System reconnaissance","snippet":"- **Image source**: User interior photos. Web-sourced interior images have heavy copyright exposure ","category":"blocker","line_end":176,"severity":"low","line_start":176},{"id":"blocker:references/category-cookbook.md:216:system-reconnaissance","file":"references/category-cookbook.md","pattern":"System reconnaissance","snippet":"- **Image source**: Quiet documentary-style photo (a window, a chair, a hand) — user-supplied is bes","category":"blocker","line_end":216,"severity":"low","line_start":216},{"id":"blocker:references/components.md:179:screen-capture-upload","file":"references/components.md","pattern":"Screen capture upload","snippet":"For UI screenshots / web captures / code shots, use `.frame-shot` (both seeds carry it). It defaults","category":"blocker","line_end":179,"severity":"high","line_start":179},{"id":"blocker:references/components.md:156:at-command-scheduling","file":"references/components.md","pattern":"at command scheduling","snippet":"| `.r-21x9`   | 21 : 9 | WeChat 21:9 hero image, S08 Image Hero top zone.   |","category":"blocker","line_end":156,"severity":"medium","line_start":156},{"id":"blocker:references/components.md:33:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"| Mid title   | `.h-md`     |  56px | 500    | +.02em   | serif-zh  |","category":"blocker","line_end":33,"severity":"low","line_start":33},{"id":"blocker:references/components.md:51:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"| Mid title   | `.h-md`       |  56px | 400    | sans      |","category":"blocker","line_end":51,"severity":"low","line_start":51},{"id":"blocker:references/components.md:135:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"- `.card-ink` — solid black ink, paper text. Use for one statement card.","category":"blocker","line_end":135,"severity":"low","line_start":135},{"id":"blocker:references/components.md:140:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"Multi-card grids must use **the same** card class for every cell, except a single accent highlight i","category":"blocker","line_end":140,"severity":"low","line_start":140},{"id":"blocker:references/components.md:209:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"| `--sp-6`| 24px   | Card padding (compact), grid gap (tight).            |","category":"blocker","line_end":209,"severity":"low","line_start":209},{"id":"blocker:references/components.md:210:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"| `--sp-7`| 32px   | Default grid gap.                                    |","category":"blocker","line_end":210,"severity":"low","line_start":210},{"id":"blocker:references/components.md:227:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"- Use angular Lucide icons (`arrow-right`, `check`, `triangle-alert`, `dot`, `plus`, `equal`, `slash","category":"blocker","line_end":227,"severity":"low","line_start":227},{"id":"blocker:references/components.md:268:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"| `.grid-12`       | n/a             | 12-col grid     | Swiss only.                          |","category":"blocker","line_end":268,"severity":"low","line_start":268},{"id":"blocker:references/components.md:269:system-reconnaissance","file":"references/components.md","pattern":"System reconnaissance","snippet":"| `.span-N`        | n/a             | grid column span| Swiss only.                          |","category":"blocker","line_end":269,"severity":"low","line_start":269},{"id":"blocker:references/content-planning.md:55:system-reconnaissance","file":"references/content-planning.md","pattern":"System reconnaissance","snippet":"- Avoid abstract labels like \"背景介绍\" unless the page is actually context.","category":"blocker","line_end":55,"severity":"low","line_start":55},{"id":"blocker:references/content-planning.md:150:system-reconnaissance","file":"references/content-planning.md","pattern":"System reconnaissance","snippet":"Swiss style conceptual product image, Android home screen widgets generated by natural language, cle","category":"blocker","line_end":150,"severity":"low","line_start":150},{"id":"blocker:references/layout-recipes.md:571:at-command-scheduling","file":"references/layout-recipes.md","pattern":"at command scheduling","snippet":"Best for the WeChat 21:9 main cover and the Rednote cover when you have one strong photo or product ","category":"blocker","line_end":571,"severity":"medium","line_start":571},{"id":"blocker:references/layout-recipes.md:82:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"Avoid generic rounded cards; use rows, rules, columns, and issue labels.","category":"blocker","line_end":82,"severity":"low","line_start":82},{"id":"blocker:references/layout-recipes.md:293:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"Best for \"old way vs new way\", \"before AI vs after AI\", \"rookie vs pro\" comparisons. PPT's Before/Af","category":"blocker","line_end":293,"severity":"low","line_start":293},{"id":"blocker:references/layout-recipes.md:299:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"- Each block has its own kicker, mid title, and 3-4 short bullets.","category":"blocker","line_end":299,"severity":"low","line_start":299},{"id":"blocker:references/layout-recipes.md:442:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"<div style=\"border-top: 1px solid rgba(245,241,232,.35);","category":"blocker","line_end":442,"severity":"low","line_start":442},{"id":"blocker:references/layout-recipes.md:470:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"<div style=\"margin-top: 18px; border-top: 1px solid rgba(245,241,232,.35);","category":"blocker","line_end":470,"severity":"low","line_start":470},{"id":"blocker:references/layout-recipes.md:670:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"- `.h-bar-chart` grid with 5-10 `.bar-row`s.","category":"blocker","line_end":670,"severity":"low","line_start":670},{"id":"blocker:references/layout-recipes.md:778:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"- `.matrix-fill` grid of 8-12 `.matrix-cell`s. Each cell: `.cell-nb` (numbered mono label like `01`)","category":"blocker","line_end":778,"severity":"low","line_start":778},{"id":"blocker:references/layout-recipes.md:825:system-reconnaissance","file":"references/layout-recipes.md","pattern":"System reconnaissance","snippet":"- Avoid small subtitles and avoid photos by default.","category":"blocker","line_end":825,"severity":"low","line_start":825},{"id":"filesystem:references/live-photo-production.md:226:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"UV_CACHE_DIR=/private/tmp/uv-cache \\","category":"filesystem","line_end":226,"severity":"medium","line_start":226},{"id":"filesystem:references/live-photo-production.md:227:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"UV_TOOL_DIR=/private/tmp/uv-tools \\","category":"filesystem","line_end":227,"severity":"medium","line_start":227},{"id":"filesystem:references/live-photo-production.md:234:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"UV_CACHE_DIR=/private/tmp/uv-cache \\","category":"filesystem","line_end":234,"severity":"medium","line_start":234},{"id":"filesystem:references/live-photo-production.md:235:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"UV_TOOL_DIR=/private/tmp/uv-tools \\","category":"filesystem","line_end":235,"severity":"medium","line_start":235},{"id":"filesystem:references/live-photo-production.md:640:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"mkdir -p /private/tmp/mimo-check","category":"filesystem","line_end":640,"severity":"medium","line_start":640},{"id":"filesystem:references/live-photo-production.md:644:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"-frames:v 1 /private/tmp/mimo-check/process_contact.jpg","category":"filesystem","line_end":644,"severity":"medium","line_start":644},{"id":"filesystem:references/live-photo-production.md:648:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"-frames:v 1 /private/tmp/mimo-check/result_contact.jpg","category":"filesystem","line_end":648,"severity":"medium","line_start":648},{"id":"filesystem:references/live-photo-production.md:799:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"UV_CACHE_DIR=/private/tmp/uv-cache \\","category":"filesystem","line_end":799,"severity":"medium","line_start":799},{"id":"filesystem:references/live-photo-production.md:800:temp-directory-access","file":"references/live-photo-production.md","pattern":"Temp directory access","snippet":"UV_TOOL_DIR=/private/tmp/uv-tools \\","category":"filesystem","line_end":800,"severity":"medium","line_start":800},{"id":"blocker:references/live-photo-production.md:41:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"- **Avoid platform gotchas**: the agent outputs `.pvt` for iPhone/AirDrop and respects platform dura","category":"blocker","line_end":41,"severity":"low","line_start":41},{"id":"blocker:references/live-photo-production.md:83:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"- First frame: a valid static social card state with no excessive crop.","category":"blocker","line_end":83,"severity":"low","line_start":83},{"id":"blocker:references/live-photo-production.md:105:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"| Format | Time budget | Best for | Avoid |","category":"blocker","line_end":105,"severity":"low","line_start":105},{"id":"blocker:references/live-photo-production.md:110:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"| Material-first puzzle | `3-5s` | high-quality footage where the image is the content: single video","category":"blocker","line_end":110,"severity":"low","line_start":110},{"id":"blocker:references/live-photo-production.md:152:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"- **Four-grid**: use a `2 x 2` grid of four `3:4` wells (`540 x 720` each inside a `1080 x 1440` car","category":"blocker","line_end":152,"severity":"low","line_start":152},{"id":"blocker:references/live-photo-production.md:215:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"Pin the version (`0.7.0` as of 2026-07) to avoid breakage from API changes in this small-audience pa","category":"blocker","line_end":215,"severity":"low","line_start":215},{"id":"blocker:references/live-photo-production.md:239:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"Use this wrapper when available so every run prints the asset id and `.pvt` path consistently.","category":"blocker","line_end":239,"severity":"low","line_start":239},{"id":"blocker:references/live-photo-production.md:492:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"Avoid selecting these together for the transfer:","category":"blocker","line_end":492,"severity":"low","line_start":492},{"id":"blocker:references/live-photo-production.md:588:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"- For webpage demos, keep Hero visible briefly, then allow controlled scroll. Avoid spending the who","category":"blocker","line_end":588,"severity":"low","line_start":588},{"id":"blocker:references/live-photo-production.md:665:system-reconnaissance","file":"references/live-photo-production.md","pattern":"System reconnaissance","snippet":"- Avoid the later part of the recording if it switches into the right-side preview pane.","category":"blocker","line_end":665,"severity":"low","line_start":665},{"id":"network:references/map-component.md:22:hardcoded-url","file":"references/map-component.md","pattern":"Hardcoded URL","snippet":"https://api.mapbox.com/styles/v1/mapbox/light-v11/static/","category":"network","line_end":22,"severity":"low","line_start":22},{"id":"network:references/map-component.md:31:hardcoded-url","file":"references/map-component.md","pattern":"Hardcoded URL","snippet":"<img src=\"https://api.mapbox.com/styles/v1/mapbox/light-v11/static/.../1200x675@2x?access_token=...\"","category":"network","line_end":31,"severity":"low","line_start":31},{"id":"filesystem:references/map-component.md:31:path-traversal-sequence","file":"references/map-component.md","pattern":"Path traversal sequence","snippet":"<img src=\"https://api.mapbox.com/styles/v1/mapbox/light-v11/static/.../1200x675@2x?access_token=...\"","category":"filesystem","line_end":31,"severity":"high","line_start":31},{"id":"blocker:references/map-component.md:90:system-reconnaissance","file":"references/map-component.md","pattern":"System reconnaissance","snippet":"3. `.map-grid` (optional reference grid lines)","category":"blocker","line_end":90,"severity":"low","line_start":90},{"id":"blocker:references/platform-specs.md:49:system-reconnaissance","file":"references/platform-specs.md","pattern":"System reconnaissance","snippet":"- Avoid long subtitles. Put nuance in later pages.","category":"blocker","line_end":49,"severity":"low","line_start":49},{"id":"blocker:references/platform-specs.md:75:system-reconnaissance","file":"references/platform-specs.md","pattern":"System reconnaissance","snippet":"- Avoid an empty middle. Increase title scale, image scale, or spacing if the center feels hollow.","category":"blocker","line_end":75,"severity":"low","line_start":75},{"id":"blocker:references/portrait-fill.md:70:system-reconnaissance","file":"references/portrait-fill.md","pattern":"System reconnaissance","snippet":"Avoid repeating `title + lead + 3 rows` more than twice in one set.","category":"blocker","line_end":70,"severity":"low","line_start":70},{"id":"blocker:references/production-workflow.md:150:system-reconnaissance","file":"references/production-workflow.md","pattern":"System reconnaissance","snippet":"- Small radius or subtle shadow is allowed, but avoid SaaS marketing-card styling.","category":"blocker","line_end":150,"severity":"low","line_start":150},{"id":"blocker:references/production-workflow.md:166:system-reconnaissance","file":"references/production-workflow.md","pattern":"System reconnaissance","snippet":"- If text must sit over photo, use a solid ink/paper block or a high-contrast strip, not a blur blob","category":"blocker","line_end":166,"severity":"low","line_start":166},{"id":"blocker:references/production-workflow.md:167:system-reconnaissance","file":"references/production-workflow.md","pattern":"System reconnaissance","snippet":"- Avoid negative letter spacing in Chinese body text.","category":"blocker","line_end":167,"severity":"low","line_start":167},{"id":"blocker:references/qa-checklist.md:8:at-command-scheduling","file":"references/qa-checklist.md","pattern":"at command scheduling","snippet":"- WeChat 21:9 cover is `2100 x 900`.","category":"blocker","line_end":8,"severity":"medium","line_start":8},{"id":"blocker:references/qa-checklist.md:9:at-command-scheduling","file":"references/qa-checklist.md","pattern":"at command scheduling","snippet":"- WeChat 1:1 cover is `1080 x 1080`.","category":"blocker","line_end":9,"severity":"medium","line_start":9},{"id":"blocker:references/qa-checklist.md:39:system-reconnaissance","file":"references/qa-checklist.md","pattern":"System reconnaissance","snippet":"- `40-90px` over: compact local gaps/padding and reduce one block height. Avoid cutting copy.","category":"blocker","line_end":39,"severity":"low","line_start":39},{"id":"blocker:references/qa-checklist.md:61:system-reconnaissance","file":"references/qa-checklist.md","pattern":"System reconnaissance","snippet":"3. No two adjacent bands are both \"justified empty\" — that creates a >25% void mid-poster.","category":"blocker","line_end":61,"severity":"low","line_start":61},{"id":"filesystem:references/screenshot-treatment.md:110:path-traversal-sequence","file":"references/screenshot-treatment.md","pattern":"Path traversal sequence","snippet":"**Path note**: the `.bg-asset-*` rules use `url(\"../assets/screenshot-backgrounds/...\")` — this assu","category":"filesystem","line_end":110,"severity":"high","line_start":110},{"id":"blocker:references/screenshot-treatment.md:16:screen-capture-upload","file":"references/screenshot-treatment.md","pattern":"Screen capture upload","snippet":"Before framing, decide what the actual screenshot subject is. If the source capture contains a float","category":"blocker","line_end":16,"severity":"high","line_start":16},{"id":"blocker:references/screenshot-treatment.md:158:screen-capture-upload","file":"references/screenshot-treatment.md","pattern":"Screen capture upload","snippet":"When the user delivers a full-screen capture (1290×2796 iOS / 1080×2400 Android / 1920×1080 desktop)","category":"blocker","line_end":158,"severity":"high","line_start":158},{"id":"blocker:references/screenshot-treatment.md:108:at-command-scheduling","file":"references/screenshot-treatment.md","pattern":"at command scheduling","snippet":"- These assets are crop-safe at 16:10 and 16:9. For tall `r-3x4` or square `r-1x1` slots, prefer sol","category":"blocker","line_end":108,"severity":"medium","line_start":108},{"id":"blocker:references/screenshot-treatment.md:80:system-reconnaissance","file":"references/screenshot-treatment.md","pattern":"System reconnaissance","snippet":"#### Solid `bg-*` vs asset `bg-asset-*`","category":"blocker","line_end":80,"severity":"low","line_start":80},{"id":"blocker:references/screenshot-treatment.md:82:system-reconnaissance","file":"references/screenshot-treatment.md","pattern":"System reconnaissance","snippet":"The tokens above are **CSS-generated solids** — flat tones, fast, no asset dependency. They work, bu","category":"blocker","line_end":82,"severity":"low","line_start":82},{"id":"blocker:references/screenshot-treatment.md:107:system-reconnaissance","file":"references/screenshot-treatment.md","pattern":"System reconnaissance","snippet":"- Decide once per deck whether asset stages are part of the visual identity — don't sprinkle one ass","category":"blocker","line_end":107,"severity":"low","line_start":107},{"id":"blocker:references/screenshot-treatment.md:108:system-reconnaissance","file":"references/screenshot-treatment.md","pattern":"System reconnaissance","snippet":"- These assets are crop-safe at 16:10 and 16:9. For tall `r-3x4` or square `r-1x1` slots, prefer sol","category":"blocker","line_end":108,"severity":"low","line_start":108},{"id":"blocker:references/screenshot-treatment.md:158:system-reconnaissance","file":"references/screenshot-treatment.md","pattern":"System reconnaissance","snippet":"When the user delivers a full-screen capture (1290×2796 iOS / 1080×2400 Android / 1920×1080 desktop)","category":"blocker","line_end":158,"severity":"low","line_start":158},{"id":"blocker:references/screenshot-treatment.md:160:system-reconnaissance","file":"references/screenshot-treatment.md","pattern":"System reconnaissance","snippet":"1. Trim the iOS / Android status bar (top 47-59 px on retina).","category":"blocker","line_end":160,"severity":"low","line_start":160},{"id":"blocker:references/style-system.md:10:system-reconnaissance","file":"references/style-system.md","pattern":"System reconnaissance","snippet":"- Avoid visible clutter: no random SVG circles, oval drops, blobs, bokeh, ornamental stickers, fake ","category":"blocker","line_end":10,"severity":"low","line_start":10},{"id":"blocker:references/style-system.md:65:system-reconnaissance","file":"references/style-system.md","pattern":"System reconnaissance","snippet":"- Avoid gradients. Use pure color blocks, hairline rules, and grid modules.","category":"blocker","line_end":65,"severity":"low","line_start":65},{"id":"blocker:references/style-system.md:111:system-reconnaissance","file":"references/style-system.md","pattern":"System reconnaissance","snippet":"3. Section separators are hairline rules (1-2px) or grid gutters, not card borders + drop shadows.","category":"blocker","line_end":111,"severity":"low","line_start":111},{"id":"blocker:references/style-system.md:120:system-reconnaissance","file":"references/style-system.md","pattern":"System reconnaissance","snippet":"1. The background has at least one atmosphere layer beyond a flat fill: paper grain, ink wash, froze","category":"blocker","line_end":120,"severity":"low","line_start":120},{"id":"blocker:references/style-system.md:166:system-reconnaissance","file":"references/style-system.md","pattern":"System reconnaissance","snippet":"/* Pattern B — grid with fixed footer row. */","category":"blocker","line_end":166,"severity":"low","line_start":166},{"id":"blocker:references/theme-presets.md:208:system-reconnaissance","file":"references/theme-presets.md","pattern":"System reconnaissance","snippet":"- Prefer pure blocks, hairline rules, and grid rhythm.","category":"blocker","line_end":208,"severity":"low","line_start":208},{"id":"blocker:references/title-shortener.md:113:at-command-scheduling","file":"references/title-shortener.md","pattern":"at command scheduling","snippet":"| WeChat 21:9 main     | Authored long title or 80% of it            | 1 line, ≤ 14 chars       |","category":"blocker","line_end":113,"severity":"medium","line_start":113},{"id":"blocker:references/title-shortener.md:114:at-command-scheduling","file":"references/title-shortener.md","pattern":"at command scheduling","snippet":"| WeChat 1:1 square    | Shortened per this file (4-10 chars)        | 1-2 lines, ≤ 6 chars/line|","category":"blocker","line_end":114,"severity":"medium","line_start":114},{"id":"sensitive:scripts/add-livephoto-mov-metadata.swift:18:certificate-key-files","file":"scripts/add-livephoto-mov-metadata.swift","pattern":"Certificate/key files","snippet":"item.keySpace = .quickTimeMetadata","category":"sensitive","line_end":18,"severity":"high","line_start":18},{"id":"sensitive:scripts/add-livephoto-mov-metadata.swift:19:certificate-key-files","file":"scripts/add-livephoto-mov-metadata.swift","pattern":"Certificate/key files","snippet":"item.key = key as NSString","category":"sensitive","line_end":19,"severity":"high","line_start":19},{"id":"external_commands:scripts/check-skill-docs.mjs:16:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"detail: ok ? `${file} includes \"${needle}\"` : `${file} must include \"${needle}\"`,","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:scripts/check-skill-docs.mjs:27:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"detail: ok ? `${file} does not match ${pattern}` : `${file} must not match ${pattern}`,","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:scripts/check-skill-docs.mjs:64:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"\"platform limits (`5s` Xiaohongshu, `3s` WeChat Official Account)\",","category":"external_commands","line_end":64,"severity":"medium","line_start":64},{"id":"external_commands:scripts/check-skill-docs.mjs:85:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"\"Create a task folder under `local-tests/` by default\",","category":"external_commands","line_end":85,"severity":"medium","line_start":85},{"id":"external_commands:scripts/check-skill-docs.mjs:176:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"console.log(`${marker} ${result.label}`);","category":"external_commands","line_end":176,"severity":"medium","line_start":176},{"id":"external_commands:scripts/check-skill-docs.mjs:179:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"console.log(`  ${result.detail}`);","category":"external_commands","line_end":179,"severity":"medium","line_start":179},{"id":"external_commands:scripts/check-skill-docs.mjs:184:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"console.error(`\\n${failed} skill doc check(s) failed.`);","category":"external_commands","line_end":184,"severity":"medium","line_start":184},{"id":"external_commands:scripts/check-skill-docs.mjs:188:ruby-shell-backtick-execution","file":"scripts/check-skill-docs.mjs","pattern":"Ruby/shell backtick execution","snippet":"console.log(`\\n${checks.length} skill doc checks passed.`);","category":"external_commands","line_end":188,"severity":"medium","line_start":188},{"id":"filesystem:scripts/check-skill-docs.mjs:7:node-js-fs-operations","file":"scripts/check-skill-docs.mjs","pattern":"Node.js fs operations","snippet":"return fs.readFileSync(file, \"utf8\");","category":"filesystem","line_end":7,"severity":"medium","line_start":7},{"id":"filesystem:scripts/check-skill-docs.mjs:7:synchronous-file-operations","file":"scripts/check-skill-docs.mjs","pattern":"Synchronous file operations","snippet":"return fs.readFileSync(file, \"utf8\");","category":"filesystem","line_end":7,"severity":"medium","line_start":7},{"id":"blocker:scripts/check-skill-docs.mjs:122:system-reconnaissance","file":"scripts/check-skill-docs.mjs","pattern":"System reconnaissance","snippet":"\"four-grid puzzle guidance\",","category":"blocker","line_end":122,"severity":"low","line_start":122},{"id":"external_commands:scripts/make-video-contact-sheet.py:14:python-subprocess-run","file":"scripts/make-video-contact-sheet.py","pattern":"Python subprocess.run","snippet":"return subprocess.run(cmd, check=True, text=True, capture_output=True)","category":"external_commands","line_end":14,"severity":"high","line_start":14},{"id":"blocker:scripts/make-video-contact-sheet.py:33:system-reconnaissance","file":"scripts/make-video-contact-sheet.py","pattern":"System reconnaissance","snippet":"raise SystemExit(f\"invalid duration for {video}: {duration}\")","category":"blocker","line_end":33,"severity":"low","line_start":33},{"id":"filesystem:scripts/package-live-photo.py:6:temp-directory-access","file":"scripts/package-live-photo.py","pattern":"Temp directory access","snippet":"UV_CACHE_DIR=/private/tmp/uv-cache \\","category":"filesystem","line_end":6,"severity":"medium","line_start":6},{"id":"filesystem:scripts/package-live-photo.py:7:temp-directory-access","file":"scripts/package-live-photo.py","pattern":"Temp directory access","snippet":"UV_TOOL_DIR=/private/tmp/uv-tools \\","category":"filesystem","line_end":7,"severity":"medium","line_start":7},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Generated work must live in a task folder, not in the skill root. Default to `local-tests/<slug>/` i","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- WeChat Official Account cover pairs: one `21:9` main cover plus one `1:1` square cover, composed t","category":"external_commands","line_end":23,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The 11 most-common Rednote (小红书) categories fall into three buckets. See `references/category-cookbo","category":"external_commands","line_end":35,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/platform-specs.md` for exact ratios, output sizes, and naming.","category":"external_commands","line_end":70,"severity":"medium","line_start":70},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/style-system.md` for Guizang editorial and Swiss visual rules.","category":"external_commands","line_end":71,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/theme-presets.md` when choosing electronic-magazine palettes or Swiss accent palettes.","category":"external_commands","line_end":72,"severity":"medium","line_start":72},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/layout-recipes.md` when selecting carousel/social-card/WeChat page structures.","category":"external_commands","line_end":73,"severity":"medium","line_start":73},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/components.md` for the shared component spec: font stacks, type scale, minimum readabl","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/background-systems.md` when building electronic-magazine WebGL/ink/paper backgrounds.","category":"external_commands","line_end":75,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/portrait-fill.md` when adapting layouts to 3:4 and avoiding under-filled vertical spac","category":"external_commands","line_end":76,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/content-planning.md` for cover hooks, page breakdown, and copy compression.","category":"external_commands","line_end":77,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/production-workflow.md` for HTML/CSS rendering and image handling.","category":"external_commands","line_end":78,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/live-photo-production.md` when the user asks for Live Photo / 实况照片 / 三连实况拼图, supplies ","category":"external_commands","line_end":79,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/image-overlay.md` whenever text sits on top of a photo: photo qualification, localized","category":"external_commands","line_end":80,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/screenshot-treatment.md` when the user supplies an app / web / code / dashboard screen","category":"external_commands","line_end":81,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/map-component.md` when the content has spatial relationships (travel route, store loca","category":"external_commands","line_end":82,"severity":"medium","line_start":82},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/title-shortener.md` when the task is a WeChat 21:9+1:1 cover pair, or any cross-platfo","category":"external_commands","line_end":83,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/category-cookbook.md` to route a user-named Rednote category (旅行 / 职场 / 游戏 / 影视 / 彩妆 /","category":"external_commands","line_end":84,"severity":"medium","line_start":84},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `references/qa-checklist.md` before delivering final images.","category":"external_commands","line_end":85,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Rednote category** — if the user names one of the 11 common types (旅行 / 职场 / 游戏 / 影视 / 美食 / 彩妆 /","category":"external_commands","line_end":95,"severity":"medium","line_start":95},{"id":"external_commands:SKILL.md:97:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Supplied video assets, if the user asks for Live Photo. Treat user-provided video as the normal pa","category":"external_commands","line_end":97,"severity":"medium","line_start":97},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":105,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":128,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Always produce a paired system: `21:9` main cover and `1:1` square cover.","category":"external_commands","line_end":128,"severity":"medium","line_start":128},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `21:9` keeps the full or near-full title, subtitle, and one strong visual relation.","category":"external_commands","line_end":131,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `1:1` uses a simplified short title derived from the long title: big centered type, no image by de","category":"external_commands","line_end":160,"severity":"medium","line_start":131},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Read `references/theme-presets.md` for exact CSS tokens. Do not invent arbitrary colors unless the u","category":"external_commands","line_end":166,"severity":"medium","line_start":160},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```text","category":"external_commands","line_end":170,"severity":"medium","line_start":166},{"id":"external_commands:SKILL.md:170:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":174,"severity":"medium","line_start":170},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `references/layout-recipes.md` to choose page structures. Avoid making every page a repeated tit","category":"external_commands","line_end":176,"severity":"medium","line_start":174},{"id":"external_commands:SKILL.md:176:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For 3:4 images, check `references/portrait-fill.md` before coding. A short table or ledger must be e","category":"external_commands","line_end":178,"severity":"medium","line_start":176},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Audience-facing copy must describe the user's actual scene, not the production method. Internal term","category":"external_commands","line_end":178,"severity":"medium","line_start":178},{"id":"external_commands:SKILL.md:182:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For Live Photo cards, plan them as normal social cards first, then decide the motion role: one actio","category":"external_commands","line_end":190,"severity":"medium","line_start":182},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Editorial Magazine × E-ink → copy `assets/template-editorial-card.html` into the task folder as `i","category":"external_commands","line_end":190,"severity":"medium","line_start":190},{"id":"external_commands:SKILL.md:191:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Swiss International → copy `assets/template-swiss-card.html` into the task folder as `index.html`.","category":"external_commands","line_end":191,"severity":"medium","line_start":191},{"id":"external_commands:SKILL.md:193:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The seed already wires up: font loading, theme tokens, all three poster sizes (`.poster.xhs` / `.pos","category":"external_commands","line_end":193,"severity":"medium","line_start":193},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Set the theme/accent on the `<html>` element:","category":"external_commands","line_end":197,"severity":"medium","line_start":195},{"id":"external_commands:SKILL.md:197:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Editorial: `<html data-theme=\"ink-classic | indigo-porcelain | forest-ink | kraft-paper | dune | m","category":"external_commands","line_end":198,"severity":"medium","line_start":197},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Swiss: `<html data-accent=\"ikb | lemon-yellow | lemon-green | safety-orange\">`.","category":"external_commands","line_end":200,"severity":"medium","line_start":198},{"id":"external_commands:SKILL.md:200:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Replace the single placeholder poster after `<!-- POSTERS_HERE -->` with one `<section class=\"poster","category":"external_commands","line_end":200,"severity":"medium","line_start":200},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Create a task folder under `local-tests/<slug>/` by default, or inside the user-requested output f","category":"external_commands","line_end":206,"severity":"medium","line_start":206},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Put source images in `assets/`.","category":"external_commands","line_end":208,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Start from the seed template copied in Step 4.5, not a blank file. Prefer changing only the `<!-- ","category":"external_commands","line_end":208,"severity":"medium","line_start":208},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use Playwright or a browser screenshot tool to export each `.poster` or `.cover` node.","category":"external_commands","line_end":209,"severity":"medium","line_start":209},{"id":"external_commands:SKILL.md:210:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Save rendered images in `output/`.","category":"external_commands","line_end":212,"severity":"medium","line_start":210},{"id":"external_commands:SKILL.md:212:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Keep `node validate-social-deck.mjs <task-dir>` available for auto-check passes. It checks overflo","category":"external_commands","line_end":212,"severity":"medium","line_start":212},{"id":"external_commands:SKILL.md:216:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Decide the information budget before rendering: `3s` fits one action point; `5s` fits one small pr","category":"external_commands","line_end":216,"severity":"medium","line_start":216},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Extract a first frame from each video well, place it in the final static card layout, and show/ins","category":"external_commands","line_end":219,"severity":"medium","line_start":218},{"id":"external_commands:SKILL.md:219:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Render the paired MOV at the platform duration: `5s` for Xiaohongshu, `3s` for WeChat Official Acc","category":"external_commands","line_end":219,"severity":"medium","line_start":219},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Package `JPG + MOV` into `.pvt` with `makelive`; AirDrop the `.pvt` as one item for iPhone tests.","category":"external_commands","line_end":221,"severity":"medium","line_start":221},{"id":"external_commands:SKILL.md:222:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Validate dimensions, duration, frame count, package contents, and motion quality. Prefer a contact","category":"external_commands","line_end":226,"severity":"medium","line_start":222},{"id":"external_commands:SKILL.md:226:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For Editorial Magazine x E-ink, use a layered background system. Prefer a subtle WebGL ink-flow canv","category":"external_commands","line_end":239,"severity":"medium","line_start":226},{"id":"external_commands:SKILL.md:239:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Whenever a poster places text on top of a photo (full-bleed cover, large image well, generated-image","category":"external_commands","line_end":241,"severity":"medium","line_start":239},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Selection first, tint only if needed.** A photo covering ≥60% of the canvas must first pass the ","category":"external_commands","line_end":243,"severity":"medium","line_start":241},{"id":"external_commands:SKILL.md:243:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Crop discipline — set `object-position` inline on every photo.** The template default (`center 5","category":"external_commands","line_end":243,"severity":"medium","line_start":243},{"id":"external_commands:SKILL.md:246:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Editorial dark covers (e.g. game journals on key art) and Swiss covers with hero photos both require","category":"external_commands","line_end":262,"severity":"medium","line_start":246},{"id":"external_commands:SKILL.md:262:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Unsplash** — `https://unsplash.com/s/photos/<keyword>`. Strong for outdoor / lifestyle / atmosp","category":"external_commands","line_end":263,"severity":"medium","line_start":262},{"id":"external_commands:SKILL.md:263:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **Pexels** — `https://www.pexels.com/search/<keyword>/` or `https://www.pexels.com/zh-cn/search/<","category":"external_commands","line_end":263,"severity":"medium","line_start":263},{"id":"external_commands:SKILL.md:264:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Flickr CC-licensed pool** — `https://www.flickr.com/search/?text=<keyword>&license=2%2C3%2C4%2C","category":"external_commands","line_end":264,"severity":"medium","line_start":264},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **Wallhaven** — `https://wallhaven.cc/search?q=<keyword>`. Strong for game / anime / wallpaper th","category":"external_commands","line_end":272,"severity":"medium","line_start":265},{"id":"external_commands:SKILL.md:272:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use WebFetch or `curl` to download the image into the task folder's `assets/` directory.","category":"external_commands","line_end":272,"severity":"medium","line_start":272},{"id":"external_commands:SKILL.md:273:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Name the file by purpose, not by hash: `assets/hero-mountain.jpg`, `assets/ui-pulse-card.png`.","category":"external_commands","line_end":273,"severity":"medium","line_start":273},{"id":"external_commands:SKILL.md:274:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Record the source URL in a `assets/SOURCES.md` file next to the images (one line per file: `hero-m","category":"external_commands","line_end":274,"severity":"medium","line_start":274},{"id":"external_commands:SKILL.md:278:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":287,"severity":"medium","line_start":278},{"id":"external_commands:SKILL.md:287:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":289,"severity":"medium","line_start":287},{"id":"external_commands:SKILL.md:289:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"If the user picks \"标注\" — add a small `mono` caption (Swiss: `.t-meta` 18-20px in corner; Editorial: ","category":"external_commands","line_end":289,"severity":"medium","line_start":289},{"id":"external_commands:SKILL.md:291:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"If the user picks \"不标注\" — proceed silently. The provenance still lives in `assets/SOURCES.md` for th","category":"external_commands","line_end":302,"severity":"medium","line_start":291},{"id":"external_commands:SKILL.md:302:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. If the user says \"你查吧\" / \"auto-check\" / \"yes\" — only then run `node validate-social-deck.mjs <tas","category":"external_commands","line_end":312,"severity":"medium","line_start":302},{"id":"external_commands:SKILL.md:312:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- For Live Photo: the `.pvt` package path, the debug `JPG + MOV` pair, target platform duration, and","category":"external_commands","line_end":312,"severity":"medium","line_start":312},{"id":"external_commands:SKILL.md:313:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- For Live Photo publishing: remind the user of two things: platform limits (`5s` Xiaohongshu, `3s` ","category":"external_commands","line_end":313,"severity":"medium","line_start":313},{"id":"external_commands:SKILL.md:320:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Never create generated work in the skill root. All task artifacts must be under `local-tests/<slug","category":"external_commands","line_end":320,"severity":"medium","line_start":320},{"id":"external_commands:SKILL.md:323:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Do not let text overflow, touch the edge, or collide with the footer band. Pin `.foot` with `margi","category":"external_commands","line_end":323,"severity":"medium","line_start":323},{"id":"external_commands:SKILL.md:324:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- When content overflows, measure the amount before editing. Small overflows should get small fixes:","category":"external_commands","line_end":324,"severity":"medium","line_start":324},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Do not let a title touch the next content block. Main display titles should usually keep at least ","category":"external_commands","line_end":325,"severity":"medium","line_start":325},{"id":"external_commands:SKILL.md:327:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Do not write inline `font-size` + `font-weight` on display titles in Swiss. Use the typed classes ","category":"external_commands","line_end":327,"severity":"medium","line_start":327},{"id":"external_commands:SKILL.md:328:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Do not deliver Editorial posters with a flat paper background, mono labels on every row, and no at","category":"external_commands","line_end":336,"severity":"medium","line_start":328},{"id":"external_commands:SKILL.md:336:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **3:4 卡必须吃满画布**。Content (text + image + data) 必须覆盖 ≥75% 画布高度。任何 >15% 画布高度的纯空白带都需要\"留白理由\":(a) hero i","category":"external_commands","line_end":336,"severity":"medium","line_start":336},{"id":"network:SKILL.md:262:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"1. **Unsplash** — `https://unsplash.com/s/photos/<keyword>`. Strong for outdoor / lifestyle / atmosp","category":"network","line_end":262,"severity":"low","line_start":262},{"id":"network:SKILL.md:263:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"2. **Pexels** — `https://www.pexels.com/search/<keyword>/` or `https://www.pexels.com/zh-cn/search/<","category":"network","line_end":263,"severity":"low","line_start":263},{"id":"network:SKILL.md:264:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"3. **Flickr CC-licensed pool** — `https://www.flickr.com/search/?text=<keyword>&license=2%2C3%2C4%2C","category":"network","line_end":264,"severity":"low","line_start":264},{"id":"network:SKILL.md:265:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"4. **Wallhaven** — `https://wallhaven.cc/search?q=<keyword>`. Strong for game / anime / wallpaper th","category":"network","line_end":265,"severity":"low","line_start":265},{"id":"blocker:SKILL.md:3:at-command-scheduling","file":"SKILL.md","pattern":"at command scheduling","snippet":"description: Generate Guizang-style social card image sets, Live Photo motion cards, material-first ","category":"blocker","line_end":3,"severity":"medium","line_start":3},{"id":"blocker:SKILL.md:83:at-command-scheduling","file":"SKILL.md","pattern":"at command scheduling","snippet":"- `references/title-shortener.md` when the task is a WeChat 21:9+1:1 cover pair, or any cross-platfo","category":"blocker","line_end":83,"severity":"medium","line_start":83},{"id":"blocker:SKILL.md:20:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Material-first Live Photo puzzle layouts when the user has high-quality video assets and wants sin","category":"blocker","line_end":20,"severity":"low","line_start":20},{"id":"blocker:SKILL.md:174:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Use `references/layout-recipes.md` to choose page structures. Avoid making every page a repeated tit","category":"blocker","line_end":174,"severity":"low","line_start":174},{"id":"blocker:SKILL.md:184:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"For material-first Live Photo puzzle cards, let the video assets lead. Use little or no copy: one sh","category":"blocker","line_end":184,"severity":"low","line_start":184},{"id":"blocker:SKILL.md:217:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- For long sources, avoid claiming precise automatic highlight detection. Probe duration/resolution,","category":"blocker","line_end":217,"severity":"low","line_start":217},{"id":"blocker:SKILL.md:260:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Recommended sources, in order of preference. **All five below are free-tier libraries with no requir","category":"blocker","line_end":260,"severity":"low","line_start":260},{"id":"external_commands:validate-social-deck.mjs:43:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"console.error(`not found: ${htmlPath}`);","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:validate-social-deck.mjs:99:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"return `only ${n}px over: nudge content up or tighten one gap/padding by 20-40px; do not delete cont","category":"external_commands","line_end":99,"severity":"medium","line_start":99},{"id":"external_commands:validate-social-deck.mjs:102:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"return `${n}px over: compact local gaps/padding and reduce one block height; avoid cutting copy`;","category":"external_commands","line_end":102,"severity":"medium","line_start":102},{"id":"external_commands:validate-social-deck.mjs:105:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"return `${n}px over: reduce a display title slightly or compress one paragraph before deleting conte","category":"external_commands","line_end":105,"severity":"medium","line_start":105},{"id":"external_commands:validate-social-deck.mjs:107:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"return `${n}px over: switch to a higher-capacity recipe or remove/merge content intentionally`;","category":"external_commands","line_end":107,"severity":"medium","line_start":107},{"id":"external_commands:validate-social-deck.mjs:131:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"fails.push({ rule: \"R1\", msg: `overflow ${overflow}px (scrollH ${meta.scrollH} > clientH ${meta.clie","category":"external_commands","line_end":131,"severity":"medium","line_start":131},{"id":"external_commands:validate-social-deck.mjs:212:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"msg: `visual bottom overflow ${visualBounds.bottomOverflow}px (lowest: ${visualBounds.bottomNode.cls","category":"external_commands","line_end":212,"severity":"medium","line_start":212},{"id":"external_commands:validate-social-deck.mjs:219:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"msg: `visual top overflow ${visualBounds.topOverflow}px (highest: ${visualBounds.topNode.cls}${visua","category":"external_commands","line_end":219,"severity":"medium","line_start":219},{"id":"external_commands:validate-social-deck.mjs:227:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"msg: `bottom whitespace ${visualBounds.bottomGap}px; active content height ${Math.round(visualBounds","category":"external_commands","line_end":227,"severity":"medium","line_start":227},{"id":"external_commands:validate-social-deck.mjs:271:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"fails.push({ rule: \"R2\", msg: `.foot is position:absolute, ${footIssue.sel} extends ${footIssue.over","category":"external_commands","line_end":271,"severity":"medium","line_start":271},{"id":"external_commands:validate-social-deck.mjs:291:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"fails.push({ rule: \"R3\", msg: `.${b.cls} \"${b.text}\" is ${b.size}px @ weight ${b.weight} — Swiss \"la","category":"external_commands","line_end":291,"severity":"medium","line_start":291},{"id":"external_commands:validate-social-deck.mjs:304:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"// A real `.lead` is a <p>; `.role-card.lead` is a container with children.","category":"external_commands","line_end":304,"severity":"medium","line_start":304},{"id":"external_commands:validate-social-deck.mjs:326:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"warns.push({ rule: \"R4\", msg: `${t.role} \"${t.text}\" at ${t.size}px < ${t.min}px floor`, fix: \"cut c","category":"external_commands","line_end":326,"severity":"medium","line_start":326},{"id":"external_commands:validate-social-deck.mjs:349:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"warns.push({ rule: \"R7\", msg: `${f.cls} has horizontal figure margin ${f.ml}px / ${f.mr}px${f.text ?","category":"external_commands","line_end":349,"severity":"medium","line_start":349},{"id":"external_commands:validate-social-deck.mjs:393:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"warns.push({ rule: \"R5\", msg: `density ${pct(total)} (bands ${bands.occ.map(pct).join(\" / \")})`, fix","category":"external_commands","line_end":393,"severity":"medium","line_start":393},{"id":"external_commands:validate-social-deck.mjs:397:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"warns.push({ rule: \"R5\", msg: `bands ${i + 1}+${i + 2} both under-filled (${pct(bands.occ[i])} / ${p","category":"external_commands","line_end":397,"severity":"medium","line_start":397},{"id":"external_commands:validate-social-deck.mjs:420:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"warns.push({ rule: \"R6\", msg: `.${t.cls} \"${t.text}\" renders ${t.lines} lines (cap ${cap.maxLines} o","category":"external_commands","line_end":420,"severity":"medium","line_start":420},{"id":"external_commands:validate-social-deck.mjs:454:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"return text ? `${cls} \"${text}\"` : cls;","category":"external_commands","line_end":454,"severity":"medium","line_start":454},{"id":"external_commands:validate-social-deck.mjs:493:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"msg: `${g.title} has ${g.gap}px gap before ${g.next} (min ${g.minGap}px)`,","category":"external_commands","line_end":493,"severity":"medium","line_start":493},{"id":"external_commands:validate-social-deck.mjs:513:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`==== validate-social-deck ====`);","category":"external_commands","line_end":513,"severity":"medium","line_start":513},{"id":"external_commands:validate-social-deck.mjs:514:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`target:   ${path.relative(process.cwd(), htmlPath)}`);","category":"external_commands","line_end":514,"severity":"medium","line_start":514},{"id":"external_commands:validate-social-deck.mjs:515:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`style:    ${style}`);","category":"external_commands","line_end":515,"severity":"medium","line_start":515},{"id":"external_commands:validate-social-deck.mjs:516:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`sections: ${report.length}  ·  ${cleanCount} clean  ·  ${totalFail} fails  ·  ${totalWar","category":"external_commands","line_end":516,"severity":"medium","line_start":516},{"id":"external_commands:validate-social-deck.mjs:518:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"const ruleSummary = [...ruleCounts.entries()].sort().map(([r, c]) => `${r}=${c}`).join(\"  \");","category":"external_commands","line_end":518,"severity":"medium","line_start":518},{"id":"external_commands:validate-social-deck.mjs:519:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`rules:    ${ruleSummary}`);","category":"external_commands","line_end":519,"severity":"medium","line_start":519},{"id":"external_commands:validate-social-deck.mjs:526:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`[PASS]  ${meta.id} ${meta.dataId ? ` · ${meta.dataId}` : \"\"} · ${meta.board}`);","category":"external_commands","line_end":526,"severity":"medium","line_start":526},{"id":"external_commands:validate-social-deck.mjs:530:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`${tag}  ${meta.id} ${meta.dataId ? ` · ${meta.dataId}` : \"\"} · ${meta.board}`);","category":"external_commands","line_end":530,"severity":"medium","line_start":530},{"id":"external_commands:validate-social-deck.mjs:533:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`  ${sev} · ${v.rule}  ${v.msg}`);","category":"external_commands","line_end":533,"severity":"medium","line_start":533},{"id":"external_commands:validate-social-deck.mjs:535:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`         fix: ${v.fix}`);","category":"external_commands","line_end":535,"severity":"medium","line_start":535},{"id":"external_commands:validate-social-deck.mjs:542:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`Legend: R1 overflow · R2 footer collision · R3 swiss bold display · R4 min font · R5 4-b","category":"external_commands","line_end":542,"severity":"medium","line_start":542},{"id":"external_commands:validate-social-deck.mjs:543:ruby-shell-backtick-execution","file":"validate-social-deck.mjs","pattern":"Ruby/shell backtick execution","snippet":"lines.push(`Exit code 1 only on FAIL. Warnings are advisory.`);","category":"external_commands","line_end":543,"severity":"medium","line_start":543},{"id":"external_commands:validate-social-deck.mjs:74:shell-command-substitution","file":"validate-social-deck.mjs","pattern":"Shell command substitution","snippet":"const sections = await page.$$(\"section.poster\");","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"id":"external_commands:validate-social-deck.mjs:43:template-literal-with-command-substitution","file":"validate-social-deck.mjs","pattern":"Template literal with command substitution","snippet":"console.error(`not found: ${htmlPath}`);","category":"external_commands","line_end":99,"severity":"medium","line_start":43},{"id":"filesystem:validate-social-deck.mjs:39:node-js-fs-stat-operations","file":"validate-social-deck.mjs","pattern":"Node.js fs stat operations","snippet":"if (fs.statSync(abs).isDirectory()) {","category":"filesystem","line_end":39,"severity":"low","line_start":39},{"id":"filesystem:validate-social-deck.mjs:42:node-js-fs-stat-operations","file":"validate-social-deck.mjs","pattern":"Node.js fs stat operations","snippet":"if (!fs.existsSync(htmlPath)) {","category":"filesystem","line_end":42,"severity":"low","line_start":42},{"id":"blocker:validate-social-deck.mjs:102:system-reconnaissance","file":"validate-social-deck.mjs","pattern":"System reconnaissance","snippet":"return `${n}px over: compact local gaps/padding and reduce one block height; avoid cutting copy`;","category":"blocker","line_end":102,"severity":"low","line_start":102},{"id":"blocker:validate-social-deck.mjs:123:system-reconnaissance","file":"validate-social-deck.mjs","pattern":"System reconnaissance","snippet":"return { id: el.id || \"(no-id)\", dataId: el.dataset.id || \"\", board, clientH: h, scrollH: el.scrollH","category":"blocker","line_end":123,"severity":"low","line_start":123},{"id":"blocker:validate-social-deck.mjs:228:system-reconnaissance","file":"validate-social-deck.mjs","pattern":"System reconnaissance","snippet":"fix: \"use the measured blank space to expand the last block or move the content down slightly; avoid","category":"blocker","line_end":228,"severity":"low","line_start":228},{"id":"blocker:validate-social-deck.mjs:321:system-reconnaissance","file":"validate-social-deck.mjs","pattern":"System reconnaissance","snippet":"test(\".matrix-fill .cell-title, .brief-card .title, .char-grid .name\", \"cellTitle\", MIN.cellTitle);","category":"blocker","line_end":321,"severity":"low","line_start":321},{"id":"blocker:validate-social-deck.mjs:397:system-reconnaissance","file":"validate-social-deck.mjs","pattern":"System reconnaissance","snippet":"warns.push({ rule: \"R5\", msg: `bands ${i + 1}+${i + 2} both under-filled (${pct(bands.occ[i])} / ${p","category":"blocker","line_end":397,"severity":"low","line_start":397},{"id":"metadata:assets/screenshot-backgrounds/style-b/lemon-grid.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-b/lemon-grid.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-b/lemon-green-dot-shadow.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-b/lemon-green-dot-shadow.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-b/safety-orange-halftone.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-b/safety-orange-halftone.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-b/ikb-dot-gradient.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-b/ikb-dot-gradient.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-a/kraft-paper.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-a/kraft-paper.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-a/monocle-classic.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-a/monocle-classic.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-a/indigo-porcelain.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-a/indigo-porcelain.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-a/dune.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-a/dune.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"metadata:assets/screenshot-backgrounds/style-a/forest-ink.webp:1:unscanned-file-binary-manual-review-required","file":"assets/screenshot-backgrounds/style-a/forest-ink.webp","pattern":"Unscanned file (binary) — manual review required","snippet":"[unscanned: binary]","category":"metadata","line_end":1,"severity":"low","line_start":1},{"id":"obfuscation:AGENT.md:1:heuristic-high-file-entropy-6-49-bits-possible-b","file":"AGENT.md","pattern":"[HEURISTIC] High file entropy (6.49 bits) - possible binary/encrypted content","snippet":"File: AGENT.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:COMMERCIAL_LICENSING.md:1:heuristic-high-file-entropy-7-70-bits-possible-b","file":"COMMERCIAL_LICENSING.md","pattern":"[HEURISTIC] High file entropy (7.70 bits) - possible binary/encrypted content","snippet":"File: COMMERCIAL_LICENSING.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:HANDOFF.md:1:heuristic-high-file-entropy-6-87-bits-possible-b","file":"HANDOFF.md","pattern":"[HEURISTIC] High file entropy (6.87 bits) - possible binary/encrypted content","snippet":"File: HANDOFF.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:PRODUCT.md:207:heuristic-very-high-entropy-string-5-69-bits-lik","file":"PRODUCT.md","pattern":"[HEURISTIC] Very high entropy string (5.69 bits) - likely encoded/encrypted payload","snippet":"。注意这是**同一篇文章的封面对**，不是组图——21:9 有水平空间放长标题，1:1 没有所以必须压短。当前两个尺寸的标题靠 AI 自由发挥，可以加一个明确的","category":"obfuscation","line_end":207,"severity":"high","line_start":207},{"id":"obfuscation:PRODUCT.md:1:heuristic-high-file-entropy-7-84-bits-possible-b","file":"PRODUCT.md","pattern":"[HEURISTIC] High file entropy (7.84 bits) - possible binary/encrypted content","snippet":"File: PRODUCT.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:README.md:336:heuristic-very-high-entropy-string-5-54-bits-lik","file":"README.md","pattern":"[HEURISTIC] Very high entropy string (5.54 bits) - likely encoded/encrypted payload","snippet":" 规划。可以做单视频、二宫格、三宫格、四宫格、三连拼图,也能对长视频先做稀疏抽帧诊断。发布通常需要手机端路径,桌面端一般不能直接识别 ","category":"obfuscation","line_end":336,"severity":"high","line_start":336},{"id":"obfuscation:README.md:1:heuristic-high-file-entropy-7-15-bits-possible-b","file":"README.md","pattern":"[HEURISTIC] High file entropy (7.15 bits) - possible binary/encrypted content","snippet":"File: README.md","category":"obfuscation","line_end":1,"severity":"high","line_start":1},{"id":"obfuscation:SKILL.md:336:heuristic-very-high-entropy-string-5-87-bits-lik","file":"SKILL.md","pattern":"[HEURISTIC] Very high entropy string (5.87 bits) - likely encoded/encrypted payload","snippet":" 上下夹击把内容塞到中段**——杂志页留白逻辑不适用于社交卡（杂志靠对开页吸收留白，社交卡逐张独立刷，欠填看着像 PPT 漏排）。Recipe-by-recip...","category":"obfuscation","line_end":336,"severity":"high","line_start":336}],"finding_verdicts":[{"id":"external_commands:assets/magazine-bg-webgl.js:50:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:assets/magazine-bg-webgl.js:54:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"blocker:assets/magazine-bg-webgl.js:52:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/magazine-bg-webgl.js:85:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"network:assets/template-editorial-card.html:7:hardcoded-url","reason":"The editorial seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency.","verdict":"confirmed","severity":"low","confidence":0.82},{"id":"network:assets/template-editorial-card.html:8:hardcoded-url","reason":"The editorial seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency.","verdict":"confirmed","severity":"low","confidence":0.82},{"id":"network:assets/template-editorial-card.html:9:hardcoded-url","reason":"The editorial seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency.","verdict":"confirmed","severity":"low","confidence":0.82},{"id":"filesystem:assets/template-editorial-card.html:425:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-editorial-card.html:426:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-editorial-card.html:427:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-editorial-card.html:428:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-editorial-card.html:429:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"blocker:assets/template-editorial-card.html:386:screen-capture-upload","reason":"The text discusses screenshot framing and visual treatment for user-supplied captures. It does not upload screenshots or exfiltrate screen content.","verdict":"false_positive","confidence":0.9},{"id":"blocker:assets/template-editorial-card.html:325:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:410:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:461:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:470:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:524:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:538:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:595:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:621:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:650:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:668:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-editorial-card.html:701:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"network:assets/template-swiss-card.html:7:hardcoded-url","reason":"The seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency.","verdict":"confirmed","severity":"low","confidence":0.82},{"id":"network:assets/template-swiss-card.html:8:hardcoded-url","reason":"The seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency.","verdict":"confirmed","severity":"low","confidence":0.82},{"id":"network:assets/template-swiss-card.html:9:hardcoded-url","reason":"The seed template loads Google Fonts from external hosts when rendered. This is expected for typography, but it creates network egress and a remote dependency.","verdict":"confirmed","severity":"low","confidence":0.82},{"id":"network:assets/template-swiss-card.html:10:hardcoded-url","reason":"The Swiss seed template loads lucide from unpkg at render time, which executes third-party JavaScript in the browser context. This is an intentional dependency but remains a supply-chain and network exposure risk.","verdict":"confirmed","severity":"medium","confidence":0.88},{"id":"filesystem:assets/template-swiss-card.html:416:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-swiss-card.html:417:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-swiss-card.html:418:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:assets/template-swiss-card.html:419:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"blocker:assets/template-swiss-card.html:342:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:397:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:401:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:418:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:448:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:457:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:511:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:524:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:614:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:735:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:806:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:843:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:assets/template-swiss-card.html:876:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:HANDOFF.md:138:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"filesystem:HANDOFF.md:459:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:HANDOFF.md:401:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:HANDOFF.md:459:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"blocker:HANDOFF.md:24:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:HANDOFF.md:125:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:HANDOFF.md:133:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:HANDOFF.md:141:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"network:LICENSE:4:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:LICENSE:646:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:LICENSE:661:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"blocker:LICENSE:175:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:LICENSE:180:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:LICENSE:247:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:LICENSE:337:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:PRODUCT.md:214:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:PRODUCT.md:214:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"blocker:PRODUCT.md:40:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:README.en.md:287:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:README.en.md:288:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"network:README.en.md:27:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:README.en.md:33:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:README.en.md:163:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:README.en.md:180:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:33:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:39:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:170:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:171:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:172:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:180:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:33:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:39:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:170:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:171:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:172:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.en.md:180:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"blocker:README.en.md:13:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:README.en.md:62:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:README.en.md:189:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:README.en.md:81:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:92:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:100:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:101:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:135:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:143:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:282:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:298:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:301:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:README.en.md:311:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:README.md:286:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:README.md:287:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"network:README.md:27:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:README.md:33:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:README.md:163:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"network:README.md:180:hardcoded-url","reason":"The URL appears in license text, README installation instructions, or documentation examples. It is not hidden network behavior in the executable skill workflow.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:33:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:39:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:170:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:171:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:172:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:180:hidden-file-in-home-directory","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:33:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:39:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:170:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:171:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:172:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"filesystem:README.md:180:hidden-file-access","reason":"The hidden path appears in installation or maintainer documentation for Claude skill locations. It is not automatic runtime access to hidden user files.","verdict":"false_positive","confidence":0.88},{"id":"blocker:README.md:143:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/background-systems.md:13:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/category-cookbook.md:28:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/category-cookbook.md:32:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/category-cookbook.md:64:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/category-cookbook.md:66:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/category-cookbook.md:176:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/category-cookbook.md:216:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:179:screen-capture-upload","reason":"The text discusses screenshot framing and visual treatment for user-supplied captures. It does not upload screenshots or exfiltrate screen content.","verdict":"false_positive","confidence":0.9},{"id":"blocker:references/components.md:156:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/components.md:33:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:51:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:135:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:140:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:209:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:210:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:227:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:268:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/components.md:269:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/content-planning.md:55:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/content-planning.md:150:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:571:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/layout-recipes.md:82:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:293:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:299:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:442:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:470:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:670:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:778:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/layout-recipes.md:825:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:references/live-photo-production.md:226:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:227:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:234:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:235:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:640:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:644:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:648:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:799:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:references/live-photo-production.md:800:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"blocker:references/live-photo-production.md:41:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:83:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:105:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:110:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:152:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:215:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:239:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:492:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:588:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/live-photo-production.md:665:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"network:references/map-component.md:22:hardcoded-url","reason":"The map reference documents Mapbox Static image URLs for real route rendering. This is intentional map functionality, but it relies on a third-party network service.","verdict":"confirmed","severity":"low","confidence":0.8},{"id":"network:references/map-component.md:31:hardcoded-url","reason":"The map reference documents Mapbox Static image URLs for real route rendering. This is intentional map functionality, but it relies on a third-party network service.","verdict":"confirmed","severity":"low","confidence":0.8},{"id":"filesystem:references/map-component.md:31:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/map-component.md:90:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/platform-specs.md:49:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/platform-specs.md:75:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/portrait-fill.md:70:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/production-workflow.md:150:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/production-workflow.md:166:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/production-workflow.md:167:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/qa-checklist.md:8:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/qa-checklist.md:9:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/qa-checklist.md:39:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/qa-checklist.md:61:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:references/screenshot-treatment.md:110:path-traversal-sequence","reason":"The sequence appears in a fixed relative asset URL, documentation path note, or URL ellipsis. It is not user-controlled filesystem traversal.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/screenshot-treatment.md:16:screen-capture-upload","reason":"The text discusses screenshot framing and visual treatment for user-supplied captures. It does not upload screenshots or exfiltrate screen content.","verdict":"false_positive","confidence":0.9},{"id":"blocker:references/screenshot-treatment.md:158:screen-capture-upload","reason":"The text discusses screenshot framing and visual treatment for user-supplied captures. It does not upload screenshots or exfiltrate screen content.","verdict":"false_positive","confidence":0.9},{"id":"blocker:references/screenshot-treatment.md:108:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/screenshot-treatment.md:80:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/screenshot-treatment.md:82:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/screenshot-treatment.md:107:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/screenshot-treatment.md:108:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/screenshot-treatment.md:158:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/screenshot-treatment.md:160:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/style-system.md:10:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/style-system.md:65:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/style-system.md:111:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/style-system.md:120:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/style-system.md:166:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/theme-presets.md:208:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:references/title-shortener.md:113:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:references/title-shortener.md:114:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"sensitive:scripts/add-livephoto-mov-metadata.swift:18:certificate-key-files","reason":"The Swift code sets QuickTime metadata keySpace and key properties. These are AVFoundation metadata fields, not certificate or private key files.","verdict":"false_positive","confidence":0.97},{"id":"sensitive:scripts/add-livephoto-mov-metadata.swift:19:certificate-key-files","reason":"The Swift code sets QuickTime metadata keySpace and key properties. These are AVFoundation metadata fields, not certificate or private key files.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:scripts/check-skill-docs.mjs:16:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:27:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:64:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:85:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:176:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:179:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:184:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:scripts/check-skill-docs.mjs:188:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"filesystem:scripts/check-skill-docs.mjs:7:node-js-fs-operations","reason":"The filesystem access is local validation of known files or a user-specified HTML target. It is expected tool behavior and does not access secrets.","verdict":"false_positive","confidence":0.84},{"id":"filesystem:scripts/check-skill-docs.mjs:7:synchronous-file-operations","reason":"The filesystem access is local validation of known files or a user-specified HTML target. It is expected tool behavior and does not access secrets.","verdict":"false_positive","confidence":0.84},{"id":"blocker:scripts/check-skill-docs.mjs:122:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:scripts/make-video-contact-sheet.py:14:python-subprocess-run","reason":"The helper invokes ffprobe and ffmpeg through subprocess.run with an argument list and shell=False by default. User paths are passed as arguments, so this is legitimate media tooling rather than shell injection.","verdict":"false_positive","confidence":0.86},{"id":"blocker:scripts/make-video-contact-sheet.py:33:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"filesystem:scripts/package-live-photo.py:6:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"filesystem:scripts/package-live-photo.py:7:temp-directory-access","reason":"The /private/tmp paths are documented cache or preview locations for sandboxed Live Photo tooling. They do not read sensitive files or escape a task scope.","verdict":"false_positive","confidence":0.86},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:70:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:73:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:84:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:95:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:97:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:166:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:170:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:174:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:176:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:182:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:191:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:193:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:197:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:200:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:208:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:209:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:210:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:212:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:216:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:219:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:221:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:222:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:226:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:239:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:243:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:246:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:262:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:263:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:264:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:272:ruby-shell-backtick-execution","reason":"This line explicitly permits using curl to download web images into task assets. The command is task-scoped, but it is real external command and network behavior.","verdict":"confirmed","severity":"medium","confidence":0.72},{"id":"external_commands:SKILL.md:273:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:274:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:278:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:287:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:289:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:291:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:302:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:312:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:313:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:320:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:323:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:324:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:325:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:327:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:328:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:336:ruby-shell-backtick-execution","reason":"The match is Markdown inline code, a code fence, or documentation text rather than executable shell syntax. No command is executed from this snippet.","verdict":"false_positive","confidence":0.92},{"id":"network:SKILL.md:262:hardcoded-url","reason":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production.","verdict":"confirmed","severity":"low","confidence":0.76},{"id":"network:SKILL.md:263:hardcoded-url","reason":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production.","verdict":"confirmed","severity":"low","confidence":0.76},{"id":"network:SKILL.md:264:hardcoded-url","reason":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production.","verdict":"confirmed","severity":"low","confidence":0.76},{"id":"network:SKILL.md:265:hardcoded-url","reason":"SKILL.md recommends public image-source sites for web-sourced assets. This is user-facing workflow guidance, but it can cause external network access during card production.","verdict":"confirmed","severity":"low","confidence":0.76},{"id":"blocker:SKILL.md:3:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:SKILL.md:83:at-command-scheduling","reason":"The match is normal prose or platform ratio text, such as words containing at or 21:9 sizing. It is not use of the at scheduling command.","verdict":"false_positive","confidence":0.95},{"id":"blocker:SKILL.md:20:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:174:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:184:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:217:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:260:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:validate-social-deck.mjs:43:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:99:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:102:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:105:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:107:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:131:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:212:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:219:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:227:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:271:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:291:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:304:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:326:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:349:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:393:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:397:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:420:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:454:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:493:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:513:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:514:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:515:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:516:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:518:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:519:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:526:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:530:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:533:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:535:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:542:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:543:ruby-shell-backtick-execution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:74:shell-command-substitution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"external_commands:validate-social-deck.mjs:43:template-literal-with-command-substitution","reason":"The flagged text is a JavaScript template literal, log message, shader string, or DOM selector. It is not shell backtick execution and does not invoke a command interpreter.","verdict":"false_positive","confidence":0.94},{"id":"filesystem:validate-social-deck.mjs:39:node-js-fs-stat-operations","reason":"The filesystem access is local validation of known files or a user-specified HTML target. It is expected tool behavior and does not access secrets.","verdict":"false_positive","confidence":0.84},{"id":"filesystem:validate-social-deck.mjs:42:node-js-fs-stat-operations","reason":"The filesystem access is local validation of known files or a user-specified HTML target. It is expected tool behavior and does not access secrets.","verdict":"false_positive","confidence":0.84},{"id":"blocker:validate-social-deck.mjs:102:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:validate-social-deck.mjs:123:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:validate-social-deck.mjs:228:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:validate-social-deck.mjs:321:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:validate-social-deck.mjs:397:system-reconnaissance","reason":"The snippet is layout, typography, ratio, or design guidance such as grid, line, border, or avoid. It is not system reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"metadata:assets/screenshot-backgrounds/style-b/lemon-grid.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-b/lemon-green-dot-shadow.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-b/safety-orange-halftone.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-b/ikb-dot-gradient.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-a/kraft-paper.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-a/monocle-classic.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-a/indigo-porcelain.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-a/dune.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"metadata:assets/screenshot-backgrounds/style-a/forest-ink.webp:1:unscanned-file-binary-manual-review-required","reason":"Manual review identified this as a WebP image asset used for screenshot background textures. It is a binary asset, but there is no evidence of executable or encrypted payload content.","verdict":"false_positive","confidence":0.78},{"id":"obfuscation:AGENT.md:1:heuristic-high-file-entropy-6-49-bits-possible-b","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:COMMERCIAL_LICENSING.md:1:heuristic-high-file-entropy-7-70-bits-possible-b","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:HANDOFF.md:1:heuristic-high-file-entropy-6-87-bits-possible-b","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:PRODUCT.md:207:heuristic-very-high-entropy-string-5-69-bits-lik","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:PRODUCT.md:1:heuristic-high-file-entropy-7-84-bits-possible-b","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:README.md:336:heuristic-very-high-entropy-string-5-54-bits-lik","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:README.md:1:heuristic-high-file-entropy-7-15-bits-possible-b","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9},{"id":"obfuscation:SKILL.md:336:heuristic-very-high-entropy-string-5-87-bits-lik","reason":"The file is UTF-8 Markdown or documentation, and the high-entropy signal comes from Chinese prose, long lines, or dense product text. No encoded payload or obfuscated code is evident.","verdict":"false_positive","confidence":0.9}],"semantic_findings":[{"title":"Map API Token Exposure Risk","severity":"medium","locations":[{"file":"references/map-component.md","line_end":31,"line_start":19}],"confidence":0.82,"description":"The map component guidance builds Mapbox Static image URLs with an access_token query parameter. Generated HTML or provenance files can expose scoped map tokens if shared or committed.","confidence_reasoning":"The documentation explicitly requires MAPBOX_ACCESS_TOKEN and shows the token embedded in an image URL. The risk depends on generated artifact handling, but the exposure path is clear."},{"title":"Third-Party Package Execution For Live Photo Packaging","severity":"medium","locations":[{"file":"references/live-photo-production.md","line_end":228,"line_start":209},{"file":"scripts/package-live-photo.py","line_end":8,"line_start":6}],"confidence":0.86,"description":"The Live Photo workflow uses uvx and makelive to execute third-party package code during packaging. Some examples omit the pinned version even though the text recommends pinning.","confidence_reasoning":"The commands are documented and the wrapper imports makelive directly. This is legitimate functionality, but it introduces package supply-chain risk and should be pinned and confirmed."}],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":14,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}