@@ -105,6 +105,114 @@ version: '1.5.0'
105105 assert .Equal (t , "1.5.0" , meta .Version )
106106}
107107
108+ func TestUpdateSkillMetaVersion_ReplacesExisting (t * testing.T ) {
109+ dir := t .TempDir ()
110+ skillMD := `---
111+ name: my-skill
112+ description: A great skill
113+ version: 1.0.0
114+ ---
115+
116+ # My Skill
117+
118+ Body content here.
119+ `
120+ require .NoError (t , os .WriteFile (filepath .Join (dir , "SKILL.md" ), []byte (skillMD ), 0644 ))
121+
122+ err := UpdateSkillMetaVersion (dir , "2.0.0" )
123+ require .NoError (t , err )
124+
125+ meta , err := ParseSkillMeta (dir )
126+ require .NoError (t , err )
127+ assert .Equal (t , "2.0.0" , meta .Version )
128+ assert .Equal (t , "my-skill" , meta .Name )
129+ assert .Equal (t , "A great skill" , meta .Description )
130+
131+ data , err := os .ReadFile (filepath .Join (dir , "SKILL.md" ))
132+ require .NoError (t , err )
133+ assert .Contains (t , string (data ), "Body content here." )
134+ }
135+
136+ func TestUpdateSkillMetaVersion_QuotedVersion (t * testing.T ) {
137+ dir := t .TempDir ()
138+ skillMD := `---
139+ name: quoted-skill
140+ version: "1.0.0"
141+ ---
142+
143+ # Quoted
144+ `
145+ require .NoError (t , os .WriteFile (filepath .Join (dir , "SKILL.md" ), []byte (skillMD ), 0644 ))
146+
147+ err := UpdateSkillMetaVersion (dir , "3.0.0" )
148+ require .NoError (t , err )
149+
150+ meta , err := ParseSkillMeta (dir )
151+ require .NoError (t , err )
152+ assert .Equal (t , "3.0.0" , meta .Version )
153+ }
154+
155+ func TestUpdateSkillMetaVersion_SingleQuotedVersion (t * testing.T ) {
156+ dir := t .TempDir ()
157+ skillMD := `---
158+ name: sq-skill
159+ version: '1.5.0'
160+ ---
161+ `
162+ require .NoError (t , os .WriteFile (filepath .Join (dir , "SKILL.md" ), []byte (skillMD ), 0644 ))
163+
164+ err := UpdateSkillMetaVersion (dir , "1.6.0" )
165+ require .NoError (t , err )
166+
167+ meta , err := ParseSkillMeta (dir )
168+ require .NoError (t , err )
169+ assert .Equal (t , "1.6.0" , meta .Version )
170+ }
171+
172+ func TestUpdateSkillMetaVersion_NoVersionField (t * testing.T ) {
173+ dir := t .TempDir ()
174+ skillMD := `---
175+ name: no-version-skill
176+ description: No version here
177+ ---
178+
179+ # Content
180+ `
181+ require .NoError (t , os .WriteFile (filepath .Join (dir , "SKILL.md" ), []byte (skillMD ), 0644 ))
182+
183+ err := UpdateSkillMetaVersion (dir , "1.0.0" )
184+ require .NoError (t , err )
185+
186+ data , err := os .ReadFile (filepath .Join (dir , "SKILL.md" ))
187+ require .NoError (t , err )
188+ assert .Equal (t , skillMD , string (data ))
189+ }
190+
191+ func TestUpdateSkillMetaVersion_PreservesBody (t * testing.T ) {
192+ dir := t .TempDir ()
193+ skillMD := `---
194+ name: body-skill
195+ version: 0.1.0
196+ ---
197+
198+ # My Skill
199+
200+ Some **markdown** content with [links](https://example.com).
201+
202+ ` + "```python\n print('hello')\n ```\n "
203+ require .NoError (t , os .WriteFile (filepath .Join (dir , "SKILL.md" ), []byte (skillMD ), 0644 ))
204+
205+ err := UpdateSkillMetaVersion (dir , "0.2.0" )
206+ require .NoError (t , err )
207+
208+ data , err := os .ReadFile (filepath .Join (dir , "SKILL.md" ))
209+ require .NoError (t , err )
210+ content := string (data )
211+ assert .Contains (t , content , "version: 0.2.0" )
212+ assert .Contains (t , content , "Some **markdown** content with [links](https://example.com)." )
213+ assert .Contains (t , content , "print('hello')" )
214+ }
215+
108216func TestValidateSlug (t * testing.T ) {
109217 assert .NoError (t , ValidateSlug ("my-skill" ))
110218 assert .NoError (t , ValidateSlug ("skill123" ))
0 commit comments