💻 Coding
Dagger Pipeline from a CI Job List (Version-Locked Modules, No Invented Actions)
Write a Dagger pipeline from a CI job list. Lock module versions. Do not invent actions or images.
0Reviews
Prompt
Act as a Dagger pipeline author who only uses a pasted CI job list. You write functions and module pins the list already names. You do not invent GitHub Actions, extra images, or unpinned modules. This is not a GitHub Actions workflow, not an Earthfile, and not a Buildkite steps file. You work only from Inputs. Do not invent stats, citations, quotes, URLs, names, IDs, or records that are not in Inputs. Inputs: - CI job list I lock (job names, commands I allow): [Jobs] - Modules I lock with versions: [Modules] - Base images I lock: [Images] - Dagger version I lock (or UNKNOWN): [Dagger] - Words I must not use: [Banned] - What I must never invent (actions, images, module versions): [Never] - Output format: [Format] - Language for comments: [Lang] - Secrets I allow as env names (or NONE): [Secrets] Generate: 1. Honesty ledger: Jobs, Modules, Images, Dagger, Secrets, Lang. Forbidden: invented actions, images, unpinned modules. 2. Module lock table: each Modules line quoted. Unlisted modules write NOT IN INPUTS. 3. Pipeline: functions named from Jobs. From images in Images only. Commands from Jobs only. 4. Secrets: env names from Secrets or NONE. No raw tokens. 5. Refuse list: on: push GitHub Actions YAML, Earthfile VERSION, Buildkite steps, :latest tags. 6. Dagger: quote Dagger or write VERSION UNKNOWN. 7. Never: do not add a publish function if Jobs omitted it. Do not invent ghcr.io. 8. Compliance pass: quote Banned and Never hits. Cut them. Format as Format. Constraints: - Dagger pipeline from Jobs and Modules only. Not GitHub Actions and not Earthfile. - Never invent actions, images, or module versions. - Only Secrets named in Inputs. - No emojis.
Instructions
Replace every [bracket] with your details before running. Works on ChatGPT, Claude, and Gemini.
Examples
Example Input
Jobs: test: go test ./... as pasted; build: go build -o /out/mailer ./cmd/mailer as pasted. publish NOT IN INPUTS. Modules: NONE (do not invent github.com/dagger/dagger/modules/golang) Images: golang:1.23.2-bookworm as pasted. alpine NOT IN INPUTS. Dagger: 0.13.3 Banned: latest, actions/checkout, Earthfile, always Never: invent GitHub Actions, invent images, invent module versions, invent publish Format: ledger + lock-table + pipeline + refuse + gaps Lang: English comments Secrets: NONE (do not invent GHCR_TOKEN)
Example Output
1. Ledger. Jobs: test go test ./...; build go build -o /out/mailer ./cmd/mailer. publish NOT IN INPUTS. Modules NONE. Images golang:1.23.2-bookworm. alpine NOT IN INPUTS. Dagger 0.13.3. Secrets NONE. Lang English. Forbidden: latest, actions/checkout, Earthfile, always, invented actions, images, modules, publish, GHCR_TOKEN.
2. Lock table. golang image <- golang:1.23.2-bookworm. Module pins NONE. alpine:latest NOT IN INPUTS.
3. Pipeline sketch (Dagger 0.13.3).
func (m *Mailer) Test(ctx context.Context) (string, error) {
return dag.Container().From("golang:1.23.2-bookworm").WithWorkdir("/src").
WithExec([]string{"go", "test", "./..."}).Stdout(ctx)
}
func (m *Mailer) Build(ctx context.Context) *dagger.File {
return dag.Container().From("golang:1.23.2-bookworm").WithWorkdir("/src").
WithExec([]string{"go", "build", "-o", "/out/mailer", "./cmd/mailer"}).File("/out/mailer")
}
// publish NOT IN INPUTS.
4. Secrets. NONE. GHCR_TOKEN not added.
5. Refuse. on: push YAML: refused. actions/checkout@v4: refused. Earthfile VERSION: refused. :latest: refused.
6. Dagger. 0.13.3 as locked.
7. Never. No publish function. No ghcr.io. No golang module pin invented.
8. Compliance. Banned hits none. Format ledger+lock-table+pipeline+refuse+gaps. Gaps: source mount path, module pins, publish registry, cache keys, secrets.
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.