[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSQP4X044W2FZXDMVGWHPM":3,"skill-same:01M6CSQP4X044W2FZXDMVGWHPM":90},{"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":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6CSQP4X044W2FZXDMVGWHPM","my-skill",null,"Use this skill when you need to verify valid enum field values.","bitflight-devops\u002Fskilllint","bitflight-devops","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F83852040?v=4","01M6CSPE9HM6TQTDJPPR9ZGV3T","BitFlight DevOps - Jamie Nelson","01M6CSPEDJ8KR2QNV9RZX8R8RE",7,"MIT","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32],"my skill","my","valid","verify","use","you","values","fork","when","2026-11-10 10:12:30",false,"---\ntype: Playbook\ntitle: Tree Sitter Language Pack Detecting Languages\ndescription: Use when the user wants to know which programming language a file or snippet is. Covers implicit detection in `ts-pack parse`\u002F`process`, confirming support with `ts-pack list`\u002F`info`, and the SDK detection functions for path, extension, and raw content.\nx-ai-rulez:\n  kind: skill\n  id: tree-sitter-language-pack-detecting-languages\n  metadata:\n    name: tree-sitter-language-pack-detecting-languages\n---\n\n# Detecting languages\n\ntree-sitter-language-pack maps a file to one of 372 supported languages.\nDetection works from a file path, a bare extension, or — via the SDK — the\nfile content itself.\n\n## On the CLI: detection is implicit\n\nThere is no standalone `ts-pack detect` command. `parse` and `process`\nauto-detect the language from the file extension and act on it:\n\n```bash\nts-pack parse src\u002Fapp.ts      # detects \"typescript\", parses\nts-pack process app.py        # detects \"python\", extracts\n```\n\nWhen detection fails (no extension, ambiguous, or stdin), pass `--language`:\n\n```bash\ncat snippet | ts-pack parse - --language go\n```\n\nTo check whether a language name is supported and cached without parsing\nanything, use `list` and `info`:\n\n```bash\nts-pack list --filter type      # languages whose name contains \"type\"\nts-pack list --manifest         # every language in the remote manifest\nts-pack info typescript         # is it known? is it downloaded? cache path?\n```\n\n## In the SDK: explicit detection\n\nThe core exposes three detection functions, including content-based\ndetection that the CLI does not surface:\n\n| Function | Detects from |\n| -------- | ------------ |\n| `detect_language_from_path(path)` | Full path (uses the extension). |\n| `detect_language_from_extension(ext)` | A bare extension like `\"rs\"`. |\n| `detect_language_from_content(content)` | Raw source text — no path needed. |\n\nEach returns the language name or null\u002FNone when no grammar matches.\n\n### Python\n\n```python\nfrom tree_sitter_language_pack import (\n    detect_language_from_path,\n    detect_language_from_extension,\n    detect_language_from_content,\n)\n\ndetect_language_from_path(\"src\u002Fapp.py\")      # \"python\"\ndetect_language_from_extension(\"rs\")          # \"rust\"\ndetect_language_from_content(open(\"x\").read())  # from the shebang line, if present\n```\n\n### Node.js \u002F TypeScript\n\n```typescript\nimport { detectLanguageFromPath, detectLanguageFromContent } from \"@xberg-io\u002Ftree-sitter-language-pack\";\n\nconst lang = detectLanguageFromPath(\"src\u002Fapp.ts\") ?? detectLanguageFromContent(source);\n```\n\n## Choosing CLI vs SDK\n\n- Path or extension is enough, one-shot → just run `ts-pack parse`\u002F`process`\n  and let it auto-detect.\n- Only raw content (a pasted snippet, a stream, a file with no extension) →\n  use the SDK's `detect_language_from_content`, then pass the result as\n  `--language` to the CLI if needed.\n\n## When to reach for the other skills\n\nOnce the language is known, hand off to `tree-sitter-language-pack-parsing-source` (syntax tree) or\n`tree-sitter-language-pack-extracting-code-structure` (metadata). To see or prefetch the parser for a\ndetected language, see `tree-sitter-language-pack-managing-parsers`.\n","# Detecting languages\n\ntree-sitter-language-pack maps a file to one of 372 supported languages.\nDetection works from a file path, a bare extension, or — via the SDK — the\nfile content itself.\n\n## On the CLI: detection is implicit\n\nThere is no standalone `ts-pack detect` command. `parse` and `process`\nauto-detect the language from the file extension and act on it:\n\n```bash\nts-pack parse src\u002Fapp.ts      # detects \"typescript\", parses\nts-pack process app.py        # detects \"python\", extracts\n```\n\nWhen detection fails (no extension, ambiguous, or stdin), pass `--language`:\n\n```bash\ncat snippet | ts-pack parse - --language go\n```\n\nTo check whether a language name is supported and cached without parsing\nanything, use `list` and `info`:\n\n```bash\nts-pack list --filter type      # languages whose name contains \"type\"\nts-pack list --manifest         # every language in the remote manifest\nts-pack info typescript         # is it known? is it downloaded? cache path?\n```\n\n## In the SDK: explicit detection\n\nThe core exposes three detection functions, including content-based\ndetection that the CLI does not surface:\n\n| Function | Detects from |\n| -------- | ------------ |\n| `detect_language_from_path(path)` | Full path (uses the extension). |\n| `detect_language_from_extension(ext)` | A bare extension like `\"rs\"`. |\n| `detect_language_from_content(content)` | Raw source text — no path needed. |\n\nEach returns the language name or null\u002FNone when no grammar matches.\n\n### Python\n\n```python\nfrom tree_sitter_language_pack import (\n    detect_language_from_path,\n    detect_language_from_extension,\n    detect_language_from_content,\n)\n\ndetect_language_from_path(\"src\u002Fapp.py\")      # \"python\"\ndetect_language_from_extension(\"rs\")          # \"rust\"\ndetect_language_from_content(open(\"x\").read())  # from the shebang line, if present\n```\n\n### Node.js \u002F TypeScript\n\n```typescript\nimport { detectLanguageFromPath, detectLanguageFromContent } from \"@xberg-io\u002Ftree-sitter-language-pack\";\n\nconst lang = detectLanguageFromPath(\"src\u002Fapp.ts\") ?? detectLanguageFromContent(source);\n```\n\n## Choosing CLI vs SDK\n\n- Path or extension is enough, one-shot → just run `ts-pack parse`\u002F`process`\n  and let it auto-detect.\n- Only raw content (a pasted snippet, a stream, a file with no extension) →\n  use the SDK's `detect_language_from_content`, then pass the result as\n  `--language` to the CLI if needed.\n\n## When to reach for the other skills\n\nOnce the language is known, hand off to `tree-sitter-language-pack-parsing-source` (syntax tree) or\n`tree-sitter-language-pack-extracting-code-structure` (metadata). To see or prefetch the parser for a\ndetected language, see `tree-sitter-language-pack-managing-parsers`.\n",{"type":38,"title":39,"x-ai-rulez":40,"description":44},"Playbook","Tree Sitter Language Pack Detecting Languages",{"id":41,"kind":42,"metadata":43},"tree-sitter-language-pack-detecting-languages","skill",{"name":41},"Use when the user wants to know which programming language a file or snippet is. Covers implicit detection in `ts-pack parse`\u002F`process`, confirming support with `ts-pack list`\u002F`info`, and the SDK detection functions for path, extension, and raw content.","main","c14405493731b34089b4aae085abe5527b5000c7","packages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill",0,"https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint","https:\u002F\u002Fgithub.com\u002Fbitflight-devops","Public repositories of DevOps tools, scripts, integrations, and templates","2026-11-09 14:16:32",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add bitflight-devops\u002Fskilllint --skill my-skill",{"tool":59,"command":60},"bunx","bunx skills add bitflight-devops\u002Fskilllint --skill my-skill",{"tool":62,"command":63},"pnpm","pnpm dlx skills add bitflight-devops\u002Fskilllint --skill my-skill","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill\u002FSKILL.md",true,[67,72,78,82,85],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":48,"sourceHtmlUrl":71},"assets\u002F.gitkeep","ASSET","资产文件","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill\u002Fassets\u002F.gitkeep",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"eval_queries.json","REFERENCE","参考文档",18,"https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill\u002Feval_queries.json",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"index.md",328,"https:\u002F\u002Fgithub.com\u002Fxberg-io\u002Ftree-sitter-language-pack\u002Fblob\u002Fmain\u002Fplugin\u002F.ai-rulez\u002Fskills\u002Ftree-sitter-language-pack-detecting-languages\u002Findex.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":48,"sourceHtmlUrl":84},"references\u002F.gitkeep","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill\u002Freferences\u002F.gitkeep",{"path":86,"resourceType":87,"resourceTypeDesc":88,"sizeBytes":48,"sourceHtmlUrl":89},"scripts\u002F.gitkeep","SCRIPT","脚本","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM006\u002Fvalid-context-value\u002Fskills\u002Fmy-skill\u002Fscripts\u002F.gitkeep",[91,104,127,137,147,160],{"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":97,"publishedAt":33},"01M6CSQYQKKT3AP6J6NTT1RYJG","fixable-skill","Exercise grouped Action fix findings.","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Faction\u002Fskills\u002Ffixable-skill\u002FSKILL.md",[],[98,99,100,101,102,103],"fixable skill","exercise","read","fix","fix findings","action",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":33},"01M6CSQWBMT9000HH2A7KR1TCC","skilllint","Use the skilllint CLI to validate, explain, and fix agent plugins, skills, agents, commands, and platform files. Use when asked to lint agent artifacts, investigate a skilllint rule ID, or verify a plugin before commit.","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fplugins\u002Fagentskills-skilllint\u002Fskills\u002Fskilllint\u002FSKILL.md",[],[106,111,112,27,113,114,115,116,117,118,119,101,28,120,121,122,123,124,125,126,32],"validate","investigate","plugins","artifacts","lint","plugin","commit","cli","explain","files","commands","platform","id","rule","path","agent plugins",{"skillNo":128,"name":5,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":133,"publishedAt":33},"01M6CSQTRYRZN792TK6FV6PDAA","Use this skill when you need to verify valid name pattern compliance.","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM010\u002Fvalid-name-pattern\u002Fskills\u002Fmy-skill\u002FSKILL.md",[132],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[25,24,29,32,27,134,26,135,28,136],"name","compliance","pattern",{"skillNo":138,"name":5,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":33},"01M6CSQSAR0FC01CBKBXSTYQCD","Use this skill when you need to verify quoted descriptions with colons: example.","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM009\u002Fquoted-description\u002Fskills\u002Fmy-skill\u002FSKILL.md",[142],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[24,25,27,28,144,145,29,146,32],"example","with","quoted",{"skillNo":148,"name":5,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":33},"01M6CSQQK9TV19JTYPV242XR1P","Use this skill when you need to verify CSV string format for tools.","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM007\u002Ftools-as-csv-string\u002Fskills\u002Fmy-skill\u002FSKILL.md",[152],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[25,24,154,155,156,27,157,158,100,28,29,159,32],"STRING","csv","Tools","format","grep","for",{"skillNo":161,"name":5,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":33},"01M6CSQMPWXWMQWGCWT8F1C30A","Use this skill when you need to verify field types are all correct.","https:\u002F\u002Fgithub.com\u002Fbitflight-devops\u002Fskilllint\u002Fblob\u002Fmain\u002Fpackages\u002Fskilllint\u002Ftests\u002Ffixtures\u002Fproviders\u002Fagentskills\u002Fpassing-examples\u002FFM005\u002Fcorrect-types\u002Fskills\u002Fmy-skill\u002FSKILL.md",[165],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[24,25,27,167,28,168,29,169,32],"correct","types","true"]