-
Notifications
You must be signed in to change notification settings - Fork 0
Release automation + palette customization #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
4038851
28fb306
5f1949d
7742a2f
32ba822
79903eb
aef7321
29d6ae1
b03dcc3
73cd293
737b80e
61af471
838da9a
8a4c0ac
aa54228
ad56d68
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Editor configuration | ||
root = true | ||
|
||
[*] | ||
charset = utf-8 | ||
end_of_line = lf | ||
insert_final_newline = true | ||
indent_style = space | ||
indent_size = 2 | ||
trim_trailing_whitespace = true | ||
|
||
[*.go] | ||
indent_style = tab | ||
tab_width = 8 | ||
[Makefile] | ||
indent_style = tab | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
#!/usr/bin/env bash | ||
set -euo pipefail | ||
|
||
echo "Running gofmt check..." | ||
make fmt-check | ||
|
||
echo "Running golangci-lint..." | ||
if ! command -v golangci-lint >/dev/null 2>&1; then | ||
echo "golangci-lint not found. Install from https://golangci-lint.run/ before committing." >&2 | ||
exit 1 | ||
fi | ||
make lint | ||
|
||
echo "Running go tests..." | ||
make test | ||
|
||
echo "Regenerating docs to ensure sync..." | ||
BIN="${MARKDOWN_TRANSCLUSION_BIN:-markdown-transclusion}" | ||
if ! command -v "$BIN" >/dev/null 2>&1; then | ||
echo "Required '$BIN' not found. Install it or set MARKDOWN_TRANSCLUSION_BIN." >&2 | ||
exit 1 | ||
fi | ||
MARKDOWN_TRANSCLUSION_BIN="$BIN" make docs | ||
# Abort commit if generation changed files; force developers to stage them. | ||
if ! git diff --quiet --exit-code; then | ||
echo "Docs changed during pre-commit. Stage the updates and re-run commit." >&2 | ||
git --no-pager diff --stat | ||
exit 1 | ||
fi | ||
|
||
echo "Pre-commit checks passed." |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
name: Docs Pipeline | ||
|
||
'on': | ||
push: | ||
branches: [main] | ||
pull_request: | ||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
docs: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Set up Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: go.mod | ||
- name: Set up Node | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '20' | ||
- name: Install markdown-transclusion CLI | ||
run: npm install -g markdown-transclusion@^1 | ||
# Alternatively: | ||
# - name: Generate docs | ||
# run: npx --yes markdown-transclusion --version && make docs | ||
# env: | ||
# MARKDOWN_TRANSCLUSION_BIN: npx --yes markdown-transclusion | ||
- name: Generate docs | ||
env: | ||
MARKDOWN_TRANSCLUSION_BIN: markdown-transclusion | ||
run: make docs | ||
- name: Ensure docs are up to date | ||
run: git diff --stat --exit-code | ||
- name: Run docs tests | ||
run: make docs-test |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
name: Quality Checks | ||
|
||
on: | ||
push: | ||
branches: [main, docs-release-pipeline] | ||
pull_request: | ||
|
||
permissions: | ||
contents: read | ||
|
||
jobs: | ||
quality: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version: '1.25' | ||
|
||
Comment on lines
+21
to
+22
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Workflow will break: wrong Go version, outdated golangci-lint action, missing Node setup. You can’t lint with Go 1.22.7 while claiming 1.25, and you’re installing an npm tool without setting up Node. Also, v3 of the golangci-lint action is ancient. - name: Set up Go
uses: actions/setup-go@v5
with:
- go-version: '1.25'
+ go-version: '1.22.x'
+ check-latest: true
+ cache: true
+
+ - name: Set up Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
- name: Install markdown-transclusion
run: npm install -g markdown-transclusion
- name: Run golangci-lint
- uses: golangci/golangci-lint-action@v3
+ uses: golangci/golangci-lint-action@v6
with:
version: v1.59.1
install-mode: binary
args: ./...
- env:
- GOTOOLCHAIN: go1.22.7 Also applies to: 29-37, 23-25 🤖 Prompt for AI Agents
|
||
- name: Install markdown-transclusion | ||
Comment on lines
+18
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chainThis workflow will break. Fix Go version, set up Node, upgrade golangci action. You claim Go 1.25 (doesn’t exist here), install npm tools without Node, and use a stale action. Clean it up. - name: Set up Go
uses: actions/setup-go@v5
with:
- go-version: '1.25'
+ go-version: '1.22.x'
+ check-latest: true
+ cache: true
+
+ - name: Set up Node
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20'
@@
- - name: Run golangci-lint
- uses: golangci/golangci-lint-action@v3
+ - name: Run golangci-lint
+ uses: golangci/golangci-lint-action@v6
with:
version: v1.59.1
install-mode: binary
args: ./...
- env:
- GOTOOLCHAIN: go1.22.7 Also applies to: 23-25, 29-37 🏁 Script executed: #!/usr/bin/env bash
# Sanity-check that Go versions are consistent across repo
rg -nP "(setup-go@|go-version:|GOTOOLCHAIN|language:\s*Go)" -g ".github/**" -n -C1 Length of output: 148 🏁 Script executed: #!/usr/bin/env bash
set -euo pipefail
echo "PWD: $(pwd)"
echo "---- top-level ----"
ls -la | sed -n '1,200p' || true
echo
echo "---- .github/workflows ----"
ls -la .github/workflows || true
echo
if [ -f .github/workflows/quality.yml ]; then
echo "---- .github/workflows/quality.yml (full) ----"
sed -n '1,240p' .github/workflows/quality.yml
echo "---- lines 18-23 ----"
sed -n '18,23p' .github/workflows/quality.yml
else
echo "quality.yml not found; searching repo for relevant workflow keywords..."
fi
echo
echo "---- rg search for Go/Node/golangci references ----"
rg -n --hidden -S 'setup-go@|go-version:|GOTOOLCHAIN|language:\s*Go|setup-node@|node-version:|golangci-lint-action|markdown-transclusion' || true Length of output: 7780 Fix now — workflow will fail: wrong Go version, missing Node setup, stale golangci action
Location: .github/workflows/quality.yml — Set up Go / Install markdown-transclusion (lines ~18–24) and Run golangci-lint block (lines ~30–37). 🤖 Prompt for AI Agents
|
||
run: npm install -g markdown-transclusion | ||
|
||
- name: gofmt check | ||
run: make fmt-check | ||
|
||
- name: Run golangci-lint | ||
uses: golangci/golangci-lint-action@v3 | ||
with: | ||
version: v1.59.1 | ||
install-mode: binary | ||
args: ./... | ||
env: | ||
GOTOOLCHAIN: go1.22.7 | ||
|
||
- name: Go tests | ||
run: make test | ||
|
||
- name: Generate docs | ||
run: make docs | ||
|
||
- name: Verify docs | ||
run: make docs-verify | ||
|
||
- name: Ensure docs committed | ||
run: | | ||
git status --porcelain | ||
git diff --stat | ||
git diff --exit-code |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
run: | ||
timeout: 5m | ||
tests: true | ||
linters: | ||
enable: | ||
- govet | ||
- staticcheck | ||
- gofmt | ||
- goimports | ||
- revive | ||
- errcheck | ||
- ineffassign | ||
- gosec | ||
issues: | ||
exclude-use-default: false | ||
|
||
linters-settings: | ||
gofmt: | ||
simplify: true | ||
goimports: | ||
local-prefixes: github.com/flyingrobots/hubless | ||
revive: | ||
ignore-generated-header: true |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Hubless Planning Data | ||
|
||
This directory holds the human-authored JSON records plus generated markdown artifacts derived from them. | ||
|
||
- `schema/` – JSON schemas (hand maintained). | ||
- `roadmap/` – milestone & feature data. | ||
- `*.json` – source of truth (hand maintained). | ||
- `templates/` – Markdown templates that reference shared components (edit these when layout changes). | ||
- `generated/` – Output Markdown rendered from templates (do not edit, regenerated via `make docs`). | ||
- `issues/` – stories & tasks following the task lifecycle. | ||
- `tasks/*.json` and `stories/*.json` – source of truth (hand maintained). | ||
- `templates/` – Markdown templates to document task/story tables (edit as needed). | ||
- `generated/` – Output Markdown rendered from templates (`tasks.md`, `archive.md`, etc.). Do not edit by hand. | ||
Comment on lines
+9
to
+13
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick Add a bold “DO NOT EDIT” banner to generated/ directories. Double down on the warning to prevent accidental edits in reviews. - - `generated/` – Output Markdown rendered from templates (do not edit, regenerated via `make docs`).
+ - `generated/` – Output Markdown rendered from templates.
+ - DO NOT EDIT: Regenerated via `make docs`; changes here will be overwritten.
🤖 Prompt for AI Agents
|
||
|
||
Run `make docs` from the repository root to regenerate anything in `generated/` after changing source JSON or templates. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Hubless Archive | ||
|
||
> Generated overview of completed work. Regenerate with `make docs` after updating story or task JSON. | ||
|
||
## Completed Stories | ||
|
||
<!-- Generated by docs-components; do not edit manually. --> | ||
| ID | Title | Completed Status | | ||
| --- | --- | --- | | ||
| — | — | — | | ||
|
||
## Completed Tasks | ||
|
||
<!-- Generated by docs-components; do not edit manually. --> | ||
| ID | Title | Completed On | Badges | | ||
| --- | --- | --- | --- | | ||
| hubless/m0/task/0005 | Evaluate markdown component library | 2025-09-19 | Tested, Documented, Shipped | |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
{ | ||
"id": "hubless/story/0007", | ||
"title": "As a documentarian I can compose docs from reusable components", | ||
"status": "PLANNED", | ||
"persona": "Documentarian", | ||
"need": "maintain consistent documentation without manual duplication", | ||
"outcome": "Docs are assembled from shared Markdown snippets using automation integrated with Hubless tooling", | ||
"acceptance_criteria": [ | ||
"Component snippets library exists", | ||
"At least one doc (e.g., PRD) generated from components", | ||
"Build command integrates snippet assembly" | ||
], | ||
"features": [ | ||
"hubless/feature/docs-components" | ||
], | ||
"dependencies": [ | ||
"hubless/story/0001" | ||
], | ||
"tasks": [ | ||
"hubless/m0/task/0005" | ||
] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
{ | ||
"id": "hubless/m0/task/0005", | ||
"title": "Evaluate markdown component library", | ||
"status": "DONE", | ||
"owner": null, | ||
"description": "Assess the existing markdown-transclusion project and plan integration or Go-based alternative for reusable documentation components.", | ||
"labels": [ | ||
"m0-foundations", | ||
"docs", | ||
"automation" | ||
], | ||
"links": [ | ||
{ | ||
"type": "repo", | ||
"url": "https://github.com/flyingrobots/markdown-transclusion", | ||
"label": "markdown-transclusion" | ||
}, | ||
{ | ||
"type": "doc", | ||
"url": "../../docs/PRD.md", | ||
"label": "PRD" | ||
}, | ||
{ | ||
"type": "doc", | ||
"url": "../../docs/TechSpec.md", | ||
"label": "Tech spec" | ||
} | ||
], | ||
"required_inputs": [ | ||
{ | ||
"resource": "https://github.com/flyingrobots/markdown-transclusion", | ||
"exclusivity": "read-only", | ||
"notes": "Review existing snippet tooling." | ||
}, | ||
{ | ||
"resource": "../../docs/PRD.md", | ||
"exclusivity": "read-only", | ||
"notes": "Identify repeated content candidates." | ||
}, | ||
{ | ||
"resource": "../../@hubless/schema", | ||
"exclusivity": "read-only", | ||
"notes": "Ensure schema-driven docs compatible with snippet outputs." | ||
} | ||
], | ||
"expected_outputs": [ | ||
{ | ||
"resource": "../../docs/reference/docs-components-plan.md", | ||
"notes": "Plan outlining snippet integration approach." | ||
}, | ||
{ | ||
"resource": "../../@hubless/roadmap/features/hubless-feature-docs-components.json", | ||
"notes": "Feature status updated with findings." | ||
} | ||
], | ||
"expertise": [ | ||
"Documentation tooling", | ||
"Go", | ||
"Automation pipelines" | ||
], | ||
"dependencies": [ | ||
"hubless/m0/task/0004" | ||
], | ||
"badges": [ | ||
"Tested", | ||
"Documented", | ||
"Shipped" | ||
], | ||
"created_at": "2025-09-18", | ||
"updated_at": "2025-09-19", | ||
"notes": [ | ||
{ | ||
"at": "2025-09-19T17:20:00Z", | ||
"author": "codex", | ||
"body": "Integrated markdown-transclusion pipeline, added reusable snippets under docs/components, and documented make docs workflow." | ||
}, | ||
{ | ||
"at": "2025-09-19T18:05:00Z", | ||
"author": "codex", | ||
"body": "Reorganized @hubless directories, added progress/dependency/status components, wired them into PRD/TechSpec, and added generator unit tests." | ||
}, | ||
{ | ||
"at": "2025-09-19T18:25:00Z", | ||
"author": "codex", | ||
"body": "Parameterised dependency graph output and published archived rollups with CI enforcement." | ||
} | ||
] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Hubless Archive | ||
|
||
> Generated overview of completed work. Regenerate with `make docs` after updating story or task JSON. | ||
|
||
## Completed Stories | ||
|
||
![[docs/components/issues/archived-stories.md]] | ||
|
||
## Completed Tasks | ||
|
||
![[docs/components/issues/archived-tasks.md]] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧹 Nitpick
Stop wasting cycles; make CI reproducible and smarter.
Apply:
Also applies to: 16-23, 24-36
🤖 Prompt for AI Agents