nanocoai/nanoclaw · error
--${col.name.replace(/_/g, '-')} is required
Error message
--${col.name.replace(/_/g, '-')} is required What it means
Thrown by genericCreate in src/cli/crud.ts when a column marked required was not provided (undefined) and no default resolved for it. Pass 1 iterates create-able columns; required columns must be present in args or creation aborts before any DB write.
Source
Thrown at src/cli/crud.ts:252
// resolution.
for (const col of def.columns) {
if (col.generated) {
if (col.name === def.idColumn) {
values[col.name] = randomUUID();
} else if (col.name.endsWith('_at')) {
values[col.name] = new Date().toISOString();
}
continue;
}
const v = args[col.name];
if (v !== undefined) {
if (col.enum && !col.enum.includes(String(v))) {
throw new Error(`${col.name} must be one of: ${col.enum.join(', ')}`);
}
values[col.name] = col.type === 'number' ? Number(v) : v;
} else if (col.required) {
throw new Error(`--${col.name.replace(/_/g, '-')} is required`);
}
}
// Pass 2: context-aware defaults + cross-column validation.
if (def.resolveDefaults) def.resolveDefaults(values);
// Pass 3: static defaults for whatever is still unset.
for (const col of def.columns) {
if (col.generated || values[col.name] !== undefined) continue;
if (col.default !== undefined) {
values[col.name] = col.default;
} else if (col.defaultFrom !== undefined && values[col.defaultFrom] !== undefined) {
values[col.name] = values[col.defaultFrom];
}
}
// Idempotent create: if a row already matches the natural key, return it
// rather than hitting a UNIQUE violation. Lets a skill re-run `ncl … create`.View on GitHub (pinned to 294ef2aee8)
Solutions
- Re-run with the missing flag exactly as named (underscores become dashes)
- Run `ncl <resource> help` to list required columns
- Check for typos/dash-spacing in the flag name
Example fix
# before ncl messaging-groups create --name chat # after ncl messaging-groups create --name chat --channel-type discord --instance default
Defensive patterns
Strategy: validation
Validate before calling
const missing = requiredCols.filter(c => args[c.name] === undefined);
if (missing.length) throw new Error(`missing: ${missing.map(c => '--' + c.name.replace(/_/g,'-')).join(' ')}`); Prevention
- Check `ncl <resource> help` for required flags
- Use dashes for underscored flag names
- Assert all required args present before spawning ncl
When it happens
Trigger: `ncl <resource> create` omitting a required flag, e.g. creating a messaging group without its platform identity, or creating an agent group without the fields its resource definition marks required.
Common situations: Assuming a field is optional because a template/wizard filled it before; flags misspelled so the parser never binds them; underscore vs dash confusion (flags use dashes for underscored names).
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
- ${def.name} id is required
- ${def.name} not found: ${id}
- ${col.name} must be one of: ${col.enum.join(', ')}
- nothing to update — provide at least one of: ${updatableCols
- --folder is required
AI-assisted analysis of nanocoai/nanoclaw@294ef2aee8 (2026-08-28).
Data as JSON: /api/errors/ffb1ab3289631926.
Report an issue: GitHub.