{"id":43980897,"url":"https://github.com/corwinm/arashi","last_synced_at":"2026-04-08T01:03:22.664Z","repository":{"id":336129509,"uuid":"1148370134","full_name":"corwinm/arashi","owner":"corwinm","description":"Arashi is a Git worktree manager that pairs perfectly with a spec-driven development workflow in a multi-repo environment.","archived":false,"fork":false,"pushed_at":"2026-03-31T01:14:18.000Z","size":692,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-31T04:37:46.571Z","etag":null,"topics":["spec-driven-development","worktree-manager","worktrees"],"latest_commit_sha":null,"homepage":"https://arashi.haphazard.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/corwinm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-02T22:14:34.000Z","updated_at":"2026-03-31T01:14:16.000Z","dependencies_parsed_at":"2026-02-03T12:03:57.855Z","dependency_job_id":null,"html_url":"https://github.com/corwinm/arashi","commit_stats":null,"previous_names":["corwinm/arashi"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/corwinm/arashi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corwinm%2Farashi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corwinm%2Farashi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corwinm%2Farashi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corwinm%2Farashi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/corwinm","download_url":"https://codeload.github.com/corwinm/arashi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/corwinm%2Farashi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31535206,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["spec-driven-development","worktree-manager","worktrees"],"created_at":"2026-02-07T09:02:57.445Z","updated_at":"2026-04-08T01:03:22.646Z","avatar_url":"https://github.com/corwinm.png","language":"TypeScript","readme":"# Arashi\n\n[![npm version](https://img.shields.io/npm/v/arashi.svg)](https://www.npmjs.com/package/arashi)\n[![CI](https://github.com/corwinm/arashi/actions/workflows/ci.yml/badge.svg)](https://github.com/corwinm/arashi/actions/workflows/ci.yml)\n[![License](https://img.shields.io/github/license/corwinm/arashi.svg)](https://github.com/corwinm/arashi/blob/main/LICENSE)\n\nArashi is a Git worktree manager for meta-repositories.\n\nIt keeps related repositories aligned while you work on a feature branch across a shared workspace.\n\n[Documentation](https://arashi.haphazard.dev)\n\n## Installation\n\n### Option 1: Install with curl (official direct install)\n\nPrerequisites:\n\n- `curl`\n- `bash`\n- A SHA-256 tool (`shasum`, `sha256sum`, or `openssl`)\n\n```bash\ncurl -fsSL https://arashi.haphazard.dev/install | bash\n```\n\nInstall a specific release:\n\n```bash\ncurl -fsSL https://arashi.haphazard.dev/install | ARASHI_VERSION=1.4.0 bash\n```\n\nVerify install:\n\n```bash\narashi --version\n```\n\nBy default, the installer places `arashi` in `~/.arashi/bin`, adds that path to your shell config, and in interactive installs offers to enable shell integration for `arashi switch --cd`.\n\nIf curl installation fails, use npm installation below or the manual release instructions in [`docs/INSTALLATION.md`](./docs/INSTALLATION.md).\n\n### Option 2: Install with npm\n\n```bash\nnpm install -g arashi\n```\n\nVerify install:\n\n```bash\narashi --version\n```\n\nIf npm is unavailable or fails, use the curl installer command above or the manual release instructions in [`docs/INSTALLATION.md`](./docs/INSTALLATION.md).\n\n### Manual install from GitHub Releases\n\nIf you prefer not to use npm, download a platform binary from [GitHub Releases](https://github.com/corwinm/arashi/releases) and place it on your `PATH`.\n\nmacOS (Apple Silicon):\n\n```bash\ncurl -L https://github.com/corwinm/arashi/releases/latest/download/arashi-macos-arm64 -o arashi\nchmod +x arashi\nsudo mv arashi /usr/local/bin/arashi\n```\n\nLinux (x64):\n\n```bash\ncurl -L https://github.com/corwinm/arashi/releases/latest/download/arashi-linux-x64 -o arashi\nchmod +x arashi\nsudo mv arashi /usr/local/bin/arashi\n```\n\nWindows (PowerShell):\n\n```powershell\nInvoke-WebRequest -Uri \"https://github.com/corwinm/arashi/releases/latest/download/arashi-windows-x64.exe\" -OutFile \"arashi.exe\"\n# Move arashi.exe to a folder on your PATH\n```\n\nYou can also build from source for local development:\n\n```bash\nbun install\nbun run build\n```\n\n## Command Surface\n\nArashi currently provides these commands:\n\n- `arashi init`\n- `arashi add \u003cgit-url\u003e`\n- `arashi clone [--all]`\n- `arashi create \u003cbranch\u003e`\n- `arashi list`\n- `arashi status`\n- `arashi remove \u003cbranch|path\u003e`\n- `arashi switch [filter] [--repos|--all] [--cd|--no-cd] [--sesh] [--no-default-launch]`\n- `arashi shell init \u003cbash|zsh|fish\u003e`\n- `arashi shell install`\n- `arashi pull`\n- `arashi sync`\n- `arashi setup [--only \u003crepo\u003e] [--verbose]`\n\n## Quick Example\n\n```bash\narashi init\narashi add git@github.com:your-org/frontend.git\narashi add git@github.com:your-org/backend.git\narashi create feature-auth-refresh\narashi create feature-auth-refresh --launch\narashi create feature-auth-refresh --no-launch\narashi shell install\narashi status\narashi switch feature-auth-refresh          # parent repo worktrees\narashi switch --repos feature-auth-refresh  # child repo worktrees in current workspace\narashi switch --all feature-auth-refresh    # all repos\narashi switch --repos docs                  # repo-name matching in child repos\narashi switch --cd feature-auth-refresh     # parent-shell cd when shell integration is active\narashi switch --no-default-launch           # bypass configured launch mode defaults once\n```\n\n## Workflow Guides\n\nUse the docs site workflow guides when you want setup guidance by outcome instead of by individual command.\n\n- Hooks and configuration defaults: [arashi.haphazard.dev/workflows/hooks-and-config](https://arashi.haphazard.dev/workflows/hooks-and-config/)\n- Integrations for VSCode, tmux, and `tmux` plus `sesh`: [arashi.haphazard.dev/workflows/integrations](https://arashi.haphazard.dev/workflows/integrations/)\n- Agent-assisted and spec-driven change flow: [arashi.haphazard.dev/workflows/agents-and-specs](https://arashi.haphazard.dev/workflows/agents-and-specs/)\n\n## Shell Integration\n\nUse shell integration when you want `arashi switch` to change the current shell directory instead of only opening a new terminal or editor context.\n\nThe official curl installer can offer this automatically. If you skip it or use npm, install it for the active shell with:\n\n```bash\narashi shell install\n```\n\nOr print wrapper code for manual setup:\n\n```bash\narashi shell init bash\narashi shell init zsh\narashi shell init fish\n```\n\nOnce installed, you can use `arashi switch --cd \u003cfilter\u003e` for one-off parent-shell switching or set `.arashi/config.json` `defaults.switch.mode` to `\"cd\"` or `\"auto\"`.\n\nIf shell integration is inactive, `arashi switch --cd` warns and skips launch fallback for that invocation.\n\nFor automated installs, set `ARASHI_SHELL_INTEGRATION=yes` to enable it without prompting or `ARASHI_SHELL_INTEGRATION=no` to skip it.\n\n## Hooks\n\nArashi can run lifecycle hooks during `arashi create` and `arashi remove`.\n\n- Global hooks in `.arashi/hooks/`:\n  - `pre-create.sh`\n  - `post-create.sh`\n  - `pre-remove.sh`\n  - `post-remove.sh`\n- Repository-specific hooks:\n  - `pre-create.\u003crepo\u003e.sh`\n  - `post-create.\u003crepo\u003e.sh`\n- Scoped remove hooks:\n  - repository scope: `repos/\u003crepo\u003e/.arashi/hooks/pre-remove.sh` and `post-remove.sh`\n  - global shared: `~/.arashi/hooks/pre-remove.sh` and `post-remove.sh`\n  - global targeted: `~/.arashi/hooks/\u003crepo\u003e/pre-remove.sh` and `post-remove.sh`\n\nFor `arashi remove`, hook execution order is: repository scope -\u003e workspace-root scope -\u003e global targeted scope -\u003e global shared scope.\n\n`pre-remove.sh` is useful for teardown before deletion (for example, stopping tmux sessions), and `post-remove.sh` can run final cleanup after remove operations complete.\n\nSee [`docs/hooks.md`](./docs/hooks.md) for hook behavior, environment variables, and examples.\n\n## Workflow Shortcuts\n\nUse `arashi list` with `fzf` and optional keybinds to speed up daily navigation.\n\n### Jump to a worktree (`cd`)\n\n```bash\n# One-off jump\ncd \"$(arashi list | fzf)\"\n```\n\n```bash\n# Bash keybind (Ctrl+G)\nbind '\"\\C-g\":\"cd \\$(arashi list | fzf)\\n\"'\n```\n\n```zsh\n# Zsh keybind (Ctrl+G)\nbindkey -s '^g' 'cd $(arashi list | fzf)\\n'\n```\n\n### Open or switch tmux sessions with `sesh`\n\n```bash\n# One-off session connect\nsesh connect \"$(arashi list | fzf)\"\n```\n\n```bash\n# Bash keybind (Ctrl+S)\nbind '\"\\C-s\":\"sesh connect \\$(arashi list | fzf)\\n\"'\n```\n\n```zsh\n# Zsh keybind (Ctrl+S)\nbindkey -s '^s' 'sesh connect $(arashi list | fzf)\\n'\n```\n\nYou can also use `arashi switch --sesh` directly inside tmux to open the selected worktree in a new tmux window.\n\n`arashi switch` also detects tmux, Kitty, Ghostty, WezTerm, and iTerm2 contexts and prefers terminal-native launch behavior when available.\n\n### Fast remove selection\n\n```bash\n# Select and remove a worktree quickly\narashi remove -f \"$(arashi list | fzf)\"\n```\n\nIf you prefer the term `delete`, create a shell alias:\n\n```bash\nalias arashi-delete='arashi remove -f'\n```\n\n## Configuration Schema\n\nArashi publishes a JSON Schema for `.arashi/config.json` so editors can validate and autocomplete your config.\n\n- Stable URL: `https://unpkg.com/arashi/schema/config.schema.json`\n- Version-pinned URL: `https://unpkg.com/arashi@1.7.0/schema/config.schema.json`\n\nExample config header:\n\n```json\n{\n  \"$schema\": \"https://unpkg.com/arashi/schema/config.schema.json\",\n  \"version\": \"1.0.0\",\n  \"reposDir\": \"./repos\",\n  \"defaults\": {\n    \"create\": {\n      \"switch\": true,\n      \"launch\": true,\n      \"launchMode\": \"sesh\"\n    },\n    \"switch\": {\n      \"mode\": \"auto\",\n      \"launchMode\": \"sesh\"\n    }\n  },\n  \"repos\": {}\n}\n```\n\n`defaults.switch.mode` accepts `\"launch\"`, `\"cd\"`, or `\"auto\"`. `\"auto\"` prefers parent-shell switching only when shell integration is active.\n\nDefaults precedence for create/switch behavior: explicit CLI flag \u003e opt-out flag \u003e config default \u003e built-in default.\n\n## skills.sh Integration\n\nArashi also ships a dedicated `skills.sh` integration package for guided installation, workflow examples, and troubleshooting.\n\n- Skill repository: [`repos/arashi-skills`](../arashi-skills/README.md)\n- Canonical skill manifest: [`repos/arashi-skills/skills/arashi/SKILL.md`](../arashi-skills/skills/arashi/SKILL.md)\n- Workflow catalog: [`repos/arashi-skills/skills/arashi/references/workflows.md`](../arashi-skills/skills/arashi/references/workflows.md)\n- Session shortcuts: [`repos/arashi-skills/skills/arashi/references/session-shortcuts.md`](../arashi-skills/skills/arashi/references/session-shortcuts.md)\n\n## Documentation\n\n- Installation details: [`docs/INSTALLATION.md`](./docs/INSTALLATION.md)\n- Configuration details: [`docs/configuration.md`](./docs/configuration.md)\n- Clone command details: [`docs/commands/clone.md`](./docs/commands/clone.md)\n- Hook behavior: [`docs/hooks.md`](./docs/hooks.md)\n- Workflow guides: [https://arashi.haphazard.dev/workflows/](https://arashi.haphazard.dev/workflows/)\n- Shell integration details: [`docs/commands/shell.md`](./docs/commands/shell.md)\n- Setup command details: [`docs/commands/setup.md`](./docs/commands/setup.md)\n- Switch command details: [`docs/commands/switch.md`](./docs/commands/switch.md)\n- Remove command details: [`docs/commands/remove.md`](./docs/commands/remove.md)\n- FZF integration: [`docs/FZF_COMPATIBILITY.md`](./docs/FZF_COMPATIBILITY.md)\n\n## Contributing\n\nUse the canonical guide: [`CONTRIBUTING.md`](./CONTRIBUTING.md).\n\nFor specs and planning workflow, see the specs repository: [github.com/corwinm/arashi-arashi](https://github.com/corwinm/arashi-arashi).\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorwinm%2Farashi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcorwinm%2Farashi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorwinm%2Farashi/lists"}