CtrlK
BlogDocsLog inGet started
Tessl Logo

uinaf/gh-setup

Set up or align GitHub repo settings, branch/ruleset policy, templates, Actions hardening, Environments, release workflows, and deploy workflows for continuously publishable or deployable repositories.

97

1.35x
Quality

100%

Does it follow best practices?

Impact

96%

1.35x

Average score across 7 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-7/

{
  "context": "Tests whether the agent uses environment-scoped runtime secrets, OIDC for deploy identity (not long-lived credentials), correct secret hygiene in workflow steps, and minimal workflow permissions.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Environment-scoped runtime env",
      "description": "Keeps runtime application secrets in the production GitHub Environment or runtime secret store, rather than referencing repository-level `secrets.*` directly from the deploy step",
      "max_score": 12
    },
    {
      "name": "op:// references in template",
      "description": "An env template file is committed to the repo containing secret-store references (not plaintext secrets), e.g. `secret://production/api/DATABASE_URL` format",
      "max_score": 8
    },
    {
      "name": "OIDC for cloud credentials",
      "description": "Uses an OIDC-backed provider identity mechanism for deploy access, NOT long-lived provider credentials in repository secrets",
      "max_score": 12
    },
    {
      "name": "id-token write at job level",
      "description": "The deploy job grants `id-token: write` permission at the job level (not at the workflow root), and the workflow root uses `contents: read` only",
      "max_score": 9
    },
    {
      "name": "Root permissions minimal",
      "description": "The workflow-level `permissions:` block grants only `contents: read` (or is absent and the job-level grants are used exclusively)",
      "max_score": 7
    },
    {
      "name": "Production environment declared",
      "description": "The secret-bearing deploy job declares the production GitHub Environment before loading deploy credentials or runtime secrets",
      "max_score": 10
    },
    {
      "name": "Post-deploy handoff credential isolation",
      "description": "Any monitoring, notification, synthetic-check, or incident handoff job after deploy has read-only permissions and asserts cloud/provider credential variables are absent",
      "max_score": 10
    },
    {
      "name": "No secrets as CLI flags",
      "description": "Secret values are passed to commands via environment variables (the `env:` block), NOT as positional or named command-line arguments",
      "max_score": 7
    },
    {
      "name": "No env file dump",
      "description": "No workflow step uses `cat`, `echo`, or `print` to output the full contents of a rendered `.env` or secrets file",
      "max_score": 7
    },
    {
      "name": "non-sensitive ids in vars",
      "description": "Non-sensitive identifiers like account IDs, project IDs, regions, service names, and environment URLs are referenced from `vars.*` (not `secrets.*`) in the workflow",
      "max_score": 7
    },
    {
      "name": "Fine-grained PAT",
      "description": "Any PAT used for cross-repo operations is stored with a scoped name (e.g. `TAP_GITHUB_TOKEN`, `OPS_TRIGGER_TOKEN`) and the explanation does NOT reference a classic `ghp_` PAT or an unscoped token",
      "max_score": 6
    },
    {
      "name": "GitHub secrets only for bootstrap",
      "description": "The written explanation or comments describe repository secrets as bootstrap-only and place production deploy/runtime secrets on GitHub Environments or the runtime secret store",
      "max_score": 5
    }
  ]
}

evals

SKILL.md

tile.json