# Context Operation Workflows

**Purpose**: Detailed interactive workflows for all context operations

**Last Updated**: 2026-01-06

---

## Extract Workflow (Interactive)

### Stage 1: Read Source
```
/context extract from https://react.dev/hooks
  ↓
Agent: "Reading source (8,500 lines)...
Analyzing content for extractable items..."
```

### Stage 2: Analyze & Categorize
```
Agent: "Analysis complete.

Found 12 core concepts:
  - useState (state management)
  - useEffect (side effects)
  - useContext (context consumption)
  ... (9 more)

Found 8 common errors:
  - Hooks called conditionally
  - Hooks in loops
  - Hooks outside components
  ... (5 more)

Found 3 workflows:
  - Setting up custom hooks
  - Debugging hook issues
  - Testing components with hooks"
```

### Stage 3: Select Category (APPROVAL REQUIRED)
```
Agent: "Which category should this go in?
  [1] development/
  [2] core/
  [3] Create new category: ___

Select items to extract:
  Concepts:
    ✓ [A] useState
    ✓ [B] useEffect
    ✓ [C] useContext
    ... [D-L] (9 more)
  
  Errors:
    ✓ [M] Hooks called conditionally
    ✓ [N] Hooks in loops
    ... [O-T] (6 more)
  
  Guides:
    ✓ [U] Setting up custom hooks
    ✓ [V] Debugging hook issues
    ✓ [W] Testing components

Type items (A B M or 'all') + category (1/2/3):"

User: "all 1"
```

### Stage 4: Preview (APPROVAL REQUIRED)
```
Agent: "Would create in development/:

  concepts/use-state.md (45 lines)
  concepts/use-effect.md (52 lines)
  concepts/use-context.md (38 lines)
  ... (9 more concept files)
  
  errors/react-hooks-errors.md (124 lines)
    - 8 errors grouped in one file
  
  guides/custom-hooks.md (87 lines)
  guides/debugging-hooks.md (65 lines)
  guides/testing-hooks.md (72 lines)

Total: 15 files, ~850 lines

Preview specific file? (type filename or 'skip')
Approve? (yes/no/preview):"

User: "preview use-state.md"

Agent: [Shows first 30 lines of use-state.md]

User: "yes"
```

### Stage 5-7: Create, Update, Report
```
Agent: "Creating files...
✅ Extracted 20 items into development/
📄 Created 15 files
📊 Updated development/README.md

Files created:
  - development/concepts/ (12 files)
  - development/errors/react-hooks-errors.md
  - development/guides/ (3 files)"
```

---

## Organize Workflow (Interactive)

### Stage 1-2: Scan & Categorize
```
/context organize development/
  ↓
Agent: "Scanning development/ (23 files, flat structure)...

Categorizing by function..."
```

### Stage 3: Resolve Conflicts (APPROVAL REQUIRED)
```
Agent: "Categorization plan:

Clear categorization (18 files):
  concepts/ (8 files):
    ✓ authentication.md → concepts/authentication.md
    ✓ state-management.md → concepts/state-management.md
    ✓ caching.md → concepts/caching.md
    ... (5 more)
  
  examples/ (5 files):
    ✓ jwt-example.md → examples/jwt-example.md
    ✓ hooks-example.md → examples/hooks-example.md
    ... (3 more)
  
  guides/ (5 files):
    ✓ setting-up-auth.md → guides/setting-up-auth.md
    ... (4 more)

Ambiguous files (5 - need your input):
  
  [?] api-design.md (contains concepts AND step-by-step guide)
      Content: Explains REST principles (concept) + how to design endpoints (guide)
      → [A] Split into:
            concepts/api-design.md (REST principles)
            guides/api-design-guide.md (how to design)
      → [B] Keep as concepts/api-design.md (primary: concepts)
      → [C] Keep as guides/api-design.md (primary: guide)
  
  [?] error-handling.md (contains guide AND error examples)
      Content: How to handle errors (guide) + common error patterns (errors)
      → [D] Split into:
            guides/error-handling.md (how to handle)
            errors/common-errors.md (error patterns)
      → [E] Keep as guides/error-handling.md
      → [F] Keep as errors/error-handling.md
  
  [?] testing-patterns.md (contains concepts AND examples)
      → [G] Split into concepts/ + examples/
      → [H] Keep as concepts/testing-patterns.md
      → [I] Keep as examples/testing-patterns.md

Conflicts (2):
  
  [!] authentication.md → concepts/auth.md
      Target concepts/auth.md already exists (120 lines)
      → [J] Merge authentication.md into existing auth.md
      → [K] Rename to concepts/authentication-v2.md
      → [L] Skip (keep flat)
  
  [!] jwt-example.md → examples/jwt.md
      Target examples/jwt.md already exists (65 lines)
      → [M] Merge jwt-example.md into existing jwt.md
      → [N] Rename to examples/jwt-example-v2.md
      → [O] Skip (keep flat)

Select resolutions (A D G J M or 'auto' for AI suggestions):"

User: "A D G J M"
```

