         static let configuration = CommandConfiguration(abstract: "Remove a configured collection")
 
         @Argument(help: "URL of the collection to remove")
-        var collectionUrl: String
-
-        mutating func run() throws {
-            guard let collectionUrl = URL(string: collectionUrl) else {
-                throw CollectionsError.invalidArgument("collectionUrl")
-            }
-
-            let source = PackageCollectionsModel.CollectionSource(type: .json, url: collectionUrl)
+        var collectionURL: String
+
+        mutating func run() throws {
+            let collectionURL = try url(self.collectionURL)
+
+            let source = PackageCollectionsModel.CollectionSource(type: .json, url: collectionURL)
             try with { collections in
                 let collection = try tsc_await { collections.getCollection(source, callback: $0) }
                 _ = try tsc_await { collections.removeCollection(source, callback: $0) }

        var jsonOptions: JSONOptions

        @Argument(help: "URL of the package or collection to get information for")
        var packageUrl: String

        @Option(name: .long, help: "Version of the package to get information for")
        var version: String?

        var skipSignatureCheck: Bool = false

        mutating func run() throws {
            let collectionURL = try url(self.collectionURL)

            let source = PackageCollectionsModel.CollectionSource(type: .json, url: collectionURL, skipSignatureCheck: self.skipSignatureCheck)
            let collection: PackageCollectionsModel.Collection = try with { collections in
                do {
                    let userTrusted = self.trustUnsigned
