[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M699D4FED8795YBASFS3HHDT":3,"skill-same:01M699D4FED8795YBASFS3HHDT":76},{"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":31,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M699D4FED8795YBASFS3HHDT","testing-course-samples",null,"Use when asked to validate, test, smoke-test, or run the course's notebook and code samples against a live Microsoft Foundry \u002F Azure OpenAI configuration. Covers environment setup (.env, az login, packages), the scripts\u002Fvalidate-notebooks.ps1 runner, interpreting PASS\u002FFAIL results, and which lessons need extra resources (Azure AI Search, GitHub MCP, Foundry Local, Playwright).","microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79374,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fen\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[32,33,34,35,36,37,9,38,39,40],"testing","testing course samples","MCP","github","playwright","test","foundry","foundry local","microsoft foundry","2026-11-10 10:12:30",false,"---\nname: testing-course-samples\ndescription: Use when asked to validate, test, smoke-test, or run the course's notebook\n  and code samples against a live Microsoft Foundry \u002F Azure OpenAI configuration.\n  Covers environment setup (.env, az login, packages), the scripts\u002Fvalidate-notebooks.ps1\n  runner, interpreting PASS\u002FFAIL results, and which lessons need extra resources (Azure\n  AI Search, GitHub MCP, Foundry Local, Playwright).\n---\n# Testing the Course Samples\n\nValidate that the lesson notebooks and code samples run against a live\nMicrosoft Foundry \u002F Azure OpenAI setup. The repo ships a runner at\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1) that\nexecutes every Python notebook headlessly and prints a PASS\u002FFAIL matrix.\n\n## When to use\n- \"Validate all the notebooks \u002F samples against my Azure subscription.\"\n- \"Smoke-test the course after upgrading packages or changing models.\"\n- \"Which lessons still pass \u002F fail live?\"\n\nDo **not** use this for the AI Smoke Test GitHub Action (that validates *deployed*\nhosted agents — see [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)). This skill\nruns the notebooks locally.\n\n## Prerequisites (check first)\n1. **Python 3.12+** with course deps: `python -m pip install -r requirements.txt`\n   plus the executor: `python -m pip install nbconvert ipykernel`.\n2. **`.env` at the repo root** (copy from [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example)) with at least:\n   - `AZURE_AI_PROJECT_ENDPOINT` — Foundry project endpoint\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — a non-deprecated deployment (e.g. `gpt-5-mini`)\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) and `AZURE_OPENAI_DEPLOYMENT`\n     for lessons that call Azure OpenAI directly (Lesson 06, 02-azure-openai, 14 handoff\u002Fhuman-loop).\n3. **`az login`** completed — samples authenticate with `AzureCliCredential` (Entra ID, keyless).\n4. Verify the model deployment exists:\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`.\n\n## Running the validation\n```powershell\n# All Python notebooks (skips .NET, .venv, site-packages, translations, skill assets)\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# A single lesson, with a longer per-cell timeout\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# Just list what would run (no execution)\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# Explicit interpreter (if `python` is not on PATH, e.g. Windows Store alias)\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\nThe script writes executed copies, per-notebook logs, and `results.json` to\n`$env:TEMP\\aiab-nbval` and exits with the number of failures.\n\nTransient failures (shared-subscription HTTP 429 rate limits, an occasional\n`AzureCliCredential` token hiccup, or a timeout) are retried automatically\n(`-Retries`, default 2, with `-RetryDelaySeconds` backoff, default 20). If a\nmodel deployment is regularly 429-ing, check the subscription's GlobalStandard\nTPM quota (`az cognitiveservices usage list -l \u003Cregion>`) — raising a single\ndeployment's capacity does not help when the *subscription* quota is exhausted.\n\n## Interpreting results\n- `PASS` — the notebook ran end-to-end with no cell error.\n- `FAIL` — the first `*Error` \u002F `*Exception` line is shown; open the matching\n  `log_*.txt` in the output dir for the full traceback.\n- A single notebook's failure is bounded by `-Timeout` (per cell), so a hung\n  human-in-the-loop cell surfaces as `StdinNotImplementedError` rather than hanging.\n\n## Lessons that need extra resources (expected to fail without them)\n| Lesson | Extra requirement |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search (`AZURE_SEARCH_SERVICE_ENDPOINT`, key) — has an in-memory fallback path |\n| 11 MCP \u002F GitHub | GitHub MCP server + PAT |\n| 13 memory (cognee) | `cognee` configured with a model provider |\n| 15 browser-use | Playwright browsers installed (`playwright install`) + `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Foundry Local runtime + a downloaded Qwen model (on-device, no cloud) |\n| `*-dotnet-*` notebooks | .NET Interactive kernel (excluded by default; use `-IncludeDotnet`) |\n\n## Reporting back\nSummarise as a PASS\u002FFAIL table grouped by lesson. Separate genuine regressions\n(code\u002Fconfig bugs to fix) from environment gaps (missing Search\u002FFoundry Local\u002FPAT),\nand cite the failing `log_*.txt` for each real failure.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nThis document has been translated using AI translation service [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# Testing the Course Samples\n\nValidate that the lesson notebooks and code samples run against a live\nMicrosoft Foundry \u002F Azure OpenAI setup. The repo ships a runner at\n[`scripts\u002Fvalidate-notebooks.ps1`](..\u002F..\u002F..\u002F..\u002F..\u002Fscripts\u002Fvalidate-notebooks.ps1) that\nexecutes every Python notebook headlessly and prints a PASS\u002FFAIL matrix.\n\n## When to use\n- \"Validate all the notebooks \u002F samples against my Azure subscription.\"\n- \"Smoke-test the course after upgrading packages or changing models.\"\n- \"Which lessons still pass \u002F fail live?\"\n\nDo **not** use this for the AI Smoke Test GitHub Action (that validates *deployed*\nhosted agents — see [`tests\u002FREADME.md`](..\u002F..\u002F..\u002Ftests\u002FREADME.md)). This skill\nruns the notebooks locally.\n\n## Prerequisites (check first)\n1. **Python 3.12+** with course deps: `python -m pip install -r requirements.txt`\n   plus the executor: `python -m pip install nbconvert ipykernel`.\n2. **`.env` at the repo root** (copy from [`.env.example`](..\u002F..\u002F..\u002F..\u002F..\u002F.env.example)) with at least:\n   - `AZURE_AI_PROJECT_ENDPOINT` — Foundry project endpoint\n     (`https:\u002F\u002F\u003Caccount>.services.ai.azure.com\u002Fapi\u002Fprojects\u002F\u003Cproject>`)\n   - `AZURE_AI_MODEL_DEPLOYMENT_NAME` — a non-deprecated deployment (e.g. `gpt-5-mini`)\n   - `AZURE_OPENAI_ENDPOINT` (`https:\u002F\u002F\u003Caccount>.openai.azure.com`) and `AZURE_OPENAI_DEPLOYMENT`\n     for lessons that call Azure OpenAI directly (Lesson 06, 02-azure-openai, 14 handoff\u002Fhuman-loop).\n3. **`az login`** completed — samples authenticate with `AzureCliCredential` (Entra ID, keyless).\n4. Verify the model deployment exists:\n   `az cognitiveservices account deployment list -g \u003Crg> -n \u003Caccount> -o table`.\n\n## Running the validation\n```powershell\n# All Python notebooks (skips .NET, .venv, site-packages, translations, skill assets)\npwsh scripts\u002Fvalidate-notebooks.ps1\n\n# A single lesson, with a longer per-cell timeout\npwsh scripts\u002Fvalidate-notebooks.ps1 -Filter '08-*' -Timeout 600\n\n# Just list what would run (no execution)\npwsh scripts\u002Fvalidate-notebooks.ps1 -List\n\n# Explicit interpreter (if `python` is not on PATH, e.g. Windows Store alias)\npwsh scripts\u002Fvalidate-notebooks.ps1 -Python \"C:\u002Fpath\u002Fto\u002Fpython.exe\"\n```\nThe script writes executed copies, per-notebook logs, and `results.json` to\n`$env:TEMP\\aiab-nbval` and exits with the number of failures.\n\nTransient failures (shared-subscription HTTP 429 rate limits, an occasional\n`AzureCliCredential` token hiccup, or a timeout) are retried automatically\n(`-Retries`, default 2, with `-RetryDelaySeconds` backoff, default 20). If a\nmodel deployment is regularly 429-ing, check the subscription's GlobalStandard\nTPM quota (`az cognitiveservices usage list -l \u003Cregion>`) — raising a single\ndeployment's capacity does not help when the *subscription* quota is exhausted.\n\n## Interpreting results\n- `PASS` — the notebook ran end-to-end with no cell error.\n- `FAIL` — the first `*Error` \u002F `*Exception` line is shown; open the matching\n  `log_*.txt` in the output dir for the full traceback.\n- A single notebook's failure is bounded by `-Timeout` (per cell), so a hung\n  human-in-the-loop cell surfaces as `StdinNotImplementedError` rather than hanging.\n\n## Lessons that need extra resources (expected to fail without them)\n| Lesson | Extra requirement |\n|--------|-------------------|\n| 05 Agentic RAG | Azure AI Search (`AZURE_SEARCH_SERVICE_ENDPOINT`, key) — has an in-memory fallback path |\n| 11 MCP \u002F GitHub | GitHub MCP server + PAT |\n| 13 memory (cognee) | `cognee` configured with a model provider |\n| 15 browser-use | Playwright browsers installed (`playwright install`) + `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME` |\n| 17 local agent | Foundry Local runtime + a downloaded Qwen model (on-device, no cloud) |\n| `*-dotnet-*` notebooks | .NET Interactive kernel (excluded by default; use `-IncludeDotnet`) |\n\n## Reporting back\nSummarise as a PASS\u002FFAIL table grouped by lesson. Separate genuine regressions\n(code\u002Fconfig bugs to fix) from environment gaps (missing Search\u002FFoundry Local\u002FPAT),\nand cite the failing `log_*.txt` for each real failure.\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Disclaimer**:\nThis document has been translated using AI translation service [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator). While we strive for accuracy, please be aware that automated translations may contain errors or inaccuracies. The original document in its native language should be considered the authoritative source. For critical information, professional human translation is recommended. We are not liable for any misunderstandings or misinterpretations arising from the use of this translation.\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"description":7},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fen\u002F.agents\u002Fskills\u002Ftesting-course-samples",25989,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners","https:\u002F\u002Faka.ms\u002Fai-agents-beginners","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-07 12:51:12",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill testing-course-samples",{"tool":62,"command":63},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill testing-course-samples",{"tool":65,"command":66},"pnpm","pnpm dlx skills add microsoft\u002Fai-agents-for-beginners --skill testing-course-samples","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fen\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",true,[70],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"agents\u002Fopenai.yaml","REFERENCE","参考文档",137,"https:\u002F\u002Fgithub.com\u002Fnichee\u002Fdotfiles\u002Fblob\u002Fmain\u002Fclaude\u002Fskills\u002Fask-matt\u002Fagents\u002Fopenai.yaml",[77,84,93,101,109,116],{"skillNo":78,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":83,"publishedAt":41},"01M69A206TRZ8KK0CW0HYJF5V5","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[81,82],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},[32,33],{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":41},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[89],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[91,9,92],"docs","microsoft docs",{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":41},"01M69A1VPZFJQ1HNGTZQ5P3WSC","local-ai-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[99,100],"ai agents","local ai agents",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":41},"01M69A1S947N7MM6V9JF85S2E7","jupyter-notebook","當使用者要求建立、搭建或編輯 Jupyter 筆記本（`.ipynb`）用於實驗、探索或教學時使用；優先使用隨附範本並執行輔助腳本 `new_notebook.py` 來產生一個乾淨的起始筆記本。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fjupyter-notebook\u002FSKILL.md",[],[108],"jupyter notebook",{"skillNo":110,"name":111,"nameZh":6,"description":6,"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":41},"01M69A1Q8EXPWKZSQK69V6WF22","deploying-scalable-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[115],"deploying scalable agents",{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":41},"01M69A1MHZTH3RH9N8VYSYG74X","azure-openai-to-responses","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",[],[122],"azure openai to responses"]