paperclipai/paperclip · error · CatalogManifestUnavailableError

Skills catalog manifest not found at ${manifestPath}. Run pn

Error message

Skills catalog manifest not found at ${manifestPath}. Run pnpm --filter @paperclipai/skills-catalog build:manifest.

What it means

Bootstrap guard in the skills-catalog service: neither the published catalog package nor dev catalog paths resolve, so the generated manifest JSON is absent. The manifest must be built (pnpm --filter @paperclipai/skills-catalog build:manifest) before any catalog reads; the unbuilt catalog package is at fault.

Source

Thrown at server/src/services/skills-catalog.ts:122

  } catch (publishedError) {
    const devPaths = resolveDevCatalogPaths();
    if (devPaths) {
      cachedCatalogPaths = devPaths;
      cachedCatalogPathsError = null;
      return cachedCatalogPaths;
    }
    cachedCatalogPathsError = new CatalogManifestUnavailableError(packageResolutionFailureMessage(), { cause: publishedError });
    cachedCatalogPaths = false;
    throw cachedCatalogPathsError;
  }
}

function loadCatalogManifest(manifestPath: string): CatalogManifestFile {
  try {
    return JSON.parse(readFileSync(manifestPath, "utf8")) as CatalogManifestFile;
  } catch (error) {
    if (isMissingFileError(error)) {
      throw new CatalogManifestUnavailableError(manifestUnavailableMessage(manifestPath), { cause: error });
    }
    throw error;
  }
}

function getCatalogManifest() {
  const { manifestPath } = resolveCatalogPaths();
  if (!existsSync(manifestPath)) {
    throw new CatalogManifestUnavailableError(manifestUnavailableMessage(manifestPath));
  }
  let stats: ReturnType<typeof statSync>;
  try {
    stats = statSync(manifestPath);
  } catch (error) {
    if (isMissingFileError(error)) {
      throw new CatalogManifestUnavailableError(manifestUnavailableMessage(manifestPath), { cause: error });
    }
    throw error;

View on GitHub (pinned to 120ae5428f)

Solutions

  1. Run 'pnpm --filter @paperclipai/skills-catalog build:manifest' from the repo root to generate the catalog manifest, then restart the server.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/services/skills-catalog.ts:122 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18). Data as JSON: /api/errors/1c566de50e226f96. Report an issue: GitHub.