# summonair/claude-clone architecture

> Architecture diagram of the GitHub repository summonair/claude-clone, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/summonair/claude-clone
- Repository: https://github.com/summonair/claude-clone

## Overview

claude-clone is a CLI for creating and reopening multi-repository Claude Code workspaces, with saved repo presets and global configuration. The main flow resolves repositories from GitHub, a preset, explicit names, or interactive search; clones them into a workspace, writes its Claude context file, and optionally launches Claude. The graph also shows preset/config management and reopening. Relationships are based on the shown command calls and README; unsampled internals are represented only where their paths are established by the tree.

Main entry points: [`src/commands/create.ts`](https://github.com/summonair/claude-clone/blob/main/src/commands/create.ts) (Create workspace), [`src/index.ts`](https://github.com/summonair/claude-clone/blob/main/src/index.ts) (Command router), [`src/commands/open.ts`](https://github.com/summonair/claude-clone/blob/main/src/commands/open.ts) (Reopen workspace), [`src/commands/preset.ts`](https://github.com/summonair/claude-clone/blob/main/src/commands/preset.ts) (Preset management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["CLI entry"]
  node_cli["Command router<br/>[index.ts]"]
end

subgraph group_workspace["Workspace lifecycle"]
  node_create["Create workspace<br/>[create.ts]"]
  node_clone["Parallel cloning<br/>[clone.ts]"]
  node_workspace_paths["Workspace paths<br/>[paths.ts]"]
  node_context["Claude context file<br/>[claude.ts]"]
  node_open["Reopen workspace<br/>[open.ts]"]
end

subgraph group_repos["Repository selection"]
  node_repo_picker["Searchable repo picker"]
  node_github["GitHub repo discovery<br/>[github.ts]"]
end

subgraph group_settings["Presets and config"]
  node_preset_cmd["Preset management<br/>[preset.ts]"]
  node_config_cmd["Config commands<br/>[config.ts]"]
  node_config_store[("Config store<br/>[config-store.ts]")]
end

node_user(("CLI user"))
node_claude["Claude Code"]
node_github_service["GitHub CLI"]
node_git["Git clone"]

node_user -->|"runs commands"| node_cli
node_cli -->|"dispatches create"| node_create
node_cli -->|"dispatches open"| node_open
node_cli -->|"dispatches presets"| node_preset_cmd
node_cli -->|"dispatches config"| node_config_cmd
node_create -->|"loads settings"| node_config_store
node_create -->|"fetches repositories"| node_github
node_github -->|"queries repos"| node_github_service
node_create -->|"prompts selection"| node_repo_picker
node_create -->|"resolves workspace"| node_workspace_paths
node_create -->|"clones selected repos"| node_clone
node_clone -->|"runs clone"| node_git
node_create -->|"writes workspace context"| node_context
node_create -->|"launches optionally"| node_claude
node_context -.->|"provides workspace context"| node_claude
node_open -->|"loads settings"| node_config_store
node_open -->|"expands base path"| node_workspace_paths
node_open -->|"launches workspace"| node_claude
node_preset_cmd -->|"reads and saves presets"| node_config_store
node_preset_cmd -->|"fetches repositories"| node_github
node_preset_cmd -->|"prompts selection"| node_repo_picker
node_config_cmd -->|"reads and updates"| node_config_store

click node_cli "https://github.com/summonair/claude-clone/blob/main/src/index.ts"
click node_create "https://github.com/summonair/claude-clone/blob/main/src/commands/create.ts"
click node_clone "https://github.com/summonair/claude-clone/blob/main/src/lib/clone.ts"
click node_workspace_paths "https://github.com/summonair/claude-clone/blob/main/src/lib/paths.ts"
click node_context "https://github.com/summonair/claude-clone/blob/main/src/lib/claude.ts"
click node_open "https://github.com/summonair/claude-clone/blob/main/src/commands/open.ts"
click node_repo_picker "https://github.com/summonair/claude-clone/blob/main/src/ui/searchable-checkbox.ts"
click node_github "https://github.com/summonair/claude-clone/blob/main/src/lib/github.ts"
click node_preset_cmd "https://github.com/summonair/claude-clone/blob/main/src/commands/preset.ts"
click node_config_cmd "https://github.com/summonair/claude-clone/blob/main/src/commands/config.ts"
click node_config_store "https://github.com/summonair/claude-clone/blob/main/src/lib/config-store.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_user toneBlue
class node_create,node_clone,node_workspace_paths,node_context,node_open toneAmber
class node_repo_picker,node_github toneMint
class node_preset_cmd,node_config_cmd,node_config_store toneRose
class node_claude,node_github_service,node_git toneIndigo
```

## Components

### CLI entry

- [Command router](https://github.com/summonair/claude-clone/blob/main/src/index.ts): `src/index.ts`

### Workspace lifecycle

- [Create workspace](https://github.com/summonair/claude-clone/blob/main/src/commands/create.ts): `src/commands/create.ts`
- [Parallel cloning](https://github.com/summonair/claude-clone/blob/main/src/lib/clone.ts): `src/lib/clone.ts`
- [Workspace paths](https://github.com/summonair/claude-clone/blob/main/src/lib/paths.ts): `src/lib/paths.ts`
- [Claude context file](https://github.com/summonair/claude-clone/blob/main/src/lib/claude.ts): `src/lib/claude.ts`
- [Reopen workspace](https://github.com/summonair/claude-clone/blob/main/src/commands/open.ts): `src/commands/open.ts`

### Repository selection

- [Searchable repo picker](https://github.com/summonair/claude-clone/blob/main/src/ui/searchable-checkbox.ts): `src/ui/searchable-checkbox.ts`
- [GitHub repo discovery](https://github.com/summonair/claude-clone/blob/main/src/lib/github.ts): `src/lib/github.ts`

### Presets and config

- [Preset management](https://github.com/summonair/claude-clone/blob/main/src/commands/preset.ts): `src/commands/preset.ts`
- [Config commands](https://github.com/summonair/claude-clone/blob/main/src/commands/config.ts): `src/commands/config.ts`
- [Config store](https://github.com/summonair/claude-clone/blob/main/src/lib/config-store.ts): `src/lib/config-store.ts`

### Other components

- **CLI user**
- **Claude Code**
- **GitHub CLI**
- **Git clone**

## Connections

- CLI user → Command router: runs commands (evidence: `src/index.ts`)
- Command router → Create workspace: dispatches create (evidence: `src/index.ts`)
- Command router → Reopen workspace: dispatches open (evidence: `src/index.ts`)
- Command router → Preset management: dispatches presets (evidence: `src/index.ts`)
- Command router → Config commands: dispatches config (evidence: `src/index.ts`)
- Create workspace → Config store: loads settings (evidence: `src/commands/create.ts`)
- Create workspace → GitHub repo discovery: fetches repositories (evidence: `src/commands/create.ts`)
- GitHub repo discovery → GitHub CLI: queries repos (evidence: `src/lib/github.ts`)
- Create workspace → Searchable repo picker: prompts selection (evidence: `src/commands/create.ts`)
- Create workspace → Workspace paths: resolves workspace (evidence: `src/commands/create.ts`)
- Create workspace → Parallel cloning: clones selected repos (evidence: `src/commands/create.ts`)
- Parallel cloning → Git clone: runs clone (evidence: `src/lib/clone.ts`)
- Create workspace → Claude context file: writes workspace context (evidence: `src/commands/create.ts`)
- Create workspace → Claude Code: launches optionally (evidence: `src/commands/create.ts`)
- Claude context file → Claude Code: provides workspace context (evidence: `README.md`)
- Reopen workspace → Config store: loads settings (evidence: `src/commands/open.ts`)
- Reopen workspace → Workspace paths: expands base path (evidence: `src/commands/open.ts`)
- Reopen workspace → Claude Code: launches workspace (evidence: `src/commands/open.ts`)
- Preset management → Config store: reads and saves presets (evidence: `src/commands/preset.ts`)
- Preset management → GitHub repo discovery: fetches repositories (evidence: `src/commands/preset.ts`)
- Preset management → Searchable repo picker: prompts selection (evidence: `src/commands/preset.ts`)
- Config commands → Config store: reads and updates (evidence: `src/commands/config.ts`)
