alibaba/nacos · error · NacosApiException
PARAMETER_MISSING
PARAMETER_MISSING
Error message
Request parameter `skillName` should not be blank.
What it means
SkillSubmitForm.validate() requires a non-blank `skillName` to submit a skill draft for review/publishing. Submission is keyed to a named skill, so the target must be identified. The form extends SkillForm but overrides validate() to call fillDefaultNamespaceId() directly (skipping super's message) and uses its own skillName-blank check with a backtick-style message. The form also carries an optional `version`.
Source
Thrown at ai/src/main/java/com/alibaba/nacos/ai/form/skills/admin/SkillSubmitForm.java:42
import java.io.Serial;
/**
* Skill submit form.
*
* @author nacos
*/
public class SkillSubmitForm extends SkillForm {
@Serial
private static final long serialVersionUID = 1L;
private String version;
@Override
public void validate() throws NacosApiException {
fillDefaultNamespaceId();
if (StringUtils.isBlank(getSkillName())) {
throw new NacosApiException(NacosException.INVALID_PARAM, ErrorCode.PARAMETER_MISSING,
"Request parameter `skillName` should not be blank.");
}
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
}
View on GitHub (pinned to 9b989acdf1)
Solutions
- Include `skillName` of the skill whose draft you are submitting.
- Verify the skill exists via list/detail.
- Ensure the HTTP param name is `skillName` and binds to the form setter.
Example fix
// before
{"version":"1.0.0"}
// after
{"skillName":"my-skill","version":"1.0.0"} Defensive patterns
Strategy: validation
Validate before calling
// Before calling skill submit
if (skillName == null || skillName.isBlank()) {
throw new IllegalArgumentException("skillName is required to submit a skill");
} Type guard
// TypeScript const hasSkillName = (s?: string | null): boolean => s != null && s.trim().length > 0;
Try / catch
try {
form.validate();
} catch (NacosApiException e) {
// skillName missing
} Prevention
- Pre-fill skillName from the draft being submitted.
- Bind the path variable to skillName.
- Block submit until skillName is set.
When it happens
Trigger: Calling the skill submit API with skillName missing, empty, or whitespace-only. The check uses StringUtils.isBlank.
Common situations: Frontend submit form that didn't bind skillName; sending only version; path variable not mapped to skillName; renaming the field.
Related errors
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/45a1ce7c2616ba2e.
Report an issue: GitHub.