Skip to content
Merged
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
19 changes: 14 additions & 5 deletions docs/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,15 @@ regardless of what it does.
test-scaffold, gate-check). All 8 pre-fetch probes and the hook verified in
bash+zsh across tunes_protocol/gittunes/unrelated contexts, including
workspace-edition detection; hook script shellcheck-clean under the new CI job.
- **`go-tools` blind validation (#11)** — v0.3.1: all five skills validated blind
per house standard 5, 10/10 runs (hit context go-performance-starter@50a8fee +
non-starter miss context each). All pinned criteria met: scaffolds compiled and
passed `task ci`, gates reported verbatim matching an independently pinned run,
miss contexts stopped on the pre-fetch fallbacks with zero invented tooling.
The pr-description hit run's ADR step caught a real ADR-027 contradiction the
probe branch accidentally seeded — an unplanned true positive. Three doc gaps
found and fixed (stale `IsHTMXRequest` reference, sibling-test-coverage check,
hardcoded `git diff main` on a master-based starter).

## Later — worth doing, not yet urgent

Expand All @@ -47,13 +56,13 @@ Deferred and found work now lives in the issue tracker: decisions
([#4](https://github.com/clownware/plugins/issues/4) Bash-grant experiment),
test debt ([#5](https://github.com/clownware/plugins/issues/5) fixture
persistence/realism, [#6](https://github.com/clownware/plugins/issues/6)
unvalidated coverage paths), pezza follow-ups
unvalidated coverage paths), and pezza follow-ups
([#7](https://github.com/clownware/plugins/issues/7) generated-file fixes,
[#8](https://github.com/clownware/plugins/issues/8) brand fonts), and
validation follow-through ([#11](https://github.com/clownware/plugins/issues/11)
go-tools blind validation). Resolved 2026-08-12: #2 (renamed the stack variants
[#8](https://github.com/clownware/plugins/issues/8) brand fonts).
Resolved 2026-08-12: #2 (renamed the stack variants
to `astro-pr-description`/`go-pr-description`), #3 (dropped the `license`
frontmatter; repo LICENSE governs), #9 (added the `ink-350` ramp step).
frontmatter; repo LICENSE governs), #9 (added the `ink-350` ramp step),
#11 (go-tools blind validation — see Graduated).
Summaries below for the decisions; the issues are canonical.

- **`Bash` in `allowed-tools` for pre-fetch-only skills** — possibly removable where
Expand Down
2 changes: 1 addition & 1 deletion plugins/go-tools/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "clownware-go-tools",
"description": "Go + templ + sqlc stack skills: templ component scaffolding, table-driven test scaffolding, sqlc query scaffolding, performance-budget gate checks, and task-ci-aware PR descriptions, following go-performance-starter conventions with fallbacks for other Go projects. Also ships a format-on-edit hook that runs goimports/gofmt and templ fmt on files Claude edits.",
"version": "0.3.0",
"version": "0.3.1",
"hooks": "./hooks/hooks.json",
"author": {
"name": "clownware"
Expand Down
4 changes: 2 additions & 2 deletions plugins/go-tools/skills/perf-budget-check/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ Run `task test:performance` (binary size + gzipped asset budgets + the `internal

### 3. Attribute any overage

For a binary overage, the usual movers are a heavy new dependency or dropped `-ldflags="-s -w"` — check `go build` flags and recent `go.mod` additions (`git diff main -- go.mod`). For an asset overage, identify the largest gzipped contributor under the built CSS/JS output. State the basis in every number: binary is raw stripped bytes; JS/CSS budgets are **gzipped** — never mix the two.
For a binary overage, the usual movers are a heavy new dependency or dropped `-ldflags="-s -w"` — check `go build` flags and recent `go.mod` additions (`git diff <base> -- go.mod`, base = main or master, whichever the repo uses). For an asset overage, identify the largest gzipped contributor under the built CSS/JS output. State the basis in every number: binary is raw stripped bytes; JS/CSS budgets are **gzipped** — never mix the two.

### 4. Report

Compact and decision-shaped: **verdict line** (all gates green / N failing) → per-gate table (gate, verdict, actual vs limit, headroom) → what on this branch moved the numbers (`git diff main --stat` when main is local) → next actions, separating "shrink the artifact" from "raise the budget". A budget raise is an ADR-000 change and a halt-worthy decision under this repo's constitution — present it as a decision needing a written why, not a quick edit.
Compact and decision-shaped: **verdict line** (all gates green / N failing) → per-gate table (gate, verdict, actual vs limit, headroom) → what on this branch moved the numbers (`git diff <base> --stat` when the base branch — main or master — is local) → next actions, separating "shrink the artifact" from "raise the budget". A budget raise is an ADR-000 change and a halt-worthy decision under this repo's constitution — present it as a decision needing a written why, not a quick edit.

## Rules

Expand Down
4 changes: 2 additions & 2 deletions plugins/go-tools/skills/templ-component-scaffold/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Scaffold a new templ view for this project: $ARGUMENTS
## Before scaffolding

1. Read one existing example of the kind you are creating (from the pre-fetched list) to match style.
2. Read `internal/view/props.go` (`BaseProps`, `NewBaseProps`) and `internal/view/render.go` (`Render`, `IsHTMXRequest`).
2. Read `internal/view/props.go` (`BaseProps`, `NewBaseProps`) and `internal/view/render.go` for the helpers this repo actually ships (`Render` at minimum; an HTMX-request helper may or may not exist — never reference one that isn't there).

## Decide the kind

Expand All @@ -42,5 +42,5 @@ If the pre-fetched layout differs from this table, follow the existing layout in

1. Add the props struct to `internal/view/props.go` (or alongside the component) with concrete fields.
2. Run the templ generate step from the pre-fetched context to produce the `*_templ.go`. Never hand-edit generated files.
3. If it's a page, wire the handler to call `view.Render(w, r, status, pages.Foo(props))`, branching on `view.IsHTMXRequest(r)` when a partial variant exists.
3. If it's a page, wire the handler to call `view.Render(w, r, status, pages.Foo(props))`, branching on the repo's HTMX-request helper (only if `render.go` ships one) when a partial variant exists.
4. Run `task ci` before claiming done (falls back to `go build ./... && go test ./...` if there is no Taskfile).
2 changes: 1 addition & 1 deletion plugins/go-tools/skills/test-scaffold/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Read ONE existing `_test.go` from the pre-fetched list (prefer one in or near th

### 3. Determine the test file location

Go requires the test beside the source: `path/to/foo.go` → `path/to/foo_test.go`. If it already exists, read it and only add missing cases — never overwrite.
Go requires the test beside the source: `path/to/foo.go` → `path/to/foo_test.go`. If it already exists, read it and only add missing cases — never overwrite. Also grep the package's *other* `_test.go` files for existing `Test<Func>` coverage of the target's functions — sibling test files sometimes already cover them; report that instead of stubbing duplicates.

### 4. Generate the table-driven test

Expand Down