### Stage 4: Preview (APPROVAL REQUIRED)
```
Agent: "Preview of changes:

CREATE directories:
  development/concepts/
  development/examples/
  development/guides/
  development/lookup/
  development/errors/

MOVE files (18):
  authentication.md → concepts/authentication.md
  state-management.md → concepts/state-management.md
  ... (16 more)

SPLIT files (3):
  api-design.md →
    concepts/api-design.md (concepts section)
    guides/api-design-guide.md (guide section)
  
  error-handling.md →
    guides/error-handling.md (guide section)
    errors/common-errors.md (error examples)
  
  testing-patterns.md →
    concepts/testing-patterns.md (concepts)
    examples/testing-examples.md (examples)

MERGE files (2):
  authentication.md → concepts/auth.md (merge content)
  jwt-example.md → examples/jwt.md (merge content)

UPDATE:
  development/README.md (create navigation tables)
  Fix 47 internal references

Dry-run? (yes/no/show-diff):"

User: "dry-run"

Agent: [Simulates changes without executing, shows what would happen]

User: "yes"
```

### Stage 5-8: Backup, Execute, Update, Report
```
Agent: "Creating backup...
💾 Backup: .tmp/backup/organize-development-2026-01-06-143022/

Executing changes...
✅ Organized 23 files into function folders
📁 Created 5 new folders
🔀 Split 3 ambiguous files
🔗 Fixed 47 references
📊 Updated development/README.md

Rollback available at: .tmp/backup/organize-development-2026-01-06-143022/"
```

---

## Update Workflow (Interactive)

### Stage 1: Identify Changes (APPROVAL REQUIRED)
```
/context update for Next.js 15
  ↓
Agent: "What changed in Next.js 15?
  [A] API changes
  [B] Deprecations
  [C] New features
  [D] Breaking changes
  [E] Other (describe)

Select all that apply (A B C D or describe):"

User: "A C D"

Agent: "Please describe the changes:
  API changes: ___
  New features: ___
  Breaking changes: ___"

User: "API changes: App router is now default
New features: New metadata API, Server Actions stable
Breaking changes: Pages router requires explicit opt-in"
```

### Stage 2: Find Affected Files
```
Agent: "Searching for files referencing Next.js...

Found 5 files with 17 references:
  📄 concepts/routing.md (3 references, 145 lines)
  📄 examples/app-router-example.md (7 references, 78 lines)
  📄 guides/setting-up-nextjs.md (2 references, 132 lines)
  📄 errors/nextjs-errors.md (1 reference, 98 lines)
  📄 lookup/nextjs-commands.md (4 references, 54 lines)

Total impact: 17 references across 5 files"
```

### Stage 3: Preview Changes (APPROVAL REQUIRED)
```
Agent: "Proposed updates:

━━━ concepts/routing.md ━━━

Line 15:
  - App router is optional (use pages/ or app/ directory)
  + App router is now default in Next.js 15 (pages/ still supported with opt-in)

Line 42:
  + ## Metadata API (New in v15)
  + 
  + Next.js 15 introduces new metadata API for SEO optimization.
  + Replaces Head component with metadata exports.

Line 87:
  - **Reference**: https://nextjs.org/docs/app
  + **Reference**: https://nextjs.org/docs/15/app

━━━ examples/app-router-example.md ━━━

Line 8:
  - // Optional: use app router
  + // Default in Next.js 15+

Line 23:
  + // New: Metadata API
  + export const metadata = {
  +   title: 'My App',
  +   description: 'App description'
  + }

━━━ guides/setting-up-nextjs.md ━━━

Line 45:
  - 3. Choose router: pages/ or app/
  + 3. App router is default (use --pages flag for pages router)

━━━ errors/nextjs-errors.md ━━━

Line 67:
  + ## Migration: Next.js 14 → 15
  + 
  + **Breaking Changes**:
  + - App router is now default
  + - Pages router requires explicit opt-in
  + 
  + **Migration Steps**:
  + 1. Update to Next.js 15: `npm install next@15`
  + 2. For pages router: Add `pages: true` to next.config.js
  + 3. Update metadata: Replace Head with metadata exports
  + 
  + **Reference**: https://nextjs.org/docs/15/upgrade-guide

━━━ lookup/nextjs-commands.md ━━━

Line 12:
  - npx create-next-app@latest
  + npx create-next-app@latest  # App router default
  + npx create-next-app@latest --pages  # Pages router

Preview next file? (yes/no/show-all)
Approve changes? (yes/no/edit):"

User: "edit"

Agent: "Line-by-line approval mode.

concepts/routing.md - Line 15 change?
  - App router is optional (use pages/ or app/ directory)
  + App router is now default in Next.js 15 (pages/ still supported with opt-in)

Approve? (yes/no/modify):"

User: "yes"

[... continues for each change ...]
```

