CLI that turns LLM input into well-formatted Conventional Commits
0

Configure Feed

Select the types of activity you want to include in your feed.

chore: migrate from just to task

Replaced justfile with Taskfile.yaml adapted from nasin-pali project.
Updated AGENTS.md to reference task commands instead of just commands.

Assisted-by: Claude Sonnet 4.5 via Crush

Amolith (Nov 12, 2025, 3:27 PM -0700) b2db0739 b51a0c85

+181 -67
+10 -10
AGENTS.md
··· 10 10 11 11 ## Development Commands 12 12 13 - - **Default workflow**: `just` (runs fmt, lint, staticcheck, test, vuln, reuse) 14 - - **Build**: `just build` (outputs binary as `formatted-commit`) 15 - - **Run during development**: `just run [flags]` 16 - - **Format code**: `just fmt` (uses gofumpt) 17 - - **Lint**: `just lint` (uses golangci-lint) 18 - - **Static analysis**: `just staticcheck` 19 - - **Vulnerability check**: `just vuln` (uses govulncheck) 20 - - **License compliance**: `just reuse` (REUSE specification) 21 - - **Test**: `just test` or `go test ./...` 13 + - **Default workflow**: `task` (runs fmt, lint, staticcheck, test, vuln, reuse) 14 + - **Build**: `task build` (outputs binary as `formatted-commit`) 15 + - **Run during development**: `task run -- [flags]` 16 + - **Format code**: `task fmt` (uses gofumpt) 17 + - **Lint**: `task lint` (uses golangci-lint) 18 + - **Static analysis**: `task staticcheck` 19 + - **Vulnerability check**: `task vuln` (uses govulncheck) 20 + - **License compliance**: `task reuse` (REUSE specification) 21 + - **Test**: `task test` or `go test ./...` 22 22 - **Single test**: `go test -v -run TestName ./...` (no tests exist yet) 23 23 - **Update dependencies**: `go mod tidy` 24 24 25 25 Example usage: 26 26 27 27 ```bash 28 - just run -t feat -m "add validation" -T "Assisted-by: GLM 4.6 via Crush" 28 + task run -- -t feat -m "add validation" -T "Assisted-by: GLM 4.6 via Crush" 29 29 ``` 30 30 31 31 ## Project Purpose
+171
Taskfile.yaml
··· 1 + # SPDX-FileCopyrightText: Amolith <amolith@secluded.site> 2 + # 3 + # SPDX-License-Identifier: CC0-1.0 4 + 5 + version: "3" 6 + 7 + vars: 8 + VERSION: 9 + sh: git describe --tags --always 2>/dev/null || echo "v0.0.0" 10 + GOOS: 11 + sh: go env GOOS 12 + GOARCH: 13 + sh: go env GOARCH 14 + 15 + env: 16 + CGO_ENABLED: 0 17 + 18 + tasks: 19 + default: 20 + desc: Run all checks 21 + cmds: 22 + - task: fmt 23 + - task: lint 24 + - task: staticcheck 25 + - task: test 26 + - task: vuln 27 + - task: reuse 28 + 29 + fmt: 30 + desc: Format all Go source code 31 + cmds: 32 + - go install mvdan.cc/gofumpt@latest 33 + - gofumpt -l -w . 34 + 35 + lint: 36 + desc: Lint Go source code 37 + cmds: 38 + - golangci-lint run 39 + 40 + staticcheck: 41 + desc: Perform static analysis 42 + cmds: 43 + - go install honnef.co/go/tools/cmd/staticcheck@latest 44 + - staticcheck ./... 45 + 46 + test: 47 + desc: Run tests 48 + cmds: 49 + - go test -v ./... 50 + 51 + vuln: 52 + desc: Check for vulnerabilities 53 + cmds: 54 + - go install golang.org/x/vuln/cmd/govulncheck@latest 55 + - govulncheck ./... 56 + 57 + reuse: 58 + desc: Lint licenses and copyright headers 59 + cmds: 60 + - reuse lint 61 + 62 + build: 63 + desc: Build formatted-commit 64 + cmds: 65 + - go build -o formatted-commit -ldflags "-s -w -X main.version={{.VERSION}}" 66 + generates: 67 + - formatted-commit 68 + 69 + install: 70 + desc: Install formatted-commit 71 + cmds: 72 + - go install -ldflags "-s -w -X main.version={{.VERSION}}" 73 + 74 + run: 75 + desc: Run formatted-commit 76 + cmds: 77 + - go run -ldflags "-s -w -X main.version={{.VERSION}}" . {{.CLI_ARGS}} 78 + 79 + pack: 80 + desc: Pack formatted-commit with UPX 81 + cmds: 82 + - upx --best -qo formatted-commit.min formatted-commit 83 + - mv formatted-commit.min formatted-commit 84 + sources: 85 + - formatted-commit 86 + 87 + clean: 88 + desc: Remove build artifacts 89 + cmds: 90 + - rm -rf formatted-commit 91 + 92 + clean-all: 93 + desc: Remove build artifacts and config.toml 94 + cmds: 95 + - rm -rf formatted-commit config.toml 96 + 97 + release: 98 + desc: Interactive release workflow 99 + vars: 100 + BUMP: 101 + sh: gum choose "major" "minor" "patch" "prerelease" 102 + CURRENT_VERSION: 103 + sh: git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0" 104 + IS_CURRENT_PRERELEASE: 105 + sh: | 106 + current="{{.CURRENT_VERSION}}" 107 + if echo "$current" | grep -qE '\-[a-zA-Z]+\.[0-9]+$'; then 108 + echo "yes" 109 + else 110 + echo "no" 111 + fi 112 + IS_PRERELEASE: 113 + sh: | 114 + if [ "{{.BUMP}}" = "prerelease" ]; then 115 + echo "yes" 116 + else 117 + gum confirm "Create pre-release?" && echo "yes" || echo "no" 118 + fi 119 + PRERELEASE_SUFFIX: 120 + sh: | 121 + if [ "{{.BUMP}}" = "prerelease" ] && [ "{{.IS_CURRENT_PRERELEASE}}" = "yes" ]; then 122 + # Extract suffix from current version (e.g., v1.2.3-beta.0 -> beta) 123 + echo "{{.CURRENT_VERSION}}" | sed -E 's/.*-([a-zA-Z]+)\.[0-9]+$/\1/' 124 + elif [ "{{.IS_PRERELEASE}}" = "yes" ]; then 125 + gum input --placeholder "Enter pre-release suffix (e.g., beta, rc)" 126 + fi 127 + BASE_NEXT: 128 + sh: | 129 + if [ "{{.BUMP}}" = "prerelease" ] && [ "{{.IS_CURRENT_PRERELEASE}}" = "yes" ]; then 130 + # Extract base version from current prerelease (e.g., v1.2.3-beta.0 -> v1.2.3) 131 + echo "{{.CURRENT_VERSION}}" | sed -E 's/-[a-zA-Z]+\.[0-9]+$//' 132 + else 133 + svu {{.BUMP}} 134 + fi 135 + SUFFIX_VERSION: 136 + sh: | 137 + if [ "{{.IS_PRERELEASE}}" = "yes" ] && [ -n "{{.PRERELEASE_SUFFIX}}" ]; then 138 + if [ "{{.BUMP}}" = "prerelease" ] && [ "{{.IS_CURRENT_PRERELEASE}}" = "yes" ]; then 139 + # Increment the current prerelease number 140 + current_num=$(echo "{{.CURRENT_VERSION}}" | sed -E 's/.*-[a-zA-Z]+\.([0-9]+)$/\1/') 141 + echo $((current_num + 1)) 142 + else 143 + # Find existing tags with this suffix and get the highest version number 144 + highest=$(git tag -l "{{.BASE_NEXT}}-{{.PRERELEASE_SUFFIX}}.*" | \ 145 + sed 's/.*-{{.PRERELEASE_SUFFIX}}\.//' | \ 146 + sort -n | tail -1) 147 + if [ -n "$highest" ]; then 148 + echo $((highest + 1)) 149 + else 150 + echo 0 151 + fi 152 + fi 153 + fi 154 + NEXT: 155 + sh: | 156 + if [ "{{.IS_PRERELEASE}}" = "yes" ] && [ -n "{{.PRERELEASE_SUFFIX}}" ]; then 157 + echo "{{.BASE_NEXT}}-{{.PRERELEASE_SUFFIX}}.{{.SUFFIX_VERSION}}" 158 + else 159 + echo "{{.BASE_NEXT}}" 160 + fi 161 + prompt: "Release {{.NEXT}}?" 162 + preconditions: 163 + - sh: '[ $(git symbolic-ref --short HEAD) = "main" ] || [ $(git symbolic-ref --short HEAD) = "dev" ]' 164 + msg: Not on main or dev branch 165 + - sh: "[ $(git status --porcelain=2 | wc -l) = 0 ]" 166 + msg: "Git is dirty" 167 + cmds: 168 + - llm-tag {{.NEXT}} 169 + - git push soft {{.NEXT}} 170 + - go list -m git.secluded.site/formatted-commit@{{.NEXT}} > /dev/null 171 + - echo "Released {{.NEXT}} and notified module proxy"
-57
justfile
··· 1 - # SPDX-FileCopyrightText: Amolith <amolith@secluded.site> 2 - # 3 - # SPDX-License-Identifier: CC0-1.0 4 - 5 - GOOS := env("GOOS", `go env GOOS`) 6 - GOARCH := env("GOARCH", `go env GOARCH`) 7 - VERSION := `git describe --long 2>/dev/null | sed 's/\([^-]*-g\)/r\1/;s/-/./g'` 8 - 9 - default: fmt lint staticcheck test vuln reuse 10 - 11 - fmt: 12 - # Formatting all Go source code 13 - go install mvdan.cc/gofumpt@latest 14 - gofumpt -l -w . 15 - 16 - lint: 17 - # Linting Go source code 18 - golangci-lint run 19 - 20 - staticcheck: 21 - # Performing static analysis 22 - go install honnef.co/go/tools/cmd/staticcheck@latest 23 - staticcheck ./... 24 - 25 - test: 26 - # Running tests 27 - go test -v ./... 28 - 29 - vuln: 30 - # Checking for vulnerabilities 31 - go install golang.org/x/vuln/cmd/govulncheck@latest 32 - govulncheck ./... 33 - 34 - reuse: 35 - # Linting licenses and copyright headers 36 - reuse lint 37 - 38 - build: 39 - # Building formatted-commit 40 - CGO_ENABLED=0 GOOS={{GOOS}} GOARCH={{GOARCH}} go build -o formatted-commit -ldflags "-s -w -X main.version={{VERSION}}" 41 - 42 - run *FLAGS: 43 - # Running formatted-commit 44 - CGO_ENABLED=0 GOOS={{GOOS}} GOARCH={{GOARCH}} go run -ldflags "-s -w -X main.version={{VERSION}}" . {{FLAGS}} 45 - 46 - pack: 47 - # Packing formatted-commit 48 - upx --best -qo formatted-commit.min formatted-commit 49 - mv formatted-commit.min formatted-commit 50 - 51 - clean: 52 - # Removing build artifacts 53 - rm -rf formatted-commit 54 - 55 - clean-all: 56 - # Removing build artifacts and config.toml 57 - rm -rf formatted-commit config.toml