* docs: cap prose paragraphs at 3 sentences and clarify token budgets
CLAUDE.md constrained prose only at whole-file granularity, with three
conflicting per-SKILL.md token numbers and a "why" pattern that
tempted a second sentence per rule. Add a per-paragraph sentence cap,
a budget table clarifying which number measures what, and a mechanical
checker (scripts/check_prose_density.py) wired into the "After
updating a skill" checklist so verbose paragraphs get caught instead
of only whole-file token/line counts.
* docs: rewrite prose paragraphs over the new 3-sentence density cap
CLAUDE.md now caps standalone prose paragraphs at 3 sentences
(scripts/check_prose_density.py). Running it across every skill found
62 flagged paragraphs in 31 skills, dominated by a recurring
"library disclaimer" paragraph repeated near-verbatim across 17
library-specific skills. Restructure each flagged paragraph into
bullets, a table, or a tightened sentence per CLAUDE.md's Formats
guidance, preserving every fact, URL, and cross-reference. Re-scanning
the full repo now reports 0 flagged paragraphs across all skills.
Bump each touched skill's metadata.version by one patch version.
Update README token counts for the 31 touched skills to match.
* docs: drop the prose-density checker script
The script added mechanical enforcement but no CI wiring, so it never
ran anywhere but ad hoc. Keep the 3-sentence prose cap and the
clarified token-budget table in CLAUDE.md; drop the script and its
two call-outs, renumbering the "After updating a skill" checklist
back to a contiguous sequence.
* feat(golang-modernize): add Go 1.27 support, fix sibling skill drift
Go 1.27 shipped August 2026 and made several existing statements in
this plugin factually wrong, not just outdated - encoding/json/v2 is
now the default (was documented as experimental-only), the goroutine
leak profile is GA (was documented as GOEXPERIMENT-gated), and go
fix's modernizer suite changed. An agent loading these skills today
would give incorrect advice.
Rebased onto main, which had independently merged PR #98 (a smaller,
overlapping Go 1.27 pass on the same files). Reconciled rather than
overwritten: kept PR #98's stdlib-uuid/generic-methods/CutLast/
synctest-http evals (renumbered 20-23) alongside this branch's own,
folded its unique versions.md content (go fix modernizers, stdversion,
go mod tidy merge, small API preferences) into the merged Go 1.27
section, and corrected its json/v2 section, which claimed v1 behavior
is preserved while also stating v2 rejects duplicate keys - those two
claims contradict each other once v1 sits on top of v2 by default.
- golang-modernize: merged Go 1.27 section (generic methods with a
citation to the Go issue/spec after an eval showed models otherwise
distrust the claim, CutLast, URL/Values.Clone, math/big.Int.Divide,
stdlib uuid, json/v2 migration), a version-bump risk checklist for
changes that need verification rather than a rewrite (removed
GODEBUG keys, json/v2 strictness), stdversion workflow step, and
skill-library-version tracking so future drift gets caught by the
staleness check instead of by accident.
- 11 sibling skills (concurrency, troubleshooting, refactoring,
popular-libraries, performance, continuous-integration,
dependency-management, testing, benchmark, observability,
documentation): surgical corrections wherever Go 1.27 broke a prior
claim, plus additive Go 1.27 notes where directly relevant.
- evals.json: merged to 23 evals / 125 assertions (up from the 74 on
main before either PR) - this branch's evals plus PR #98's four,
renumbered to avoid ID collisions and kept rather than pruned as
redundant, since both authors' scenarios are independently useful.
- EVALUATIONS.md / README.md: single reconciled report replacing the
two competing v1.4.0 reports that resulted from the parallel work
(116/120 with, 65/120 without, +43pp pooled), a Total row recomputed
across all 41 skills, and a corrected TOC anchor. One eval's
without-skill condition could not be captured after five subagent
attempts and is reported as unmeasured rather than guessed.
* fix(golang-how-to): correct broken TOC anchor links from PR #100
markdownlint's MD051 rule strips emoji symbols when computing heading
slugs but keeps their variation selectors (U+FE0F), since those are
Unicode "Mark" characters, not "Symbol". The TOC entries assumed full
removal and linked to plain hyphenated anchors, so every heading
followed by ⭐️/⚙️ (both of which use a variation selector) produced a
link-fragment mismatch - failing lint repo-wide on every PR regardless
of what it touches, including this one.
Recomputed the correct URL-encoded anchors from markdownlint's own
slug algorithm and rewrote just the TOC hrefs; no visible text changed.
* feat(golang-modernize): add Go 1.27 modernizations
- Add Go 1.27 section to references/versions.md: generic methods,
stdlib uuid, strings/bytes.CutLast, url.Clone, synctest.Sleep,
httptest.NewTestServer, GA goroutineleak profile, new go fix
modernizers, stdversion vet check, go mod tidy require-block merge
- SKILL.md: add Go 1.27 changelog row, deprecations (tls Config.Rand,
github.com/google/uuid), priority guide items, json/v2 now stable
- Add 4 adversarial eval scenarios for Go 1.27 content (17 evals,
92 assertions); all pre-flighted without the skill
- Bump skill to v1.4.0 and plugin to v2.1.0 (all 3 plugin files)
- README: update golang-modernize token counts
* chore: leave plugin version bump to repo owners
Revert the 2.0.0 -> 2.1.0 bump in .claude-plugin/plugin.json,
.cursor-plugin/plugin.json and gemini-extension.json. The skill's own
metadata.version bump to 1.4.0 is kept.
* docs(golang-modernize): add v1.4.0 evaluation report
17 adversarial evals x 2 configs = 34 subagent runs, LLM-as-judge
grading. With skill 91/92 (99%), without 64/92 (70%), delta +29pp,
uplift 1.42x. Includes 4 new Go 1.27 evals and eval 13 (first run).
Uplift concentrates in the Go 1.27 evals (with 18/18, without 4/18);
the model already knows much of the Go 1.21-1.26 content.
Also updates the summary tables in EVALUATIONS.md and README.md.
---------
Co-authored-by: Samuel Berthe <dev@samuel-berthe.fr>
* docs: broaden compatibility base string across all golang-* skills
Replace "Claude Code or similar AI coding agents" with "Claude Code,
Codex or similar harness" per the cross-harness portability rule in
CLAUDE.md, mirroring samber/cc-skills-golang#91.
* feat: scope Go-file skills with the paths frontmatter field
Adds the optional paths frontmatter field (documented in
samber/cc-skills-golang#91) to every skill whose subject matter is
Go source itself, so Cursor can sharpen triggering to **/*.go files.
Skills not tied to a file type (setup, CI, ecosystem-lookup,
orchestrator) are intentionally left without it.
golang-lint also scopes to .golangci.yml, since linter configuration
is as central to that skill as the Go source it lints.
* docs: drop hardcoded Agent-tool phrasing from skill body prose
Continues the cross-harness portability rule from
samber/cc-skills-golang#91 — sub-agent fan-out is a capability every
harness resolves its own way; naming Claude Code's Agent tool in body
prose is redundant on Claude Code and dead weight elsewhere.
* feat(golang-how-to): flatten Configure mode to 5 harnesses, fix Cursor bug
Configure mode previously wrote to CLAUDE.md, AGENTS.md,
.cursor/rules, and copilot-instructions.md with Claude Code framed as
the primary target. This flattens the harness list to equal standing
and adds GEMINI.md (Gemini CLI, Antigravity).
Fixes a real bug: .cursor/rules is a directory of .mdc files with
their own YAML frontmatter, not a single markdown file to grep and
append to. The old Step 2/4 logic assumed the latter and would not
have worked on Cursor. Adds a dedicated .mdc template
(assets/cursor-go-skills.mdc) and a Cursor-specific write path.
Also adds the new Questions top-of-body directive and drops the
remaining hardcoded AskUserQuestion/Glob/Edit tool names from
project-config.md and golang-project-layout's checklist, per the
cross-harness portability rule in samber/cc-skills-golang#91.
* docs(golang-continuous-integration): label CI review blocks as generated artifacts
Notes that the Claude Code and Copilot review blocks under
'AI-Driven Code Review' are generated artifacts targeting a CI
runner, not the developer's local harness — their literal tool names
and permission flags are intentional under the exemption in
samber/cc-skills-golang#91, so a future portability grep hit there
reads as expected rather than as a miss.
* docs: lead Thinking/Orchestration mode directives with universal instruction
Rewords the 8 Thinking mode and 12 Orchestration mode directives across
these skills to lead with the harness-neutral instruction ("Reason as
thoroughly as possible...", "Fan out N parallel sub-agents...") and
mention ultrathink/ultracode second, as the Claude Code-specific
accelerator rather than the instruction itself. Also drops the
remaining hardcoded "(via the Agent tool)"/"(Agent tool)" parentheticals
and EnterWorktree/ExitWorktree tool-name mentions from body prose in
favor of "an isolated worktree" — the tool stays declared in
allowed-tools, prose just describes the capability.
Mirrors the format adopted in samber/cc-skills-golang#91.
* docs: add Questions directive to golang-refactoring and golang-modernize
golang-refactoring gates several irreversible git operations behind
explicit sign-off (initial plan approval, then per-checkpoint mid-
refactor pauses). Adds a top-of-body Questions directive naming the
mechanism once, and removes a verbatim-duplicated 5-item checkpoint
list between SKILL.md and references/workflow.md — workflow.md now
points back to SKILL.md's list instead of restating it.
golang-modernize already had an ad hoc "Consent check" block for its
contextual-trigger mode, placed after the first heading rather than
with the other top-of-body directives. Renames it to the Questions
directive and moves it up next to Persona/Orchestration mode/Modes,
consistent with the convention in samber/cc-skills-golang#91.
* docs(golang-gopls): generalize MCP registration and settings storage
The MCP registration section named only Claude Code's 'claude mcp add'
command with no acknowledgement that gopls mcp is a harness-agnostic
launch command any MCP-capable host can point at. Notes the underlying
command is portable and that other harnesses use their own settings
file rather than a shared config format.
Also drops a stray 'Store the settings in CLAUDE.md' pointer for
gopls's editor-agnostic LSP settings — there was no reason that one
was Claude Code-only.
* chore: bump metadata.version on every skill touched by this branch
Patch bump per CLAUDE.md's version-discipline rule — no plugin
manifest version change, per standing preference to leave
.claude-plugin/plugin.json, .cursor-plugin/plugin.json, and
gemini-extension.json untouched for skill-level updates.
* docs: refresh README token counts for all touched skills
Re-measured Description/SKILL.md/Directory token counts via
tiktoken-cli after the cross-harness portability changes across all
46 golang-* skills.
* Revert "chore: bump metadata.version on every skill touched by this branch"
This reverts commit 28e6c898f0.
* docs(golang-gopls): name CLAUDE.md/AGENTS.md explicitly
Generic 'the project's agent-config file' phrasing lost the concrete
examples the equivalent line elsewhere in the repo keeps. Names the
two most common files while keeping 'or equivalent' for the rest.
Recompute Description/SKILL.md/Directory token counts for every skill
with tiktoken-cli (several skills grew since the last measurement, e.g.
golang-continuous-integration's assets/, golang-how-to's references/).
Also add missing golang-pkg-go-dev to the skills tree diagram.
* feat(skills): add golang-refactoring skill
Adds a new skill covering the safe, at-scale process of refactoring
existing Go code: a coverage-adaptive safety net, tool-driven
behavior-preserving transforms (gopls Rename/Inline/Extract, gofmt -r,
eg, gopatch, go/analysis fixers), the Fowler refactoring catalog mapped
to Go, breaking import cycles and moving types across packages via
type-alias gradual code repair, and a human-in-the-loop workflow of
small staged PRs landed on a refactoring branch.
The workflow persists its plan in the code itself via `// REFACTOR(step
N): ...` markers (seeded when the refactoring branch is created, for
large refactors only) since a multi-step refactor outlasts any single
session's context, delegates each staged change to a sub-agent so the
orchestrating session only keeps short results, and keeps intermediate
PRs out of draft while the final merge-to-main PR is opened as one.
The skill owns the process; it cross-references golang-naming,
golang-project-layout, golang-code-style, golang-design-patterns,
golang-modernize, golang-security/golang-safety, golang-lint,
golang-testing, golang-benchmark, and golang-gopls for target-state
rules and mechanics owned elsewhere, and those first five skills
gained a reciprocal cross-reference back. golang-how-to's skill
loading table, categories, and competing-clusters disambiguation are
updated accordingly.
* docs(golang-refactoring): reformat skill body into concise bullet lists
Convert dense prose paragraphs across SKILL.md and all references/*.md
into nested bullet points for scannability, without changing any rule,
rationale, table, code block, or cross-reference.
* chore(skills): bump version of skills cross-referencing golang-refactoring
code-style, design-patterns, how-to, modernize, naming, and project-layout
each gained a cross-reference to the new golang-refactoring skill; bump
their patch version per the repo version-discipline convention.
* fix(golang-refactoring): correct grammar in persona line (land change -> land changes)
* feat(skills): add golang-gopls skill
Documents gopls (the official Go language server) as its own atomic
skill: the three ways to reach it (its MCP server, Claude Code's
native LSP tool, and its CLI), a capability-to-tool matrix, the full
feature catalog (navigation, diagnostics, refactors, web features),
and the efficient read/edit workflows from gopls's own MCP
instructions.
golang-how-to previously carried this content inline; it's now
reduced to a pointer, and the ~18 library skills that referenced
gopls navigation through golang-how-to are repointed to golang-gopls
directly, keeping each concept owned by exactly one skill.
* revert: do not bump plugin version for this PR
* refactor(skills): tighten golang-gopls, drop LSP-server-hosting CLI flags
Moves the capability-to-tool matrix out of SKILL.md into its own
references/matrix.md, cutting SKILL.md from ~3.5k to ~2.3k tokens
while keeping every row. Drops mentions of gopls's attached MCP mode
and the mcp -instructions flag, since neither applies to this skill's
agent-only usage. Trims the CLI global flags table down to the ones
that matter outside of running gopls as a long-lived LSP server
(-listen, -remote*, -debug, -otel, -mode removed), and documents the
remaining flags' full value sets exhaustively.
Also fixes the README's [!IMPORTANT] alert blockquote, which a prior
prettier run had collapsed onto one line, and adds golang-gopls to
the ASCII skill map.
* feat(skills): add ultracode orchestration directive to fan-out skills
The `ultracode` keyword (multi-agent workflow orchestration) didn't exist
when these skills were originally written. Add a Thinking-mode-style
Orchestration mode directive to the 12 skills that already describe a
parallel sub-agent fan-out mode for full-codebase audits/scans/cleanups,
so the agent knows to escalate to orchestration for broad sweeps.
Documents the new directive and its README flag (🤖) in CLAUDE.md, and
bumps each touched skill's patch version.
* fix(skills): bump patch version for security, performance, modernize
main already bumped these three skills to the same patch value for an
unrelated change (isolated-worktree workflow), so the rebase merge
landed on an identical version string and hid this branch own change.
Bump one more patch to reflect this branch additions.
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* feat(skills): add isolated-worktree workflow to 5 skills
Document when to use the native EnterWorktree/ExitWorktree tools for
workflows with genuine collision risk: parallel mutating sub-agents
(golang-documentation, golang-modernize), variant comparison with a
serial-measurement caveat (golang-benchmark, golang-performance), and
per-fix remediation branches during large audits (golang-security).
Read-only parallel audits (security scan, testing, troubleshooting,
etc.) were deliberately excluded — concurrent reads need no isolation.
* revert: keep plugin version at 1.7.0
The isolated-worktree workflow changes do not warrant a plugin-wide
version bump on their own.
* revert: drop worktree workflow from golang-documentation
Its parallel sub-agents write independent files/sections rather than
racing on shared state, so isolation is not warranted here.
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* feat(skills): add golang-pkg-go-dev skill
Add a skill covering godig, a pkg.go.dev API client (CLI + MCP server)
for exploring Go packages and modules: docs, symbols, versions,
importers, licenses, and known vulnerabilities. Positioned to be
triggered in place of Context7 for Go packages.
- Complete project-required frontmatter (license, compatibility,
metadata/openclaw, user-invocable, allowed-tools)
- Cross-reference from golang-dependency-management
- Register in golang-how-to loading table + by-category reference
- Add row and description in README
* fix(skills): satisfy CI on golang-pkg-go-dev
- Fix markdownlint MD034/MD060 in sample-output tables
- Remove explicit MCP tool-calling instructions from the body
(drop the "MCP tool" column, keep MCP mentions passive) per the
W001 convention in CLAUDE.md
- Bump golang-how-to (1.0.1) and golang-dependency-management (1.2.4)
metadata.version (both modified)
- Bump plugin version to 1.6.0 in the three plugin manifests
- Update README token count
* chore: re-trigger CI
* feat(skills): cross-reference golang-pkg-go-dev across the catalog
Point library/tool skills and discovery-oriented skills to
golang-pkg-go-dev so pkg.go.dev lookups (docs, versions, symbols,
importers, vulnerabilities) are routed there instead of generic
Context7 doc fetching for Go packages.
- Family A (17 library skills): append a golang-pkg-go-dev pointer to
the "Context7 can help as a discoverability platform" disclaimer
- golang-popular-libraries: vet candidates via pkg.go.dev; use the
imported-by count as a popularity / indirect-quality signal
- golang-security: look up a module's known CVEs without a full scan
- golang-stay-updated: query versions/docs/vulns from the CLI
- golang-documentation: inspect how a published package renders
- Bump metadata.version on all 21 modified skills
- Refresh README token counts (incl. stale how-to / dependency-management rows)
* feat(skills): sync golang-pkg-go-dev with godig v0.1.0
Reviewed the godig CLI/MCP surface (v0.1.0) and updated the skill:
- New commands: dependencies, major-versions, symbol doc, symbol
examples, package imports, version
- Fix: `package info --imports` is now the `package imports` subcommand
- Document global flags (--base-url, --timeout, --log-level) + GODIG_* env
- Make --version / --module first-class per-command flags
- Add a Filter syntax section (operators, string functions, fields)
- Move sample output to references/sample-output.md and refresh formats
(overview, package info, versions, module info gained fields)
- Add skill-library-version 0.1.0; bump skill to 1.1.0
- Refresh README token counts
* chore(skills): keep golang-pkg-go-dev at initial version 1.0.0
* feat(skills): parallel lookups + package-lookup cluster boundary
- golang-pkg-go-dev: instruct parallel godig lookups (batched calls or
sub-agent fan-out) when querying docs/examples/versions for multiple
symbols, packages, or modules
- golang-how-to: add the "Package lookup / discovery" competing cluster
(pkg-go-dev vs popular-libraries vs dependency-management vs security)
to SKILL.md and disambiguation.md
* docs(skills): sync golang-pkg-go-dev with godig v0.1.1
Reflect v0.1.0 -> v0.1.1 changes:
- document exit codes (0 success, 1 runtime error, 2 usage error)
- replace flat filter field list with per-command filterable fields table
- drop undocumented matches() regex; fix example to hasPrefix()
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Revert "Potential fix for pull request finding"
This reverts commit f5e1a19544.
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* docs: add skills description section to README
* docs: move skills description after evaluations section
* docs: group skills by category (H3) with skill names as H4
* feat: add golang-uber-dig and golang-uber-fx skills
Two new library skills covering uber-go's reflection-based DI ecosystem. golang-uber-dig covers the container, Provide/Invoke, dig.In/dig.Out, named values, value groups, dig.As, optional deps, Decorate, Scopes, error handling, and Visualize. golang-uber-fx covers fx.New/Run, lifecycle hooks, fx.Module, fx.Annotate, fx.Supply/Replace/Decorate, fxevent logging, and fxtest. Each skill ships recipes.md (end-to-end app examples) and testing.md (test patterns and CI graph validation), and cross-references golang-samber-do, golang-google-wire, and golang-dependency-injection.
* refactor(uber-dig,uber-fx): trim SKILL.md under 2,500 tokens
Both SKILL.md exceeded the project budget. Moved Decorate, Scopes, optional deps, error helpers, Visualize, and Quick Reference into references/advanced.md for both skills. dig: 3,744 -> 2,264 tok. fx: 4,466 -> 2,499 tok. README updated.
* test(uber-dig,uber-fx): add eval prompts and assertions
11 adversarial evals per skill targeting unique guidance: parameter objects, value groups (with flatten), named values, dig.As to hide concrete types, scopes for request locals, container at composition root, DryRun graph validation, Decorate, RecoverFromPanics, fx vs dig choice. fx evals additionally cover lifecycle non-blocking OnStart, fx.Annotate vs fx.Out, modules, fx.Supply, fx.Replace + fx.Populate in fxtest, fxevent.ZapLogger, manual lifecycle for CLI embedding.
* test(uber-dig,uber-fx): add preliminary eval results to EVALUATIONS.md
Ran 4 evals × 2 configs per skill (16 subagents total) with Claude Opus 4.7. Both skills score 100% with-skill. Without-skill: dig 90% (-10pp uplift), fx 95% (-5pp uplift). The base model has very strong baseline knowledge of both libraries; only adversarial evals targeting subtle API choices (Decorate vs scope-shadow Provide; fx.As interface binding) showed meaningful uplift. Full 11-eval suite (53/56 assertions) remains in evals.json for re-runs via /skill-creator.
* fix(uber-dig): clean up unused context import and fix handler signature in recipes
* fix(golang-uber-dig,golang-uber-fx): address PR #25 review comments and deep review findings
PR comments:
- dig/advanced.md: rephrase "module boundaries" to "scope/package wiring boundaries"
- dig/recipes.md: fix ignored repo.List error in HTTP handler (return 500)
- dig/recipes.md: remove unused context import and _ = context.Background hack
- dig/recipes.md: fix handle() signature to idiomatic (w, r) order
- fx/testing.md: assert net.Listen error before using listener
Deep review:
- dig/advanced.md: add code example for dig.Export(true) call site
- dig/advanced.md: clarify c.String() as text summary, not DOT output
- dig/recipes.md: add missing root.Provide(NewHandler) to request-scope recipe
- fx/advanced.md: add fx.ErrorHook to lifecycle quick reference
- fx/testing.md: add zaptest/observer import hint to observer example
- fx/testing.md: comment why lc.Start is used instead of RequireStart
- Replace imperative "search for latest version / check URL" instructions
with passive availability hints in golang-continuous-integration,
golang-dependency-management, golang-modernize, and golang-samber-ro
- Replace `go install govulncheck@latest` with golang/govulncheck-action@v1
in CI security asset (W012)
- Remove `gh repo view` from dependency evaluation checklist (W011)
- Add golang-performance step: paste benchstat output in commit body
- Document W011/W012/W001 fix patterns in CLAUDE.md for future authors
- Add snyk-agent-scan step to the "After updating a skill" workflow
- Bump plugin to v1.2.5; bump affected skill versions