human

command module
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2026 License: MIT Imports: 37 Imported by: 0

README

human logo

CI codecov Go Report Card Go Reference Latest Release Dependabot

human

https://gethuman.sh

Human in the loop — Swiss army knive for AI agentic coding with batteries included. Give your AI agent access to issue trackers, design files, and analytics. One CLI for Jira, GitHub, GitLab, Linear, Azure DevOps, Shortcut, Notion, Figma, and Amplitude. Output as JSON and markdown.

  • One unified interface — Jira, GitHub, GitLab, Linear, Azure DevOps, Shortcut, Notion, Figma, and Amplitude through a single CLI
  • JSON and markdown output — pipe directly into LLMs
  • Claude Code skills — full ticket lifecycle: readiness, planning, execution, review, and done verification
  • Definition of Ready checks — catch incomplete tickets before coding starts
  • Notion integration — search workspace, read pages, query databases for context
  • Figma integration — browse files, inspect components, read design comments, export images
  • Amplitude integration — query event analytics, funnels, retention, cohorts
Why

As AI agents write more code autonomously, the question becomes: who decides what gets built? With human, an AI reads a product ticket from the issue tracker, creates an implementation ticket with a plan, and a human reviews it before coding starts.

Install

curl -sSfL gethuman.sh/install.sh | bash

Or with Homebrew:

brew install stephanschmidt/tap/human

Or with mise:

mise use -g github:StephanSchmidt/human

Or with Go:

go install github.com/StephanSchmidt/human@latest

Or add as a devcontainer Feature:

{ "features": { "ghcr.io/stephanschmidt/treehouse/human:1": {} } }

CLI usage

Use --table for human-readable output. Quick commands auto-detect the tracker from key format and configuration:

# Quick commands (auto-detect tracker)
human get KAN-1                                          # get a single issue
human list --project=KAN                                 # list issues in a project
human list --project=KAN --tracker=work                  # disambiguate with --tracker

The same commands also work in provider-specific form — only the project identifier changes:

# List issues (JSON by default)
human jira issues list --project=KAN                    # Jira
human github issues list --project=octocat/hello-world  # GitHub
human gitlab issues list --project=mygroup/myproject    # GitLab
human linear issues list --project=ENG                  # Linear
human azuredevops issues list --project=Human           # Azure DevOps
human shortcut issues list --project=MyProject          # Shortcut

# Human-readable table
human jira issues list --project=KAN --table

# Get a single issue as markdown
human jira issue get KAN-1
human github issue get octocat/hello-world#42
human gitlab issue get mygroup/myproject#42
human linear issue get ENG-123
human azuredevops issue get Human/42                    # Azure DevOps
human shortcut issue get 123                            # Shortcut

# Create an issue
human linear issue create --project=ENG "Implement feature" --description "Feature details in markdown"

# Add a comment to an issue
human jira issue comment add KAN-1 "This is done"

# List comments on an issue
human jira issue comment list KAN-1

# Use a named tracker instance from .humanconfig.yaml
human --tracker=work jira issues list --project=KAN

# Notion — search, read pages, query databases
human notion search "quarterly report"
human notion page get <page-id>
human notion databases list --table
human notion database query <database-id> --table

# Use a named Notion instance
human notion --notion=work search "meeting notes"

# Figma — browse files, inspect nodes, read comments
human figma file get <file-key>
human figma file comments <file-key>
human figma file components <file-key>
human figma file nodes <file-key> --ids=0:1,1:2
human figma file image <file-key> --ids=0:1
human figma projects list --team=<team-id>
human figma project files <project-id>

# Use a named Figma instance
human figma --figma=design file get <file-key>

# Amplitude — product analytics
human amplitude events list
human amplitude events query --event=_active --start=20260301 --end=20260311
human amplitude taxonomy events
human amplitude funnel --events=signup,purchase --start=20260301 --end=20260311
human amplitude retention --start-event=signup --return-event=login --start=20260301 --end=20260311
human amplitude user search alice@example.com
human amplitude cohorts list

# Use a named Amplitude instance
human amplitude --amplitude=product events list

Devcontainer / Remote mode

AI agents running inside devcontainers need access to issue trackers, Notion, Figma, and Amplitude, but credentials should stay on the host. The daemon mode splits human into two roles: a daemon on the host (holds credentials, executes commands) and a client inside the container (forwards CLI args, prints results). You need human installed on both sides: on the host (via Homebrew, curl, etc.) to run the daemon, and inside the container (via the devcontainer Feature) as the client. It's the same binary — the mode is determined by the HUMAN_DAEMON_ADDR environment variable.

On the host:

human daemon start          # prints token, listens on :19285
human daemon token          # print token for copy/paste
human daemon status         # check if daemon is reachable

In devcontainer.json, add the devcontainer Feature to install human and configure the daemon connection:

{
  "features": {
    "ghcr.io/stephanschmidt/treehouse/human:1": {}
  },
  "forwardPorts": [19285, 19286],
  "remoteEnv": {
    "HUMAN_DAEMON_ADDR": "localhost:19285",
    "HUMAN_DAEMON_TOKEN": "<paste from 'human daemon token'>",
    "HUMAN_CHROME_ADDR": "localhost:19286"
  }
}

Inside the container, all commands work transparently:

