Skip to content

ciaranbor/pm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pm

Terminal-based project manager built around tmux and git worktrees.

Requirements

  • tmux
  • git

Install

cargo install --path .

Installs the pm binary to ~/.cargo/bin/. Ensure this is in your PATH.

Quick start

Option A: New project from scratch

pm init ~/projects/myapp
cd ~/projects/myapp/main

Creates a project root with a git repo in main/ and a .pm/ state directory.

Option B: Register an existing repo (symlink)

pm register ~/code/myapp --name myapp
cd ~/code/myapp-pm/main

Creates a wrapper directory (myapp-pm/) with a symlink to the original repo as main/. The original repo is untouched.

Option C: Register an existing repo (move)

pm register ~/code/myapp --name myapp --move
cd ~/code/myapp/main

Restructures the repo in-place: moves it into main/ within a new wrapper at the same path. No -pm suffix needed since the original directory becomes the wrapper.

Create a feature

pm feat new login
pm feat new login --context "Implement login page per issue #42"
pm feat new login --context path/to/brief.md

Creates a git branch, worktree, and tmux session (myapp/login). With --context, seeds a TASK.md in the worktree.

List features

pm feat list

Switch to a feature

pm feat switch login             # direct switch
pm feat switch                   # interactive picker (tmux display-menu)

Merge a feature

pm feat merge login             # merge into main
pm feat merge --delete          # merge current feature and clean up

Blocks if either the feature or main worktree has uncommitted changes. Always creates a merge commit (--no-ff). Feature name is detected from CWD if omitted.

Delete a feature

pm feat delete login             # with safety checks
pm feat delete --force           # delete current feature, skip safety checks

Safety checks block deletion if the feature has uncommitted changes or commits not merged into main. Untracked files trigger a warning but don't block. Feature name is detected from CWD if omitted.

Open a project

pm open                          # open/reconstruct sessions for current project

Creates tmux sessions for the main worktree and any active features that are missing sessions. Useful after a reboot or tmux server restart.

Other commands

pm list                          # list all registered projects
pm open                          # open/reconstruct tmux sessions
pm --help                        # full help
pm feat --help                   # feature subcommand help

Development

cargo build
cargo test
cargo clippy
cargo fmt

See design.md for the full spec and CLAUDE.md for development guidelines.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages