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 interactivelypike setup: verifyGITHUB_TOKENexists, 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:
- Ask for repo (fuzzy search from cached list)
- Ask for title (default: unknown + random number)
- Ask for description
- Ask for project (fuzzy search, default from config)
- Ask for column/status (fuzzy search, default: no status)
- Create issue via GitHub API
- 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