go-task/task

A fast, cross-platform build tool inspired by Make, designed for modern workflows.

View on GitHub ↗Jump to charts ↓

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 2 hours ago
Added to GitGenius on September 21st, 2025
Created on February 27th, 2017
Open Issues & Pull Requests: 202 (+0)
GitHub issues: Enabled
Number of forks: 928
Total Stargazers: 16,235 (+0)
Total Subscribers: 76 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 6.2 days
Mean response time: 316.1 days
90th percentile: 1112.2 days
Tracked items: 791

Maintainer activity

7 people did triage or write work on this repository in the last 12 months.

Counts unlabeled, assigned, unassigned, milestoned, demilestoned, locked, unlocked over the last 12 months. These are issue and pull request events that require triage or write permission. Commits and code review are not counted. labeled and renamed are excluded because GitHub issue forms record the issue author as the actor. Figures from October 11, 2026. This count is not comparable across projects: each project's automation decides which of these events a person emits.

How this project is maintained

About 4% of issues opened in the past year have never received a reply. 84% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "area: docs" is answered fastest, typically in about 21 hours, while "area: watcher" waits about 8 months. 78% of issues opened in the past year have been closed, leaving a working backlog. Three people close 78% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 129
New in 7 days: 1
Closed in 7 days: 0
Avg open age: 679 days
Stale 30+ days: 119
Stale 90+ days: 103

Recent activity

Opened in 7 days: 1
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • area: variables (119)
  • good first issue (53)
  • area: releasing (48)
  • state: duplicate (43)
  • area: watcher (37)
  • help wanted (37)
  • dep: mvdan/sh (36)
  • state: awaiting response (29)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Task is a modern, open-source task runner and build tool designed to simplify the automation of common development and build processes. Written in Go, it distinguishes itself by being cross-platform, distributed as a single binary, and utilizing a human-readable YAML format for its configuration files, known as `Taskfile.yml`. Its primary goal is to offer a more intuitive and accessible alternative to traditional build tools like GNU Make, especially for projects that require straightforward yet powerful task orchestration without the complexities often associated with older systems. Task aims to make automating scripts, builds, tests, and deployments a seamless experience across different operating systems.

The appeal of Task lies in its simplicity and developer-friendly approach. It addresses the common pain points of maintaining complex shell scripts or cryptic Makefiles by providing a clear, declarative syntax. This makes `Taskfile.yml` files easy to read, write, and understand, even for team members unfamiliar with the project's specific build logic. For projects ranging from small personal scripts to large multi-service applications, Task offers a consistent way to define and execute commands. Its cross-platform nature ensures that the same `Taskfile` can be used on Linux, macOS, and Windows without modification, fostering greater consistency in development environments and CI/CD pipelines.

At its core, Task operates through a `Taskfile.yml` file located in the project's root directory. This YAML file defines a series of named tasks, each comprising one or more shell commands to be executed. A basic task definition is straightforward: a task name followed by a list of commands. For instance, a "build" task might execute `go build ./...`, while a "test" task runs `go test ./...`. Task allows for significant flexibility, enabling users to define environment variables specific to a task, change the working directory for command execution, and even run commands silently to suppress output. This declarative structure ensures that the intent of each task is immediately clear.

Task goes beyond simple command execution with a rich set of features for sophisticated task orchestration. One of its most powerful capabilities is task dependencies, allowing tasks to specify other tasks that must run before them, ensuring correct execution order. These dependencies can even be run in parallel, significantly speeding up build times for independent operations. Task supports Go template syntax within commands and variables, enabling dynamic values and conditional logic. It provides a `watch` mode, automatically re-running tasks when specified files change, which is invaluable for development workflows. Furthermore, tasks can accept command-line arguments, define custom variables, and execute conditionally based on shell command exit codes or other criteria using the `when` attribute.

Beyond core execution, Task offers advanced features for complex scenarios. It supports including other `Taskfile.yml` files, facilitating modularity and reusability across larger projects or monorepos. Pre- and post-task hooks allow for actions to be performed before or after a main task's execution, useful for setup or cleanup. For interactive workflows, Task can prompt users for input. It also integrates with HTTP requests, enabling tasks to interact with APIs. The tool's extensibility is further enhanced by a plugin system, allowing for custom functionalities. Installation is simple, typically via `go install`, package managers like Homebrew, or Docker, making it readily accessible. Running a task is as simple as `task <task_name>`.