[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699FY61KXKTT4MBTZWW3R22":3,"skill-same:01M699FY61KXKTT4MBTZWW3R22":61},{"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":18,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M699FY61KXKTT4MBTZWW3R22","direct-lake-operations",null,"Guide for working with Direct Lake semantic models. Use this when implementing Direct Lake-related features or troubleshooting.","microsoft\u002Fsemantic-link-labs","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699FKMT63C17BFNH8WHZN2K",600,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdirect-lake-operations\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"direct lake operations","direct","operations","semantic models","troubleshooting","guide","use","models","semantic","with","implementing","for","features","when","2026-11-10 10:12:30",false,"---\nname: direct-lake-operations\ndescription: Guide for working with Direct Lake semantic models. Use this when implementing Direct Lake-related features or troubleshooting.\n---\n\n# Direct Lake Operations\n\nThis skill covers working with Direct Lake semantic models in Semantic Link Labs.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n- Migrate models to Direct Lake\n- Check and fix Direct Lake fallback issues\n- Sync schema between lakehouse and model\n- Work with Direct Lake guardrails\n- Warm Direct Lake cache\n\n---\n\n## Overview\n\nDirect Lake is a storage mode for Power BI semantic models that reads data directly from Delta tables in OneLake, providing fast query performance without data import.\n\n### Key Files\n\n| File | Purpose |\n|------|---------|\n| `src\u002Fsempy_labs\u002Fdirectlake\u002F` | Direct Lake submodule |\n| `_dl_helper.py` | Core Direct Lake utilities |\n| `_guardrails.py` | Guardrail checking |\n| `_directlake_schema_sync.py` | Schema synchronization |\n| `_warm_cache.py` | Cache warming utilities |\n\n---\n\n## Direct Lake Functions\n\n### Core Functions\n\n| Function | Purpose |\n|----------|---------|\n| `check_fallback_reason` | Check why model falls back to DirectQuery |\n| `get_direct_lake_lakehouse` | Get lakehouse connected to model |\n| `get_direct_lake_source` | Get SQL endpoint and lakehouse info |\n| `generate_direct_lake_semantic_model` | Create new Direct Lake model |\n\n### Schema Management\n\n| Function | Purpose |\n|----------|---------|\n| `direct_lake_schema_compare` | Compare model schema with lakehouse |\n| `direct_lake_schema_sync` | Sync model schema from lakehouse |\n\n### Guardrails\n\n| Function | Purpose |\n|----------|---------|\n| `get_direct_lake_guardrails` | Get guardrail limits for model |\n| `get_sku_size` | Get SKU capacity info |\n| `get_directlake_guardrails_for_sku` | Get guardrails for specific SKU |\n\n### Cache Management\n\n| Function | Purpose |\n|----------|---------|\n| `warm_direct_lake_cache_isresident` | Warm cache using IsResident |\n| `warm_direct_lake_cache_perspective` | Warm cache using perspective |\n\n### Connection Updates\n\n| Function | Purpose |\n|----------|---------|\n| `update_direct_lake_model_connection` | Update lakehouse connection |\n| `update_direct_lake_model_lakehouse_connection` | Legacy connection update |\n\n---\n\n## Checking Fallback Reasons\n\nDirect Lake models can fall back to DirectQuery mode. Use `check_fallback_reason` to diagnose:\n\n```python\nfrom sempy_labs.directlake import check_fallback_reason\n\n# Check specific model\nresult = check_fallback_reason(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n\n# Returns DataFrame with fallback reasons per table\nprint(result)\n```\n\n### Common Fallback Reasons\n\n| Reason | Cause | Solution |\n|--------|-------|----------|\n| `ColumnNotInPartition` | Column missing from Delta table | Add column to lakehouse table |\n| `ParquetTypeMismatch` | Data type mismatch | Update lakehouse table schema |\n| `UnsupportedFilter` | DAX filter not supported | Modify DAX query |\n| `Guardrail` | Exceeded capacity limits | Upgrade capacity or reduce data |\n\n---\n\n## Schema Synchronization\n\n### Compare Schemas\n\n```python\nfrom sempy_labs.directlake import direct_lake_schema_compare\n\n# Compare model schema with lakehouse tables\ncomparison = direct_lake_schema_compare(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n\n# Shows differences between model and lakehouse\nprint(comparison)\n```\n\n### Sync Schema\n\n```python\nfrom sempy_labs.directlake import direct_lake_schema_sync\n\n# Sync model schema from lakehouse\ndirect_lake_schema_sync(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\",\n    add_columns=True,      # Add new columns\n    remove_columns=False,  # Keep columns not in lakehouse\n)\n```\n\n---\n\n## Guardrails\n\nDirect Lake has limits based on capacity SKU:\n\n```python\nfrom sempy_labs.directlake import get_direct_lake_guardrails\n\n# Get guardrails for a model\nguardrails = get_direct_lake_guardrails(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n\n# Shows limits vs current values\nprint(guardrails)\n```\n\n### Guardrail Limits\n\n| Guardrail | Description |\n|-----------|-------------|\n| Max Rows Per Table | Maximum rows per table |\n| Max Size Per Table | Maximum table size in GB |\n| Max Columns Per Table | Maximum columns per table |\n| Max Model Size | Maximum total model size |\n\n---\n\n## Generating Direct Lake Models\n\nCreate a new Direct Lake model from lakehouse tables:\n\n```python\nfrom sempy_labs.directlake import generate_direct_lake_semantic_model\n\n# Generate model from lakehouse\ngenerate_direct_lake_semantic_model(\n    dataset=\"New Direct Lake Model\",\n    lakehouse=\"My Lakehouse\",\n    workspace=\"My Workspace\",\n    lakehouse_workspace=\"Lakehouse Workspace\",  # Optional\n)\n```\n\n---\n\n## Updating Connections\n\nChange the lakehouse a Direct Lake model points to:\n\n```python\nfrom sempy_labs.directlake import update_direct_lake_model_connection\n\n# Update to different lakehouse\nupdate_direct_lake_model_connection(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\",\n    target_lakehouse=\"New Lakehouse\",\n    target_workspace=\"Target Workspace\",\n)\n```\n\n---\n\n## Cache Warming\n\nWarm the Direct Lake cache after model refresh:\n\n### Using IsResident\n\n```python\nfrom sempy_labs.directlake import warm_direct_lake_cache_isresident\n\n# Warm columns that were previously in memory\nwarm_direct_lake_cache_isresident(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n```\n\n### Using Perspective\n\n```python\nfrom sempy_labs.directlake import warm_direct_lake_cache_perspective\n\n# Warm columns defined in a perspective\nwarm_direct_lake_cache_perspective(\n    dataset=\"My Direct Lake Model\",\n    perspective=\"Cache Warming\",\n    workspace=\"My Workspace\"\n)\n```\n\n---\n\n## Migration to Direct Lake\n\nThe library provides migration tools in `src\u002Fsempy_labs\u002Fmigration\u002F`:\n\n### Migration Workflow\n\n1. **Create Direct Lake model** with the same tables\u002Fcolumns (`migrate_tables_columns_to_semantic_model`)\n2. **Migrate calculated tables** as calculated tables (`migrate_calc_tables_to_semantic_model`) — supported in Direct Lake on OneLake (preview), including those which reference Direct Lake tables. They are no longer stored as lakehouse tables (`migrate_calc_tables_to_lakehouse` is deprecated and a no-op).\n3. **Migrate measures and other objects** (`migrate_model_objects_to_semantic_model`, `migrate_field_parameters`)\n4. **Refresh, validate and test** (calculated tables use Import storage mode and require a refresh)\n\n### Example Migration\n\n```python\nfrom sempy_labs.migration import (\n    migrate_tables_columns_to_semantic_model,\n    migrate_calc_tables_to_semantic_model,\n    migrate_model_objects_to_semantic_model,\n)\n\n# Step 1: Migrate tables\u002Fcolumns\nmigrate_tables_columns_to_semantic_model(\n    dataset=\"Source Import Model\",\n    new_dataset=\"Target Direct Lake Model\",\n    lakehouse=\"Target Lakehouse\",\n)\n\n# Step 2: Migrate calculated tables (as calculated tables)\nmigrate_calc_tables_to_semantic_model(\n    dataset=\"Source Import Model\",\n    new_dataset=\"Target Direct Lake Model\",\n)\n\n# Step 3: Migrate other objects (measures, etc.)\nmigrate_model_objects_to_semantic_model(\n    dataset=\"Source Import Model\",\n    new_dataset=\"Target Direct Lake Model\",\n)\n```\n\n---\n\n## Best Practices\n\n### Do's\n\n- ✅ Always check guardrails before deploying\n- ✅ Use schema sync after lakehouse changes\n- ✅ Warm cache after scheduled refreshes\n- ✅ Monitor fallback reasons regularly\n\n### Don'ts\n\n- ❌ Don't ignore fallback warnings\n- ❌ Don't exceed guardrail limits\n- ❌ Don't modify lakehouse schema without syncing model\n- ❌ Don't use unsupported DAX patterns\n\n---\n\n## Troubleshooting\n\n### Model Falls Back to DirectQuery\n\n1. Run `check_fallback_reason()` to identify cause\n2. Check column mappings with `direct_lake_schema_compare()`\n3. Verify data types match between model and lakehouse\n4. Check guardrails with `get_direct_lake_guardrails()`\n\n### Schema Mismatch\n\n1. Run `direct_lake_schema_compare()` to see differences\n2. Run `direct_lake_schema_sync()` to fix mismatches\n3. Verify partition entity mappings\n\n### Performance Issues\n\n1. Check cache state with `warm_direct_lake_cache_isresident()`\n2. Verify partitions are properly configured\n3. Review query patterns for unsupported filters\n\n---\n\n## Related Resources\n\n| Resource | URL |\n|----------|-----|\n| Direct Lake Overview | [Microsoft Docs](https:\u002F\u002Flearn.microsoft.com\u002Fpower-bi\u002Fenterprise\u002Fdirectlake-overview) |\n| Guardrails | [Microsoft Docs](https:\u002F\u002Flearn.microsoft.com\u002Fpower-bi\u002Fenterprise\u002Fdirectlake-guardrails) |\n| Migration Notebook | [Notebook](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002Fnotebooks\u002FMigration%20to%20Direct%20Lake.ipynb) |\n| API Docs | [ReadTheDocs](https:\u002F\u002Fsemantic-link-labs.readthedocs.io\u002Fen\u002Fstable\u002Fsempy_labs.directlake.html) |\n","# Direct Lake Operations\n\nThis skill covers working with Direct Lake semantic models in Semantic Link Labs.\n\n## When to Use This Skill\n\nUse this skill when you need to:\n- Migrate models to Direct Lake\n- Check and fix Direct Lake fallback issues\n- Sync schema between lakehouse and model\n- Work with Direct Lake guardrails\n- Warm Direct Lake cache\n\n---\n\n## Overview\n\nDirect Lake is a storage mode for Power BI semantic models that reads data directly from Delta tables in OneLake, providing fast query performance without data import.\n\n### Key Files\n\n| File | Purpose |\n|------|---------|\n| `src\u002Fsempy_labs\u002Fdirectlake\u002F` | Direct Lake submodule |\n| `_dl_helper.py` | Core Direct Lake utilities |\n| `_guardrails.py` | Guardrail checking |\n| `_directlake_schema_sync.py` | Schema synchronization |\n| `_warm_cache.py` | Cache warming utilities |\n\n---\n\n## Direct Lake Functions\n\n### Core Functions\n\n| Function | Purpose |\n|----------|---------|\n| `check_fallback_reason` | Check why model falls back to DirectQuery |\n| `get_direct_lake_lakehouse` | Get lakehouse connected to model |\n| `get_direct_lake_source` | Get SQL endpoint and lakehouse info |\n| `generate_direct_lake_semantic_model` | Create new Direct Lake model |\n\n### Schema Management\n\n| Function | Purpose |\n|----------|---------|\n| `direct_lake_schema_compare` | Compare model schema with lakehouse |\n| `direct_lake_schema_sync` | Sync model schema from lakehouse |\n\n### Guardrails\n\n| Function | Purpose |\n|----------|---------|\n| `get_direct_lake_guardrails` | Get guardrail limits for model |\n| `get_sku_size` | Get SKU capacity info |\n| `get_directlake_guardrails_for_sku` | Get guardrails for specific SKU |\n\n### Cache Management\n\n| Function | Purpose |\n|----------|---------|\n| `warm_direct_lake_cache_isresident` | Warm cache using IsResident |\n| `warm_direct_lake_cache_perspective` | Warm cache using perspective |\n\n### Connection Updates\n\n| Function | Purpose |\n|----------|---------|\n| `update_direct_lake_model_connection` | Update lakehouse connection |\n| `update_direct_lake_model_lakehouse_connection` | Legacy connection update |\n\n---\n\n## Checking Fallback Reasons\n\nDirect Lake models can fall back to DirectQuery mode. Use `check_fallback_reason` to diagnose:\n\n```python\nfrom sempy_labs.directlake import check_fallback_reason\n\n# Check specific model\nresult = check_fallback_reason(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n\n# Returns DataFrame with fallback reasons per table\nprint(result)\n```\n\n### Common Fallback Reasons\n\n| Reason | Cause | Solution |\n|--------|-------|----------|\n| `ColumnNotInPartition` | Column missing from Delta table | Add column to lakehouse table |\n| `ParquetTypeMismatch` | Data type mismatch | Update lakehouse table schema |\n| `UnsupportedFilter` | DAX filter not supported | Modify DAX query |\n| `Guardrail` | Exceeded capacity limits | Upgrade capacity or reduce data |\n\n---\n\n## Schema Synchronization\n\n### Compare Schemas\n\n```python\nfrom sempy_labs.directlake import direct_lake_schema_compare\n\n# Compare model schema with lakehouse tables\ncomparison = direct_lake_schema_compare(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n\n# Shows differences between model and lakehouse\nprint(comparison)\n```\n\n### Sync Schema\n\n```python\nfrom sempy_labs.directlake import direct_lake_schema_sync\n\n# Sync model schema from lakehouse\ndirect_lake_schema_sync(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\",\n    add_columns=True,      # Add new columns\n    remove_columns=False,  # Keep columns not in lakehouse\n)\n```\n\n---\n\n## Guardrails\n\nDirect Lake has limits based on capacity SKU:\n\n```python\nfrom sempy_labs.directlake import get_direct_lake_guardrails\n\n# Get guardrails for a model\nguardrails = get_direct_lake_guardrails(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n\n# Shows limits vs current values\nprint(guardrails)\n```\n\n### Guardrail Limits\n\n| Guardrail | Description |\n|-----------|-------------|\n| Max Rows Per Table | Maximum rows per table |\n| Max Size Per Table | Maximum table size in GB |\n| Max Columns Per Table | Maximum columns per table |\n| Max Model Size | Maximum total model size |\n\n---\n\n## Generating Direct Lake Models\n\nCreate a new Direct Lake model from lakehouse tables:\n\n```python\nfrom sempy_labs.directlake import generate_direct_lake_semantic_model\n\n# Generate model from lakehouse\ngenerate_direct_lake_semantic_model(\n    dataset=\"New Direct Lake Model\",\n    lakehouse=\"My Lakehouse\",\n    workspace=\"My Workspace\",\n    lakehouse_workspace=\"Lakehouse Workspace\",  # Optional\n)\n```\n\n---\n\n## Updating Connections\n\nChange the lakehouse a Direct Lake model points to:\n\n```python\nfrom sempy_labs.directlake import update_direct_lake_model_connection\n\n# Update to different lakehouse\nupdate_direct_lake_model_connection(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\",\n    target_lakehouse=\"New Lakehouse\",\n    target_workspace=\"Target Workspace\",\n)\n```\n\n---\n\n## Cache Warming\n\nWarm the Direct Lake cache after model refresh:\n\n### Using IsResident\n\n```python\nfrom sempy_labs.directlake import warm_direct_lake_cache_isresident\n\n# Warm columns that were previously in memory\nwarm_direct_lake_cache_isresident(\n    dataset=\"My Direct Lake Model\",\n    workspace=\"My Workspace\"\n)\n```\n\n### Using Perspective\n\n```python\nfrom sempy_labs.directlake import warm_direct_lake_cache_perspective\n\n# Warm columns defined in a perspective\nwarm_direct_lake_cache_perspective(\n    dataset=\"My Direct Lake Model\",\n    perspective=\"Cache Warming\",\n    workspace=\"My Workspace\"\n)\n```\n\n---\n\n## Migration to Direct Lake\n\nThe library provides migration tools in `src\u002Fsempy_labs\u002Fmigration\u002F`:\n\n### Migration Workflow\n\n1. **Create Direct Lake model** with the same tables\u002Fcolumns (`migrate_tables_columns_to_semantic_model`)\n2. **Migrate calculated tables** as calculated tables (`migrate_calc_tables_to_semantic_model`) — supported in Direct Lake on OneLake (preview), including those which reference Direct Lake tables. They are no longer stored as lakehouse tables (`migrate_calc_tables_to_lakehouse` is deprecated and a no-op).\n3. **Migrate measures and other objects** (`migrate_model_objects_to_semantic_model`, `migrate_field_parameters`)\n4. **Refresh, validate and test** (calculated tables use Import storage mode and require a refresh)\n\n### Example Migration\n\n```python\nfrom sempy_labs.migration import (\n    migrate_tables_columns_to_semantic_model,\n    migrate_calc_tables_to_semantic_model,\n    migrate_model_objects_to_semantic_model,\n)\n\n# Step 1: Migrate tables\u002Fcolumns\nmigrate_tables_columns_to_semantic_model(\n    dataset=\"Source Import Model\",\n    new_dataset=\"Target Direct Lake Model\",\n    lakehouse=\"Target Lakehouse\",\n)\n\n# Step 2: Migrate calculated tables (as calculated tables)\nmigrate_calc_tables_to_semantic_model(\n    dataset=\"Source Import Model\",\n    new_dataset=\"Target Direct Lake Model\",\n)\n\n# Step 3: Migrate other objects (measures, etc.)\nmigrate_model_objects_to_semantic_model(\n    dataset=\"Source Import Model\",\n    new_dataset=\"Target Direct Lake Model\",\n)\n```\n\n---\n\n## Best Practices\n\n### Do's\n\n- ✅ Always check guardrails before deploying\n- ✅ Use schema sync after lakehouse changes\n- ✅ Warm cache after scheduled refreshes\n- ✅ Monitor fallback reasons regularly\n\n### Don'ts\n\n- ❌ Don't ignore fallback warnings\n- ❌ Don't exceed guardrail limits\n- ❌ Don't modify lakehouse schema without syncing model\n- ❌ Don't use unsupported DAX patterns\n\n---\n\n## Troubleshooting\n\n### Model Falls Back to DirectQuery\n\n1. Run `check_fallback_reason()` to identify cause\n2. Check column mappings with `direct_lake_schema_compare()`\n3. Verify data types match between model and lakehouse\n4. Check guardrails with `get_direct_lake_guardrails()`\n\n### Schema Mismatch\n\n1. Run `direct_lake_schema_compare()` to see differences\n2. Run `direct_lake_schema_sync()` to fix mismatches\n3. Verify partition entity mappings\n\n### Performance Issues\n\n1. Check cache state with `warm_direct_lake_cache_isresident()`\n2. Verify partitions are properly configured\n3. Review query patterns for unsupported filters\n\n---\n\n## Related Resources\n\n| Resource | URL |\n|----------|-----|\n| Direct Lake Overview | [Microsoft Docs](https:\u002F\u002Flearn.microsoft.com\u002Fpower-bi\u002Fenterprise\u002Fdirectlake-overview) |\n| Guardrails | [Microsoft Docs](https:\u002F\u002Flearn.microsoft.com\u002Fpower-bi\u002Fenterprise\u002Fdirectlake-guardrails) |\n| Migration Notebook | [Notebook](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002Fnotebooks\u002FMigration%20to%20Direct%20Lake.ipynb) |\n| API Docs | [ReadTheDocs](https:\u002F\u002Fsemantic-link-labs.readthedocs.io\u002Fen\u002Fstable\u002Fsempy_labs.directlake.html) |\n",{"name":5,"description":7},"main","2ddf46109c1209ceffa88149f4631e7b2275f9a1",".claude\u002Fskills\u002Fdirect-lake-operations",204,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-13 04:54:42",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add microsoft\u002Fsemantic-link-labs --skill direct-lake-operations",{"tool":53,"command":54},"bunx","bunx skills add microsoft\u002Fsemantic-link-labs --skill direct-lake-operations",{"tool":56,"command":57},"pnpm","pnpm dlx skills add microsoft\u002Fsemantic-link-labs --skill direct-lake-operations","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdirect-lake-operations\u002FSKILL.md",true,[],[62,91,123,135,152,166],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":81,"publishedAt":33},"01M699GKE0WWT6YVHBS06KM8AH","write-tests","Guide for writing unit tests. Use this when creating tests to verify Python logic.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwrite-tests\u002FSKILL.md",[68,73,76],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":74,"categoryName":75,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[82,83,84,30,85,32,86,87,88,89,25,24,90],"write tests","write","tests","unit","logic","writing","python","unit tests","verify",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":106,"publishedAt":33},"01M699GGVJHWCJNW68P08VWCMA","ui-styling","Guide for the visual style, structure, and shared building blocks used by Semantic Link Labs interactive UI tools (HTML widgets and anywidget-based widgets). Use this when adding a new interactive UI, modifying an existing one, or adding shared visual components.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fui-styling\u002FSKILL.md",[97,100,103],{"categoryNo":98,"categoryName":99,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":101,"categoryName":102,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":104,"categoryName":105,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000032","设计师",[107,108,109,25,110,111,112,24,113,114,115,116,117,118,119,120,121,30,122,32],"ui styling","ui","styling","visual","structure","html","interactive","Building Blocks","Tools","components","shared","widgets","style","visual style","blocks","Existing",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":33},"01M699GEZ3YRK8PCPVZF4NEEWF","tom-operations","Guide for working with the TOM (Tabular Object Model) wrapper. Use this when modifying semantic models programmatically.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Ftom-operations\u002FSKILL.md",[],[21,130,24,131,30,132,28,27,26,133,25,32,134,22],"tom operations","tabular","object","Wrapper","model",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":147,"publishedAt":33},"01M699GCWWBZM2XFNW5PTGRFJP","sql_to_dax","Guide for translating SQL aggregation expressions into DAX measures.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsql_to_dax\u002FSKILL.md",[141,144],{"categoryNo":142,"categoryName":143,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":145,"categoryName":146,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000033","数据分析师",[148,149,150,30,24,151],"sql","sql to dax","dax","aggregation",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":33},"01M699GAY10VVK66E4QGT94A93","run-tests","Guide for running pytest tests locally. Use this when running tests to verify code changes.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frun-tests\u002FSKILL.md",[],[84,159,160,30,161,25,24,90,162,163,164,165,32],"run","run tests","pytest","running tests","code","changes","running",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":176,"publishedAt":33},"01M699G8V718EXYE8BR7NX734G","rest-api-patterns","Guide for implementing REST API wrapper functions. Use this when adding new API wrappers or troubleshooting API calls.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fsemantic-link-labs\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frest-api-patterns\u002FSKILL.md",[172,173],{"categoryNo":142,"categoryName":143,"taxonomyType":71,"taxonomyTypeDesc":72},{"categoryNo":174,"categoryName":175,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000030","开发工程师",[177,178,179,180,181,182,30,32,29,183,184,133,25,24,23],"REST","api patterns","rest api","rest api patterns","api","patterns","calls","functions"]