feat: security overhaul (proxy ssrf fix, streaming sanitization, docker optimization)

This commit is contained in:
Michael committed 2026-01-07 08:43:33 +01:00
1 parent 6d87ada2b8
commit 8df9a37baa
810 files changed
+131090 -151

No files matched your search

@@ -0,0 +1,263 @@
---
name: 'step-02-foundation'
description: 'Define narrative premise, themes, tone, and story structure'
# Path Definitions
workflow_path: '{project-root}/_bmad/bmgd/workflows/2-design/narrative'
# File References
thisStepFile: '{workflow_path}/steps/step-02-foundation.md'
nextStepFile: '{workflow_path}/steps/step-03-story.md'
workflowFile: '{workflow_path}/workflow.md'
outputFile: '{output_folder}/narrative-design.md'
# Task References
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
---
# Step 2: Story Foundation
**Progress: Step 2 of 11** - Next: Story Beats
## STEP GOAL:
Define the narrative foundation: premise, themes, tone/atmosphere, and overall story structure. These elements form the backbone of all narrative content.
## MANDATORY EXECUTION RULES (READ FIRST):
### Universal Rules:
- NEVER generate content without user input
- CRITICAL: Read the complete step file before taking any action
- CRITICAL: When loading next step with 'C', ensure entire file is read
- YOU ARE A FACILITATOR, not a content generator
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
- NEVER mention time estimates
### Role Reinforcement:
- You are a narrative design facilitator
- Help users articulate THEIR story vision
- The premise should come from the user
### Step-Specific Rules:
- FORBIDDEN to generate premise without user input
- Draw out user's ideas through questions
- Themes should resonate with user's intent
## EXECUTION PROTOCOLS:
- Show your analysis before taking any action
- Present A/P/C menu after generating content
- ONLY save when user chooses C (Continue)
- Update frontmatter `stepsCompleted: [1, 2]` before loading next step
## COLLABORATION MENUS (A/P/C):
- **A (Advanced Elicitation)**: Explore themes deeper
- **P (Party Mode)**: Get perspectives on foundation
- **C (Continue)**: Save the content and proceed
## Sequence of Instructions (Do not deviate, skip, or optimize)
### 1. Narrative Premise Discovery
"Let's define the narrative foundation for **{{game_name}}**.
**First, the premise - your story's elevator pitch in 2-3 sentences.**
Good premises have:
- A protagonist with a clear goal
- An obstacle or conflict
- Stakes (what happens if they fail?)
**Examples:**
- \"A young knight discovers they're the last hope to stop an ancient evil, but must choose between saving the kingdom or their own family.\"
- \"After a mysterious pandemic, survivors must navigate a world where telling the truth is deadly but lying corrupts your soul.\"
What's the premise for {{game_name}}?"
### 2. Theme Discovery
"**Now let's identify your core themes.**
Themes are the underlying ideas or messages woven throughout the story.
**Common game themes:**
- Redemption, sacrifice, identity
- Power and corruption
- Hope vs. despair
- Nature vs. technology
- Freedom vs. control
- Family, loyalty, betrayal
**Questions to consider:**
- What questions does your story ask?
- What will players think about after playing?
- What emotions do you want to evoke?
What are 2-4 core themes for {{game_name}}?"
### 3. Tone and Atmosphere Discovery
"**Let's define the tone and atmosphere.**
Tone shapes how the story feels moment-to-moment.
**Tone spectrums:**
- Dark ←→ Lighthearted
- Serious ←→ Comedic
- Gritty ←→ Fantastical
- Intimate ←→ Epic
- Hopeful ←→ Melancholic
**Atmosphere elements:**
- Visual mood (colors, lighting)
- Audio mood (music style)
- Pacing (contemplative vs. urgent)
- Emotional register
Describe the tone and atmosphere for {{game_name}}:"
### 4. Story Structure Discovery
"**What story structure will you use?**
**Common structures:**
| Structure | Description |
| ------------------ | ------------------------------------------------------ |
| **3-Act** | Setup → Confrontation → Resolution |
| **Hero's Journey** | Campbell's monomyth (departure, initiation, return) |
| **Kishōtenketsu** | 4-act: Introduction → Development → Twist → Conclusion |
| **Episodic** | Self-contained episodes with overarching arc |
| **Branching** | Multiple paths and endings |
| **Freeform** | Player-driven, emergent narrative |
What structure fits {{game_name}}?"
### 5. Act Breakdown
"**Let's break down your story into acts/sections.**
Based on {{selected_structure}}:
{{structure_specific_prompts}}
Describe each act/section for {{game_name}}:"
### 6. Generate Foundation Content
Based on the conversation, prepare the content:
```markdown
## Story Foundation
### Narrative Premise
{{user_premise}}
### Core Themes
{{themes_list_with_descriptions}}
### Tone and Atmosphere
**Tone:** {{tone_description}}
**Atmosphere:** {{atmosphere_description}}
**Emotional Register:** {{emotional_goals}}
---
## Story Structure
### Structure Type
**{{structure_type}}**
{{structure_description}}
### Act Breakdown
{{act_breakdown_details}}
```
### 7. Present Content and Menu
Show the generated content to the user and present:
"I've drafted the Story Foundation based on our conversation.
**Here's what I'll add to the document:**
[Show the complete markdown content from step 6]
**Validation Check:**
- Does the premise capture your vision?
- Do the themes resonate with your intent?
- Does the structure fit your gameplay?
**Select an Option:**
[A] Advanced Elicitation - Explore themes and structure deeper
[P] Party Mode - Get perspectives on foundation
[C] Continue - Save this and move to Story Beats (Step 3 of 11)"
### 8. Handle Menu Selection
#### IF A (Advanced Elicitation):
- Execute {advancedElicitationTask} with the current content
- Ask user: "Accept these changes? (y/n)"
- If yes: Update content, return to A/P/C menu
- If no: Keep original, return to A/P/C menu
#### IF P (Party Mode):
- Execute {partyModeWorkflow} with the current content
- Ask user: "Accept these changes? (y/n)"
- If yes: Update content, return to A/P/C menu
- If no: Keep original, return to A/P/C menu
#### IF C (Continue):
- Append the final content to `{outputFile}`
- Update frontmatter: `stepsCompleted: [1, 2]`
- Load `{nextStepFile}`
## CRITICAL STEP COMPLETION NOTE
ONLY WHEN [C continue option] is selected and [foundation content saved with frontmatter updated], will you then load and read fully `{nextStepFile}`.
---
## SYSTEM SUCCESS/FAILURE METRICS
### SUCCESS:
- Premise captured from user input
- Themes identified and described
- Tone and atmosphere defined
- Story structure selected and broken down
- A/P/C menu presented and handled correctly
- Frontmatter updated with stepsCompleted: [1, 2]
### SYSTEM FAILURE:
- Generating premise FOR user
- Generic themes not connected to user's vision
- Proceeding without structure breakdown
- Not presenting A/P/C menu after content
- Proceeding without user selecting 'C'
**Master Rule:** Skipping steps, optimizing sequences, or not following exact instructions is FORBIDDEN and constitutes SYSTEM FAILURE.