{"id":23093396,"url":"https://github.com/kartverket/skipctl","last_synced_at":"2026-04-17T12:01:33.275Z","repository":{"id":251053884,"uuid":"823655728","full_name":"kartverket/skipctl","owner":"kartverket","description":"A tool to perform various network troubleshooting","archived":false,"fork":false,"pushed_at":"2026-04-14T16:50:38.000Z","size":1829,"stargazers_count":5,"open_issues_count":13,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-14T18:27:33.874Z","etag":null,"topics":["diagnostics","probe"],"latest_commit_sha":null,"homepage":"https://skip.kartverket.no","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kartverket.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-03T12:58:38.000Z","updated_at":"2026-04-14T16:50:39.000Z","dependencies_parsed_at":"2026-01-29T12:02:02.207Z","dependency_job_id":null,"html_url":"https://github.com/kartverket/skipctl","commit_stats":{"total_commits":26,"total_committers":3,"mean_commits":8.666666666666666,"dds":0.3846153846153846,"last_synced_commit":"219367f7ce9bb67ca9ceb36609452ebbc9963383"},"previous_names":["kartverket/skipctl"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/kartverket/skipctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartverket%2Fskipctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartverket%2Fskipctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartverket%2Fskipctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartverket%2Fskipctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kartverket","download_url":"https://codeload.github.com/kartverket/skipctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kartverket%2Fskipctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31928229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T10:35:34.458Z","status":"ssl_error","status_checked_at":"2026-04-17T10:35:09.472Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diagnostics","probe"],"created_at":"2024-12-16T21:47:19.452Z","updated_at":"2026-04-17T12:01:33.125Z","avatar_url":"https://github.com/kartverket.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# skipctl\n\nA simple client (and [server](./server.md)) to perform various network troubleshooting.\n\n![skipctl](assets/skipctl-logo.png)\n\n- [Installation](#installation)\n- [Usage](#usage)\n    - [Test](#test)\n        - [Ping](#ping)\n        - [Port probe](#port-probe)\n    - [Manifests](#manifests)\n        - [Render manifests](#render-manifests)\n        - [Validate manifests](#validate-k8s-manifests)\n- [Analytics \u0026 Privacy](#analytics--privacy)\n## Installation\n\nDownload the [latest release](https://github.com/kartverket/skipctl/releases) or use the provided Docker image (mainly for running a server).\n\n### Use Homebrew\n\n```shell\nbrew tap kartverket/taps \u0026\u0026 \\\nbrew install skipctl\n```\n\n## Usage\n\n### Test\nThe various `test` commands will execute against an API server. Run `skipctl test ping --api-server=something` to get a list of supported API server names.\nAn API server represents a location that can run tests from their perspective. All communication with API servers is encrypted over TLS.\n\n\u003e :exclamation: Before issuing any `test` commands, be sure to be authenticated first (`gcloud auth application-default login`).\n\n\n#### Ping\n\n```shell\nskipctl test ping --hostname=example.com --api-server=myApiServer\n```\n\n#### Port probe\n\n```shell\nskipctl test probe --hostname=example.com --port=1521 --api-server=myApiServer\n```\n\n\n### Manifests\n\nThe `manifests` command group contains commands for working with Skiperator manifests. All commands require a path pointing to a directory or file containing the manifest(s).\nIf a directory is specified, all commands in this group will recursively search the specified path for files with supported file formats. If no specific path is specified, the current working directory will be used.\n\n**Supported file formats are:**\n- `.jsonnet`\n- `.libsonnet` (only for `manifests format`)\n- `.yaml`\n- `.yml`\n- `kustomization.yaml`\n- `kustomization.yml`\n\n\n#### Render manifests\n\u003e[!note]\n\u003e When rendering kustomize, the renderer will ignore other `.jsonnet` and `.yaml` files in the same directory and subdirectories.\n\nCompiles and renders a Skiperator `.jsonnet` or `.yaml` manifest in the specified directory and alerts if any errors are found.\n```shell\nskipctl manifests render \u003cpathname\u003e\n```\n#### Format manifests\n\nFormats a `.jsonnet`, `.libsonnet` or `.yaml` manifest in the specified directory and alerts if any errors are found.\n```shell\nskipctl manifests format \u003cpathname\u003e\n```\n\n##### Format quick guide\n\nPurpose: Rewrite manifests in-place to a canonical style (JSONNet / YAML). Recurses a directory or reads from stdin.\n\nInputs:\n```\n--path, -p \u003cpath\u003e   Directory or file (defaults to CWD)\n(stdin)             Use '-' as sole argument to read from standard input\n```\n\nBehavior:\n- Only files with supported suffixes are touched (`.jsonnet`, `.yaml`, `.yml`).\n- On error (parse / write) returns exit code 1 after logging.\n\nExamples:\n```shell\n# Format everything under current directory\nskipctl manifests format .\n\n# Format a single file\nskipctl manifests format ./app/manifest.yaml\n\n# Format from stdin (outputs the formatted content to stdout)\ncat manifest.yaml | skipctl manifests format -\n```\n\nExit codes: 0 success / 1 error.\n#### Diff manifests\n\nCompares a Skiperator manifest against the currently deployed version in a Kubernetes cluster and shows the differences.\n\n```shell\nskipctl manifests diff --path \u003cpathname\u003e [flags]\n```\n\n\n##### Diff quick guide\n\nFlags:\n```\n--ref \u003cgit-ref\u003e        Git ref or directory to diff against (default HEAD)\n--diff-format \u003cfmt\u003e    pretty | patch | json (default pretty)\n--verbosity \u003clevel\u003e    full | chunk | minimal (auto-set if omitted)\n--chunk-size \u003cn\u003e       Context lines for chunk (default 3)\n--path, -p \u003cpath\u003e      Files / directory to scan\n--kustomize            Enable diffing kustomize directories (requires --ref to be a directory)\n--sort-output          Sort rendered outputs before diffing (useful on refactors that change output order only)\n```\n\nDefaults (when --verbosity not provided): pretty-\u003efull, patch-\u003echunk, json-\u003efull.\n\nExamples:\n```shell\nskipctl manifests diff --path .\nskipctl manifests diff --path . --diff-format json --verbosity minimal | jq '.diffs[] | select(.type!=\"Equals\")'\nskipctl manifest diff --path env/cluster --verbosity chunk --diff-format patch --kustomize --ref env-copy/cluster \n```\n\nExit codes: 0 success / 1 error.\n\n\n\n#### Validate K8s manifests\n\nValidates manifest files (in either `.jsonnet` or `.yaml` format) against relevant CRDs for Kartverket, \nincluding CRDs defined in [Skiperator](https://github.com/kartverket/skiperator), [Ztoperator](https://github.com/kartverket/ztoperator) \nand [Accesserator](https://github.com/kartverket/accesserator). \nThe complete list of supported CRDs can be viewed [here](./pkg/crd/schemas).\n\nThe API references for Skiperator and Ztoperator can be found in the SKIP docs, \nrespectively [here](https://skip.kartverket.no/docs/applikasjon-utrulling/skiperator/api-docs) and [here](https://skip.kartverket.no/docs/applikasjon-utrulling/tilgangsstyring/ztoperator/api-docs).\n\nReturns status code `1` if there are failures or `0` for successful validation\n\n```shell\nskipctl manifests validate \u003cpathname\u003e\n```\n\n## Analytics \u0026 Privacy\n\n`skipctl` collects anonymous usage analytics by **default** to help us understand how the tool is being used and improve the user experience.\n\n### What We Collect\n\nWe collect the following **non-personal** information:\n- **Command usage**: Which commands and subcommands are executed (e.g., `test ping`, `manifests render`)\n- **Command arguments**: Arguments passed to commands (e.g., flags used)\n- **Error information**: Whether a command succeeded or failed, and error messages if applicable. The error message may itself contain information about your system, e.g. file paths.\n- **Environment context**:\n  - Operating system (e.g., macOS, Linux, Windows)\n  - System architecture (e.g., amd64, arm64)\n  - Application version and git commit hash of skipctl\n  - Environment type (local or CI)\n- **Anonymous identifier**: A hashed machine-specific identifier that cannot be traced back to you.\n\n### How We Collect Data\n\nAnalytics are collected through [PostHog](https://posthog.com/), a privacy-focused analytics platform, and sent to our self-hosted instance.\n\n### How to Disable Analytics\n\nYou can disable analytics collection in two ways:\n\n1. Set the `DO_NOT_TRACK` environment variable to `true`\n2. Use the `--no-analytics` flag when running any `skipctl` command\n\nYou can suppress analytics enablement messages (whether it enabled or not) by setting the environement variable `SKIPCTL_MUTE_TELEMETRY` to `true`. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkartverket%2Fskipctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkartverket%2Fskipctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkartverket%2Fskipctl/lists"}