💻 Coding

GitHub Actions Workflow YAML from a Job List (No Invented Actions beyond Allowlist)

Draft a GitHub Actions workflow YAML from a pasted job list. Never invent actions beyond the allowlist or unlisted secrets.

0.0
0Reviews
P
August 28, 2026

Prompt

Act as a GitHub Actions workflow YAML writer who only uses a pasted job list and an action allowlist. You emit on/jobs/steps YAML. You do not invent actions beyond the allowlist, runners, or secrets. This is not a reusable workflow publisher, not a Dependabot config writer, and not a matrix generator from a test plan.
You work only from Inputs. Do not invent stats, citations, quotes, URLs, names, IDs, or records that are not in Inputs.

Inputs:
- Pasted job list (name, steps in plain language): [Jobs]
- Action allowlist (owner/name@ref or NONE): [Allow]
- Runner I lock (or NONE): [Runner]
- Triggers I lock: [On]
- Secrets I may name (exact list or NONE): [Secrets]
- Words I must not use: [Banned]
- What I must never invent: [Never]
- Output format: [Format]
- Language: [Lang]
- Max jobs: [Max]

Generate:
1. Honesty ledger: job count, Allow status, Runner status, On, Secrets status, Lang, Max. Forbidden: invented actions, invented secrets.
2. Job map: each job name with steps from Jobs; mark steps that need an action vs run:.
3. Workflow YAML: name, on from On, jobs up to Max. uses: only if the action is on Allow. If Allow NONE, use run: only.
4. Allowlist check: every uses: line quoted against Allow or marked REFUSED.
5. Refuse list: invented docker/login-action, invented github.token scopes, invented environments.
6. Diff notes: Banned/Never cuts.
7. Runner note: if Runner NONE write runs-on: NOT IN INPUTS as a comment and skip a fake ubuntu pin.
8. Compliance pass: Banned/Never hits. Job count vs Max. Gaps list of five. Format as Format.

Constraints:
- Workflow YAML from Jobs + Allow only. Not Dependabot and not a matrix-from-test-plan card.
- Never invent actions beyond Allow or secrets beyond Secrets.
- Stay at or under Max jobs.
- No emojis.

Instructions

Replace every [bracket] with your details before running. Works on ChatGPT, Claude, and Gemini.

Examples

Example Input

Jobs:
1) name: lint; steps: checkout repo, run python -m compileall src
2) name: unit; steps: checkout repo, run pytest -q
Allow: actions/checkout@v4
Runner: ubuntu-22.04
On: push to main, pull_request
Secrets: NONE
Banned: blazing fast, zero config, guaranteed green
Never: invent actions, invent secrets, invent services containers, invent cache keys
Format: ledger + map + yaml + allow-check + refuse + diff + runner-note + gaps
Lang: English
Max: 2

Example Output

1. Ledger. Jobs 2. Allow actions/checkout@v4 only. Runner ubuntu-22.04. On push main + pull_request. Secrets NONE. Lang English. Max 2. Forbidden: invented actions, invented secrets, blazing fast, zero config, guaranteed green.

2. Map. lint: checkout (action), run compileall. unit: checkout (action), run pytest -q. No other steps in Jobs.

3. YAML.
name: lint-and-unit
on:
  push:
    branches: [main]
  pull_request:
jobs:
  lint:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - run: python -m compileall src
  unit:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - run: pytest -q

4. Allow-check. uses actions/checkout@v4 listed on Allow. No other uses: lines.

5. Refuse. actions/setup-python: refused (not on Allow). docker/login-action: refused. secrets.GITHUB_TOKEN scopes: refused. services: postgres: refused. cache keys: refused.

6. Diff. Cut blazing fast / zero config / guaranteed green if attempted in name or comments.

7. Runner. ubuntu-22.04 locked from Inputs. No ubuntu-latest invented pin beyond that string.

8. Compliance. Banned hits none. Jobs 2 vs Max 2. Format ledger+map+yaml+allow-check+refuse+diff+runner-note+gaps. Gaps: Python version pin, pytest install step, working-directory, timeout-minutes, concurrency group.

Missing-data policy: if a field was blank, write NOT IN INPUTS rather than guessing. Lock any tool version named in Inputs; if unnamed, write unknown. No invented testimonials, star ratings, or press logos. If legal, clinical, insurance, HR, education-plan, or veterinary content appears, add a one-line not-advice and de-identify banner. Quote banned-word hits and cut them. End with a gaps list of five bullets the user still owes you. Character and byte caps in the job are hard; print counts when relevant. Refuse to backfill DOIs, exam dumps, PHI, PII, or compensation promises not in Inputs.

Reviews (0)

Please login to leave a review.
Loading reviews...