CLI reference
Every pln command and flag.
The CLI installs as pln (alias: plain). Most commands operate on a repository and take --repo <org>/<name>. List-style commands accept --json for machine-readable output.
Authentication and global flags
pln login [--url <url>] # device-flow sign in
pln logout # remove local credentials
pln whoami # current user and organisations
| Flag / variable | Meaning |
|---|---|
--url <url> | Target server for this invocation |
PLAIN_URL | Default server for the shell |
--repo <org>/<name> | Repository for the command |
--json | JSON output on list/get commands |
Credentials live in ~/.plain/credentials.json (owner-only permissions).
issue
pln issue list [--status todo|in_progress|done]
pln issue get --number <n>
pln issue branch --number <n> # prints a linked branch name
pln issue create --title <t> [--body <t> | --body-file <path>]
[--priority none|urgent|high|medium|low]
[--effort none|low|medium|high|extra-high]
[--labels a,b] [--assignee <id>]
pln issue update --number <n> [--title] [--body] [--status]
[--priority] [--effort] [--labels]
[--assignee | --unassign]
pln issue delete --number <n>
pr
pln pr list [--status draft|open|closed]
pln pr get --number <n>
pln pr create --base <branch> --head <branch> --title <t>
[--body <t> | --body-file <path>]
pln pr update --number <n> [--title] [--body] [--status]
[--labels] [--reviewers] [--assignee | --unassign]
pln pr merge --number <n>
pln pr close --number <n>
pln pr reopen --number <n>
doc
pln doc list
pln doc get --id <docId>
pln doc create --title <t> [--body <t> | --body-file <path>]
pln doc update --id <docId> [--title] [--body]
pln doc delete --id <docId>
comment and review
pln comment list --on pr|issue --number <n>
pln comment create --on pr|issue --number <n> --body <t> | --body-file <path>
pln comment update --id <commentId> --body <t> | --body-file <path>
pln comment delete --id <commentId>
pln review list --number <n>
pln review create --number <n> --event comment|approve|request_changes
[--summary <t>] [--comments-file <path>]
--comments-file is a JSON array of inline comments: { "path", "line", "side": "old"|"new", "body" }.
relation
pln relation list --on pr|issue --number <n>
pln relation add --type <kind> --from pr:<n>|issue:<n> --to pr:<n>|issue:<n>
pln relation delete --id <relationId>
repo
pln repo list
pln repo create --name <name>
pln repo rename --repo <name> --name <newName>
pln repo feedback --repo <name> --enabled true|false
pln repo delete --repo <name>
token and publish
pln token create --name <label> [--org <slug>] [--read-only] [--ttl-minutes <n>]
pln publish [--tag <dist-tag>]
token create prints the token once with a ready-made .npmrc block. publish mints a short-lived token and publishes the scoped package in the current directory. See Registry tokens and Publishing.