{"record":{"id":"ce22f4a463699248","repo":"conductor-oss/conductor","slug":"skill-package-is-required","errorCode":null,"errorMessage":"Skill package is required","messagePattern":"Skill package is required","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java","lineNumber":142,"sourceCode":"\n    /** Whether a host supplied skill storage. */\n    public boolean isSkillStorageAvailable() {\n        return packageStore != null && metadataDao != null;\n    }\n\n    private void requireSkillStorage() {\n        if (!isSkillStorageAvailable()) {\n            throw new UnsupportedOperationException(\n                    \"Skills are unavailable: no SkillPackageStore/SkillMetadataDAO is configured for\"\n                            + \" this backend. Agents run without skills; supply both beans to enable\"\n                            + \" skill registration and lookup.\");\n        }\n    }\n\n    public synchronized SkillDetail register(String manifestJson, MultipartFile packageFile) {\n        requireSkillStorage();\n        if (packageFile == null || packageFile.isEmpty()) {\n            throw new IllegalArgumentException(\"Skill package is required\");\n        }\n\n        Map<String, Object> manifest = parseManifest(manifestJson);\n        byte[] bytes = readPackage(packageFile);\n        String checksum = sha256Hex(bytes);\n\n        ParsedSkillPackage parsed = parseSkillPackage(bytes, manifest);\n        String name = parsed.name();\n        Map<String, Object> rawConfig = parsed.rawConfig();\n        String manifestName = stringValue(manifest.get(\"name\"));\n        if (manifestName != null && !manifestName.isBlank() && !manifestName.equals(name)) {\n            throw new IllegalArgumentException(\n                    \"Skill manifest name '\"\n                            + manifestName\n                            + \"' does not match package SKILL.md name '\"\n                            + name\n                            + \"'\");\n        }","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java#L124-L160","documentation":"Error \"Skill package is required\" thrown in conductor-oss/conductor.","triggerScenarios":"Thrown at agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java:142 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide the skill package bytes in the registration request; an empty or null package is rejected."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"cf7c3e4a8adfb158be778ab1ec525323c363cd3a","analyzedAt":"2026-08-14T03:33:19.897Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}