boringpm
v0.1.5
Published
Project manager CLI for scripts, automation, and agent workflows
Readme
boringpm CLI
Project manager CLI for scripts, automation, and agent workflows.
Install
npm i -g boringpmCommand
When installed globally, use:
boringpm
If you're running from source in this repo, use npm run dev -- <command> from cli/.
By default, boringpm uses https://boringpm.onrender.com as the API URL.
You can override it with PM_API_URL or --api-url.
Login UX (recommended)
Interactive login with persisted token:
boringpm login
boringpm whoami
boringpm project list
boringpm logoutThis stores auth session data in:
~/.projectmanager/auth.json
Project reference behavior
Commands that target a project accept either:
- project ID
- project name (case-insensitive exact match)
If multiple projects have the same name, use the project ID.
Team management examples
# Create and manage teams
boringpm team create "Engineering Team"
boringpm team list
boringpm team view <team-id>
boringpm team update <team-id> --name "New Team Name"
# Add and remove team members (owner only)
boringpm team add-member <team-id> <user-id>
boringpm team remove-member <team-id> <user-id>
# List projects in a team
boringpm team projects <team-id>
# Delete team (owner only, blocked if projects exist)
boringpm team delete <team-id>Project management examples
# Create project (optionally linked to team)
boringpm project create "My Project"
boringpm project create "Team Project" --team <team-id>
# View projects
boringpm project list
boringpm project view minigtaSingle-entity view examples
boringpm plan view <plan-id>
boringpm task view <task-id>Spec-first workflow examples
# Create and approve spec first
boringpm plan create minigta "Auth hardening spec" --content "..."
boringpm plan approve <plan-id>
# Create task linked to approved spec
boringpm task create minigta "Implement auth guard" --plan <plan-id>Agent workflow examples
# See only tasks assigned to you in one project
boringpm task list minigta --mine
# See your tasks across all visible projects
boringpm task mine --status in_progress
# Claim a specific task
boringpm task claim <task-id>
# Claim the next pending task in the project
boringpm task next minigta
# Add test scenarios and record results
boringpm task test-add minigta <task-id> "happy path" --steps "..." --expected "..."
boringpm task tests minigta <task-id>
boringpm task test-result minigta <task-id> <scenario-id> pass --evidence "CI run #123"
# Move task to testing, then complete with note
boringpm task move <task-id> testing
boringpm task done <task-id> --note "Implemented endpoint + tests"
# Forced completion requires waiver metadata
boringpm task done <task-id> --force --waiver-reason "prod incident" --approved-by lead-user-id
# Release assignment (defaults to pending when in_progress/testing)
boringpm task release <task-id>
# Add or read task comments
boringpm task comment minigta <task-id> "started implementation"
boringpm task comments minigta <task-id>
# Legacy alias (also clears assignee)
boringpm task unclaim <task-id>
# Delete commands prompt for confirmation by default
boringpm task delete <task-id>
boringpm plan delete <plan-id>
# Use --force / -f for non-interactive runs
boringpm task delete <task-id> --force
boringpm plan delete <plan-id> -fCompletion gate
task done is server-enforced and succeeds only when:
- task status is
testing - linked spec plan is
approved - at least one test scenario exists
- every test scenario has
status=pass
Use --force --waiver-reason --approved-by only for audited exceptions.
Non-interactive auth options
1) Environment token
export PM_AUTH_TOKEN=<token>2) Per-command token
boringpm --token <token> project list3) Raw auth endpoints
boringpm auth send-link [email protected]
boringpm auth verify [email protected] <code>
boringpm auth me --token <token>