{"record":{"id":"b196ec5db4630b29","repo":"zeroclaw-labs/zeroclaw","slug":"cli-skills-agent-not-configured","errorCode":"cli-skills-agent-not-configured","errorMessage":"agent '{$alias}' is not configured","messagePattern":"agent '(.+?)' is not configured","errorType":"console","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/skills/mod.rs","lineNumber":86,"sourceCode":"            let mut skipped: Vec<DroppedSkill> = Vec::new();\n            if let Some(ref b) = bundle {\n                // A single bundle's on-disk skills.\n                let dir =\n                    zeroclaw_config::skill_bundles::resolve_directory(config, &install_root, b)\n                        .map_err(anyhow::Error::msg)?;\n                rendered.push((\n                    get_required_cli_string_with_args(\n                        \"cli-skills-list-group-bundle\",\n                        &[(\"alias\", b)],\n                    ),\n                    load_skills_from_directory(&dir, allow_scripts).0,\n                ));\n            } else if let Some(ref a) = agent {\n                // Exactly what this agent loads at runtime — the same loader the\n                // agent boot/loop uses (workspace + open-skills + plugins +\n                // assigned bundles), so `list --agent` mirrors runtime behavior.\n                if config.agent(a).is_none() {\n                    anyhow::bail!(\n                        \"{}\",\n                        get_required_cli_string_with_args(\n                            \"cli-skills-agent-not-configured\",\n                            &[(\"alias\", a)],\n                        )\n                    );\n                }\n                let (skills, dropped, _shadowed) =\n                    load_skills_for_agent_from_config_audited(config, a);\n                skipped.extend(dropped);\n                rendered.push((\n                    get_required_cli_string_with_args(\n                        \"cli-skills-list-group-agent\",\n                        &[(\"alias\", a)],\n                    ),\n                    skills,\n                ));\n            } else {","sourceCodeStart":68,"sourceCodeEnd":104,"githubUrl":"https://github.com/zeroclaw-labs/zeroclaw/blob/88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc/src/skills/mod.rs#L68-L104","documentation":"`skills list --agent <alias>` mirrors exactly what one agent loads at runtime, so it first verifies the alias exists under [agents] in the config. config.agent(alias) returning None means no agent with that alias is configured, and the command bails with the cli-skills-agent-not-configured message before loading any skills. Note the bundle branch runs first: this error fires only when --bundle is not given.","triggerScenarios":"Running `skills list --agent <typo>`; the agent was renamed or deleted from the config after the command was scripted; the config file actually loaded (env override, different data dir) does not contain the agent.","commonSituations":"Typos and case mismatches (Helper vs helper); stale scripts or docs referencing an old alias; user-level vs project-level config split so the agent lives in the other file.","solutions":["Check the exact alias spelling and case against the [agents] table of the active config","Run `skills list` with no --agent — it needs no agent and shows the full inventory","If the agent should exist, add it under [agents.<alias>] or fix the config path/env var pointing at the wrong file","Copy-paste the alias from the config instead of retyping it"],"exampleFix":"# before\nzeroclaw skills list --agent helpr\n\n# after\nzeroclaw skills list --agent helper","handlingStrategy":"validation","validationCode":"// Before `skills list --agent <alias>`\nif config.agent(alias).is_none() {\n    eprintln!(\"unknown agent '{alias}'; configured agents: {:?}\",\n              config.agents.keys().collect::<Vec<_>>());\n    return;\n}","typeGuard":null,"tryCatchPattern":"if let Err(e) = handle_command(SkillCommands::List { agent: Some(alias), bundle: None }, &config).await {\n    if e.to_string().contains(\"is not configured\") { /* alias problem: suggest configured agents, no retry */ }\n}","preventionTips":["Source agent aliases from the config itself (single source of truth) instead of literals","Print the list of configured agents on this failure so users can self-correct","Remember aliases are case-sensitive"],"tags":["cli","skills","agent","config","alias"],"backgroundTag":"config-reference-not-found","analyzedSha":"88bb9c8533fc57ed7a03e36ca7c9ed2bf8336dcc","analyzedAt":"2026-08-23T01:07:41.857Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}