MkDevForge.Bbt 0.1.5

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global MkDevForge.Bbt --version 0.1.5
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local MkDevForge.Bbt --version 0.1.5
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=MkDevForge.Bbt&version=0.1.5
                    
nuke :add-package MkDevForge.Bbt --version 0.1.5
                    

bbt

bbt is a .NET CLI for Bitbucket Cloud pull request workflows.

It supports profile-based authentication, PR read/write operations, structured JSON output for scripting, and a raw API command for endpoints that are not wrapped yet.

Install

dotnet tool install --global MkDevForge.Bbt

Verify:

bbt --version

First run after install:

bbt auth login

bbt auth login is interactive by default (prompts for email and token).
For non-interactive use, pass credentials explicitly:

bbt auth login --email <atlassian-email> --token <api-token>

Requirements

  • Bitbucket Cloud account
  • Bitbucket API token
  • Atlassian email address for HTTP Basic auth (email:token)
  • Optional: jq if you want to use --jq

Minimum token scopes required by bbt:

  • read:repository:bitbucket
  • read:workspace:bitbucket
  • read:user:bitbucket
  • read:pullrequest:bitbucket
  • write:pullrequest:bitbucket

Quick start

  1. From your Bitbucket repo folder, login:
bbt auth login
  1. List open pull requests (workspace/repo inferred from git origin):
bbt pr list
  1. View the PR for your current branch (or pass an explicit id):
bbt pr view
  1. Get structured diff JSON:
bbt pr diff <id> --json

Commands

Auth

  • bbt auth login [--email <email>] [--token <token>] [--workspace <slug>] [--profile <name>]
  • bbt auth switch <profile>
  • bbt auth status [--check]
  • bbt auth logout [--profile <name>]

auth login validates credentials with Bitbucket before saving. If --workspace is provided, it also validates access and stores it as the profile default workspace.
auth status --check performs a live API check.

If --email/--token are omitted, auth login prompts interactively (unless stdin is redirected). When prompting for a token, it prints the minimum required scopes above.

Pull requests

  • bbt pr list [--state <STATE>] [--limit <n>]
  • bbt pr view [<id>]
  • bbt pr diff [<id>] [--include-raw]
  • bbt pr comments [<id>] [--limit <n>] [--sort <expr>] [--page <n>] [--pagelen <n>] [--paginate] [--contains <text> | -q/--query <expr>]
  • bbt pr threads [<id>] [--limit <n>] [--sort <expr>] [--pagelen <n>] [--contains <text> | -q/--query <expr>]
  • bbt pr comment <id> (--body <text> | --body-file <path>) [--reply-to <comment-id>] [--file <path> --line <n> [--line-end <n>] [--side <to|from>]]
  • bbt pr review <id> (--approve|--unapprove|--request-changes|--unrequest-changes) [--body <text>|--body-file <path>]

Notes:

  • For pr view, pr diff, pr comments, and pr threads, <id> is optional.
  • If <id> is omitted, bbt tries to resolve the PR from your current git branch.
  • pr list defaults to --state OPEN.
  • pr comment and pr review always require explicit PR id.
  • Inline comments default to --side to (new side).
  • pr comments defaults to newest-first (--sort -created_on) and returns one page by default (50 comments). Use --paginate, a larger --pagelen, or --limit to fetch more.
  • pr review --body/--body-file posts a global comment first, then performs the review action.

Raw API access

  • bbt api <PATH> <METHOD> [--input <file>] [--paginate]

--paginate follows Bitbucket next links and emits a merged values array. bbt api <METHOD> <PATH> ... is also accepted.

Path placeholders:

  • {workspace}
  • {repo} / {repo_slug}

Example:

bbt api "/repositories/{workspace}/{repo}/pullrequests?state=OPEN&pagelen=10" GET --paginate --json

LLM context

  • bbt llms
  • bbt llms --json

Use this to print a single, complete CLI capability reference for AI/automation tooling.

Output and scripting flags

Most commands support:

  • --json for structured output
  • --fields <csv> to keep top-level fields from JSON output
  • --jq <expr> to pipe JSON through external jq
  • --quiet for minimal output
  • --verbose for request diagnostics to stderr
  • --no-retry to disable transient retry/backoff

Rules:

  • --fields and --jq require --json
  • --json and --quiet are mutually exclusive
  • jq is optional unless --jq is used

Workspace/repo resolution

When a command needs workspace/repo, resolution order is:

  1. CLI flags (--workspace, --repo)
  2. Environment (BBT_WORKSPACE, BBT_REPO)
  3. Current profile defaults
  4. Git origin URL (https://bitbucket.org/<workspace>/<repo>.git or git@bitbucket.org:<workspace>/<repo>.git)

Workspace and repo can come from different sources in the same invocation.

Environment variables

  • BBT_EMAIL
  • BBT_TOKEN
  • BBT_WORKSPACE
  • BBT_REPO
  • BBT_BASE_URL (default: https://api.bitbucket.org/2.0)
  • BBT_ALLOW_INSECURE_HTTP (set to allow sending credentials over http:// URLs; not recommended)
  • BBT_DISABLE_CRL_CHECK (set to disable TLS certificate revocation checking)

Environment values override profile values.

Credential and config storage

  • Non-secret config is stored in config.json under OS-specific app config directories.
  • Tokens are stored in:
    • macOS: Keychain
    • Windows: Credential Manager
    • Linux: secret-tool when available
    • Linux fallback: token file with restrictive permissions (0600)

Current scope

  • Bitbucket Cloud only
  • API token auth only (no OAuth flow yet)
  • No dedicated pr comment edit command yet (you can use bbt api PUT .../comments/{id})

License

MIT (LICENSE)

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.1.7 94 2/13/2026
0.1.6 89 2/13/2026
0.1.5 87 2/12/2026
0.1.4 91 2/10/2026
0.1.3 89 2/10/2026
0.1.2 89 2/10/2026
0.1.1 91 2/10/2026