[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F1XHHXM2M724B7TXJ847FN":3,"skill-same:01M6F1XHHXM2M724B7TXJ847FN":60},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6F1XHHXM2M724B7TXJ847FN","slides.convert_to_typst",null,"Convert markdown slides to Typst-compatible format via pandoc","causify-ai\u002Fhelpers","causify-ai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121828442?v=4","01M6BZFTHW2MQR7FWK8CDW0DRA","Causify.AI","01M6F1K6CCKKF8YKTBN4ZV509G",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fslides.convert_to_typst\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32],"slides","convert","slides convert to typst","typst","markdown","format","haiku","via","pandoc","2026-11-10 10:12:30",false,"---\ndescription: Convert markdown slides to Typst-compatible format via pandoc\nmodel: haiku\n---\n\n# Goal\n- Convert a markdown slides file to Typst presentation format\n- Preserve structure, content, and formatting\n- Output clean, well-formatted markdown code suitable for conversion to Typst\n\n# Workflow\n\n## Read Input File\n- Read the markdown slides file (e.g., `lectures.md`)\n\n## Apply Conversion Rules\n- Systematically fix math, unicode, and formatting\n\n## Validate Output\n- Verify no content loss and structure preserved\n\n## Output File\n- Write converted markdown with same base name\n\n## Quality Checks\n- All slide headers and hierarchy preserved\n- No content deleted or truncated\n- All math expressions wrapped (`$...$`)\n- No unicode math characters remain\n- Operators properly formatted with `op()`\n- Code blocks and lists intact\n- File is valid markdown\n\n# Conventions\n\n## LaTeX Custom Commands\n- Replace presentation-specific commands with Typst equivalents:\n  - `$\\EE$` -> `$bb(E)$` (blackboard E)\n  - `$\\VV$` -> `$bb(V)$` (blackboard V)\n  - `$\\Pr$` -> `$Pr$` (remove backslash)\n\n## Variables and Math Expressions\n- Wrap all variables, parameters, and math expressions in `$...$`:\n  - **Bad** (unwrapped, renders as plain text): `Randomly permute the values\n    of x_j across all samples`\n  - **Good** (wrapped in math mode): `Randomly permute the values of $x_j$\n    across all samples`\n  - **Bad** (unwrapped function notation): `Compute f(x) and g(x)`\n  - **Good** (wrapped in math mode): `Compute $f(x)$ and $g(x)$`\n\n## Unicode to LaTeX\n- Replace unicode math characters with LaTeX:\n  - `Ω` -> `$\\Omega$`\n  - `→` -> `$\\to$`\n  - `≤` -> `$\\leq$`\n  - `×` -> `$\\times$`\n\n## Subscripts and Superscripts\n- Use math mode for all subscripts\u002Fsuperscripts:\n  - **Bad** (unicode subscript or bare caret, invalid Typst math): P₀ or P^n\n  - **Good** (math mode syntax): `$P_0$` or `$P^n$`\n\n## Math Operators\n- Use `op()` for named operators in Typst:\n  - **Bad** (named operator unwrapped, Typst renders it as variables): `$g^* =\n    arg min_(g in G)$`\n  - **Good** (wrapped with `op()`): `$g^* = op(\"arg min\")_(g in G)$`\n  - Also: `$max_i x_i$` -> `$op(\"max\")_i x_i$`\n\n## Plain Numbers and Currency\n- Do NOT wrap pure numbers in math mode:\n  - **Bad**:\n    ```text\n    The house costs $50k because it has 4 bedrooms ($+\\$30$k)\n    ```\n  - **Good**:\n    ```text\n    The house costs \\$50k because it has 4 bedrooms (+\\$30k)\n    ```\n\n## Block Formulas\n- Use Typst code blocks for complex multi-line formulas:\n  ```{=typst}\n  $ Pr(X_1 , ... , X_n) = product_(i = 1)^n Pr(X_i | \"Parents\"(X_i)) $\n  ```\n\n# Verification\n- [ ] Make sure that the converted slides render correctly, e.g.,\n  ```bash\n  > gen_slides.py -i \u003CFILE> --notes_to_pdf_args=\"--skip_action open_pdf\"\n  ```\n","# Goal\n- Convert a markdown slides file to Typst presentation format\n- Preserve structure, content, and formatting\n- Output clean, well-formatted markdown code suitable for conversion to Typst\n\n# Workflow\n\n## Read Input File\n- Read the markdown slides file (e.g., `lectures.md`)\n\n## Apply Conversion Rules\n- Systematically fix math, unicode, and formatting\n\n## Validate Output\n- Verify no content loss and structure preserved\n\n## Output File\n- Write converted markdown with same base name\n\n## Quality Checks\n- All slide headers and hierarchy preserved\n- No content deleted or truncated\n- All math expressions wrapped (`$...$`)\n- No unicode math characters remain\n- Operators properly formatted with `op()`\n- Code blocks and lists intact\n- File is valid markdown\n\n# Conventions\n\n## LaTeX Custom Commands\n- Replace presentation-specific commands with Typst equivalents:\n  - `$\\EE$` -> `$bb(E)$` (blackboard E)\n  - `$\\VV$` -> `$bb(V)$` (blackboard V)\n  - `$\\Pr$` -> `$Pr$` (remove backslash)\n\n## Variables and Math Expressions\n- Wrap all variables, parameters, and math expressions in `$...$`:\n  - **Bad** (unwrapped, renders as plain text): `Randomly permute the values\n    of x_j across all samples`\n  - **Good** (wrapped in math mode): `Randomly permute the values of $x_j$\n    across all samples`\n  - **Bad** (unwrapped function notation): `Compute f(x) and g(x)`\n  - **Good** (wrapped in math mode): `Compute $f(x)$ and $g(x)$`\n\n## Unicode to LaTeX\n- Replace unicode math characters with LaTeX:\n  - `Ω` -> `$\\Omega$`\n  - `→` -> `$\\to$`\n  - `≤` -> `$\\leq$`\n  - `×` -> `$\\times$`\n\n## Subscripts and Superscripts\n- Use math mode for all subscripts\u002Fsuperscripts:\n  - **Bad** (unicode subscript or bare caret, invalid Typst math): P₀ or P^n\n  - **Good** (math mode syntax): `$P_0$` or `$P^n$`\n\n## Math Operators\n- Use `op()` for named operators in Typst:\n  - **Bad** (named operator unwrapped, Typst renders it as variables): `$g^* =\n    arg min_(g in G)$`\n  - **Good** (wrapped with `op()`): `$g^* = op(\"arg min\")_(g in G)$`\n  - Also: `$max_i x_i$` -> `$op(\"max\")_i x_i$`\n\n## Plain Numbers and Currency\n- Do NOT wrap pure numbers in math mode:\n  - **Bad**:\n    ```text\n    The house costs $50k because it has 4 bedrooms ($+\\$30$k)\n    ```\n  - **Good**:\n    ```text\n    The house costs \\$50k because it has 4 bedrooms (+\\$30k)\n    ```\n\n## Block Formulas\n- Use Typst code blocks for complex multi-line formulas:\n  ```{=typst}\n  $ Pr(X_1 , ... , X_n) = product_(i = 1)^n Pr(X_i | \"Parents\"(X_i)) $\n  ```\n\n# Verification\n- [ ] Make sure that the converted slides render correctly, e.g.,\n  ```bash\n  > gen_slides.py -i \u003CFILE> --notes_to_pdf_args=\"--skip_action open_pdf\"\n  ```\n",{"model":30,"description":7},"master","804ae3e928c04740cec553be0eb28c8d06ff420e",".claude\u002Fskills\u002Fslides.convert_to_typst",1,"https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers","https:\u002F\u002Fcausify-ai.github.io\u002Fhelpers\u002F","https:\u002F\u002Fgithub.com\u002Fcausify-ai","2026-11-02 21:54:29",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add causify-ai\u002Fhelpers --skill slides.convert_to_typst",{"tool":52,"command":53},"bunx","bunx skills add causify-ai\u002Fhelpers --skill slides.convert_to_typst",{"tool":55,"command":56},"pnpm","pnpm dlx skills add causify-ai\u002Fhelpers --skill slides.convert_to_typst","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fslides.convert_to_typst\u002FSKILL.md",true,[],[61,80,97,108,117,131],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":70,"publishedAt":33},"01M6F209RASRBEK7GBNG5M00K0","tutorial_in_60_mins.propagate_docker_changes","Sync tutorial and class-project Docker files to match project_template","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.propagate_docker_changes\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",[71,72,73,74,75,76,30,77,78,79],"docker","tutorial","tutorial in 60 mins propagate docker changes","propagate","template","sync","files","project","match",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":89,"publishedAt":33},"01M6F207XZ5YDAJ0KNDRE6EN0R","tutorial_in_60_mins.merge_markdown","Merge the content of a markdown file into a Jupyter notebook","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.merge_markdown\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",[28,90,72,91,92,93,30,94,95,96],"merge","tutorial in 60 mins merge markdown","notebook","jupyter","file","jupyter notebook","content",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":33},"01M6F2059X95Q1A13HD67E9JRF","tutorial_in_60_mins.format","Format a directory to follow the \"Learn X in 60 Minutes\" tutorial conventions","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.format\u002FSKILL.md",[],[104,72,29,105,106,30,107],"tutorial in 60 mins format","directory","learn","conventions",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":33},"01M6F202MDHMNYD5S1YHG2PKZD","tutorial_in_60_mins.create","Create a tutorial directory for the Learn X in 60 Minutes conventions","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftutorial_in_60_mins.create\u002FSKILL.md",[],[115,72,116,106,105,107],"tutorial in 60 mins create","create",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":33},"01M6F2004BW13GQ59N3RGSAYVN","todo.reorg_in_progress","Reorganize ai_task_queue.md so in-progress tasks, not-started tasks, and mislabeled topic headers sit under the right H1 stage","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftodo.reorg_in_progress\u002FSKILL.md",[],[124,125,126,127,128,129,130],"progress","todo","todo reorg in progress","tasks","queue","task","stage",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":33},"01M6F1ZXN0G6HBD08GT8HE5FYA","todo.reorg_headers","Reorganize ai_task_queue.md .md so every H2 topic matches ALL TOPICS and every H3 task sits under the right topic, keeping its H1 stage","https:\u002F\u002Fgithub.com\u002Fcausify-ai\u002Fhelpers\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Ftodo.reorg_headers\u002FSKILL.md",[],[138,125,128,129,130],"todo reorg headers"]