Skip to content
Workflow Documentation logo

Workflow Documentation

> **Skill Purpose:** Testing workflow management, cross-department flow tracking, and SSOT integration procedures

Coverage-Creatives/zeus0installs0stars

SKILL.md

Full skill instructions

Workflow Documentation

Skill Purpose: Testing workflow management, cross-department flow tracking, and SSOT integration procedures


Core Skill Pattern

Objective: Establish comprehensive workflow documentation system with testing flow tracking, cross-department coordination, and SSOT integration.

Universal Pattern:

  1. Define workflow documentation strategy and standards
  2. Create testing workflow management procedures
  3. Establish cross-department flow tracking systems
  4. Set up SSOT integration and documentation procedures
  5. Create workflow validation and maintenance procedures

Key Decisions (Project-Specific):

  • Workflow documentation format and structure
  • Testing workflow tracking mechanisms
  • Cross-department handoff documentation standards
  • SSOT integration approach and tools
  • Workflow validation and update procedures

Project-Specific Implementation Notes

Customize per project:

  • Workflow documentation format based on project complexity
  • Testing workflow depth based on testing requirements
  • Cross-department coordination based on organizational structure
  • SSOT integration based on existing documentation systems
  • Workflow maintenance frequency based on change rate

Example Implementation (Zeus Framework Workflow Pattern)

Note: This is an example pattern using structured workflow documentation with cross-department tracking. Adapt workflow documentation and patterns based on your specific project requirements and organizational needs.

Prerequisites (Example)

  • Project structure and agent roles defined
  • Cross-department handoff procedures established
  • SSOT documentation system in place
  • Testing workflow requirements identified

Example: Workflow Documentation Implementation

Framework-Specific Example: This demonstrates workflow documentation patterns with Zeus framework. Adapt for your workflow framework and documentation requirements.

Workflow Configuration

// lib/​workflow-config.ts
export interface WorkflowConfig {
  documentation: {
    format: 'markdown' | 'json' | 'yaml';
    location: string;
    template: string;
    versioning: boolean;
  };
  tracking: {
    flowId: string;
    status: 'pending' | 'in-progress' | 'completed' | 'blocked' | 'failed';
    priority: 'low' | 'medium' | 'high' | 'critical';
    assignee: string;
    department: string;
  };
  integration: {
    ssotUpdates: boolean;
    crossDepartmentNotifications: boolean;
    automatedStatusUpdates: boolean;
  };
}

export const workflowConfig: WorkflowConfig = {
  documentation: {
    format: 'markdown',
    location: '/​workflows/',
    template: 'workflow-template.md',
    versioning: true,
  },
  tracking: {
    flowId: 'FLOW-YYYYMMDD-###',
    status: 'pending',
    priority: 'medium',
    assignee: '',
    department: '',
  },
  integration: {
    ssotUpdates: true,
    crossDepartmentNotifications: true,
    automatedStatusUpdates: true,
  },
};

Workflow Documentation Structure

// lib/​workflow-structure.ts
export interface WorkflowDocument {
  metadata: {
    id: string;
    title: string;
    description: string;
    department: string;
    priority: 'low' | 'medium' | 'high' | 'critical';
    status: 'pending' | 'in-progress' | 'completed' | 'blocked' | 'failed';
    created: string;
    updated: string;
    assignee: string;
    reviewer?: string;
  };
  flow: {
    trigger: string;
    prerequisites: string[];
    steps: WorkflowStep[];
    deliverables: string[];
    dependencies: string[];
  };
  crossDepartment: {
    handoffs: CrossDepartmentHandoff[];
    notifications: Notification[];
    approvals: Approval[];
  };
  testing: {
    testScenarios: TestScenario[];
    validationCriteria: ValidationCriteria[];
    qualityGates: QualityGate[];
  };
  ssot: {
    updates: SSOTUpdate[];
    references: string[];
    impact: string[];
  };
}

export interface WorkflowStep {
  id: string;
  title: string;
  description: string;
  assignee: string;
  department: string;
  estimatedTime: number; // hours
  dependencies: string[];
  deliverables: string[];
  status: 'pending' | 'in-progress' | 'completed' | 'blocked';
  notes?: string;
}

export interface CrossDepartmentHandoff {
  from: string;
  to: string;
  description: string;
  deliverables: string[];
  approvalRequired: boolean;
  status: 'pending' | 'approved' | 'rejected';
}

