[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BN01QNNCXEDRYYWD6YF65":3,"skill-same:01M69BN01QNNCXEDRYYWD6YF65":51},{"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":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M69BN01QNNCXEDRYYWD6YF65","build-ebpf",null,"Build the eBPF for Windows repository — entire solution or specific components. Use this skill when asked to build, compile, rebuild, restore, or clean the project or any of its components (drivers, libraries, tools, tests, etc.).","microsoft\u002Febpf-for-windows","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BMT4VCWMXBB495CRX6P3V",3590,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbuild-ebpf\u002FSKILL.md",[],[19,20,21,22],"build ebpf","components","windows","libraries","2026-11-10 10:12:30",false,"---\nname: build-ebpf\ndescription: >\n  Build the eBPF for Windows repository — entire solution or specific components.\n  Use this skill when asked to build, compile, rebuild, restore, or clean the project\n  or any of its components (drivers, libraries, tools, tests, etc.).\n---\n\n# Build eBPF for Windows\n\nBuild the eBPF for Windows solution or individual components using MSBuild.\n\n## When to Use\n\n- User asks to build, compile, rebuild, or clean the project\n- User asks to build a specific component (driver, library, tool, test, etc.)\n- User asks to restore NuGet packages\n- User asks to do a full or partial build with a specific configuration\n- After making code changes that need to be compiled\n\n## Environment Requirements\n\n- **Visual Studio Developer PowerShell** (required — regular PowerShell lacks build environment variables)\n- MSBuild from VS Build Tools\n- Must run from the **solution root directory** (`ebpf-for-windows.sln` location)\n\n## Build Instructions\n\n### Step 1: Determine What to Build\n\nAsk the user (or infer from context) what they want to build. Options:\n\n1. **Full solution** — build everything\n2. **Specific component(s)** — use the target map below to select `\u002Ft:` targets\n3. **Restore only** — just restore NuGet packages\n\n### Step 2: Determine Configuration and Platform\n\n| Parameter | Options | Default |\n|-----------|---------|---------|\n| Configuration | `Debug`, `Release`, `NativeOnlyDebug`, `NativeOnlyRelease`, `FuzzerDebug` | `Debug` |\n| Platform | `x64`, `ARM64` | `x64` |\n\nIf the user doesn't specify, use `Debug` and `x64`.\n\n### Step 3: Construct and Run the MSBuild Command\n\n**CRITICAL RULES:**\n- Always use the **solution file**: `msbuild ebpf-for-windows.sln` — never build `.vcxproj` files directly\n- Always run from the **solution root directory**\n- Use `\u002Fm` for parallel builds\n- For first-time or fresh builds, add `-Restore` to restore NuGet packages\n- For clean rebuilds, use `\u002Ft:\"target:clean,target\"` syntax\n\n#### Full Solution Build\n\n```powershell\n# Standard build\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64\n\n# With NuGet restore (first-time or after package changes)\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 -Restore\n\n# Clean the solution\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:clean\n\n# With static analysis\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Release \u002Fp:Platform=x64 \u002Fp:Analysis=True\n```\n\n#### Targeted Component Build\n\n```powershell\n# Single target\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:drivers\\EbpfCore\n\n# Multiple targets\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:\"drivers\\EbpfCore,drivers\\netebpfext,tests\\unit_tests\"\n\n# Clean + rebuild a target (use semicolon or comma separator)\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:\"tools\\bpf2c:Clean;tools\\bpf2c\"\n```\n\n### Step 4: Analyze Results\n\n- If the build succeeds, report success with the output path (e.g., `x64\\Debug\\`)\n- If the build fails, show the **first error(s)** and suggest fixes\n- Common issues:\n  - Missing NuGet packages → suggest adding `-Restore`\n  - Missing environment → suggest using Visual Studio Developer PowerShell\n  - Header\u002Flinker errors → suggest checking dependencies and rebuilding prerequisite targets\n\n## MSBuild Target Map\n\nUse this map to translate component names to MSBuild `\u002Ft:` targets.\n**Solution targets use solution folder paths, not filesystem paths.**\n\n### Drivers (Kernel Components)\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| EbpfCore (kernel execution context) | `drivers\\EbpfCore` | `ebpfcore\u002F` |\n| EbpfCore_Usersim (usersim variant) | `drivers\\EbpfCore_Usersim` | `ebpfcore\u002Fusersim\u002F` |\n| netebpfext (WFP network hooks) | `drivers\\netebpfext` | `netebpfext\u002Fsys\u002F` |\n| sample_ebpf_ext (sample extension) | `undocked\\drivers\\sample_ebpf_ext` | `undocked\u002Ftests\u002Fsample\u002Fext\u002Fdrv\u002F` |\n\n### DLLs and Services (User-Mode)\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| EbpfApi (libbpf-compatible API) | `dlls\\EbpfApi` | `ebpfapi\u002F` |\n| eBPFSvc (JIT\u002Fverification service) | `service\\ebpfsvc` | `ebpfsvc\u002F` |\n| ebpfnetsh (netsh plugin) | `dlls\\ebpfnetsh` | `tools\u002Fnetsh\u002F` |\n\n### Libraries\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| API library | `libs\\user\\api` | `libs\u002Fapi\u002F` |\n| Service library | `libs\\user\\service` | `libs\u002Fservice\u002F` |\n| Execution context (kernel) | `libs\\kernel\\execution_context_kernel` | `libs\u002Fexecution_context\u002Fkernel\u002F` |\n| Execution context (user) | `libs\\user\\execution_context_user` | `libs\u002Fexecution_context\u002Fuser\u002F` |\n| uBPF (kernel) | `libs\\kernel\\ubpf_kernel` | `libs\u002Fubpf\u002Fkernel\u002F` |\n| uBPF (user) | `libs\\user\\ubpf_user` | `libs\u002Fubpf\u002Fuser\u002F` |\n| Runtime (kernel) | `libs\\kernel\\runtime_kernel` | `libs\u002Fruntime\u002Fkernel\u002F` |\n| Runtime (user) | `libs\\user\\runtime_user` | `libs\u002Fruntime\u002Fuser\u002F` |\n| API common | `libs\\user\\api_common` | `libs\u002Fapi_common\u002F` |\n| Shared (kernel) | `libs\\kernel\\shared_kernel` | `libs\u002Fshared\u002Fkernel\u002F` |\n| Shared (user) | `libs\\user\\shared_user` | `libs\u002Fshared\u002Fuser\u002F` |\n| PE parse | `libs\\user\\pe-parse` | `libs\u002Fpe-parse\u002F` |\n| ELF spec | `libs\\user\\elf_spec` | `libs\u002Felf_spec\u002F` |\n| Store helper | `libs\\user\\ebpf_store_helper` | `libs\u002Fstore_helper\u002Fuser\u002F` |\n| Netsh static | `libs\\user\\netsh_static` | `libs\u002Febpfnetsh\u002F` |\n| PREVAIL verifier | `libs\\user\\prevail` | `external\u002Febpf-verifier\u002Fbuild\u002F` |\n| libbtf | `libs\\user\\libbtf` | `external\u002Febpf-verifier\u002Fbuild\u002Fexternal\u002Flibbtf\u002F` |\n| netebpfext (user) | `libs\\user\\netebpfext_user` | `netebpfext\u002Fuser\u002F` |\n| cxplat (kernel) | `libs\\kernel\\cxplat_winkernel` | `external\u002Fusersim\u002Fcxplat\u002F` |\n| cxplat (user) | `libs\\user\\cxplat_winuser` | `external\u002Fusersim\u002Fcxplat\u002F` |\n| usersim | `libs\\user\\usersim` | `external\u002Fusersim\u002Fsrc\u002F` |\n| usersim_dll_skeleton | `libs\\user\\usersim_dll_skeleton` | `external\u002Fusersim\u002Fusersim_dll_skeleton\u002F` |\n\n### Tools\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| bpf2c (native code generator) | `tools\\bpf2c` | `tools\u002Fbpf2c\u002F` |\n| bpftool | `tools\\bpftool` | `tools\u002Fbpftool\u002F` |\n| export_program_info | `tools\\export_program_info` | `tools\u002Fexport_program_info\u002F` |\n| dnsflood | `tools\\dnsflood` | `tools\u002Fdnsflood\u002F` |\n| port_quota | `tools\\port_quota` | `tools\u002Fport_quota\u002F` |\n| port_leak | `tools\\port_leak` | `tools\u002Fport_leak\u002F` |\n| Setup build | `tools\\setup_build` | `scripts\u002Fsetup_build\u002F` |\n| OneBranch | `tools\\onebranch` | `tools\u002Fonebranch\u002F` |\n| export_program_info_sample | `undocked\\tools\\export_program_info_sample` | `undocked\u002Ftools\u002Fexport_program_info_sample\u002F` |\n\n### Tests\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| API tests | `tests\\api_test` | `tests\u002Fapi_test\u002F` |\n| Unit tests | `tests\\unit_tests` | `tests\u002Funit\u002F` |\n| bpf2c tests | `tests\\bpf2c_tests` | `tests\u002Fbpf2c_tests\u002F` |\n| Performance tests | `tests\\performance` | `tests\u002Fperformance\u002F` |\n| Socket tests | `tests\\socket_tests` | `tests\u002Fsocket\u002F` |\n| Cilium tests | `tests\\cilium_tests` | `tests\u002Fcilium\u002F` |\n| Connect redirect tests | `tests\\connect_redirect_tests` | `tests\u002Fconnect_redirect\u002F` |\n| Common tests | `tests\\common_tests` | `tests\u002Flibs\u002Fcommon\u002F` |\n| netebpfext unit tests | `tests\\netebpfext_unit` | `tests\u002Fnetebpfext_unit\u002F` |\n| Sample programs | `tests\\sample` | `tests\u002Fsample\u002F` |\n| bpftool tests | `installer\\bpftool_tests` | `tests\u002Fbpftool_tests\u002F` |\n| bpf2c plugin | `tests\\bpf2c_plugin` | `tests\u002Fbpf2c_plugin\u002F` |\n| Test utilities | `tests\\test_util` | `tests\u002Flibs\u002Futil\u002F` |\n| Sample ext app | `tests\\sample_ext_app` | `tests\u002Fsample\u002Fext\u002Fapp\u002F` |\n| TCP\u002FUDP listener | `tests\\tcp_udp_listener` | `tests\u002Ftcp_udp_listener\u002F` |\n| export_program_info test | `tests\\export_program_info_test` | `tests\u002Fexport_program_info_test\u002F` |\n| Restart test controller | `tests\\ebpf_restart_test_controller` | `tests\u002Fstress\u002Frestart_test_controller\u002F` |\n| Restart test helper | `tests\\ebpf_restart_test_helper` | `tests\u002Fstress\u002Frestart_test_helper\u002F` |\n\n### Stress Tests and Fuzzers\n\nStress tests build in Debug\u002FRelease. Fuzzers **require `FuzzerDebug` configuration**.\n\n| Component | Target | Config | Source |\n|-----------|--------|--------|--------|\n| Stress tests (user-mode) | `tests\\ebpf_stress_tests_um` | Debug | `tests\u002Fstress\u002Fum\u002F` |\n| Stress tests (kernel-mode) | `tests\\ebpf_stress_tests_km` | Debug | `tests\u002Fstress\u002Fkm\u002F` |\n| Execution context fuzzer | `tests\\libfuzzer\\execution_context_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fexecution_context\u002F` |\n| bpf2c fuzzer | `tests\\libfuzzer\\bpf2c_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fbpf2c_fuzzer\u002F` |\n| Verifier fuzzer | `tests\\libfuzzer\\verifier_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fverifier_fuzzer\u002F` |\n| Core helper fuzzer | `tests\\libfuzzer\\core_helper_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fcore_helper_fuzzer\u002F` |\n| netebpfext fuzzer | `tests\\libfuzzer\\netebpfext_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fnetebpfext_fuzzer\u002F` |\n\n### External Dependencies\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| Catch2 | `tests\\Catch2` | `external\u002FCatch2\u002F` |\n| Catch2WithMain | `tests\\Catch2WithMain` | `external\u002FCatch2\u002F` |\n\n> **Note:** The PREVAIL verifier for normal builds is `libs\\user\\prevail`. The `ubpf_fuzzer\\*` targets\n> (ebpfverifier, ubpf, libbtf, win-c, ubpf_fuzzer, ubpf_fuzzer_post_build) are only built in\n> `FuzzerDebug` configuration and will fail with MSB4057 errors in Debug\u002FRelease.\n\n### ubpf_fuzzer Targets (FuzzerDebug Only)\n\nThese targets only build in **`FuzzerDebug`** configuration:\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| ebpfverifier (fuzzer copy) | `ubpf_fuzzer\\ebpfverifier` | `external\u002Fubpf\u002Fbuild_fuzzer\u002Fexternal\u002Febpf-verifier\u002F` |\n| ubpf (fuzzer copy) | `ubpf_fuzzer\\ubpf` | `external\u002Fubpf\u002Fbuild_fuzzer\u002Fvm\u002F` |\n| ubpf_fuzzer | `ubpf_fuzzer\\ubpf_fuzzer` | `external\u002Fubpf\u002Fbuild_fuzzer\u002Flibfuzzer\u002F` |\n| libbtf (fuzzer copy) | `ubpf_fuzzer\\libbtf` | `external\u002Fubpf\u002Fbuild_fuzzer\u002F...\u002Flibbtf\u002F` |\n| win-c (fuzzer copy) | `ubpf_fuzzer\\win-c` | `external\u002Fubpf\u002Fbuild_fuzzer\u002F...\u002Fwin-c\u002F` |\n| ubpf_fuzzer_post_build | `ubpf_fuzzer\\ubpf_fuzzer_post_build` | `scripts\u002Fubpf_fuzzer_post_build\u002F` |\n\n### Build Utilities and Installers\n\n| Component | Target | Config Notes | Source |\n|-----------|--------|-------------|--------|\n| RPC interface | `idl\\rpc_interface` | All configs | `rpc_interface\u002F` |\n| NuGet package | `tools\\nuget` | All configs | `tools\u002Fnuget\u002F` |\n| Redist package | `tools\\redist-package` | NativeOnly\u002FRelease only (not Debug) | `tools\u002Fredist-package\u002F` |\n| Installer (WiX) | `installer\\ebpf-for-windows` | All configs | `installer\u002Febpf-for-windows\u002F` |\n\n## Common Build Patterns\n\nUse these when the user describes what area they're working on:\n\n| Working On | Targets to Build |\n|------------|-----------------|\n| API changes | `libs\\user\\api,dlls\\EbpfApi,tests\\api_test` |\n| bpf2c \u002F native code generation | `tools\\bpf2c,tests\\bpf2c_tests,tests\\sample` |\n| Kernel driver changes | `drivers\\EbpfCore,drivers\\netebpfext,tests\\unit_tests` |\n| Service changes | `libs\\user\\service,service\\ebpfsvc,tests\\ebpf_stress_tests_um` |\n| Execution context changes | `libs\\kernel\\execution_context_kernel,libs\\user\\execution_context_user,tests\\api_test` |\n| Network extension changes | `drivers\\netebpfext,tests\\netebpfext_unit` |\n| Verifier changes | `libs\\user\\prevail,tests\\unit_tests` |\n| Shared library changes | Rebuild all dependents — prefer full solution build |\n\n## bpf2c Expected Output Regeneration\n\nIf bpf2c output changes and `tests\\bpf2c_tests` expected files must be updated:\n\n1. Build `x64\\Debug`.\n2. Run:\n\n```powershell\n.\\scripts\\generate_expected_bpf2c_output.ps1 x64\\Debug\n```\n\n## Dependency Chain\n\nWhen building specific components, be aware of the dependency order:\n\n1. `tools\\setup_build` (build utilities — runs first)\n2. `libs\\kernel\\shared_kernel` \u002F `libs\\user\\shared_user` (fundamental utilities)\n3. `libs\\kernel\\runtime_kernel` \u002F `libs\\user\\runtime_user` (platform abstractions)\n4. `libs\\kernel\\execution_context_kernel` \u002F `libs\\user\\execution_context_user` (core eBPF execution)\n5. `drivers\\EbpfCore`, `drivers\\netebpfext` (kernel drivers)\n6. `libs\\user\\api`, `dlls\\EbpfApi` (user-mode APIs)\n7. Tests and tools\n\nMSBuild handles dependency resolution within the solution, so you typically only need to specify the top-level target(s) you want built.\n\n## Output Locations\n\nBuild artifacts are placed under:\n- `x64\\Debug\\` — Debug x64 builds\n- `x64\\Release\\` — Release x64 builds\n- `x64\\NativeOnlyDebug\\` — NativeOnly Debug builds\n- `x64\\NativeOnlyRelease\\` — NativeOnly Release builds\n- `ARM64\\Debug\\` — ARM64 Debug builds (if applicable)\n\n## Quieting Build Output\n\nFor targeted builds where you only need to see errors, use `\u002Fv:q \u002Fnologo`:\n\n```powershell\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:\"tools\\bpf2c\" \u002Fv:q \u002Fnologo\n```\n\nPipe through `| Select-Object -Last N` to see just the tail when checking for success\u002Ffailure.\n\n## Repository Initialization\n\nAfter cloning, changing submodule pointers, or resetting submodules, run the initialization script before building:\n\n```powershell\n# From solution root — initializes submodules, generates cmake projects, restores NuGet\n.\\scripts\\initialize_ebpf_repo.ps1\n\n# Or with ARM64\n.\\scripts\\initialize_ebpf_repo.ps1 -Architecture ARM64\n```\n\nThis script:\n1. Runs `git submodule update --init --recursive`\n2. Generates cmake projects for ebpf-verifier, Catch2, and ubpf in their respective `build\u002F` dirs\n3. Restores NuGet packages for the solution\n\n**IMPORTANT:** If cmake-generated project files are missing (e.g., `external\u002Febpf-verifier\u002Fbuild\u002Fprevail.vcxproj`), MSBuild will error with MSB3202. Run `initialize_ebpf_repo.ps1` to regenerate them.\n\n## Submodule Gotchas\n\n- `msbuild \u002Ft:clean` will fail if cmake-generated projects don't exist yet — run `initialize_ebpf_repo.ps1` first\n- `git stash` in the parent repo does NOT affect submodule working trees — stash separately in each submodule if needed\n- After resetting submodules (`git submodule update --init --recursive`), re-run `initialize_ebpf_repo.ps1`\n\n## BPF Program Compilation (clang → .o)\n\nWhen manually compiling BPF C programs with clang, use the full set of include paths\nfrom the `tests\\sample\\sample.vcxproj` CustomBuild rules.\n\n**Locate clang.exe** — use the first existing path (highest priority first):\n`packages\\llvm.tools\\clang.exe`, `\"$env:ProgramFiles\\LLVM\\bin\\clang.exe\"`,\n`\"$(& \"${env:ProgramFiles(x86)}\\Microsoft Visual Studio\\Installer\\vswhere.exe\" -latest -property installationPath)\\VC\\Tools\\Llvm\\bin\\clang.exe\"`\n\n```powershell\n# Standard sample programs (tests\\sample\\*.c)\n& '\u003Cclang-path>' -g -target bpf -O2 -Werror `\n  -Iinclude -Iexternal\\bpftool `\n  -Itests\\xdp -Itests\\socket -Itests\\sample\\ext\\inc -Itests\\include `\n  -c tests\\sample\\\u003Cname>.c -o x64\\Debug\\\u003Cname>.o\n\n# Undocked sample programs (tests\\sample\\undocked\\*.c) — add extra includes\n& '\u003Cclang-path>' -g -target bpf -O2 -Werror `\n  -Iinclude -Iexternal\\bpftool `\n  -Itests\\xdp -Itests\\socket -Itests\\sample\\ext\\inc -Itests\\include `\n  -Itests\\sample -Iundocked\\tests\\sample\\ext\\inc `\n  -c tests\\sample\\undocked\\\u003Cname>.c -o x64\\Debug\\\u003Cname>.o\n```\n\n**Common mistake:** Using only `-Iinclude` will fail for programs that include\n`socket_tests_common.h`, `xdp_common.h`, or `sample_ext_helpers.h`.\n","# Build eBPF for Windows\n\nBuild the eBPF for Windows solution or individual components using MSBuild.\n\n## When to Use\n\n- User asks to build, compile, rebuild, or clean the project\n- User asks to build a specific component (driver, library, tool, test, etc.)\n- User asks to restore NuGet packages\n- User asks to do a full or partial build with a specific configuration\n- After making code changes that need to be compiled\n\n## Environment Requirements\n\n- **Visual Studio Developer PowerShell** (required — regular PowerShell lacks build environment variables)\n- MSBuild from VS Build Tools\n- Must run from the **solution root directory** (`ebpf-for-windows.sln` location)\n\n## Build Instructions\n\n### Step 1: Determine What to Build\n\nAsk the user (or infer from context) what they want to build. Options:\n\n1. **Full solution** — build everything\n2. **Specific component(s)** — use the target map below to select `\u002Ft:` targets\n3. **Restore only** — just restore NuGet packages\n\n### Step 2: Determine Configuration and Platform\n\n| Parameter | Options | Default |\n|-----------|---------|---------|\n| Configuration | `Debug`, `Release`, `NativeOnlyDebug`, `NativeOnlyRelease`, `FuzzerDebug` | `Debug` |\n| Platform | `x64`, `ARM64` | `x64` |\n\nIf the user doesn't specify, use `Debug` and `x64`.\n\n### Step 3: Construct and Run the MSBuild Command\n\n**CRITICAL RULES:**\n- Always use the **solution file**: `msbuild ebpf-for-windows.sln` — never build `.vcxproj` files directly\n- Always run from the **solution root directory**\n- Use `\u002Fm` for parallel builds\n- For first-time or fresh builds, add `-Restore` to restore NuGet packages\n- For clean rebuilds, use `\u002Ft:\"target:clean,target\"` syntax\n\n#### Full Solution Build\n\n```powershell\n# Standard build\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64\n\n# With NuGet restore (first-time or after package changes)\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 -Restore\n\n# Clean the solution\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:clean\n\n# With static analysis\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Release \u002Fp:Platform=x64 \u002Fp:Analysis=True\n```\n\n#### Targeted Component Build\n\n```powershell\n# Single target\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:drivers\\EbpfCore\n\n# Multiple targets\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:\"drivers\\EbpfCore,drivers\\netebpfext,tests\\unit_tests\"\n\n# Clean + rebuild a target (use semicolon or comma separator)\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:\"tools\\bpf2c:Clean;tools\\bpf2c\"\n```\n\n### Step 4: Analyze Results\n\n- If the build succeeds, report success with the output path (e.g., `x64\\Debug\\`)\n- If the build fails, show the **first error(s)** and suggest fixes\n- Common issues:\n  - Missing NuGet packages → suggest adding `-Restore`\n  - Missing environment → suggest using Visual Studio Developer PowerShell\n  - Header\u002Flinker errors → suggest checking dependencies and rebuilding prerequisite targets\n\n## MSBuild Target Map\n\nUse this map to translate component names to MSBuild `\u002Ft:` targets.\n**Solution targets use solution folder paths, not filesystem paths.**\n\n### Drivers (Kernel Components)\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| EbpfCore (kernel execution context) | `drivers\\EbpfCore` | `ebpfcore\u002F` |\n| EbpfCore_Usersim (usersim variant) | `drivers\\EbpfCore_Usersim` | `ebpfcore\u002Fusersim\u002F` |\n| netebpfext (WFP network hooks) | `drivers\\netebpfext` | `netebpfext\u002Fsys\u002F` |\n| sample_ebpf_ext (sample extension) | `undocked\\drivers\\sample_ebpf_ext` | `undocked\u002Ftests\u002Fsample\u002Fext\u002Fdrv\u002F` |\n\n### DLLs and Services (User-Mode)\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| EbpfApi (libbpf-compatible API) | `dlls\\EbpfApi` | `ebpfapi\u002F` |\n| eBPFSvc (JIT\u002Fverification service) | `service\\ebpfsvc` | `ebpfsvc\u002F` |\n| ebpfnetsh (netsh plugin) | `dlls\\ebpfnetsh` | `tools\u002Fnetsh\u002F` |\n\n### Libraries\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| API library | `libs\\user\\api` | `libs\u002Fapi\u002F` |\n| Service library | `libs\\user\\service` | `libs\u002Fservice\u002F` |\n| Execution context (kernel) | `libs\\kernel\\execution_context_kernel` | `libs\u002Fexecution_context\u002Fkernel\u002F` |\n| Execution context (user) | `libs\\user\\execution_context_user` | `libs\u002Fexecution_context\u002Fuser\u002F` |\n| uBPF (kernel) | `libs\\kernel\\ubpf_kernel` | `libs\u002Fubpf\u002Fkernel\u002F` |\n| uBPF (user) | `libs\\user\\ubpf_user` | `libs\u002Fubpf\u002Fuser\u002F` |\n| Runtime (kernel) | `libs\\kernel\\runtime_kernel` | `libs\u002Fruntime\u002Fkernel\u002F` |\n| Runtime (user) | `libs\\user\\runtime_user` | `libs\u002Fruntime\u002Fuser\u002F` |\n| API common | `libs\\user\\api_common` | `libs\u002Fapi_common\u002F` |\n| Shared (kernel) | `libs\\kernel\\shared_kernel` | `libs\u002Fshared\u002Fkernel\u002F` |\n| Shared (user) | `libs\\user\\shared_user` | `libs\u002Fshared\u002Fuser\u002F` |\n| PE parse | `libs\\user\\pe-parse` | `libs\u002Fpe-parse\u002F` |\n| ELF spec | `libs\\user\\elf_spec` | `libs\u002Felf_spec\u002F` |\n| Store helper | `libs\\user\\ebpf_store_helper` | `libs\u002Fstore_helper\u002Fuser\u002F` |\n| Netsh static | `libs\\user\\netsh_static` | `libs\u002Febpfnetsh\u002F` |\n| PREVAIL verifier | `libs\\user\\prevail` | `external\u002Febpf-verifier\u002Fbuild\u002F` |\n| libbtf | `libs\\user\\libbtf` | `external\u002Febpf-verifier\u002Fbuild\u002Fexternal\u002Flibbtf\u002F` |\n| netebpfext (user) | `libs\\user\\netebpfext_user` | `netebpfext\u002Fuser\u002F` |\n| cxplat (kernel) | `libs\\kernel\\cxplat_winkernel` | `external\u002Fusersim\u002Fcxplat\u002F` |\n| cxplat (user) | `libs\\user\\cxplat_winuser` | `external\u002Fusersim\u002Fcxplat\u002F` |\n| usersim | `libs\\user\\usersim` | `external\u002Fusersim\u002Fsrc\u002F` |\n| usersim_dll_skeleton | `libs\\user\\usersim_dll_skeleton` | `external\u002Fusersim\u002Fusersim_dll_skeleton\u002F` |\n\n### Tools\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| bpf2c (native code generator) | `tools\\bpf2c` | `tools\u002Fbpf2c\u002F` |\n| bpftool | `tools\\bpftool` | `tools\u002Fbpftool\u002F` |\n| export_program_info | `tools\\export_program_info` | `tools\u002Fexport_program_info\u002F` |\n| dnsflood | `tools\\dnsflood` | `tools\u002Fdnsflood\u002F` |\n| port_quota | `tools\\port_quota` | `tools\u002Fport_quota\u002F` |\n| port_leak | `tools\\port_leak` | `tools\u002Fport_leak\u002F` |\n| Setup build | `tools\\setup_build` | `scripts\u002Fsetup_build\u002F` |\n| OneBranch | `tools\\onebranch` | `tools\u002Fonebranch\u002F` |\n| export_program_info_sample | `undocked\\tools\\export_program_info_sample` | `undocked\u002Ftools\u002Fexport_program_info_sample\u002F` |\n\n### Tests\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| API tests | `tests\\api_test` | `tests\u002Fapi_test\u002F` |\n| Unit tests | `tests\\unit_tests` | `tests\u002Funit\u002F` |\n| bpf2c tests | `tests\\bpf2c_tests` | `tests\u002Fbpf2c_tests\u002F` |\n| Performance tests | `tests\\performance` | `tests\u002Fperformance\u002F` |\n| Socket tests | `tests\\socket_tests` | `tests\u002Fsocket\u002F` |\n| Cilium tests | `tests\\cilium_tests` | `tests\u002Fcilium\u002F` |\n| Connect redirect tests | `tests\\connect_redirect_tests` | `tests\u002Fconnect_redirect\u002F` |\n| Common tests | `tests\\common_tests` | `tests\u002Flibs\u002Fcommon\u002F` |\n| netebpfext unit tests | `tests\\netebpfext_unit` | `tests\u002Fnetebpfext_unit\u002F` |\n| Sample programs | `tests\\sample` | `tests\u002Fsample\u002F` |\n| bpftool tests | `installer\\bpftool_tests` | `tests\u002Fbpftool_tests\u002F` |\n| bpf2c plugin | `tests\\bpf2c_plugin` | `tests\u002Fbpf2c_plugin\u002F` |\n| Test utilities | `tests\\test_util` | `tests\u002Flibs\u002Futil\u002F` |\n| Sample ext app | `tests\\sample_ext_app` | `tests\u002Fsample\u002Fext\u002Fapp\u002F` |\n| TCP\u002FUDP listener | `tests\\tcp_udp_listener` | `tests\u002Ftcp_udp_listener\u002F` |\n| export_program_info test | `tests\\export_program_info_test` | `tests\u002Fexport_program_info_test\u002F` |\n| Restart test controller | `tests\\ebpf_restart_test_controller` | `tests\u002Fstress\u002Frestart_test_controller\u002F` |\n| Restart test helper | `tests\\ebpf_restart_test_helper` | `tests\u002Fstress\u002Frestart_test_helper\u002F` |\n\n### Stress Tests and Fuzzers\n\nStress tests build in Debug\u002FRelease. Fuzzers **require `FuzzerDebug` configuration**.\n\n| Component | Target | Config | Source |\n|-----------|--------|--------|--------|\n| Stress tests (user-mode) | `tests\\ebpf_stress_tests_um` | Debug | `tests\u002Fstress\u002Fum\u002F` |\n| Stress tests (kernel-mode) | `tests\\ebpf_stress_tests_km` | Debug | `tests\u002Fstress\u002Fkm\u002F` |\n| Execution context fuzzer | `tests\\libfuzzer\\execution_context_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fexecution_context\u002F` |\n| bpf2c fuzzer | `tests\\libfuzzer\\bpf2c_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fbpf2c_fuzzer\u002F` |\n| Verifier fuzzer | `tests\\libfuzzer\\verifier_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fverifier_fuzzer\u002F` |\n| Core helper fuzzer | `tests\\libfuzzer\\core_helper_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fcore_helper_fuzzer\u002F` |\n| netebpfext fuzzer | `tests\\libfuzzer\\netebpfext_fuzzer` | FuzzerDebug | `tests\u002Flibfuzzer\u002Fnetebpfext_fuzzer\u002F` |\n\n### External Dependencies\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| Catch2 | `tests\\Catch2` | `external\u002FCatch2\u002F` |\n| Catch2WithMain | `tests\\Catch2WithMain` | `external\u002FCatch2\u002F` |\n\n> **Note:** The PREVAIL verifier for normal builds is `libs\\user\\prevail`. The `ubpf_fuzzer\\*` targets\n> (ebpfverifier, ubpf, libbtf, win-c, ubpf_fuzzer, ubpf_fuzzer_post_build) are only built in\n> `FuzzerDebug` configuration and will fail with MSB4057 errors in Debug\u002FRelease.\n\n### ubpf_fuzzer Targets (FuzzerDebug Only)\n\nThese targets only build in **`FuzzerDebug`** configuration:\n\n| Component | Target | Source |\n|-----------|--------|--------|\n| ebpfverifier (fuzzer copy) | `ubpf_fuzzer\\ebpfverifier` | `external\u002Fubpf\u002Fbuild_fuzzer\u002Fexternal\u002Febpf-verifier\u002F` |\n| ubpf (fuzzer copy) | `ubpf_fuzzer\\ubpf` | `external\u002Fubpf\u002Fbuild_fuzzer\u002Fvm\u002F` |\n| ubpf_fuzzer | `ubpf_fuzzer\\ubpf_fuzzer` | `external\u002Fubpf\u002Fbuild_fuzzer\u002Flibfuzzer\u002F` |\n| libbtf (fuzzer copy) | `ubpf_fuzzer\\libbtf` | `external\u002Fubpf\u002Fbuild_fuzzer\u002F...\u002Flibbtf\u002F` |\n| win-c (fuzzer copy) | `ubpf_fuzzer\\win-c` | `external\u002Fubpf\u002Fbuild_fuzzer\u002F...\u002Fwin-c\u002F` |\n| ubpf_fuzzer_post_build | `ubpf_fuzzer\\ubpf_fuzzer_post_build` | `scripts\u002Fubpf_fuzzer_post_build\u002F` |\n\n### Build Utilities and Installers\n\n| Component | Target | Config Notes | Source |\n|-----------|--------|-------------|--------|\n| RPC interface | `idl\\rpc_interface` | All configs | `rpc_interface\u002F` |\n| NuGet package | `tools\\nuget` | All configs | `tools\u002Fnuget\u002F` |\n| Redist package | `tools\\redist-package` | NativeOnly\u002FRelease only (not Debug) | `tools\u002Fredist-package\u002F` |\n| Installer (WiX) | `installer\\ebpf-for-windows` | All configs | `installer\u002Febpf-for-windows\u002F` |\n\n## Common Build Patterns\n\nUse these when the user describes what area they're working on:\n\n| Working On | Targets to Build |\n|------------|-----------------|\n| API changes | `libs\\user\\api,dlls\\EbpfApi,tests\\api_test` |\n| bpf2c \u002F native code generation | `tools\\bpf2c,tests\\bpf2c_tests,tests\\sample` |\n| Kernel driver changes | `drivers\\EbpfCore,drivers\\netebpfext,tests\\unit_tests` |\n| Service changes | `libs\\user\\service,service\\ebpfsvc,tests\\ebpf_stress_tests_um` |\n| Execution context changes | `libs\\kernel\\execution_context_kernel,libs\\user\\execution_context_user,tests\\api_test` |\n| Network extension changes | `drivers\\netebpfext,tests\\netebpfext_unit` |\n| Verifier changes | `libs\\user\\prevail,tests\\unit_tests` |\n| Shared library changes | Rebuild all dependents — prefer full solution build |\n\n## bpf2c Expected Output Regeneration\n\nIf bpf2c output changes and `tests\\bpf2c_tests` expected files must be updated:\n\n1. Build `x64\\Debug`.\n2. Run:\n\n```powershell\n.\\scripts\\generate_expected_bpf2c_output.ps1 x64\\Debug\n```\n\n## Dependency Chain\n\nWhen building specific components, be aware of the dependency order:\n\n1. `tools\\setup_build` (build utilities — runs first)\n2. `libs\\kernel\\shared_kernel` \u002F `libs\\user\\shared_user` (fundamental utilities)\n3. `libs\\kernel\\runtime_kernel` \u002F `libs\\user\\runtime_user` (platform abstractions)\n4. `libs\\kernel\\execution_context_kernel` \u002F `libs\\user\\execution_context_user` (core eBPF execution)\n5. `drivers\\EbpfCore`, `drivers\\netebpfext` (kernel drivers)\n6. `libs\\user\\api`, `dlls\\EbpfApi` (user-mode APIs)\n7. Tests and tools\n\nMSBuild handles dependency resolution within the solution, so you typically only need to specify the top-level target(s) you want built.\n\n## Output Locations\n\nBuild artifacts are placed under:\n- `x64\\Debug\\` — Debug x64 builds\n- `x64\\Release\\` — Release x64 builds\n- `x64\\NativeOnlyDebug\\` — NativeOnly Debug builds\n- `x64\\NativeOnlyRelease\\` — NativeOnly Release builds\n- `ARM64\\Debug\\` — ARM64 Debug builds (if applicable)\n\n## Quieting Build Output\n\nFor targeted builds where you only need to see errors, use `\u002Fv:q \u002Fnologo`:\n\n```powershell\nmsbuild ebpf-for-windows.sln \u002Fm \u002Fp:Configuration=Debug \u002Fp:Platform=x64 \u002Ft:\"tools\\bpf2c\" \u002Fv:q \u002Fnologo\n```\n\nPipe through `| Select-Object -Last N` to see just the tail when checking for success\u002Ffailure.\n\n## Repository Initialization\n\nAfter cloning, changing submodule pointers, or resetting submodules, run the initialization script before building:\n\n```powershell\n# From solution root — initializes submodules, generates cmake projects, restores NuGet\n.\\scripts\\initialize_ebpf_repo.ps1\n\n# Or with ARM64\n.\\scripts\\initialize_ebpf_repo.ps1 -Architecture ARM64\n```\n\nThis script:\n1. Runs `git submodule update --init --recursive`\n2. Generates cmake projects for ebpf-verifier, Catch2, and ubpf in their respective `build\u002F` dirs\n3. Restores NuGet packages for the solution\n\n**IMPORTANT:** If cmake-generated project files are missing (e.g., `external\u002Febpf-verifier\u002Fbuild\u002Fprevail.vcxproj`), MSBuild will error with MSB3202. Run `initialize_ebpf_repo.ps1` to regenerate them.\n\n## Submodule Gotchas\n\n- `msbuild \u002Ft:clean` will fail if cmake-generated projects don't exist yet — run `initialize_ebpf_repo.ps1` first\n- `git stash` in the parent repo does NOT affect submodule working trees — stash separately in each submodule if needed\n- After resetting submodules (`git submodule update --init --recursive`), re-run `initialize_ebpf_repo.ps1`\n\n## BPF Program Compilation (clang → .o)\n\nWhen manually compiling BPF C programs with clang, use the full set of include paths\nfrom the `tests\\sample\\sample.vcxproj` CustomBuild rules.\n\n**Locate clang.exe** — use the first existing path (highest priority first):\n`packages\\llvm.tools\\clang.exe`, `\"$env:ProgramFiles\\LLVM\\bin\\clang.exe\"`,\n`\"$(& \"${env:ProgramFiles(x86)}\\Microsoft Visual Studio\\Installer\\vswhere.exe\" -latest -property installationPath)\\VC\\Tools\\Llvm\\bin\\clang.exe\"`\n\n```powershell\n# Standard sample programs (tests\\sample\\*.c)\n& '\u003Cclang-path>' -g -target bpf -O2 -Werror `\n  -Iinclude -Iexternal\\bpftool `\n  -Itests\\xdp -Itests\\socket -Itests\\sample\\ext\\inc -Itests\\include `\n  -c tests\\sample\\\u003Cname>.c -o x64\\Debug\\\u003Cname>.o\n\n# Undocked sample programs (tests\\sample\\undocked\\*.c) — add extra includes\n& '\u003Cclang-path>' -g -target bpf -O2 -Werror `\n  -Iinclude -Iexternal\\bpftool `\n  -Itests\\xdp -Itests\\socket -Itests\\sample\\ext\\inc -Itests\\include `\n  -Itests\\sample -Iundocked\\tests\\sample\\ext\\inc `\n  -c tests\\sample\\undocked\\\u003Cname>.c -o x64\\Debug\\\u003Cname>.o\n```\n\n**Common mistake:** Using only `-Iinclude` will fail for programs that include\n`socket_tests_common.h`, `xdp_common.h`, or `sample_ext_helpers.h`.\n",{"name":5,"description":7},"main","6b926d6a1817d53447fe7ebad4553d229a65db15",".github\u002Fskills\u002Fbuild-ebpf",311,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-13 23:44:23",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add microsoft\u002Febpf-for-windows --skill build-ebpf",{"tool":43,"command":44},"bunx","bunx skills add microsoft\u002Febpf-for-windows --skill build-ebpf",{"tool":46,"command":47},"pnpm","pnpm dlx skills add microsoft\u002Febpf-for-windows --skill build-ebpf","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbuild-ebpf\u002FSKILL.md",true,[],[52,62,70,89,107,119],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":23},"01M69BN8YQKAE51YKPGM1P5D8Y","verify-prevail","Diagnose eBPF program verification failures from the PREVAIL verifier. Use this skill for linux-compatible eBPF programs verified in the standalone PREVAIL repo (external\u002Febpf-verifier). For programs using Windows-specific features (bpf2c pipeline, Windows helpers, ebpf-for-windows headers), use the 'verify-bpf' skill instead.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fverify-prevail\u002FSKILL.md",[],[59,60,21,61],"verify prevail","linux","diagnose",{"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":68,"publishedAt":23},"01M69BN7D4BD65ADJY98YDHE0V","verify-bpf","Build and verify eBPF programs for the ebpf-for-windows project. Use this skill when asked to compile a .c BPF source to .o, verify a .o ELF file with bpf2c, or diagnose verification failures. Covers the full clang→bpf2c pipeline.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fverify-bpf\u002FSKILL.md",[],[69,21,61],"verify bpf",{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":23},"01M69BN58F1ZWDSCW6S82KV161","pr-triage-report","Generate a Markdown triage report for open, non-draft pull requests in microsoft\u002Febpf-for-windows, including CI, freshness, sign-offs, and next-owner routing.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpr-triage-report\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[82,83,84,85,9,86,87,21,88],"pr","report","triage","pr triage report","routing","generate","pull requests",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":103,"publishedAt":23},"01M69BN3FC5S02AX8H7TP0HRJB","debug-crash-dump","Download and analyze crash dumps from CI failures using CDB\u002FWinDbg. Use this skill when asked to debug crashes, analyze dump files, set up WinDbg\u002FCDB, investigate fault injection failures, or start mcp-windbg.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdebug-crash-dump\u002FSKILL.md",[95,100],{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":101,"categoryName":102,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000030","开发工程师",[104,105,106],"debug crash dump","debug","MCP",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":23},"01M69BN1TSPVSGK8P5ARTGPJF8","build-prevail","Build and test the PREVAIL verifier (external\u002Febpf-verifier) standalone. Use this skill when asked to build, test, or iterate on the PREVAIL verifier, run YAML verification tests, or work with the verifier's cmake build system.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fbuild-prevail\u002FSKILL.md",[],[114,115,116,117,118],"build prevail","run","cmake","test","build and test",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":23},"01M69BMY86HY0592TPA6B5VCAZ","adversarial-branch-review","Perform a deep adversarial review of C\u002FC++ changes between an active branch and a baseline branch in ebpf-for-windows. Produce both a detailed review report and a point-by-point fix list.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Febpf-for-windows\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fadversarial-branch-review\u002FSKILL.md",[],[126,127,83,128,21],"review","adversarial branch review","adversarial review"]