File Operations Reference

This document catalogs all files that claudeup reads, writes, or modifies, organized by ownership and the operations that trigger changes.

Files Owned by Claude CLI

These files are part of Claude Code’s native configuration. claudeup reads and modifies them to manage Claude state.

~/.claude/plugins/installed_plugins.json

Owner: Claude CLI Format: JSON (V1 or V2) Purpose: Plugin registry with metadata (version, install path, scope)

Read by:

Written by:


~/.claude/plugins/known_marketplaces.json

Owner: Claude CLI Format: JSON Purpose: Marketplace registry with source metadata

Read by:

Written by:


~/.claude/settings.json (User Scope)

Owner: Claude CLI Format: JSON Purpose: User-level settings including enabled plugins

Read by:

Written by:


./.claude/settings.json (Project Scope)

Owner: Claude CLI Format: JSON Purpose: Project-level settings including enabled plugins

Read by:

Written by:


./.claude/settings.local.json (Local Scope)

Owner: Claude CLI Format: JSON Purpose: Machine-specific project settings (gitignored)

Read by:

Written by:


~/.claude.json (User MCP Servers)

Owner: Claude CLI Format: JSON Purpose: MCP server configurations at user scope

Read by:

Written by:


./.mcp.json (Project MCP Servers)

Owner: Claude CLI Format: JSON (Claude native format) Purpose: Project-scoped MCP servers that Claude auto-loads

Read by:

Written by:


Files Owned by claudeup

These files are created and managed exclusively by claudeup.

~/.claudeup/config.json

Owner: claudeup Format: JSON Purpose: Global configuration (preferences)

Read by:

Written by:


~/.claudeup/profiles/{name}.json

Owner: claudeup Format: JSON Purpose: Profile definitions (plugins, MCP servers, marketplaces, etc.)

Read by:

Written by:


~/.claudeup/backups/{scope}-scope.json

Owner: claudeup Format: JSON (copy of settings.json) Purpose: Backup of scope settings before applying profile

Read by:

Written by:


~/.claudeup/backups/local-scope-{hash}.json

Owner: claudeup Format: JSON (copy of settings.local.json) Purpose: Backup of local scope settings (project-specific)

Read by:

Written by:


~/.claudeup/enabled.json

Owner: claudeup Format: JSON Purpose: Tracks which extensions are enabled per category

Read by:

Written by:


~/.claudeup/last-applied.json

Owner: claudeup Format: JSON Purpose: Tracks which profile was last applied at each scope (user, project, local)

Read by:

Written by:


~/.claudeup/ext/<category>/

Owner: claudeup Format: Directory tree organized by category (agents, commands, hooks, output-styles, rules, skills) Purpose: Stores extension files; symlinks in ~/.claude/<category>/ point here

Read by:

Written by:


Operation-to-File Matrix

Operation Files Modified Event Type
profile apply (user) ~/.claude/settings.json (enabledPlugins declaratively replaced) WRITE
profile apply (user) ~/.claudeup/backups/user-scope.json (backup before apply) WRITE
profile apply (project) ./.claude/settings.json (enabledPlugins replaced) WRITE
profile apply (project) ./.mcp.json (MCP servers written) WRITE
profile apply (local) ./.claude/settings.local.json (enabledPlugins replaced) WRITE
profile apply (local) ~/.claudeup/backups/local-scope-{hash}.json (backup) WRITE
profile apply (any) ~/.claudeup/last-applied.json (breadcrumb) WRITE
profile save ~/.claudeup/profiles/{name}.json WRITE
plugin install/uninstall Via claude CLI - may update registry INDIRECT
marketplace add/remove Via claude CLI - updates known_marketplaces.json INDIRECT
mcp add/remove Via claude CLI - updates ~/.claude.json INDIRECT
setup ~/.claudeup/config.json (initial config) WRITE
extensions enable ~/.claudeup/enabled.json, ~/.claude/<category>/<item> symlink WRITE
extensions disable ~/.claudeup/enabled.json, removes ~/.claude/<category>/<item> WRITE
extensions install ~/.claudeup/ext/<category>/, ~/.claudeup/enabled.json WRITE
extensions import ~/.claudeup/ext/<category>/, ~/.claudeup/enabled.json WRITE

File Change Events to Monitor

For each file modification, the following events should be trackable:

  1. Timestamp - When the change occurred
  2. Operation - Which claudeup command caused it
  3. Scope - user/project/local (if applicable)
  4. Changes - What was added/removed/modified
  5. Backup - Whether a backup was created
  6. Errors - Any failures during the operation

This enables: