[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699B2ABTNC22CSQKB4YYHD8":3,"skill-same:01M699B2ABTNC22CSQKB4YYHD8":79},{"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":28,"publishedAt":50,"linkOnly":51,"markdownContent":52,"markdownBody":53,"frontMatter":54,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M699B2ABTNC22CSQKB4YYHD8","python-code-quality",null,"Code quality checks, linting, formatting, and type checking commands for the Agent Framework Python codebase. Use this when running checks, fixing lint errors, or troubleshooting CI failures.","microsoft\u002Fagent-framework","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6999R99RF2DY8AXYFS5HZRM",14623,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fpython\u002F.github\u002Fskills\u002Fpython-code-quality\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"python code quality","code quality","code","python code","quality","python","use","running","when","codebase","for","errors","linting","type","formatting","commands","troubleshooting","ci","framework","lint","agent framework","2026-11-10 10:12:30",false,"---\nname: python-code-quality\ndescription: >\n  Code quality checks, linting, formatting, and type checking commands for the\n  Agent Framework Python codebase. Use this when running checks, fixing lint\n  errors, or troubleshooting CI failures.\n---\n\n# Python Code Quality\n\n## Quick Commands\n\nAll commands run from the `python\u002F` directory:\n\n```bash\n# Syntax formatting + checks (parallel across packages by default)\nuv run poe syntax\nuv run poe syntax -P core\nuv run poe syntax -F    # Format only\nuv run poe syntax -C    # Check only\nuv run poe syntax -S    # Samples only\n\n# Type checking\n#\n# Division of labor (see \"Type checking architecture\" below):\n#   - Pyright (strict) is the source-code type checker.\n#   - Pyright (relaxed `basic`), mypy, pyrefly, ty, zuban all check the TESTS;\n#     pyright\u002Fpyrefly\u002Fty also check the SAMPLES (mypy\u002Fzuban skip script-style samples).\nuv run poe pyright       # Pyright (strict) over SOURCE, fan-out across packages\nuv run poe pyright -P core\nuv run poe pyright -A\nuv run poe test-typing   # mypy + pyrefly + ty + zuban + pyright over each package's TESTS\nuv run poe test-typing -P core\nuv run poe test-typing -S                       # samples (pyrefly + ty + pyright)\nuv run poe test-typing -P core --checker mypy   # narrow to one checker (repeatable)\nuv run poe test-typing -P core --checker pyright # relaxed pyright over the tests\nuv run poe mypy          # alias: MyPy over the tests only\nuv run poe mypy -P core\nuv run poe typing        # Pyright (source) + the tests checkers\nuv run poe typing -P core\nuv run poe typing -A\n\n# All package-level checks in parallel (syntax + pyright)\nuv run poe check-packages\n\n# Full check (packages + samples + tests + markdown)\nuv run poe check\nuv run poe check -P core\n\n# Samples only\nuv run poe check -S\nuv run poe pyright -S\n\n# Markdown code blocks\nuv run poe markdown-code-lint\n```\n\nPoe and the pytest toolchain stay in the cross-version development\nenvironment. Ruff and the type checkers use pinned\n`tooling\u002Frequirements-*.txt` files; prek is selected from the `tool-hooks`\ndependency group only when needed.\n\n## Pre-commit Hooks (prek)\n\nPrek hooks run automatically on commit. They stay lightweight and only check\nchanged files.\n\n```bash\n# Install hooks\nuv run poe prek-install\n\n# Run all hooks manually\nuv run --group tool-hooks prek run -a\n\n# Run on last commit\nuv run --group tool-hooks prek run --last-commit\n```\n\nThey run changed-package syntax formatting\u002Fchecking, markdown code lint only\nwhen markdown files change, and sample syntax lint\u002Fpyright only when files\nunder `samples\u002F` change.\nThey intentionally do not run workspace `pyright` or `mypy` by default.\n\n## Type checking architecture\n\nFollowing the \"too many type checkers\" approach, type checkers are split by target:\n\n| Target | Checker(s) | Mode | Config |\n|--------|-----------|------|--------|\n| Source (`agent_framework*`) | **pyright** | strict | `[tool.pyright]` in `pyproject.toml` |\n| Tests | pyright, mypy, pyrefly, ty, zuban | relaxed\u002Fbasic | `pyrightconfig.tests.json`, `[tool.mypy]`, `pyrefly.toml`, `ty` rules |\n| Samples | pyright, pyrefly, ty | basic | `pyrightconfig.samples.json`, `pyrefly.samples.toml`, `ty.samples.toml` |\n\n- **Pyright is the only *strict* source-code checker**, and it ALSO runs in a relaxed\n  `basic` profile over the tests and samples (so the surfaces customers copy from are\n  validated by every checker, including pyright). MyPy was removed from source; its\n  `[tool.mypy]` block is now a *relaxed* profile used only for tests\u002Fsamples.\n- The extra checkers run over tests\u002Fsamples because those exercise the public API the way\n  users do. The profile is intentionally relaxed (private access allowed, untyped test\n  bodies allowed) so authors aren't forced into ugly over-annotation.\n- **Gating checkers** are `pyright`, `mypy`, `pyrefly`, `ty`, and `zuban` — all five run by\n  default and gate CI. `zuban` is the strictest of the mypy-compatible pair, so the same\n  `[tool.mypy]` config yields more findings; suppress zuban-only friction with shared\n  `# type: ignore[code]`. Suppress relaxed-pyright friction with `# pyright: ignore[rule]`.\n- **Samples** add `pyright` to `pyrefly` + `ty` — mypy\u002Fzuban can't resolve script-style\n  sample layouts (numeric-prefixed dirs, duplicate `main.py`), but pyright handles them.\n- `pyrefly.samples.toml` enables fallback lookup for standalone sibling imports.\n  The ty sample profile uses first-party `root = [\".\"]` for PEP 723 sibling helpers,\n  preserving automatic extra-path lookup for the existing samples.\n- The strict source-pyright (`[tool.pyright]`) enforces `reportUnnecessaryTypeIgnoreComment`\n  and excludes tests\u002Fsamples; the relaxed test\u002Fsample pyright configs do not flag unnecessary\n  ignores.\n\n## Ruff Configuration\n\n- Line length: 120\n- Target: Python 3.11+\n- Auto-fix enabled\n- Rules: ASYNC, B, CPY, D, E, ERA, F, FIX, I, INP, ISC, Q, RET, RSE, RUF, SIM, T20, TD, W, T100, S\n- Scripts directory is excluded from checks\n\n## Pyright Configuration\n\n- **Source**: strict mode (`[tool.pyright]`), `reportUnnecessaryTypeIgnoreComment = \"error\"`,\n  excludes tests, samples, .venv, packages\u002Fdevui\u002Ffrontend.\n- **Tests**: relaxed `basic` profile (`pyrightconfig.tests.json`) — private import\u002Fusage and\n  not-required TypedDict access allowed; runs as the `pyright` checker in `test-typing`.\n- **Samples**: relaxed `basic` profile (`pyrightconfig.samples.json`) —\n  runs as the `pyright` checker in `test-typing -S`.\n\n## Parallel Execution\n\nThe task runner (`scripts\u002Ftask_runner.py`) executes the cross-product of\n(package × task) in parallel using ThreadPoolExecutor. Single items run\nin-process with streaming output.\n\n## CI Workflow\n\nCI splits into 4 parallel jobs:\n1. **Pre-commit hooks** — lightweight hooks (SKIP=poe-check)\n2. **Package checks** — syntax\u002Fpyright (source) via check-packages\n3. **Samples & markdown** — `check -S` plus `markdown-code-lint`\n4. **Test Typing** — change-detected mypy\u002Fpyrefly\u002Fty over tests (`ci-test-typing`)\n","# Python Code Quality\n\n## Quick Commands\n\nAll commands run from the `python\u002F` directory:\n\n```bash\n# Syntax formatting + checks (parallel across packages by default)\nuv run poe syntax\nuv run poe syntax -P core\nuv run poe syntax -F    # Format only\nuv run poe syntax -C    # Check only\nuv run poe syntax -S    # Samples only\n\n# Type checking\n#\n# Division of labor (see \"Type checking architecture\" below):\n#   - Pyright (strict) is the source-code type checker.\n#   - Pyright (relaxed `basic`), mypy, pyrefly, ty, zuban all check the TESTS;\n#     pyright\u002Fpyrefly\u002Fty also check the SAMPLES (mypy\u002Fzuban skip script-style samples).\nuv run poe pyright       # Pyright (strict) over SOURCE, fan-out across packages\nuv run poe pyright -P core\nuv run poe pyright -A\nuv run poe test-typing   # mypy + pyrefly + ty + zuban + pyright over each package's TESTS\nuv run poe test-typing -P core\nuv run poe test-typing -S                       # samples (pyrefly + ty + pyright)\nuv run poe test-typing -P core --checker mypy   # narrow to one checker (repeatable)\nuv run poe test-typing -P core --checker pyright # relaxed pyright over the tests\nuv run poe mypy          # alias: MyPy over the tests only\nuv run poe mypy -P core\nuv run poe typing        # Pyright (source) + the tests checkers\nuv run poe typing -P core\nuv run poe typing -A\n\n# All package-level checks in parallel (syntax + pyright)\nuv run poe check-packages\n\n# Full check (packages + samples + tests + markdown)\nuv run poe check\nuv run poe check -P core\n\n# Samples only\nuv run poe check -S\nuv run poe pyright -S\n\n# Markdown code blocks\nuv run poe markdown-code-lint\n```\n\nPoe and the pytest toolchain stay in the cross-version development\nenvironment. Ruff and the type checkers use pinned\n`tooling\u002Frequirements-*.txt` files; prek is selected from the `tool-hooks`\ndependency group only when needed.\n\n## Pre-commit Hooks (prek)\n\nPrek hooks run automatically on commit. They stay lightweight and only check\nchanged files.\n\n```bash\n# Install hooks\nuv run poe prek-install\n\n# Run all hooks manually\nuv run --group tool-hooks prek run -a\n\n# Run on last commit\nuv run --group tool-hooks prek run --last-commit\n```\n\nThey run changed-package syntax formatting\u002Fchecking, markdown code lint only\nwhen markdown files change, and sample syntax lint\u002Fpyright only when files\nunder `samples\u002F` change.\nThey intentionally do not run workspace `pyright` or `mypy` by default.\n\n## Type checking architecture\n\nFollowing the \"too many type checkers\" approach, type checkers are split by target:\n\n| Target | Checker(s) | Mode | Config |\n|--------|-----------|------|--------|\n| Source (`agent_framework*`) | **pyright** | strict | `[tool.pyright]` in `pyproject.toml` |\n| Tests | pyright, mypy, pyrefly, ty, zuban | relaxed\u002Fbasic | `pyrightconfig.tests.json`, `[tool.mypy]`, `pyrefly.toml`, `ty` rules |\n| Samples | pyright, pyrefly, ty | basic | `pyrightconfig.samples.json`, `pyrefly.samples.toml`, `ty.samples.toml` |\n\n- **Pyright is the only *strict* source-code checker**, and it ALSO runs in a relaxed\n  `basic` profile over the tests and samples (so the surfaces customers copy from are\n  validated by every checker, including pyright). MyPy was removed from source; its\n  `[tool.mypy]` block is now a *relaxed* profile used only for tests\u002Fsamples.\n- The extra checkers run over tests\u002Fsamples because those exercise the public API the way\n  users do. The profile is intentionally relaxed (private access allowed, untyped test\n  bodies allowed) so authors aren't forced into ugly over-annotation.\n- **Gating checkers** are `pyright`, `mypy`, `pyrefly`, `ty`, and `zuban` — all five run by\n  default and gate CI. `zuban` is the strictest of the mypy-compatible pair, so the same\n  `[tool.mypy]` config yields more findings; suppress zuban-only friction with shared\n  `# type: ignore[code]`. Suppress relaxed-pyright friction with `# pyright: ignore[rule]`.\n- **Samples** add `pyright` to `pyrefly` + `ty` — mypy\u002Fzuban can't resolve script-style\n  sample layouts (numeric-prefixed dirs, duplicate `main.py`), but pyright handles them.\n- `pyrefly.samples.toml` enables fallback lookup for standalone sibling imports.\n  The ty sample profile uses first-party `root = [\".\"]` for PEP 723 sibling helpers,\n  preserving automatic extra-path lookup for the existing samples.\n- The strict source-pyright (`[tool.pyright]`) enforces `reportUnnecessaryTypeIgnoreComment`\n  and excludes tests\u002Fsamples; the relaxed test\u002Fsample pyright configs do not flag unnecessary\n  ignores.\n\n## Ruff Configuration\n\n- Line length: 120\n- Target: Python 3.11+\n- Auto-fix enabled\n- Rules: ASYNC, B, CPY, D, E, ERA, F, FIX, I, INP, ISC, Q, RET, RSE, RUF, SIM, T20, TD, W, T100, S\n- Scripts directory is excluded from checks\n\n## Pyright Configuration\n\n- **Source**: strict mode (`[tool.pyright]`), `reportUnnecessaryTypeIgnoreComment = \"error\"`,\n  excludes tests, samples, .venv, packages\u002Fdevui\u002Ffrontend.\n- **Tests**: relaxed `basic` profile (`pyrightconfig.tests.json`) — private import\u002Fusage and\n  not-required TypedDict access allowed; runs as the `pyright` checker in `test-typing`.\n- **Samples**: relaxed `basic` profile (`pyrightconfig.samples.json`) —\n  runs as the `pyright` checker in `test-typing -S`.\n\n## Parallel Execution\n\nThe task runner (`scripts\u002Ftask_runner.py`) executes the cross-product of\n(package × task) in parallel using ThreadPoolExecutor. Single items run\nin-process with streaming output.\n\n## CI Workflow\n\nCI splits into 4 parallel jobs:\n1. **Pre-commit hooks** — lightweight hooks (SKIP=poe-check)\n2. **Package checks** — syntax\u002Fpyright (source) via check-packages\n3. **Samples & markdown** — `check -S` plus `markdown-code-lint`\n4. **Test Typing** — change-detected mypy\u002Fpyrefly\u002Fty over tests (`ci-test-typing`)\n",{"name":5,"description":7},"main","9be4c673782553b2a70afa0c3365c443edca172b","python\u002F.github\u002Fskills\u002Fpython-code-quality",2606,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework","https:\u002F\u002Faka.ms\u002Fagent-framework","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-11 04:24:49",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add microsoft\u002Fagent-framework --skill python-code-quality",{"tool":71,"command":72},"bunx","bunx skills add microsoft\u002Fagent-framework --skill python-code-quality",{"tool":74,"command":75},"pnpm","pnpm dlx skills add microsoft\u002Fagent-framework --skill python-code-quality","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fpython\u002F.github\u002Fskills\u002Fpython-code-quality\u002FSKILL.md",true,[],[80,103,128,138,160,177],{"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":86,"publishedAt":50},"01M70H1GNJPW85ENXA0BCPC6PF","draft-release-notes","Create or rewrite Agent Framework release notes from a generated GitHub release log. Use when preparing Python or .NET release notes, filtering mixed-language changelogs, deduplicating changes, preserving inline contributor credits, or documenting breaking-change migrations from pull requests. Requires the user to provide the generated GitHub log, language, and release version before work begins.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdraft-release-notes\u002FSKILL.md",[],[87,88,89,90,91,34,49,92,93,94,95,96,35,97,98,99,100,101,102,37],"notes","release notes","release","draft","draft release notes","pull requests","create","pull","generated","filtering","version","log","release version","rewrite","mixed-language","contributor",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":50},"01M699C55AYGT1ZVZDHWFZNBDB","agent-framework-builder-python","Use this skill when building, modifying, reviewing, evaluating, integrating, or hosting Python applications with Microsoft Agent Framework. Use it for Agent Framework agents, harness agents, workflows, orchestrations, declarative definitions, tools, sessions, middleware, evaluation, observability, integrations, or hosting, even when the user has not yet chosen the correct framework pattern.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fskills\u002Fagent-framework-builder-python\u002FSKILL.md",[109],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[34,49,111,47,112,9,113,114,115,116,117,118,119,120,121,35,122,123,124,125,126,39,127,37],"agent framework builder python","builder","workflows","sessions","microsoft agent framework","harness","observability","Evaluation","applications","correct","integrations","hosting","pattern","middleware","with","orchestrations","declarative",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":135,"publishedAt":50},"01M699C2PH4WPRCMV90NHANCY9","agent-framework-builder-dotnet","Use this skill when building, modifying, reviewing, evaluating, integrating, or hosting .NET (C#) applications with Microsoft Agent Framework. Use it for Agent Framework agents, harness agents, workflows, orchestrations, declarative definitions, tools, sessions, middleware, evaluation, observability, integrations, or hosting, even when the user has not yet chosen the correct framework pattern.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fskills\u002Fagent-framework-builder-dotnet\u002FSKILL.md",[134],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[49,136,137,47,112,9,113,114,115,116,117,119,120,121,35,124,125,126,39,127,37],"dotnet","agent framework builder dotnet",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":145,"publishedAt":50},"01M699C0QKV5XEBE61PB8NV544","foundry-hosted-agent-validation","Step-by-step process for validating a Python Foundry hosted agent sample (under python\u002Fsamples\u002F04-hosting\u002Ffoundry-hosted-agents\u002F) end to end — running it locally (native runtime and `azd ai agent run`) and after deploying it to an Azure AI Foundry project with `azd`. Use this when asked to validate a hosted agent sample.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fpython\u002Fscripts\u002Fsample_validation\u002Fskills\u002Ffoundry-hosted-agent-validation\u002FSKILL.md",[144],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[146,147,148,34,149,150,151,152,47,153,154,35,155,156,157,158,159,39,37,36],"foundry","foundry hosted agent validation","validation","ai agent","azure","run","azure ai foundry","tool","model","project","sample","runtime","end","native",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":50},"01M699BYCYJD8RXC5MYY61WBPR","foundry-config-setup","Resolve missing setup caused by a hardcoded Foundry project endpoint or model in a sample. Use when a sample fails because it uses a placeholder\u002Fhardcoded project_endpoint (for example \"https:\u002F\u002Fyour-project.services.ai.azure.com\") or a hardcoded model instead of reading them from the environment.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fpython\u002Fscripts\u002Fsample_validation\u002Fskills\u002Ffoundry-config-setup\u002FSKILL.md",[],[146,167,168,169,170,150,171,172,173,153,154,174,35,175,155,156,176,125,39,37],"foundry config setup","config","setup","placeholder","tool use","https","services","environment","example","missing",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":50},"01M699BWSTE6SGCCBY3JFP10GQ","support-style","Contoso Outdoors customer-support tone and formatting guidelines.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fagent-framework\u002Fblob\u002Fmain\u002Fpython\u002Fsamples\u002F04-hosting\u002Ffoundry-hosted-agents\u002Fresponses\u002Ffoundry_toolbox_mcp_skills\u002Fskills\u002Fsupport-style\u002FSKILL.md",[],[184,185,186,187,188,189,43],"support","support style","style","customer","guidelines","tone"]