zed-industries/zed · warning · Error

Message id is undefined: ${JSON.stringify(message)}

Error message

Message id is undefined: ${JSON.stringify(message)}

What it means

github_raw_url parses the URL pasted into the skill-import field and rejects any scheme other than https before any network call is made. The importer only fetches encrypted GitHub traffic, so http://, git://, ftp:// and friends are refused. This is an input-validation error shown in the import UI, not a network failure.

Source

Thrown at crates/prettier/src/prettier_server.js:162

  } finally {
    process.stdin.off("data", () => {});
  }
}

async function handleMessage(message, prettier) {
  const { method, id, params } = message;
  if (method === undefined) {
    throw new Error(`Message method is undefined: ${JSON.stringify(message)}`);
  } else if (method == "initialized") {
    return;
  } else if (method === "shutdown") {
    sendResponse({ result: {} });
  } else if (method == "exit") {
    process.exit(0);
  }

  if (id === undefined) {
    throw new Error(`Message id is undefined: ${JSON.stringify(message)}`);
  }

  if (method === "prettier/format") {
    if (params === undefined || params.text === undefined) {
      throw new Error(`Message params.text is undefined: ${JSON.stringify(message)}`);
    }
    if (params.options === undefined) {
      throw new Error(`Message params.options is undefined: ${JSON.stringify(message)}`);
    }

    let resolvedConfig = {};
    if (params.options.filepath) {
      resolvedConfig = (await prettier.prettier.resolveConfig(params.options.filepath, { editorconfig: true })) || {};

      if (params.options.ignorePath) {
        const fileInfo = await prettier.prettier.getFileInfo(params.options.filepath, {
          ignorePath: params.options.ignorePath,
        });

View on GitHub (pinned to f4178619ac)

Solutions

  1. Change the URL prefix to https://
  2. Copy the link again from the GitHub file page address bar, which always yields https

Example fix

# before
http://github.com/acme/skills/blob/main/SKILL.md

# after
https://github.com/acme/skills/blob/main/SKILL.md
Defensive patterns

Strategy: validation

Validate before calling

// Before submitting the import form (same crate exposes this helper):
if !is_supported_skill_url(&input) {
    show_inline_hint("Use an https:// GitHub .md URL");
    return;
}
// Or the minimal scheme check:
if !input.trim().starts_with("https://") {
    show_inline_hint("GitHub skill URLs must use https://");
}

Type guard

fn is_https_url(input: &str) -> bool {
    url::Url::parse(input.trim()).map(|u| u.scheme() == "https").unwrap_or(false)
}

Prevention

When it happens

Trigger: Pasting a URL whose scheme is explicitly not https: http://github.com/owner/repo/blob/main/SKILL.md, git://github.com/..., or ssh://git@github.com/...

Common situations: A clipboard manager or browser downgraded the copied URL to http; the user typed the URL by hand and wrote http; the link came from an internal mirror that serves plain http.

Related errors


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/f9d696a0587befb9. Report an issue: GitHub.