[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EFEN8PRVAT5G0DPXASTW45":3,"skill-same:01M6EFEN8PRVAT5G0DPXASTW45":115},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":27,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M6EFEN8PRVAT5G0DPXASTW45","malloy",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fmalloy\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"# Malloy — Semantic Data Language\n\n\n## Overview\n\n\nMalloy, the experimental data language from Google that replaces SQL for analytics with a composable, reusable, and more readable syntax. Helps developers write Malloy models, build nested queries, and explore data with Malloy's VS Code extension and notebook interface.\n\n\n## Instructions\n\n### Source Definition\n\nDefine reusable data models:\n\n```malloy\n\u002F\u002F models\u002Fecommerce.malloy — Ecommerce data model\n\nsource: orders is duckdb.table('orders.parquet') extend {\n  \u002F\u002F Dimensions (attributes to group by)\n  dimension:\n    order_date is created_at::date\n    order_month is created_at.month\n    order_year is created_at.year\n    is_high_value is amount > 100\n    order_size is pick\n      'small' when items_count \u003C 3\n      'medium' when items_count \u003C 10\n      'large'\n\n  \u002F\u002F Measures (aggregations)\n  measure:\n    order_count is count()\n    total_revenue is sum(amount)\n    avg_order_value is avg(amount)\n    unique_customers is count(distinct customer_id)\n    revenue_per_customer is total_revenue \u002F unique_customers\n\n  \u002F\u002F Reusable named queries (views)\n  view: revenue_by_month is {\n    group_by: order_month\n    aggregate:\n      total_revenue\n      order_count\n      avg_order_value\n    order_by: order_month\n  }\n\n  view: top_customers is {\n    group_by: customer_id\n    aggregate:\n      total_revenue\n      order_count\n    order_by: total_revenue desc\n    limit: 20\n  }\n\n  view: daily_dashboard is {\n    group_by: order_date\n    aggregate:\n      total_revenue\n      order_count\n      unique_customers\n      avg_order_value\n    order_by: order_date desc\n    limit: 30\n  }\n}\n```\n\n### Queries\n\nWrite composable, readable analytics queries:\n\n```malloy\n\u002F\u002F queries\u002Fanalysis.malloy — Analytics queries using the model\n\nimport \"models\u002Fecommerce.malloy\"\n\n\u002F\u002F Simple aggregation\nrun: orders -> {\n  aggregate:\n    total_revenue\n    order_count\n    avg_order_value\n}\n\n\u002F\u002F Group by with filters\nrun: orders -> {\n  where: order_year = 2026\n  group_by: order_month\n  aggregate:\n    total_revenue\n    order_count\n  order_by: order_month\n}\n\n\u002F\u002F Nested queries — multiple levels of aggregation in one query\nrun: orders -> {\n  group_by: order_size\n  aggregate:\n    total_revenue\n    order_count\n    avg_order_value\n  \u002F\u002F Nested: for each order_size, show monthly breakdown\n  nest: monthly_trend is {\n    group_by: order_month\n    aggregate: total_revenue\n    order_by: order_month\n  }\n  \u002F\u002F Nested: for each order_size, show top customers\n  nest: top_customers is {\n    group_by: customer_id\n    aggregate: total_revenue, order_count\n    order_by: total_revenue desc\n    limit: 5\n  }\n}\n\n\u002F\u002F Pipeline: chain transformations\nrun: orders\n  -> { where: status = 'completed' }\n  -> revenue_by_month                   \u002F\u002F Reuse named view\n  -> { where: total_revenue > 10000 }   \u002F\u002F Filter the result\n```\n\n### Joins and Relationships\n\n```malloy\n\u002F\u002F models\u002Ffull_model.malloy — Multi-table model with joins\n\nsource: customers is duckdb.table('customers.parquet') extend {\n  dimension: signup_month is created_at.month\n  measure:\n    customer_count is count()\n    avg_lifetime_value is avg(lifetime_value)\n}\n\nsource: products is duckdb.table('products.parquet') extend {\n  dimension: price_tier is pick\n    'budget' when price \u003C 25\n    'mid-range' when price \u003C 100\n    'premium'\n  measure: product_count is count()\n}\n\nsource: order_items is duckdb.table('order_items.parquet') extend {\n  \u002F\u002F Join to related tables\n  join_one: orders on order_id = orders.id\n  join_one: products on product_id = products.id\n  join_one: customers is orders.customer_id = customers.id\n\n  measure:\n    total_quantity is sum(quantity)\n    item_revenue is sum(quantity * unit_price)\n\n  \u002F\u002F Query across joined tables\n  view: revenue_by_category is {\n    group_by: products.category\n    aggregate:\n      item_revenue\n      total_quantity\n    order_by: item_revenue desc\n  }\n\n  view: customer_product_matrix is {\n    group_by: customers.signup_month\n    aggregate: item_revenue\n    nest: by_category is {\n      group_by: products.category\n      aggregate: item_revenue\n    }\n  }\n}\n```\n\n### Notebooks and Visualization\n\n```malloy\n\u002F\u002F In Malloy notebook (.malloynb) or VS Code extension\n\n\u002F\u002F Malloy auto-renders results as charts when appropriate\n\n\u002F\u002F Bar chart — group by with single measure\nrun: orders -> {\n  group_by: status\n  aggregate: order_count\n}\n\u002F\u002F # bar_chart\n\n\u002F\u002F Line chart — time series\nrun: orders -> revenue_by_month\n\u002F\u002F # line_chart\n\n\u002F\u002F Dashboard — multiple visualizations from one query\nrun: orders -> {\n  group_by: order_size\n  aggregate: total_revenue, order_count\n  nest: trend is {\n    group_by: order_month\n    aggregate: total_revenue\n  }\n}\n\u002F\u002F # dashboard\n```\n\n### DuckDB and BigQuery Connections\n\n```malloy\n\u002F\u002F Connection configuration\n\u002F\u002F DuckDB (local files)\nconnection: duckdb is duckdb [\n  parquet_path: \".\u002Fdata\u002F\"\n]\n\n\u002F\u002F BigQuery\nconnection: bq is bigquery [\n  project_id: \"my-gcp-project\"\n  dataset: \"analytics\"\n]\n\n\u002F\u002F Use BigQuery tables in models\nsource: events is bq.table('analytics.events') extend {\n  measure: event_count is count()\n}\n```\n\n## Installation\n\n```bash\n# VS Code Extension (recommended)\n# Install \"Malloy\" from VS Code Marketplace\n\n# CLI\nnpm install -g @malloydata\u002Fmalloy-cli\n\n# Python package\npip install malloy\n\n# Run a Malloy file\nmalloy run analysis.malloy\n```\n\n\n## Examples\n\n\n### Example 1: Integrating Malloy into an existing application\n\n**User request:**\n\n```\nAdd Malloy to my Next.js app for the AI chat feature. I want streaming responses.\n```\n\nThe agent installs the SDK, creates an API route that initializes the Malloy client, configures streaming, selects an appropriate model, and wires up the frontend to consume the stream. It handles error cases and sets up proper environment variable management for the API key.\n\n### Example 2: Optimizing queries performance\n\n**User request:**\n\n```\nMy Malloy calls are slow and expensive. Help me optimize the setup.\n```\n\nThe agent reviews the current implementation, identifies issues (wrong model selection, missing caching, inefficient prompting, no batching), and applies optimizations specific to Malloy's capabilities — adjusting model parameters, adding response caching, and implementing retry logic with exponential backoff.\n\n\n## Guidelines\n\n1. **Models separate from queries** — Define sources and views in model files; write queries in separate files or notebooks\n2. **Name your views** — Reusable views (named queries) are Malloy's superpower; define common analyses once, use everywhere\n3. **Nested queries for rich analysis** — Instead of multiple separate queries, nest related analyses into a single query\n4. **Use pick for categorization** — The `pick` expression replaces SQL's verbose CASE WHEN for creating dimensions\n5. **Pipeline for progressive filtering** — Chain queries with `->` to progressively refine results; each step is readable\n6. **DuckDB for local analysis** — Use DuckDB connection with Parquet files for fast local analytics; switch to BigQuery for production\n7. **Malloy notebooks for exploration** — Use `.malloynb` files for iterative data exploration with inline visualization\n8. **Version your models** — Malloy models are code; store in Git alongside your data pipelines\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FTerminalSkills\u002Fskills\u002Fmalloy",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill malloy",{"tool":37,"command":38},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill malloy",{"tool":40,"command":41},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill malloy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Fmalloy\u002FSKILL.md",true,[45,51,55,61,67,71,75,79,83,87,91,95,99,103,107,111],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"BENCHMARK.md","REFERENCE","参考文档",6093,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002FBENCHMARK.md",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"evals\u002Fevals.json",5326,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fevals\u002Fevals.json",{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"examples\u002F01_add\u002Fcutile_julia.jl","OTHER","其他",3710,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fexamples\u002F01_add\u002Fcutile_julia.jl",{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"examples\u002F01_add\u002Fcutile_python.py","SCRIPT","脚本",3818,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fexamples\u002F01_add\u002Fcutile_python.py",{"path":68,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":69,"sourceHtmlUrl":70},"examples\u002F02_matmul\u002Fcutile_julia.jl",4161,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fexamples\u002F02_matmul\u002Fcutile_julia.jl",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"examples\u002F02_matmul\u002Fcutile_python.py",2429,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fexamples\u002F02_matmul\u002Fcutile_python.py",{"path":76,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":77,"sourceHtmlUrl":78},"examples\u002F03_softmax\u002Fcutile_julia.jl",9547,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fexamples\u002F03_softmax\u002Fcutile_julia.jl",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"examples\u002F03_softmax\u002Fcutile_python.py",8741,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fexamples\u002F03_softmax\u002Fcutile_python.py",{"path":84,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fapi-mapping.md",16795,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Freferences\u002Fapi-mapping.md",{"path":88,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fcritical-rules.md",5796,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Freferences\u002Fcritical-rules.md",{"path":92,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fdebugging.md",2903,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Freferences\u002Fdebugging.md",{"path":96,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Ftesting.md",4312,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Freferences\u002Ftesting.md",{"path":100,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Fvalidate_cutile_jl.py",8702,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fscripts\u002Fvalidate_cutile_jl.py",{"path":104,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":105,"sourceHtmlUrl":106},"skill-card.md",3986,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fskill-card.md",{"path":108,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":109,"sourceHtmlUrl":110},"skill.oms.sig",7533,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Fskill.oms.sig",{"path":112,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":113,"sourceHtmlUrl":114},"translations\u002Fworkflow.md",16956,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftilegym-converting-cutile-to-julia\u002Ftranslations\u002Fworkflow.md",[116,130,140,149,155,162],{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":126,"publishedAt":18},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[127,128,129],"model","model hierarchy","model hierarchy skill",{"skillNo":131,"name":132,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":18},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[135],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},[137,138,139],"MCP","zoom","zoom mcp",{"skillNo":141,"name":142,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":18},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[146,147,148,138],"sdk","zoom apps sdk","apps",{"skillNo":150,"name":151,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":18},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[151],{"skillNo":156,"name":157,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":161,"publishedAt":18},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[160],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},[157],{"skillNo":163,"name":164,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":18},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[164]]