socketry 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/context/getting-started.md +74 -0
- data/context/index.yaml +25 -0
- data/context/{configuration.md → pattern-configuration-and-builder.md} +2 -6
- data/context/pattern-gem-structure.md +258 -0
- data/lib/socketry/version.rb +1 -1
- data/readme.md +26 -4
- data/releases.md +6 -0
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: adc302f7cd0dc7a5eb75de8681bd2f9bee242a4a8186bbc5f6d5ba4bebbbbd8d
|
|
4
|
+
data.tar.gz: cf7111e7a3b30fe26047b96143a79ec4a07d687ea5ae60e316cee986679f470f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bc5813a0093c10da9fae1c8a4a2546a577359fd871239a73e828e1d58468462a5cb7fd0a60946eefe069fa143003759668bbe46420596562b1f43af954f2d7c7
|
|
7
|
+
data.tar.gz: e1deae7929c4a53fd1210ad80d88df165a3aef1387977f6f996ac9cac63e768023449af50f61f02b1ba5f5aac4a8ed7f47105415bf8adc7a9ee238767a5f5488
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
This guide explains how to use the `socketry` gem to support Socketry development by installing shared guidance and agent skills into your local project.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
The `socketry` gem distributes conventions, design patterns, and reusable agent skills for developing and maintaining Socketry projects. It gives contributors and coding agents a common set of instructions for work such as implementing configuration DSLs, preparing pull requests, and maintaining GitHub repositories.
|
|
8
|
+
|
|
9
|
+
The guides are packaged as agent context, while task-specific instructions are packaged as skills. Use [`agent-context`](https://github.com/socketry/agent-context) and [`agent-skills`](https://github.com/socketry/agent-skills) to install them from the gem into your project.
|
|
10
|
+
|
|
11
|
+
## Installation
|
|
12
|
+
|
|
13
|
+
Add these gems to the maintenance group in your project's `gems.rb` or `Gemfile`:
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
group :maintenance, optional: true do
|
|
17
|
+
gem "socketry"
|
|
18
|
+
gem "agent-context"
|
|
19
|
+
gem "agent-skills"
|
|
20
|
+
end
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Enable the group and install the gems from the project root:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
bundle config set --local with maintenance
|
|
27
|
+
bundle install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Install Agent Context
|
|
31
|
+
|
|
32
|
+
Install Socketry's guides locally:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
bundle exec bake agent:context:install --gem socketry
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This copies the guides into `.context/socketry/` and updates the context index in your project's `agents.md`. Agents can follow those links to read conventions such as [Pattern: Configuration & Builder](https://socketry.github.io/socketry/guides/pattern-configuration-and-builder/index).
|
|
39
|
+
|
|
40
|
+
To inspect the available context files:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
bundle exec bake agent:context:list --gem socketry
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Install Agent Skills
|
|
47
|
+
|
|
48
|
+
Install Socketry's reusable workflows locally:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
bundle exec bake agent:skills:install --gem socketry
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
This copies the skills into `.agents/skills/`, including `socketry-pull-request` and `socketry-github-repository`. Each skill has a `SKILL.md` describing when to use it and the instructions to follow.
|
|
55
|
+
|
|
56
|
+
To inspect the available skills:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
bundle exec bake agent:skills:list --gem socketry
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Omit `--gem socketry` from either installer to install the context or skills provided by all dependencies in the bundle.
|
|
63
|
+
|
|
64
|
+
## Update Local Guidance
|
|
65
|
+
|
|
66
|
+
After updating the gem, rerun both installers to refresh the local copies:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
bundle update socketry
|
|
70
|
+
bundle exec bake agent:context:install --gem socketry
|
|
71
|
+
bundle exec bake agent:skills:install --gem socketry
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Make changes to Socketry's guides and skills in this repository; installed copies are replaced when refreshed. The generated `.context/` and `.agents/` directories can be ignored in version control and recreated during local setup.
|
data/context/index.yaml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Automatically generated context index for Utopia::Project guides.
|
|
2
|
+
# Do not edit then files in this directory directly, instead edit the guides and then run `bake utopia:project:agent:context:update`.
|
|
3
|
+
---
|
|
4
|
+
description: Socketry project metadata, agent context, and skills.
|
|
5
|
+
metadata:
|
|
6
|
+
bug_tracker_uri: https://github.com/socketry/socketry/issues
|
|
7
|
+
changelog_uri: https://github.com/socketry/socketry/blob/main/releases.md
|
|
8
|
+
documentation_uri: https://socketry.github.io/socketry/
|
|
9
|
+
funding_uri: https://github.com/sponsors/ioquatix/
|
|
10
|
+
source_code_uri: https://github.com/socketry/socketry.git
|
|
11
|
+
files:
|
|
12
|
+
- path: getting-started.md
|
|
13
|
+
title: Getting Started
|
|
14
|
+
description: This guide explains how to use the `socketry` gem to support Socketry
|
|
15
|
+
development by installing shared guidance and agent skills into your local project.
|
|
16
|
+
- path: pattern-gem-structure.md
|
|
17
|
+
title: 'Pattern: Gem Structure'
|
|
18
|
+
description: This guide explains how to organise a Socketry gem, including its dependencies,
|
|
19
|
+
library code, tests, configuration, documentation, and files maintained by `bake
|
|
20
|
+
modernize`.
|
|
21
|
+
- path: pattern-configuration-and-builder.md
|
|
22
|
+
title: 'Pattern: Configuration & Builder'
|
|
23
|
+
description: This guide explains how to implement Ruby configuration DSLs with a
|
|
24
|
+
mutable `Configuration` and a separate `Builder`, including file loading and explicit
|
|
25
|
+
freezing.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Configuration
|
|
1
|
+
# Pattern: Configuration & Builder
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This guide explains how to implement Ruby configuration DSLs with a mutable `Configuration` and a separate `Builder`, including file loading and explicit freezing.
|
|
4
4
|
|
|
5
5
|
## Design
|
|
6
6
|
|
|
@@ -148,7 +148,3 @@ Multiple top-level files share one configuration. The example applies them in or
|
|
|
148
148
|
Use this design for new configuration DSLs and when standardising existing ones. Preserve existing public names and entry points as compatibility wrappers where needed; an existing `Loader` can retain its name while the implementation moves to `Builder`. Keep runtime query methods and domain validation on the configuration.
|
|
149
149
|
|
|
150
150
|
Verify that block and file factories return the configured object, that it can still be changed through the direct API, and that builders for multiple files update that same object. Explicit freezing should return that object, tolerate repeated calls, and prevent changes to its owned state through writers, collection readers, or attached builders, while leaving application objects untouched. For nested files, check relative resolution, stable builder roots, and exception source locations.
|
|
151
|
-
|
|
152
|
-
## Established Examples
|
|
153
|
-
|
|
154
|
-
This design follows [Falcon's configuration/loader separation from June 2019](https://github.com/socketry/falcon/commit/438e04eb295400f0481d72b610a2f9c9ea062746), carried into [Async::Service in February 2024](https://github.com/socketry/async-service/commit/d2d717b7605d364df3a853e8a810aeab2bc36078). Async::Service's [configuration](https://github.com/socketry/async-service/blob/f32af00e5c7a54c936023b96f180710e811d410e/lib/async/service/configuration.rb) and [loader](https://github.com/socketry/async-service/blob/f32af00e5c7a54c936023b96f180710e811d410e/lib/async/service/loader.rb) illustrate the mutable state and per-file loading scopes. This standard uses the name `Builder` for that DSL role.
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# Pattern: Gem Structure
|
|
2
|
+
|
|
3
|
+
This guide explains how to organise a Socketry gem, including its dependencies, library code, tests, configuration, documentation, and files maintained by `bake modernize`.
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
A consistent layout helps contributors find the implementation, test a change, and understand what will be shipped to users. Use this structure when creating a gem or bringing an existing project into line with Socketry conventions.
|
|
8
|
+
|
|
9
|
+
The examples use a gem named `example` with the namespace `Example`. Substitute the project's own name, metadata, and supported Ruby versions. Create additional directories as the project needs them.
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
example/
|
|
13
|
+
├── example.gemspec
|
|
14
|
+
├── gems.rb
|
|
15
|
+
├── lib/
|
|
16
|
+
│ ├── example.rb
|
|
17
|
+
│ └── example/
|
|
18
|
+
│ └── version.rb
|
|
19
|
+
├── test/
|
|
20
|
+
│ ├── example.rb
|
|
21
|
+
│ └── example/
|
|
22
|
+
├── config/
|
|
23
|
+
│ └── sus.rb
|
|
24
|
+
├── guides/
|
|
25
|
+
│ ├── links.yaml
|
|
26
|
+
│ └── getting-started/
|
|
27
|
+
│ └── readme.md
|
|
28
|
+
├── context/
|
|
29
|
+
│ ├── index.yaml
|
|
30
|
+
│ └── getting-started.md
|
|
31
|
+
├── bake.rb
|
|
32
|
+
├── readme.md
|
|
33
|
+
├── releases.md
|
|
34
|
+
├── license.md
|
|
35
|
+
├── .editorconfig
|
|
36
|
+
├── .gitignore
|
|
37
|
+
├── .rubocop.yml
|
|
38
|
+
└── .github/
|
|
39
|
+
├── copilot-instructions.md
|
|
40
|
+
└── workflows/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Gemspec
|
|
44
|
+
|
|
45
|
+
The root `example.gemspec` defines the package installed by users: its name, version, metadata, supported Ruby versions, runtime dependencies, and packaged files. It reads the version from the library's version file:
|
|
46
|
+
|
|
47
|
+
```ruby
|
|
48
|
+
# frozen_string_literal: true
|
|
49
|
+
|
|
50
|
+
require_relative "lib/example/version"
|
|
51
|
+
|
|
52
|
+
Gem::Specification.new do |spec|
|
|
53
|
+
spec.name = "example"
|
|
54
|
+
spec.version = Example::VERSION
|
|
55
|
+
spec.summary = "An example Socketry library."
|
|
56
|
+
spec.authors = ["Your Name"]
|
|
57
|
+
spec.license = "MIT"
|
|
58
|
+
spec.homepage = "https://github.com/your-org/example"
|
|
59
|
+
|
|
60
|
+
spec.metadata = {
|
|
61
|
+
"documentation_uri" => "https://your-org.github.io/example/",
|
|
62
|
+
"source_code_uri" => "https://github.com/your-org/example.git",
|
|
63
|
+
"changelog_uri" => "https://github.com/your-org/example/blob/main/releases.md",
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
spec.files = Dir.glob(["{context,lib}/**/*", "*.md"], File::FNM_DOTMATCH, base: __dir__)
|
|
67
|
+
spec.required_ruby_version = ">= 3.3"
|
|
68
|
+
end
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Loading just the version file allows Bundler and RubyGems to evaluate the gemspec before the library's dependencies are installed. Keep that file independent of the rest of the library.
|
|
72
|
+
|
|
73
|
+
Declare dependencies needed by the library with `spec.add_dependency`, including appropriate version requirements. Development tools belong in `gems.rb`.
|
|
74
|
+
|
|
75
|
+
Maintain `spec.files` as the list of files users need. Include `context/` when distributing agent context, `skills/` when providing agent skills, `bake/` when exporting Bake tasks, and `bin/` or `ext/` when the gem provides executables or native extensions. Executables also need `spec.executables`; native extensions need `spec.extensions`. Keep local bundles, generated sites, test output, and other working files out of the package. See the [RubyGems specification reference](https://guides.rubygems.org/specification-reference/) for these fields.
|
|
76
|
+
|
|
77
|
+
## `gems.rb`
|
|
78
|
+
|
|
79
|
+
`gems.rb` is the Bundler manifest for working on the project. The `gemspec` directive includes the local gem and its runtime dependencies. Follow the layout used by `bake-modernize`: put the optional maintenance group before the test group, and separate related sets of tools with blank lines:
|
|
80
|
+
|
|
81
|
+
```ruby
|
|
82
|
+
# frozen_string_literal: true
|
|
83
|
+
|
|
84
|
+
source "https://rubygems.org"
|
|
85
|
+
|
|
86
|
+
gemspec
|
|
87
|
+
|
|
88
|
+
group :maintenance, optional: true do
|
|
89
|
+
gem "bake-modernize"
|
|
90
|
+
gem "bake-gem-github"
|
|
91
|
+
gem "bake-releases"
|
|
92
|
+
|
|
93
|
+
gem "socketry"
|
|
94
|
+
gem "agent-context"
|
|
95
|
+
gem "agent-skills"
|
|
96
|
+
|
|
97
|
+
gem "decode"
|
|
98
|
+
|
|
99
|
+
gem "utopia-project"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
group :test do
|
|
103
|
+
gem "sus"
|
|
104
|
+
gem "covered"
|
|
105
|
+
|
|
106
|
+
gem "rubocop"
|
|
107
|
+
gem "rubocop-md"
|
|
108
|
+
gem "rubocop-socketry"
|
|
109
|
+
|
|
110
|
+
gem "bake-test"
|
|
111
|
+
end
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Enable maintenance tools locally when needed:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
bundle config set --local with maintenance
|
|
118
|
+
bundle install
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Bundler writes the resolved dependencies to `gems.locked`. The standard `bake modernize` ignore rules leave this lockfile untracked for gem development. Runtime compatibility is expressed in the gemspec's dependency requirements; the local lockfile records the versions used in that checkout.
|
|
122
|
+
|
|
123
|
+
`bake modernize:gemfile` renames `Gemfile` to `gems.rb` and `Gemfile.lock` to `gems.locked`. Maintain one manifest. The [Getting Started guide](https://socketry.github.io/socketry/guides/getting-started/index) explains how to install the shared Socketry context and skills after installing these tools.
|
|
124
|
+
|
|
125
|
+
## Library Code and Version
|
|
126
|
+
|
|
127
|
+
Put library code under `lib/`, following the Ruby namespace. For example, `async-service` uses `lib/async/service.rb`, `lib/async/service/`, and the namespace `Async::Service`. Keep each file's required dependencies explicit so supported entry points can be loaded directly.
|
|
128
|
+
|
|
129
|
+
Define the version once in `lib/example/version.rb`. Start a new gem at `0.0.0` so the first version bump reflects the initial implementation:
|
|
130
|
+
|
|
131
|
+
```ruby
|
|
132
|
+
# frozen_string_literal: true
|
|
133
|
+
|
|
134
|
+
# @namespace
|
|
135
|
+
module Example
|
|
136
|
+
VERSION = "0.0.0"
|
|
137
|
+
end
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The public entry point, `lib/example.rb`, loads the version and the public components needed by callers:
|
|
141
|
+
|
|
142
|
+
```ruby
|
|
143
|
+
# frozen_string_literal: true
|
|
144
|
+
|
|
145
|
+
require_relative "example/version"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
As the library grows, add its implementation files under `lib/example/` and require the appropriate files from the entry point. Consumers load the library with `require "example"`. The gemspec and callers both use the same `Example::VERSION` constant.
|
|
149
|
+
|
|
150
|
+
## Tests and Configuration
|
|
151
|
+
|
|
152
|
+
Place Sus tests under `test/`, mirroring the library paths. For example, tests for `lib/example/connection.rb` belong in `test/example/connection.rb`. Shared test data and contexts can live in `fixtures/`, which Sus adds to the load path.
|
|
153
|
+
|
|
154
|
+
A small `test/example.rb` checks that the public entry point loads and exposes a version:
|
|
155
|
+
|
|
156
|
+
```ruby
|
|
157
|
+
# frozen_string_literal: true
|
|
158
|
+
|
|
159
|
+
require "example"
|
|
160
|
+
|
|
161
|
+
describe Example do
|
|
162
|
+
it "has a version number" do
|
|
163
|
+
expect(Example::VERSION).to be =~ /\A\d+\.\d+\.\d+\z/
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Add tests for the library's behaviour alongside this initial check.
|
|
169
|
+
|
|
170
|
+
Use `config/` for project tooling configuration. `config/sus.rb` is loaded by Sus and can enable coverage:
|
|
171
|
+
|
|
172
|
+
```ruby
|
|
173
|
+
# frozen_string_literal: true
|
|
174
|
+
|
|
175
|
+
require "covered/sus"
|
|
176
|
+
include Covered::Sus
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Other tools use their own files here when needed: `config/external.yaml` selects downstream projects for `bake-test-external`, and `config/release.yaml` records the GitHub release policy for `bake-gem-github`. These files configure development and maintenance workflows; the library's configuration API belongs with its code under `lib/`.
|
|
180
|
+
|
|
181
|
+
Run the suite and style checks from the project root:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
bundle exec sus
|
|
185
|
+
bundle exec rubocop
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
`bundle exec bake test` runs the project's tests through `bake-test`, as used by the standard CI workflows.
|
|
189
|
+
|
|
190
|
+
## README and Guides
|
|
191
|
+
|
|
192
|
+
`readme.md` introduces the project with a short description, its purpose, and a path to useful documentation. Include usage, contributing, test, and release instructions. Socketry uses lowercase names for root Markdown files; `bake modernize` normalises these names and updates standard README sections and the test badge.
|
|
193
|
+
|
|
194
|
+
Write detailed documentation in `guides/<guide-name>/readme.md`, with ordering in `guides/links.yaml`. Set `documentation_uri` in the gemspec to the documentation site's base URL, including its trailing slash, so generated links resolve correctly.
|
|
195
|
+
|
|
196
|
+
Regenerate documentation metadata after editing guides:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
bundle exec bake utopia:project:update
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
This updates the README's existing `Usage` and `Releases` sections and exports the guides into `context/` with an `index.yaml`. Commit those generated context files so the gem can distribute them. The `.context/` directory contains guidance installed from dependencies for local use.
|
|
203
|
+
|
|
204
|
+
Keep release notes in `releases.md`, adding changes under `## Unreleased`. `license.md` records the project's license and copyright information.
|
|
205
|
+
|
|
206
|
+
## Bake Tasks and Releases
|
|
207
|
+
|
|
208
|
+
`bake.rb` contains tasks and hooks for maintaining this project. For a gem using `bake-modernize`, `bake-releases`, and `utopia-project`, the version-bump hook refreshes copyrights before updating release notes and generated documentation:
|
|
209
|
+
|
|
210
|
+
```ruby
|
|
211
|
+
# frozen_string_literal: true
|
|
212
|
+
|
|
213
|
+
def after_gem_release_version_increment(version)
|
|
214
|
+
context["modernize:license"].call
|
|
215
|
+
context["releases:update"].call(version)
|
|
216
|
+
context["utopia:project:update"].call
|
|
217
|
+
end
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
`modernize:license` updates `license.md` and Ruby copyright headers from Git history. `bake-modernize` 0.62.0 and later include this call in the generated hook for both `bake-gem` and `bake-gem-github`. Existing projects can update `bake-modernize`, run `bundle exec bake modernize:releases`, and review the merged `bake.rb` to pick up the new call while preserving custom hooks.
|
|
221
|
+
|
|
222
|
+
Tasks intended for other projects belong in namespaced files under `bake/` and must be included in `spec.files`. For example, `bake/example.rb` can provide `example:setup`. The root `bake.rb` is specific to the gem's own checkout.
|
|
223
|
+
|
|
224
|
+
Projects using `bake-gem-github` also have `config/release.yaml`, `.github/release-rules/`, and release preparation, validation, and publishing workflows. Its setup tasks generate those files separately from the default modernization. Follow the [bake-gem-github setup guide](https://socketry.github.io/bake-gem-github/guides/getting-started/index) to configure publishing and apply the GitHub rules.
|
|
225
|
+
|
|
226
|
+
## Files Maintained by `bake modernize`
|
|
227
|
+
|
|
228
|
+
`bake modernize` updates an existing gem's conventions. Start with the gemspec, version file, library entry point, and tests described above. Its tasks maintain these supporting files:
|
|
229
|
+
|
|
230
|
+
| File | Purpose |
|
|
231
|
+
| --- | --- |
|
|
232
|
+
| `.editorconfig` | Shared editor settings, including indentation and line endings. |
|
|
233
|
+
| `.gitignore` | Excludes local Bundler state, `gems.locked`, packaged gems, coverage data, installed skills, and other generated working files. |
|
|
234
|
+
| `.rubocop.yml` | Ruby and Markdown code style using `rubocop-socketry` and `rubocop-md`. |
|
|
235
|
+
| `.github/workflows/test.yaml` | Runs tests across the supported Ruby matrix. |
|
|
236
|
+
| `.github/workflows/rubocop.yaml` | Checks code style. |
|
|
237
|
+
| `.github/workflows/test-coverage.yaml` | Measures test coverage. |
|
|
238
|
+
| `.github/workflows/documentation-coverage.yaml` | Checks source documentation coverage with Decode. |
|
|
239
|
+
| `.github/workflows/documentation.yaml` | Builds and publishes the Utopia documentation site. |
|
|
240
|
+
| `.github/workflows/test-external.yaml` | Runs downstream tests when `config/external.yaml` exists. |
|
|
241
|
+
| `.github/copilot-instructions.md` | Provides repository instructions for GitHub Copilot. |
|
|
242
|
+
| `license.md` and source headers | Maintain licensing and contributor copyright information. |
|
|
243
|
+
| `releases.md`, `bake.rb`, and `readme.md` | Maintain release notes, release hooks, and contributor instructions. |
|
|
244
|
+
| `release.cert` | Public gem-signing certificate, copied when `~/.gem/release.cert` exists. The matching private key stays outside the repository. |
|
|
245
|
+
|
|
246
|
+
Modernization also rewrites the gemspec and updates tool dependencies. Review changes to the supported Ruby version, packaged files, dependency requirements, and existing customisations.
|
|
247
|
+
|
|
248
|
+
From a clean checkout with maintenance dependencies installed, list the tasks and review the generated changes:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
bundle exec bake list modernize
|
|
252
|
+
bundle exec bake modernize
|
|
253
|
+
git diff
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Some tasks install dependencies, inspect GitHub metadata, or merge existing files using a local Ollama service. Consult the [bake-modernize guide](https://socketry.github.io/bake-modernize/guides/getting-started/index) for setup and individual tasks. Run the project's tests and review the diff before committing.
|
|
257
|
+
|
|
258
|
+
GitHub releases are an explicit opt-in through `bake modernize:releases:github` and the subsequent `bake-gem-github` setup. When that dependency is already present, modernization maintains the corresponding release hooks and README instructions.
|
data/lib/socketry/version.rb
CHANGED
data/readme.md
CHANGED
|
@@ -4,11 +4,19 @@ Socketry project metadata, agent context, and skills.
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/socketry/socketry/actions?workflow=Test)
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
Please see the [project documentation](https://socketry.github.io/socketry/) for more details.
|
|
8
10
|
|
|
9
|
-
This
|
|
11
|
+
- [Getting Started](https://socketry.github.io/socketry/guides/getting-started/index) - This guide explains how to use the `socketry` gem to support Socketry development by installing shared guidance and agent skills into your local project.
|
|
10
12
|
|
|
11
|
-
- [
|
|
13
|
+
- [Pattern: Gem Structure](https://socketry.github.io/socketry/guides/pattern-gem-structure/index) - This guide explains how to organise a Socketry gem, including its dependencies, library code, tests, configuration, documentation, and files maintained by `bake modernize`.
|
|
14
|
+
|
|
15
|
+
- [Pattern: Configuration & Builder](https://socketry.github.io/socketry/guides/pattern-configuration-and-builder/index) - This guide explains how to implement Ruby configuration DSLs with a mutable `Configuration` and a separate `Builder`, including file loading and explicit freezing.
|
|
16
|
+
|
|
17
|
+
## Agent Context
|
|
18
|
+
|
|
19
|
+
The guides are also distributed as agent context in the top-level `context/` directory.
|
|
12
20
|
|
|
13
21
|
Projects that include `socketry` and [`agent-context`](https://github.com/socketry/agent-context) can install the context and update their `agents.md` index with:
|
|
14
22
|
|
|
@@ -22,7 +30,13 @@ This gem provides reusable agent skills in the top-level `skills/` directory. Us
|
|
|
22
30
|
|
|
23
31
|
## Releases
|
|
24
32
|
|
|
25
|
-
Please see the [project releases](https://github.
|
|
33
|
+
Please see the [project releases](https://socketry.github.io/socketry/releases/index) for all releases.
|
|
34
|
+
|
|
35
|
+
### v0.6.2
|
|
36
|
+
|
|
37
|
+
- Document the standard Socketry gem layout and files maintained by `bake modernize` in "Pattern: Gem Structure".
|
|
38
|
+
- Add a Getting Started guide for installing Socketry's development context and agent skills locally.
|
|
39
|
+
- Publish "Pattern: Configuration & Builder" as a documentation guide and generate its agent context as `pattern-configuration-and-builder.md`.
|
|
26
40
|
|
|
27
41
|
### v0.6.1
|
|
28
42
|
|
|
@@ -47,6 +61,14 @@ To run the test suite:
|
|
|
47
61
|
$ bundle exec sus
|
|
48
62
|
```
|
|
49
63
|
|
|
64
|
+
### Updating Documentation
|
|
65
|
+
|
|
66
|
+
Edit the source guides in `guides/`, then regenerate the README and distributed agent context:
|
|
67
|
+
|
|
68
|
+
``` bash
|
|
69
|
+
bundle exec bake utopia:project:update
|
|
70
|
+
```
|
|
71
|
+
|
|
50
72
|
### Making Releases
|
|
51
73
|
|
|
52
74
|
To make a new release:
|
data/releases.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Releases
|
|
2
2
|
|
|
3
|
+
## v0.6.2
|
|
4
|
+
|
|
5
|
+
- Document the standard Socketry gem layout and files maintained by `bake modernize` in "Pattern: Gem Structure".
|
|
6
|
+
- Add a Getting Started guide for installing Socketry's development context and agent skills locally.
|
|
7
|
+
- Publish "Pattern: Configuration & Builder" as a documentation guide and generate its agent context as `pattern-configuration-and-builder.md`.
|
|
8
|
+
|
|
3
9
|
## v0.6.1
|
|
4
10
|
|
|
5
11
|
- Distribute the mutable Configuration and Builder convention through `agent-context`.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: socketry
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Samuel Williams
|
|
@@ -13,7 +13,10 @@ executables: []
|
|
|
13
13
|
extensions: []
|
|
14
14
|
extra_rdoc_files: []
|
|
15
15
|
files:
|
|
16
|
-
- context/
|
|
16
|
+
- context/getting-started.md
|
|
17
|
+
- context/index.yaml
|
|
18
|
+
- context/pattern-configuration-and-builder.md
|
|
19
|
+
- context/pattern-gem-structure.md
|
|
17
20
|
- lib/socketry.rb
|
|
18
21
|
- lib/socketry/version.rb
|
|
19
22
|
- license.md
|
|
@@ -27,6 +30,7 @@ licenses:
|
|
|
27
30
|
metadata:
|
|
28
31
|
bug_tracker_uri: https://github.com/socketry/socketry/issues
|
|
29
32
|
changelog_uri: https://github.com/socketry/socketry/blob/main/releases.md
|
|
33
|
+
documentation_uri: https://socketry.github.io/socketry/
|
|
30
34
|
funding_uri: https://github.com/sponsors/ioquatix/
|
|
31
35
|
source_code_uri: https://github.com/socketry/socketry.git
|
|
32
36
|
rdoc_options: []
|