Write design proposals for Dagger features. Use when asked to draft, review, or iterate on Dagger design documents, RFCs, or proposals.
Guidelines for writing design proposals for Dagger features.
Always research first:
internal-docs/dagger-codegen.md, for contextcore/schema/*.gocmd/dagger/*.gocore/*.gointernal-docs/version-gating.md# Part N: Title
*Builds on [Part N-1: Title](link)*
## Table of Contents
- [Problem](#problem)
- [Solution](#solution)
- [Core Concept](#core-concept)
- [CLI](#cli)
- [Status](#status)
## Problem
Numbered, concise limitations:
1. **Short title** - One sentence explanation.
2. **Short title** - One sentence explanation.
## Solution
One paragraph summary.
## Core Concept
GraphQL type definitions with inline docstrings:
```graphql
"""
Type description here.
"""
type Example {
"""Method description."""
method(arg: String!): Result!
}
```
Go for implementation examples:
```go
func New(ws dagger.Workspace) *Example {
// ...
}
```
## CLI
Real command examples:
```bash
$ dagger command --flag
OUTPUT
```
## Status
One line.
---
- Previous: [Part N-1](link)
- Next: [Part N+1](link) or "Part N+1: Title (coming soon)"
When you have clarifying questions or notes:
When writing proposals, reference actual Dagger code:
| Topic | Location |
|---|---|
| GraphQL schema definitions | core/schema/*.go |
| CLI commands | cmd/dagger/*.go |
| Core types (Directory, File, etc.) | core/*.go |
| Engine internals | engine/*.go |
| SDK codegen | internal-docs/dagger-codegen.md, cmd/codegen/*.go |
| API version gates | internal-docs/version-gating.md, core/schema/*.go |
Example: To understand how Host.findUp works before proposing Workspace.findUp:
# Find the schema definition
grep -r "findUp" core/schema/host.go
# Find the implementation
grep -r "FindUp" core/host.go
# Create new gist
gh gist create file.md --desc "Dagger Design: Part N - Title" --public
# Update existing gist
gh gist edit GIST_ID file.md
# Post changelog comment (always do this after updates)
gh api --method POST /gists/GIST_ID/comments -f body="## Changelog
- Change 1
- Change 2"
Always post a changelog comment after updating a gist with significant changes.
Check for other Dagger skills that may help with research:
engine-debugging - Engine debugging workflows, trace inspection, cache snapshotsinternal-docs/dagger-codegen.md - SDK codegen, templates, bindingsinternal-docs/version-gating.md - schema views and public API version gatesinternal-docs/ - Cache and engine implementation references