99problems
99problems is an AI-native CLI tool for issue and pull-request context retrieval across GitHub, GitLab, Jira, and Bitbucket.
It supports structured output for AI agents and direct human usage, with machine-readable formats (json, yaml, jsonl/ndjson) and a human-readable text format.
Why This Tool
Software tasks often depend on decisions made in earlier issues and pull requests.
99problems helps recover that history in a consistent shape so current work can be grounded in prior context.
This is useful for Agentic Engineering workflows and for humans doing direct investigation in terminals or scripts.
Installation
# or
Quick Start
# Fetch one GitHub issue
# Fetch one PR with inline review comments
# Search GitLab issues
# Fetch Jira issue by key
# Fetch Bitbucket Cloud PR by ID
# Fetch Bitbucket Data Center PR by ID
# Stream as JSON Lines for pipelines
# Scaffold the canonical Agent Skill
Commands
99problems get [OPTIONS] Fetch issue and pull request conversations
99problems skill init [OPTIONS] Scaffold the canonical Agent Skill
99problems config <SUBCOMMAND> Inspect and edit .99problems configuration
99problems completions <SHELL> Generate shell completion scripts
99problems man [OPTIONS] Generate man pages (stdout or files)
Global options:
-v, --verbose Increase diagnostics (-v, -vv, -vvv)
-Q, --quiet Show errors only
--error-format <FMT> Error output: text|json (default: text)
-h, --help Print help
-V, --version Print version
Configuration
99problems uses instance-based TOML config from:
~/.99problems./.99problems
Example:
= "work-gitlab"
[]
= "github"
= "owner/repo"
= "ghp_your_token"
[]
= "gitlab"
= "https://gitlab.mycompany.com"
= "group/project"
= "glpat_your_token"
[]
= "jira"
= "https://jira.mycompany.com"
= "CPQ"
= "atlassian_api_token"
= "user@example.com"
[]
= "bitbucket"
= "cloud"
= "workspace/repo_slug"
= "username:app_password"
[]
= "bitbucket"
= "selfhosted"
= "https://bitbucket.mycompany.com"
= "PROJECT/repo_slug"
= "pat_or_bearer_token"
Bitbucket support is pull-request only; when --type is omitted, 99problems defaults to PRs.
For Bitbucket Cloud, use an app-password, repository access token, or workspace-level access token (premium feature) in token.
Selection order: --instance -> single configured instance -> default_instance.
Telemetry (testing-first, config-activated):
[]
= true
= "http://localhost:4318/v1/traces"
= ["h2", "hyper", "hyper_util", "rustls"]
Telemetry is best-effort and traces 99problems get without changing normal command behavior or exit codes.
Use telemetry.exclude_targets to suppress noisy span-target prefixes (prefix match).
Equivalent config command:
Build-time feature:
telemetry-otelcontrols whether OTEL support is compiled in.- Default builds include it.
- Use
--no-default-featuresfor telemetry-free release binaries.
Man Pages
Generate and print root man page:
Generate all pages to disk:
Output Modes
get supports two orthogonal controls:
--format:json,yaml,jsonl,ndjson(alias ofjsonl),text--output-mode:auto,batch,stream(or--stream)
Payload controls:
--no-comments: skip issue/PR comments--include-review-comments: include inline review comments (for PRs)--no-links: skip linked-issue/PR metadata
Defaults:
- TTY stdout:
--format text,--output-mode auto(resolved to streaming) - piped stdout / file output:
--format jsonl,--output-mode auto(resolved to streaming)
Use --output-mode batch when you want all-or-nothing output at the end.
Shell Completions
Agent Skill Scaffold
Canonical editable skill sources live in templates/skills/99problems.
Generate a standardized Agent Skills scaffold under .agents/skills/99problems with:
Use user scope by overriding path:
Support this project
If 99problems saves you time, you can support ongoing maintenance via GitHub Sponsors or Ko-fi.
Contributing
See CONTRIBUTING.md.
License
See LICENSE.
Copyright (c) 2026 Mikael Beyene