VMware Pilot

io.github.vmware-skills由 GitHub 帳號 vmware-skills 發布v2.4.1更新於 Nov 1, 2026

Multi-step workflow orchestration for VMware MCP skills with approval gates and rollback.

發布方自己的服務:QuickBooks Connector by Meridian

概覽

AI 產生的概覽

把 VMware 多步驟操作編排成具備狀態保存、審批關卡、稽核紀錄與明確回滾的工作流程。

可以做什麼
  • 設計與編輯工作流程:把目標轉成草稿、修改步驟、確認草稿,或依步驟清單與範本建立
  • 檢視可用積木:列出技能目錄以及內建與自訂工作流程範本
  • 執行前檢查:對規劃中的工作流程做結構驗證,並查看狀態、差異報告與稽核日誌
  • 執行與把關:推進工作流程、在審批關卡暫停、核准或取消
  • 復原操作:先預覽影響範圍,再回滾已記錄為成功的步驟
適用情境
適合需要執行多步驟 VMware 維運(例如複製-測試-審批-提交、事件應變)的情境,希望每一步都能被檢視、受審批關卡約束並留下稽核紀錄,而不是臨時直接操作。它本身只是協調器,需搭配它所驅動的 VMware 技能伺服器才有意義。
執行需求
以 Python 套件透過 uv tool install 或 uvx 在本機以 stdio 執行。需安裝配套技能伺服器(vmware-aiops、vmware-monitor、vmware-storage、vmware-vks、vmware-nsx、vmware-aria、vmware-avi 等),步驟才能真正執行。自行執行步驟需加 --dispatch 或設定 VMWARE_PILOT_DISPATCH=stdio;可選的 HTTPS 服務需要憑證、私鑰與 bearer 權杖。清單未宣告任何憑證。
安裝前請注意
13 個工具中有 9 個是寫入操作:建立、確認、執行、核准、取消與回滾工作流程,且回滾是盡力而為、絕不自動執行。未啟用 --dispatch 時由助理自行執行回傳的步驟,破壞性步驟是否遵守關卡取決於代理。可選 HTTPS 模式需要 bearer 權杖,且所有呼叫者都以該伺服器自身的平台帳號行事,應依權限層級分別部署端點。工具暴露限制並非授權控制。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 VMware Pilot,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

VMware Pilot

For a read-only check of this skill with your model and agent host, use the shared model-fit self-test in the marketplace root.

Author: Wei Zhou, VMware by Broadcom — [email protected] This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.

English | 中文

Multi-step workflow orchestration for VMware MCP skills — state machine, approval gates, audit trail.

Companion skills handle everything else:

SkillScopeInstall
vmware-aiopsVM lifecycle, deployment, guest ops, clusteruv tool install vmware-aiops
vmware-monitorRead-only: inventory, health, alarms, eventsuv tool install vmware-monitor
vmware-storageDatastores, iSCSI, vSAN managementuv tool install vmware-storage
vmware-vksTanzu Namespaces, TKC cluster lifecycleuv tool install vmware-vks
vmware-nsxNSX networking: segments, gateways, NATuv tool install vmware-nsx-mgmt
vmware-nsx-securityDFW firewall rules, security groupsuv tool install vmware-nsx-security
vmware-ariaAria Ops: metrics, alerts, capacityuv tool install vmware-aria
vmware-aviAVI load balancing, pool management, AKO K8s opsuv tool install vmware-avi

Install

bash
uv tool install vmware-pilotvmware-pilot mcp          # start the MCP server (stdio)

Offline / Air-Gapped Install (from source)

This project uses the modern PEP 517 build system (hatchling), so there is no setup.py by design — that is expected, not a missing file. If you cloned the source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and cannot do an editable (-e) install with a non-setuptools backend. Editable mode is a developer convenience, not needed to run the tool — do one of:

bash
# From the source tree — a normal (non-editable) install builds a wheel:pip install .              # NOT  pip install -e .
# ...or upgrade pip first, and editable works too:pip install --upgrade pip && pip install -e .

For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:

