@openplanr/protocol 0.2.0 → 0.4.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/package.json
CHANGED
package/registries/commands.json
CHANGED
|
@@ -377,7 +377,7 @@
|
|
|
377
377
|
"ownerPackage": "openplanr",
|
|
378
378
|
"source": {
|
|
379
379
|
"path": "docs/generated/utility-command-catalog.json",
|
|
380
|
-
"digest": "sha256:
|
|
380
|
+
"digest": "sha256:3ef32f1b1c3b37ae665bb0328b736cafcc1ad40a158875a8c7f32a7de1da1f54"
|
|
381
381
|
},
|
|
382
382
|
"authorityClass": "workflow",
|
|
383
383
|
"machineJson": false,
|
|
@@ -566,7 +566,7 @@
|
|
|
566
566
|
"ownerPackage": "openplanr",
|
|
567
567
|
"source": {
|
|
568
568
|
"path": "docs/generated/utility-command-catalog.json",
|
|
569
|
-
"digest": "sha256:
|
|
569
|
+
"digest": "sha256:3ef32f1b1c3b37ae665bb0328b736cafcc1ad40a158875a8c7f32a7de1da1f54"
|
|
570
570
|
},
|
|
571
571
|
"authorityClass": "workflow",
|
|
572
572
|
"machineJson": true,
|
|
@@ -839,7 +839,7 @@
|
|
|
839
839
|
"ownerPackage": "openplanr",
|
|
840
840
|
"source": {
|
|
841
841
|
"path": "packages/cli/src/cli/commands/status.ts",
|
|
842
|
-
"digest": "sha256:
|
|
842
|
+
"digest": "sha256:34b909c5a2c9134b61804dd4664400fe3f4e7739f3e15fb58c03f16b93429272"
|
|
843
843
|
},
|
|
844
844
|
"authorityClass": "workflow",
|
|
845
845
|
"machineJson": true,
|
|
@@ -944,7 +944,7 @@
|
|
|
944
944
|
"ownerPackage": "openplanr",
|
|
945
945
|
"source": {
|
|
946
946
|
"path": "packages/cli/src/cli/commands/update.ts",
|
|
947
|
-
"digest": "sha256:
|
|
947
|
+
"digest": "sha256:90edb8dd8c54864352ce66d02395eddba6f9f4fac7bbd5dcef92c64b1aa19c26"
|
|
948
948
|
},
|
|
949
949
|
"authorityClass": "workflow",
|
|
950
950
|
"machineJson": false,
|
|
@@ -965,7 +965,7 @@
|
|
|
965
965
|
"ownerPackage": "openplanr",
|
|
966
966
|
"source": {
|
|
967
967
|
"path": "packages/cli/src/cli/commands/upgrade.ts",
|
|
968
|
-
"digest": "sha256:
|
|
968
|
+
"digest": "sha256:5f559c4d6bf7a1b31477f71c195d086021a8f4b8bc62ba78e6eeb6b5f1b1ac5c"
|
|
969
969
|
},
|
|
970
970
|
"authorityClass": "workflow",
|
|
971
971
|
"machineJson": false,
|
|
@@ -1948,5 +1948,5 @@
|
|
|
1948
1948
|
]
|
|
1949
1949
|
}
|
|
1950
1950
|
],
|
|
1951
|
-
"documentDigest": "sha256:
|
|
1951
|
+
"documentDigest": "sha256:7ffb9b909de9618cbace6cfad748408d97e773dd20e0b439f2795da99c985ace"
|
|
1952
1952
|
}
|
package/registries/skills.json
CHANGED
|
@@ -1050,6 +1050,67 @@
|
|
|
1050
1050
|
"evaluation/skills/migrations/planr-land.json"
|
|
1051
1051
|
]
|
|
1052
1052
|
},
|
|
1053
|
+
{
|
|
1054
|
+
"skillId": "planr-openplanr",
|
|
1055
|
+
"skillVersion": "1.0.0",
|
|
1056
|
+
"description": "Route a planning, specification, delivery, design, review, diagram, release, or operating request to the best OpenPlanr skill. Use when the right skill is unclear or the request spans several.",
|
|
1057
|
+
"lifecycle": "active",
|
|
1058
|
+
"authorityClass": "read-only-view",
|
|
1059
|
+
"source": "skills/planr-openplanr/openplanr.skill.json",
|
|
1060
|
+
"sourceDigest": "sha256:f14e20b843f7f51688ded299fbeb773eab1d244429e7baaaff5a14713bde72be",
|
|
1061
|
+
"triggerPolicy": {
|
|
1062
|
+
"include": [
|
|
1063
|
+
"Choose which OpenPlanr skill should handle a request",
|
|
1064
|
+
"Route a mixed or unclear planning, delivery, design, or operating request"
|
|
1065
|
+
],
|
|
1066
|
+
"exclude": [
|
|
1067
|
+
"Perform the routed work itself",
|
|
1068
|
+
"Answer a question unrelated to OpenPlanr workflows"
|
|
1069
|
+
],
|
|
1070
|
+
"deferTo": []
|
|
1071
|
+
},
|
|
1072
|
+
"contracts": {
|
|
1073
|
+
"inputs": [],
|
|
1074
|
+
"outputs": [
|
|
1075
|
+
{
|
|
1076
|
+
"id": "routing-result",
|
|
1077
|
+
"version": "1.0.0"
|
|
1078
|
+
}
|
|
1079
|
+
]
|
|
1080
|
+
},
|
|
1081
|
+
"cliRequirements": [],
|
|
1082
|
+
"ruleIds": [
|
|
1083
|
+
"R1",
|
|
1084
|
+
"R5",
|
|
1085
|
+
"R7"
|
|
1086
|
+
],
|
|
1087
|
+
"contributionManifestRefs": [
|
|
1088
|
+
"packages/skill-runtime/contributions/workflows.json"
|
|
1089
|
+
],
|
|
1090
|
+
"hosts": [
|
|
1091
|
+
{
|
|
1092
|
+
"host": "claude-code",
|
|
1093
|
+
"entrypoint": "/planr:openplanr",
|
|
1094
|
+
"path": "dist/plugins/claude/openplanr/skills/openplanr/SKILL.md"
|
|
1095
|
+
},
|
|
1096
|
+
{
|
|
1097
|
+
"host": "codex",
|
|
1098
|
+
"entrypoint": "$planr:openplanr",
|
|
1099
|
+
"path": "dist/plugins/openai/openplanr/skills/openplanr/SKILL.md"
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"host": "cursor",
|
|
1103
|
+
"entrypoint": "planr-openplanr",
|
|
1104
|
+
"path": "dist/plugins/cursor/openplanr/rules/planr-openplanr.mdc"
|
|
1105
|
+
}
|
|
1106
|
+
],
|
|
1107
|
+
"testRefs": [
|
|
1108
|
+
"tests/protocol/skill-catalog.test.mjs"
|
|
1109
|
+
],
|
|
1110
|
+
"certificationRefs": [
|
|
1111
|
+
"evaluation/skills/migrations/planr-openplanr.json"
|
|
1112
|
+
]
|
|
1113
|
+
},
|
|
1053
1114
|
{
|
|
1054
1115
|
"skillId": "planr-operate",
|
|
1055
1116
|
"skillVersion": "2.1.0",
|
|
@@ -1417,6 +1478,68 @@
|
|
|
1417
1478
|
"evaluation/skills/migrations/planr-spec.json"
|
|
1418
1479
|
]
|
|
1419
1480
|
},
|
|
1481
|
+
{
|
|
1482
|
+
"skillId": "planr-sprint",
|
|
1483
|
+
"skillVersion": "1.0.0",
|
|
1484
|
+
"description": "Refine every open backlog item against the code and the calendar, refute the picks, and select a sprint that fits capacity and the release cut. Use before a cut or sprint; not for decomposing one specification or reporting status.",
|
|
1485
|
+
"lifecycle": "active",
|
|
1486
|
+
"authorityClass": "planning-write",
|
|
1487
|
+
"source": "skills/planr-sprint/openplanr.skill.json",
|
|
1488
|
+
"sourceDigest": "sha256:8083ebeb2c89a73d127b99fc299e6ee4d2891b56740c4e266b52450f55a01794",
|
|
1489
|
+
"triggerPolicy": {
|
|
1490
|
+
"include": [
|
|
1491
|
+
"Refine the open backlog and select what fits the next sprint or release cut",
|
|
1492
|
+
"Judge which backlog items are stale, blocked, or ready and fit the sprint to capacity",
|
|
1493
|
+
"Decide which open backlog items move to in progress before the release cut and which are dead"
|
|
1494
|
+
],
|
|
1495
|
+
"exclude": [
|
|
1496
|
+
"Decompose one specification into stories and tasks",
|
|
1497
|
+
"Report delivery status without judging or selecting work"
|
|
1498
|
+
],
|
|
1499
|
+
"deferTo": []
|
|
1500
|
+
},
|
|
1501
|
+
"contracts": {
|
|
1502
|
+
"inputs": [],
|
|
1503
|
+
"outputs": [
|
|
1504
|
+
{
|
|
1505
|
+
"id": "sprint-result",
|
|
1506
|
+
"version": "1.0.0"
|
|
1507
|
+
}
|
|
1508
|
+
]
|
|
1509
|
+
},
|
|
1510
|
+
"cliRequirements": [],
|
|
1511
|
+
"ruleIds": [
|
|
1512
|
+
"R1",
|
|
1513
|
+
"R6",
|
|
1514
|
+
"R7"
|
|
1515
|
+
],
|
|
1516
|
+
"contributionManifestRefs": [
|
|
1517
|
+
"packages/skill-runtime/contributions/workflows.json"
|
|
1518
|
+
],
|
|
1519
|
+
"hosts": [
|
|
1520
|
+
{
|
|
1521
|
+
"host": "claude-code",
|
|
1522
|
+
"entrypoint": "/planr:sprint",
|
|
1523
|
+
"path": "dist/plugins/claude/openplanr/skills/sprint/SKILL.md"
|
|
1524
|
+
},
|
|
1525
|
+
{
|
|
1526
|
+
"host": "codex",
|
|
1527
|
+
"entrypoint": "$planr:sprint",
|
|
1528
|
+
"path": "dist/plugins/openai/openplanr/skills/sprint/SKILL.md"
|
|
1529
|
+
},
|
|
1530
|
+
{
|
|
1531
|
+
"host": "cursor",
|
|
1532
|
+
"entrypoint": "planr-sprint",
|
|
1533
|
+
"path": "dist/plugins/cursor/openplanr/rules/planr-sprint.mdc"
|
|
1534
|
+
}
|
|
1535
|
+
],
|
|
1536
|
+
"testRefs": [
|
|
1537
|
+
"tests/protocol/skill-catalog.test.mjs"
|
|
1538
|
+
],
|
|
1539
|
+
"certificationRefs": [
|
|
1540
|
+
"evaluation/skills/migrations/planr-sprint.json"
|
|
1541
|
+
]
|
|
1542
|
+
},
|
|
1420
1543
|
{
|
|
1421
1544
|
"skillId": "planr-status",
|
|
1422
1545
|
"skillVersion": "1.0.0",
|
|
@@ -1541,5 +1664,5 @@
|
|
|
1541
1664
|
}
|
|
1542
1665
|
],
|
|
1543
1666
|
"compatibilityAliases": [],
|
|
1544
|
-
"documentDigest": "sha256:
|
|
1667
|
+
"documentDigest": "sha256:f4110fb706b84192deaef1ee5238cc10477b1d91f0003040a33221e490312cc7"
|
|
1545
1668
|
}
|
|
@@ -1528,7 +1528,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
1528
1528
|
"ownerPackage": "openplanr",
|
|
1529
1529
|
"source": {
|
|
1530
1530
|
"path": "docs/generated/utility-command-catalog.json",
|
|
1531
|
-
"digest": "sha256:
|
|
1531
|
+
"digest": "sha256:3ef32f1b1c3b37ae665bb0328b736cafcc1ad40a158875a8c7f32a7de1da1f54"
|
|
1532
1532
|
},
|
|
1533
1533
|
"authorityClass": "workflow",
|
|
1534
1534
|
"machineJson": false,
|
|
@@ -1717,7 +1717,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
1717
1717
|
"ownerPackage": "openplanr",
|
|
1718
1718
|
"source": {
|
|
1719
1719
|
"path": "docs/generated/utility-command-catalog.json",
|
|
1720
|
-
"digest": "sha256:
|
|
1720
|
+
"digest": "sha256:3ef32f1b1c3b37ae665bb0328b736cafcc1ad40a158875a8c7f32a7de1da1f54"
|
|
1721
1721
|
},
|
|
1722
1722
|
"authorityClass": "workflow",
|
|
1723
1723
|
"machineJson": true,
|
|
@@ -1990,7 +1990,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
1990
1990
|
"ownerPackage": "openplanr",
|
|
1991
1991
|
"source": {
|
|
1992
1992
|
"path": "packages/cli/src/cli/commands/status.ts",
|
|
1993
|
-
"digest": "sha256:
|
|
1993
|
+
"digest": "sha256:34b909c5a2c9134b61804dd4664400fe3f4e7739f3e15fb58c03f16b93429272"
|
|
1994
1994
|
},
|
|
1995
1995
|
"authorityClass": "workflow",
|
|
1996
1996
|
"machineJson": true,
|
|
@@ -2095,7 +2095,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
2095
2095
|
"ownerPackage": "openplanr",
|
|
2096
2096
|
"source": {
|
|
2097
2097
|
"path": "packages/cli/src/cli/commands/update.ts",
|
|
2098
|
-
"digest": "sha256:
|
|
2098
|
+
"digest": "sha256:90edb8dd8c54864352ce66d02395eddba6f9f4fac7bbd5dcef92c64b1aa19c26"
|
|
2099
2099
|
},
|
|
2100
2100
|
"authorityClass": "workflow",
|
|
2101
2101
|
"machineJson": false,
|
|
@@ -2116,7 +2116,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
2116
2116
|
"ownerPackage": "openplanr",
|
|
2117
2117
|
"source": {
|
|
2118
2118
|
"path": "packages/cli/src/cli/commands/upgrade.ts",
|
|
2119
|
-
"digest": "sha256:
|
|
2119
|
+
"digest": "sha256:5f559c4d6bf7a1b31477f71c195d086021a8f4b8bc62ba78e6eeb6b5f1b1ac5c"
|
|
2120
2120
|
},
|
|
2121
2121
|
"authorityClass": "workflow",
|
|
2122
2122
|
"machineJson": false,
|
|
@@ -3099,7 +3099,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
3099
3099
|
]
|
|
3100
3100
|
}
|
|
3101
3101
|
],
|
|
3102
|
-
"documentDigest": "sha256:
|
|
3102
|
+
"documentDigest": "sha256:7ffb9b909de9618cbace6cfad748408d97e773dd20e0b439f2795da99c985ace"
|
|
3103
3103
|
},
|
|
3104
3104
|
"skills.json": {
|
|
3105
3105
|
"kind": "skill-catalog",
|
|
@@ -4153,6 +4153,67 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
4153
4153
|
"evaluation/skills/migrations/planr-land.json"
|
|
4154
4154
|
]
|
|
4155
4155
|
},
|
|
4156
|
+
{
|
|
4157
|
+
"skillId": "planr-openplanr",
|
|
4158
|
+
"skillVersion": "1.0.0",
|
|
4159
|
+
"description": "Route a planning, specification, delivery, design, review, diagram, release, or operating request to the best OpenPlanr skill. Use when the right skill is unclear or the request spans several.",
|
|
4160
|
+
"lifecycle": "active",
|
|
4161
|
+
"authorityClass": "read-only-view",
|
|
4162
|
+
"source": "skills/planr-openplanr/openplanr.skill.json",
|
|
4163
|
+
"sourceDigest": "sha256:f14e20b843f7f51688ded299fbeb773eab1d244429e7baaaff5a14713bde72be",
|
|
4164
|
+
"triggerPolicy": {
|
|
4165
|
+
"include": [
|
|
4166
|
+
"Choose which OpenPlanr skill should handle a request",
|
|
4167
|
+
"Route a mixed or unclear planning, delivery, design, or operating request"
|
|
4168
|
+
],
|
|
4169
|
+
"exclude": [
|
|
4170
|
+
"Perform the routed work itself",
|
|
4171
|
+
"Answer a question unrelated to OpenPlanr workflows"
|
|
4172
|
+
],
|
|
4173
|
+
"deferTo": []
|
|
4174
|
+
},
|
|
4175
|
+
"contracts": {
|
|
4176
|
+
"inputs": [],
|
|
4177
|
+
"outputs": [
|
|
4178
|
+
{
|
|
4179
|
+
"id": "routing-result",
|
|
4180
|
+
"version": "1.0.0"
|
|
4181
|
+
}
|
|
4182
|
+
]
|
|
4183
|
+
},
|
|
4184
|
+
"cliRequirements": [],
|
|
4185
|
+
"ruleIds": [
|
|
4186
|
+
"R1",
|
|
4187
|
+
"R5",
|
|
4188
|
+
"R7"
|
|
4189
|
+
],
|
|
4190
|
+
"contributionManifestRefs": [
|
|
4191
|
+
"packages/skill-runtime/contributions/workflows.json"
|
|
4192
|
+
],
|
|
4193
|
+
"hosts": [
|
|
4194
|
+
{
|
|
4195
|
+
"host": "claude-code",
|
|
4196
|
+
"entrypoint": "/planr:openplanr",
|
|
4197
|
+
"path": "dist/plugins/claude/openplanr/skills/openplanr/SKILL.md"
|
|
4198
|
+
},
|
|
4199
|
+
{
|
|
4200
|
+
"host": "codex",
|
|
4201
|
+
"entrypoint": "$planr:openplanr",
|
|
4202
|
+
"path": "dist/plugins/openai/openplanr/skills/openplanr/SKILL.md"
|
|
4203
|
+
},
|
|
4204
|
+
{
|
|
4205
|
+
"host": "cursor",
|
|
4206
|
+
"entrypoint": "planr-openplanr",
|
|
4207
|
+
"path": "dist/plugins/cursor/openplanr/rules/planr-openplanr.mdc"
|
|
4208
|
+
}
|
|
4209
|
+
],
|
|
4210
|
+
"testRefs": [
|
|
4211
|
+
"tests/protocol/skill-catalog.test.mjs"
|
|
4212
|
+
],
|
|
4213
|
+
"certificationRefs": [
|
|
4214
|
+
"evaluation/skills/migrations/planr-openplanr.json"
|
|
4215
|
+
]
|
|
4216
|
+
},
|
|
4156
4217
|
{
|
|
4157
4218
|
"skillId": "planr-operate",
|
|
4158
4219
|
"skillVersion": "2.1.0",
|
|
@@ -4520,6 +4581,68 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
4520
4581
|
"evaluation/skills/migrations/planr-spec.json"
|
|
4521
4582
|
]
|
|
4522
4583
|
},
|
|
4584
|
+
{
|
|
4585
|
+
"skillId": "planr-sprint",
|
|
4586
|
+
"skillVersion": "1.0.0",
|
|
4587
|
+
"description": "Refine every open backlog item against the code and the calendar, refute the picks, and select a sprint that fits capacity and the release cut. Use before a cut or sprint; not for decomposing one specification or reporting status.",
|
|
4588
|
+
"lifecycle": "active",
|
|
4589
|
+
"authorityClass": "planning-write",
|
|
4590
|
+
"source": "skills/planr-sprint/openplanr.skill.json",
|
|
4591
|
+
"sourceDigest": "sha256:8083ebeb2c89a73d127b99fc299e6ee4d2891b56740c4e266b52450f55a01794",
|
|
4592
|
+
"triggerPolicy": {
|
|
4593
|
+
"include": [
|
|
4594
|
+
"Refine the open backlog and select what fits the next sprint or release cut",
|
|
4595
|
+
"Judge which backlog items are stale, blocked, or ready and fit the sprint to capacity",
|
|
4596
|
+
"Decide which open backlog items move to in progress before the release cut and which are dead"
|
|
4597
|
+
],
|
|
4598
|
+
"exclude": [
|
|
4599
|
+
"Decompose one specification into stories and tasks",
|
|
4600
|
+
"Report delivery status without judging or selecting work"
|
|
4601
|
+
],
|
|
4602
|
+
"deferTo": []
|
|
4603
|
+
},
|
|
4604
|
+
"contracts": {
|
|
4605
|
+
"inputs": [],
|
|
4606
|
+
"outputs": [
|
|
4607
|
+
{
|
|
4608
|
+
"id": "sprint-result",
|
|
4609
|
+
"version": "1.0.0"
|
|
4610
|
+
}
|
|
4611
|
+
]
|
|
4612
|
+
},
|
|
4613
|
+
"cliRequirements": [],
|
|
4614
|
+
"ruleIds": [
|
|
4615
|
+
"R1",
|
|
4616
|
+
"R6",
|
|
4617
|
+
"R7"
|
|
4618
|
+
],
|
|
4619
|
+
"contributionManifestRefs": [
|
|
4620
|
+
"packages/skill-runtime/contributions/workflows.json"
|
|
4621
|
+
],
|
|
4622
|
+
"hosts": [
|
|
4623
|
+
{
|
|
4624
|
+
"host": "claude-code",
|
|
4625
|
+
"entrypoint": "/planr:sprint",
|
|
4626
|
+
"path": "dist/plugins/claude/openplanr/skills/sprint/SKILL.md"
|
|
4627
|
+
},
|
|
4628
|
+
{
|
|
4629
|
+
"host": "codex",
|
|
4630
|
+
"entrypoint": "$planr:sprint",
|
|
4631
|
+
"path": "dist/plugins/openai/openplanr/skills/sprint/SKILL.md"
|
|
4632
|
+
},
|
|
4633
|
+
{
|
|
4634
|
+
"host": "cursor",
|
|
4635
|
+
"entrypoint": "planr-sprint",
|
|
4636
|
+
"path": "dist/plugins/cursor/openplanr/rules/planr-sprint.mdc"
|
|
4637
|
+
}
|
|
4638
|
+
],
|
|
4639
|
+
"testRefs": [
|
|
4640
|
+
"tests/protocol/skill-catalog.test.mjs"
|
|
4641
|
+
],
|
|
4642
|
+
"certificationRefs": [
|
|
4643
|
+
"evaluation/skills/migrations/planr-sprint.json"
|
|
4644
|
+
]
|
|
4645
|
+
},
|
|
4523
4646
|
{
|
|
4524
4647
|
"skillId": "planr-status",
|
|
4525
4648
|
"skillVersion": "1.0.0",
|
|
@@ -4644,7 +4767,7 @@ export const CANONICAL_REGISTRIES = deepFreeze({
|
|
|
4644
4767
|
}
|
|
4645
4768
|
],
|
|
4646
4769
|
"compatibilityAliases": [],
|
|
4647
|
-
"documentDigest": "sha256:
|
|
4770
|
+
"documentDigest": "sha256:f4110fb706b84192deaef1ee5238cc10477b1d91f0003040a33221e490312cc7"
|
|
4648
4771
|
},
|
|
4649
4772
|
"outputs.json": {
|
|
4650
4773
|
"kind": "output-catalog",
|
package/src/registries.mjs
CHANGED
|
@@ -42,8 +42,9 @@ const EXPECTED_TASK_KINDS = Object.freeze({
|
|
|
42
42
|
const EXPECTED_SKILLS = Object.freeze([
|
|
43
43
|
'planr-artifact', 'planr-browser-qa', 'planr-ceo-review', 'planr-chair-review', 'planr-challenger-review', 'planr-cmo-review',
|
|
44
44
|
'planr-coo-review', 'planr-cpo-review', 'planr-cto-review', 'planr-dashboard', 'planr-design', 'planr-design-loop',
|
|
45
|
-
'planr-design-review', 'planr-diagram', 'planr-doctor', 'planr-investigate', 'planr-land', 'planr-
|
|
46
|
-
'planr-plan
|
|
45
|
+
'planr-design-review', 'planr-diagram', 'planr-doctor', 'planr-investigate', 'planr-land', 'planr-openplanr', 'planr-operate',
|
|
46
|
+
'planr-plan',
|
|
47
|
+
'planr-plan-review', 'planr-release', 'planr-ship', 'planr-spec', 'planr-sprint', 'planr-status', 'planr-sync',
|
|
47
48
|
]);
|
|
48
49
|
|
|
49
50
|
export function validateCanonicalRegistries(registries = CANONICAL_REGISTRIES) {
|