multica-ai/multica · error

list skills: %w

Error message

list skills: %w

What it means

Returned by `multica skill list` when the HTTP GET /api/skills via client.GetJSON fails. The %w wraps transport- or server-level failures: unreachable server, auth rejection, non-2xx status, or a response body that is not valid JSON. NewAPIClient errors (no config/token) surface earlier with their own message.

Source

Thrown at server/cmd/multica/cmd_skill.go:242

	}
	if !utf8.Valid(data) {
		return "", false, fmt.Errorf("%s must be valid UTF-8", label)
	}
	return string(data), true, nil
}

func runSkillList(cmd *cobra.Command, _ []string) error {
	client, err := newAPIClient(cmd)
	if err != nil {
		return err
	}

	ctx, cancel := cli.APIContext(context.Background())
	defer cancel()

	var skills []map[string]any
	if err := client.GetJSON(ctx, "/api/skills", &skills); err != nil {
		return fmt.Errorf("list skills: %w", err)
	}

	output, _ := cmd.Flags().GetString("output")
	if output == "json" {
		return cli.PrintJSON(os.Stdout, skills)
	}

	headers := []string{"ID", "NAME", "DESCRIPTION", "CREATED_AT"}
	rows := make([][]string, 0, len(skills))
	for _, s := range skills {
		rows = append(rows, []string{
			strVal(s, "id"),
			strVal(s, "name"),
			strVal(s, "description"),
			strVal(s, "created_at"),
		})
	}
	cli.PrintTable(os.Stdout, headers, rows)

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Check connectivity/auth first: `multica auth status` and `multica daemon status` for the active profile.
  2. Read the wrapped error — 401/403 means re-authenticate (`multica login`), connection refused means the server is down.
  3. Verify server_url in the profile config matches a running deployment.
  4. Retry once transient network conditions clear; for self-hosted, check the reverse proxy and server logs.
Defensive patterns

Strategy: retry

Validate before calling

# Pre-flight the API the CLI will hit
server_url=$(multica config show --output json | jq -r .server_url)
curl -fsS -o /dev/null "$server_url/api/skills" || echo "API unreachable or unauthorized"

Try / catch

Branch on the wrapped cause: auth errors → run `multica login` and stop; connection errors → retry with backoff; 5xx → retry later; other 4xx → report server message unchanged.

Prevention

When it happens

Trigger: Running `multica skill list` when the daemon/server at the configured server_url is down, the token expired or was revoked, DNS fails, or the server returns a 5xx or HTML error page instead of the skills array.

Common situations: Self-hosted server stopped or behind a misconfigured reverse proxy; token invalidated after a server reinstall; profile pointing at the wrong server_url; TLS certificate issues.

Related errors


AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15). Data as JSON: /api/errors/29a00da58cd4eab0. Report an issue: GitHub.