Skip to main content

dupe-profiles

Build, list, open and remove isolated, colour-coded profiles of desktop apps (Claude, ChatGPT, Grok Bot, Slack, VS Code, Chrome, or any Electron app by path) on macOS, Windows or Linux. Use when the user wants a second copy of an app for another account, a "work" and "personal" version of an app, separate logins side by side, or a different icon colour per account. Triggers on "work profile", "second instance", "two accounts", "clone the app", "separate Claude for work", "Claude Work", "duplicate app".

Informations de source

Dépôt
HKTITAN/dupe
Dernière activité de la source
7 septembre 2026 à 10:04
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
dupe-profiles
description
Build, list, open and remove isolated, colour-coded profiles of desktop apps (Claude, ChatGPT, Grok Bot, Slack, VS Code, Chrome, or any Electron app by path) on macOS, Windows or Linux. Use when the user wants a second copy of an app for another account, a "work" and "personal" version of an app, separate logins side by side, or a different icon colour per account. Triggers on "work profile", "second instance", "two accounts", "clone the app", "separate Claude for work", "Claude Work", "duplicate app".
license
MIT
# dupe profiles `dupe` turns one installed app into several profiles. Each profile has its own data directory (so its own login), its own launcher and Dock/Start Menu entry, and the app's icon recoloured so the copies are distinguishable at a glance. The stock app is untouched and remains the default profile. ## How to run it Prefer the MCP tools if the `dupe` server is connected: `list_apps`, `check_updates`, `add_profile`, `remove_profile`, `update_profiles`, `autoupdate`, `rebuild_profiles`, `open_profile`, `install_app`, `recolor_icon`, `palette`. They return structured JSON. Otherwise use the CLI from this plugin's root with Node 20+, no install needed: ```bash node <plugin-root>/bin/dupe.js list node <plugin-root>/bin/dupe.js add claude work node <plugin-root>/bin/dupe.js add claude client-a --color green --label "Claude · Acme" node <plugin-root>/bin/dupe.js add "/Applications/Slack.app" personal node <plugin-root>/bin/dupe.js remove claude work # keeps data; add --purge to delete it node <plugin-root>/bin/dupe.js status # is each profile level with the app it copies? node <plugin-root>/bin/dupe.js update # rebuild whatever is behind node <plugin-root>/bin/dupe.js autoupdate on # keep them level in the background node <plugin-root>/bin/dupe.js open claude work node <plugin-root>/bin/dupe.js ui # the browser interface, connected to this computer ``` If `dupe` is installed globally (`npm install -g @hktitan/dupe`), the command is just `dupe`. ## Process 1. **Look before building.** Run `list_apps` (or `dupe list`). It says which presets are installed and where, and which profiles already exist. Do not guess paths; if the app isn't a preset, pass its path. 2. **Name the profile from the user's words.** "work", "personal", "client-a", "acme". Names are slugged (lowercase, hyphens). The label defaults to "<App> <Profile>"; set `label` when the user gave one. 3. **Colour.** The first profile of an app is blue (Stephen Wu's "blue means work"); each further one takes the next palette colour automatically. Only pass `color` when the user asked for one. Accept palette names (blue, green, purple, amber, red, teal, pink, gray) or a hex. 4. **Build**, then tell the user exactly what was made: label, where the launcher/bundle is, and the hint the tool returns (pin from Start Menu on Windows; Launchpad/Dock on macOS; app launcher on Linux). 5. **Profiles keep themselves level with the stock app.** A macOS clone rebuilds itself when it is opened, and `autoupdate` with `action: "on"` schedules the same catch-up in the background on every platform — suggest it once a user has more than one profile. Use `check_updates` to answer "is anything behind?" and `update_profiles` to act on it; neither rebuilds a profile that is open, so say so rather than forcing it. `rebuild_profiles` is the blunt version, for when a profile is visibly broken rather than merely behind. ## What isolation means here Profiles are separated by Chromium's `--user-data-dir` plus whatever the preset pins: ChatGPT's `CODEX_HOME`, Grok Bot's `SAND_DATA_ROOT`, VS Code/Cursor's `--extensions-dir`. Anything an app stores elsewhere (a keychain item, a global daemon) is shared. Say so if the user asks about a guarantee. ## When not to use it - Android or iOS: nothing can be built. Point the user at `docs/android.md` (work profile via Shelter, OEM app cloning) and `docs/ios.md` (isolated Home Screen web apps) in this plugin. - Apps that are not Electron or Chromium based will not honour the flag. The tool still builds a launcher, but the profile will share data; warn the user first. - Only run `remove_profile` with `purge: true` when the user explicitly wants that profile's data gone. ## Platform notes - **Windows**: needs the .NET Framework `csc.exe` (present on every Windows 10/11). Store (MSIX) installs of Claude and ChatGPT are supported; the launcher resolves the package at launch. The launcher process stays alive next to the app to give it a separate taskbar identity. - **macOS**: clones the bundle (APFS copy-on-write), re-signs ad hoc, drops quarantine. A clone is a copy of the stock app, so it is rebuilt when that app changes — its own launcher does this at open time, and the background job does it sooner. - **Linux**: writes a `.desktop` entry with `--class` so the dock separates the windows. If the icon is only SVG, `rsvg-convert`, `inkscape` or ImageMagick must be present, or pass `--icon some.png`.
Voir sur GitHub