multica-ai/multica · warning

--skill-ids is required (comma-separated skill IDs)

Error message

--skill-ids is required (comma-separated skill IDs)

What it means

Returned by `multica agent skills add <id>` when the --skill-ids flag was not explicitly provided. Unlike set, add requires at least one non-empty id (a separate check rejects an emptied list, since cleanSkillIDsFlag trims and drops blanks), so the flag itself must be present and non-trivial.

Source

Thrown at server/cmd/multica/cmd_agent.go:1052

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

	var result json.RawMessage
	if err := client.PutJSON(ctx, "/api/agents/"+args[0]+"/skills", body, &result); err != nil {
		return fmt.Errorf("set agent skills: %w", err)
	}

	return printAgentSkillsMutationResult(cmd, args[0], result)
}

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

	if !cmd.Flags().Changed("skill-ids") {
		return fmt.Errorf("--skill-ids is required (comma-separated skill IDs)")
	}
	cleanIDs := cleanSkillIDsFlag(cmd)
	if len(cleanIDs) == 0 {
		return fmt.Errorf("--skill-ids must include at least one skill ID")
	}
	body := map[string]any{
		"skill_ids": cleanIDs,
	}

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

	var result json.RawMessage
	if err := client.PostJSON(ctx, "/api/agents/"+args[0]+"/skills/add", body, &result); err != nil {
		return fmt.Errorf("add agent skills: %w", err)
	}

	return printAgentSkillsMutationResult(cmd, args[0], result)

View on GitHub (pinned to 2c0912b6ec)

Solutions

  1. Pass at least one concrete id: `multica agent skills add <id> --skill-ids sk_abc`
  2. Ensure variables are populated before composing the command in scripts
  3. To add several at once, use comma separation: `--skill-ids sk_a,sk_b`
  4. Check `--help` for the exact flag name if unsure

Example fix

# before
multica agent skills add agt_1
# Error: --skill-ids is required (comma-separated skill IDs)

# after
multica agent skills add agt_1 --skill-ids sk_abc
Defensive patterns

Strategy: validation

Validate before calling

[ -n "${SKILL_IDS//,/}" ] || { echo 'at least one skill id required'; exit 1; }
multica agent skills add "$AGENT_ID" --skill-ids "$SKILL_IDS"

Type guard

func hasSkillIDs(ids []string) bool {
	for _, id := range ids {
		if strings.TrimSpace(id) != "" {
			return true
		}
	}
	return false
}

Try / catch

if !cmd.Flags().Changed("skill-ids") {
	return fmt.Errorf("--skill-ids is required (comma-separated skill IDs)")
}
if len(cleanIDs) == 0 {
	return fmt.Errorf("--skill-ids must include at least one skill ID")
}

Prevention

When it happens

Trigger: Running `multica agent skills add agt_1` without --skill-ids, or passing only whitespace/empty values that cleanSkillIDsFlag reduces to zero ids (which then triggers the follow-up '--skill-ids must include at least one skill ID' error).

Common situations: Scripts that append skill ids conditionally; passing an empty variable; comma-placement mistakes like `--skill-ids ,abc` that still yield ids but `--skill-ids ,` yields none.

Related errors


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