#!/bin/bash # Composite Skill Creator # Creates a skill that composes multiple existing skills set -e if [ $# -lt 2 ]; then echo "Usage: $0 ..." echo "" echo "Example: $0 fullstack-testing bdd_testing unit_testing integration_testing" exit 1 fi COMPOSITE_NAME=$1 shift COMPONENT_SKILLS=("$@") COMPOSITE_DIR=".vibe/skills/${COMPOSITE_NAME}" # Convert underscores to hyphens for the skill name COMPOSITE_NAME_HYPHENATED=$(echo "$COMPOSITE_NAME" | tr '_' '-') echo "🛠️ Creating composite skill: ${COMPOSITE_NAME_HYPHENATED}" echo "📦 Composing skills: ${COMPONENT_SKILLS[*]}" echo "" # Create skill directory mkdir -p "$COMPOSITE_DIR" mkdir -p "$COMPOSITE_DIR/scripts" mkdir -p "$COMPOSITE_DIR/references" mkdir -p "$COMPOSITE_DIR/assets" # Create SKILL.md with composite pattern cat > "$COMPOSITE_DIR/SKILL.md" <> "$COMPOSITE_DIR/SKILL.md" done # Complete the SKILL.md cat >> "$COMPOSITE_DIR/SKILL.md" <<'EOL' compatibility: ">=1.0.0" --- # [Composite Skill Name] This composite skill combines the capabilities of multiple skills to provide a comprehensive solution for [describe purpose]. ## Component Skills EOL # Document component skills for skill in "${COMPONENT_SKILLS[@]}"; do echo "### ${skill}" >> "$COMPOSITE_DIR/SKILL.md" echo "" >> "$COMPOSITE_DIR/SKILL.md" echo "[Brief description of what this skill contributes]" >> "$COMPOSITE_DIR/SKILL.md" echo "" >> "$COMPOSITE_DIR/SKILL.md" done cat >> "$COMPOSITE_DIR/SKILL.md" <<'EOL' ## Workflows ### Complete Workflow 1. **Step 1**: [Description using ${skill1}] 2. **Step 2**: [Description using ${skill2}] 3. **Step 3**: [Description using ${skill3}] ### Example Usage ```bash # Use the composite skill .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh # Or use individual components .vibe/skills/${skill1}/scripts/script.sh .vibe/skills/${skill2}/scripts/script.sh ``` ## Best Practices 1. **Use the composite workflow** for standard operations 2. **Access individual skills** when you need specific capabilities 3. **Follow component skill guidelines** for each part 4. **Check all dependencies** before using the composite skill ## References EOL # Add references to component skills for skill in "${COMPONENT_SKILLS[@]}"; do echo "- [${skill}](../${skill}/SKILL.md) - [Brief description]" >> "$COMPOSITE_DIR/SKILL.md" done cat >> "$COMPOSITE_DIR/SKILL.md" <<'EOL' ## Troubleshooting ### Component Skill Issues If you encounter issues with a specific component: 1. **Check the component skill directly**: ```bash .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/[component] ``` 2. **Review component documentation**: ```bash cat .vibe/skills/[component]/README.md ``` 3. **Test component independently**: ```bash .vibe/skills/[component]/scripts/test.sh ``` ### Composite Skill Issues If the composite skill itself has issues: 1. **Validate the composite structure**: ```bash .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/${COMPOSITE_NAME_HYPHENATED} ``` 2. **Check component compatibility**: ```bash # Verify all components are present and valid for skill in ${COMPONENT_SKILLS[@]}; do .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/$skill done ``` ## Assets - **workflow-diagram.md**: Visual representation of the composite workflow - **integration-guide.md**: How to integrate this composite skill with other systems - **examples/**: Complete examples of using the composite skill EOL # Create main script that orchestrates the workflow cat > "$COMPOSITE_DIR/scripts/main.sh" <> "$COMPOSITE_DIR/scripts/main.sh" <> "$COMPOSITE_DIR/scripts/main.sh" <<'EOL' # Step N: Final integration echo "🎯 Final integration and validation" # Add final integration logic here echo "" echo "✨ Composite skill execution complete!" echo "📊 Results:" echo " - Component skills executed: ${#COMPONENT_SKILLS[@]}" echo " - Workflow steps completed: [X]" echo " - Status: Success" EOL chmod +x "$COMPOSITE_DIR/scripts/main.sh" # Create integration guide cat > "$COMPOSITE_DIR/references/INTEGRATION.md" <=1.0.0, found 0.9.0` **Solution:** 1. Update the component skill 2. Adjust version requirements 3. Check compatibility ### Circular Dependencies **Error:** `circular dependency detected: skill-a → skill-b → skill-a` **Solution:** 1. Restructure the composite 2. Remove circular references 3. Use intermediate skills if needed ### Performance Issues **Symptom:** Composite execution is slow **Solutions:** 1. Profile execution time 2. Optimize component skills 3. Run components in parallel (if possible) 4. Cache intermediate results ## Examples ### Example 1: Testing Composite ```bash # Create a testing composite .vibe/skills/skill_creator/scripts/create_composite_skill.sh \ fullstack-testing \ bdd_testing \ unit_testing \ integration_testing # Run the testing workflow .vibe/skills/fullstack-testing/scripts/main.sh ``` ### Example 2: Deployment Composite ```bash # Create a deployment composite .vibe/skills/skill_creator/scripts/create_composite_skill.sh \ ci-cd-pipeline \ build \ test \ package \ deploy \ monitor # Run the deployment pipeline .vibe/skills/ci-cd-pipeline/scripts/main.sh ``` ## Advanced Patterns ### Dynamic Composition ```bash #!/bin/bash # Dynamically compose skills based on requirements REQUIRED_SKILLS=() if [ "$NEED_TESTING" = "true" ]; then REQUIRED_SKILLS+=("bdd_testing" "unit_testing") fi if [ "$NEED_DEPLOYMENT" = "true" ]; then REQUIRED_SKILLS+=("deployment" "monitoring") fi # Create dynamic composite .vibe/skills/skill_creator/scripts/create_composite_skill.sh \ dynamic-workflow \ "${REQUIRED_SKILLS[@]}" ``` ### Conditional Execution ```bash # main.sh with conditional logic if [ "$SKIP_TESTS" = "true" ]; then echo "Skipping tests" else echo "Running tests" .vibe/skills/bdd_testing/scripts/run-tests.sh fi ``` ### Parallel Execution ```bash # Run components in parallel (when possible) echo "Running components in parallel..." .vibe/skills/component1/scripts/main.sh & COMPONENT1_PID=$! .vibe/skills/component2/scripts/main.sh & COMPONENT2_PID=$! wait $COMPONENT1_PID $COMPONENT2_PID echo "All components completed" ``` ## Conclusion Composite skills provide a powerful way to combine multiple capabilities into cohesive workflows. By following these integration patterns and best practices, you can create robust composite skills that enhance productivity and maintainability. **Next Steps:** 1. Customize the main workflow script 2. Add component-specific configuration 3. Implement error handling and recovery 4. Add monitoring and logging 5. Document the composite skill thoroughly EOL # Create workflow diagram cat > "$COMPOSITE_DIR/assets/workflow-diagram.md" < B[Validate Components] B --> C[Execute ${COMPONENT_SKILLS[0]}] C --> D[Execute ${COMPONENT_SKILLS[1]}] D --> E[...] E --> F[Final Integration] F --> G[Complete] ``` ## Sequence Diagram ```mermaid sequenceDiagram participant User participant Composite participant Component1 participant Component2 User->>Composite: Run workflow Composite->>Component1: Validate Composite->>Component2: Validate Component1-->>Composite: Ready Component2-->>Composite: Ready Composite->>Component1: Execute Composite->>Component2: Execute Component1-->>Composite: Results Component2-->>Composite: Results Composite->>Composite: Integrate results Composite-->>User: Final output ``` ## Component Details EOL # Add component details for i in "${!COMPONENT_SKILLS[@]}"; do skill="${COMPONENT_SKILLS[$i]}" step=$((i+1)) cat >> "$COMPOSITE_DIR/assets/workflow-diagram.md" <> "$COMPOSITE_DIR/assets/workflow-diagram.md" <<'EOL' ## Integration Points ### Data Flow ``` Component1 → [Data] → Composite → [Data] → Component2 Component2 → [Results] → Composite → [Final Output] → User ``` ### Error Handling ``` Component1 → [Error] → Composite → [Recovery] → Continue/Fail Component2 → [Error] → Composite → [Recovery] → Continue/Fail ``` ## Usage Examples ### Example 1: Linear Workflow ``` Step 1 → Step 2 → Step 3 → Final Output ``` ### Example 2: Parallel Workflow ``` → Step 2a → / \ Start → Integrate → Final Output \ / → Step 2b → ``` ### Example 3: Conditional Workflow ``` Start → Check Condition → True → Step A → End → False → Step B → End ``` ## Best Practices for Workflow Design 1. **Keep it simple**: Start with linear workflows 2. **Add parallelism**: When components are independent 3. **Handle errors**: Graceful degradation where possible 4. **Validate inputs**: At each step 5. **Document outputs**: For each component 6. **Monitor progress**: Log key milestones 7. **Optimize performance**: Identify bottlenecks 8. **Plan for failure**: Recovery strategies 9. **Test thoroughly**: All code paths 10. **Document clearly**: For future maintenance EOL # Create README cat > "$COMPOSITE_DIR/README.md" <> "$COMPOSITE_DIR/README.md" done cat >> "$COMPOSITE_DIR/README.md" <<'EOL' ## Features - **Unified Workflow**: Single command executes multiple skills - **Modular Design**: Access individual components when needed - **Flexible Configuration**: Customize behavior via environment variables - **Robust Error Handling**: Graceful handling of component failures - **Comprehensive Logging**: Detailed execution logs ## Installation The composite skill is already available in your project: ```bash .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/ ``` ## Usage ### Basic Usage ```bash # Run the complete workflow .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh ``` ### Advanced Usage ```bash # With environment variables export CONFIG_VAR="value" .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh # With custom options .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh --option1 --option2 ``` ### Individual Components ```bash # Access individual component skills .vibe/skills/${COMPONENT_SKILLS[0]}/scripts/script.sh .vibe/skills/${COMPONENT_SKILLS[1]}/scripts/script.sh ``` ## Configuration ### Environment Variables | Variable | Description | Default | |----------|-------------|---------| | `CONFIG_VAR` | [Description] | `value` | | `DEBUG` | Enable debug logging | `false` | | `SKIP_STEP` | Skip optional steps | `false` | ### Configuration File ```yaml # .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/config.yaml components: ${COMPONENT_SKILLS[0]}: enabled: true config: key: value ${COMPONENT_SKILLS[1]}: enabled: true config: key: value ``` ## Examples ### Example 1: Basic Workflow ```bash .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh ``` ### Example 2: Custom Configuration ```bash export CUSTOM_CONFIG="my-value" .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh ``` ### Example 3: Selective Execution ```bash # Run only specific components .vibe/skills/${COMPONENT_SKILLS[0]}/scripts/script.sh .vibe/skills/${COMPONENT_SKILLS[1]}/scripts/script.sh ``` ## Workflow ```mermaid graph LR A[Start] --> B[Validate Components] B --> C[Execute Components] C --> D[Integrate Results] D --> E[Complete] ``` ## Best Practices 1. **Start with the composite workflow** for standard operations 2. **Use individual components** when you need specific capabilities 3. **Configure appropriately** for your use case 4. **Monitor execution** for performance and errors 5. **Update components** to get the latest features 6. **Document customizations** for team reference 7. **Test changes** before deploying to production 8. **Share feedback** to improve the composite skill ## Troubleshooting ### Common Issues | Issue | Solution | |-------|----------| | Component not found | Verify skill exists and is valid | | Version mismatch | Update component or adjust requirements | | Permission denied | Check file permissions | | Slow execution | Optimize components or run in parallel | ### Debugging ```bash # Validate the composite skill .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/${COMPOSITE_NAME_HYPHENATED} # Validate individual components for skill in ${COMPONENT_SKILLS[@]}; do .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/$skill done # Run with verbose logging DEBUG=true .vibe/skills/${COMPOSITE_NAME_HYPHENATED}/scripts/main.sh ``` ## Development ### Extending the Composite To add new components: 1. **Update SKILL.md**: Add to the `composes` list 2. **Update main.sh**: Add execution step 3. **Document**: Add component description 4. **Test**: Verify the updated workflow ### Customizing Workflow Modify `scripts/main.sh` to: - Change execution order - Add conditional logic - Implement parallel execution - Add custom validation ### Testing ```bash # Test the composite skill .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/${COMPOSITE_NAME_HYPHENATED} # Test individual components for skill in ${COMPONENT_SKILLS[@]}; do .vibe/skills/skill_creator/scripts/validate_skill.sh .vibe/skills/$skill done ``` ## Contributing To improve this composite skill: 1. **Fork** the repository 2. **Create** a feature branch 3. **Make** your changes 4. **Test** thoroughly 5. **Submit** a pull request ## License MIT License - See the `license` field in SKILL.md for details. ## Support For issues or questions: 1. Check the [troubleshooting](#troubleshooting) section 2. Review component skill documentation 3. Consult the [integration guide](references/INTEGRATION.md) 4. Ask the team for assistance ## Related Skills EOL # Add related skills for skill in "${COMPONENT_SKILLS[@]}"; do echo "- [${skill}](.vibe/skills/${skill}/SKILL.md) - Component skill" >> "$COMPOSITE_DIR/README.md" done cat >> "$COMPOSITE_DIR/README.md" <<'EOL' ## Changelog ### 1.0.0 (Current) - Initial release - Combined ${#COMPONENT_SKILLS[@]} component skills - Basic workflow implementation ## Roadmap ### Future Enhancements - [ ] Parallel execution of independent components - [ ] Advanced error handling and recovery - [ ] Configuration validation - [ ] Performance monitoring - [ ] Usage analytics ## Success Metrics Track these metrics to measure the composite skill's effectiveness: 1. **Adoption Rate**: Number of teams using the composite 2. **Execution Time**: Total workflow duration 3. **Success Rate**: Percentage of successful executions 4. **Error Rate**: Frequency of failures 5. **Time Saved**: Productivity improvements ## Conclusion This composite skill provides a powerful way to combine multiple capabilities into a cohesive workflow. By leveraging the strengths of each component skill, it delivers a comprehensive solution that's greater than the sum of its parts. **Next Steps:** 1. Review the [integration guide](references/INTEGRATION.md) 2. Customize the workflow for your needs 3. Test the composite skill thoroughly 4. Share feedback to help improve it 5. Contribute enhancements back to the project EOL echo "✅ Created composite skill: ${COMPOSITE_NAME_HYPHENATED}" echo "📁 Skill directory: ${COMPOSITE_DIR}" echo "" echo "Created files:" echo " ✅ SKILL.md - Main skill file with composite metadata" echo " ✅ scripts/main.sh - Workflow orchestration script" echo " ✅ references/INTEGRATION.md - Integration guide" echo " ✅ assets/workflow-diagram.md - Visual workflow diagrams" echo " ✅ README.md - Comprehensive usage guide" echo "" echo "Next steps:" echo " 1. Edit SKILL.md to add specific descriptions" echo " 2. Customize scripts/main.sh with your workflow logic" echo " 3. Update references/INTEGRATION.md with integration details" echo " 4. Test the composite skill: .vibe/skills/skill_creator/scripts/validate_skill.sh ${COMPOSITE_DIR}" echo " 5. Document any customizations in README.md" echo "" echo "Composite skill composition:" echo " Components: ${#COMPONENT_SKILLS[@]}" for i in "${!COMPONENT_SKILLS[@]}"; do echo " $((i+1)). ${COMPONENT_SKILLS[$i]}" done