human jira issues list --project=KAN       # forwarded to host daemon
human figma file get ABC123                # forwarded to host daemon
human notion search "quarterly report"     # forwarded to host daemon
Chrome bridge

When using Claude Code inside a devcontainer, the Chrome MCP bridge needs a Unix socket that Claude can discover. The chrome-bridge command creates this socket and tunnels traffic to the daemon on the host.

human chrome-bridge                        # daemonizes, prints PID and socket path

The command starts in the background by default — it prints the PID, socket path, and log location, then returns control to the terminal so you can run claude in the same shell:

human chrome-bridge
claude                                     # runs immediately after

The bridge requires HUMAN_CHROME_ADDR and HUMAN_DAEMON_TOKEN environment variables (included in the devcontainer.json example above).

Use --foreground to run the bridge in blocking mode (useful for debugging):

human chrome-bridge --foreground           # blocks, logs to stderr

Logs are written to ~/.human/chrome-bridge.log.

When HUMAN_DAEMON_ADDR is not set, human runs in standalone mode — no daemon required.

Claude Code usage

Install the Claude Code skills and agents into your project:

human install --agent claude

This writes skill and agent files to .claude/ in the current directory. Re-run after upgrading human to pick up changes.

Check ticket readiness

The /human-ready skill fetches a ticket, evaluates it against a Definition of Ready checklist, and asks you to fill in any gaps. The result is saved for reference.

In Claude Code:

/human-ready KAN-1

The skill checks six criteria: clear description, acceptance criteria, scope, dependencies, context, and edge cases. For anything missing or incomplete, it asks you to provide the information. The completed assessment is written to .human/ready/kan-1.md.

Create an implementation plan

The /human-plan skill fetches a ticket, explores the codebase, and produces a structured implementation plan.

/human-plan KAN-1

The plan is written to .human/plans/kan-1.md.

Analyze a bug

The /human-bug-plan skill fetches a bug ticket (including comments for stack traces and logs), explores the codebase for root cause, and writes a structured bug analysis with a fix plan.

/human-bug-plan KAN-1

The analysis is written to .human/bugs/kan-1.md.

Execute a plan

The /human-execute skill loads an existing plan, executes it step by step, and runs a review checkpoint to verify the result.

/human-execute KAN-1

Requires a plan at .human/plans/kan-1.md (create one first with /human-plan).

Review changes against a ticket

The /human-review skill diffs the current branch against the default branch and evaluates every change against the ticket's acceptance criteria. It flags missing criteria, scope creep, and unhandled edge cases.

/human-review KAN-1

The review is written to .human/reviews/kan-1.md.

Check if a ticket is done

The /human-done skill runs tests, checks each acceptance criterion against the implementation, and produces a structured pass/fail Definition of Done report.

/human-done KAN-1

The report is written to .human/done/kan-1.md.

Setup

The fastest way to get started:

human init

The interactive wizard lets you pick trackers and tools, then writes .humanconfig.yaml and prints the environment variables to set. It can also install the Claude Code integration.

Alternatively, configure manually:

cp .humanconfig.example .humanconfig.yaml
# edit .humanconfig.yaml with your tracker instances

Configuration

Add trackers and tools to .humanconfig.yaml:

# Issue trackers
jiras:
  - name: work
    url: https://work.atlassian.net
    user: me@work.com
    key: your-api-token

githubs:
  - name: oss
    token: ghp_abc123

# Tools
notions:
  - name: work
    token: ntn_abc123
    description: Company workspace

figmas:
  - name: design
    token: figd_abc123
    description: Product design team

amplitudes:
  - name: product
    url: https://analytics.eu.amplitude.com  # EU; US default: https://amplitude.com
    description: Product analytics
    # key + secret from env

Notion tokens can also be set via environment variables: NOTION_TOKEN (global) or NOTION_<NAME>_TOKEN (per-instance).

Figma tokens can also be set via environment variables: FIGMA_TOKEN (global) or FIGMA_<NAME>_TOKEN (per-instance).

Amplitude credentials can also be set via environment variables: AMPLITUDE_KEY + AMPLITUDE_SECRET (global) or AMPLITUDE_<NAME>_KEY + AMPLITUDE_<NAME>_SECRET (per-instance).

See documentation.md for full configuration details including environment variables and settings resolution.

Build

make build

Documentation

Overview

Human is a CLI tool that enables AI agents to interact with issue trackers and project management tools as human developers would.

It provides a unified interface across multiple issue trackers including Jira, GitHub, GitLab, Linear, Azure DevOps, and Shortcut. Additional integrations include Notion, Figma, and Amplitude.

Features

  • One CLI for multiple trackers with JSON and Markdown output
  • Claude Code skills for ticket analysis and implementation planning
  • Definition of Ready checks for issue quality
  • Notion workspace search and page reading
  • Figma design browsing and component inspection
  • Amplitude analytics querying

Usage

human list                    # List issues
human get TICKET-123          # Get issue details
human create --title "..."    # Create an issue
human transition TICKET-123   # Transition issue status
human statuses                # List available statuses

For full usage details, run:

human --help

Directories

Path Synopsis
cmd
integrationtest command
Integration tests that exercise the human binary against live trackers.
Integration tests that exercise the human binary against live trackers.
internal

Jump to

Keyboard shortcuts

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