
cache-expert
by dagger
Automation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud
SKILL.md
name: cache-expert description: 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.
Cache Expert
High-Level Architecture
The Dagger Engine serves a GraphQL-based API for building and executing DAG workflows.
Each operation takes immutable objects/scalar values as inputs and produces an immutable object/scalar value as output. "Mutability" is simulated as a DAG of these operations on immutable values, similar to functional programming.
This enables caching: since inputs are immutable and operations are deterministic, cache keys can be derived from the operation and its inputs.
Key concepts:
- ID: A scalar value that encapsulates the operation that created an object. Enables non-scalar values to be used as inputs to other operations, forming a DAG.
- Digest: A hash derived from an operation and its inputs, used for cache key computation.
- Call Cache Key: Determines whether an operation's result can be retrieved from cache.
Core API Call Anatomy
Every API call has three typed components:
- Parent - The object the operation is called on (e.g.,
Container) - Arguments - The operation's input arguments
- Return value - The result (scalar or object with an ID)
Cache Key Computation
By default, a call's cache key is a hash of:
- Operation name (e.g.,
Container.withExec) - Parent's digest
- Arguments' digests
This matches the default ID digest. See ids.md for details.
Cache Key Customization
Cache keys can be scoped differently:
- Per-client - Cached per connected client
- Per-session - Cached for the duration of a session
- Per-call - Never cached (unique each invocation)
- Custom - Arbitrary cache key logic
Object IDs vs Cache Keys
These are related but distinct:
- Call cache key - Used to look up cached results
- Returned object ID - May equal the cache key, or may be a separate operation
- Object digest - Usually matches call cache key, but can be customized (e.g., content-addressed)
Quick Reference
Jump to the right doc for your task:
| Task | Read |
|---|---|
| Understand how IDs encode operations | ids.md |
| Understand the GraphQL server implementation | dagql-api-server.md |
| Understand how results are cached | cache-storage.md |
| Understand BuildKit integration (being phased out) | buildkit-dagop.md |
| Debug a cache miss | debugging.md |
| Test cache behavior | testing.md |
Core References
Read in order to build deep expertise:
- ids.md - How IDs encode operations and derive digests
- dagql-api-server.md - The dagql GraphQL server implementation
- cache-storage.md - How dagql results are cached
- buildkit-dagop.md - BuildKit integration and its phase-out status
Optional References
Load on-demand for specific tasks:
- debugging.md - Techniques for diagnosing cache misses and unexpected invalidations
- testing.md - How to test cache behavior in the engine
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 1000以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon



