💻 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.

0.0
0Reviews
P
August 29, 2026

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.

Reviews (0)

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