# Step File Rules

**Purpose:** Quick reference for step file structure and compliance. See linked data files for detailed standards.

---

## File Size Limits

| Metric      | Value    |
| ----------- | -------- |
| Recommended | < 200 lines |
| Absolute Maximum | 250 lines |

**If exceeded:** Split into multiple steps or extract content to `/data/` files.

---

## Required Step Structure

```markdown
---
name: 'step-[N]-[name]'
description: '[what this step does]'

# File References (ONLY variables used in this step!)
[file references in {variable} format]
---

# Step [N]: [Name]

## STEP GOAL:
[Single sentence: what this step accomplishes]

## 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

### Role Reinforcement:
- ✅ You are a [specific role]
- ✅ We engage in collaborative dialogue, not command-response
- ✅ You bring [expertise], user brings [theirs]
- ✅ Together we produce something better

### Step-Specific Rules:
- 🎯 Focus only on [specific task]
- 🚫 FORBIDDEN to [prohibited action]
- 💬 Approach: [how to engage]

## EXECUTION PROTOCOLS:
- 🎯 [Protocol 1]
- 💾 [Protocol 2 - save/update]
- 📖 [Protocol 3 - tracking]

## CONTEXT BOUNDARIES:
- Available context: [what's available]
- Focus: [what to focus on]
- Limits: [boundaries]
- Dependencies: [what this depends on]

## Sequence of Instructions:
### 1. [Action]
[Instructions]

### N. Present MENU OPTIONS
[Menu section - see menu-handling-standards.md]

## 🚨 SYSTEM SUCCESS/FAILURE METRICS:
### ✅ SUCCESS:
[Success criteria]
### ❌ SYSTEM FAILURE:
[Failure criteria]
**Master Rule:** Skipping steps is FORBIDDEN.
```

---

## Critical Rules (Quick Reference)

### Frontmatter
- ✅ Only variables USED in the step body
- ✅ All file references use `{variable}` format
- ✅ Relative paths within workflow folder
- See: `frontmatter-standards.md`

### Menus
- ✅ Handler section MUST follow display
- ✅ "Halt and wait" in execution rules
- ✅ A/P options only when appropriate
- ✅ Non-C options redisplay menu
- See: `menu-handling-standards.md`

### Progressive Disclosure
- ✅ Only load next step when user selects 'C'
- ✅ Read entire step file before execution
- ✅ Don't create mental todos from future steps

### Continuable Workflows
- ✅ Append step number to `stepsCompleted`
- ✅ Don't hardcode full array
- See: `workflow-type-criteria.md`

---

## Data Files Reference

| File                    | Purpose                                       |
| ----------------------- | --------------------------------------------- |
| `frontmatter-standards.md` | Variables, paths, frontmatter rules        |
| `menu-handling-standards.md` | Menu patterns, handler requirements        |
| `output-format-standards.md` | Document output, template types           |
| `workflow-type-criteria.md` | Continuable, module, tri-modal decisions |
| `step-type-patterns.md` | Templates for init/middle/final/branch steps |
| `trimodal-workflow-structure.md` | Create/Edit/Validate folder structure   |

---

## Step Type Reference

| Step Type           | Template/Reference                          |
| ------------------- | ------------------------------------------- |
| Init (non-continuable) | Auto-proceed, no continuation logic      |
| Init (continuable)  | `step-01-init-continuable-template.md`      |
| Continuation (01b)  | `step-1b-template.md`                        |
| Middle (standard)   | A/P/C menu, collaborative content           |
| Middle (simple)     | C only menu, no A/P                         |
| Branch/Conditional  | Custom menu options, routing to different steps |
| Validation sequence | Auto-proceed through checks                 |
| Final               | No next step, completion message            |

See: `step-type-patterns.md`

---

## Frontmatter Variables

### Standard (Always Available)
- `{project-root}`
- `{project_name}`
- `{output_folder}`
- `{user_name}`
- `{communication_language}`
- `{document_output_language}`

### Module-Specific (e.g., BMB)
- `{bmb_creations_output_folder}`

### User-Defined
- New variables can be defined in steps for future steps

See: `frontmatter-standards.md`

---

## Validation Checklist

For every step file:

- [ ] File < 200 lines (250 max)
- [ ] `name` and `description` in frontmatter
- [ ] All frontmatter variables are used
- [ ] File references use `{variable}` format
- [ ] Relative paths within workflow folder
- [ ] Handler section follows menu display
- [ ] "Halt and wait" in execution rules
- [ ] A/P options appropriate for step type
- [ ] C option saves and loads next step
- [ ] Non-C options redisplay menu
- [ ] StepsCompleted appended (if continuable)
- [ ] Success/failure metrics present

---

## Quick Menu Reference

```markdown
### N. Present MENU OPTIONS

Display: "**Select:** [A] [action A] [P] [action P] [C] Continue"

#### Menu Handling Logic:
- IF A: Execute {advancedElicitationTask}, and when finished redisplay the menu
- IF P: Execute {partyModeWorkflow}, and when finished redisplay the menu
- IF C: Save content to {outputFile}, update frontmatter, then load, read entire file, then execute {nextStepFile}
- IF Any other comments or queries: help user respond then [Redisplay Menu Options](#n-present-menu-options)

#### EXECUTION RULES:
- ALWAYS halt and wait for user input after presenting menu
- ONLY proceed to next step when user selects 'C'
- After other menu items execution, return to this menu
```

---

## Common Violations

| ❌ Violation                           | ✅ Fix                                         |
| ------------------------------------- | ---------------------------------------------- |
| Unused variable in frontmatter        | Remove unused variables                        |
| Hardcoded file path                   | Use `{variable}` format                        |
| A/P menu in step 1                    | Remove A/P (inappropriate for init)            |
| Missing handler section               | Add handler after menu display                 |
| No "halt and wait" instruction        | Add to EXECUTION RULES                         |
| Hardcoded `stepsCompleted: [1,2,3]`   | Append: "update stepsCompleted to add this step" |
| File > 250 lines                      | Split into multiple steps or extract to /data/ |
| Absolute path for same-folder ref     | Use relative path or `{workflow_path}`         |

---

## When to Extract to Data Files

Extract step content to `/data/` when:
- Step file exceeds 200 lines
- Content is reference material
- Content is reused across steps
- Content is domain-specific (examples, patterns)

**Data file types:**
- `.md` - Reference documentation
- `.csv` - Structured data for lookup
- `examples/` - Reference implementations

---

## Tri-Modal Workflow Note

For Create/Edit/Validate workflows:
- Each mode has its own `steps-c/`, `steps-e/`, `steps-v/` folder
- NO shared step files (`s-*.md`) between modes
- All modes share `/data/` folder
- This prevents confusion and routing errors

See: `trimodal-workflow-structure.md`
