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
- Pass at least one concrete id: `multica agent skills add <id> --skill-ids sk_abc`
- Ensure variables are populated before composing the command in scripts
- To add several at once, use comma separation: `--skill-ids sk_a,sk_b`
- 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
- Pass at least one concrete, previously verified skill id
- Populate the flag variable before composing the command
- Use comma separation for multiple ids instead of repeating the flag incorrectly
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
- --skill-ids is required (comma-separated skill IDs; use --sk
- no fields to update; use --name, --description, --instructio
- --file is required
- set agent skills: %w
- --%s, --%s-stdin, and --%s-file are mutually exclusive; pick
AI-assisted analysis of multica-ai/multica@2c0912b6ec (2026-08-15).
Data as JSON: /api/errors/914bd4c8bd79e622.
Report an issue: GitHub.