evaluate-new-port

bởi microsoft

Kiểm tra một cổng vcpkg cục bộ. Đọc siêu dữ liệu cổng và công thức xây dựng, cài đặt cổng, kiểm tra các nguồn đã giải nén và tệp đã cài đặt, đồng thời tạo báo cáo…

npx skills add https://github.com/microsoft/vcpkg --skill evaluate-new-port

Evaluate New Port

When to Use

  • Reviewing a newly added or substantially updated port
  • Auditing whether a port's declared license metadata matches what it installs
  • Checking for vendored third-party code or optional dependencies that are not modeled in vcpkg.json
  • Looking for packaging or review issues after a real local install

Overview

This skill takes a single port name, reads the port's metadata and build recipe, performs a clean local install, and writes a structured audit report. The audit focuses on:

  • Declared license metadata from ports/{port-name}/vcpkg.json, including feature-scoped declarations
  • Build invocation and feature toggles from ports/{port-name}/portfile.cmake
  • Real build output after vcpkg x-ci-clean and vcpkg install {port-name}
  • Extracted source tree under buildtrees/{port-name}/src
  • Installed package contents under packages/{port-name}_{target-triplet}
  • Code review suggestions for the port's packaging logic and metadata

If the install reports that the port is unsupported on the current platform or triplet, stop there and recommend a more appropriate platform instead of continuing the audit.

Required Inputs

  • A valid port name present under ports/{port-name}

Detailed Workflow

Step 1: Read the Port Metadata

Open these files first:

  • ports/{port-name}/vcpkg.json
  • ports/{port-name}/portfile.cmake

Extract at least the following:

From vcpkg.json:

  • top-level license, if present
  • any feature-scoped license declarations, including explicit null
  • homepage
  • features
  • dependencies
  • supports, if present

From portfile.cmake:

  • The primary build helper used (vcpkg_cmake_configure, vcpkg_configure_make, vcpkg_cmake_build, Meson helpers, raw cmake, etc.)
  • Feature-to-build-option mappings
  • Explicit enable/disable flags for optional upstream components
  • Any platform guards, fatal errors, or unsupported conditions
  • Any bundling, patching, or file-pruning logic relevant to installed content

Step 2: Clean the Local Working State

Run the repository-local vcpkg executable from the repository root:

Windows:

.\vcpkg.exe x-ci-clean

Linux/macOS:

./vcpkg x-ci-clean

Do not skip this step. The audit should be based on a fresh source extraction and package install.

Step 3: Install the Port

Run a normal install of the requested port:

Windows:

.\vcpkg.exe install {port-name}

Linux/macOS:

./vcpkg install {port-name}

Capture the output. If it contains an unsupported-platform message, stop the workflow and report:

  1. That the current platform cannot evaluate this port meaningfully
  2. The reason quoted from the install output or portfile.cmake
  3. A suggested alternate platform, chosen from evidence in supports, platform guards, or fatal-error text

Common examples:

  • only supports Windows → suggest Windows
  • only supports Linux → suggest Linux
  • only supports x64 and x86 Windows → suggest an x64 Windows host
  • Building for {TARGET_TRIPLET} on {HOST_TRIPLET} is unsupported → suggest the native target platform instead of cross-building

If the install succeeds, continue.

If the install hit a binary cache and you need to rerun the port to force a local rebuild for inspection, remove and reinstall the affected port directly rather than running x-ci-clean followed by install --no-binarycaching. That preserves cache hits for unedited dependencies while still rebuilding the port under review.

Step 4: Determine the Installed Triplet Directory

Find the installed package directory under:

packages/{port-name}_{target-triplet}

Use the package directory that was created by the install you just ran. The triplet is normally the system default target triplet (for example x64-windows, arm64-windows, or x64-linux).

If multiple matching directories exist, prefer the one whose timestamp matches the current install output. Record the chosen triplet in the report.

Step 5: Audit the Extracted Source Tree

Inspect buildtrees/{port-name}/src and identify the extracted source directory or directories for the current build. Review them for vendoring and undeclared optional dependencies.

5a. Vendored Dependencies

Look for signs of bundled third-party code, such as directories or files named:

  • third_party
  • third-party
  • vendor
  • vendors
  • extern
  • external
  • deps
  • dependencies
  • subprojects
  • nested copies of well-known libraries

For each candidate:

  • identify the bundled project if possible
  • determine whether it is built or installed
  • check whether the same dependency is already modeled in vcpkg.json
  • note whether the portfile patches it out, replaces it with a vcpkg dependency, or leaves it vendored

5b. Optional Dependencies Not Explicitly Controlled

Look for optional integrations that are present upstream but not clearly controlled in packaging. Sources of evidence include:

  • find_package(...)
  • pkg_check_modules(...)
  • option(...)
  • WITH_*, ENABLE_*, USE_*, BUILD_*
  • Meson feature or dependency(...)
  • Autotools --with-* / --enable-*

Flag an issue when an optional dependency:

  • appears in upstream build logic,
  • is not declared in vcpkg.json, and
  • is not explicitly enabled or disabled by portfile.cmake

The point is to find dependencies that may be auto-detected from the host environment, leading to non-reproducible builds.

Step 6: Audit Installed Content Against the Declared License Metadata

Inspect the package contents under packages/{port-name}_{target-triplet}. Focus on:

  • share/{port-name}/copyright
  • installed license files
  • headers, sources, examples, tools, or assets originating from bundled third-party code
  • any embedded notices for code under additional licenses

