agent-skills 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 12c19e9b0e8f423011789431c689886729b9b202f8b5c7909d7b277cff4972ad
4
- data.tar.gz: 934a40807c941be02edbdf9d54a3c799be6c3e8f0cb7e60626077230d01808f3
3
+ metadata.gz: b21717e2fd5e723024f9d8e286fea1704a32618bc3ffb159f6b9bb33862b8efc
4
+ data.tar.gz: 87e6b34be5cd83b41596579d6307f7d4cf732f49f232ff73f27f25325e2ca74c
5
5
  SHA512:
6
- metadata.gz: 5bd4834187316d17fbf7043aa9eb5150c244180726223db358b114dbbf066eb2e440f4120d0878d74d8402a22053ff9d5484f8fa95b6a77b67955b3fa11f2d6a
7
- data.tar.gz: cc639e09c08174ffb49dd1314e1930421a5e4f6d475ca6b53eece60610c7c15c80023274ccd10b9a8272e91495389f834003ae64fcb87eb8a26d4ffa299a8d55
6
+ metadata.gz: 04e6eb35d7cfa2be064084832e4df1606af54bf28647ef1b3d04a4884833999583409ec6e1c402e60ce669ac7d4ab1f6dc16a8b2717487505ca0daed21195384
7
+ data.tar.gz: 1524dc2694ee37b84804ea334cbc69f2278a0c13b801ddd966eaae3e18b26cbcf88823e96e1f638d76aafa5dc3fe05d47a2d6333e3adca2e9a2bd26c015586ba
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ ��Q�.�1�Zޯvkݛ�F�����<Y�ϛ��Fò�O��S�i7���i:�_-�(����`D4�&�N|3�F�4��F�Gd�������%t`�Mӻ��D�^�Lz5+�A�V׹~����\/�
2
+ �۠4R��-z*�����j�p��m%�$���FƢ��u.�Ӱ��U4�1�5��1[V#@Y�[r��U_��
data/bake/agent/skills.rb CHANGED
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2025, by Shopify Inc.
5
- # Copyright, 2025-2026, by Samuel Williams.
4
+ # Copyright, 2026, by Shopify Inc.
6
5
 
7
6
  require_relative "../../lib/agent/skills/installer"
8
7
 
@@ -62,7 +61,7 @@ def install(gem: nil)
62
61
  installed = @installer.install_gem_skills(gem)
63
62
  if installed
64
63
  puts "Installed #{installed.length} skills from gem '#{gem}':"
65
- installed.each {|skill_name| puts " #{skill_name}"}
64
+ installed.each{|skill_name| puts " #{skill_name}"}
66
65
  else
67
66
  puts "No skills found for gem '#{gem}'"
68
67
  end
@@ -70,7 +69,7 @@ def install(gem: nil)
70
69
  installed = @installer.install_all_skills
71
70
  if installed.any?
72
71
  puts "Installed #{installed.length} skills:"
73
- installed.each {|skill_name| puts " #{skill_name}"}
72
+ installed.each{|skill_name| puts " #{skill_name}"}
74
73
  else
75
74
  puts "No gems with skills found"
76
75
  end
@@ -1,71 +1,54 @@
1
- # Getting Started with Agent Skills
1
+ # Getting Started
2
2
 
3
- This guide explains how to discover, inspect, and install agent skills provided by Ruby gems.
3
+ `agent-skills` discovers and installs reusable agent skills distributed by Ruby gems.
4
4
 
5
5
  ## Installation
6
6
 
7
- Add `agent-skills` to the consuming project:
8
-
9
7
  ```bash
10
8
  $ bundle add agent-skills
11
- ```
12
-
13
- List the skills available from installed gems:
14
-
15
- ```bash
16
9
  $ bundle exec bake agent:skills:list
17
- ```
18
-
19
- Install them into the project:
20
-
21
- ```bash
22
10
  $ bundle exec bake agent:skills:install
23
11
  ```
24
12
 
25
- ## Source and Destination Directories
13
+ ## Providing Skills
26
14
 
27
- Provider gems publish skills beneath `skills/`:
15
+ Provider gems place one or more skill packages beneath a top-level `skills/` directory:
28
16
 
29
17
  ```text
30
- provider-gem/
31
- └── skills/
32
- └── ruby-testing/
33
- ├── SKILL.md
34
- ├── references/
35
- └── scripts/
18
+ your-gem/
19
+ ├── skills/
20
+ └── ruby-testing/
21
+ ├── SKILL.md
22
+ ├── references/
23
+ └── scripts/
24
+ ├── lib/
25
+ └── your-gem.gemspec
36
26
  ```
37
27
 
38
- The consuming project receives them beneath `.agents/skills/`:
28
+ Each `SKILL.md` starts with YAML frontmatter containing a `name` and `description`. The name must match the directory.
39
29
 
40
- ```text
41
- consumer-project/
42
- └── .agents/
43
- └── skills/
44
- ├── ruby-testing/
45
- └── .agent-skills.yaml
46
- ```
47
-
48
- ## Providing a Skill
30
+ ## Installing Skills
49
31
 
50
- Create a directory beneath your gem's top-level `skills/` directory. Add a `SKILL.md` file with required frontmatter:
32
+ Install every discovered skill:
51
33
 
52
- ```markdown
53
- ---
54
- name: ruby-testing
55
- description: Test Ruby changes with the project's configured test framework.
56
- ---
34
+ ```bash
35
+ $ bake agent:skills:install
36
+ ```
57
37
 
58
- # Ruby Testing
38
+ Install from a particular gem:
59
39
 
60
- Run the narrowest relevant test first, then run the complete suite.
40
+ ```bash
41
+ $ bake agent:skills:install --gem sus
61
42
  ```
62
43
 
63
- The `name` must match the containing directory. Include the complete `skills/**/*` tree in the gemspec.
64
-
65
- ## Installation Ownership
44
+ Installed skills are copied to `.agents/skills/`. An ownership registry prevents dependencies from overwriting project-authored skills or skills supplied by another gem.
66
45
 
67
- `agent-skills` writes `.agents/skills/.agent-skills.yaml` to record which gem owns each installed skill. It will update skills owned by the same gem, but refuses to overwrite unmanaged skills or skills owned by another gem.
46
+ ## Inspecting Skills
68
47
 
69
- ## Safety
48
+ ```bash
49
+ $ bake agent:skills:list
50
+ $ bake agent:skills:list --gem sus
51
+ $ bake agent:skills:show --gem sus --skill ruby-testing
52
+ ```
70
53
 
71
- Skills may contain scripts and operational instructions. Inspect skills with `bake agent:skills:list` and `bake agent:skills:show` before installation when evaluating an unfamiliar dependency.
54
+ Review unfamiliar skills before installing them, especially when they include scripts.
data/context/index.yaml CHANGED
@@ -1,10 +1,15 @@
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`.
1
3
  ---
2
4
  description: Install and manage agent skills from Ruby gems.
3
5
  metadata:
6
+ bug_tracker_uri: https://github.com/socketry/agent-skills/issues
7
+ changelog_uri: https://github.com/socketry/agent-skills/blob/main/releases.md
4
8
  documentation_uri: https://socketry.github.io/agent-skills/
5
9
  funding_uri: https://github.com/sponsors/ioquatix/
6
10
  source_code_uri: https://github.com/socketry/agent-skills.git
7
11
  files:
8
12
  - path: getting-started.md
9
- title: Getting Started with Agent Skills
10
- description: Discover, inspect, and install agent skills provided by Ruby gems.
13
+ title: Getting Started
14
+ description: "`agent-skills` discovers and installs reusable agent skills distributed
15
+ by Ruby gems."
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2025, by Shopify Inc.
5
- # Copyright, 2025-2026, by Samuel Williams.
4
+ # Copyright, 2026, by Shopify Inc.
6
5
 
7
6
  module Agent
8
7
  module Skills
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2025, by Shopify Inc.
5
- # Copyright, 2025-2026, by Samuel Williams.
4
+ # Copyright, 2026, by Shopify Inc.
6
5
 
7
6
  require "fileutils"
8
7
  require "rubygems"
@@ -59,7 +58,7 @@ module Agent
59
58
  #
60
59
  # @parameter gem_name [String] The gem name to find.
61
60
  def find_gem_with_skills(gem_name)
62
- specification = @specifications.find {|candidate| candidate.name == gem_name}
61
+ specification = @specifications.find{|candidate| candidate.name == gem_name}
63
62
  return unless specification
64
63
 
65
64
  build_gem_information(specification)
@@ -81,7 +80,7 @@ module Agent
81
80
  skills = list_skills(gem_name)
82
81
  return unless skills
83
82
 
84
- definition = skills.find {|skill| skill.name == skill_name}
83
+ definition = skills.find{|skill| skill.name == skill_name}
85
84
  File.read(definition.skill_file) if definition
86
85
  end
87
86
 
@@ -180,13 +179,13 @@ module Agent
180
179
  end
181
180
 
182
181
  def install_gems(gems)
183
- definitions = gems.flat_map {|gem| gem[:skills]}
182
+ definitions = gems.flat_map{|gem| gem[:skills]}
184
183
  return [] if definitions.empty?
185
184
 
186
185
  validate_unique_skills(definitions)
187
186
 
188
187
  registry = Registry.new(File.join(@skills_path, Registry::FILE_NAME))
189
- definitions.each {|definition| validate_destination(definition, registry)}
188
+ definitions.each{|definition| validate_destination(definition, registry)}
190
189
 
191
190
  stale_skills = gems.flat_map do |gem|
192
191
  current_names = gem[:skills].map(&:name)
@@ -196,17 +195,17 @@ module Agent
196
195
  definitions.each do |definition|
197
196
  registry.claim(definition.name, definition.provider_name, definition.provider_version)
198
197
  end
199
- stale_skills.each {|skill_name| registry.release(skill_name)}
198
+ stale_skills.each{|skill_name| registry.release(skill_name)}
200
199
  registry.save
201
200
 
202
- definitions.each {|definition| copy_skill(definition)}
203
- stale_skills.each {|skill_name| remove_skill(skill_name)}
201
+ definitions.each{|definition| copy_skill(definition)}
202
+ stale_skills.each{|skill_name| remove_skill(skill_name)}
204
203
 
205
204
  definitions.map(&:name)
206
205
  end
207
206
 
208
207
  def validate_unique_skills(definitions)
209
- duplicates = definitions.group_by(&:name).select {|_name, matches| matches.length > 1}
208
+ duplicates = definitions.group_by(&:name).select{|_name, matches| matches.length > 1}
210
209
  return if duplicates.empty?
211
210
 
212
211
  details = duplicates.map do |name, matches|
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2025, by Shopify Inc.
5
- # Copyright, 2025-2026, by Samuel Williams.
4
+ # Copyright, 2026, by Shopify Inc.
6
5
 
7
6
  require "fileutils"
8
7
  require "yaml"
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2025, by Shopify Inc.
5
- # Copyright, 2025-2026, by Samuel Williams.
4
+ # Copyright, 2026, by Shopify Inc.
5
+ # Copyright, 2026, by Samuel Williams.
6
6
 
7
7
  module Agent
8
8
  module Skills
9
- VERSION = "0.0.2"
9
+ VERSION = "0.0.3"
10
10
  end
11
11
  end
data/lib/agent/skills.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Released under the MIT License.
4
- # Copyright, 2025, by Shopify Inc.
5
- # Copyright, 2025-2026, by Samuel Williams.
4
+ # Copyright, 2026, by Shopify Inc.
5
+ # Copyright, 2026, by Samuel Williams.
6
6
 
7
7
  require_relative "skills/version"
8
8
  require_relative "skills/definition"
data/license.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # MIT License
2
2
 
3
- Copyright, 2025, by Shopify Inc.
4
- Copyright, 2025-2026, by Samuel Williams.
3
+ Copyright, 2026, by Shopify Inc.
4
+ Copyright, 2026, by Samuel Williams.
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
data/readme.md CHANGED
@@ -103,10 +103,46 @@ bake agent:skills:install --gem sus
103
103
 
104
104
  This gem provides contextual documentation in `context/` for use with [`agent-context`](https://github.com/socketry/agent-context).
105
105
 
106
+ ## Releases
107
+
108
+ Please see the [project releases](https://socketry.github.io/agent-skills/releases/index) for all releases.
109
+
110
+ ### v0.0.0
111
+
112
+ - Initial release.
113
+ - Discover and validate skills provided by Ruby gems.
114
+ - Install project-scoped skills with ownership and collision protection.
115
+
106
116
  ## Contributing
107
117
 
108
- We welcome contributions. Please add tests for behavioral changes and run the test suite before opening a pull request.
118
+ We welcome contributions to this project.
119
+
120
+ 1. Fork the repository.
121
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
122
+ 3. Commit your changes (`git commit -am 'Add some feature.'`).
123
+ 4. Push to the branch (`git push origin my-new-feature`).
124
+ 5. Create a new pull request.
125
+
126
+ ### Running Tests
127
+
128
+ To run the test suite:
129
+
130
+ ``` bash
131
+ $ bundle exec sus
132
+ ```
133
+
134
+ ### Making Releases
135
+
136
+ To make a new release:
137
+
138
+ ``` bash
139
+ $ bundle exec bake gem:release:patch # or minor or major
140
+ ```
109
141
 
110
142
  ### Developer Certificate of Origin
111
143
 
112
- Contributors must comply with the [Developer Certificate of Origin](https://developercertificate.org/).
144
+ In order to protect users of this project, we require all contributors to comply with the [Developer Certificate of Origin](https://developercertificate.org/). This ensures that all contributions are properly licensed and attributed.
145
+
146
+ ### Community Guidelines
147
+
148
+ This project is best served by a collaborative and respectful environment. Treat each other professionally, respect differing viewpoints, and engage constructively. Harassment, discrimination, or harmful behavior is not tolerated. Communicate clearly, listen actively, and support one another. If any issues arise, please inform the project maintainers.
data.tar.gz.sig ADDED
Binary file
metadata CHANGED
@@ -1,13 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: agent-skills
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  - Shopify Inc.
9
9
  bindir: bin
10
- cert_chain: []
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
14
+ ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
15
+ CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
16
+ MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
17
+ MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
18
+ bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
19
+ igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
20
+ 9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
21
+ sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
22
+ e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
23
+ XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
24
+ RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
25
+ tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
26
+ zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
27
+ xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
28
+ BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
29
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
30
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
31
+ cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
32
+ xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
33
+ c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
34
+ 8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
35
+ JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
36
+ eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
37
+ Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
38
+ voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
39
+ -----END CERTIFICATE-----
11
40
  date: 1980-01-02 00:00:00.000000000 Z
12
41
  dependencies:
13
42
  - !ruby/object:Gem::Dependency
@@ -44,6 +73,8 @@ homepage: https://github.com/socketry/agent-skills
44
73
  licenses:
45
74
  - MIT
46
75
  metadata:
76
+ bug_tracker_uri: https://github.com/socketry/agent-skills/issues
77
+ changelog_uri: https://github.com/socketry/agent-skills/blob/main/releases.md
47
78
  documentation_uri: https://socketry.github.io/agent-skills/
48
79
  funding_uri: https://github.com/sponsors/ioquatix/
49
80
  source_code_uri: https://github.com/socketry/agent-skills.git
@@ -54,7 +85,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
54
85
  requirements:
55
86
  - - ">="
56
87
  - !ruby/object:Gem::Version
57
- version: '3.2'
88
+ version: '3.3'
58
89
  required_rubygems_version: !ruby/object:Gem::Requirement
59
90
  requirements:
60
91
  - - ">="
metadata.gz.sig ADDED
Binary file