detached e205712

chore: remove specs/plans from repo (stored in Obsidian)

commit
e205712c5692bd3be5f94e4dbcbc82e1434c663a
author
brice · · 2026-03-19 04:42 UTC
parent
fe83be2
signature
unsigned
2 files · +0 -242
D docs/superpowers/plans/2026-03-19-setup-gordon-action.md +0 -184
@@ -1,184 +0,0 @@
1-# setup-gordon Action Implementation Plan
2-
3-> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4-
5-**Goal:** Create a composite GitHub Action that installs the Gordon CLI binary into the runner's PATH.
6-
7-**Architecture:** Single composite action with a shell script that detects OS/arch, downloads the correct release archive, extracts the binary, and verifies it works. Documentation updated to reference the action.
8-
9-**Tech Stack:** GitHub Actions composite, bash, curl, tar
10-
11----
12-
13-### Task 1: Create the setup-gordon composite action
14-
15-**Files:**
16-- Create: `.github/actions/setup-gordon/action.yml`
17-
18-**Context:**
19-- Official releases are `.tar.gz` archives: `gordon_{os}_{arch}.tar.gz` (e.g. `gordon_linux_amd64.tar.gz`)
20-- Archives contain a single `gordon` binary at root
21-- Release URL pattern: `https://github.com/bnema/gordon/releases/download/{tag}/gordon_{os}_{arch}.tar.gz`
22-- Latest release tag can be resolved via: `gh release view --json tagName -q .tagName` or curl redirect on `/releases/latest`
23-- Supported OS: linux, darwin. Supported arch: amd64, arm64.
24-- Runner arch mapping: `X64` → `amd64`, `ARM64` → `arm64`
25-
26-- [ ] **Step 1: Create action.yml**
27-
28-```yaml
29-name: 'Setup Gordon'
30-description: 'Install the Gordon CLI binary into the runner PATH'
31-author: 'Gordon Contributors'
32-
33-branding:
34- icon: 'download-cloud'
35- color: 'blue'
36-
37-inputs:
38- version:
39- description: 'Gordon version to install (e.g. "v2.0.0" or "latest")'
40- required: false
41- default: 'latest'
42-
43-outputs:
44- version:
45- description: 'The version that was installed'
46- value: ${{ steps.install.outputs.version }}
47- path:
48- description: 'Path to the installed binary'
49- value: ${{ steps.install.outputs.path }}
50-
51-runs:
52- using: 'composite'
53- steps:
54- - name: Install Gordon CLI
55- id: install
56- shell: bash
57- run: |
58- set -euo pipefail
59-
60- # Determine OS
61- case "$RUNNER_OS" in
62- Linux) OS="linux" ;;
63- macOS) OS="darwin" ;;
64- *) echo "::error::Unsupported OS: $RUNNER_OS"; exit 1 ;;
65- esac
66-
67- # Determine architecture
68- case "$RUNNER_ARCH" in
69- X64) ARCH="amd64" ;;
70- ARM64) ARCH="arm64" ;;
71- *) echo "::error::Unsupported architecture: $RUNNER_ARCH"; exit 1 ;;
72- esac
73-
74- # Resolve version
75- VERSION="${{ inputs.version }}"
76- if [[ "$VERSION" == "latest" ]]; then
77- VERSION=$(curl -fsSL -o /dev/null -w '%{redirect_url}' "https://github.com/bnema/gordon/releases/latest" | grep -oP '[^/]+$')
78- if [[ -z "$VERSION" ]]; then
79- echo "::error::Failed to resolve latest Gordon version"
80- exit 1
81- fi
82- fi
83-
84- echo "Installing Gordon ${VERSION} (${OS}/${ARCH})..."
85-
86- # Download and extract
87- ARCHIVE="gordon_${OS}_${ARCH}.tar.gz"
88- URL="https://github.com/bnema/gordon/releases/download/${VERSION}/${ARCHIVE}"
89- INSTALL_DIR="/usr/local/bin"
90-
91- curl -fsSL "$URL" -o "/tmp/${ARCHIVE}"
92- tar -xzf "/tmp/${ARCHIVE}" -C "$INSTALL_DIR" gordon
93- chmod +x "${INSTALL_DIR}/gordon"
94- rm -f "/tmp/${ARCHIVE}"
95-
96- # Verify
97- INSTALLED_VERSION=$("${INSTALL_DIR}/gordon" version 2>&1 || echo "unknown")
98- echo "Gordon installed: ${INSTALLED_VERSION}"
99-
100- # Set outputs
101- echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
102- echo "path=${INSTALL_DIR}/gordon" >> "$GITHUB_OUTPUT"
103-```
104-
105-- [ ] **Step 2: Commit**
106-
107-```bash
108-git add .github/actions/setup-gordon/action.yml
109-git commit -m "feat: add setup-gordon composite GitHub Action"
110-```
111-
112----
113-
114-### Task 2: Update GitHub Actions deployment documentation
115-
116-**Files:**
117-- Modify: `docs/deployment/github-actions.md`
118-
119-**Context:**
120-- Replace all manual `curl + chmod` install blocks with `uses: bnema/gordon/.github/actions/setup-gordon@main`
121-- Keep the rest of each workflow identical (checkout, build-and-deploy steps, env vars)
122-- Add a dedicated section documenting the action inputs/outputs
123-- All examples must use `${{ secrets.GORDON_REMOTE }}` for the remote URL
124-
125-- [ ] **Step 1: Replace "Install Gordon Binary" section (lines 37-46)**
126-
127-Replace the manual curl instructions with:
128-
129-```markdown
130-### 3. Setup Gordon CLI
131-
132-Add this step to your workflow to install the Gordon binary:
133-
134-\```yaml
135-- name: Setup Gordon
136- uses: bnema/gordon/.github/actions/setup-gordon@main
137- # with:
138- # version: latest # optional, default: latest
139-\```
140-```
141-
142-- [ ] **Step 2: Update "Deploy on Tag Push" example (lines 54-79)**
143-
144-Replace the `Install Gordon` step with the setup-gordon action step.
145-
146-- [ ] **Step 3: Update "Continuous Deploy on Main" example (lines 85-114)**
147-
148-Replace the `Install Gordon` step with the setup-gordon action step.
149-
150-- [ ] **Step 4: Update "Manual Dispatch" example (lines 120-152)**
151-
152-Replace the `Install Gordon` step with the setup-gordon action step.
153-
154-- [ ] **Step 5: Update "Monorepo" example (lines 158-195)**
155-
156-Replace the `Install Gordon` step with the setup-gordon action step.
157-
158-- [ ] **Step 6: Add setup-gordon Action Reference section**
159-
160-After the "Recommended: gordon push" section and before "Alternative: Docker-based Workflow", add:
161-
162-```markdown
163-### setup-gordon Action Reference
164-
165-#### Inputs
166-
167-| Input | Required | Default | Description |
168-|-------|----------|---------|-------------|
169-| `version` | No | `latest` | Gordon version to install (`v2.0.0`, `latest`) |
170-
171-#### Outputs
172-
173-| Output | Description |
174-|--------|-------------|
175-| `version` | The version actually installed |
176-| `path` | Path to the installed binary |
177-```
178-
179-- [ ] **Step 7: Commit**
180-
181-```bash
182-git add docs/deployment/github-actions.md
183-git commit -m "docs: update GitHub Actions guide to use setup-gordon action"
184-```
@@ -1,184 +0,0 @@
1-# setup-gordon Action Implementation Plan
2-
3-> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4-
5-**Goal:** Create a composite GitHub Action that installs the Gordon CLI binary into the runner's PATH.
6-
7-**Architecture:** Single composite action with a shell script that detects OS/arch, downloads the correct release archive, extracts the binary, and verifies it works. Documentation updated to reference the action.
8-
9-**Tech Stack:** GitHub Actions composite, bash, curl, tar
10-
11----
12-
13-### Task 1: Create the setup-gordon composite action
14-
15-**Files:**
16-- Create: `.github/actions/setup-gordon/action.yml`
17-
18-**Context:**
19-- Official releases are `.tar.gz` archives: `gordon_{os}_{arch}.tar.gz` (e.g. `gordon_linux_amd64.tar.gz`)
20-- Archives contain a single `gordon` binary at root
21-- Release URL pattern: `https://github.com/bnema/gordon/releases/download/{tag}/gordon_{os}_{arch}.tar.gz`
22-- Latest release tag can be resolved via: `gh release view --json tagName -q .tagName` or curl redirect on `/releases/latest`
23-- Supported OS: linux, darwin. Supported arch: amd64, arm64.
24-- Runner arch mapping: `X64` → `amd64`, `ARM64` → `arm64`
25-
26-- [ ] **Step 1: Create action.yml**
27-
28-```yaml
29-name: 'Setup Gordon'
30-description: 'Install the Gordon CLI binary into the runner PATH'
31-author: 'Gordon Contributors'
32-
33-branding:
34- icon: 'download-cloud'
35- color: 'blue'
36-
37-inputs:
38- version:
39- description: 'Gordon version to install (e.g. "v2.0.0" or "latest")'
40- required: false
41- default: 'latest'
42-
43-outputs:
44- version:
45- description: 'The version that was installed'
46- value: ${{ steps.install.outputs.version }}
47- path:
48- description: 'Path to the installed binary'
49- value: ${{ steps.install.outputs.path }}
50-
51-runs:
52- using: 'composite'
53- steps:
54- - name: Install Gordon CLI
55- id: install
56- shell: bash
57- run: |
58- set -euo pipefail
59-
60- # Determine OS
61- case "$RUNNER_OS" in
62- Linux) OS="linux" ;;
63- macOS) OS="darwin" ;;
64- *) echo "::error::Unsupported OS: $RUNNER_OS"; exit 1 ;;
65- esac
66-
67- # Determine architecture
68- case "$RUNNER_ARCH" in
69- X64) ARCH="amd64" ;;
70- ARM64) ARCH="arm64" ;;
71- *) echo "::error::Unsupported architecture: $RUNNER_ARCH"; exit 1 ;;
72- esac
73-
74- # Resolve version
75- VERSION="${{ inputs.version }}"
76- if [[ "$VERSION" == "latest" ]]; then
77- VERSION=$(curl -fsSL -o /dev/null -w '%{redirect_url}' "https://github.com/bnema/gordon/releases/latest" | grep -oP '[^/]+$')
78- if [[ -z "$VERSION" ]]; then
79- echo "::error::Failed to resolve latest Gordon version"
80- exit 1
81- fi
82- fi
83-
84- echo "Installing Gordon ${VERSION} (${OS}/${ARCH})..."
85-
86- # Download and extract
87- ARCHIVE="gordon_${OS}_${ARCH}.tar.gz"
88- URL="https://github.com/bnema/gordon/releases/download/${VERSION}/${ARCHIVE}"
89- INSTALL_DIR="/usr/local/bin"
90-
91- curl -fsSL "$URL" -o "/tmp/${ARCHIVE}"
92- tar -xzf "/tmp/${ARCHIVE}" -C "$INSTALL_DIR" gordon
93- chmod +x "${INSTALL_DIR}/gordon"
94- rm -f "/tmp/${ARCHIVE}"
95-
96- # Verify
97- INSTALLED_VERSION=$("${INSTALL_DIR}/gordon" version 2>&1 || echo "unknown")
98- echo "Gordon installed: ${INSTALLED_VERSION}"
99-
100- # Set outputs
101- echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
102- echo "path=${INSTALL_DIR}/gordon" >> "$GITHUB_OUTPUT"
103-```
104-
105-- [ ] **Step 2: Commit**
106-
107-```bash
108-git add .github/actions/setup-gordon/action.yml
109-git commit -m "feat: add setup-gordon composite GitHub Action"
110-```
111-
112----
113-
114-### Task 2: Update GitHub Actions deployment documentation
115-
116-**Files:**
117-- Modify: `docs/deployment/github-actions.md`
118-
119-**Context:**
120-- Replace all manual `curl + chmod` install blocks with `uses: bnema/gordon/.github/actions/setup-gordon@main`
121-- Keep the rest of each workflow identical (checkout, build-and-deploy steps, env vars)
122-- Add a dedicated section documenting the action inputs/outputs
123-- All examples must use `${{ secrets.GORDON_REMOTE }}` for the remote URL
124-
125-- [ ] **Step 1: Replace "Install Gordon Binary" section (lines 37-46)**
126-
127-Replace the manual curl instructions with:
128-
129-```markdown
130-### 3. Setup Gordon CLI
131-
132-Add this step to your workflow to install the Gordon binary:
133-
134-\```yaml
135-- name: Setup Gordon
136- uses: bnema/gordon/.github/actions/setup-gordon@main
137- # with:
138- # version: latest # optional, default: latest
139-\```
140-```
141-
142-- [ ] **Step 2: Update "Deploy on Tag Push" example (lines 54-79)**
143-
144-Replace the `Install Gordon` step with the setup-gordon action step.
145-
146-- [ ] **Step 3: Update "Continuous Deploy on Main" example (lines 85-114)**
147-
148-Replace the `Install Gordon` step with the setup-gordon action step.
149-
150-- [ ] **Step 4: Update "Manual Dispatch" example (lines 120-152)**
151-
152-Replace the `Install Gordon` step with the setup-gordon action step.
153-
154-- [ ] **Step 5: Update "Monorepo" example (lines 158-195)**
155-
156-Replace the `Install Gordon` step with the setup-gordon action step.
157-
158-- [ ] **Step 6: Add setup-gordon Action Reference section**
159-
160-After the "Recommended: gordon push" section and before "Alternative: Docker-based Workflow", add:
161-
162-```markdown
163-### setup-gordon Action Reference
164-
165-#### Inputs
166-
167-| Input | Required | Default | Description |
168-|-------|----------|---------|-------------|
169-| `version` | No | `latest` | Gordon version to install (`v2.0.0`, `latest`) |
170-
171-#### Outputs
172-
173-| Output | Description |
174-|--------|-------------|
175-| `version` | The version actually installed |
176-| `path` | Path to the installed binary |
177-```
178-
179-- [ ] **Step 7: Commit**
180-
181-```bash
182-git add docs/deployment/github-actions.md
183-git commit -m "docs: update GitHub Actions guide to use setup-gordon action"
184-```
D docs/superpowers/specs/2026-03-19-setup-gordon-action-design.md +0 -58
@@ -1,58 +0,0 @@
1-# Design: `setup-gordon` GitHub Action
2-
3-**Date:** 2026-03-19
4-**Status:** Approved
5-
6-## Goal
7-
8-Composite GitHub Action that installs the Gordon CLI binary into the runner's PATH. Setup only — no execution.
9-
10-## Location
11-
12-`.github/actions/setup-gordon/action.yml`
13-
14-## Inputs
15-
16-| Input | Default | Description |
17-|-----------|----------|------------------------------------------|
18-| `version` | `latest` | Version to install (`v2.0.0`, `latest`) |
19-
20-## Outputs
21-
22-| Output | Description |
23-|-----------|------------------------------------|
24-| `version` | The version actually installed |
25-| `path` | Path to the installed binary |
26-
27-## Logic
28-
29-1. Determine runner OS and arch (`linux`/`darwin`, `amd64`/`arm64`)
30-2. If `version=latest`, resolve the tag via GitHub API redirect
31-3. Download `gordon_{os}_{arch}` from GitHub Releases
32-4. Place binary at `/usr/local/bin/gordon`, `chmod +x`
33-5. Verify with `gordon version`
34-
35-## Usage
36-
37-```yaml
38-steps:
39- - uses: bnema/gordon/.github/actions/setup-gordon@main
40- with:
41- version: latest
42-
43- - run: gordon push --build --remote "$GORDON_REMOTE" --no-confirm
44- env:
45- GORDON_TOKEN: ${{ secrets.GORDON_TOKEN }}
46- GORDON_REMOTE: ${{ secrets.GORDON_REMOTE }}
47-```
48-
49-## Documentation updates
50-
51-- Update `docs/deployment/github-actions.md` to document `setup-gordon` as the recommended approach
52-
53-## Out of scope
54-
55-- No Docker login/setup (Gordon handles its own auth)
56-- No command execution
57-- No Windows support (Gordon does not build for Windows)
58-- The existing `.github/actions/deploy/` action remains untouched
@@ -1,58 +0,0 @@
1-# Design: `setup-gordon` GitHub Action
2-
3-**Date:** 2026-03-19
4-**Status:** Approved
5-
6-## Goal
7-
8-Composite GitHub Action that installs the Gordon CLI binary into the runner's PATH. Setup only — no execution.
9-
10-## Location
11-
12-`.github/actions/setup-gordon/action.yml`
13-
14-## Inputs
15-
16-| Input | Default | Description |
17-|-----------|----------|------------------------------------------|
18-| `version` | `latest` | Version to install (`v2.0.0`, `latest`) |
19-
20-## Outputs
21-
22-| Output | Description |
23-|-----------|------------------------------------|
24-| `version` | The version actually installed |
25-| `path` | Path to the installed binary |
26-
27-## Logic
28-
29-1. Determine runner OS and arch (`linux`/`darwin`, `amd64`/`arm64`)
30-2. If `version=latest`, resolve the tag via GitHub API redirect
31-3. Download `gordon_{os}_{arch}` from GitHub Releases
32-4. Place binary at `/usr/local/bin/gordon`, `chmod +x`
33-5. Verify with `gordon version`
34-
35-## Usage
36-
37-```yaml
38-steps:
39- - uses: bnema/gordon/.github/actions/setup-gordon@main
40- with:
41- version: latest
42-
43- - run: gordon push --build --remote "$GORDON_REMOTE" --no-confirm
44- env:
45- GORDON_TOKEN: ${{ secrets.GORDON_TOKEN }}
46- GORDON_REMOTE: ${{ secrets.GORDON_REMOTE }}
47-```
48-
49-## Documentation updates
50-
51-- Update `docs/deployment/github-actions.md` to document `setup-gordon` as the recommended approach
52-
53-## Out of scope
54-
55-- No Docker login/setup (Gordon handles its own auth)
56-- No command execution
57-- No Windows support (Gordon does not build for Windows)
58-- The existing `.github/actions/deploy/` action remains untouched

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 7

Tags 106

↑↓ moveenter openesc close