Docs

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."
}
FieldRequiredNotes
versionyesSchema version. Current: "1.0".
frameworkyesAlways "decision-stack".
preparedAtyesISO 8601 timestamp.
modeyesDominant session shape.
coverageyesCoverage per strategic area.
themesone ofStructured themes tagged by area. Use this OR chunks.
chunksone ofUntagged content blocks. Use when dimensional mapping is unclear.
openQuestionsoptionalQuestions surfaced for further exploration.
tensionsoptionalContradictions or trade-offs from the session.
rawSummaryyesHuman-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.