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".

Informações da origem

Repositório
HKTITAN/dupe
Última atividade na origem
7 de setembro de 2026 às 10:04
Idioma detectado do SKILL.md
inglês
Estrelas
1
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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`.
Ver no GitHub