task-plus
Go CLI tool that standardizes common development workflows across repositories. Subcommand architecture — start with release, more commands to come.
Try https://h3-task-plus.statichost.page/ for documentation.
Install
go install github.com/drummonds/task-plus/cmd/task-plus@latest
A shorter alias tp is also available:
go install github.com/drummonds/task-plus/cmd/tp@latest
Both binaries are identical — tp is just shorter to type.
Commands
task-plus release
Interactive release workflow. Replaces duplicated task release Taskfile patterns.
task-plus release
task-plus release --dry-run
task-plus release --yes --dir /path/to/project
Flags:
--dry-run— show what would happen without making changes--yes— auto-confirm all prompts--dir <path>— project directory (default:.)
Taskfile guard: If the project's Taskfile.yml contains a release: task, task-plus release refuses to run (to avoid conflict). Remove the Taskfile release task and use task-plus release directly.
Release Workflow
- Run checks (e.g.
task check) - Show git status
- Git add / commit (if dirty)
- Detect version (latest tag + patch bump)
- Update CHANGELOG.md
- Git tag
- WASM build (if configured)
- Git push (branch + tags)
- Goreleaser (if binary project)
- Cleanup old GitHub releases
- Local install
- Deploy documentation (if configured)
task-plus pages
Serve the docs/ directory over HTTP for local preview.
task-plus pages
task-plus pages --port 3000 --dir /path/to/project
Flags:
--port <n>— HTTP port (default:8080)--dir <path>— project directory (default:.)
Global Flags
--init— create a defaulttask-plus.ymlconfig file (statichost.eu pre-configured)-a— list available commands--version— print version
Config
Optional task-plus.yml in project root (generate with task-plus --init):
type: library # or "binary" (auto-detected from .goreleaser.yaml)
check: [task check] # commands to run first
changelog_format: keepachangelog # or "simple"
wasm: [] # optional WASM build commands
goreleaser_config: .goreleaser.yaml
install: true # auto-run "go install" (skip prompt; omit to be asked)
cleanup:
keep_patches: 2 # per minor version
keep_minors: 5
pages_build: [task docs:build] # commands to build docs before serving/deploying
pages_deploy: # deploy docs during release (multiple targets supported)
- type: github # push docs/ to gh-pages branch
- type: statichost
site: myproject # site name on statichost.eu
All fields optional — sensible defaults are auto-detected.
Documentation Deployment
Configure pages_deploy in task-plus.yml to deploy documentation as part of the release workflow. Multiple targets can be active simultaneously.
Supported providers:
| Type | Description | Requirements |
|---|---|---|
github |
Pushes docs/ to gh-pages branch via git subtree push |
Git remote configured |
statichost |
Uploads docs/ to statichost.eu |
site field required; uses shcli (auto-downloaded if missing) |
If pages_build commands are configured, they run before deployment.
Example task-plus.yml for deploying to both GitHub Pages and statichost.eu:
pages_build: [task docs:build]
pages_deploy:
- type: github
- type: statichost
site: my-docs