"What if every command you've ever needed was just a
make it
away?"
curl -fsSL instll.sh/inem/rocks | bash
Non-destructive. Just adds two files to your current folder.
Welcome to a new paradigm in developer experience. This isn't just another toolโit's a movement toward effortless automation, collective knowledge sharing, and the elimination of context switching.
Picture this: You're deep in flow, building something amazing. Then you need to deploy. Or run tests. Or check the database. Suddenly you're:
- ๐ค Googling commands you've used 100 times before
- ๐ Copy-pasting from old projects or documentation
- ๐ Context switching between your IDE, terminal, and browser
- ๐ค Losing momentum while figuring out project-specific tooling
Every broken command is a broken flow state.
What if the entire developer community shared a living, breathing repository of commands? What if failing fast became succeeding faster?
make deploy # โ Command not found
make it # โจ Magic happens - command appears
make deploy # โ
Now it works perfectly
This is make-driven development: where your tools adapt to you, not the other way around.
# 1. Initialize the magic
curl -fsSL instll.sh/inem/rocks | bash
# 2. Try any command (it will fail)
make deploy
# 3. Watch the magic happen
make it
# 4. Now it works!
make deploy
That's it. You now have access to hundreds of battle-tested commands.
Every failed command is an opportunity. When make deploy
doesn't exist, make it
finds it, installs it, and you're back to building.
Why should everyone figure out Docker deployment separately? One person writes make deploy
, everyone benefits.
Stay in your terminal. Stay in your flow. Let the tools adapt to your rhythm.
make unknown-command
# Target 'unknown-command' not found. Try: make it
make it
# ๐ฅ Failed command: make unknown-command
# ๐ฅ Fetching latest makefiles...
# ๐ Searching for 'unknown-command' command...
# โ
Found 'unknown-command' command in: make-docker
# ๐ Adding to local Makefile...
make rock git # Download git commands module
make rock rails # Download rails commands module
make rock docker # Download docker commands module
Commands are organized in rocks (modules) that you can pick and mix:
- ๐ง
make-git
: Git workflows (push
,pull
,branch
,merge-to
) - ๐
make-rails
: Rails development (console
,test
,migrate
) - ๐ณ
make-docker
: Container operations (build
,run
,deploy
) - ๐ฆ
make-instll
: Package installation (instll user/package
) - ๐ฎ
make-engine
: The core system (auto-installed)
When you run make rock git
twice:
โ ๏ธ make-git.mk exists, will add new commands in 9s...
Press Ctrl+C to cancel
๐ Adding new commands...
โ Adding command: branch-reset
โ Adding command: uncommit
โ
Added 2 new commands to make-git.mk
Your customizations are preserved. Only new commands are added.
This system teaches you by doing:
Every project gets smart defaults:
make info
# EMAIL: your@email.com
# GITHUB_USER: yourusername
# GIT_REPO: yourusername/yourproject
# REGISTRY: ghcr.io/yourusername/yourproject
# IMAGE_NAME: yourusername-yourproject
# Git workflows
make develop # Switch to develop branch
make main # Switch to main branch
make push # Push current branch
make pull! # Force pull with rebase
# Docker patterns
make build # Build with auto-detected registry
make run # Run with proper port mapping
make logs # Follow container logs
# Rails conventions
make c # Rails console (no autocomplete)
make test # Run test suite
make migrate # Run pending migrations
Start simple, grow complex:
# Beginner: Just works
make deploy
# Intermediate: Understand the pattern
make build push deploy
# Advanced: Customize for your needs
REGISTRY=my-registry.com make deploy
# New team member, first day
git clone company/awesome-project
cd awesome-project
# They try the obvious thing
make test
# โ Target 'test' not found. Try: make it
make it
# โ
Found 'test' command in: make-rails
# ๐ Added to local Makefile
make test
# ๐ Tests are running!
Zero documentation needed. The system teaches itself.
# You're coding, need to deploy quickly
make deploy
# Works instantly - no googling, no copy-pasting
# Need to check logs?
make logs
# Streaming immediately
# Quick database check?
make console
# You're in, ready to debug
Flow state preserved. Momentum maintained.
# You discover a better way to do something
vim rocks/make-rails
# Add your improved command
git push
# Now everyone on every project benefits
Individual learning becomes collective wisdom.
# Your local Makefile
include make-*.mk
# Override defaults
REGISTRY = my-private-registry.com
# Add project-specific commands
setup:
make migrate
make seed
make test
deploy-staging:
ENVIRONMENT=staging make deploy
make rock nonexistent
# โ Failed to download make-nonexistent (not found in rocks/)
make it! # Execute immediately after finding
# ๐ Executing command: deploy
# [command runs immediately]
# Works with your existing tools
make build # Builds Docker image
make test # Runs your test suite
make deploy # Deploys to configured environment
# Composes beautifully
make build test deploy
This isn't just about commands. It's about removing friction from the creative process:
Idea โ Google โ StackOverflow โ Copy-paste โ Debug โ Modify โ Finally works
Idea โ make it โ Works
- Individual: You save time and stay in flow
- Team: Shared knowledge, consistent workflows
- Community: Battle-tested patterns, continuous improvement
- Industry: Elevated baseline for developer experience
curl -fsSL instll.sh/inem/rocks | bash
This creates:
- โ
Makefile
withinclude make-*.mk
- โ
make-engine.mk
with core functionality - โ Smart defaults for your project
- โ
Automatic configuration of
rocks.source
make info # See your project variables
make rock git # Add git commands
make rock rails # Add rails commands (if applicable)
make deploy # Let it fail, then...
make it # Watch the magic
This repository isn't just a toolโit's a personal command collection system. Here's how it works:
When you fork this repository, you're creating your own personal command library:
- ๐ฏ Customization: Add your own make-commands to
rocks/
- ๐ข Team Sharing: Share your collection with your team
- ๐ Evolution: Your commands evolve with your workflow
- ๐ฆ Distribution: Others can use your commands via
instll.sh/YOUR_USERNAME/rocks/init
The system automatically determines where to fetch commands from using rocks.source
:
- First run:
init.sh
tries to detect your GitHub username viagh
CLI - Auto-configuration: Sets
git config --global rocks.source YOUR_USERNAME/rocks
- Command execution:
make it
andmake rock
use this source - Manual override: You can always set it manually
-
Fork on GitHub
- Click "Fork" button on this repository
- You now have
github.com/YOUR_USERNAME/rocks
-
Clone Your Fork
git clone https://github.com/YOUR_USERNAME/rocks cd rocks
-
Configure Your Source
git config --global rocks.source YOUR_USERNAME/rocks
-
Customize Your Collection
- Add your own make-files to
rocks/
- Modify existing commands
- Create team-specific modules
- Add your own make-files to
-
Use in Projects
# Others can now use your collection: curl -fsSL instll.sh/YOUR_USERNAME/rocks/init | bash
# Alice forks and customizes
git clone https://github.com/alice/rocks
cd rocks
git config --global rocks.source alice/rocks
# Alice adds her custom commands
echo "deploy-staging:
docker build -t myapp:staging .
docker push myapp:staging" >> rocks/make-deploy
# Alice commits and pushes
git add rocks/make-deploy
git commit -m "Add staging deployment"
git push
# Bob uses Alice's collection
curl -fsSL instll.sh/alice/rocks/init | bash
make deploy-staging # Now available!
Simply add new .mk
files to the rocks/
directory:
# Create a new module
echo "deploy:
docker build -t \$(IMAGE_NAME) .
docker push \$(REGISTRY):\$(IMAGE_TAG)" > rocks/make-deploy
# Commit and push
git add rocks/make-deploy
git commit -m "Add deployment commands"
git push
- Shared Fork: Team maintains one fork with shared commands
- Individual Forks: Each developer has personal + team commands
- Hybrid: Use
make rock alice/docker
to get specific person's commands
- Personal Productivity: Your own shortcuts and workflows
- Project-Specific: Commands unique to your project
- Team Standards: Shared deployment, testing, and development commands
- Learning: Experiment with new tools and patterns
# 1. Fork the repository
# 2. Add commands to appropriate rocks/make-* file
# 3. Submit PR
# Example: Adding to rocks/make-git
troubleshoot:
git log --oneline -10
git status
git diff --stat
# Create rocks/make-kubernetes
build-manifests:
kustomize build . > manifests.yaml
deploy-k8s:
kubectl apply -f manifests.yaml
- Commands should be memorable (
make deploy
, notmake deploy-to-production-with-rollback
) - Embrace convention over configuration (smart defaults)
- Optimize for flow state (no prompts, no confirmations in common paths)
- Make it teachable (commands should be self-explanatory)
Imagine a world where:
- โจ Every project has instant, discoverable commands
- ๐ง Collective intelligence eliminates repetitive learning
- ๐ Flow state is the default developer experience
- ๐ Automation is effortless and shareable
This is just the beginning. Make was created in 1976. It's time for an upgrade.
- ๐ Live Demo - See it in action
- ๐ฟ Rock Collection - Browse available modules
- ๐ฌ Discussions - Share patterns and ideas
- ๐ Issues - Report bugs or request features
"The best tools are invisible. They get out of your way and let you create."
Join the revolution. Make commands, not barriers.
curl -fsSL instll.sh/inem/rocks | bash
๐ค Built by annoyed developers โ for annoyed developers.