This repository uses lightweight GitHub hygiene suitable for a public reusable Hermes plugin.
| File | Purpose |
|---|---|
.github/workflows/ci.yml |
Runs tests and Ruff on Python 3.11 and 3.12. |
.github/workflows/security.yml |
Runs Gitleaks, actionlint, Semgrep, zizmor, ShellCheck, and gated pip-audit. |
.github/dependabot.yml |
Weekly dependency/update checks for GitHub Actions and Python packaging metadata, with a 7-day cooldown. |
.gitleaks.toml |
Secret scanner config with narrow placeholder allowlist. |
.semgrepignore |
Excludes caches/build output from Semgrep scans. |
CONTRIBUTING.md |
Public contribution expectations and local validation commands. |
CODE_OF_CONDUCT.md |
Community conduct expectations. |
SECURITY.md |
Vulnerability reporting and leak-response notes. |
Run before pushing security-related changes:
python -m pytest -q
python -m ruff check .
python -m mypy
git diff --check
# Workflow syntax/security checks, when Docker and uvx are available:
docker run --rm -v "$PWD:/repo" -w /repo \
docker.io/rhysd/actionlint@sha256:887a259a5a534f3c4f36cb02dca341673c6089431057242cdc931e9f133147e9 \
-color
docker run --rm -v "$PWD:/repo" -w /repo \
ghcr.io/gitleaks/gitleaks@sha256:cdbb7c955abce02001a9f6c9f602fb195b7fadc1e812065883f695d1eeaba854 \
detect --source=/repo --config=/repo/.gitleaks.toml --redact --verbose
uvx --from zizmor==1.26.1 zizmor .github/workflows
uvx --from semgrep==1.168.0 semgrep scan --config p/ci --config p/secrets --error --metrics=off .Some settings are not fully represented by repository files.
Recommended settings:
- Settings → Code security and analysis
- Enable Dependency graph.
- Enable Dependabot alerts.
- Enable Dependabot security updates.
- Enable Secret scanning.
- Enable Push protection.
- Enable Private vulnerability reporting if available.
- Enable GitHub CodeQL default setup for both Python and GitHub Actions.
- Settings → Actions → General
- Allow GitHub Actions to run.
- Keep workflow permissions read-only unless a workflow explicitly needs writes.
- Settings → Branches / Rulesets
- Protect
mainor add a ruleset requiring pull requests and passing CI before merge. - Recommended required checks after the first public run:
Python 3.11,Python 3.12,Gitleaks,actionlint,Python static/security checks,ShellCheck,Analyze (python), andAnalyze (actions).
- Protect
- Settings → General
- Delete head branches after merge.
- Keep wiki and projects disabled unless project documentation actually moves there.
- The security workflow intentionally uses pinned action SHAs and pinned Docker image digests. When Dependabot opens an update PR for actions or scanner config, review both the human-readable version and the pinned SHA/digest before merging.
- GitHub-native Secret scanning and Push protection are separate from CI-based Gitleaks/Semgrep scanning. Confirm both after the visibility change.
- CodeQL uses GitHub's default setup rather than a checked-in advanced workflow, avoiding duplicate configurations while keeping Python and GitHub Actions analysis active.
- Public repositories receive GitHub code security features that may not be available while the repository is private on a free plan.