@mbe24/99problems
v0.4.0
Published
GitHub issue conversation fetcher CLI
Downloads
108
Readme
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
npm install -g @mbe24/99problems
# or
cargo install problems99Quick Start
# Fetch one GitHub issue
99problems get --repo schemaorg/schemaorg --id 1842
# Fetch one PR with inline review comments
99problems get --repo github/gitignore --id 2402 --type pr --include-review-comments
# Search GitLab issues
99problems get --platform gitlab -q "repo:veloren/veloren is:issue state:closed terrain"
# Fetch Jira issue by key
99problems get --platform jira --id CLOUD-12817
# Fetch Bitbucket Cloud PR by ID
99problems get --platform bitbucket --deployment cloud --repo workspace/repo_slug --id 1 --type pr
# Fetch Bitbucket Data Center PR by ID
99problems get --platform bitbucket --deployment selfhosted --url https://bitbucket.mycompany.com --repo PROJECT/repo_slug --id 1
# Stream as JSON Lines for pipelines
99problems get -q "repo:github/gitignore is:issue state:open" --output-mode stream --format jsonl
# Scaffold the canonical Agent Skill
99problems skill initCommands
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 versionConfiguration
99problems uses instance-based TOML config from:
~/.99problems./.99problems
Example:
default_instance = "work-gitlab"
[instances.github]
platform = "github"
repo = "owner/repo"
token = "ghp_your_token"
[instances.work-gitlab]
platform = "gitlab"
url = "https://gitlab.mycompany.com"
repo = "group/project"
token = "glpat_your_token"
[instances.work-jira]
platform = "jira"
url = "https://jira.mycompany.com"
repo = "CPQ"
token = "atlassian_api_token"
account_email = "[email protected]"
[instances.bitbucket-cloud]
platform = "bitbucket"
deployment = "cloud"
repo = "workspace/repo_slug"
token = "username:app_password"
[instances.bitbucket-dc]
platform = "bitbucket"
deployment = "selfhosted"
url = "https://bitbucket.mycompany.com"
repo = "PROJECT/repo_slug"
token = "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):
[telemetry]
enabled = true
otlp_endpoint = "http://localhost:4318/v1/traces"
exclude_targets = ["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:
99problems config set telemetry.exclude_targets h2,hyper,hyper_util,rustlsBuild-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:
99problems manGenerate all pages to disk:
99problems man --output docs/man --section 1Output 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
99problems completions bash
99problems completions zsh
99problems completions powershellAgent Skill Scaffold
Canonical editable skill sources live in templates/skills/99problems.
Generate a standardized Agent Skills scaffold under .agents/skills/99problems with:
99problems skill initUse user scope by overriding path:
99problems skill init --path ~/.agents/skillsSupport 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
