conductor-oss/conductor · error · UnsupportedOperationException

Skills are unavailable: no SkillPackageStore/SkillMetadataDA

Error message

Skills are unavailable: no SkillPackageStore/SkillMetadataDAO is configured for this backend. Agents run without skills; supply both beans to enable skill registration and lookup.

What it means

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.

Source

Thrown at agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java:132

            @Value("${agentspan.skills.max-file-count:2000}") int maxFileCount,
            ObjectProvider<SkillPackageStore> packageStore,
            ObjectProvider<SkillMetadataDAO> metadataDao) {
        this.maxPackageBytes = maxPackageBytes;
        this.maxPreviewBytes = maxPreviewBytes;
        this.maxUncompressedBytes = maxUncompressedBytes;
        this.maxFileCount = maxFileCount;
        this.packageStore = packageStore.getIfAvailable();
        this.metadataDao = metadataDao.getIfAvailable();
    }

    /** Whether a host supplied skill storage. */
    public boolean isSkillStorageAvailable() {
        return packageStore != null && metadataDao != null;
    }

    private void requireSkillStorage() {
        if (!isSkillStorageAvailable()) {
            throw new UnsupportedOperationException(
                    "Skills are unavailable: no SkillPackageStore/SkillMetadataDAO is configured for"
                            + " this backend. Agents run without skills; supply both beans to enable"
                            + " skill registration and lookup.");
        }
    }

    public synchronized SkillDetail register(String manifestJson, MultipartFile packageFile) {
        requireSkillStorage();
        if (packageFile == null || packageFile.isEmpty()) {
            throw new IllegalArgumentException("Skill package is required");
        }

        Map<String, Object> manifest = parseManifest(manifestJson);
        byte[] bytes = readPackage(packageFile);
        String checksum = sha256Hex(bytes);

        ParsedSkillPackage parsed = parseSkillPackage(bytes, manifest);
        String name = parsed.name();

View on GitHub (pinned to cf7c3e4a8a)

Solutions

  1. Configure both a SkillPackageStore and a SkillMetadataDAO bean for the active backend to enable skills.
  2. If skills are not needed, ignore this; agents run without skills by design.

When it happens

Trigger: Thrown at agentspan/src/main/java/org/conductoross/conductor/ai/agentspan/runtime/service/SkillRegistryService.java:132 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of conductor-oss/conductor@cf7c3e4a8a (2026-08-14). Data as JSON: /api/errors/d4ba879b40598fae. Report an issue: GitHub.