@simplysf/simply-gitlab 0.4.0 → 0.6.0

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.
package/README.md CHANGED
@@ -13,6 +13,12 @@ human-readable by default and raw JSON with `--json`, and every command that cha
13
13
  The same capabilities are available to AI agents through
14
14
  [`@simplysf/simply-gitlab-mcp`](https://github.com/SimplySF/simply-gitlab/tree/main/packages/simply-gitlab-mcp).
15
15
 
16
+ ## Documentation
17
+
18
+ Guides and the full command reference: **https://simplysf.github.io/simply-cli/gitlab/**
19
+
20
+ The guides also ship inside this package, under [`docs/`](docs).
21
+
16
22
  ## Install
17
23
 
18
24
  `@simplysf/simply-gitlab` is a plugin of the `simply` CLI, not a command of its own. Install the host; this
@@ -144,6 +150,7 @@ exitCode, status?, body?}}` — and nothing to stdout. Exit codes are identical
144
150
  - [`simply gitlab mr list`](#simply-gitlab-mr-list)
145
151
  - [`simply gitlab mr update`](#simply-gitlab-mr-update)
146
152
  - [`simply gitlab mr view`](#simply-gitlab-mr-view)
153
+ - [`simply gitlab project create`](#simply-gitlab-project-create)
147
154
  - [`simply gitlab project list`](#simply-gitlab-project-list)
148
155
  - [`simply gitlab project view`](#simply-gitlab-project-view)
149
156
  - [`simply gitlab release list`](#simply-gitlab-release-list)
@@ -191,7 +198,7 @@ FLAG DESCRIPTIONS
191
198
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
192
199
  ```
193
200
 
194
- _See code: [lib/commands/gitlab/branch/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/branch/create.js)_
201
+ _See code: [lib/commands/gitlab/branch/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/branch/create.js)_
195
202
 
196
203
  ## `simply gitlab branch list`
197
204
 
@@ -234,7 +241,7 @@ FLAG DESCRIPTIONS
234
241
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
235
242
  ```
236
243
 
237
- _See code: [lib/commands/gitlab/branch/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/branch/list.js)_
244
+ _See code: [lib/commands/gitlab/branch/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/branch/list.js)_
238
245
 
239
246
  ## `simply gitlab ci environment list`
240
247
 
@@ -280,7 +287,7 @@ FLAG DESCRIPTIONS
280
287
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
281
288
  ```
282
289
 
283
- _See code: [lib/commands/gitlab/ci/environment/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/ci/environment/list.js)_
290
+ _See code: [lib/commands/gitlab/ci/environment/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/environment/list.js)_
284
291
 
285
292
  ## `simply gitlab ci job list`
286
293
 
@@ -324,7 +331,7 @@ FLAG DESCRIPTIONS
324
331
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
325
332
  ```
326
333
 
327
- _See code: [lib/commands/gitlab/ci/job/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/ci/job/list.js)_
334
+ _See code: [lib/commands/gitlab/ci/job/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/job/list.js)_
328
335
 
329
336
  ## `simply gitlab ci job log`
330
337
 
@@ -369,7 +376,7 @@ FLAG DESCRIPTIONS
369
376
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
370
377
  ```
371
378
 
372
- _See code: [lib/commands/gitlab/ci/job/log.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/ci/job/log.js)_
379
+ _See code: [lib/commands/gitlab/ci/job/log.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/job/log.js)_
373
380
 
374
381
  ## `simply gitlab ci variable list`
375
382
 
@@ -420,7 +427,7 @@ FLAG DESCRIPTIONS
420
427
  where this output is going.
421
428
  ```
422
429
 
423
- _See code: [lib/commands/gitlab/ci/variable/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/ci/variable/list.js)_
430
+ _See code: [lib/commands/gitlab/ci/variable/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/ci/variable/list.js)_
424
431
 
425
432
  ## `simply gitlab commit create`
426
433
 
@@ -480,7 +487,7 @@ FLAG DESCRIPTIONS
480
487
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
481
488
  ```
482
489
 
483
- _See code: [lib/commands/gitlab/commit/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/commit/create.js)_
490
+ _See code: [lib/commands/gitlab/commit/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/create.js)_
484
491
 
485
492
  ## `simply gitlab commit diff`
486
493
 
@@ -522,7 +529,7 @@ FLAG DESCRIPTIONS
522
529
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
523
530
  ```
524
531
 
525
- _See code: [lib/commands/gitlab/commit/diff.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/commit/diff.js)_
532
+ _See code: [lib/commands/gitlab/commit/diff.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/diff.js)_
526
533
 
527
534
  ## `simply gitlab commit list`
528
535
 
@@ -573,7 +580,7 @@ FLAG DESCRIPTIONS
573
580
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
574
581
  ```
575
582
 
576
- _See code: [lib/commands/gitlab/commit/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/commit/list.js)_
583
+ _See code: [lib/commands/gitlab/commit/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/list.js)_
577
584
 
578
585
  ## `simply gitlab commit view`
579
586
 
@@ -614,7 +621,7 @@ FLAG DESCRIPTIONS
614
621
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
615
622
  ```
616
623
 
617
- _See code: [lib/commands/gitlab/commit/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/commit/view.js)_
624
+ _See code: [lib/commands/gitlab/commit/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/commit/view.js)_
618
625
 
619
626
  ## `simply gitlab config apply`
620
627
 
@@ -681,7 +688,7 @@ FLAG DESCRIPTIONS
681
688
  the config does not target is an error rather than a silent no-op.
682
689
  ```
683
690
 
684
- _See code: [lib/commands/gitlab/config/apply.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/config/apply.js)_
691
+ _See code: [lib/commands/gitlab/config/apply.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/config/apply.js)_
685
692
 
686
693
  ## `simply gitlab config export`
687
694
 
@@ -732,7 +739,7 @@ FLAG DESCRIPTIONS
732
739
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
733
740
  ```
734
741
 
735
- _See code: [lib/commands/gitlab/config/export.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/config/export.js)_
742
+ _See code: [lib/commands/gitlab/config/export.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/config/export.js)_
736
743
 
737
744
  ## `simply gitlab config plan`
738
745
 
@@ -800,7 +807,7 @@ FLAG DESCRIPTIONS
800
807
  the config does not target is an error rather than a silent no-op.
801
808
  ```
802
809
 
803
- _See code: [lib/commands/gitlab/config/plan.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/config/plan.js)_
810
+ _See code: [lib/commands/gitlab/config/plan.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/config/plan.js)_
804
811
 
805
812
  ## `simply gitlab file create`
806
813
 
@@ -852,7 +859,7 @@ FLAG DESCRIPTIONS
852
859
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
853
860
  ```
854
861
 
855
- _See code: [lib/commands/gitlab/file/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/file/create.js)_
862
+ _See code: [lib/commands/gitlab/file/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/file/create.js)_
856
863
 
857
864
  ## `simply gitlab file update`
858
865
 
@@ -905,7 +912,7 @@ FLAG DESCRIPTIONS
905
912
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
906
913
  ```
907
914
 
908
- _See code: [lib/commands/gitlab/file/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/file/update.js)_
915
+ _See code: [lib/commands/gitlab/file/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/file/update.js)_
909
916
 
910
917
  ## `simply gitlab file view`
911
918
 
@@ -951,7 +958,7 @@ FLAG DESCRIPTIONS
951
958
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
952
959
  ```
953
960
 
954
- _See code: [lib/commands/gitlab/file/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/file/view.js)_
961
+ _See code: [lib/commands/gitlab/file/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/file/view.js)_
955
962
 
956
963
  ## `simply gitlab mr create`
957
964
 
@@ -1012,7 +1019,7 @@ FLAG DESCRIPTIONS
1012
1019
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1013
1020
  ```
1014
1021
 
