One command, zero configuration. The smartest way to set up Zed for any project.
zs (Zed Smart Setup) automatically configures the Zed editor for your project. It detects your project type, installs necessary debug dependencies, creates task configurations, and sets up appropriate git hooks - all with a single command.
- Zero Configuration: Just run
zsin any project directory - Smart Detection: Automatically identifies Rails, React, Python, Elixir, and more
- Minimal Dependencies: Only installs what Zed needs for debugging
- Context Aware: Different setups for work, personal, and learning projects
- Non-Intrusive: Smart caching prevents unnecessary re-runs
- Git Hook Management: Installs appropriate hooks based on project context
curl -sSL https://raw.githubusercontent.com/AnjanJ/zs/main/install.sh | bashgit clone https://github.com/AnjanJ/zs.git
cd zs
./install.shNavigate to any project and run:
zsThat's it. No flags, no configuration files, no setup wizards.
- Detects your project type by examining files like
Gemfile,package.json,requirements.txt - Installs minimal debug dependencies (only for Zed, not global)
- Creates
.zed/tasks.jsonwith project-appropriate tasks - Creates
.zed/debug.jsonwith debug configurations - Sets up git hooks based on your workspace context
# In a Rails project
$ zs
✅ Rails project ready (15 tasks, debugging enabled)
# In a React project
$ zs
✅ React project ready (12 tasks, debugging enabled)
# In a Python project
$ zs
✅ Python project ready (8 tasks, debugging enabled)
# Running again (smart caching)
$ zs
✅ Already configured (Rails project)zs automatically detects:
- Rails/Ruby: Presence of
Gemfile - React:
package.jsonwith react dependency - Node.js: Generic
package.json - Python:
requirements.txtorpyproject.toml - Elixir:
mix.exs - Universal: Fallback for other projects
zs adapts based on directory patterns:
- Work (
*/work/*): Adds commit message reminders for ticket references - Learning (
*/code/learning/*): Optimized for tutorials and experiments - Personal (
*/code/*): Standard personal project setup
Debugging in Zed is still evolving. While zs sets up debug configurations:
- Ruby: Debugging is experimental (requires
debuggem) - Python: Full support via
debugpy - JavaScript/TypeScript: Full support
- Elixir: Not yet supported in Zed
We're actively testing and updating configurations as Zed's debugging capabilities mature.
zs forceZS_VERBOSE=true zsCreate a .nohooks file in your project or .git/ directory to skip git hook installation.
After running zs, your project will have:
your-project/
├── .zed/
│ ├── tasks.json # Task runner configurations
│ └── debug.json # Debug adapter configurations
└── .git/hooks/ # Smart git hooks (if applicable)
├── pre-commit
└── commit-msg
zs includes templates for various project types:
- Task configurations for Rails, React, Python, Elixir, and more
- Debug configurations for each language/framework
- CI/CD templates for GitHub Actions and GitLab CI
- Git commit message templates
We welcome contributions! See CONTRIBUTING.md for guidelines.
MIT License - see LICENSE for details.
Q: Do I need to configure anything?
A: No. That's the point.
Q: What if I already have .zed configurations?
A: zs won't overwrite recent configs (< 30 days old) unless you use zs force.
Q: Can I customize the templates?
A: Yes! Templates are stored in ~/.config/zs/templates/. Feel free to modify them.
Q: Does it work with other editors?
A: No. zs is specifically designed for Zed's task and debug systems.
Q: How do I uninstall?
A: Remove ~/.config/zs/ and delete the zs line from your shell RC file.
The best interface is no interface.