Skip to content

Pike — GitHub Issue CLI

Rust CLI for creating GitHub issues via the HTTP API. Default command (pike) walks the user through issue creation; pike setup configures the tool.

Commands

  • pike (default): create an issue interactively
  • pike setup: verify GITHUB_TOKEN exists, prompt for default organization, save config, and pre-fetch/cache repos & projects

Run

cargo run -- <args>
# or:
just run <args>

No test/lint/typecheck commands yet — add them to the justfile when set up.

Architecture & Key Constraints

Deferred network calls: all GitHub API calls happen after the user finishes input. Collect repo, title, description, project, and column first; then make network requests. This keeps the interactive flow fast.

Issue creation flow:

  1. Ask for repo (fuzzy search from cached list)
  2. Ask for title (default: unknown + random number)
  3. Ask for description
  4. Ask for project (fuzzy search, default from config)
  5. Ask for column/status (fuzzy search, default: no status)
  6. Create issue via GitHub API
  7. Set project column on the newly created issue

Caching: repository names and projects are cached locally in the OS-appropriate app dir (use dirs crate or similar). Setup pre-fetches and caches this data so the default command is fast on first run.

Config: stored in the same app dir — includes default project, default organization, and favorite repos.

Auth: reads GITHUB_TOKEN env var only. No interactive login flow.

Style

  • Rust edition 2024
  • CLI framework: clap (derive)
  • Keep all I/O (prompts, HTTP) out of domain logic — separate concerns for testability