export interface TestScenario {
  id: string;
  name: string;
  description: string;
  type: 'unit' | 'integration' | 'e2e' | 'security' | 'performance';
  priority: 'low' | 'medium' | 'high';
  status: 'pending' | 'in-progress' | 'passed' | 'failed';
  assignee: string;
}

Testing Workflow Management

// lib/​testing-workflow.ts
export class TestingWorkflowManager {
  private workflows: Map<string, WorkflowDocument> = new Map();
  
  static createTestingWorkflow(
    title: string,
    description: string,
    department: string,
    testType: 'unit' | 'integration' | 'e2e' | 'security' | 'performance'
  ): WorkflowDocument {
    const workflowId = `TEST-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
    
    const workflow: WorkflowDocument = {
      metadata: {
        id: workflowId,
        title,
        description,
        department,
        priority: 'medium',
        status: 'pending',
        created: new Date().toISOString(),
        updated: new Date().toISOString(),
        assignee: '',
      },
      flow: {
        trigger: `Testing request for ${testType}`,
        prerequisites: [
          'Code available for testing',
          'Test environment prepared',
          'Test data available',
        ],
        steps: this.generateTestingSteps(testType),
        deliverables: [
          'Test plan',
          'Test cases',
          'Test results',
          'Test report',
        ],
        dependencies: [],
      },
      crossDepartment: {
        handoffs: this.generateHandoffs(testType),
        notifications: [],
        approvals: [],
      },
      testing: {
        testScenarios: [],
        validationCriteria: this.generateValidationCriteria(testType),
        qualityGates: this.generateQualityGates(testType),
      },
      ssot: {
        updates: [],
        references: [],
        impact: [],
      },
    };
    
    return workflow;
  }
  
  private static generateTestingSteps(testType: string): WorkflowStep[] {
    const baseSteps = [
      {
        id: '1',
        title: 'Test Planning',
        description: 'Create comprehensive test plan',
        assignee: '',
        department: 'QA & Security',
        estimatedTime: 4,
        dependencies: [],
        deliverables: ['Test plan document'],
        status: 'pending',
      },
      {
        id: '2',
        title: 'Test Environment Setup',
        description: 'Prepare test environment and data',
        assignee: '',
        department: 'QA & Security',
        estimatedTime: 2,
        dependencies: ['1'],
        deliverables: ['Environment ready', 'Test data prepared'],
        status: 'pending',
      },
      {
        id: '3',
        title: 'Test Execution',
        description: 'Execute test cases and scenarios',
        assignee: '',
        department: 'QA & Security',
        estimatedTime: 8,
        dependencies: ['1', '2'],
        deliverables: ['Test results', 'Execution logs'],
        status: 'pending',
      },
      {
        id: '4',
        title: 'Test Reporting',
        description: 'Generate comprehensive test report',
        assignee: '',
        department: 'QA & Security',
        estimatedTime: 2,
        dependencies: ['3'],
        deliverables: ['Test report', 'Metrics summary'],
        status: 'pending',
      },
    ];
    
    return baseSteps;
  }
  
  private static generateHandoffs(testType: string): CrossDepartmentHandoff[] {
    const handoffs: CrossDepartmentHandoff[] = [];
    
    // Common handoffs
    handoffs.push({
      from: 'QA & Security',
      to: 'Architecture',
      description: 'Infrastructure and deployment testing requirements',
      deliverables: ['Test environment specifications'],
      approvalRequired: false,
      status: 'pending',
    });
    
    if (testType === 'security') {
      handoffs.push({
        from: 'QA & Security',
        to: 'Data',
        description: 'RLS policy security review',
        deliverables: ['Security review findings', 'RLS recommendations'],
        approvalRequired: true,
        status: 'pending',
      });
    }
    
    if (testType === 'e2e' || testType === 'performance') {
      handoffs.push({
        from: 'QA & Security',
        to: 'UI',
        description: 'UI component testing and accessibility validation',
        deliverables: ['UI test results', 'Accessibility compliance report'],
        approvalRequired: false,
        status: 'pending',
      });
    }
    
    return handoffs;
  }
  
  private static generateValidationCriteria(testType: string): ValidationCriteria[] {
    const criteria: ValidationCriteria[] = [
      {
        id: '1',
        name: 'Test Coverage',
        description: 'Minimum test coverage requirements met',
        threshold: '80%',
        mandatory: true,
      },
      {
        id: '2',
        name: 'Test Execution',
        description: 'All tests executed without errors',
        threshold: '100%',
        mandatory: true,
      },
    ];
    
    if (testType === 'performance') {
      criteria.push({
        id: '3',
        name: 'Performance Metrics',
        description: 'Core Web Vitals within acceptable thresholds',
        threshold: 'LCP < 2.5s, FID < 100ms, CLS < 0.1',
        mandatory: true,
      });
    }
    
    if (testType === 'security') {
      criteria.push({
        id: '3',
        name: 'Security Scan',
        description: 'No critical or high severity vulnerabilities',
        threshold: '0 critical/​high',
        mandatory: true,
      });
    }
    
    return criteria;
  }
  
  private static generateQualityGates(testType: string): QualityGate[] {
    const gates: QualityGate[] = [
      {
        id: '1',
        name: 'Test Plan Review',
        description: 'Test plan reviewed and approved',
        required: true,
        status: 'pending',
      },
      {
        id: '2',
        name: 'Environment Validation',
        description: 'Test environment validated and ready',
        required: true,
        status: 'pending',
      },
    ];
    
    return gates;
  }
}

Cross-Department Flow Tracking

// lib/​flow-tracking.ts
export class FlowTracker {
  private activeFlows: Map<string, FlowState> = new Map();
  
  static createFlow(
    id: string,
    title: string,
    type: 'testing' | 'development' | 'deployment' | 'security',
    department: string
  ): FlowState {
    const flow: FlowState = {
      id,
      title,
      type,
      department,
      status: 'pending',
      currentStep: 0,
      totalSteps: 0,
      startTime: null,
      endTime: null,
      assignee: '',
      steps: [],
      crossDepartmentHandoffs: [],
      ssotUpdates: [],
    };
    
    this.activeFlows.set(id, flow);
    return flow;
  }
  
  static updateFlowStatus(
    flowId: string,
    status: 'pending' | 'in-progress' | 'completed' | 'blocked' | 'failed',
    notes?: string
  ): void {
    const flow = this.activeFlows.get(flowId);
    if (!flow) return;
    
    flow.status = status;
    flow.updated = new Date().toISOString();
    
    if (notes) {
      flow.notes = flow.notes ? `${flow.notes}\n${new Date().toISOString()}: ${notes}` : notes;
    }
    
    if (status === 'in-progress' && !flow.startTime) {
      flow.startTime = new Date().toISOString();
    }
    
    if (status === 'completed' || status === 'failed') {
      flow.endTime = new Date().toISOString();
    }
    
    // Notify cross-department stakeholders
    this.notifyStakeholders(flow);
  }
  
  static addCrossDepartmentHandoff(
    flowId: string,
    fromDepartment: string,
    toDepartment: string,
    deliverables: string[]
  ): void {
    const flow = this.activeFlows.get(flowId);
    if (!flow) return;
    
    const handoff: CrossDepartmentHandoff = {
      id: `HANDOFF-${Date.now()}`,
      from: fromDepartment,
      to: toDepartment,
      deliverables,
      status: 'pending',
      created: new Date().toISOString(),
      completed: null,
    };
    
    flow.crossDepartmentHandoffs.push(handoff);
    
    // Notify target department
    this.notifyDepartment(toDepartment, handoff);
  }
  
  static completeHandoff(flowId: string, handoffId: string): void {
    const flow = this.activeFlows.get(flowId);
    if (!flow) return;
    
    const handoff = flow.crossDepartmentHandoffs.find(h => h.id === handoffId);
    if (handoff) {
      handoff.status = 'completed';
      handoff.completed = new Date().toISOString();
    }
  }
  
  private static notifyStakeholders(flow: FlowState): void {
    // Implementation for notifying stakeholders about flow status changes
    console.log(`Flow ${flow.id} status updated to ${flow.status}`);
    
    // Send notifications to relevant departments
    flow.crossDepartmentHandoffs.forEach(handoff => {
      if (handoff.status === 'pending') {
        this.notifyDepartment(handoff.to, handoff);
      }
    });
  }
  
  private static notifyDepartment(department: string, handoff: CrossDepartmentHandoff): void {
    // Implementation for department-specific notifications
    console.log(`Notification sent to ${department}: Handoff ${handoff.id} - ${handoff.description}`);
  }
  
  static getFlowMetrics(department?: string): FlowMetrics {
    const flows = Array.from(this.activeFlows.values());
    const filteredFlows = department ? flows.filter(f => f.department === department) : flows;
    
    return {
      total: filteredFlows.length,
      byStatus: {
        pending: filteredFlows.filter(f => f.status === 'pending').length,
        inProgress: filteredFlows.filter(f => f.status === 'in-progress').length,
        completed: filteredFlows.filter(f => f.status === 'completed').length,
        blocked: filteredFlows.filter(f => f.status === 'blocked').length,
        failed: filteredFlows.filter(f => f.status === 'failed').length,
      },
      byType: {
        testing: filteredFlows.filter(f => f.type === 'testing').length,
        development: filteredFlows.filter(f => f.type === 'development').length,
        deployment: filteredFlows.filter(f => f.type === 'deployment').length,
        security: filteredFlows.filter(f => f.type === 'security').length,
      },
      averageDuration: this.calculateAverageDuration(filteredFlows),
    };
  }
  
  private static calculateAverageDuration(flows: FlowState[]): number {
    const completedFlows = flows.filter(f => f.startTime && f.endTime);
    if (completedFlows.length === 0) return 0;
    
    const totalDuration = completedFlows.reduce((total, flow) => {
      const start = new Date(flow.startTime).getTime();
      const end = new Date(flow.endTime).getTime();
      return total + (end - start);
    }, 0);
    
    return totalDuration / completedFlows.length / (1000 * 60 * 60); // Convert to hours
  }
}

SSOT Integration

// lib/​ssot-integration.ts
export class SSOTIntegration {
  static updateSSOTDocument(
    documentPath: string,
    updateType: 'create' | 'update' | 'delete',
    content: any,
    workflowId: string
  ): SSOTUpdate {
    const update: SSOTUpdate = {
      id: `SSOT-${Date.now()}`,
      documentPath,
      updateType,
      content,
      workflowId,
      timestamp: new Date().toISOString(),
      status: 'pending',
      applied: false,
    };
    
    // Apply the update to SSOT
    this.applySSOTUpdate(update);
    
    return update;
  }
  
  private static applySSOTUpdate(update: SSOTUpdate): void {
    try {
      // Implementation for applying updates to SSOT documents
      console.log(`Applying SSOT update: ${update.updateType} to ${update.documentPath}`);
      
      // Update the document
      if (update.updateType === 'create') {
        this.createSSOTDocument(update);
      } else if (update.updateType === 'update') {
        this.updateSSOTDocument(update);
      } else if (update.updateType === 'delete') {
        this.deleteSSOTDocument(update);
      }
      
      update.status = 'completed';
      update.applied = true;
      update.appliedAt = new Date().toISOString();
      
    } catch (error) {
      update.status = 'failed';
      update.error = (error as Error).message;
      console.error(`SSOT update failed: ${update.error}`);
    }
  }
  
  private static createSSOTDocument(update: SSOTUpdate): void {
    // Implementation for creating SSOT documents
    console.log(`Creating SSOT document: ${update.documentPath}`);
  }
  
  private static updateSSOTDocument(update: SSOTUpdate): void {
    // Implementation for updating SSOT documents
    console.log(`Updating SSOT document: ${update.documentPath}`);
  }
  
  private static deleteSSOTDocument(update: SSOTUpdate): void {
    // Implementation for deleting SSOT documents
    console.log(`Deleting SSOT document: ${update.documentPath}`);
  }
  
  static validateSSOTConsistency(): SSOTValidationResult {
    const issues: string[] = [];
    
    // Check for orphaned references
    // Check for broken links
    // Check for outdated information
    
    return {
      isValid: issues.length === 0,
      issues,
      lastValidated: new Date().toISOString(),
    };
  }
}

Workflow Documentation Templates

# Testing Workflow Template

## Metadata
- **Workflow ID:** {workflowId}
- **Title:** {title}
- **Department:** {department}
- **Priority:** {priority}
- **Assignee:** {assignee}
- **Status:** {status}
- **Created:** {created}
- **Updated:** {updated}

## Flow Description
{description}

## Prerequisites
{prerequisites}

## Steps
{steps}

## Deliverables
{deliverables}

## Cross-Department Handoffs
{handoffs}

## Testing Requirements
{testing}

## SSOT Updates
{ssot}

Best Practices

  1. Consistent formatting - Use standardized templates for all workflow documentation
  2. Real-time tracking - Update workflow status as work progresses
  3. Cross-department coordination - Document all handoffs and dependencies
  4. SSOT integration - Keep SSOT documents synchronized with workflow changes
  5. Quality validation - Validate workflow completeness and accuracy

Stop Conditions

STOP and escalate if:

  • Workflow requirements unclear or incomplete
  • Cross-department dependencies not documented
  • SSOT integration strategy missing
  • Workflow tracking system not established

Skill Version: 1.0.0