bash
# On a connected machine, collect this package + its dependencies as wheels:pip wheel . -w dist        # → dist/*.whl   (or: uv build, for just this package)
# Copy dist/ to the air-gapped host, then install offline:pip install --no-index --find-links dist vmware-pilot

MCP Tools (13 — 4 read, 9 write)

ToolDescription
get_skill_catalogList all available skills and tools for workflow design
list_workflowsList built-in and custom templates
review_workflowSanity-check a planned workflow before execution
design_workflowNatural language goal → draft workflow
update_draftEdit draft workflow steps
confirm_draftFinalize draft → ready to execute
create_workflow_from_templateCreate and save a workflow from a template (not a dry run), returns workflow_id
create_workflowCreate custom workflow from step list (refused if a destructive step has no approval gate before it)
run_workflowExecute workflow, pauses at approval gates
get_workflow_statusQuery state + diff report + audit log
approveHuman approval, continue execution. Refused while steps before the gate are not_executed, until acknowledge_not_executed=True says you ran them
rollbackExplicit, best-effort undo of steps pilot recorded as succeeded — never automatic. Previews (blast_radius) unless confirm=True
cancel_workflowCancel a workflow — move it to the terminal CANCELLED state. Previews (blast_radius) unless confirm=True

Built-in Templates (15)

n is the number of VMs (or drift items); ranges depend on which optional parameters are set. clone_and_test needs snapshot_name (the snapshot to clone from), resizes staging while it is powered off, and has 8 steps when change_spec is a guest command (an extra gate before it runs in staging). investigate_alert's approvals are synthesis checkpoints; its steps are all reads. See skills/vmware-pilot/references/templates.md for parameters and steps.

TemplateStepsApprovalSkills Used
clone_and_test7-8Yesaiops, monitor
incident_response4Yesmonitor, aiops
investigate_alert4 (8 with deep_dive)Yesmonitor, aria
plan_and_approve3Yesaiops
compliance_scan1-3Nomonitor, aria
network_segment_setup3-6Yesnsx, nsx-security
vks_cluster_deploy5Yesvks
rolling_restart2+3nYesaiops, monitor
capacity_expansion5Yesaria, aiops, monitor
disaster_recovery5Yesaiops, monitor, nsx
patch_deployment1+3nYesaiops, monitor
storage_expansion6Yesstorage
baseline_capture1-5Nomonitor, nsx, storage
baseline_audit1-5Nomonitor, nsx, storage, aria
baseline_remediate3+nYesvaries

Upgrading to 2.0

2.0 renames one MCP tool: plan_workflow → create_workflow_from_template. It always created and saved a workflow from a template (it is a write, not a dry run); the new name says so and sets it apart from create_workflow, which saves your own step list. Parameters and results are unchanged, and so are the CLI commands. The skill catalog also follows vmware-vks's renames (get_supervisor_kubeconfig → issue_supervisor_kubeconfig, get_tkc_kubeconfig → issue_tkc_kubeconfig). Workflows saved with the old names are translated when loaded. If an agent prompt, script or ~/.vmware/rules.yaml names plan_workflow, update it. Requires vmware-policy ≥ 1.19.0. Details: RELEASE_NOTES.md.

MCP Configuration

json
{  "mcpServers": {    "vmware-pilot": {      "command": "vmware-pilot",      "args": ["mcp"]    }  }}

Fallback: {"command": "uvx", "args": ["--from", "vmware-pilot", "vmware-pilot-mcp"]} still works, but uvx re-resolves against PyPI on every start and fails behind a TLS-inspecting corporate proxy (invalid peer certificate: UnknownIssuer). The installed entry point above touches the network zero times; set UV_NATIVE_TLS=true if you must use uvx.

Pilot runs the steps itself: --dispatch

By default pilot executes nothing: run_workflow returns each step in pending_dispatch and your agent performs it. Add --dispatch (or set VMWARE_PILOT_DISPATCH=stdio) and pilot runs each step itself, in that skill's own MCP server (vmware-<skill>-mcp, which must be installed), so the skill's policy rules, confirmation gate and audit apply as usual. Nothing after an approval gate runs before approve, and workflows reach completed.

