Local no-token scanner for GitHub repository hygiene and CI risk signals.
Project description
Repository Hygiene / CI Risk Preflight
Local no-token scanner for GitHub repository hygiene and CI risk signals before they become release blockers.
This is the bridge product in the Engineering Risk Preflight suite: it starts as a CLI, can be used in GitHub Actions, and can later inform a GitHub App/SaaS only after demand is validated.
What it checks
The scanner reads only files in a checked-out repository. It does not use the GitHub API, tokens, network calls, SaaS accounts, private repo integrations, or source uploads.
Current rule categories:
ci-deprecation: stale GitHub Actions majors such asupload-artifact@v3,download-artifact@v3,cache@v3,checkout@v3,setup-node@v3.ci-runtime: local JavaScript actions using old Node runtimes.ci-permissions: broad workflow permissions such aswrite-all,contents: write, andpull_request_targetreview prompts.repo-hygiene: missingCODEOWNERS,SECURITY.md,CONTRIBUTING.md, and changelog/release history.dependency-hygiene: missing Dependabot/Renovate config.ci-observability: missing test report artifacts/summaries and artifact upload steps withoutif: always().release-safety: release/publish workflows without visible guardrails.ci-cost: jobs without visibletimeout-minutes.
Try locally
python3 scanner.py examples
python3 scanner.py examples --format json
python3 scanner.py examples --format annotations
python3 scanner.py examples --min-severity medium
python3 scanner.py examples --fail-on-severity high
python3 scanner.py --list-rules
Config and baselines
Auto-load .repo-hygiene-preflight.json or pass --config:
{
"ignore_rules": ["workflow-without-timeout"],
"only_rules": [],
"ignore_paths": ["docs/generated/**"],
"severity_overrides": {"missing-contributing": "info"},
"baseline_fingerprints": []
}
Baseline existing findings for gradual rollout:
python3 scanner.py . --format json --output report.json --write-baseline repo-hygiene-baseline.json
python3 scanner.py . --baseline repo-hygiene-baseline.json --fail-on-severity high
Outputs
- Markdown report for local review or
$GITHUB_STEP_SUMMARY. - JSON report for CI artifacts or later policy processing.
- GitHub workflow annotation commands via
--format annotations. - Stable finding fingerprints for suppressions and baselines.
Docs
docs/RULE_INVENTORY.md— current rule inventory.docs/CONFIGURATION.md— config and baseline behavior.docs/CI_USAGE.md— GitHub Actions usage patterns.docs/GITHUB_ACTION_DRAFT.md— local design artifact for a future wrapper action.docs/PYPI_TESTPYPI_READINESS.md— package readiness checklist.
Privacy posture
- Local files only.
- No GitHub token required.
- No source upload.
- Findings include file paths and matching lines; review before sharing publicly.
- Rules are conservative preflight signals, not compliance/security guarantees.
Monetization hypothesis
Free CLI/GitHub Action first. Paid add-ons later only after demand validation: team policy packs, release-readiness rule bundles, scheduled org reports, or an org dashboard.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repo_hygiene_ci_risk_preflight-0.1.0.tar.gz.
File metadata
- Download URL: repo_hygiene_ci_risk_preflight-0.1.0.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eca678626b844fd32efca879b5545ce10173ed08d7d2e819920734a9f04209e
|
|
| MD5 |
6a0bfa597d5c59f11f9d0c30bcfb0f93
|
|
| BLAKE2b-256 |
aeb3a77b9888f1dfcca550f9e6d28a6bdea9d7bd53338593efa0fb8ceae7e909
|
Provenance
The following attestation bundles were made for repo_hygiene_ci_risk_preflight-0.1.0.tar.gz:
Publisher:
publish.yml on vasiliy0/repo-hygiene-ci-risk-preflight
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_hygiene_ci_risk_preflight-0.1.0.tar.gz -
Subject digest:
6eca678626b844fd32efca879b5545ce10173ed08d7d2e819920734a9f04209e - Sigstore transparency entry: 1563283257
- Sigstore integration time:
-
Permalink:
vasiliy0/repo-hygiene-ci-risk-preflight@e23658359898cb4a51e199e727a2c157fc50294c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/vasiliy0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e23658359898cb4a51e199e727a2c157fc50294c -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file repo_hygiene_ci_risk_preflight-0.1.0-py3-none-any.whl.
File metadata
- Download URL: repo_hygiene_ci_risk_preflight-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9da8d5957092fe8091b4180cb250295547c716f0ab2de0f96423b699f2f6fca9
|
|
| MD5 |
c94dd0db311681cb5e43b57969524b0a
|
|
| BLAKE2b-256 |
981dea1e41fc0835d7cce67925774d418da878afac128e31cfbde96721de6bd5
|
Provenance
The following attestation bundles were made for repo_hygiene_ci_risk_preflight-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on vasiliy0/repo-hygiene-ci-risk-preflight
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_hygiene_ci_risk_preflight-0.1.0-py3-none-any.whl -
Subject digest:
9da8d5957092fe8091b4180cb250295547c716f0ab2de0f96423b699f2f6fca9 - Sigstore transparency entry: 1563283373
- Sigstore integration time:
-
Permalink:
vasiliy0/repo-hygiene-ci-risk-preflight@e23658359898cb4a51e199e727a2c157fc50294c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/vasiliy0
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e23658359898cb4a51e199e727a2c157fc50294c -
Trigger Event:
workflow_dispatch
-
Statement type: