[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openai-report-to-google-doc":3,"mdc-kb3evp-key":36,"related-repo-openai-report-to-google-doc":1001,"related-org-openai-report-to-google-doc":1116},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":25,"repoUrl":26,"updatedAt":27,"license":28,"forks":29,"topics":30,"repo":31,"sourceUrl":34,"mdContent":35},"report-to-google-doc","convert analytics reports to Google Docs","Narrow conversion skill. Invoke only when the user explicitly asks to convert an existing local or blob-hosted HTML analytics report into a Google Doc, DOCX, or shareable document.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openai","OpenAI","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenai.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Reporting","reporting","tag",{"name":17,"slug":18,"type":15},"HTML","html",{"name":20,"slug":21,"type":15},"Documents","documents",{"name":23,"slug":24,"type":15},"Google Docs","google-docs",427,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Frole-specific-plugins","2026-07-01T07:55:42.409084",null,65,[],{"repoUrl":26,"stars":25,"forks":29,"topics":32,"description":33},[],"Role-specific Codex plugin templates","https:\u002F\u002Fgithub.com\u002Fopenai\u002Frole-specific-plugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fdata-analytics\u002Fskills\u002Fbuild-report\u002Freport-to-google-doc","---\nname: report-to-google-doc\ndescription: \"Narrow conversion skill. Invoke only when the user explicitly asks to convert an existing local or blob-hosted HTML analytics report into a Google Doc, DOCX, or shareable document.\"\n---\n\n# Report To Google Doc\n\nUse this skill only when the user explicitly needs a shareable Google Drive document from an existing HTML analytics report. The source must be an HTML report: a local file, a downloaded blob-hosted report, or a report produced by `$build-report`\nHTML mode. This skill does not convert a live MCP app report directly.\n\nThe expected path is HTML -> DOCX -> Drive upload. It is acceptable for Drive to host the upload as a DOCX-backed viewer file rather than a native Google Docs MIME type. Do not use the old Google Docs batch-update request path.\n\n## Workflow\n\n1. Resolve the HTML report.\n\n   Use an absolute local path. If the user provides a remote report, retrieve it first and pass the local HTML file to the helper. If the file is a sign-in page, redirect page, or tiny stub, stop and obtain the real report.\n\n2. Run the bundled helper.\n\n   ```bash\n   python3 \u003CREPORT_TO_GOOGLE_DOC_SKILL_DIR>\u002Fscripts\u002Freport_to_google_doc_plan.py \\\n     \u002Fabsolute\u002Fpath\u002Fto\u002Freport.html \\\n     --out-dir \u002Ftmp\u002Freport_to_google_doc_plan\n   ```\n\n   Omit `--render-workers` on the normal path. Only pass a worker count after benchmarking the same report family locally. If dependencies are missing,\n   use a local virtual environment with `beautifulsoup4`, `pillow`, and `python-docx`; `cairosvg` or headless Playwright are optional renderers.\n\n3. Inspect helper outputs.\n\n   Required outputs:\n\n   - `skeleton.txt`: source text with stable placeholders\n   - `manifest.json`: parsed headings, tables, callouts, lists, styles, links,\n     and rendered visual inventory\n   - `preflight_checks.json`: source, width, DOCX, and rendered-image checks\n   - `report.docx`: generated local Word document\n   - `docx_upload_plan.json`: compact upload instructions\n   - `placeholder_queries.json`: source mapping debug labels\n\n   Do not upload until `preflight_checks.json` has `status: \"passed\"` with zero errors. Warnings must either be fixed or called out in the handoff.\n\n4. Upload the DOCX.\n\n   ```json\n   mcp__codex_apps__google_drive._upload_file({\n     \"file_uri\": \"\u002Ftmp\u002Freport_to_google_doc_plan\u002Freport.docx\",\n     \"file_name\": \"Report Name.docx\",\n     \"mime_type\": \"application\u002Fvnd.openxmlformats-officedocument.wordprocessingml.document\"\n   })\n   ```\n\n   Treat the returned Drive URL as the deliverable. Do not attempt to force native Google Docs conversion, and do not fall back to `_batch_update_document`.\n\n5. Validate the uploaded result.\n\n   Confirm the uploaded file is readable and non-empty. Compare uploaded text against the source inventory: title, section headings, executive summary or answer callout, caveats, recommendations, source notes, and source links.\n   Inspect the local `report.docx` structure when available: heading counts,\n   lists, tables, hyperlink relationships, and image relationships should match `manifest.json`.\n\n6. Hand off the link.\n\n   Return the Drive\u002FDocs URL and, when useful, the local DOCX path or source HTML path. Connector success alone is not enough; the handoff is complete only after the uploaded file and local DOCX structure have been checked against the source report. Keep routine check and preflight details in support artifacts. Do not list internal checks in the user-facing handoff unless a check failed, was unavailable, or produced a user-relevant caveat.\n\n## Standards\n\n- Preserve every section, headline claim, metric card, metric definition,\n  source note, chart takeaway, recommendation, caveat, and link from the HTML report.\n- Preserve semantic formatting: headings, paragraphs, inline bold\u002Femphasis,\n  inline code, positive\u002Fnegative colors, links, lists, callouts, metric-card grids, tables, notes, captions, and charts.\n- Use DOCX-native structures wherever practical: headings, paragraphs, tables,\n  bullets\u002Fnumbered lists, links, inline images, paragraph shading, table cell shading, and text styles.\n- Keep the report text column readable. Tables, charts, rendered table grids,\n  screenshots, and visual blocks must not exceed the DOCX page text width.\n- Preserve charts as inline images rendered from the source visual or its same-data SVG fallback, aligned to the same left edge as text and tables. A chart with missing bars, missing legend swatches, or all-black\u002Fall-white marks fails validation even if the DOCX contains an image object.\n- Preserve multi-column report blocks. A two-column grid made only of titled mini-tables can remain a two-column rendered image capped to the text width;\n  mixed two-column blocks with narrative text, pills, callouts, or non-table panels should preserve that content natively instead of dropping it.\n- Do not expose customer-level details or sensitive links that were intentionally omitted from a sanitized report.\n- Do not write Google Docs batch-update artifacts such as `seed_requests.json`,\n  `remote_write_plan.json`, or `all_requests*.json`.\n\n## Repairs\n\nUse these fixes when validation exposes a conversion issue:\n\n| Problem | Fix |\n| --- | --- |\n| Heading is regular weight | Fix the DOCX writer heading style or explicit run bolding. |\n| Blank line after title or heading | Delete spacer paragraphs; skeletons should emit `\\n`, not `\\n\\n`, after headings. |\n| Body paragraphs have too much space | Delete literal blank paragraphs and set modest style spacing. |\n| Table\u002Fimage too wide | Set table columns or image width to the DOCX text column width. |\n| Chart has labels but missing bars | Inline SVG class styles or use a headless screenshot before inserting. |\n| Two-column table group is flattened | Treat the grid as one layout block with mini-table titles preserved. |\n| Executive summary, metric cards, or section is missing | Fix parser inventory before upload. |\n| Chart overlaps table | Insert the image on its own paragraph after the table. |\n| Chart duplicated | Remove the extra image; keep exactly one source-order copy. |\n| Inline bold\u002Fcode\u002Fcolor missing | Fix manifest range splitting in the DOCX writer. |\n| Source links show raw URLs | Replace with native linked labels or native bullets using HTML link text. |\n\n## Local Checks\n\n```bash\npython3 -m py_compile \u003CREPORT_TO_GOOGLE_DOC_SKILL_DIR>\u002Fscripts\u002Freport_to_google_doc_plan.py\npython3 \u003CREPORT_TO_GOOGLE_DOC_SKILL_DIR>\u002Fscripts\u002Freport_to_google_doc_plan.py \\\n  \u002Fabsolute\u002Fpath\u002Fto\u002Freport.html \\\n  --out-dir \u002Ftmp\u002Freport_to_google_doc_plan_smoke\njq '.status, .summary' \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Fpreflight_checks.json\ntest -f \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Freport.docx\ntest -f \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Fdocx_upload_plan.json\ngit diff --check -- plugins\u002Fdata-analytics\u002Fskills\u002Fbuild-report\u002Freport-to-google-doc\n```\n",{"data":37,"body":38},{"name":4,"description":6},{"type":39,"children":40},"root",[41,49,64,69,76,527,533,598,604,609,796,802,995],{"type":42,"tag":43,"props":44,"children":45},"element","h1",{"id":4},[46],{"type":47,"value":48},"text","Report To Google Doc",{"type":42,"tag":50,"props":51,"children":52},"p",{},[53,55,62],{"type":47,"value":54},"Use this skill only when the user explicitly needs a shareable Google Drive document from an existing HTML analytics report. The source must be an HTML report: a local file, a downloaded blob-hosted report, or a report produced by ",{"type":42,"tag":56,"props":57,"children":59},"code",{"className":58},[],[60],{"type":47,"value":61},"$build-report",{"type":47,"value":63},"\nHTML mode. This skill does not convert a live MCP app report directly.",{"type":42,"tag":50,"props":65,"children":66},{},[67],{"type":47,"value":68},"The expected path is HTML -> DOCX -> Drive upload. It is acceptable for Drive to host the upload as a DOCX-backed viewer file rather than a native Google Docs MIME type. Do not use the old Google Docs batch-update request path.",{"type":42,"tag":70,"props":71,"children":73},"h2",{"id":72},"workflow",[74],{"type":47,"value":75},"Workflow",{"type":42,"tag":77,"props":78,"children":79},"ol",{},[80,92,225,325,494,517],{"type":42,"tag":81,"props":82,"children":83},"li",{},[84,86,90],{"type":47,"value":85},"Resolve the HTML report.",{"type":42,"tag":87,"props":88,"children":89},"br",{},[],{"type":47,"value":91},"Use an absolute local path. If the user provides a remote report, retrieve it first and pass the local HTML file to the helper. If the file is a sign-in page, redirect page, or tiny stub, stop and obtain the real report.",{"type":42,"tag":81,"props":93,"children":94},{},[95,97,180,183,185,191,193,199,201,207,209,215,217,223],{"type":47,"value":96},"Run the bundled helper.",{"type":42,"tag":98,"props":99,"children":104},"pre",{"className":100,"code":101,"language":102,"meta":103,"style":103},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","python3 \u003CREPORT_TO_GOOGLE_DOC_SKILL_DIR>\u002Fscripts\u002Freport_to_google_doc_plan.py \\\n  \u002Fabsolute\u002Fpath\u002Fto\u002Freport.html \\\n  --out-dir \u002Ftmp\u002Freport_to_google_doc_plan\n","bash","",[105],{"type":42,"tag":56,"props":106,"children":107},{"__ignoreMap":103},[108,153,166],{"type":42,"tag":109,"props":110,"children":113},"span",{"class":111,"line":112},"line",1,[114,120,126,132,138,143,148],{"type":42,"tag":109,"props":115,"children":117},{"style":116},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[118],{"type":47,"value":119},"python3",{"type":42,"tag":109,"props":121,"children":123},{"style":122},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[124],{"type":47,"value":125}," \u003C",{"type":42,"tag":109,"props":127,"children":129},{"style":128},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[130],{"type":47,"value":131},"REPORT_TO_GOOGLE_DOC_SKILL_DI",{"type":42,"tag":109,"props":133,"children":135},{"style":134},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[136],{"type":47,"value":137},"R",{"type":42,"tag":109,"props":139,"children":140},{"style":122},[141],{"type":47,"value":142},">",{"type":42,"tag":109,"props":144,"children":145},{"style":128},[146],{"type":47,"value":147},"\u002Fscripts\u002Freport_to_google_doc_plan.py",{"type":42,"tag":109,"props":149,"children":150},{"style":134},[151],{"type":47,"value":152}," \\\n",{"type":42,"tag":109,"props":154,"children":156},{"class":111,"line":155},2,[157,162],{"type":42,"tag":109,"props":158,"children":159},{"style":128},[160],{"type":47,"value":161},"  \u002Fabsolute\u002Fpath\u002Fto\u002Freport.html",{"type":42,"tag":109,"props":163,"children":164},{"style":134},[165],{"type":47,"value":152},{"type":42,"tag":109,"props":167,"children":169},{"class":111,"line":168},3,[170,175],{"type":42,"tag":109,"props":171,"children":172},{"style":128},[173],{"type":47,"value":174},"  --out-dir",{"type":42,"tag":109,"props":176,"children":177},{"style":128},[178],{"type":47,"value":179}," \u002Ftmp\u002Freport_to_google_doc_plan\n",{"type":42,"tag":87,"props":181,"children":182},{},[],{"type":47,"value":184},"Omit ",{"type":42,"tag":56,"props":186,"children":188},{"className":187},[],[189],{"type":47,"value":190},"--render-workers",{"type":47,"value":192}," on the normal path. Only pass a worker count after benchmarking the same report family locally. If dependencies are missing,\nuse a local virtual environment with ",{"type":42,"tag":56,"props":194,"children":196},{"className":195},[],[197],{"type":47,"value":198},"beautifulsoup4",{"type":47,"value":200},", ",{"type":42,"tag":56,"props":202,"children":204},{"className":203},[],[205],{"type":47,"value":206},"pillow",{"type":47,"value":208},", and ",{"type":42,"tag":56,"props":210,"children":212},{"className":211},[],[213],{"type":47,"value":214},"python-docx",{"type":47,"value":216},"; ",{"type":42,"tag":56,"props":218,"children":220},{"className":219},[],[221],{"type":47,"value":222},"cairosvg",{"type":47,"value":224}," or headless Playwright are optional renderers.",{"type":42,"tag":81,"props":226,"children":227},{},[228,230,233,235,305,308,310,315,317,323],{"type":47,"value":229},"Inspect helper outputs.",{"type":42,"tag":87,"props":231,"children":232},{},[],{"type":47,"value":234},"Required outputs:",{"type":42,"tag":236,"props":237,"children":238},"ul",{},[239,250,261,272,283,294],{"type":42,"tag":81,"props":240,"children":241},{},[242,248],{"type":42,"tag":56,"props":243,"children":245},{"className":244},[],[246],{"type":47,"value":247},"skeleton.txt",{"type":47,"value":249},": source text with stable placeholders",{"type":42,"tag":81,"props":251,"children":252},{},[253,259],{"type":42,"tag":56,"props":254,"children":256},{"className":255},[],[257],{"type":47,"value":258},"manifest.json",{"type":47,"value":260},": parsed headings, tables, callouts, lists, styles, links,\nand rendered visual inventory",{"type":42,"tag":81,"props":262,"children":263},{},[264,270],{"type":42,"tag":56,"props":265,"children":267},{"className":266},[],[268],{"type":47,"value":269},"preflight_checks.json",{"type":47,"value":271},": source, width, DOCX, and rendered-image checks",{"type":42,"tag":81,"props":273,"children":274},{},[275,281],{"type":42,"tag":56,"props":276,"children":278},{"className":277},[],[279],{"type":47,"value":280},"report.docx",{"type":47,"value":282},": generated local Word document",{"type":42,"tag":81,"props":284,"children":285},{},[286,292],{"type":42,"tag":56,"props":287,"children":289},{"className":288},[],[290],{"type":47,"value":291},"docx_upload_plan.json",{"type":47,"value":293},": compact upload instructions",{"type":42,"tag":81,"props":295,"children":296},{},[297,303],{"type":42,"tag":56,"props":298,"children":300},{"className":299},[],[301],{"type":47,"value":302},"placeholder_queries.json",{"type":47,"value":304},": source mapping debug labels",{"type":42,"tag":87,"props":306,"children":307},{},[],{"type":47,"value":309},"Do not upload until ",{"type":42,"tag":56,"props":311,"children":313},{"className":312},[],[314],{"type":47,"value":269},{"type":47,"value":316}," has ",{"type":42,"tag":56,"props":318,"children":320},{"className":319},[],[321],{"type":47,"value":322},"status: \"passed\"",{"type":47,"value":324}," with zero errors. Warnings must either be fixed or called out in the handoff.",{"type":42,"tag":81,"props":326,"children":327},{},[328,330,481,484,486,492],{"type":47,"value":329},"Upload the DOCX.",{"type":42,"tag":98,"props":331,"children":335},{"className":332,"code":333,"language":334,"meta":103,"style":103},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","mcp__codex_apps__google_drive._upload_file({\n  \"file_uri\": \"\u002Ftmp\u002Freport_to_google_doc_plan\u002Freport.docx\",\n  \"file_name\": \"Report Name.docx\",\n  \"mime_type\": \"application\u002Fvnd.openxmlformats-officedocument.wordprocessingml.document\"\n})\n","json",[336],{"type":42,"tag":56,"props":337,"children":338},{"__ignoreMap":103},[339,352,395,432,467],{"type":42,"tag":109,"props":340,"children":341},{"class":111,"line":112},[342,347],{"type":42,"tag":109,"props":343,"children":344},{"style":134},[345],{"type":47,"value":346},"mcp__codex_apps__google_drive._upload_file(",{"type":42,"tag":109,"props":348,"children":349},{"style":122},[350],{"type":47,"value":351},"{\n",{"type":42,"tag":109,"props":353,"children":354},{"class":111,"line":155},[355,360,366,371,376,381,386,390],{"type":42,"tag":109,"props":356,"children":357},{"style":122},[358],{"type":47,"value":359},"  \"",{"type":42,"tag":109,"props":361,"children":363},{"style":362},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[364],{"type":47,"value":365},"file_uri",{"type":42,"tag":109,"props":367,"children":368},{"style":122},[369],{"type":47,"value":370},"\"",{"type":42,"tag":109,"props":372,"children":373},{"style":122},[374],{"type":47,"value":375},":",{"type":42,"tag":109,"props":377,"children":378},{"style":122},[379],{"type":47,"value":380}," \"",{"type":42,"tag":109,"props":382,"children":383},{"style":128},[384],{"type":47,"value":385},"\u002Ftmp\u002Freport_to_google_doc_plan\u002Freport.docx",{"type":42,"tag":109,"props":387,"children":388},{"style":122},[389],{"type":47,"value":370},{"type":42,"tag":109,"props":391,"children":392},{"style":122},[393],{"type":47,"value":394},",\n",{"type":42,"tag":109,"props":396,"children":397},{"class":111,"line":168},[398,402,407,411,415,419,424,428],{"type":42,"tag":109,"props":399,"children":400},{"style":122},[401],{"type":47,"value":359},{"type":42,"tag":109,"props":403,"children":404},{"style":362},[405],{"type":47,"value":406},"file_name",{"type":42,"tag":109,"props":408,"children":409},{"style":122},[410],{"type":47,"value":370},{"type":42,"tag":109,"props":412,"children":413},{"style":122},[414],{"type":47,"value":375},{"type":42,"tag":109,"props":416,"children":417},{"style":122},[418],{"type":47,"value":380},{"type":42,"tag":109,"props":420,"children":421},{"style":128},[422],{"type":47,"value":423},"Report Name.docx",{"type":42,"tag":109,"props":425,"children":426},{"style":122},[427],{"type":47,"value":370},{"type":42,"tag":109,"props":429,"children":430},{"style":122},[431],{"type":47,"value":394},{"type":42,"tag":109,"props":433,"children":435},{"class":111,"line":434},4,[436,440,445,449,453,457,462],{"type":42,"tag":109,"props":437,"children":438},{"style":122},[439],{"type":47,"value":359},{"type":42,"tag":109,"props":441,"children":442},{"style":362},[443],{"type":47,"value":444},"mime_type",{"type":42,"tag":109,"props":446,"children":447},{"style":122},[448],{"type":47,"value":370},{"type":42,"tag":109,"props":450,"children":451},{"style":122},[452],{"type":47,"value":375},{"type":42,"tag":109,"props":454,"children":455},{"style":122},[456],{"type":47,"value":380},{"type":42,"tag":109,"props":458,"children":459},{"style":128},[460],{"type":47,"value":461},"application\u002Fvnd.openxmlformats-officedocument.wordprocessingml.document",{"type":42,"tag":109,"props":463,"children":464},{"style":122},[465],{"type":47,"value":466},"\"\n",{"type":42,"tag":109,"props":468,"children":470},{"class":111,"line":469},5,[471,476],{"type":42,"tag":109,"props":472,"children":473},{"style":122},[474],{"type":47,"value":475},"}",{"type":42,"tag":109,"props":477,"children":478},{"style":134},[479],{"type":47,"value":480},")\n",{"type":42,"tag":87,"props":482,"children":483},{},[],{"type":47,"value":485},"Treat the returned Drive URL as the deliverable. Do not attempt to force native Google Docs conversion, and do not fall back to ",{"type":42,"tag":56,"props":487,"children":489},{"className":488},[],[490],{"type":47,"value":491},"_batch_update_document",{"type":47,"value":493},".",{"type":42,"tag":81,"props":495,"children":496},{},[497,499,502,504,509,511,516],{"type":47,"value":498},"Validate the uploaded result.",{"type":42,"tag":87,"props":500,"children":501},{},[],{"type":47,"value":503},"Confirm the uploaded file is readable and non-empty. Compare uploaded text against the source inventory: title, section headings, executive summary or answer callout, caveats, recommendations, source notes, and source links.\nInspect the local ",{"type":42,"tag":56,"props":505,"children":507},{"className":506},[],[508],{"type":47,"value":280},{"type":47,"value":510}," structure when available: heading counts,\nlists, tables, hyperlink relationships, and image relationships should match ",{"type":42,"tag":56,"props":512,"children":514},{"className":513},[],[515],{"type":47,"value":258},{"type":47,"value":493},{"type":42,"tag":81,"props":518,"children":519},{},[520,522,525],{"type":47,"value":521},"Hand off the link.",{"type":42,"tag":87,"props":523,"children":524},{},[],{"type":47,"value":526},"Return the Drive\u002FDocs URL and, when useful, the local DOCX path or source HTML path. Connector success alone is not enough; the handoff is complete only after the uploaded file and local DOCX structure have been checked against the source report. Keep routine check and preflight details in support artifacts. Do not list internal checks in the user-facing handoff unless a check failed, was unavailable, or produced a user-relevant caveat.",{"type":42,"tag":70,"props":528,"children":530},{"id":529},"standards",[531],{"type":47,"value":532},"Standards",{"type":42,"tag":236,"props":534,"children":535},{},[536,541,546,551,556,561,566,571],{"type":42,"tag":81,"props":537,"children":538},{},[539],{"type":47,"value":540},"Preserve every section, headline claim, metric card, metric definition,\nsource note, chart takeaway, recommendation, caveat, and link from the HTML report.",{"type":42,"tag":81,"props":542,"children":543},{},[544],{"type":47,"value":545},"Preserve semantic formatting: headings, paragraphs, inline bold\u002Femphasis,\ninline code, positive\u002Fnegative colors, links, lists, callouts, metric-card grids, tables, notes, captions, and charts.",{"type":42,"tag":81,"props":547,"children":548},{},[549],{"type":47,"value":550},"Use DOCX-native structures wherever practical: headings, paragraphs, tables,\nbullets\u002Fnumbered lists, links, inline images, paragraph shading, table cell shading, and text styles.",{"type":42,"tag":81,"props":552,"children":553},{},[554],{"type":47,"value":555},"Keep the report text column readable. Tables, charts, rendered table grids,\nscreenshots, and visual blocks must not exceed the DOCX page text width.",{"type":42,"tag":81,"props":557,"children":558},{},[559],{"type":47,"value":560},"Preserve charts as inline images rendered from the source visual or its same-data SVG fallback, aligned to the same left edge as text and tables. A chart with missing bars, missing legend swatches, or all-black\u002Fall-white marks fails validation even if the DOCX contains an image object.",{"type":42,"tag":81,"props":562,"children":563},{},[564],{"type":47,"value":565},"Preserve multi-column report blocks. A two-column grid made only of titled mini-tables can remain a two-column rendered image capped to the text width;\nmixed two-column blocks with narrative text, pills, callouts, or non-table panels should preserve that content natively instead of dropping it.",{"type":42,"tag":81,"props":567,"children":568},{},[569],{"type":47,"value":570},"Do not expose customer-level details or sensitive links that were intentionally omitted from a sanitized report.",{"type":42,"tag":81,"props":572,"children":573},{},[574,576,582,583,589,591,597],{"type":47,"value":575},"Do not write Google Docs batch-update artifacts such as ",{"type":42,"tag":56,"props":577,"children":579},{"className":578},[],[580],{"type":47,"value":581},"seed_requests.json",{"type":47,"value":394},{"type":42,"tag":56,"props":584,"children":586},{"className":585},[],[587],{"type":47,"value":588},"remote_write_plan.json",{"type":47,"value":590},", or ",{"type":42,"tag":56,"props":592,"children":594},{"className":593},[],[595],{"type":47,"value":596},"all_requests*.json",{"type":47,"value":493},{"type":42,"tag":70,"props":599,"children":601},{"id":600},"repairs",[602],{"type":47,"value":603},"Repairs",{"type":42,"tag":50,"props":605,"children":606},{},[607],{"type":47,"value":608},"Use these fixes when validation exposes a conversion issue:",{"type":42,"tag":610,"props":611,"children":612},"table",{},[613,632],{"type":42,"tag":614,"props":615,"children":616},"thead",{},[617],{"type":42,"tag":618,"props":619,"children":620},"tr",{},[621,627],{"type":42,"tag":622,"props":623,"children":624},"th",{},[625],{"type":47,"value":626},"Problem",{"type":42,"tag":622,"props":628,"children":629},{},[630],{"type":47,"value":631},"Fix",{"type":42,"tag":633,"props":634,"children":635},"tbody",{},[636,650,679,692,705,718,731,744,757,770,783],{"type":42,"tag":618,"props":637,"children":638},{},[639,645],{"type":42,"tag":640,"props":641,"children":642},"td",{},[643],{"type":47,"value":644},"Heading is regular weight",{"type":42,"tag":640,"props":646,"children":647},{},[648],{"type":47,"value":649},"Fix the DOCX writer heading style or explicit run bolding.",{"type":42,"tag":618,"props":651,"children":652},{},[653,658],{"type":42,"tag":640,"props":654,"children":655},{},[656],{"type":47,"value":657},"Blank line after title or heading",{"type":42,"tag":640,"props":659,"children":660},{},[661,663,669,671,677],{"type":47,"value":662},"Delete spacer paragraphs; skeletons should emit ",{"type":42,"tag":56,"props":664,"children":666},{"className":665},[],[667],{"type":47,"value":668},"\\n",{"type":47,"value":670},", not ",{"type":42,"tag":56,"props":672,"children":674},{"className":673},[],[675],{"type":47,"value":676},"\\n\\n",{"type":47,"value":678},", after headings.",{"type":42,"tag":618,"props":680,"children":681},{},[682,687],{"type":42,"tag":640,"props":683,"children":684},{},[685],{"type":47,"value":686},"Body paragraphs have too much space",{"type":42,"tag":640,"props":688,"children":689},{},[690],{"type":47,"value":691},"Delete literal blank paragraphs and set modest style spacing.",{"type":42,"tag":618,"props":693,"children":694},{},[695,700],{"type":42,"tag":640,"props":696,"children":697},{},[698],{"type":47,"value":699},"Table\u002Fimage too wide",{"type":42,"tag":640,"props":701,"children":702},{},[703],{"type":47,"value":704},"Set table columns or image width to the DOCX text column width.",{"type":42,"tag":618,"props":706,"children":707},{},[708,713],{"type":42,"tag":640,"props":709,"children":710},{},[711],{"type":47,"value":712},"Chart has labels but missing bars",{"type":42,"tag":640,"props":714,"children":715},{},[716],{"type":47,"value":717},"Inline SVG class styles or use a headless screenshot before inserting.",{"type":42,"tag":618,"props":719,"children":720},{},[721,726],{"type":42,"tag":640,"props":722,"children":723},{},[724],{"type":47,"value":725},"Two-column table group is flattened",{"type":42,"tag":640,"props":727,"children":728},{},[729],{"type":47,"value":730},"Treat the grid as one layout block with mini-table titles preserved.",{"type":42,"tag":618,"props":732,"children":733},{},[734,739],{"type":42,"tag":640,"props":735,"children":736},{},[737],{"type":47,"value":738},"Executive summary, metric cards, or section is missing",{"type":42,"tag":640,"props":740,"children":741},{},[742],{"type":47,"value":743},"Fix parser inventory before upload.",{"type":42,"tag":618,"props":745,"children":746},{},[747,752],{"type":42,"tag":640,"props":748,"children":749},{},[750],{"type":47,"value":751},"Chart overlaps table",{"type":42,"tag":640,"props":753,"children":754},{},[755],{"type":47,"value":756},"Insert the image on its own paragraph after the table.",{"type":42,"tag":618,"props":758,"children":759},{},[760,765],{"type":42,"tag":640,"props":761,"children":762},{},[763],{"type":47,"value":764},"Chart duplicated",{"type":42,"tag":640,"props":766,"children":767},{},[768],{"type":47,"value":769},"Remove the extra image; keep exactly one source-order copy.",{"type":42,"tag":618,"props":771,"children":772},{},[773,778],{"type":42,"tag":640,"props":774,"children":775},{},[776],{"type":47,"value":777},"Inline bold\u002Fcode\u002Fcolor missing",{"type":42,"tag":640,"props":779,"children":780},{},[781],{"type":47,"value":782},"Fix manifest range splitting in the DOCX writer.",{"type":42,"tag":618,"props":784,"children":785},{},[786,791],{"type":42,"tag":640,"props":787,"children":788},{},[789],{"type":47,"value":790},"Source links show raw URLs",{"type":42,"tag":640,"props":792,"children":793},{},[794],{"type":47,"value":795},"Replace with native linked labels or native bullets using HTML link text.",{"type":42,"tag":70,"props":797,"children":799},{"id":798},"local-checks",[800],{"type":47,"value":801},"Local Checks",{"type":42,"tag":98,"props":803,"children":805},{"className":100,"code":804,"language":102,"meta":103,"style":103},"python3 -m py_compile \u003CREPORT_TO_GOOGLE_DOC_SKILL_DIR>\u002Fscripts\u002Freport_to_google_doc_plan.py\npython3 \u003CREPORT_TO_GOOGLE_DOC_SKILL_DIR>\u002Fscripts\u002Freport_to_google_doc_plan.py \\\n  \u002Fabsolute\u002Fpath\u002Fto\u002Freport.html \\\n  --out-dir \u002Ftmp\u002Freport_to_google_doc_plan_smoke\njq '.status, .summary' \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Fpreflight_checks.json\ntest -f \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Freport.docx\ntest -f \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Fdocx_upload_plan.json\ngit diff --check -- plugins\u002Fdata-analytics\u002Fskills\u002Fbuild-report\u002Freport-to-google-doc\n",[806],{"type":42,"tag":56,"props":807,"children":808},{"__ignoreMap":103},[809,847,878,889,901,929,949,966],{"type":42,"tag":109,"props":810,"children":811},{"class":111,"line":112},[812,816,821,826,830,834,838,842],{"type":42,"tag":109,"props":813,"children":814},{"style":116},[815],{"type":47,"value":119},{"type":42,"tag":109,"props":817,"children":818},{"style":128},[819],{"type":47,"value":820}," -m",{"type":42,"tag":109,"props":822,"children":823},{"style":128},[824],{"type":47,"value":825}," py_compile",{"type":42,"tag":109,"props":827,"children":828},{"style":122},[829],{"type":47,"value":125},{"type":42,"tag":109,"props":831,"children":832},{"style":128},[833],{"type":47,"value":131},{"type":42,"tag":109,"props":835,"children":836},{"style":134},[837],{"type":47,"value":137},{"type":42,"tag":109,"props":839,"children":840},{"style":122},[841],{"type":47,"value":142},{"type":42,"tag":109,"props":843,"children":844},{"style":128},[845],{"type":47,"value":846},"\u002Fscripts\u002Freport_to_google_doc_plan.py\n",{"type":42,"tag":109,"props":848,"children":849},{"class":111,"line":155},[850,854,858,862,866,870,874],{"type":42,"tag":109,"props":851,"children":852},{"style":116},[853],{"type":47,"value":119},{"type":42,"tag":109,"props":855,"children":856},{"style":122},[857],{"type":47,"value":125},{"type":42,"tag":109,"props":859,"children":860},{"style":128},[861],{"type":47,"value":131},{"type":42,"tag":109,"props":863,"children":864},{"style":134},[865],{"type":47,"value":137},{"type":42,"tag":109,"props":867,"children":868},{"style":122},[869],{"type":47,"value":142},{"type":42,"tag":109,"props":871,"children":872},{"style":128},[873],{"type":47,"value":147},{"type":42,"tag":109,"props":875,"children":876},{"style":134},[877],{"type":47,"value":152},{"type":42,"tag":109,"props":879,"children":880},{"class":111,"line":168},[881,885],{"type":42,"tag":109,"props":882,"children":883},{"style":128},[884],{"type":47,"value":161},{"type":42,"tag":109,"props":886,"children":887},{"style":134},[888],{"type":47,"value":152},{"type":42,"tag":109,"props":890,"children":891},{"class":111,"line":434},[892,896],{"type":42,"tag":109,"props":893,"children":894},{"style":128},[895],{"type":47,"value":174},{"type":42,"tag":109,"props":897,"children":898},{"style":128},[899],{"type":47,"value":900}," \u002Ftmp\u002Freport_to_google_doc_plan_smoke\n",{"type":42,"tag":109,"props":902,"children":903},{"class":111,"line":469},[904,909,914,919,924],{"type":42,"tag":109,"props":905,"children":906},{"style":116},[907],{"type":47,"value":908},"jq",{"type":42,"tag":109,"props":910,"children":911},{"style":122},[912],{"type":47,"value":913}," '",{"type":42,"tag":109,"props":915,"children":916},{"style":128},[917],{"type":47,"value":918},".status, .summary",{"type":42,"tag":109,"props":920,"children":921},{"style":122},[922],{"type":47,"value":923},"'",{"type":42,"tag":109,"props":925,"children":926},{"style":128},[927],{"type":47,"value":928}," \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Fpreflight_checks.json\n",{"type":42,"tag":109,"props":930,"children":932},{"class":111,"line":931},6,[933,939,944],{"type":42,"tag":109,"props":934,"children":936},{"style":935},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[937],{"type":47,"value":938},"test",{"type":42,"tag":109,"props":940,"children":941},{"style":128},[942],{"type":47,"value":943}," -f",{"type":42,"tag":109,"props":945,"children":946},{"style":128},[947],{"type":47,"value":948}," \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Freport.docx\n",{"type":42,"tag":109,"props":950,"children":952},{"class":111,"line":951},7,[953,957,961],{"type":42,"tag":109,"props":954,"children":955},{"style":935},[956],{"type":47,"value":938},{"type":42,"tag":109,"props":958,"children":959},{"style":128},[960],{"type":47,"value":943},{"type":42,"tag":109,"props":962,"children":963},{"style":128},[964],{"type":47,"value":965}," \u002Ftmp\u002Freport_to_google_doc_plan_smoke\u002Fdocx_upload_plan.json\n",{"type":42,"tag":109,"props":967,"children":969},{"class":111,"line":968},8,[970,975,980,985,990],{"type":42,"tag":109,"props":971,"children":972},{"style":116},[973],{"type":47,"value":974},"git",{"type":42,"tag":109,"props":976,"children":977},{"style":128},[978],{"type":47,"value":979}," diff",{"type":42,"tag":109,"props":981,"children":982},{"style":128},[983],{"type":47,"value":984}," --check",{"type":42,"tag":109,"props":986,"children":987},{"style":128},[988],{"type":47,"value":989}," --",{"type":42,"tag":109,"props":991,"children":992},{"style":128},[993],{"type":47,"value":994}," plugins\u002Fdata-analytics\u002Fskills\u002Fbuild-report\u002Freport-to-google-doc\n",{"type":42,"tag":996,"props":997,"children":998},"style",{},[999],{"type":47,"value":1000},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1002,"total":1115},[1003,1022,1038,1051,1067,1083,1100],{"slug":1004,"name":1004,"fn":1005,"description":1006,"org":1007,"tags":1008,"stars":25,"repoUrl":26,"updatedAt":1021},"analyze-account-signals","analyze account signals for sales intelligence","Use when the user wants to know what changed with one account, monitor an owner portfolio or watchlist, or rank accounts needing attention from recent evidence. Produce an evidence-backed account brief or bounded watchlist summary with recommended actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1009,1012,1015,1018],{"name":1010,"slug":1011,"type":15},"Analytics","analytics",{"name":1013,"slug":1014,"type":15},"CRM","crm",{"name":1016,"slug":1017,"type":15},"Research","research",{"name":1019,"slug":1020,"type":15},"Sales","sales","2026-07-01T07:54:11.79288",{"slug":1023,"name":1023,"fn":1024,"description":1025,"org":1026,"tags":1027,"stars":25,"repoUrl":26,"updatedAt":1037},"analyze-data-quality","assess data quality for analysis","Assess whether structured data, query results, dashboards, or analytical evidence are trustworthy enough to use. Use when the task is to check data quality, reconcile conflicting sources or metric definitions, or decide whether evidence is safe to cite.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1028,1031,1034],{"name":1029,"slug":1030,"type":15},"Audit","audit",{"name":1032,"slug":1033,"type":15},"Data Engineering","data-engineering",{"name":1035,"slug":1036,"type":15},"Data Quality","data-quality","2026-07-01T07:55:01.146961",{"slug":1039,"name":1039,"fn":1040,"description":1041,"org":1042,"tags":1043,"stars":25,"repoUrl":26,"updatedAt":1050},"answers-ask-user-input","request missing context from users","Use when a small amount of missing context would materially improve the answer and tappable options plus a free-text answer can gather it efficiently.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1044,1047],{"name":1045,"slug":1046,"type":15},"Communications","communications",{"name":1048,"slug":1049,"type":15},"Productivity","productivity","2026-07-14T05:43:36.096323",{"slug":1052,"name":1052,"fn":1053,"description":1054,"org":1055,"tags":1056,"stars":25,"repoUrl":26,"updatedAt":1066},"apollo","prospect and enrich leads with Apollo","Use only when a focused Sales workflow has selected a present and connected Apollo connector, or the user explicitly asks for Apollo prospecting, enrichment, Company Details, records, sequences, or outbound planning. Apply Apollo v2-specific behavior only after verifying app version 2.0.0 or later.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1057,1059,1062,1065],{"name":1058,"slug":1052,"type":15},"Apollo",{"name":1060,"slug":1061,"type":15},"Lead Enrichment","lead-enrichment",{"name":1063,"slug":1064,"type":15},"Prospecting","prospecting",{"name":1019,"slug":1020,"type":15},"2026-07-14T05:43:34.800076",{"slug":1030,"name":1030,"fn":1068,"description":1069,"org":1070,"tags":1071,"stars":25,"repoUrl":26,"updatedAt":1082},"audit product flows and user journeys","Audit or critique a product flow, journey, workflow, funnel, onboarding path, checkout path, settings path, screen, or multi-step product experience by capturing screenshots first, then reporting UX, design, and accessibility findings inline from that evidence. Use Figma only when the user explicitly asks for a board. Use when the user asks to audit, review, critique, inspect, assess, analyze, evaluate, or give feedback on a product experience.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1072,1073,1076,1079],{"name":1029,"slug":1030,"type":15},{"name":1074,"slug":1075,"type":15},"Design","design",{"name":1077,"slug":1078,"type":15},"Product Management","product-management",{"name":1080,"slug":1081,"type":15},"UX Design","ux-design","2026-07-01T07:54:30.613428",{"slug":1084,"name":1084,"fn":1085,"description":1086,"org":1087,"tags":1088,"stars":25,"repoUrl":26,"updatedAt":1099},"build-business-case","build customer-led business cases and ROI","Review commercial proposals and build customer-led business cases, ROI or value models, pricing or investment rationales, executive summaries, and customer-ready value stories tied to a customer, workflow, initiative, or decision.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1089,1092,1095,1098],{"name":1090,"slug":1091,"type":15},"Content Creation","content-creation",{"name":1093,"slug":1094,"type":15},"Finance","finance",{"name":1096,"slug":1097,"type":15},"Financial Modeling","financial-modeling",{"name":1019,"slug":1020,"type":15},"2026-07-01T07:54:02.779003",{"slug":1101,"name":1101,"fn":1102,"description":1103,"org":1104,"tags":1105,"stars":25,"repoUrl":26,"updatedAt":1114},"build-competitive-brief","build competitive briefs and battlecards","Use when the user wants a competitor or vendor comparison, market-landscape analysis, battlecard, objection package, positioning brief, or account-specific competitive view. Produce an evidence-backed comparison, guidance, and brief, using supplied materials, connected research, and public evidence when appropriate.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1106,1109,1112,1113],{"name":1107,"slug":1108,"type":15},"Competitive Intelligence","competitive-intelligence",{"name":1110,"slug":1111,"type":15},"Marketing","marketing",{"name":1016,"slug":1017,"type":15},{"name":1019,"slug":1020,"type":15},"2026-07-01T07:54:13.073252",43,{"items":1117,"total":1316},[1118,1137,1160,1177,1193,1212,1229,1243,1259,1273,1285,1300],{"slug":1119,"name":1119,"fn":1120,"description":1121,"org":1122,"tags":1123,"stars":1134,"repoUrl":1135,"updatedAt":1136},"prior-auth-packet-builder","build healthcare prior authorization packets","Build a concise prior authorization packet from local case files and payer policy docs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1124,1125,1128,1131],{"name":20,"slug":21,"type":15},{"name":1126,"slug":1127,"type":15},"Healthcare","healthcare",{"name":1129,"slug":1130,"type":15},"Insurance","insurance",{"name":1132,"slug":1133,"type":15},"Regulatory Compliance","regulatory-compliance",28169,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fopenai-agents-python","2026-04-16T05:11:39.180399",{"slug":1138,"name":1138,"fn":1139,"description":1140,"org":1141,"tags":1142,"stars":1157,"repoUrl":1158,"updatedAt":1159},"aspnet-core","build ASP.NET Core web applications","Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development. Use when working on Blazor Web Apps, Razor Pages, MVC, Minimal APIs, controller-based Web APIs, SignalR, gRPC, middleware, dependency injection, configuration, authentication, authorization, testing, performance, deployment, or ASP.NET Core upgrades.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1143,1146,1148,1151,1154],{"name":1144,"slug":1145,"type":15},".NET","dotnet",{"name":1147,"slug":1138,"type":15},"ASP.NET Core",{"name":1149,"slug":1150,"type":15},"Blazor","blazor",{"name":1152,"slug":1153,"type":15},"C#","csharp",{"name":1155,"slug":1156,"type":15},"Web Development","web-development",23787,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fskills","2026-04-12T05:07:02.819491",{"slug":1161,"name":1161,"fn":1162,"description":1163,"org":1164,"tags":1165,"stars":1157,"repoUrl":1158,"updatedAt":1176},"chatgpt-apps","build ChatGPT Apps SDK applications","Build, scaffold, refactor, and troubleshoot ChatGPT Apps SDK applications that combine an MCP server and widget UI. Use when Codex needs to design tools, register UI resources, wire the MCP Apps bridge or ChatGPT compatibility APIs, apply Apps SDK metadata or CSP or domain settings, or produce a docs-aligned project scaffold. Prefer a docs-first workflow by invoking the openai-docs skill or OpenAI developer docs MCP tools before generating code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1166,1169,1172,1175],{"name":1167,"slug":1168,"type":15},"Apps SDK","apps-sdk",{"name":1170,"slug":1171,"type":15},"ChatGPT","chatgpt",{"name":1173,"slug":1174,"type":15},"MCP","mcp",{"name":9,"slug":8,"type":15},"2026-04-12T05:07:05.468097",{"slug":1178,"name":1178,"fn":1179,"description":1180,"org":1181,"tags":1182,"stars":1157,"repoUrl":1158,"updatedAt":1192},"cli-creator","build CLIs from API docs","Build a composable CLI for Codex from API docs, an OpenAPI spec, existing curl examples, an SDK, a web app, an admin tool, or a local script. Use when the user wants Codex to create a command-line tool that can run from any repo, expose composable read\u002Fwrite commands, return stable JSON, manage auth, and pair with a companion skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1183,1186,1189],{"name":1184,"slug":1185,"type":15},"API Development","api-development",{"name":1187,"slug":1188,"type":15},"CLI","cli",{"name":1190,"slug":1191,"type":15},"Codex","codex","2026-04-12T05:07:04.132762",{"slug":1194,"name":1194,"fn":1195,"description":1196,"org":1197,"tags":1198,"stars":1157,"repoUrl":1158,"updatedAt":1211},"cloudflare-deploy","deploy projects to Cloudflare","Deploy applications and infrastructure to Cloudflare using Workers, Pages, and related platform services. Use when the user asks to deploy, host, publish, or set up a project on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1199,1202,1205,1208],{"name":1200,"slug":1201,"type":15},"Cloudflare","cloudflare",{"name":1203,"slug":1204,"type":15},"Cloudflare Pages","cloudflare-pages",{"name":1206,"slug":1207,"type":15},"Cloudflare Workers","cloudflare-workers",{"name":1209,"slug":1210,"type":15},"Deployment","deployment","2026-04-12T05:07:14.275118",{"slug":1213,"name":1213,"fn":1214,"description":1215,"org":1216,"tags":1217,"stars":1157,"repoUrl":1158,"updatedAt":1228},"define-goal","define and set measurable project goals","Help the user define a concrete, measurable goal before starting work, especially when they ask to use the goal tool, create a goal, set an objective, clarify success criteria, or turn a fuzzy intention into a quantitative outcome. Use this skill for goal creation and goal refinement only; it does not manage durable snapshots, decision logs, or long-running execution artifacts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1218,1219,1222,1225],{"name":1048,"slug":1049,"type":15},{"name":1220,"slug":1221,"type":15},"Project Management","project-management",{"name":1223,"slug":1224,"type":15},"Strategy","strategy",{"name":1226,"slug":1227,"type":15},"Task Management","task-management","2026-05-23T06:17:16.870838",{"slug":1230,"name":1230,"fn":1231,"description":1232,"org":1233,"tags":1234,"stars":1157,"repoUrl":1158,"updatedAt":1242},"figma","translate Figma designs into code","Use the Figma MCP server to fetch design context, screenshots, variables, and assets from Figma, and to translate Figma nodes into production code. Trigger when a task involves Figma URLs, node IDs, design-to-code implementation, or Figma MCP setup and troubleshooting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1235,1236,1238,1241],{"name":1074,"slug":1075,"type":15},{"name":1237,"slug":1230,"type":15},"Figma",{"name":1239,"slug":1240,"type":15},"Frontend","frontend",{"name":1173,"slug":1174,"type":15},"2026-04-12T05:06:47.939943",{"slug":1244,"name":1244,"fn":1245,"description":1246,"org":1247,"tags":1248,"stars":1157,"repoUrl":1158,"updatedAt":1258},"figma-code-connect-components","connect Figma designs to code components","Connects Figma design components to code components using Code Connect mapping tools. Use when user says \"code connect\", \"connect this component to code\", \"map this component\", \"link component to code\", \"create code connect mapping\", or wants to establish mappings between Figma designs and code implementations. For canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1249,1250,1253,1254,1255],{"name":1074,"slug":1075,"type":15},{"name":1251,"slug":1252,"type":15},"Design System","design-system",{"name":1237,"slug":1230,"type":15},{"name":1239,"slug":1240,"type":15},{"name":1256,"slug":1257,"type":15},"UI Components","ui-components","2026-05-10T05:59:52.971881",{"slug":1260,"name":1260,"fn":1261,"description":1262,"org":1263,"tags":1264,"stars":1157,"repoUrl":1158,"updatedAt":1272},"figma-create-design-system-rules","generate design system rules from Figma","Generates custom design system rules for the user's codebase. Use when user says \"create design system rules\", \"generate rules for my project\", \"set up design rules\", \"customize design system guidelines\", or wants to establish project-specific conventions for Figma-to-code workflows. Requires Figma MCP server connection.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1265,1266,1267,1270,1271],{"name":1074,"slug":1075,"type":15},{"name":1251,"slug":1252,"type":15},{"name":1268,"slug":1269,"type":15},"Documentation","documentation",{"name":1237,"slug":1230,"type":15},{"name":1239,"slug":1240,"type":15},"2026-05-16T06:07:47.821474",{"slug":1274,"name":1274,"fn":1275,"description":1276,"org":1277,"tags":1278,"stars":1157,"repoUrl":1158,"updatedAt":1284},"figma-implement-design","translate Figma designs into application code","Translates Figma designs into production-ready application code with 1:1 visual fidelity. Use when implementing UI code from Figma files, when user mentions \"implement design\", \"generate code\", \"implement component\", provides Figma URLs, or asks to build components matching Figma specs. For Figma canvas writes via `use_figma`, use `figma-use`.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1279,1280,1281,1282,1283],{"name":1074,"slug":1075,"type":15},{"name":1237,"slug":1230,"type":15},{"name":1239,"slug":1240,"type":15},{"name":1256,"slug":1257,"type":15},{"name":1155,"slug":1156,"type":15},"2026-05-16T06:07:40.583615",{"slug":1286,"name":1286,"fn":1287,"description":1288,"org":1289,"tags":1290,"stars":1157,"repoUrl":1158,"updatedAt":1299},"hatch-pet","create animated pets for Codex","Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot pet, or a full 8x9 animated pet atlas with transparent unused cells, QA contact sheets, and pet.json packaging. This skill composes the installed $imagegen system skill for visual generation and uses bundled scripts for deterministic spritesheet assembly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1291,1294,1295,1298],{"name":1292,"slug":1293,"type":15},"Animation","animation",{"name":1190,"slug":1191,"type":15},{"name":1296,"slug":1297,"type":15},"Creative","creative",{"name":1074,"slug":1075,"type":15},"2026-05-02T05:31:48.48485",{"slug":1301,"name":1301,"fn":1302,"description":1303,"org":1304,"tags":1305,"stars":1157,"repoUrl":1158,"updatedAt":1315},"imagegen","generate and edit raster images","Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output should be a bitmap asset rather than repo-native code or vector. Do not use when the task is better handled by editing existing SVG\u002Fvector\u002Fcode-native assets, extending an established icon or logo system, or building the visual directly in HTML\u002FCSS\u002Fcanvas.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1306,1307,1308,1311,1314],{"name":1296,"slug":1297,"type":15},{"name":1074,"slug":1075,"type":15},{"name":1309,"slug":1310,"type":15},"Image Generation","image-generation",{"name":1312,"slug":1313,"type":15},"Images","images",{"name":9,"slug":8,"type":15},"2026-05-15T06:23:24.312127",675]