fotingo

module
v1.9.3-0...-159659e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2026 License: MIT

README

Fotingo

A CLI to streamline workflows across Git, GitHub, and Jira.

Go Version License

Overview

Fotingo helps you:

  • Start working on Jira issues with consistent branch naming
  • Create pull requests with issue context and metadata
  • Manage stacked pull request chains, including worktree-aware rebases
  • Open related URLs for branch, issue, PR, and repository
  • Inspect local branch/issue context as JSON
  • Automate command flows with machine-readable output

Installation

From source
go install github.com/tagoro9/fotingo@latest
From binary

Download the latest release from the releases page.

Homebrew
brew tap tagoro9/tap
brew install fotingo
xattr -dr com.apple.quarantine /opt/homebrew/bin/fotingo

On macOS, Homebrew can preserve the com.apple.quarantine attribute on downloaded binaries. Because fotingo is a standalone CLI binary distributed outside the App Store, Gatekeeper may block execution until that quarantine attribute is removed. Running xattr -dr com.apple.quarantine /opt/homebrew/bin/fotingo clears the attribute so the binary can run normally.

Quick Start

Prerequisites:

  1. GitHub authentication:
    • Fotingo GitHub App installed in the orgs you want to access (it can be installed during the auth flow), or
    • A classic GitHub PAT from https://github.com/settings/tokens with repo scope
  2. Jira authentication:
    • Atlassian API token from https://id.atlassian.com/manage-profile/security/api-tokens, or
    • Atlassian Cloud service-account scoped token with Jira root https://api.atlassian.com/ex/jira/{cloudId}, or
    • OAuth only in internal binaries compiled with Jira OAuth client credentials
  3. Jira account email
  4. Jira server URL (for example https://yourcompany.atlassian.net) or Atlassian Cloud API root

Jira OAuth client credentials include a client secret and are intended for internal builds only. Committing or broadly distributing binaries with embedded Jira OAuth client secret is not considered safe.

Basic flow:

# Authenticate services
fotingo login

# Start work on an issue
fotingo start PROJ-123

# Create a pull request for current branch
fotingo review -y

# Create a child PR stacked on an open parent PR branch
fotingo review -y --branch feature/PROJ-122-parent

# Inspect and refresh the current stacked PR chain
fotingo review stacks
fotingo review stacks sync

# Inspect pull request comments and review conversations
fotingo inspect pr --json

# Refresh selected PR sections or metadata after follow-up changes
fotingo review sync --section changes --section fixed-issues -y

# Open the PR in browser
fotingo open pr

fotingo start auto-stashes only tracked or staged changes. Untracked-only files and directories stay in place. When branch creation needs a base refresh, fotingo checks only the default branch and does not use shallow fetches during that preflight step.

For full authentication setup details, see docs/authentication.md.

Common Commands

Command What it does
fotingo start Creates or checks out a Jira-backed branch, optionally in a dedicated worktree
fotingo review Creates a pull request with issue context, labels, reviewers, and optional base overrides
fotingo review sync Refreshes managed PR sections, reviewers, assignees, title, and draft readiness
fotingo review stacks Lists, syncs, and rebases linear stacked PR chains, including branches in separate worktrees
fotingo inspect Prints branch, issue, commit, and pull request metadata for automation
fotingo inspect pr Prints PR comments, submitted reviews, and grouped inline review conversations
fotingo open Opens the related issue, PR, branch, repository, or release page
fotingo search Resolves reviewers, assignees, labels, projects, and issue types before command automation
fotingo config Reads and writes local configuration such as Jira root and worktree parent paths
fotingo completion Generates shell completion scripts

For flags, JSON contracts, and examples, see the CLI Reference and Automation and JSON docs.

Telemetry

Fotingo emits anonymous product telemetry to understand command usage, latency, and failures.

  • Enabled by default (telemetry.enabled: true)
  • Opt out anytime:
fotingo config set telemetry.enabled false
  • Telemetry never sends raw tokens, freeform descriptions/titles, branch names, issue IDs, or raw API URLs.

See docs/telemetry.md for event categories and privacy constraints.

Documentation

User and maintainer docs live in docs/:

Why Fotingo?

Jira-backed development often repeats the same sequence:

  1. Pick/assign an issue
  2. Move it to In Progress
  3. Create a correctly named branch
  4. Implement and commit
  5. Open and enrich a PR
  6. Move issue to In Review and add PR link

Fotingo turns this into a small set of consistent commands.

What is a Fotingo?

In Canary Islands Spanish, "fotingo" means an old, rickety car. One origin story links it to Ford's "foot 'n go" phrase from the Model T era. The name fits the CLI goal: minimal friction to get moving.

Contributing

Contributions are welcome. Open an issue or submit a pull request.

License

MIT License. See LICENSE.

Directories

Path Synopsis
cmd
fotingo command
internal
commandruntime
Package commandruntime coordinates shared terminal handoff and runtime control flows.
Package commandruntime coordinates shared terminal handoff and runtime control flows.
commands
Package commands contains internal command workflow modules used by pkg/commands adapters.
Package commands contains internal command workflow modules used by pkg/commands adapters.
commands/ai
Package ai contains reusable AI setup command logic.
Package ai contains reusable AI setup command logic.
commands/cache
Package cache contains cache-command business logic shared by CLI adapters.
Package cache contains cache-command business logic shared by CLI adapters.
commands/completion
Package completion contains reusable completion matching and formatting helpers.
Package completion contains reusable completion matching and formatting helpers.
commands/inspect
Package inspect contains branch/commit issue-ID extraction helpers.
Package inspect contains branch/commit issue-ID extraction helpers.
commands/open
Package open contains resource URL resolution and error mapping for the open command.
Package open contains resource URL resolution and error mapping for the open command.
commands/release
Package release contains release-command data collection and notes rendering helpers.
Package release contains release-command data collection and notes rendering helpers.
commands/review
Package review contains shared review-command workflow helpers.
Package review contains shared review-command workflow helpers.
commands/start
Package start contains reusable command logic for the start workflow.
Package start contains reusable command logic for the start workflow.
errors
Package errors provides typed errors and exit codes for the fotingo CLI.
Package errors provides typed errors and exit codes for the fotingo CLI.
git
github/testutil
Package testutil provides mock HTTP server utilities for testing GitHub client code.
Package testutil provides mock HTTP server utilities for testing GitHub client code.
io
jira/testutil
Package testutil provides mock HTTP server utilities for testing Jira client code.
Package testutil provides mock HTTP server utilities for testing Jira client code.
telemetry
Package telemetry provides privacy-safe analytics instrumentation for the CLI.
Package telemetry provides privacy-safe analytics instrumentation for the CLI.
template
Package template provides a simple template engine for PR descriptions and release notes.
Package template provides a simple template engine for PR descriptions and release notes.
tracker
Package tracker provides a generic abstraction for issue tracking systems.
Package tracker provides a generic abstraction for issue tracking systems.
ui
Package ui provides reusable Bubble Tea primitives shared across interactive commands.
Package ui provides reusable Bubble Tea primitives shared across interactive commands.
pkg
commands
Package commands wires Cobra commands and delegates command workflows to internal modules.
Package commands wires Cobra commands and delegates command workflows to internal modules.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL