{"id":27881181,"url":"https://github.com/seisollc/goat","last_synced_at":"2026-02-24T17:08:12.616Z","repository":{"id":37949469,"uuid":"335318799","full_name":"SeisoLLC/goat","owner":"SeisoLLC","description":"Seiso's Grand Opinionated AutoTester (GOAT)","archived":false,"fork":false,"pushed_at":"2025-05-05T03:07:05.000Z","size":869,"stargazers_count":13,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-05T05:02:16.313Z","etag":null,"topics":["goat","governance-as-code","lint","security","seiso","standard","test"],"latest_commit_sha":null,"homepage":"https://seisollc.com","language":"Shell","has_issues":false,"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/SeisoLLC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-02-02T14:37:06.000Z","updated_at":"2025-04-24T17:28:59.000Z","dependencies_parsed_at":"2024-03-19T20:44:02.411Z","dependency_job_id":"c6dda1a9-6539-4c11-8fda-d57beedc92df","html_url":"https://github.com/SeisoLLC/goat","commit_stats":{"total_commits":79,"total_committers":10,"mean_commits":7.9,"dds":0.2784810126582279,"last_synced_commit":"0518a13ab3ac93e5793dd7142f2fba099e226ce7"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeisoLLC%2Fgoat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeisoLLC%2Fgoat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeisoLLC%2Fgoat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeisoLLC%2Fgoat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeisoLLC","download_url":"https://codeload.github.com/SeisoLLC/goat/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252442516,"owners_count":21748451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["goat","governance-as-code","lint","security","seiso","standard","test"],"created_at":"2025-05-05T05:00:28.266Z","updated_at":"2026-02-03T17:09:17.344Z","avatar_url":"https://github.com/SeisoLLC.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Grand Opinionated AutoTester (GOAT)\n\nThe Grand Opinionated AutoTester (GOAT) automatically applies Seiso's policy as code. This project is designed to be easier to understand and more opinionated\nthan other open source multi-linter projects, and easily extended to enforce Seiso policies programmatically.\n\n## Getting Started\n\n1. Create a per-repository dictionary (relative to the root of your Git repository).\n\n    ```bash\n    mkdir -p .github/etc/\n    touch .github/etc/dictionary.txt\n    ```\n\n1. Ensure your code is checked out during the GitHub Action.\n\n    ```bash\n    uses: actions/checkout@v4\n    ```\n\n1. Add the goat to your GitHub Actions workflows.\n\n    ```bash\n    uses: seisollc/goat@main\n    ```\n\n### Example\n\nTo run the goat on each PR against `main`, create the following file as `.github/workflows/pr.yml`:\n\nFor example, you could use the following to run the goat on each PR against `main`:\n\n```yml\n---\non:\n  pull_request:\n    branches:\n      - main\njobs:\n  test:\n    runs-on: Ubuntu-20.04\n    name: Test the project\n    steps:\n    - uses: actions/checkout@v4\n    - uses: seisollc/goat@main\n```\n\n#### Customizations\n\n1. Populate the custom dictionary file in `.github/etc/dictionary.txt` for any repository-specific language.\n\n    ```bash\n    $ cat \u003c\u003c EOF \u003e\u003e .github/etc/dictionary.txt\n    capricornis\n    crispus\n    EOF\n    ```\n\n1. Configure the goat to skip mypy scanning.\n\n    ```bash\n    uses: seisollc/goat@main\n    with:\n      disable_mypy: true\n    ```\n\n1. Exclude a file extension.\n\n    ```bash\n    uses: seisollc/goat@main\n    with:\n      exclude: \\.md$\n    ```\n\n1. Exclude a list of files.\n\n    ```bash\n    uses: seisollc/goat@main\n    with:\n      exclude: ^.*/(Dockerfile|Dockerfile\\.dev)$\n    ```\n\n1. Provide a linting configuration for any of the supported linters in the `.github/linters/` directory of your repository.\n\n    ```bash\n    $ mkdir -p .github/linters/\n    $ cat \u003c\u003c EOF \u003e\u003e .github/linters/.markdown-lint.yml\n    ---\n    MD013:\n      line_length: 120\n    EOF\n    ```\n\n1. Autofix code formatting errors using those linters with a built-in `fix` option. Note, this is enabled by default\n   when running locally and can create a `dirty` Git directory. You will need to manage committing and pushing any\n   changes.\n\n    ```bash\n    uses: seisollc/goat@main\n    with:\n      auto_fix: false\n    ```\n\n#### Supported Linters\n\n- actionlint\n- black\n- cfn-lint\n- cspell\n- dockerfile_lint\n- hadolint\n- jscpd\n- kubeconform\n- markdown-link-check\n- markdownlint\n- mypy\n- ruff\n- shellcheck\n- textlint\n- yamllint\n\n#### Supported Pipelines\n\n- GitHub Actions\n- Bitbucket Pipelines\n\n#### Debugging\n\nTo debug an issue with the goat, configure the log level to either `ERROR`, `WARN`, `INFO`, or `DEBUG`.\n\n```bash\nuses: seisollc/goat@main\nwith:\n  log_level: DEBUG\n```\n\n## Releases\n\nThe `goat` project does not do releases, as it is intended as a minimum expectation that evolves over time. Please refer to `main` or, in limited\nsituations, pin to the commit hash tag that is published with each commit.\n\n## GOAT Development\n\nSee [CONTRIBUTING.md](./.github/CONTRIBUTING.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseisollc%2Fgoat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseisollc%2Fgoat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseisollc%2Fgoat/lists"}