{"record":{"id":"d4ba879b40598fae","repo":"conductor-oss/conductor","slug":"skills-are-unavailable-no-skillpackagestore-skill","errorCode":null,"errorMessage":"Skills are unavailable: no SkillPackageStore/SkillMetadataDAO is configured for this backend. Agents run without skills; supply both beans to enable skill registration and lookup.","messagePattern":"Skills are unavailable: no SkillPackageStore/SkillMetadataDAO is configured for this backend\\. Agents run without skills; supply both beans to enable skill registration and lookup\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java","lineNumber":132,"sourceCode":"            @Value(\"${agentspan.skills.max-file-count:2000}\") int maxFileCount,\n            ObjectProvider<SkillPackageStore> packageStore,\n            ObjectProvider<SkillMetadataDAO> metadataDao) {\n        this.maxPackageBytes = maxPackageBytes;\n        this.maxPreviewBytes = maxPreviewBytes;\n        this.maxUncompressedBytes = maxUncompressedBytes;\n        this.maxFileCount = maxFileCount;\n        this.packageStore = packageStore.getIfAvailable();\n        this.metadataDao = metadataDao.getIfAvailable();\n    }\n\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();","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/conductor-oss/conductor/blob/cf7c3e4a8adfb158be778ab1ec525323c363cd3a/agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java#L114-L150","documentation":"Error \"Skills are unavailable: no SkillPackageStore/SkillMetadataDAO is configured for this backend. Agents run without skills; supply both beans to enable skill registration and lookup.\" thrown in conductor-oss/conductor.","triggerScenarios":"Thrown at agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java:132 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure both a SkillPackageStore and a SkillMetadataDAO bean for the active backend to enable skills.","If skills are not needed, ignore this; agents run without skills by design."],"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"}