跳到正文
cccskills
免费在 GitHub 公开

ssh-connection-import

Implement and debug onetcli SSH connection importers that read OpenSSH config and known_hosts. Trace why previews return no records, check candidate file access and manifests, and match serialized authentication data to the host protocol’s expected JSON shape.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Use when implementing or debugging onetcli SSH connection importers, including OpenSSH config, known_hosts, candidate file manifests, local composite installs, SSH auth_method JSON decode errors such as unknown variant kind, or preview scans that show available sources but return zero records.

feigeCode/navop星标 1,964(GitHub 1,964 + cccskills 0)

实测评分 未实测

查看安装方法

适用场景

  • Adding OpenSSH config import support
  • Using known_hosts to discover SSH hosts
  • Debugging previews that show sources but no records
  • Fixing SSH authentication JSON decode errors

包含的文件(4)

  • SKILL.md4.8 KB
  • agents/openai.yaml197 B
  • references/openssh-sources.md2.6 KB
  • references/ssh-protocol-debugging.md2.5 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

SSH Connection Import

Overview

Build and debug SSH importers against the host protocol first. Most failures are not parsing failures; they are mismatches between manifest visibility, candidate file access, WASM output JSON, and connection-import-protocol decode rules.

For shared WASM component structure, manifests, packaging, and host runtime work, also use connection-import-wasm.

References

NeedReference
OpenSSH config and known_hosts parsing rulesOpenSSH Sources
SSH protocol JSON, auth methods, and preview failuresSSH Protocol Debugging

Protocol Contract

Inspect the host protocol before defining extension structs:

  • Host model: ../onetcli/crates/connection-import-protocol/src/model.rs
  • Importer output must serialize to the host's serde shape, not a local convenience shape.

For SSH auth, match SshImportAuthMethod with #[serde(rename_all = "snake_case")]:

VariantJSON shape
AutoPublicKey"auto_public_key"
Agent"agent"
PrivateKey{"private_key":{"key_path":"...","passphrase":null}}
Password{"password":{"password":null}} or an omitted secret when not importing passwords

Never emit {"kind":"auto_public_key"}. The host error unknown variant kind, expected one of password, private_key, private_key_material, agent, auto_public_key means the importer used internally tagged JSON that the host protocol does not accept.

Add a focused serialization test for each auth variant the importer emits:

let value = serde_json::to_value(&record).unwrap();
assert_eq!(value["ssh"]["auth_method"], "auto_public_key");

OpenSSH Sources

Declare platform candidates and fs:read:* permissions for both primary config and fallback discovery:

SourcemacOS/LinuxWindows
OpenSSH config~/.ssh/config%USERPROFILE%/.ssh/config
known hosts fallback~/.ssh/known_hosts%USERPROFILE%/.ssh/known_hosts

Use known_hosts only as host discovery. It rarely contains username or auth metadata, so emit host-only records with empty username, parsed port, and AutoPublicKey.

Parsing rules for known_hosts:

  • Parse plain hosts, comma-separated aliases, and bracketed ports like [example.com]:2222.
  • Skip hashed hosts starting with |, wildcard or negated patterns, and marker lines such as @cert-authority.
  • Ignore key material after the host pattern column.
  • See OpenSSH Sources before extending parser behavior.

Debug Flow

When the UI shows the source as available but OpenSSH returns no rows, trace the full path:

  1. Confirm the installed composite manifest contributes the importer and the current platform.
  2. Confirm each candidate file path expands correctly (~/..., %USERPROFILE%/...) and has matching fs:read:* permission.
  3. Confirm the file exists on the user's machine. ~/.ssh/config may be absent while ~/.ssh/known_hosts exists.
  4. Run importer unit tests for parser behavior and serialized JSON shape.
  5. Check host logs for connection import preview failed. Decode errors mean the source was read and the WASM component returned JSON, but the host rejected the protocol shape.

Treat "可导入" or "available" in the UI as manifest/source visibility only. It does not prove preview records decoded successfully.

Local Packaging

Verify and install the composite extension before host UI testing:

rtk cargo test -p openssh_config_importer_wasm
rtk cargo build --release -p openssh_config_importer_wasm --target wasm32-wasip2
rtk node scripts/release-driver.mjs openssh-config-importer 0.1.0 --target universal --artifact-dir /tmp/onetcli-composite-local/openssh-config

The local install target is:

~/.config/one-hub/extensions/composite/com.onetcli.importer.openssh-config

The installed folder must contain extension.json and wasm/openssh_config_importer_wasm.wasm.

Common Mistakes

MistakeFix
Defining SSH auth as { kind, ... }Serialize exactly like connection-import-protocol::SshImportAuthMethod.
Only scanning ~/.ssh/configAdd known_hosts fallback because many local machines have no config file.
Treating known_hosts aliases as full configsEmit conservative host-only records and skip ambiguous patterns.
Debugging only extension code after a UI zero-row resultInspect host decode logs and candidate file reads.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Implement and debug onetcli connection importers packaged as WebAssembly components. The skill covers parsing application settings, manifests and packaging, host integration, local visibility, password handling, and import preview issues.

中文简介正在准备中。当前显示英语简介。

  • Adding an importer for a database application
  • Debugging a WASM importer that is not listed
  • Packaging and installing a composite extension
feigeCode/navop19642026年10月26日 更新

gpui

免费

Use this skill while building or maintaining GPUI applications. It provides focused references for framework APIs and patterns, including keybindings, async tasks, state, events, layout, focus, custom elements, and tests.

中文简介正在准备中。当前显示英语简介。

  • Finding the right GPUI API for a feature
  • Implementing keyboard actions and focus navigation
  • Managing entities, events, or global state
feigeCode/navop19642026年10月26日 更新

Build GPUI interfaces with gpui-component by choosing suitable controls, handling component state and themes, and following its design and coding guides. The references also cover layout, interaction states, interface copy, and application structure.

中文简介正在准备中。当前显示英语简介。

  • Choosing a component for a UI need
  • Setting up gpui-component in a GPUI app
  • Handling component state and theming
feigeCode/navop19642026年10月26日 更新

Design, implement, review, or debug onetcli IPC database drivers. Work from the `driver.json` manifest and JSON-RPC protocol contract through schema metadata, SQL-building methods, import and export, tests, and packaging, with guidance that applies across implementation languages.

中文简介正在准备中。当前显示英语简介。

  • Creating or reviewing an onetcli IPC database driver
  • Defining driver.json methods and capabilities
  • Implementing schema metadata and DDL builders
feigeCode/navop19642026年10月26日 更新

navop

免费

Use the Navop CLI to discover and operate resources exposed by a running Navop desktop app. The skill checks live tools, permissions, and schemas before commands, then follows Navop’s approval decisions for operations.

中文简介正在准备中。当前显示英语简介。

  • Checking which Navop tools are currently available
  • Inspecting a tool’s live schema before using it
  • Running a supported read or write operation
feigeCode/navop19642026年10月26日 更新

Prepare and review bilingual Chinese and English release notes for Navop. Maintain `CHANGELOG.md` as the source of truth, then check that tagged entries provide consistent content for GitHub Releases and the R2 updater manifest when a release is published or synchronized.

中文简介正在准备中。当前显示英语简介。

  • Drafting bilingual notes for a Navop version
  • Reviewing a CHANGELOG.md release entry
  • Checking release notes before creating a version tag
feigeCode/navop19642026年10月26日 更新

查看 feigeCode 的全部技能

报告此技能的问题