Skip to content

Commit 2d8b3d2

Browse files
committed
feat(skill): add commands to install, update, and remove AI agent skills
1 parent 4dee027 commit 2d8b3d2

File tree

8 files changed

+294
-34
lines changed

8 files changed

+294
-34
lines changed

go.mod

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/JetBrains/teamcity-cli
22

3-
go 1.25
3+
go 1.25.7
44

55
require (
66
github.com/AlecAivazis/survey/v2 v2.3.7
@@ -13,7 +13,6 @@ require (
1313
github.com/docker/docker v28.5.1+incompatible
1414
github.com/dustin/go-humanize v1.0.1
1515
github.com/fatih/color v1.18.0
16-
github.com/gen2brain/beeep v0.11.2
1716
github.com/gorilla/websocket v1.5.3
1817
github.com/joho/godotenv v1.5.1
1918
github.com/magiconair/properties v1.8.10
@@ -25,12 +24,12 @@ require (
2524
github.com/spf13/viper v1.21.0
2625
github.com/stretchr/testify v1.11.1
2726
github.com/testcontainers/testcontainers-go v0.40.0
27+
github.com/tiulpin/instill v0.0.0-20260213171419-d6cb26a46138
2828
golang.org/x/term v0.39.0
2929
)
3030

3131
require (
3232
dario.cat/mergo v1.0.2 // indirect
33-
git.sr.ht/~jackmordaunt/go-toast v1.1.2 // indirect
3433
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
3534
github.com/Microsoft/go-winio v0.6.2 // indirect
3635
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
@@ -52,17 +51,14 @@ require (
5251
github.com/docker/go-units v0.5.0 // indirect
5352
github.com/ebitengine/purego v0.8.4 // indirect
5453
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
55-
github.com/esiqveland/notify v0.13.3 // indirect
5654
github.com/felixge/httpsnoop v1.0.4 // indirect
5755
github.com/fsnotify/fsnotify v1.9.0 // indirect
5856
github.com/go-logr/logr v1.4.3 // indirect
5957
github.com/go-logr/stdr v1.2.2 // indirect
6058
github.com/go-ole/go-ole v1.3.0 // indirect
6159
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
62-
github.com/godbus/dbus/v5 v5.1.0 // indirect
6360
github.com/google/uuid v1.6.0 // indirect
6461
github.com/inconshreveable/mousetrap v1.1.0 // indirect
65-
github.com/jackmordaunt/icns/v3 v3.0.1 // indirect
6662
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
6763
github.com/klauspost/compress v1.18.0 // indirect
6864
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
@@ -80,7 +76,6 @@ require (
8076
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
8177
github.com/muesli/cancelreader v0.2.2 // indirect
8278
github.com/muesli/termenv v0.16.0 // indirect
83-
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
8479
github.com/opencontainers/go-digest v1.0.0 // indirect
8580
github.com/opencontainers/image-spec v1.1.1 // indirect
8681
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
@@ -89,16 +84,13 @@ require (
8984
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
9085
github.com/rivo/uniseg v0.4.7 // indirect
9186
github.com/sagikazarmark/locafero v0.11.0 // indirect
92-
github.com/sergeymakinen/go-bmp v1.0.0 // indirect
93-
github.com/sergeymakinen/go-ico v1.0.0-beta.0 // indirect
9487
github.com/shirou/gopsutil/v4 v4.25.6 // indirect
9588
github.com/sirupsen/logrus v1.9.3 // indirect
9689
github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect
9790
github.com/spf13/afero v1.15.0 // indirect
9891
github.com/spf13/cast v1.10.0 // indirect
9992
github.com/spf13/pflag v1.0.10 // indirect
10093
github.com/subosito/gotenv v1.6.0 // indirect
101-
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af // indirect
10294
github.com/tklauser/go-sysconf v0.3.12 // indirect
10395
github.com/tklauser/numcpus v0.6.1 // indirect
10496
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect

go.sum

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
22
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
3-
git.sr.ht/~jackmordaunt/go-toast v1.1.2 h1:/yrfI55LRt1M7H1vkaw+NaH1+L1CDxrqDltwm5euVuE=
4-
git.sr.ht/~jackmordaunt/go-toast v1.1.2/go.mod h1:jA4OqHKTQ4AFBdwrSnwnskUIIS3HYzlJSgdzCKqfavo=
53
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
64
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
75
github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
@@ -75,8 +73,6 @@ github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0o
7573
github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
7674
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
7775
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
78-
github.com/esiqveland/notify v0.13.3 h1:QCMw6o1n+6rl+oLUfg8P1IIDSFsDEb2WlXvVvIJbI/o=
79-
github.com/esiqveland/notify v0.13.3/go.mod h1:hesw/IRYTO0x99u1JPweAl4+5mwXJibQVUcP0Iu5ORE=
8076
github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM=
8177
github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU=
8278
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
@@ -85,8 +81,6 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk
8581
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
8682
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
8783
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
88-
github.com/gen2brain/beeep v0.11.2 h1:+KfiKQBbQCuhfJFPANZuJ+oxsSKAYNe88hIpJuyKWDA=
89-
github.com/gen2brain/beeep v0.11.2/go.mod h1:jQVvuwnLuwOcdctHn/uyh8horSBNJ8uGb9Cn2W4tvoc=
9084
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
9185
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
9286
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
@@ -97,8 +91,6 @@ github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
9791
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
9892
github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs=
9993
github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
100-
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
101-
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
10294
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
10395
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
10496
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
@@ -112,8 +104,6 @@ github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u
112104
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
113105
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
114106
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
115-
github.com/jackmordaunt/icns/v3 v3.0.1 h1:xxot6aNuGrU+lNgxz5I5H0qSeCjNKp8uTXB1j8D4S3o=
116-
github.com/jackmordaunt/icns/v3 v3.0.1/go.mod h1:5sHL59nqTd2ynTnowxB/MDQFhKNqkK8X687uKNygaSQ=
117107
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
118108
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
119109
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
@@ -168,8 +158,6 @@ github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELU
168158
github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo=
169159
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
170160
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
171-
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
172-
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
173161
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
174162
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
175163
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
@@ -193,10 +181,6 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
193181
github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc=
194182
github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik=
195183
github.com/scylladb/termtables v0.0.0-20191203121021-c4c0b6d42ff4/go.mod h1:C1a7PQSMz9NShzorzCiG2fk9+xuCgLkPeCvMHYR2OWg=
196-
github.com/sergeymakinen/go-bmp v1.0.0 h1:SdGTzp9WvCV0A1V0mBeaS7kQAwNLdVJbmHlqNWq0R+M=
197-
github.com/sergeymakinen/go-bmp v1.0.0/go.mod h1:/mxlAQZRLxSvJFNIEGGLBE/m40f3ZnUifpgVDlcUIEY=
198-
github.com/sergeymakinen/go-ico v1.0.0-beta.0 h1:m5qKH7uPKLdrygMWxbamVn+tl2HfiA3K6MFJw4GfZvQ=
199-
github.com/sergeymakinen/go-ico v1.0.0-beta.0/go.mod h1:wQ47mTczswBO5F0NoDt7O0IXgnV4Xy3ojrroMQzyhUk=
200184
github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs=
201185
github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c=
202186
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
@@ -215,23 +199,18 @@ github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3A
215199
github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU=
216200
github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY=
217201
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
218-
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
219-
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
220202
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
221203
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
222204
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
223205
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
224-
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
225-
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
226-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
227206
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
228207
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
229208
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
230209
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
231-
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af h1:6yITBqGTE2lEeTPG04SN9W+iWHCRyHqlVYILiSXziwk=
232-
github.com/tadvi/systray v0.0.0-20190226123456-11a2b8fa57af/go.mod h1:4F09kP5F+am0jAwlQLddpoMDM+iewkxxt6nxUQ5nq5o=
233210
github.com/testcontainers/testcontainers-go v0.40.0 h1:pSdJYLOVgLE8YdUY2FHQ1Fxu+aMnb6JfVz1mxk7OeMU=
234211
github.com/testcontainers/testcontainers-go v0.40.0/go.mod h1:FSXV5KQtX2HAMlm7U3APNyLkkap35zNLxukw9oBi/MY=
212+
github.com/tiulpin/instill v0.0.0-20260213171419-d6cb26a46138 h1:YDDqQuWGZU8K04vbQR6MEAa2QUALiGLMxTM4+2gYKqk=
213+
github.com/tiulpin/instill v0.0.0-20260213171419-d6cb26a46138/go.mod h1:GaJvUxYtG/oHRwt1QL8rgWQ2jqkRSNhzuD5q5njP2FY=
235214
github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU=
236215
github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI=
237216
github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk=

internal/cmd/cmd_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,7 @@ func TestHelpCommands(T *testing.T) {
472472
{"pool", "--help"},
473473
{"auth", "--help"},
474474
{"api", "--help"},
475+
{"skill", "--help"},
475476
}
476477
for _, args := range commands {
477478
T.Run(args[0], func(t *testing.T) {
@@ -519,6 +520,7 @@ func TestUnknownSubcommand(T *testing.T) {
519520
{"agent", "invalid"},
520521
{"pool", "invalid"},
521522
{"auth", "invalid"},
523+
{"skill", "invalid"},
522524
}
523525

524526
for _, args := range commands {
@@ -539,7 +541,7 @@ func TestUnknownSubcommand(T *testing.T) {
539541
func TestParentCommandWithoutSubcommand(T *testing.T) {
540542
T.Parallel()
541543

542-
commands := []string{"run", "project", "queue", "job", "agent", "pool", "auth"}
544+
commands := []string{"run", "project", "queue", "job", "agent", "pool", "auth", "skill"}
543545

544546
for _, cmd := range commands {
545547
T.Run(cmd, func(t *testing.T) {

internal/cmd/root.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ func init() {
7272
rootCmd.AddCommand(newAgentCmd())
7373
rootCmd.AddCommand(newPoolCmd())
7474
rootCmd.AddCommand(newAPICmd())
75+
rootCmd.AddCommand(newSkillCmd())
7576
}
7677

7778
func initColorSettings() {
@@ -134,6 +135,7 @@ func NewRootCmd() *RootCommand {
134135
cmd.AddCommand(newAgentCmd())
135136
cmd.AddCommand(newPoolCmd())
136137
cmd.AddCommand(newAPICmd())
138+
cmd.AddCommand(newSkillCmd())
137139

138140
return cmd
139141
}

0 commit comments

Comments
 (0)