Treat explicit "license": null as intentional metadata meaning "no SPDX expression is provided here; inspect the installed copyright file." Do not report that case as missing metadata by itself.

Flag content when:

  • the installed files include third-party components under licenses not covered by the declared license metadata,
  • multiple upstream licenses appear to require a more precise SPDX expression,
  • or the package installs bundled code whose license is absent from the declared metadata and copyright file

Do not assume every extra notice is a bug. Record the evidence and explain whether it appears compatible, incomplete, or suspicious.

Step 7: Review the Portfile for Packaging Suggestions

While auditing ports/{port-name}/portfile.cmake, look for common review items such as:

  • missing explicit disable flags for tests, docs, examples, benchmarks, or tools
  • optional dependencies that should be feature-gated
  • vendored libraries that could be replaced with vcpkg dependencies
  • install steps that might ship unnecessary files
  • missing cleanup of debug-only or duplicate artifacts
  • support restrictions that should move into supports in vcpkg.json
  • license metadata that is too broad or incomplete after considering top-level and feature-scoped declarations

Only report suggestions supported by evidence from the files or the install result.

Output Requirements

Generate a markdown report with these sections:

  1. Port Summary
  2. Declared Metadata
  3. Build Invocation Summary
  4. Install Result
  5. Vendored Dependencies
  6. Optional Dependency Risks
  7. License / Installed Content Findings
  8. Other Port Review Suggestions
  9. Recommended Follow-ups

Be specific. Cite file paths and brief snippets when they support a finding.

If there are no findings for a section, write None found instead of omitting the section.

Suggested Report Template

See references/report-template.md.

Execution Notes

  • Run from the repository root
  • Prefer repository-local paths in all findings
  • Do not continue source/package inspection after an unsupported install result
  • Base conclusions on the actual installed package directory created by this run
  • Keep the final report focused on actionable review feedback rather than restating raw command output

Thêm skills từ microsoft

oss-growth
microsoft
Cá tính tăng trưởng OSS
agent-framework-azure-ai-py
microsoft
Xây dựng các tác nhân Azure AI Foundry bằng SDK Python của Microsoft Agent Framework (agent-framework-azure-ai). Sử dụng khi tạo các tác nhân bền vững với AzureAIAgentsProvider, sử dụng các công cụ được lưu trữ (trình thông dịch mã, tìm kiếm tệp, tìm kiếm web), tích hợp máy chủ MCP, quản lý chuỗi hội thoại hoặc triển khai phản hồi phát trực tuyến. Bao gồm các công cụ hàm, đầu ra có cấu trúc và các tác nhân đa công cụ.
development
airunway-aks-setup
microsoft
Thiết lập AI Runway trên AKS — từ cụm trống đến mô hình đang chạy. Bao gồm xác minh cụm, cài đặt controller, đánh giá GPU, thiết lập nhà cung cấp và triển khai đầu tiên. KHI NÀO: "thiết lập AI Runway", "onboard cụm AKS", "cài đặt AI Runway", "thiết lập airunway", "triển khai mô hình lên AKS", "suy luận GPU trên AKS", "thiết lập KAITO trên AKS", "chạy LLM trên AKS", "vLLM trên AKS", "thiết lập phục vụ mô hình trên AKS", "AI Runway controller".
devops
appinsights-instrumentation
microsoft
Hướng dẫn để instrument các ứng dụng web với Azure Application Insights. Cung cấp các mẫu telemetry, thiết lập SDK, và tài liệu tham khảo cấu hình. KHI NÀO: cách instrument ứng dụng, App Insights SDK, các mẫu telemetry, App Insights là gì, hướng dẫn Application Insights, ví dụ instrumentation, các phương pháp tốt nhất APM.
devops
applicationinsights-web-ts
microsoft
Instrument các ứng dụng trình duyệt/web bằng SDK JavaScript Application Insights (@microsoft/applicationinsights-web). Dùng cho Real User Monitoring (RUM) — lượt xem trang, nhấp chuột, phụ thuộc AJAX/fetch, ngoại lệ, sự kiện tùy chỉnh và dấu vết tác nhân GenAI phía trình duyệt tương quan với dấu vết OpenTelemetry phía backend. Bao gồm thiết lập SDK Loader Script và npm, tiện ích mở rộng framework (React, React Native, Angular), Click Analytics, trình khởi tạo telemetry và quy ước ngữ nghĩa OTel GenAI cho các span tác nhân/công cụ/mô hình phát ra từ trình duyệt.
devops
azure-ai-anomalydetector-java
microsoft
Xây dựng ứng dụng phát hiện bất thường với Azure AI Anomaly Detector SDK cho Java. Sử dụng khi triển khai phát hiện bất thường đơn biến/đa biến, phân tích chuỗi thời gian hoặc giám sát hỗ trợ AI.
development
azure-ai-language-conversations-py
microsoft
Triển khai Conversational Language Understanding (CLU) bằng SDK Python azure-ai-language-conversations. Sử dụng khi làm việc với ConversationAnalysisClient để phân tích ý định và thực thể trong hội thoại, xây dựng tính năng NLP, hoặc tích hợp hiểu ngôn ngữ vào ứng dụng.
development
azure-ai-ml-py
microsoft
Azure Machine Learning SDK v2 cho Python. Dùng cho không gian làm việc ML, công việc, mô hình, tập dữ liệu, tính toán và quy trình. Kích hoạt: "azure-ai-ml", "MLClient", "không gian làm việc", "đăng ký mô hình", "công việc đào tạo", "tập dữ liệu".
development