### Stage 4-8: Backup, Update, Add Migration, Validate, Report
```
Agent: "Creating backup...
💾 Backup: .tmp/backup/update-nextjs-2026-01-06-143530/

Updating files...
✅ Updated 5 files
📝 Modified 17 references
🔄 Added migration notes to errors/nextjs-errors.md
🔗 Validated all references (0 broken links)

Summary of changes:
  - concepts/routing.md: 3 updates (145 → 162 lines)
  - examples/app-router-example.md: 4 updates (78 → 89 lines)
  - guides/setting-up-nextjs.md: 1 update (132 → 133 lines)
  - errors/nextjs-errors.md: Added migration section (98 → 125 lines)
  - lookup/nextjs-commands.md: 2 updates (54 → 56 lines)

All files still under 200 line limit ✓

Rollback available at: .tmp/backup/update-nextjs-2026-01-06-143530/"
```

---

## Error Workflow (Interactive)

### Stage 1: Search Existing
```
/context error for "Cannot read property 'map' of undefined"
  ↓
Agent: "Searching existing errors for similar issues...

Found 1 similar error:
  📄 development/errors/react-errors.md (Line 45)
     ## Error: Cannot read property 'X' of undefined
     Covers: General undefined property access in React
     Frequency: common

Found 2 related errors:
  📄 development/errors/react-errors.md
     ## Error: Cannot read property 'length' of undefined
     ## Error: Undefined is not an object"
```

### Stage 2: Check Duplication (APPROVAL REQUIRED)
```
Agent: "Options:
  [A] Add as new error to react-errors.md
      (Specific case: 'map' on undefined array)
  
  [B] Update existing 'Cannot read property X' error
      (Add 'map' as common example)
  
  [C] Skip (already covered sufficiently)

Which framework/category?
  [1] React (react-errors.md)
  [2] JavaScript (js-errors.md)
  [3] General (common-errors.md)
  [4] Create new: ___

Select option + category (e.g., 'B 1'):"

User: "B 1"
```

### Stage 3: Preview (APPROVAL REQUIRED)
```
Agent: "Would update development/errors/react-errors.md:

Current (Line 45):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## Error: Cannot read property 'X' of undefined

**Symptom**:
```
TypeError: Cannot read property 'X' of undefined
```

**Cause**: Attempting to access property on undefined/null object.

**Solution**:
1. Add null check before accessing property
2. Use optional chaining (?.)
3. Provide default value

**Code**:
```jsx
// ❌ Before
const value = obj.property

// ✅ After
const value = obj?.property ?? 'default'
```

**Prevention**: Always validate data exists before accessing
**Frequency**: common
**Reference**: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_access_property
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Proposed update:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
## Error: Cannot read property 'X' of undefined

**Symptom**:
```
TypeError: Cannot read property 'X' of undefined
TypeError: Cannot read property 'map' of undefined  ← NEW
TypeError: Cannot read property 'length' of undefined  ← NEW
```

**Cause**: Attempting to access property on undefined/null object.
Common with array methods (map, filter) when data hasn't loaded.  ← NEW

**Solution**:
1. Add null check before accessing property
2. Use optional chaining (?.)
3. Provide default value (especially for arrays)  ← UPDATED

**Code**:
```jsx
// ❌ Before
const value = obj.property
const items = data.map(item => item.name)  ← NEW

// ✅ After
const value = obj?.property ?? 'default'
const items = (data || []).map(item => item.name)  ← NEW
// Or with optional chaining:
const items = data?.map(item => item.name) ?? []  ← NEW
```

**Prevention**: Always validate data exists before accessing.
For arrays, provide empty array default.  ← UPDATED

**Frequency**: common
**Reference**: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cant_access_property
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

File size: 98 lines → 105 lines (under 150 limit ✓)

Approve? (yes/no/edit):"

User: "yes"
```

### Stage 4-6: Add, Update, Report
```
Agent: "Updating development/errors/react-errors.md...

✅ Updated error in development/errors/react-errors.md
🔗 Cross-referenced with 2 related errors
📊 File size: 105 lines (under 150 limit)

Changes:
  - Added 'map' and 'length' to symptom examples
  - Updated cause to mention array methods
  - Added array-specific code examples
  - Updated prevention guidance"
```

---

## Common Patterns

### Approval Gates
All operations with `enforce="@critical_rules.approval_gate"` MUST:
1. Show clear preview of what will happen
2. Wait for explicit user input
3. Provide options (yes/no/edit/preview/dry-run)
4. Never proceed without confirmation

### Conflict Resolution
When conflicts detected:
1. Present all options clearly
2. Use letter-based selection (A/B/C)
3. Show impact of each option
4. Allow user to choose resolution

### Previews
All previews should show:
1. What will be created/modified/deleted
2. File sizes (before → after)
3. Line-by-line diffs for updates
4. Validation status (under limits, no broken links)

### Backups
Operations that modify files MUST:
1. Create backup before changes
2. Store in `.tmp/backup/{operation}-{topic}-{timestamp}/`
3. Report backup location
4. Keep backups for rollback

---

## Related

- context.md - Main command interface
- harvest.md - Harvest workflow details
- mvi-principle.md - What to extract
- compact.md - How to minimize
