.deeep.index.json by default. Use deeep sync --dry-run to inspect it without uploading components. The index is generated output; change your source or deeep.json and regenerate it instead of editing entries manually.
Local index structure
Entries include names, source and import paths, exports, framework/language, props and analysis status, local dependencies, declared package versions, styles, asset paths, and a source hash. Storybook entries also include story file paths and story metadata.
The local index is more detailed than the upload manifest. Props, asset lists, diagnostics, and the complete index file are not sent as the component-sync payload.
CLI discovery coverage
The scanner reads.js, .jsx, .mjs, .ts, .tsx, and .vue files matching components, then applies exclude. It skips .d.ts, symlinked files/directories, and common dependency/build directories, including node_modules, .git, dist, build, and storybook-static.
Use repository-relative patterns such as src/components/**/*.{js,jsx,mjs,ts,tsx,vue}. Brace alternatives and **/ matching are supported. Re-export-only index files are skipped as component entries; point discovery at implementation directories.
Analysis recognizes common exported components, Vue single-file components, and Angular component declarations. It extracts props from supported TypeScript declarations and local type imports, React PropTypes, Vue props, Angular inputs, JSDoc, defaults, and usage. Local source imports and supported TypeScript/JavaScript path aliases contribute dependency paths.
Analysis is static and heuristic. It does not execute your application or provide full TypeScript compiler resolution. Review
propsAnalysis and diagnostics when types are inferred, partial, or unresolved. Svelte can be detected as a project framework, but .svelte files are not supported by the direct component scanner.SOURCE_TOO_LARGE. Unreadable or non-UTF-8 source produces SOURCE_READ_FAILED.
Storybook metadata
The reader recognizes index format versions2, 3, 4, and 5 (the index’s v field, not the installed Storybook major version). Other versions are parsed on a best-effort basis with a warning. Both modern entries and legacy stories collections are accepted; modern docs-only entries are excluded.
Component resolution supports common CSF metadata, typed Meta<typeof Component> patterns, namespace imports, local aliases, workspace package imports, and supported barrel re-exports. When a component implementation cannot be resolved, a synthetic entry based on the story file may be retained with COMPONENT_SOURCE_UNRESOLVED; inspect it before uploading.
Story metadata includes available IDs, names, export names, titles, tags, JSON-safe args, and per-story argTypes. Meta-level args are merged with story overrides. Functions, expressions, JSX-like values, deeply nested values, and oversized values are omitted rather than executed. Sanitization limits nested containers to six levels and drops dictionary values whose JSON serialization exceeds 4,096 characters.
When present, .storybook/preview.js, .jsx, .ts, or .tsx under the configured directory is attached as previewPath during manifest creation. It is not part of the component sourcePaths list or its content hash. Commit and push preview configuration as well so the referenced revision contains it.
The Storybook index size limit is 25 MiB. A missing index generates a warning and empty local index; a real sync rejects the empty manifest. Invalid JSON or a missing entries/stories collection blocks index generation.
Package versions
For each component, package imports are matched against the nearest owningpackage.json, walking toward the repository root. The first manifest found is used; undeclared packages are omitted rather than guessed from ancestor manifests.
Declaration precedence is dependencies, then peerDependencies, then devDependencies. Versions are declared ranges, not exact installed or lockfile-resolved versions. Registry ranges such as ^18.0.0 are preserved. Dist-tags without digits and recognized non-registry protocols such as workspace:, file:, and git+ become *.
Uploaded manifest
Each component contains
externalId, name, exportName, entryPath, sourcePaths, and packages, with optional storybook metadata and contentHash. Source paths combine discovered local source dependencies, styles, and story files, excluding the entry path itself. Asset paths are not included in this list.
The component contentHash is a SHA-256 digest of sorted, unique entry/source paths and their file bytes, separated by null bytes. It differs from the local index’s sourceHash, which hashes only the entry file and uses a sha256: prefix. The content hash is omitted if a required file is missing. The canonical manifest hash supports repeatable sync requests; timestamps from the local index are not included.
Common diagnostics
Warning/error counts in the generated index do not necessarily fail the command. Review them along with the discovered set before syncing.