#Duplicated skills

1 messages · Page 1 of 1 (latest)

ruby anvil
#

16:13:47 debug skills {"subsystem":"skills"} {"rawName":"coding-agent","deduped":"/coding_agent_5"} De-duplicated skill command name for "coding-agent" to "/coding_agent_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"healthcheck","deduped":"/healthcheck_5"} De-duplicated skill command name for "healthcheck" to "/healthcheck_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"skill-creator","deduped":"/skill_creator_5"} De-duplicated skill command name for "skill-creator" to "/skill_creator_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"tmux","deduped":"/tmux_5"} De-duplicated skill command name for "tmux" to "/tmux_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"weather","deduped":"/weather_5"} De-duplicated skill command name for "weather" to "/weather_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"automation-workflows","deduped":"/automation_workflows_5"} De-duplicated skill command name for "automation-workflows" to "/automation_workflows_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"builtbybit","deduped":"/builtbybit_5"} De-duplicated skill command name for "builtbybit" to "/builtbybit_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"database","deduped":"/database_5"} De-duplicated skill command name for "database" to "/database_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"git-essentials","deduped":"/git_essentials_5"} De-duplicated skill command name for "git-essentials" to "/git_essentials_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"git-workflows","deduped":"/git_workflows_5"} De-duplicated skill command name for "git-workflows" to "/git_workflows_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"github-action-gen","deduped":"/github_action_gen_5"} De-duplicated skill command name for "github-action-gen" to "/github_action_gen_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"hosting-report","deduped":"/hosting_report_5"} De-duplicated skill command name for "hosting-report" to "/hosting_report_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"monitoring","deduped":"/monitoring_5"} De-duplicated skill command name for "monitoring" to "/monitoring_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"security-audit","deduped":"/security_audit_5"} De-duplicated skill command name for "security-audit" to "/security_audit_5".
16:13:47 debug skills {"subsystem":"skills"} {"rawName":"system_monitor","deduped":"/system_monitor_5"} De-duplicated skill command name for "system_monitor" to "/system_monitor_5".
16:13:47 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord: 104 commands exceeds limit; removing per-skill commands and keeping /skill.
16:13:47 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord: GuildPresences intent enabled — presence listener registered
16:13:47 info gateway/channels/discord {"subsystem":"gateway/channels/discord"} logged in to discord as 1468040167745917122
16:14:02 debug plugins {"subsystem":"plugins"} plugin CLI register skipped (memory-core): command already registered (memory)
Log tail truncated (increase --max-bytes

ember reefBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

iron cedarBOT
# ruby anvil 16:13:47 debug skills {"subsystem":"skills"} {"rawName":"coding-agent","deduped"...

Those log lines are basically “expected behavior” when you have a lot of skills / agents on Discord:

1) De-duplicated skill command name … to "/…_5"

Discord slash command names must be unique and are sanitized to a-z0-9_ (so coding-agent → coding_agent). If OpenClaw sees collisions, it appends a numeric suffix (_2, _3, …).

Seeing a bunch of …_5 usually means you have multiple agent workspaces contributing the same skill set, so the same skill name is getting registered multiple times as a native command and has to be deduped.

(Background: Discord native skill commands are collected across agents via listSkillCommandsForAgents(), which iterates agent workspaces and only skips duplicates when multiple agents share the same canonical workspace dir.)

2) discord: 104 commands exceeds limit; removing per-skill commands and keeping /skill.

Discord has a hard limit of 100 slash commands per app per guild. When OpenClaw would exceed that, it intentionally drops the per-skill native commands and keeps the generic:

  • /skill <name> [input]

So nothing is “broken” here — it’s a safety fallback so deploy doesn’t fail.

Docs: https://docs.openclaw.ai/tools/slash-commands (see the notes about skill command sanitizing + suffixes, and using /skill when native limits bite)

#

What to do

  • If you’re fine with /skill: do nothing (this is just informative logging).
  • If you want to avoid even trying to register per-skill commands on Discord: set either
  • commands.nativeSkills: false (global), or
  • channels.discord.commands.nativeSkills: false (Discord-only)
    and restart the gateway.
  • If you really want per-skill native commands: you’ll need to get under 100 total commands (fewer user-invocable skills, fewer agent workspaces contributing, etc.).

If you paste your agents.list (just the id + workspace parts), I can tell you why it’s ending up as “x5” specifically in your setup.

ruby anvil
#

404 {
"error": {
"code": 404,
"message": "Resource projects/bright-core-u7og7 could not be found.",
"status": "NOT_FOUND",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ResourceInfo",
"resourceName": "projects/bright-core-u7og7"
}
]
}
}

iron cedarBOT
# ruby anvil 404 { "error": { "code": 404, "message": "Resource projects/bright-cor...

That 404 … Resource projects/bright-core-u7og7 could not be found is coming from Google, not Discord/skills.

It means one of these is true:

  1. The project ID is wrong / doesn’t exist (project ID must match exactly; it’s not the display name), or
  2. Your credential doesn’t have access to that project (common with the “wrong Google account” / wrong org), so Google returns NOT_FOUND.

Where this usually shows up in OpenClaw:

  • google-antigravity and google-gemini-cli OAuth profiles include a projectId (it’s stored in the auth profile and gets sent with requests). If that projectId is bogus, you’ll get exactly this kind of 404.
  • google-vertex also needs a valid GCP project via ADC; same failure mode if the configured/default project doesn’t exist for that identity.

Fix

  • Verify in Google Cloud Console that project ID bright-core-u7og7 exists for the account you’re authenticating as.
  • If it’s wrong, re-run the provider login so the stored profile has the correct project id, e.g.:
    openclaw models auth login --provider google-antigravity
    (same idea for google-gemini-cli; for Vertex you need the right ADC account/project)