1015
- _See code: [lib/commands/gitlab/mr/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/mr/create.js)_
1022
+ _See code: [lib/commands/gitlab/mr/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/create.js)_
1016
1023
 
1017
1024
  ## `simply gitlab mr list`
1018
1025
 
@@ -1066,7 +1073,7 @@ FLAG DESCRIPTIONS
1066
1073
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1067
1074
  ```
1068
1075
 
1069
- _See code: [lib/commands/gitlab/mr/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/mr/list.js)_
1076
+ _See code: [lib/commands/gitlab/mr/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/list.js)_
1070
1077
 
1071
1078
  ## `simply gitlab mr update`
1072
1079
 
@@ -1130,7 +1137,7 @@ FLAG DESCRIPTIONS
1130
1137
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1131
1138
  ```
1132
1139
 
1133
- _See code: [lib/commands/gitlab/mr/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/mr/update.js)_
1140
+ _See code: [lib/commands/gitlab/mr/update.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/update.js)_
1134
1141
 
1135
1142
  ## `simply gitlab mr view`
1136
1143
 
@@ -1171,7 +1178,85 @@ FLAG DESCRIPTIONS
1171
1178
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1172
1179
  ```
1173
1180
 
1174
- _See code: [lib/commands/gitlab/mr/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/mr/view.js)_
1181
+ _See code: [lib/commands/gitlab/mr/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/mr/view.js)_
1182
+
1183
+ ## `simply gitlab project create`
1184
+
1185
+ Create a project, blank or from a template.
1186
+
1187
+ ```
1188
+ USAGE
1189
+ $ simply gitlab project create [--json] [-e <value>] [--gitlab-url <value>] [--gitlab-token <value>] [--dry-run] [--name
1190
+ <value>] [--path <value>] [--namespace <value>] [--description <value>] [--visibility private|internal|public]
1191
+ [--default-branch <value>] [--initialize-with-readme] [--topics <value>] [--template <value>] [--custom-template]
1192
+ [--template-group <value>] [--template-project <value>] [--body <value> | --body-file <value>]
1193
+
1194
+ FLAGS
1195
+ --body=<value> Raw JSON request body.
1196
+ --body-file=<value> Path to a file holding the raw JSON request body.
1197
+ --custom-template Look --template up among the instance's custom project templates rather than the built-in
1198
+ ones.
1199
+ --default-branch=<value> Name of the default branch.
1200
+ --description=<value> Project description.
1201
+ --dry-run Print the request that would be sent and exit without sending it.
1202
+ --initialize-with-readme Create a first commit holding a README, so the repository is not empty.
1203
+ --name=<value> Project name. The path is derived from it when --path is not given.
1204
+ --namespace=<value> Group or user namespace to create the project in, by id or full path.
1205
+ --path=<value> Repository path, the URL slug. The name is derived from it when --name is not given.
1206
+ --template=<value> Template to create from: a built-in name, or with --custom-template or --template-group a
1207
+ custom one.
1208
+ --template-group=<value> Group whose custom project templates --template names, by id or full path.
1209
+ --template-project=<value> Custom template project to create from, by id or full path. Cannot be combined with
1210
+ --template.
1211
+ --topics=<value> Comma-separated topics to label the project with.
1212
+ --visibility=<option> Who can see the project.
1213
+ <options: private|internal|public>
1214
+
1215
+ CONNECTION FLAGS
1216
+ -e, --env-file=<value> Path to a .env file holding connection settings.
1217
+ --gitlab-token=<value> [env: GITLAB_TOKEN] Personal, project, or group access token.
1218
+ --gitlab-url=<value> [env: GITLAB_URL] Base URL of the GitLab instance. Defaults to https://gitlab.com.
1219
+
1220
+ GLOBAL FLAGS
1221
+ --json Format output as json.
1222
+
1223
+ DESCRIPTION
1224
+ Create a project, blank or from a template.
1225
+
1226
+ Creates the project in --namespace, or in the namespace of the token owner when none is given. Give it --name or
1227
+ --path; GitLab derives whichever one is missing.
1228
+
1229
+ --template names one of the built-in templates GitLab ships, such as express or rails. To create from a custom
1230
+ template instead, add --custom-template for one the instance administrator registered, --template-group for one in a
1231
+ group, or use --template-project to name the template project itself by id or path — which GitLab prefers, because a
1232
+ name can be ambiguous. Custom templates need a Premium or Ultimate instance.
1233
+
1234
+ A template is applied asynchronously: this command returns as soon as the project record exists, with an import status
1235
+ of "scheduled", and the files arrive a few seconds later. Check "project view" until its import_status reads
1236
+ "finished" before writing to the repository. --dry-run prints the exact request body; a namespace or template given as
1237
+ a path is still looked up, so the printed ids are the ones that would be sent.
1238
+
1239
+ EXAMPLES
1240
+ $ simply gitlab project create --name new-service --namespace platform/apps
1241
+
1242
+ $ simply gitlab project create --name new-service --namespace platform/apps --template express --visibility internal
1243
+
1244
+ $ simply gitlab project create --name new-service --namespace platform/apps --template service-skeleton --template-group platform/templates
1245
+
1246
+ $ simply gitlab project create --path new-service --template-project platform/templates/service-skeleton --dry-run
1247
+
1248
+ FLAG DESCRIPTIONS
1249
+ -e, --env-file=<value> Path to a .env file holding connection settings.
1250
+
1251
+ Loaded before anything else. Variables already present in the environment win, so the file never overrides an
1252
+ explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1253
+
1254
+ --namespace=<value> Group or user namespace to create the project in, by id or full path.
1255
+
1256
+ Defaults to the namespace of the token owner.
1257
+ ```
1258
+
1259
+ _See code: [lib/commands/gitlab/project/create.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/project/create.js)_
1175
1260
 
1176
1261
  ## `simply gitlab project list`
1177
1262
 
@@ -1218,7 +1303,7 @@ FLAG DESCRIPTIONS
1218
1303
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1219
1304
  ```
