Claude-skill-registry development-workflow-orchestrator
Development Workflow Orchestrator
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/development-workflow-orchestrator" ~/.claude/skills/majiayu000-claude-skill-registry-development-workflow-orchestrator && rm -rf "$T"
skills/data/development-workflow-orchestrator/SKILL.mdDevelopment Workflow Orchestrator
Version: 1.0.0 Created: 2026-01-05 Category: workspace-hub Related Skills: sparc-workflow, knowledge-base-system, ai-questioning-pattern
Overview
Orchestrates the complete development workflow:
user_prompt.md → YAML configuration → pseudocode → TDD → implementation → execution. This skill automates the systematic approach to feature development defined in DEVELOPMENT_WORKFLOW.md, ensuring consistency and quality across all 26+ repositories.
Purpose
Automate and enforce the 6-phase development workflow:
- User Requirements (user_prompt.md - user-controlled)
- YAML Configuration (AI-generated, structured input)
- Pseudocode Review (AI-generated, user-approved)
- TDD Implementation (tests first, then code)
- Code Implementation (following pseudocode exactly)
- Bash Execution (YAML-driven, direct execution)
When to Use
Trigger this skill for:
- Any new feature implementation
- Any significant code changes
- Data analysis pipelines
- API development
- Workflow automation
- Module creation
Examples:
- "Implement CSV data analysis with interactive HTML reports"
- "Create API endpoint for user authentication"
- "Add bulk data processing pipeline"
- "Build monitoring dashboard"
Workflow Phases
Phase 1: User Requirements (READ ONLY)
File:
user_prompt.md
AI Actions: ✅ DO:
- READ the file thoroughly
- ASK clarifying questions (MANDATORY)
- WAIT for user approval
- UNDERSTAND all requirements completely
❌ DON'T:
- Edit user_prompt.md (only user edits)
- Make assumptions about requirements
- Skip the questioning phase
- Proceed without explicit approval
Question Template:
I've reviewed your requirements in user_prompt.md. Before proceeding, I need clarification on: 1. **Scope:** [Specific question about what's included/excluded] 2. **Technical approach:** [Question about implementation choices] 3. **Edge cases:** [How to handle specific scenarios] 4. **Performance:** [Any specific requirements or constraints] Please provide guidance before I generate the YAML configuration.
Example Interaction:
USER: user_prompt.md created with "Analyze CSV data and generate report" AI: Thank you for the requirements. Before generating YAML config: 1. **Data validation:** Should we validate CSV structure before processing? What columns are required? 2. **Statistics:** You mentioned "summary statistics" - which ones exactly? - Mean, median, mode, standard deviation? - Percentiles (25th, 50th, 75th)? - All of the above? 3. **Output format:** For the HTML report: - Should it be standalone or require external assets? - Dark mode support needed? - Any specific visualization preferences? 4. **Error handling:** If CSV is malformed: - Skip problematic rows and continue? - Fail immediately with error? - Attempt auto-fix?
Phase 2: YAML Configuration Generation
Output:
config/input/feature-name-YYYYMMDD.yaml
Template: templates/input_config.yaml
AI generates structured configuration:
metadata: feature: "csv-data-analysis" created: "2026-01-05" status: "draft" author: "user" requirements: input: - type: "csv" - path_type: "relative" - max_size_mb: 100 - required_columns: ["id", "timestamp", "value"] processing: - calculate_statistics: true - statistics_types: - "mean" - "median" - "std" - "quantiles" - validation: - check_missing_values: true - check_data_types: true output: - format: "html" - visualization: "plotly" # MANDATORY: interactive only - interactive: true - export_json: true - standalone: true constraints: - max_response_time_sec: 5 - memory_limit_mb: 512 modules: - data_loader - statistics_calculator - validation - visualization_generator - report_builder tests: - test_csv_loading - test_statistics_calculation - test_validation - test_report_generation - test_performance_constraint execution: entry_point: "src/pipelines/csv_analysis_pipeline.py" bash_command: "python src/pipelines/csv_analysis_pipeline.py --config config/input/csv-data-analysis-20260105.yaml"
Validation Checklist:
- All parameters explicitly defined
- No hardcoded paths (use relative)
- Validation rules specified
- Test coverage defined
- Execution command provided
- Follows HTML_REPORTING_STANDARDS (interactive plots only)
Phase 3: Pseudocode Review
Output:
docs/pseudocode/feature-name.md
Template: templates/pseudocode.md
AI generates implementation plan:
# Pseudocode: CSV Data Analysis Pipeline ## Module: DataLoader
FUNCTION load_csv(file_path, config): VALIDATE file_path is relative CHECK file_size <= config.max_size_mb READ csv_data FROM file_path
IF validation_enabled: VALIDATE required_columns exist VALIDATE data_types are correct
IF validation_fails: RAISE ValidationError with details
RETURN csv_data
## Module: StatisticsCalculator
FUNCTION calculate_statistics(data, config): statistics = empty_dictionary
FOR EACH statistic_type IN config.statistics_types: CASE statistic_type: WHEN "mean": statistics["mean"] = CALCULATE_MEAN(data) WHEN "median": statistics["median"] = CALCULATE_MEDIAN(data) WHEN "std": statistics["std"] = CALCULATE_STD(data) WHEN "quantiles": statistics["quantiles"] = CALCULATE_QUANTILES(data, [0.25, 0.5, 0.75])
RETURN statistics
## Module: VisualizationGenerator
FUNCTION generate_interactive_plot(data, statistics, config):
MANDATORY: Use Plotly for interactive visualization
NO static matplotlib exports allowed
plot = CREATE_PLOTLY_FIGURE()
ADD_SCATTER(plot, data.x, data.y) ADD_HOVER_TOOLTIPS(plot, data) ADD_STATISTICS_ANNOTATIONS(plot, statistics)
CONFIGURE_LAYOUT(plot, responsive=true)
RETURN plot
## Integration Flow
MAIN FUNCTION run_pipeline(config_file):
- config = LOAD_YAML_CONFIG(config_file)
- data = DataLoader.load_csv(config.input.path, config)
- stats = StatisticsCalculator.calculate_statistics(data, config)
- plot = VisualizationGenerator.generate_interactive_plot(data, stats, config)
- report = ReportBuilder.generate_html(data, stats, plot, config)
IF config.output.export_json: EXPORT_JSON(stats, output_path)
RETURN report_path
## Error Handling
- FileNotFoundError → Raise with clear message
- FileSizeError → Raise if exceeds limit
- ValidationError → Raise with details of failures
- TimeoutError → Raise if exceeds time constraint
## Performance Optimization
- Use pandas for efficient CSV reading
- Lazy loading for large files
- Caching intermediate results
- Parallel processing where applicable
User Review Required:
AI: I've generated pseudocode in docs/pseudocode/csv-data-analysis.md. Please review: 1. Algorithm logic - is it correct? 2. Edge cases - are they handled properly? 3. Performance - meets your needs? 4. Error handling - comprehensive enough? Approve before I proceed to TDD implementation? (yes/no)
Phase 4: TDD Implementation
Test-Driven Development Cycle:
1. RED → Write failing test 2. GREEN → Write minimal code to pass 3. REFACTOR → Improve code quality 4. REPEAT
Test Structure:
tests/ ├── unit/ │ ├── test_data_loader.py │ ├── test_statistics_calculator.py │ ├── test_validation.py │ └── test_visualization_generator.py ├── integration/ │ └── test_csv_analysis_pipeline.py ├── performance/ │ └── test_performance_constraints.py └── run_tests.sh
Example Test (Red Phase):
# tests/unit/test_data_loader.py import pytest from src.modules.data_loader import CSVLoader def test_load_csv_with_valid_file(): """Test loading valid CSV file.""" loader = CSVLoader(max_size_mb=10) data = loader.load("../data/test_sample.csv") assert data is not None assert len(data) > 0 assert "required_column" in data.columns def test_load_csv_rejects_oversized_file(): """Test rejection of files exceeding size limit.""" loader = CSVLoader(max_size_mb=1) with pytest.raises(FileSizeError): loader.load("../data/large_file.csv") def test_load_csv_validates_required_columns(): """Test validation of required columns.""" loader = CSVLoader(required_columns=["id", "value"]) with pytest.raises(ValidationError) as exc: loader.load("../data/missing_columns.csv") assert "missing required columns" in str(exc.value)
Run Tests (Should Fail):
$ pytest tests/unit/test_data_loader.py # All tests FAIL - this is expected (RED phase)
Implementation (Green Phase):
# src/modules/data_loader/csv_loader.py import pandas as pd from pathlib import Path class CSVLoader: """Load and validate CSV files.""" def __init__(self, max_size_mb=100, required_columns=None): self.max_size_mb = max_size_mb self.required_columns = required_columns or [] def load(self, file_path): """Load CSV with validation.""" path = Path(file_path) # Size validation if path.stat().st_size > self.max_size_mb * 1024 * 1024: raise FileSizeError(f"File exceeds {self.max_size_mb}MB limit") # Load data data = pd.read_csv(path) # Column validation missing = set(self.required_columns) - set(data.columns) if missing: raise ValidationError(f"Missing required columns: {missing}") return data
Run Tests (Should Pass):
$ pytest tests/unit/test_data_loader.py # All tests PASS - this is expected (GREEN phase)
Refactor Phase:
- Improve code quality
- Add docstrings
- Optimize performance
- Keep tests passing
Phase 5: Code Implementation
Module Structure:
src/ ├── modules/ │ ├── data_loader/ │ │ ├── __init__.py │ │ ├── csv_loader.py │ │ └── validators.py │ ├── statistics/ │ │ ├── __init__.py │ │ └── calculator.py │ └── visualization/ │ ├── __init__.py │ └── plotly_generator.py ├── pipelines/ │ └── csv_analysis_pipeline.py └── utils/ ├── config_loader.py └── error_handlers.py
Pipeline Integration:
# src/pipelines/csv_analysis_pipeline.py """ ABOUTME: CSV data analysis pipeline with interactive reporting ABOUTME: Implements user_prompt requirements through YAML-driven workflow """ import argparse import yaml from pathlib import Path from modules.data_loader import CSVLoader from modules.statistics import StatisticsCalculator from modules.visualization import PlotlyGenerator from modules.reporting import HTMLReportBuilder def run_pipeline(config_path): """Execute CSV analysis pipeline.""" # Load configuration with open(config_path) as f: config = yaml.safe_load(f) # Load data (following pseudocode) loader = CSVLoader( max_size_mb=config['requirements']['input']['max_size_mb'], required_columns=config['requirements']['input']['required_columns'] ) data = loader.load(config['requirements']['input']['path']) # Calculate statistics (following pseudocode) calculator = StatisticsCalculator() stats = calculator.calculate( data, stat_types=config['requirements']['processing']['statistics_types'] ) # Generate interactive visualization (MANDATORY: Plotly) viz = PlotlyGenerator() plot = viz.create_interactive_plot(data, stats) # Build HTML report report_builder = HTMLReportBuilder() report_path = report_builder.generate( data=data, statistics=stats, plot=plot, config=config ) print(f"✓ Report generated: {report_path}") return report_path if __name__ == "__main__": parser = argparse.ArgumentParser(description="CSV Analysis Pipeline") parser.add_argument("--config", required=True, help="Path to YAML config") args = parser.parse_args() run_pipeline(args.config)
Phase 6: Bash Execution
Direct Execution Script:
#!/bin/bash # scripts/run_csv_analysis.sh set -e CONFIG_FILE="$1" OUTPUT_DIR="${2:-./reports}" if [ -z "$CONFIG_FILE" ]; then echo "Usage: ./scripts/run_csv_analysis.sh <config.yaml> [output_dir]" exit 1 fi echo "Running CSV analysis pipeline..." echo "Config: $CONFIG_FILE" echo "Output: $OUTPUT_DIR" # Direct execution - shortest route python src/pipelines/csv_analysis_pipeline.py \ --config "$CONFIG_FILE" \ --output "$OUTPUT_DIR" \ --verbose echo "✓ Pipeline completed successfully!" echo "Report: $OUTPUT_DIR/report.html"
Usage:
# Single command execution ./scripts/run_csv_analysis.sh config/input/csv-data-analysis-20260105.yaml # With custom output ./scripts/run_csv_analysis.sh config/input/csv-data-analysis-20260105.yaml ./custom_output
Automation Workflow
Complete Automation Script
#!/bin/bash # scripts/workflow_orchestrator.sh set -e FEATURE_NAME="$1" if [ -z "$FEATURE_NAME" ]; then echo "Usage: ./scripts/workflow_orchestrator.sh <feature-name>" exit 1 fi echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "Development Workflow: $FEATURE_NAME" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" # Phase 1: Read user_prompt.md echo "" echo "Phase 1: Reading user requirements..." if [ ! -f "user_prompt.md" ]; then echo "✗ user_prompt.md not found" exit 1 fi echo "✓ Requirements loaded" # Phase 2: Generate YAML configuration echo "" echo "Phase 2: Generating YAML configuration..." claude-flow workflow generate-yaml \ --input user_prompt.md \ --output "config/input/$FEATURE_NAME-$(date +%Y%m%d).yaml" echo "✓ YAML configuration created" # Phase 3: Generate pseudocode echo "" echo "Phase 3: Generating pseudocode..." claude-flow workflow generate-pseudocode \ --config "config/input/$FEATURE_NAME-$(date +%Y%m%d).yaml" \ --output "docs/pseudocode/$FEATURE_NAME.md" echo "✓ Pseudocode generated" echo "" echo "Please review: docs/pseudocode/$FEATURE_NAME.md" echo "Press ENTER when approved, or Ctrl+C to abort..." read # Phase 4-5: TDD Implementation echo "" echo "Phase 4-5: TDD Implementation" echo "1. Write tests in tests/unit/" echo "2. Implement in src/modules/" echo "3. Run: pytest tests/" echo "" echo "Continue when tests pass. Press ENTER..." read # Phase 6: Execution echo "" echo "Phase 6: Ready for execution" echo "Run: ./scripts/run_$FEATURE_NAME.sh config/input/$FEATURE_NAME-$(date +%Y%m%d).yaml" echo "" echo "✓ Workflow setup complete!"
Validation and Quality Gates
Pre-Implementation Checklist
Before proceeding to each phase:
Phase 1 → 2:
- All clarifying questions asked and answered
- User requirements fully understood
- Edge cases identified
- Performance constraints clear
Phase 2 → 3:
- YAML configuration complete
- All parameters explicitly defined
- No hardcoded values
- Validation rules specified
- Test coverage defined
Phase 3 → 4:
- Pseudocode reviewed and approved
- Algorithm logic correct
- Error handling comprehensive
- Performance considerations addressed
Phase 4 → 5:
- All tests written (RED phase)
- Tests failing as expected
- Test coverage meets requirements (80%+)
Phase 5 → 6:
- All tests passing (GREEN phase)
- Code follows pseudocode exactly
- Refactoring complete
- Documentation updated
Phase 6 → Deployment:
- Bash execution tested
- Output verified
- Performance within constraints
- Error handling tested
Standards Compliance
Automatic Validation
HTML Reporting:
def validate_reporting_standards(config): """Ensure HTML reporting standards compliance.""" if config['output']['visualization'] not in ['plotly', 'bokeh', 'altair', 'd3']: raise StandardsViolation( "HTML_REPORTING_STANDARDS.md violation: " "Must use interactive plots (Plotly, Bokeh, Altair, D3.js). " "Static matplotlib exports NOT ALLOWED." ) if not config['output']['interactive']: raise StandardsViolation( "Interactive mode must be enabled for all visualizations" )
File Organization:
def validate_file_organization(module_path): """Ensure file organization standards compliance.""" # Check module structure required_files = ['__init__.py', 'core.py'] for file in required_files: if not (module_path / file).exists(): raise StandardsViolation( f"FILE_ORGANIZATION_STANDARDS.md violation: " f"Missing required file: {file}" ) # Check depth limit (max 5 levels) depth = len(module_path.parts) if depth > 5: raise StandardsViolation( "FILE_ORGANIZATION_STANDARDS.md violation: " f"Maximum folder depth exceeded ({depth} > 5)" )
Testing Standards:
def validate_testing_standards(coverage_report): """Ensure testing framework standards compliance.""" if coverage_report.line_coverage < 80: raise StandardsViolation( f"TESTING_FRAMEWORK_STANDARDS.md violation: " f"Line coverage {coverage_report.line_coverage}% < 80% minimum" ) if coverage_report.branch_coverage < 75: raise StandardsViolation( f"Branch coverage {coverage_report.branch_coverage}% < 75% minimum" )
Integration with Other Skills
With knowledge-base-system:
# Load patterns and examples kb = KnowledgeBase() patterns = kb.search(query="YAML configuration", category="workflow") examples = kb.examples.find(task="CSV analysis") # Use KB templates yaml_template = kb.templates.get("input_config.yaml") pseudocode_template = kb.templates.get("pseudocode.md")
With ai-questioning-pattern:
# Use questioning skill before YAML generation questions = AIQuestioningPattern().generate_questions(user_prompt) answers = await ask_user(questions) yaml_config = generate_yaml(user_prompt, answers)
With sparc-workflow:
# Integrate with SPARC phases sparc = SPARCWorkflow() sparc.specification(user_prompt) # Phase 1-2 sparc.pseudocode(yaml_config) # Phase 3 sparc.architecture(pseudocode) # Design sparc.refinement(tests, code) # Phase 4-5 sparc.completion(execution) # Phase 6
Metrics and Success Criteria
Workflow Efficiency:
- Time from user_prompt to working code
- Number of rework cycles
- Standards violations caught early
- Test coverage achieved
Quality Metrics:
- First-try success rate
- Bug count in production
- Performance within constraints
- User satisfaction
Compliance Metrics:
- Standards violations (should be 0)
- Documentation completeness
- Test coverage (target: 80%+)
- Code review approval time
Troubleshooting
Problem: User requirements unclear
Solution: Use AI Questioning Pattern skill - Ask specific questions about ambiguities - Provide options with trade-offs - Wait for explicit approval
Problem: YAML generation failing
Solution: Use templates from knowledge base - Load yaml_config.yaml template - Fill in from user_prompt systematically - Validate against schema
Problem: Pseudocode not approved
Solution: Iterate based on feedback - Address specific concerns - Provide alternatives - Re-generate and re-submit
Problem: Tests not passing
Solution: Follow TDD cycle properly - Verify tests are correct first - Implement minimal code to pass - Don't proceed until all tests pass
Best Practices
- Always ask before implementing - MANDATORY per AI_AGENT_GUIDELINES.md
- Follow the 6 phases strictly - Don't skip or combine phases
- Use templates from knowledge base - Ensure consistency
- Validate standards at each phase - Catch violations early
- Document as you go - Keep documentation in sync
- Test before implementing - TDD is non-negotiable
- Execute via bash - Direct, simple, efficient
Version History
- 1.0.0 (2026-01-05): Initial development workflow orchestrator skill
This skill ensures consistent, high-quality feature development across all repositories! 🚀