Context bundles
A context bundle is the JSON artefact produced by the Decision Stack skill. It travels from the extraction tool (Claude Code plugin, Gemini Gem, Custom GPT) into Luna, which generates a Decision Stack from it.
This page is the canonical schema. Tool-side reference: lunastak/tools/docs/bundle-format.md.
Top-level shape
{
"version": "1.0",
"framework": "decision-stack",
"preparedAt": "2026-05-21T10:00:00Z",
"mode": "context_dump | exploration | deep_dive | gap_analysis",
"coverage": { ... },
"themes": [ ... ],
"openQuestions": [ ... ],
"tensions": [ ... ],
"rawSummary": "Plain text summary of everything captured."
}
| Field | Required | Notes |
|---|---|---|
version | yes | Schema version. Current: "1.0". |
framework | yes | Always "decision-stack". |
preparedAt | yes | ISO 8601 timestamp. |
mode | yes | Dominant session shape. |
coverage | yes | Coverage per strategic area. |
themes | one of | Structured themes tagged by area. Use this OR chunks. |
chunks | one of | Untagged content blocks. Use when dimensional mapping is unclear. |
openQuestions | optional | Questions surfaced for further exploration. |
tensions | optional | Contradictions or trade-offs from the session. |
rawSummary | yes | Human-readable summary. |
Strategic area keys
Coverage and themes use these ten keys. They map to the ten areas:
CUSTOMER_MARKET · PROBLEM_OPPORTUNITY · VALUE_PROPOSITION · COMPETITIVE_LANDSCAPE · BUSINESS_MODEL_ECONOMICS · GO_TO_MARKET · PRODUCT_EXPERIENCE · CAPABILITIES_ASSETS · RISKS_CONSTRAINTS · STRATEGIC_INTENT
Coverage
"coverage": {
"CUSTOMER_MARKET": { "level": "rich", "sourceCount": 3 },
"PROBLEM_OPPORTUNITY": { "level": "adequate", "sourceCount": 2 },
"VALUE_PROPOSITION": { "level": "partial", "sourceCount": 1 },
"COMPETITIVE_LANDSCAPE":{ "level": "empty", "sourceCount": 0 }
}
level is one of rich, adequate, partial, empty.
Themes — preferred when areas map cleanly
"themes": [
{
"area": "CUSTOMER_MARKET",
"theme": "Short theme title",
"evidence": ["Key point or quote from source", "Another supporting point"],
"confidence": "HIGH"
}
]
confidence is HIGH, MEDIUM, or LOW.
Chunks — use when areas are ambiguous
"chunks": [
{
"topic": "Short descriptive title",
"content": "Full explanation of this strategic theme, with evidence and context.",
"sources": ["Document name", "Conversation topic"]
}
]
Luna applies dimensional analysis automatically when chunks is used.
Open questions
"openQuestions": [
{
"area": "GO_TO_MARKET",
"question": "What does the ideal distribution partner actually provide?",
"why": "Events validate demand but distribution architecture is undefined."
}
]
These become Explore Next items in Luna.
Tensions
"tensions": [
{
"tension": "$144k to $1m requires 7x growth but team is 9 people.",
"areas": ["BUSINESS_MODEL_ECONOMICS", "CAPABILITIES_ASSETS"]
}
]
Importing into Luna
Upload the bundle through the Luna interface. Luna processes each fragment, reconciles it against your existing knowledgebase, and updates the Decision Stack. Conflicts are flagged for review, not silently overwritten.
Secrets
Bundles must not contain secrets. The skill redacts before emitting; downstream tools (including Luna) treat any [REDACTED:*] placeholder as opaque.