1220
1305
 
1221
- _See code: [lib/commands/gitlab/project/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/project/list.js)_
1306
+ _See code: [lib/commands/gitlab/project/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/project/list.js)_
1222
1307
 
1223
1308
  ## `simply gitlab project view`
1224
1309
 
@@ -1257,7 +1342,7 @@ FLAG DESCRIPTIONS
1257
1342
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1258
1343
  ```
1259
1344
 
1260
- _See code: [lib/commands/gitlab/project/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/project/view.js)_
1345
+ _See code: [lib/commands/gitlab/project/view.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/project/view.js)_
1261
1346
 
1262
1347
  ## `simply gitlab release list`
1263
1348
 
@@ -1298,7 +1383,7 @@ FLAG DESCRIPTIONS
1298
1383
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1299
1384
  ```
1300
1385
 
1301
- _See code: [lib/commands/gitlab/release/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/release/list.js)_
1386
+ _See code: [lib/commands/gitlab/release/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/release/list.js)_
1302
1387
 
1303
1388
  ## `simply gitlab search`
1304
1389
 
@@ -1353,7 +1438,7 @@ FLAG DESCRIPTIONS
1353
1438
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1354
1439
  ```
1355
1440
 
1356
- _See code: [lib/commands/gitlab/search.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/search.js)_
1441
+ _See code: [lib/commands/gitlab/search.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/search.js)_
1357
1442
 
1358
1443
  ## `simply gitlab tag list`
1359
1444
 
@@ -1400,7 +1485,7 @@ FLAG DESCRIPTIONS
1400
1485
  explicit export, and only GitLab connection variables are read from it. A path that cannot be read is an error.
1401
1486
  ```
1402
1487
 
1403
- _See code: [lib/commands/gitlab/tag/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.2.0/packages/simply-gitlab/lib/commands/gitlab/tag/list.js)_
1488
+ _See code: [lib/commands/gitlab/tag/list.js](https://github.com/SimplySF/simply-gitlab/blob/@simplysf/simply-gitlab@0.5.0/packages/simply-gitlab/lib/commands/gitlab/tag/list.js)_
1404
1489
  <!-- commandsstop -->
1405
1490
 
1406
1491
  ## License
@@ -0,0 +1,86 @@
1
+ ---
2
+ title: Get Started
3
+ description: Requirements, installation, and a first command for the Simply GitLab CLI.
4
+ ---
5
+
6
+ ## Requirements
7
+
8
+ - Node.js 22 or later
9
+ - A GitLab account on gitlab.com or a self-managed instance, and an access token
10
+
11
+ ## Install
12
+
13
+ ```sh
14
+ npm install -g @simplysf/simply-cli
15
+ ```
16
+
17
+ ## Verify it worked
18
+
19
+ ```sh
20
+ simply gitlab --help
21
+ ```
22
+
23
+ ## Get a token
24
+
25
+ Create a personal access token under **Preferences › Access tokens** in GitLab, or a project or
26
+ group access token from that project's or group's settings. Two scopes matter:
27
+
28
+ | Scope | What it allows |
29
+ | ---------- | -------------------------------------------------------- |
30
+ | `read_api` | Everything on this site that reads. Nothing that writes. |
31
+ | `api` | Reads and writes. |
32
+
33
+ Start with `read_api`. It is not just a smaller permission — it is the only thing that makes a
34
+ write structurally impossible, which matters as soon as a script or an agent is running these
35
+ commands. See [Write safety](/guides/write-safety/).
36
+
37
+ ## Connect to your instance
38
+
39
+ Every command reads its connection settings from environment variables, from flags, or from a
40
+ `.env` file passed with `-e/--env-file`:
41
+
42
+ ```
43
+ GITLAB_TOKEN=glpat-...
44
+ GITLAB_URL=https://gitlab.example.com # omit entirely for gitlab.com
45
+ ```
46
+
47
+ `GITLAB_URL` defaults to `https://gitlab.com`, so a gitlab.com user needs only the token. See
48
+ [Credentials](/guides/credentials/) for precedence between flags, environment, and file, and for
49
+ trusting an internal certificate authority.
50
+
51
+ ## First commands
52
+
53
+ Find a project you can reach, then look at its open merge requests:
54
+
55
+ ```sh
56
+ simply gitlab project list --membership
57
+ simply gitlab mr list --project group/project
58
+ ```
59
+
60
+ Add `--json` to either to get the raw API payload instead of the formatted table.
61
+
62
+ ## Naming a project
63
+
64
+ Every project-scoped command takes `-p/--project`, which accepts a numeric id or the full path.
65
+ Both of these are the same project:
66
+
67
+ ```sh
68
+ simply gitlab mr list --project 1234
69
+ simply gitlab mr list --project group/subgroup/project
70
+ ```
71
+
72
+ The path is URL-encoded for you — do not encode it yourself. If you work in one project most of
73
+ the time, set `GITLAB_PROJECT` and drop the flag.
74
+
75
+ ## Where to go next
76
+
77
+ - The [Command Reference](/reference/) lists every command by topic, with its flags and examples.
78
+ - [Credentials](/guides/credentials/) covers tokens, precedence, and certificates.
79
+ - [Write safety](/guides/write-safety/) explains `--dry-run`, `GITLAB_READ_ONLY`, and why a
80
+ `read_api` token is the only one of those that actually binds.
81
+ - [Scripts and agents](/guides/scripting/) covers the `--json` contract and exit codes.
82
+ - [MCP server](/guides/mcp-server/) gives an AI agent the same capabilities as tools, read-only by
83
+ default.
84
+ - Want to contribute? See
85
+ [CONTRIBUTING.md](https://github.com/SimplySF/simply-gitlab/blob/main/CONTRIBUTING.md) in the
86
+ repo.
@@ -0,0 +1,186 @@
1
+ ---
2
+ title: Configuration baselines
3
+ description: Hold many GitLab projects to one standard - export a baseline from a project you like, see what differs across the rest, and converge them.
4
+ ---
5
+
6
+ Fifty projects drift. One was created before you settled on squash merges, someone unprotected
7
+ `main` to fix something and never put it back, and two never had an approval rule at all. There is
8
+ no answer to "are these the same?" short of opening fifty tabs.
9
+
10
+ A baseline is a JSON file saying what those projects should have in common, and three commands that
11
+ read it:
12
+
13
+ | Command | Writes? | What it does |
14
+ | ----------------------------- | ------- | ---------------------------------------------------- |
15
+ | `simply gitlab config export` | no | Emits a config from a project you already like |
16
+ | `simply gitlab config plan` | no | Reports, per project, what differs from the baseline |
17
+ | `simply gitlab config apply` | yes | Converges each project onto the baseline |
18
+
19
+ ## Start by exporting
20
+
21
+ Do not write the file by hand. Export the project that already looks right and delete what you do
22
+ not care about:
23
+
24
+ ```sh
25
+ simply gitlab config export --project group/api > baseline.json
26
+ ```
27
+
28
+ The output is deliberately verbose — every supported key, not a curated subset — because deleting a
29
+ line is easier than discovering that a key exists. Variables come out as metadata only: keys,
30
+ scopes, and flags, never values.
31
+
32
+ ## Point it at the rest
33
+
34
+ The exported file targets only the project it came from. Widen it on purpose:
35
+
36
+ ```json
37
+ {
38
+ "version": 1,
39
+ "targets": {
40
+ "groups": ["platform"],
41
+ "exclude": ["platform/sandbox", "platform/archived-*"]
42
+ },
43
+ "project": {
44
+ "settings": {
45
+ "merge_method": "ff",
46
+ "squash_option": "default_on",
47
+ "only_allow_merge_if_pipeline_succeeds": true
48
+ },
49
+ "protectedBranches": [{ "name": "main", "allow_force_push": false }],
50
+ "approvalRules": [{ "name": "Two maintainers", "approvals_required": 2, "usernames": ["alice", "bob"] }]
51
+ }
52
+ }
53
+ ```
54
+
55
+ `targets.groups` expands through subgroups. `exclude` takes a trailing `*` to drop a whole subtree.
56
+ A project the token cannot see is a hard error, not a silent omission — a baseline that quietly
57
+ skipped six of fifty would leave those six wrong with nobody knowing to look.
58
+
59
+ ## Read the plan
60
+
61
+ ```sh
62
+ simply gitlab config plan --config ./baseline.json
63
+ ```
64
+
65
+ ```
66
+ Targets: 50 project(s), 1 group(s).
67
+
68
+ platform/api
69
+ settings
70
+ ~ merge_method merge → ff
71
+ ~ only_allow_merge_if_pipeline_succeeds false → true
72
+ protectedBranches
73
+ ~ main.allow_force_push true → false
74
+ - legacy (not pruned; set "prune": true on this section to remove it)
75
+
76
+ platform/worker
77
+ ✓ matches the baseline
78
+
79
+ 50 target(s): 31 match, 19 differ.
80
+ ```
81
+
82
+ Three things in that output are worth understanding.
83
+
84
+ **Only what you declared is compared.** A project with forty settings the config never mentions
85
+ shows nothing for them. That is what makes a baseline safe to point at projects that already exist:
86
+ the blast radius is the set of keys you wrote down.
87
+
88
+ **Drift you are not fixing is still shown.** `- legacy` is a protected branch that exists but is not
89
+ in the config. By default nothing is deleted, and the line says so. Seeing what you are choosing not
90
+ to correct is most of the value of running this across fifty projects.
91
+
92
+ **A section can come back unsupported.** Approval rules, approval settings, and push rules are
93
+ Premium/Ultimate. On an instance without them the section reports that and the rest still converges.
94
+
95
+ ## Apply it
96
+
97
+ ```sh
98
+ simply gitlab config apply --config ./baseline.json --dry-run # prints the plan, sends nothing
99
+ simply gitlab config apply --config ./baseline.json
100
+ ```
101
+
102
+ Apply executes exactly what the plan showed — the two are computed in one pass, so a preview is a
103
+ guarantee rather than an approximation. A second run against a converged project sends no requests
104
+ at all.
105
+
106
+ Sections are applied in a fixed order: settings, protected branches, protected tags, approval
107
+ settings, approval rules, push rules. That order exists because an approval rule scoped to `main`
108
+ needs `main` protected before it can reference it.
109
+
110
+ One project failing does not abandon the other forty-nine. There is no transaction across GitLab
111
+ endpoints, so a project that fails part-way keeps the sections already applied; the summary says
112
+ where it stopped, and `plan` afterwards shows what is left.
113
+
114
+ ## Per-project exceptions
115
+
116
+ `overrides` is keyed by project path:
117
+
118
+ ```json
119
+ "overrides": {
120
+ "platform/legacy-api": {
121
+ "project": {
122
+ "settings": { "merge_method": "merge" },
123
+ "approvalRules": [{ "name": "Two maintainers", "approvals_required": 1 }]
124
+ }
125
+ }
126
+ }
127
+ ```
128
+
129
+ Lists merge by a natural key — `name` for branches, tags, and rules; `key` plus `environment_scope`
130
+ for variables — so an override adjusts one entry rather than restating the array. The rule above
131
+ changes one number and inherits the usernames from the baseline.
132
+
133
+ Set `"$replace": true` on a section to swap the list wholesale instead, for the project that needs
134
+ genuinely different rules rather than adjusted ones.
135
+
136
+ ## Turning on pruning
137
+
138
+ By default the config adds and corrects; it never deletes. When you are ready for a section to be
139
+ authoritative, opt in:
140
+
141
+ ```json
142
+ "protectedBranches": {
143
+ "prune": true,
144
+ "entries": [{ "name": "main", "allow_force_push": false }]
145
+ }
146
+ ```
147
+
148
+ Now an undeclared protected branch is removed. Adopt this section by section, after `plan` has shown
149
+ you what it would take away — a first run against fifty existing projects with everything pruning
150
+ could remove protections that predate the config.
151
+
152
+ ## Checking for drift in CI
153
+
154
+ ```sh
155
+ simply gitlab config plan --config ./baseline.json --fail-on-drift
156
+ ```
157
+
158
+ Exits `1` when anything differs, so a scheduled job tells you something drifted without anyone
159
+ reading the output. `--json` returns the whole plan as structured data if you would rather track it
160
+ over time:
161
+
162
+ ```sh
163
+ simply gitlab config plan --config ./baseline.json --json | jq '.summary'
164
+ ```
165
+
166
+ ## CI/CD variables are reported, not written
167
+
168
+ The config can declare which variables must exist and what flags they carry. `plan` reports the ones
169
+ that are missing or wrong; `apply` does not touch them.
170
+
171
+ That is the API, not caution. Creating a variable requires a value, and so does updating one — even
172
+ to change `masked` from false to true. A variable created as `masked_and_hidden` will not return its
173
+ value at all. There is no honest way to reconcile secrets from a file that, by design, holds none.
174
+
175
+ Knowing that six projects are missing `DEPLOY_ENV` is still the question people actually ask; setting
176
+ it is a person's job.
177
+
178
+ ## From an agent
179
+
180
+ The MCP server exposes `gitlab_config_plan` and `gitlab_config_export`, so you can ask an agent
181
+ "which of our projects are missing the two-approval rule?" and get an answer.
182
+
183
+ There is deliberately no tool that applies a baseline. Changing settings across fifty projects is a
184
+ deployment, not a tool call, and belongs to a person with the plan in front of them. An agent that
185
+ should apply one can run the CLI, where it is a shell command you can see and approve. See the
186
+ [MCP server guide](/guides/mcp-server/).