json
{"mcpServers": {"vmware-pilot": {"command": "vmware-pilot", "args": ["mcp", "--dispatch"]}}}

stdio only: pilot refuses to start with --dispatch and --transport https/http (the skill servers it starts would have no caller identity, so roles could not apply). A step that takes longer than VMWARE_PILOT_DISPATCH_TIMEOUT seconds (default 1800) is recorded interrupted — its effect is unknown — and rollback waits for you to check it. run_workflow and approve take as long as the steps they run: set your MCP client's tool timeout above your longest step. If a call does time out, Pilot carries on and answers nothing else until the step ends; then get_workflow_status shows the outcome. Never perform those steps yourself.

Remote access (HTTPS) and limiting tools

By default vmware-pilot mcp speaks stdio to one local client and offers every tool. Two options change that (vmware-policy ≥ 1.21.0).

Serve over HTTPS so clients on other machines can connect. Every caller needs a bearer token:

bash
vmware-audit token create alice          # prints the token once; give it to alicevmware-audit token list                  # names onlyvmware-audit token revoke alice          # refused from its next request, no restartvmware-pilot mcp --transport https --host 0.0.0.0 --port 8443 \    --cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \    --public-name mcp.example.com

Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):

bash
claude mcp add --transport http vmware-pilot https://mcp.example.com:8443/mcp \    --header "Authorization: Bearer $VMWARE_MCP_TOKEN"
json
{  "mcpServers": {    "vmware-pilot": {      "type": "http",      "url": "https://mcp.example.com:8443/mcp",      "headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }    }  }}
  • The server will not start without a token, refuses Host/Origin values outside --public-name, and checks before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.
  • Behind a TLS-terminating reverse proxy on the same machine use --transport http --host 127.0.0.1 --public-name mcp.example.com and pass the Authorization header through.
  • Behind a load balancer or gateway on another machine, keep --transport https (a self-signed certificate is fine), list in --public-name the host name the balancer sends as Host, and have it forward Authorization. Its health probe can use GET /healthz, which needs no token and returns only {"status": "ok"} (vmware-policy ≥ 1.23.0).
  • Send traceparent or X-Request-ID with each request to have it stored on the audit row; vmware-audit log --correlation-id ID then finds the calls behind one platform request.
  • The audit log records each caller as token:<name>. Calls naming different targets run in parallel; calls that name no target run one at a time, so name the target when several people share a server.
  • Everyone who can reach the endpoint acts with this server's account. Tokens identify callers; they grant nothing on the platform. Run one endpoint per privilege level.
  • Several people or roles on one endpoint: run vmware-audit roles enable once, then give each token a role (vmware-audit token create NAME --role reader, or a role in roles.yaml naming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".

Offer only read tools, plus the writes you choose:

bash
vmware-pilot mcp --expose read --allow-write cancel_workflow# or: VMWARE_PILOT_MCP_EXPOSE=read VMWARE_PILOT_MCP_ALLOW_WRITE=cancel_workflow vmware-pilot mcp

Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server (exit 2). This limits what clients are offered; it is not authorization, so the account itself should be least-privilege.

Details: skills/vmware-pilot/references/setup-guide.md ("Serving MCP over HTTPS", "Limiting which tools are offered").

License

MIT

來源:README.md,提交 eb8bdec

工具

13

create_workflow

[WRITE] Create a custom workflow dynamically from a step list. Use this when you already know the steps and no built-in template matches; prefer create_workflow_from_template when one does, and design_workflow when the user gave a goal rather than steps. Call get_skill_catalog first for the skill and tool names a step may target. Each step dict must have: action, skill, tool, params. Optional: rollback_tool, rollback_params. action="require_approval" (skill "pilot", tool "approve") inserts a human approval gate. A workflow whose destructive or unclassifiable step, or a step passing confirm=True, has no gate before it is REFUSED — nothing is saved — and the error names the step and the gate to insert. Returns: dict with workflow_id and plan summary. Next call review_workflow to check the plan, then run_workflow to execute. Nothing is undone automatically on failure; see rollback.

輸入參數name必填steps必填description必填save_as_template

design_workflow

[WRITE] Start designing a workflow from a natural language description. Call this when the user describes a complex operation and you need to design a multi-step workflow. Returns a DRAFT workflow with proposed steps for the user to review and edit before execution. Design flow: design_workflow → update_draft (add steps, then iterate on user feedback) → confirm_draft (state becomes PENDING) → run_workflow. Use get_skill_catalog() first to see which tools the steps may target. Returns: dict with workflow_id (state=DRAFT), proposed steps placeholder, and instructions for the AI to fill in steps via update_draft.

輸入參數goal必填constraints

update_draft

[WRITE] Update a DRAFT workflow's name, description, or steps. Call this after design_workflow() to fill in the actual steps, or to modify steps based on user feedback. Use it only while the workflow is still DRAFT — after confirm_draft the steps are frozen and you must create_workflow a new one instead. Each step dict: {action, skill, tool, params, rollback_tool?, rollback_params?} Use action="require_approval" for approval gates. A draft may be saved without them while it is being designed; the result lists every step that still needs one, and confirm_draft refuses until none are left. Returns: Updated workflow summary for user review.

輸入參數namestepsdescriptionworkflow_id必填

confirm_draft

[WRITE] Confirm a draft workflow — changes state from DRAFT to PENDING. Use this once the user has approved the draft's steps; call update_draft instead if anything still needs changing. After confirmation, the workflow can be executed via run_workflow(). Optionally saves as a YAML template for future reuse. Refused — the draft stays a draft and nothing is saved — while any destructive or unclassifiable step, or any step passing confirm=True, lacks a require_approval gate before it. Returns: Confirmed workflow summary. Call run_workflow() to execute.

輸入參數workflow_id必填save_as_template

create_workflow_from_template

[WRITE] Create and save a workflow from a template, ready for run_workflow. Takes a template name (workflow_type) plus its params, builds the steps the template defines, and persists the workflow in state "pending" — it is not a dry run. Templates are the built-in types below plus custom YAML templates (list_workflows shows both). Use this when the goal matches a template; use create_workflow instead to save your own step list when none of them fit. A custom YAML template whose destructive or unclassifiable step (or step passing confirm=True) has no require_approval gate before it is refused, naming the step and the file to fix. Available workflow types: - clone_and_test: Clone VM → apply changes → monitor → approve → commit - incident_response: Diagnose alert → collect info → approve → remediate - plan_and_approve: Wrap aiops batch operations with approval gate - compliance_scan: Read-only health/capacity/anomaly check (no approval) Returns: dict with workflow_id, steps summary, and plan details.

輸入參數params必填workflow_type必填

run_workflow

[WRITE] Advance a planned workflow. Pauses at approval gates. Who runs the steps depends on how this server was started: - with --dispatch (or VMWARE_PILOT_DISPATCH=stdio): Pilot runs each step itself in that skill's own MCP server, stops at each approval gate, and the workflow can reach 'completed'. This call takes as long as the steps it runs. If it times out in your client, Pilot carries on (and answers nothing else until the step ends); afterwards get_workflow_status shows the outcome. NEVER perform the steps yourself. - without it (the default): Pilot runs nothing. Steps are recorded as 'not_executed' and the run ends with outcome='dispatch_required' (NOT 'completed'), listing each step in 'pending_dispatch'. YOU (the calling agent) must perform those skill/tool calls in order. The result says which: a 'pending_dispatch' list means you run them. Safety: the workflow is structurally reviewed before each run. Runs are REFUSED if review finds ungated destructive or unclassifiable steps, or destructive steps inside a parallel group. For a built-in template, force=True overrides that (forced runs are written to the workflow audit log). For a custom workflow (create_workflow, design_workflow, or a YAML template) an ungated step is refused even with force=True: add a require_approval step before it instead. When an approval gate is reached, the workflow pauses with state 'awaiting_approval'. Call approve() to continue. Returns: Current workflow state with 'outcome' (completed | awaiting_approval | dispatch_required | failed) and, when dispatch is required, a 'pending_dispatch' list of steps for the agent to perform.

輸入參數forceworkflow_id必填

approve

[WRITE] Approve a workflow that is waiting for human confirmation. Use this only after showing the user the pending step and getting explicit human consent; use cancel_workflow instead when the approval is rejected. Only works when workflow state is 'awaiting_approval'. After approval, execution continues to the next steps. Without --dispatch, the steps before the gate are 'not_executed': Pilot has no record that they ran, whatever the gate's message says. approve refuses (listing them in not_executed_before_gate) until acknowledge_not_executed=True — set it only after you performed each of those steps yourself and showed the user their results. They are then recorded as 'reported_done' and not handed out again. Note: with --dispatch, approving runs the next steps (this call takes as long as they do; if it times out in your client, Pilot carries on — check get_workflow_status once it answers again, and never perform those steps yourself). Without it, the remaining steps are recorded as 'not_executed' and the result carries outcome='dispatch_required' with a 'pending_dispatch' list for you to perform (see run_workflow); the workflow then never reaches 'completed'. Returns: Updated workflow state after resuming.

輸入參數approverworkflow_id必填acknowledge_not_executed

rollback

[WRITE] Abort a workflow and rollback completed steps in reverse order. Without confirm=True this only previews: it returns blast_radius — the workflow's id, type and state, the executed steps whose rollback_tool would run with its rollback_params, secrets redacted (would_roll_back — these often carry confirm=True, and this call's confirm=True is the decision to run them), the executed steps that have none and stay applied (left_in_place), steps you performed from pending_dispatch that Pilot will not reverse (not_reversed_by_pilot: they have an undo you must call; not_reversible_outside_pilot: they have none — a clone, a production resize), undos that would leave something behind (leaves_behind on a would_roll_back entry), steps with unknown effects, and blockers — and changes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked for a rollback earlier — the user has not seen the preview yet. Nothing rolls back automatically: a failed step leaves the workflow 'failed' and stops. This tool is the explicit, best-effort undo, and it only reverses steps pilot itself recorded as 'success' — without --dispatch, approval gates only. Steps YOU performed from pending_dispatch are 'not_executed' (or 'reported_done' once acknowledged at a gate) here, so to undo them call each one's rollback_tool with its rollback_params yourself, last step first. Embedders that pass a dispatcher to WorkflowExecutor get those calls made for them. Steps without a rollback_tool are reported 'not_reversible' and stay applied; an undo that does not remove what the step created is 'partial' (a clone powered off stays). A failed undo does not stop the rest. The workflow state is set to 'failed' afterwards. Refused with confirm=True: a workflow in draft, completed, rolling_back or cancelled state, a step whose status Pilot does not recognise, a workflow record that cannot be read, and — unless acknowledge_unknown_effects=True — a

輸入參數confirmworkflow_id必填acknowledge_unknown_effects

cancel_workflow

[WRITE] Cancel a workflow — move it to the terminal CANCELLED state. Use this when an approval is REJECTED, a review flags the plan as unsafe, or an operator decides the workflow must never run. A cancelled workflow is dead: run_workflow and approve refuse to execute it. Without this, an approval-rejected PENDING workflow could still be picked up and run. Without confirm=True this only previews: it returns blast_radius — the workflow's id, type and state, the executed steps that stay applied (left_in_place: cancelling part-way leaves a half-applied change), steps performed outside Pilot (performed_outside_pilot), steps already handed to you in pending_dispatch that cancel can neither stop nor undo (handed_out_to_caller), the steps that would be skipped (would_skip), steps with unknown effects, and blockers — and changes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked to cancel earlier — the user has not seen the preview yet. Cancel only stops FUTURE steps. It does NOT undo already-completed steps — use rollback() to reverse those. Refused with confirm=True: an already completed/failed/cancelled workflow, a step whose status Pilot does not recognise, a workflow record that cannot be read, and — unless acknowledge_unknown_effects=True — a step left 'running' or 'interrupted' (listed in unknown_effects). The cancellation is written to the workflow audit log. Returns: Preview: {"action": "preview", "blast_radius", "hint"}. Acting: the workflow state (state='cancelled', outcome='cancelled', action='cancelled') with blast_radius, or an error if refused.

輸入參數reasonconfirmworkflow_id必填acknowledge_unknown_effects

review_workflow

[READ] Sanity-check a planned workflow before execution. Performs structural validation only — does NOT call into other skills. Catches the common authoring errors before they hit production: - Delete-then-use: a step deletes resource X, a later step references X - Missing required params: a step has empty params or placeholder values - Cross-skill order issues: surfacing the cross-skill dispatch sequence - Risk profile: count of destructive / write / read-only / unclassified steps - Approval coverage: is every destructive OR unclassifiable step gated behind a preceding require_approval? Each step is placed in a tier from the tool's entry in ``get_skill_catalog`` first, then from name patterns. A step that matches neither is reported as ``ungated_unclassified`` rather than assumed safe: pilot dispatches nothing itself and cannot inspect a sibling skill's annotations, so "this tool is unknown to me" is the honest finding, and it needs the same gate a known destructive step does. The remedy is in the message — add the tool to SKILL_CATALOG with the risk its own skill declares, or add a gate. Medium-risk writes (create / scale / enable) are classified and counted but not gated: the family gates destructive work, and several built-in templates deliberately create in staging *before* asking for approval. Returns: Dict with keys: - ``verdict``: ``"approved"`` if no structural issues, otherwise ``"needs_revision"`` - ``findings``: list of {severity, kind, message, step_index}. Kinds ``ungated_destructive``, ``ungated_unclassified`` and ``destructive_in_parallel_group`` are what ``run_workflow`` refuses on; ``force=True`` overrides that only for a built-in template, never for a custom workflow's missing approval gate. - ``summary``: counts — total/destructive/write/read_only/approval_gates, parallel_groups, est_duration_min, plus ``classified_steps`` and ``unclassified_steps`` so an "a

輸入參數workflow_id必填

get_workflow_status

[READ] Get current workflow state, diff report, and audit log. Use this to poll a workflow after run_workflow and to find out why one stopped: steps with status 'not_executed' are yours to perform (the server runs without --dispatch), state 'awaiting_approval' means call approve. Returns a point-in-time snapshot and does not advance the workflow. Returns: Full workflow state including steps, audit log, and diff report.

輸入參數workflow_id必填

list_workflows

[READ] List all available workflow templates (built-in + custom). Use this first to see whether a template already covers the goal, then pass its name to create_workflow_from_template; if none fit, use create_workflow instead. Built-in templates are always available. Custom templates are loaded from ~/.vmware/workflows/*.yaml — drop a YAML file there to add your own workflows. Returns: dict with builtin and custom workflow lists, each with name, description, steps count, plus active_workflows — the IDs of in-flight runs to pass to get_workflow_status.

無需輸入參數。

get_skill_catalog

[READ] Get the complete catalog of available skills and tools for workflow design. Use this to understand what building blocks are available when designing a custom workflow, then feed the skill and tool names into create_workflow or update_draft steps. Note this is a static curated catalog, not a live query of each skill's registry, so it may lag a skill's actual tool list; pilot cannot call these tools itself — the calling agent does. Returns: dict mapping skill name → {description, tools: {tool_name: {risk, desc}}}.

無需輸入參數。

版本歷史

10
  1. v2.4.1最新Nov 1, 2026
  2. v2.4.0Oct 18, 2026
  3. v2.3.0Oct 16, 2026
  4. v2.2.0Oct 15, 2026
  5. v2.1.0Oct 15, 2026
  6. v2.0.0Oct 15, 2026
  7. v1.13.0Oct 14, 2026
  8. v1.12.1Oct 13, 2026
  9. v1.12.0Sep 19, 2026
  10. v1.11.1Sep 16, 2026

評分

已滿足適用檢查項的 80%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Pilot 整合