一键导入
dagger-design-proposals
// Write design proposals for Dagger features. Use when asked to draft, review, or iterate on Dagger design documents, RFCs, or proposals.
// Write design proposals for Dagger features. Use when asked to draft, review, or iterate on Dagger design documents, RFCs, or proposals.
Covers Dagger Engine caching internals including cache key derivation, invalidation, and the immutable DAG model. Use when debugging cache misses, unexpected invalidations, or implementing caching-related engine features.
How to test Dagger engine changes. Covers manual e2e testing via the playground (bootstrapping a dev engine from source, running commands inside it, capturing crash logs) and running the integration test suite. Use when modifying engine code (engine/server, core/, dagql/) and needing to verify changes work. Triggers on: testing engine changes, dev engine, playground, e2e test, engine crash, debug engine, manual testing, verify engine fix.
Handle quick, repeatable Dagger repository maintenance chores. Use when the user asks for small operational changes and wants the same established edits and commit style applied quickly.
Edit dagger.gen.go output, Go templates (object.go.tmpl, defs.go.tmpl), invoke() dispatch, SDK interfaces (CodeGenerator, ClientGenerator), `dagger develop`, `dagger client install`. Keywords: codegen, SDK, bindings, templates, internal/dagger, dag.*, ModuleMainSrc
| name | dagger-design-proposals |
| description | 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:
core/schema/*.gocmd/dagger/*.gocore/*.go# 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 | cmd/codegen/*.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:
dagger-codegen - SDK codegen, templates, bindingscache-expert - Caching internals, invalidation