different-ai/openwork · warning
extensions.add_description_required
extensions.add_description_required
Error message
extensions.add_description_required
What it means
For library kinds other than 'mcp' and 'plugin' (e.g. skill/command/agent), createLibraryItem requires a description. If input.description trims to empty, the localized message t('extensions.add_description_required') is thrown.
Source
Thrown at apps/app/src/react-app/domains/settings/state/extensions-store.ts:2254
}
async function createLibraryItem(
kind: LibraryAuthorableKind,
input: CreateLibraryItemInput,
): Promise<string> {
const description = input.description.trim();
const instructions = input.instructions.trim();
const drafts = input.components?.filter((component) => component.name.trim() && component.content.trim()) ?? [];
if (!input.name.trim()) {
throw new Error(t("extensions.add_name_required"));
}
if (kind === "mcp") {
if (!instructions) {
throw new Error(t("extensions.add_mcp_url_required"));
}
} else if (kind !== "plugin") {
if (!description) {
throw new Error(t("extensions.add_description_required"));
}
if (!instructions) {
throw new Error(t("extensions.add_instructions_required"));
}
}
if (kind === "plugin" && drafts.length === 0) {
throw new Error(t("extensions.add_plugin_component_required"));
}
const settings = readDenSettings();
const token = settings.authToken?.trim() ?? "";
const orgId = settings.activeOrgId?.trim() ?? "";
if (!token || !orgId) {
throw new Error(t("extensions.add_sign_in_required"));
}
const client = createDenClient({
baseUrl: settings.baseUrl,
token,View on GitHub (pinned to 2b7df46e8a)
Solutions
- Fill in input.description before calling for non-MCP, non-plugin kinds.
- Validate the description field in the form layer before submit.
- If the item really needs no description, supply a minimal placeholder description until the schema allows omission.
Example fix
// before
await createLibraryItem('command', { name: 'deploy', description: '', instructions: '...' });
// after
const description = form.description.trim();
if (!description) { showFieldError('description', t('extensions.add_description_required')); return; }
await createLibraryItem('command', { ...form, description }); Defensive patterns
Strategy: validation
Validate before calling
if (kind !== 'mcp' && kind !== 'plugin' && !input.description.trim()) {
showFieldError('description', t('extensions.add_description_required')); return;
} Try / catch
try {
await createLibraryItem(kind, input);
} catch (e) {
if (e instanceof Error && e.message === t('extensions.add_description_required')) {
showFieldError('description', e.message);
} else throw e;
} Prevention
- Make description required in the form schema for skill/command/agent kinds
- Never render the add dialog with an empty description binding
- Trim before submit
- Keep field-level errors in sync with the store's i18n keys
When it happens
Trigger: Calling createLibraryItem(kind, input) where kind is neither 'mcp' nor 'plugin' and input.description is empty or whitespace-only.
Common situations: Submitting the add-library form's description textarea empty; generating inputs programmatically and omitting description for non-MCP kinds; a form that hides the description field for some kinds but still submits it empty.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- extensions.add_name_required
- extensions.add_instructions_required
- extensions.add_mcp_url_required
- extensions.add_plugin_component_required
- keyError (i18n validation message returned by validateKey)
AI-assisted analysis of different-ai/openwork@2b7df46e8a (2026-09-01).
Data as JSON: /api/errors/76739594d320c0e1.
Report an issue: GitHub.