Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 16 additions & 47 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,54 +9,23 @@ permissions:
contents: write

jobs:
build:
runs-on: macos-latest
strategy:
matrix:
include:
- goarch: arm64
asset: flow-darwin-arm64
- goarch: amd64
asset: flow-darwin-amd64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Build ${{ matrix.asset }}
env:
GOOS: darwin
GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: '0'
run: |
go build -trimpath \
-ldflags "-s -w -X main.version=${GITHUB_REF_NAME}" \
-o "${{ matrix.asset }}" .
- uses: actions/upload-artifact@v4
with:
name: ${{ matrix.asset }}
path: ${{ matrix.asset }}
if-no-files-found: error

release:
needs: build
goreleaser:
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
path: dist
merge-multiple: true
- name: Generate checksums
working-directory: dist
run: |
shasum -a 256 flow-darwin-* > SHA256SUMS
cat SHA256SUMS
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
go-version-file: go.mod
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
with:
files: |
dist/flow-darwin-arm64
dist/flow-darwin-amd64
dist/SHA256SUMS
generate_release_notes: true
fail_on_unmatched_files: true
distribution: goreleaser
version: latest
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }}
54 changes: 54 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# .goreleaser.yaml
# Documentation at https://goreleaser.com
version: 2

before:
hooks:
- go mod tidy

builds:
- goos:
- darwin
goarch:
- amd64
- arm64
ldflags:
- -s -w -X main.version={{.Version}}
binary: flow

archives:
- formats:
- tar.gz
# this name template makes the result look like flow_0.1.0_darwin_amd64.tar.gz
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
files:
- LICENSE
- README.md
- CHANGELOG.md

checksum:
name_template: 'checksums.txt'

snapshot:
version_template: "{{ incpatch .Version }}-next"

changelog:
use: github-native

homebrew_casks:
- name: flow
repository:
owner: Facets-cloud
name: homebrew-tap
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
homepage: "https://github.com/Facets-cloud/flow"
description: "A complete task manager for Claude Code — and the working memory layer that turns every session from a brilliant new hire into the engineer on your team."
license: "MIT"
caveats: |
After installation, you must run:
flow init
to set up the SQLite database and wire flow into Claude Code.
hooks:
post:
install: |
system_command "/usr/bin/xattr", args: ["-d", "com.apple.quarantine", "#{staged_path}/flow"], sudo: true
52 changes: 20 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ the next one smarter.
│ processes · business │
└─────▲──────────▲───────┘
│ │
flow do <task> │ scoop │ sweep
┌────────┐ ─────────────────▶ ┌─────────┴──────────┴─────┐
│ Task │ │ Claude session │
│ brief │ ◀──── updates ───── │ loads brief + kb + │
│ +notes │ │ notes + repo conventions│
└────────┘ ─── flow done ───▶ └──────────────────────────┘
(auto-sweep transcript
into kb on done)
flow do <task> │ scoop │ sweep
┌────────┐ ─────────────────▶ ┌─────────┴──────────┴─────┐
│ Task │ │ Claude session │
│ brief │ ◀──── updates ───── │ loads brief + kb + │
│ +notes │ │ notes + repo conventions│
└────────┘ ─── flow done ───▶ └──────────────────────────┘
(auto-sweep transcript
into kb on done)
```

- **Scoop (live):** during a session the flow skill listens for
Expand Down Expand Up @@ -90,7 +90,18 @@ back to the knowledge base on `flow done` like any other task.
Same compounding mechanic — your weekly review session two months from
now will know everything every prior weekly review surfaced.

## Install
## Installation

### Homebrew (Recommended for macOS)

```bash
brew install --cask Facets-cloud/tap/flow
flow init
```



### via Claude Code

In any Claude Code session, paste this:

Expand All @@ -102,36 +113,13 @@ and registers a SessionStart hook so every future Claude session
loads the skill automatically. Then say **"let's get to work"** and
follow along.

<details>
<summary>Manual install (curl + chmod + flow init)</summary>

```bash
# 1. Download the binary for your Mac.
ARCH=arm64 # Apple Silicon (M1/M2/M3/M4) — use amd64 for Intel.

curl -fsSL -o /usr/local/bin/flow \
"https://github.com/Facets-cloud/flow/releases/latest/download/flow-darwin-${ARCH}"
chmod +x /usr/local/bin/flow
xattr -d com.apple.quarantine /usr/local/bin/flow 2>/dev/null || true

# 2. Initialize. This is required — it creates ~/.flow/, the SQLite
# index, the knowledge base, AND installs the Claude skill +
# SessionStart hook. Without this step, Claude can't talk to flow.
flow init
```

`flow init` is the step that wires flow into Claude Code. It:

- Creates `~/.flow/` (database, kb, projects, tasks, playbooks)
- Writes the flow skill to `~/.claude/skills/flow/SKILL.md`
- Adds a SessionStart hook to `~/.claude/settings.json` so every new
Claude Code session auto-loads the skill

The `xattr` step removes Gatekeeper's quarantine attribute so macOS
doesn't refuse to run the unsigned binary.

</details>

## Upgrade

In any Claude Code session:
Expand Down