zed-industries/zed · warning · Error

Message params.options is undefined: ${JSON.stringify(messag

Error message

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

What it means

For github.com URLs the importer destructures the path as [owner, repo, kind, reference, file_path..]. If the URL has fewer than four path segments after the host, the slice pattern fails and the URL is rejected as not pointing at a blob file. This is the shape check for blob URLs.

Source

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

    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,
        });
        if (fileInfo.ignored) {
          process.stderr.write(
            `Ignoring file '${params.options.filepath}' based on rules in '${params.options.ignorePath}'\n`,
          );
          sendResponse({ id, result: { text: params.text } });
          return;
        }
      }

View on GitHub (pinned to f4178619ac)

Solutions

  1. Navigate to the .md file on github.com and copy the full blob URL of the form https://github.com/<owner>/<repo>/blob/<ref>/<path>/SKILL.md
  2. Make sure all five parts are present: owner, repo, 'blob', branch/tag/commit, and the file path

Example fix

# before
https://github.com/acme/skills/blob/main

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

Strategy: validation

Validate before calling

let segments: Vec<&str> = url.path_segments().map(Iterator::collect).unwrap_or_default();
ensure!(segments.len() >= 5, "Paste a GitHub blob URL that points to a .md file"); // owner, repo, blob, ref, path...

Type guard

fn has_blob_shape(url: &url::Url) -> bool {
    url.path_segments()
        .map(|s| s.count() >= 5)
        .unwrap_or(false)
}

Prevention

When it happens

Trigger: A github.com URL with too few path segments: github.com/owner, github.com/owner/repo, github.com/owner/repo/blob, github.com/owner/repo/blob/main — there is no file path after the reference.

Common situations: The user pasted the repo or directory page instead of the file page; the URL got truncated when copying; the user edited the URL by hand and dropped segments.

Related errors


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