{"id":37824167,"url":"https://github.com/armakuni/circleci-context-validator","last_synced_at":"2026-01-16T15:44:12.737Z","repository":{"id":38314420,"uuid":"447925259","full_name":"armakuni/circleci-context-validator","owner":"armakuni","description":"Circleci Context Validation in Code","archived":false,"fork":false,"pushed_at":"2024-12-16T17:02:31.000Z","size":1069,"stargazers_count":3,"open_issues_count":5,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-09-08T14:58:11.901Z","etag":null,"topics":["circleci","cli","documentation","infrastructure","validation"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@armakuni/circleci-context-validator","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/armakuni.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-14T10:17:32.000Z","updated_at":"2024-09-30T17:21:11.000Z","dependencies_parsed_at":"2024-02-26T18:02:31.530Z","dependency_job_id":"19b3568d-b901-4edf-a092-a7696b0499fa","html_url":"https://github.com/armakuni/circleci-context-validator","commit_stats":{"total_commits":257,"total_committers":5,"mean_commits":51.4,"dds":"0.45914396887159536","last_synced_commit":"772cc182ed4dc514859167decb0f4558967a1e86"},"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/armakuni/circleci-context-validator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armakuni%2Fcircleci-context-validator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armakuni%2Fcircleci-context-validator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armakuni%2Fcircleci-context-validator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armakuni%2Fcircleci-context-validator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/armakuni","download_url":"https://codeload.github.com/armakuni/circleci-context-validator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/armakuni%2Fcircleci-context-validator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":["circleci","cli","documentation","infrastructure","validation"],"created_at":"2026-01-16T15:44:12.639Z","updated_at":"2026-01-16T15:44:12.725Z","avatar_url":"https://github.com/armakuni.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"CircleCI Context Validator CLI Tool\n=================\n\n[![CircleCI](https://circleci.com/gh/armakuni/circleci-context-validator/tree/main.svg?style=svg\u0026circle-token=e243ff035113b5a9b5d5b939673556e063ac3b5a)](https://circleci.com/gh/armakuni/circleci-context-validator/tree/main)\n\n* [Purpose](#purpose)\n* [Prerequisites](#prerequisites)\n* [Install](#install)\n* [Commands](#commands)\n* [Example](#examples)\n* [Dev Mode](#development)\n* [Upcoming \u0026 WIP](#upcoming)\n\n# Purpose \nAs projects grow, team members drop in and out and the documented state of environment variables become a mystery, and left in a precarious state not knowing if a varaible is required any more looking at the Circle UI.\n\nCircleCI Context Validator (*CCV for short*) makes use of a simple yaml configuration file, [refer to the example](./example/context_validator.yml). The configuration file refers to the names of the context and associated environment variables. The config should reflect what should only be present in your context (can be more than one, should you need that), is then compared against the API giving back user input on valid or failures.\n\n# Prerequisites\n- [CircleCI using Contexts](https://circleci.com/docs/2.0/contexts/)\n- A CircleCI Organization ID\n    - NOTE: Retrieve ID at the following https://app.circleci.com/settings/organization/github/YOUR_ORG_NAME_HERE/overview\n- [CircleCI Personal API Token](https://app.circleci.com/settings/user/tokens) \n    - NOTE: [Managing API Tokens](https://circleci.com/docs/2.0/managing-api-tokens/)\n\n# Install\n```sh-session\n$ npm install -g @armakuni/circleci-context-validator\n``` \nor \n```sh-session\n$ yarn global add @armakuni/circleci-context-validator\n```\n\n# Commands\n```\n$ ccv (--version)\n@armakuni/circleci-context-validator/\u003csemver\u003e darwin-x64 node-v16.13.1\n$ ccv --help [COMMAND]\nUSAGE\n  $ CIRCLECI_PERSONAL_ACCESS_TOKEN=example-token ccv circleci validate --context-definitions example/context_validator.yml\n```\n\n```\nUSAGE\n  $ ccv help [COMMAND] [-n]\n\nARGUMENTS\n  COMMAND  Command to show help for.\n\nFLAGS\n  -n, --nested-commands  Include all nested commands in the output.\n\nDESCRIPTION\n  Display help for ccv.\n```\n\n# Examples\nRun the CLI tool:\n```sh\nCIRCLECI_PERSONAL_ACCESS_TOKEN=example-token ccv circleci validate --context-definitions .circleci/context_validator.yml\n```\n![example cli usage](./docs/demo.svg)\n\n## All Valid \nContext exists, associated env var values configured exist in context definition yaml.\n```\nContext \"context-validator-ci\" is valid\nSuccess\n```\n\n## Missing Env Var\nConfigured in context definition yaml, but not present in CircleCI Context\n```\nMissing Env Var \"API_KEY\" in Context \"context-validator-ci\"\nFailures 1\n```\n\n## Missing Context\nConfigured in context definition yaml, but not present in CircleCI Context\n```\nContext \"context-validator-cid\" is missing\nFailures 1\n```\n## Undocumented\nA value is not configured, but exists in circleci\n```\nUnexpected Env Var \"NPM_TOKEN\" in Context \"context-validator-ci\"\nFailures 1\n```\n\n# Development\nHow to dev on `circleci-context-validator`, for a quick start guide checkout [oclif](https://oclif.io) which this tool makes heavy use of.\n## Entrypoint\nCommand entrypoint is located: `circleci-context-validator/src/commands/circleci/validate`\n## NVM\n```\n$ cd circleci-context-validator\n$ nvm use .\n```\n\n## Dev Run (no compile)\n```sh-session\nCIRCLECI_PERSONAL_ACCESS_TOKEN=generate_personal_access_token bin/dev circleci validate --context-definitions example/context_validator.yml\n```\n\n# Upcoming\n- Pretty console output\n- Different output formats e.g. JSON\n- Support for standard Environment Variables i.e. non-context associated\n- Autocomplete commands\n- Retrieve existing context and associated env vars to pre-populate a context_validator.yml\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmakuni%2Fcircleci-context-validator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farmakuni%2Fcircleci-context-validator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farmakuni%2Fcircleci-context-validator/lists"}