claude-symphony 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -12
- package/bin/create.js +80 -69
- package/package.json +1 -1
- package/template/.claude/commands/benchmark.md +32 -32
- package/template/.claude/commands/brainstorm.md +33 -33
- package/template/.claude/commands/checkpoint.md +42 -42
- package/template/.claude/commands/codex.md +52 -52
- package/template/.claude/commands/collaborate.md +47 -47
- package/template/.claude/commands/context.md +77 -77
- package/template/.claude/commands/deploy.md +50 -50
- package/template/.claude/commands/fork.md +46 -46
- package/template/.claude/commands/gemini.md +43 -43
- package/template/.claude/commands/handoff.md +42 -42
- package/template/.claude/commands/implement.md +42 -42
- package/template/.claude/commands/init-project.md +25 -25
- package/template/.claude/commands/next.md +67 -67
- package/template/.claude/commands/planning.md +38 -38
- package/template/.claude/commands/qa.md +47 -47
- package/template/.claude/commands/refactor.md +50 -50
- package/template/.claude/commands/research.md +31 -31
- package/template/.claude/commands/restore.md +53 -53
- package/template/.claude/commands/run-stage.md +45 -45
- package/template/.claude/commands/stages.md +49 -49
- package/template/.claude/commands/status.md +41 -41
- package/template/.claude/commands/tasks.md +33 -33
- package/template/.claude/commands/test.md +45 -45
- package/template/.claude/commands/ui-ux.md +31 -31
- package/template/.claude/commands/validate.md +81 -81
- package/template/.claude/hooks/ai-selector.sh +39 -39
- package/template/.claude/hooks/auto-checkpoint.sh +30 -30
- package/template/.claude/hooks/output-validator.sh +45 -45
- package/template/.claude/hooks/post-stage.sh +28 -28
- package/template/.claude/hooks/pre-stage.sh +47 -47
- package/template/.claude/hooks/session-start.sh +27 -27
- package/template/.claude/hooks/statusline.sh +24 -24
- package/template/.claude/hooks/stop.sh +26 -26
- package/template/.claude/settings.json +32 -32
- package/template/.claude/skills/ai-collaboration/README.md +31 -31
- package/template/.claude/skills/ai-collaboration/debate.md +66 -66
- package/template/.claude/skills/ai-collaboration/parallel.md +34 -34
- package/template/.claude/skills/ai-collaboration/prompts/CLAUDE.md +59 -63
- package/template/.claude/skills/auto-checkpoint/README.md +46 -46
- package/template/.claude/skills/auto-checkpoint/prompts/CLAUDE.md +68 -72
- package/template/.claude/skills/auto-checkpoint/rollback.md +95 -95
- package/template/.claude/skills/auto-checkpoint/trigger.md +37 -37
- package/template/.claude/skills/context-compression/README.md +69 -69
- package/template/.claude/skills/context-compression/analyze.md +74 -74
- package/template/.claude/skills/context-compression/compress.md +103 -103
- package/template/.claude/skills/context-compression/prompts/compression.md +78 -78
- package/template/.claude/skills/output-validator/README.md +33 -33
- package/template/.claude/skills/output-validator/prompts/CLAUDE.md +74 -78
- package/template/.claude/skills/output-validator/validate.md +76 -76
- package/template/.claude/skills/smart-handoff/README.md +35 -35
- package/template/.claude/skills/smart-handoff/extract.md +42 -42
- package/template/.claude/skills/smart-handoff/prompts/CLAUDE.md +52 -54
- package/template/.claude/skills/smart-handoff/summarize.md +55 -55
- package/template/.claude/skills/stage-transition/README.md +50 -50
- package/template/.claude/skills/stage-transition/handoff-gen.md +89 -89
- package/template/.claude/skills/stage-transition/prompts/transition.md +74 -74
- package/template/.claude/skills/stage-transition/validate.md +41 -41
- package/template/CLAUDE.md +334 -335
- package/template/config/ai_benchmarking.yaml +22 -22
- package/template/config/ai_collaboration.yaml +18 -18
- package/template/config/ai_logging.yaml +50 -50
- package/template/config/auto_checkpoint.yaml +32 -32
- package/template/config/context.yaml +20 -20
- package/template/config/git.yaml +51 -51
- package/template/config/handoff_intelligence.yaml +23 -23
- package/template/config/mcp_fallbacks.yaml +71 -71
- package/template/config/memory_integration.yaml +23 -23
- package/template/config/model_enforcement.yaml +53 -53
- package/template/config/models.yaml +24 -24
- package/template/config/output_validation.yaml +44 -44
- package/template/config/pipeline.yaml +25 -25
- package/template/config/pipeline_forking.yaml +40 -40
- package/template/config/qa_logging.yaml +67 -67
- package/template/config/smart_rollback.yaml +48 -48
- package/template/config/stage_personas.yaml +154 -154
- package/template/config/workflow.yaml +16 -16
- package/template/scripts/ai-benchmark.sh +41 -41
- package/template/scripts/codex-wrapper.sh +32 -32
- package/template/scripts/context-manager.sh +136 -136
- package/template/scripts/create-checkpoint.sh +34 -34
- package/template/scripts/gemini-wrapper.sh +31 -31
- package/template/scripts/init-project.sh +40 -40
- package/template/scripts/list-stages.sh +30 -30
- package/template/scripts/next-stage.sh +67 -67
- package/template/scripts/output-validate.sh +2 -2
- package/template/scripts/pipeline-fork.sh +68 -68
- package/template/scripts/pre-run-check.sh +84 -84
- package/template/scripts/restore-checkpoint.sh +50 -50
- package/template/scripts/run-stage.sh +44 -44
- package/template/scripts/show-status.sh +30 -30
- package/template/scripts/smart-handoff.sh +70 -70
- package/template/stages/01-brainstorm/CLAUDE.md +70 -74
- package/template/stages/01-brainstorm/README.md +54 -54
- package/template/stages/01-brainstorm/config.yaml +18 -18
- package/template/stages/01-brainstorm/prompts/collaboration.md +24 -24
- package/template/stages/01-brainstorm/prompts/ideation.md +41 -41
- package/template/stages/01-brainstorm/prompts/persona.md +50 -50
- package/template/stages/01-brainstorm/prompts/requirements.md +55 -55
- package/template/stages/01-brainstorm/prompts/validation.md +28 -28
- package/template/stages/01-brainstorm/templates/ideas.md +47 -47
- package/template/stages/01-brainstorm/templates/requirements_analysis.md +61 -61
- package/template/stages/02-research/CLAUDE.md +72 -76
- package/template/stages/02-research/config.yaml +12 -12
- package/template/stages/02-research/prompts/collaboration.md +29 -29
- package/template/stages/02-research/prompts/feasibility.md +38 -38
- package/template/stages/02-research/prompts/market_analysis.md +29 -29
- package/template/stages/02-research/prompts/tech_stack.md +34 -34
- package/template/stages/02-research/prompts/validation.md +29 -29
- package/template/stages/03-planning/CLAUDE.md +88 -92
- package/template/stages/03-planning/config.yaml +10 -10
- package/template/stages/03-planning/prompts/architecture.md +43 -43
- package/template/stages/03-planning/prompts/collaboration.md +34 -34
- package/template/stages/03-planning/prompts/validation.md +34 -34
- package/template/stages/04-ui-ux/CLAUDE.md +68 -72
- package/template/stages/04-ui-ux/config.yaml +5 -5
- package/template/stages/04-ui-ux/prompts/collaboration.md +35 -35
- package/template/stages/04-ui-ux/prompts/validation.md +30 -30
- package/template/stages/05-task-management/CLAUDE.md +81 -85
- package/template/stages/05-task-management/config.yaml +17 -17
- package/template/stages/05-task-management/prompts/collaboration.md +30 -30
- package/template/stages/05-task-management/prompts/validation.md +33 -33
- package/template/stages/05-task-management/templates/notion_integration.md +70 -70
- package/template/stages/05-task-management/templates/parallel_groups.yaml +64 -64
- package/template/stages/05-task-management/templates/task_schema.yaml +33 -33
- package/template/stages/06-implementation/CLAUDE.md +117 -121
- package/template/stages/06-implementation/config.yaml +10 -10
- package/template/stages/06-implementation/prompts/collaboration.md +29 -29
- package/template/stages/06-implementation/prompts/validation.md +36 -36
- package/template/stages/07-refactoring/CLAUDE.md +120 -124
- package/template/stages/07-refactoring/config.yaml +11 -11
- package/template/stages/07-refactoring/prompts/collaboration.md +36 -36
- package/template/stages/07-refactoring/prompts/validation.md +40 -40
- package/template/stages/08-qa/CLAUDE.md +80 -84
- package/template/stages/08-qa/config.yaml +7 -7
- package/template/stages/08-qa/prompts/collaboration.md +34 -34
- package/template/stages/08-qa/prompts/validation.md +41 -41
- package/template/stages/09-testing/CLAUDE.md +86 -90
- package/template/stages/09-testing/config.yaml +10 -10
- package/template/stages/09-testing/prompts/collaboration.md +38 -38
- package/template/stages/09-testing/prompts/validation.md +41 -41
- package/template/stages/10-deployment/CLAUDE.md +86 -90
- package/template/stages/10-deployment/config.yaml +11 -11
- package/template/stages/10-deployment/prompts/collaboration.md +37 -37
- package/template/stages/10-deployment/prompts/validation.md +54 -54
- package/template/stages/10-deployment/templates/github-actions-cd.yaml +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
|
-
# next-stage.sh -
|
|
2
|
+
# next-stage.sh - Transition to next stage
|
|
3
3
|
# claude-symphony workflow pipeline
|
|
4
4
|
|
|
5
5
|
set -e
|
|
@@ -8,7 +8,7 @@ PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
|
8
8
|
PROGRESS_FILE="$PROJECT_ROOT/state/progress.json"
|
|
9
9
|
STAGES_DIR="$PROJECT_ROOT/stages"
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
# Color definitions
|
|
12
12
|
RED='\033[0;31m'
|
|
13
13
|
GREEN='\033[0;32m'
|
|
14
14
|
YELLOW='\033[1;33m'
|
|
@@ -18,7 +18,7 @@ WHITE='\033[1;37m'
|
|
|
18
18
|
GRAY='\033[0;90m'
|
|
19
19
|
NC='\033[0m' # No Color
|
|
20
20
|
|
|
21
|
-
#
|
|
21
|
+
# Option handling
|
|
22
22
|
FORCE_MODE=false
|
|
23
23
|
PREVIEW_MODE=false
|
|
24
24
|
NO_HANDOFF=false
|
|
@@ -33,33 +33,33 @@ while [[ "$#" -gt 0 ]]; do
|
|
|
33
33
|
shift
|
|
34
34
|
done
|
|
35
35
|
|
|
36
|
-
# jq
|
|
36
|
+
# Check jq
|
|
37
37
|
if ! command -v jq &> /dev/null; then
|
|
38
|
-
echo -e "${RED}
|
|
38
|
+
echo -e "${RED}Error:${NC} jq is required."
|
|
39
39
|
exit 1
|
|
40
40
|
fi
|
|
41
41
|
|
|
42
|
-
# progress.json
|
|
42
|
+
# Check progress.json
|
|
43
43
|
if [ ! -f "$PROGRESS_FILE" ]; then
|
|
44
|
-
echo -e "${RED}
|
|
45
|
-
echo "
|
|
44
|
+
echo -e "${RED}Error:${NC} Cannot find progress.json."
|
|
45
|
+
echo " Please run /init-project first."
|
|
46
46
|
exit 1
|
|
47
47
|
fi
|
|
48
48
|
|
|
49
|
-
#
|
|
49
|
+
# Stage info
|
|
50
50
|
declare -a STAGE_IDS=("01-brainstorm" "02-research" "03-planning" "04-ui-ux" "05-task-management" "06-implementation" "07-refactoring" "08-qa" "09-testing" "10-deployment")
|
|
51
51
|
declare -a CHECKPOINT_REQUIRED=("false" "false" "false" "false" "false" "true" "true" "false" "false" "false")
|
|
52
52
|
|
|
53
|
-
#
|
|
53
|
+
# Check current stage
|
|
54
54
|
CURRENT_STAGE=$(jq -r '.current_stage // "none"' "$PROGRESS_FILE")
|
|
55
55
|
|
|
56
56
|
if [ "$CURRENT_STAGE" == "none" ] || [ -z "$CURRENT_STAGE" ]; then
|
|
57
|
-
echo -e "${RED}
|
|
58
|
-
echo " /run-stage 01
|
|
57
|
+
echo -e "${RED}Error:${NC} No stage in progress."
|
|
58
|
+
echo " Start with /run-stage 01 or /brainstorm."
|
|
59
59
|
exit 1
|
|
60
60
|
fi
|
|
61
61
|
|
|
62
|
-
#
|
|
62
|
+
# Find current stage index
|
|
63
63
|
CURRENT_IDX=-1
|
|
64
64
|
for i in "${!STAGE_IDS[@]}"; do
|
|
65
65
|
if [ "${STAGE_IDS[$i]}" == "$CURRENT_STAGE" ]; then
|
|
@@ -69,21 +69,21 @@ for i in "${!STAGE_IDS[@]}"; do
|
|
|
69
69
|
done
|
|
70
70
|
|
|
71
71
|
if [ $CURRENT_IDX -eq -1 ]; then
|
|
72
|
-
echo -e "${RED}
|
|
72
|
+
echo -e "${RED}Error:${NC} Unknown stage: $CURRENT_STAGE"
|
|
73
73
|
exit 1
|
|
74
74
|
fi
|
|
75
75
|
|
|
76
|
-
#
|
|
76
|
+
# Check next stage
|
|
77
77
|
NEXT_IDX=$((CURRENT_IDX + 1))
|
|
78
78
|
if [ $NEXT_IDX -ge ${#STAGE_IDS[@]} ]; then
|
|
79
79
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
80
|
-
echo -e "🎉 ${GREEN}
|
|
80
|
+
echo -e "🎉 ${GREEN}Pipeline Complete!${NC}"
|
|
81
81
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
82
|
-
echo "
|
|
82
|
+
echo "All 10 stages have been completed."
|
|
83
83
|
echo ""
|
|
84
|
-
echo "
|
|
85
|
-
echo " -
|
|
86
|
-
echo " - state/handoffs/
|
|
84
|
+
echo "Final review:"
|
|
85
|
+
echo " - Check overall status with /status"
|
|
86
|
+
echo " - Review handoff documents in state/handoffs/"
|
|
87
87
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
88
88
|
exit 0
|
|
89
89
|
fi
|
|
@@ -93,71 +93,71 @@ CURRENT_STAGE_DIR="$STAGES_DIR/$CURRENT_STAGE"
|
|
|
93
93
|
NEXT_STAGE_DIR="$STAGES_DIR/$NEXT_STAGE"
|
|
94
94
|
|
|
95
95
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
96
|
-
echo -e "🔄 ${WHITE}
|
|
96
|
+
echo -e "🔄 ${WHITE}Stage Transition${NC}"
|
|
97
97
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
98
|
-
echo -e "
|
|
98
|
+
echo -e "Current: ${CYAN}$CURRENT_STAGE${NC} → Next: ${GREEN}$NEXT_STAGE${NC}"
|
|
99
99
|
echo ""
|
|
100
100
|
|
|
101
|
-
#
|
|
102
|
-
echo -e "${BLUE}[
|
|
101
|
+
# Validate completion conditions
|
|
102
|
+
echo -e "${BLUE}[Completion Validation]${NC}"
|
|
103
103
|
VALIDATION_FAILED=false
|
|
104
104
|
|
|
105
|
-
# outputs
|
|
105
|
+
# Check outputs directory
|
|
106
106
|
if [ -d "$CURRENT_STAGE_DIR/outputs" ]; then
|
|
107
107
|
OUTPUT_COUNT=$(find "$CURRENT_STAGE_DIR/outputs" -type f 2>/dev/null | wc -l | tr -d ' ')
|
|
108
108
|
if [ "$OUTPUT_COUNT" -gt 0 ]; then
|
|
109
|
-
echo -e "${GREEN}✓${NC}
|
|
109
|
+
echo -e "${GREEN}✓${NC} Output files exist (${OUTPUT_COUNT} files)"
|
|
110
110
|
else
|
|
111
|
-
echo -e "${RED}✗${NC}
|
|
111
|
+
echo -e "${RED}✗${NC} No output files"
|
|
112
112
|
VALIDATION_FAILED=true
|
|
113
113
|
fi
|
|
114
114
|
else
|
|
115
|
-
echo -e "${RED}✗${NC} outputs
|
|
115
|
+
echo -e "${RED}✗${NC} No outputs directory"
|
|
116
116
|
VALIDATION_FAILED=true
|
|
117
117
|
fi
|
|
118
118
|
|
|
119
|
-
#
|
|
119
|
+
# Check if checkpoint is required
|
|
120
120
|
NEEDS_CHECKPOINT="${CHECKPOINT_REQUIRED[$CURRENT_IDX]}"
|
|
121
121
|
if [ "$NEEDS_CHECKPOINT" == "true" ]; then
|
|
122
|
-
#
|
|
122
|
+
# Check if checkpoint exists for current stage
|
|
123
123
|
STAGE_NUM=$(echo "$CURRENT_STAGE" | cut -d'-' -f1)
|
|
124
124
|
CP_EXISTS=$(ls -d "$PROJECT_ROOT/state/checkpoints/CP-$STAGE_NUM-"* 2>/dev/null | head -1 || true)
|
|
125
125
|
|
|
126
126
|
if [ -n "$CP_EXISTS" ]; then
|
|
127
|
-
echo -e "${GREEN}✓${NC}
|
|
127
|
+
echo -e "${GREEN}✓${NC} Checkpoint exists"
|
|
128
128
|
else
|
|
129
|
-
echo -e "${RED}✗${NC}
|
|
129
|
+
echo -e "${RED}✗${NC} Checkpoint required (not created)"
|
|
130
130
|
VALIDATION_FAILED=true
|
|
131
131
|
fi
|
|
132
132
|
fi
|
|
133
133
|
|
|
134
134
|
echo ""
|
|
135
135
|
|
|
136
|
-
#
|
|
136
|
+
# On validation failure
|
|
137
137
|
if [ "$VALIDATION_FAILED" = true ] && [ "$FORCE_MODE" = false ]; then
|
|
138
138
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
139
|
-
echo -e "${YELLOW}⚠️
|
|
139
|
+
echo -e "${YELLOW}⚠️ Stage transition conditions not met${NC}"
|
|
140
140
|
echo ""
|
|
141
|
-
echo "
|
|
141
|
+
echo "Next steps:"
|
|
142
142
|
if [ "$NEEDS_CHECKPOINT" == "true" ]; then
|
|
143
|
-
echo " 1. /checkpoint
|
|
143
|
+
echo " 1. Run /checkpoint"
|
|
144
144
|
fi
|
|
145
|
-
echo " 2.
|
|
146
|
-
echo " 3. /next --force
|
|
145
|
+
echo " 2. Verify output files are generated"
|
|
146
|
+
echo " 3. Force transition with /next --force (not recommended)"
|
|
147
147
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
148
148
|
exit 1
|
|
149
149
|
fi
|
|
150
150
|
|
|
151
|
-
#
|
|
151
|
+
# Preview mode
|
|
152
152
|
if [ "$PREVIEW_MODE" = true ]; then
|
|
153
|
-
echo -e "${YELLOW}[PREVIEW]
|
|
153
|
+
echo -e "${YELLOW}[PREVIEW] Not executing actual transition.${NC}"
|
|
154
154
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
155
155
|
exit 0
|
|
156
156
|
fi
|
|
157
157
|
|
|
158
|
-
# HANDOFF.md
|
|
158
|
+
# Generate HANDOFF.md
|
|
159
159
|
if [ "$NO_HANDOFF" = false ]; then
|
|
160
|
-
echo -e "${BLUE}[HANDOFF.md
|
|
160
|
+
echo -e "${BLUE}[Generating HANDOFF.md]${NC}"
|
|
161
161
|
|
|
162
162
|
HANDOFF_FILE="$CURRENT_STAGE_DIR/HANDOFF.md"
|
|
163
163
|
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
@@ -166,41 +166,41 @@ if [ "$NO_HANDOFF" = false ]; then
|
|
|
166
166
|
cat > "$HANDOFF_FILE" << EOF
|
|
167
167
|
# Handoff: $CURRENT_STAGE → $NEXT_STAGE
|
|
168
168
|
|
|
169
|
-
|
|
169
|
+
Created: $TIMESTAMP_READABLE
|
|
170
170
|
|
|
171
|
-
##
|
|
171
|
+
## Completed Tasks
|
|
172
172
|
|
|
173
|
-
- [x] $CURRENT_STAGE
|
|
174
|
-
- [x]
|
|
173
|
+
- [x] Executed $CURRENT_STAGE stage
|
|
174
|
+
- [x] Generated output files
|
|
175
175
|
|
|
176
|
-
##
|
|
176
|
+
## Key Deliverables
|
|
177
177
|
|
|
178
178
|
$(find "$CURRENT_STAGE_DIR/outputs" -type f -name "*.md" -o -name "*.json" -o -name "*.yaml" 2>/dev/null | while read -r f; do echo "- $(basename "$f")"; done)
|
|
179
179
|
|
|
180
|
-
##
|
|
180
|
+
## Next Steps
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
1. stages/$NEXT_STAGE/CLAUDE.md
|
|
184
|
-
2.
|
|
182
|
+
Instructions for starting next stage ($NEXT_STAGE):
|
|
183
|
+
1. Reference stages/$NEXT_STAGE/CLAUDE.md
|
|
184
|
+
2. Input files: stages/$CURRENT_STAGE/outputs/
|
|
185
185
|
|
|
186
|
-
##
|
|
186
|
+
## Notes
|
|
187
187
|
|
|
188
|
-
-
|
|
189
|
-
-
|
|
188
|
+
- This is an auto-generated handoff document.
|
|
189
|
+
- Please supplement manually if needed.
|
|
190
190
|
EOF
|
|
191
191
|
|
|
192
|
-
echo -e "${GREEN}✓${NC} $HANDOFF_FILE
|
|
192
|
+
echo -e "${GREEN}✓${NC} $HANDOFF_FILE generated"
|
|
193
193
|
|
|
194
|
-
#
|
|
194
|
+
# Copy to handoff archive
|
|
195
195
|
mkdir -p "$PROJECT_ROOT/state/handoffs"
|
|
196
196
|
cp "$HANDOFF_FILE" "$PROJECT_ROOT/state/handoffs/${CURRENT_STAGE}-HANDOFF.md"
|
|
197
197
|
fi
|
|
198
198
|
|
|
199
|
-
#
|
|
199
|
+
# Update status
|
|
200
200
|
echo ""
|
|
201
|
-
echo -e "${BLUE}[
|
|
201
|
+
echo -e "${BLUE}[Status Update]${NC}"
|
|
202
202
|
|
|
203
|
-
# progress.json
|
|
203
|
+
# Update progress.json
|
|
204
204
|
jq ".current_stage = \"$NEXT_STAGE\" | \
|
|
205
205
|
.stages.\"$CURRENT_STAGE\".status = \"completed\" | \
|
|
206
206
|
.stages.\"$CURRENT_STAGE\".completed_at = \"$(date -u +"%Y-%m-%dT%H:%M:%SZ")\" | \
|
|
@@ -210,19 +210,19 @@ jq ".current_stage = \"$NEXT_STAGE\" | \
|
|
|
210
210
|
|
|
211
211
|
echo -e "${GREEN}✓${NC} $CURRENT_STAGE: completed"
|
|
212
212
|
echo -e "${GREEN}✓${NC} $NEXT_STAGE: in_progress"
|
|
213
|
-
echo -e "${GREEN}✓${NC} progress.json
|
|
213
|
+
echo -e "${GREEN}✓${NC} progress.json updated"
|
|
214
214
|
|
|
215
|
-
#
|
|
215
|
+
# Completion message
|
|
216
216
|
echo ""
|
|
217
217
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
218
|
-
echo -e "${GREEN}✅${NC} ${WHITE}$NEXT_STAGE${NC}
|
|
218
|
+
echo -e "${GREEN}✅${NC} ${WHITE}$NEXT_STAGE${NC} stage started!"
|
|
219
219
|
echo ""
|
|
220
|
-
echo "
|
|
221
|
-
echo " 1. stages/$NEXT_STAGE/CLAUDE.md
|
|
222
|
-
echo " 2.
|
|
220
|
+
echo "Next tasks:"
|
|
221
|
+
echo " 1. Reference stages/$NEXT_STAGE/CLAUDE.md"
|
|
222
|
+
echo " 2. Input files: stages/$CURRENT_STAGE/outputs/"
|
|
223
223
|
|
|
224
|
-
#
|
|
224
|
+
# Shortcut command guidance
|
|
225
225
|
declare -a SHORTCUTS=("brainstorm" "research" "planning" "ui-ux" "tasks" "implement" "refactor" "qa" "test" "deploy")
|
|
226
|
-
echo " 3.
|
|
226
|
+
echo " 3. Shortcut command: /${SHORTCUTS[$NEXT_IDX]}"
|
|
227
227
|
|
|
228
228
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# claude-symphony Output Validation Script
|
|
3
|
-
#
|
|
3
|
+
# Run output validation
|
|
4
4
|
|
|
5
5
|
set -e
|
|
6
6
|
|
|
@@ -8,5 +8,5 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
8
8
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
9
9
|
HOOKS_DIR="$PROJECT_ROOT/.claude/hooks"
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
# Call validation hook
|
|
12
12
|
exec "$HOOKS_DIR/output-validator.sh" "$@"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# claude-symphony Pipeline Fork Script
|
|
3
|
-
#
|
|
3
|
+
# Pipeline fork management
|
|
4
4
|
|
|
5
5
|
set -e
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
9
9
|
FORKS_DIR="$PROJECT_ROOT/state/forks"
|
|
10
10
|
PROGRESS_FILE="$PROJECT_ROOT/state/progress.json"
|
|
11
11
|
|
|
12
|
-
#
|
|
12
|
+
# Color definitions
|
|
13
13
|
RED='\033[0;31m'
|
|
14
14
|
GREEN='\033[0;32m'
|
|
15
15
|
YELLOW='\033[1;33m'
|
|
@@ -17,13 +17,13 @@ BLUE='\033[0;34m'
|
|
|
17
17
|
CYAN='\033[0;36m'
|
|
18
18
|
NC='\033[0m'
|
|
19
19
|
|
|
20
|
-
#
|
|
20
|
+
# Log functions
|
|
21
21
|
log_info() { echo -e "${BLUE}[FORK]${NC} $1"; }
|
|
22
22
|
log_success() { echo -e "${GREEN}[FORK]${NC} $1"; }
|
|
23
23
|
log_warning() { echo -e "${YELLOW}[FORK]${NC} $1"; }
|
|
24
24
|
log_error() { echo -e "${RED}[FORK]${NC} $1"; }
|
|
25
25
|
|
|
26
|
-
#
|
|
26
|
+
# Get current stage
|
|
27
27
|
get_current_stage() {
|
|
28
28
|
if [ -f "$PROGRESS_FILE" ]; then
|
|
29
29
|
cat "$PROGRESS_FILE" 2>/dev/null | grep -o '"current_stage"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4
|
|
@@ -32,14 +32,14 @@ get_current_stage() {
|
|
|
32
32
|
fi
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
#
|
|
35
|
+
# Create fork
|
|
36
36
|
create_fork() {
|
|
37
37
|
local reason="$1"
|
|
38
38
|
local name="$2"
|
|
39
39
|
local direction="$3"
|
|
40
40
|
|
|
41
41
|
if [ -z "$reason" ]; then
|
|
42
|
-
log_error "
|
|
42
|
+
log_error "Fork reason is required."
|
|
43
43
|
exit 1
|
|
44
44
|
fi
|
|
45
45
|
|
|
@@ -52,66 +52,66 @@ create_fork() {
|
|
|
52
52
|
|
|
53
53
|
local fork_path="$FORKS_DIR/$name"
|
|
54
54
|
|
|
55
|
-
log_info "
|
|
56
|
-
log_info "
|
|
55
|
+
log_info "Creating fork: $name"
|
|
56
|
+
log_info "Reason: $reason"
|
|
57
57
|
|
|
58
|
-
#
|
|
58
|
+
# Check current active fork count
|
|
59
59
|
local active_forks=$(ls -1 "$FORKS_DIR" 2>/dev/null | wc -l)
|
|
60
60
|
if [ "$active_forks" -ge 3 ]; then
|
|
61
|
-
log_error "
|
|
62
|
-
log_info "
|
|
61
|
+
log_error "Maximum active fork count (3) reached."
|
|
62
|
+
log_info "Please merge or delete existing forks."
|
|
63
63
|
exit 1
|
|
64
64
|
fi
|
|
65
65
|
|
|
66
|
-
#
|
|
66
|
+
# Create fork directory
|
|
67
67
|
mkdir -p "$fork_path"
|
|
68
68
|
|
|
69
|
-
#
|
|
70
|
-
log_info "
|
|
69
|
+
# Copy current state
|
|
70
|
+
log_info "Copying state..."
|
|
71
71
|
|
|
72
|
-
#
|
|
72
|
+
# Copy source code
|
|
73
73
|
if [ -d "$PROJECT_ROOT/stages/$stage/outputs" ]; then
|
|
74
74
|
cp -r "$PROJECT_ROOT/stages/$stage/outputs" "$fork_path/" 2>/dev/null || true
|
|
75
75
|
fi
|
|
76
76
|
|
|
77
|
-
#
|
|
77
|
+
# Copy state files
|
|
78
78
|
mkdir -p "$fork_path/state"
|
|
79
79
|
cp "$PROGRESS_FILE" "$fork_path/state/" 2>/dev/null || true
|
|
80
80
|
|
|
81
|
-
#
|
|
81
|
+
# Generate fork HANDOFF
|
|
82
82
|
cat > "$fork_path/FORK_HANDOFF.md" << EOF
|
|
83
83
|
# Fork HANDOFF - $name
|
|
84
84
|
|
|
85
|
-
##
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
85
|
+
## Fork Info
|
|
86
|
+
- **Origin stage**: $stage
|
|
87
|
+
- **Fork reason**: $reason
|
|
88
|
+
- **Fork time**: $(date +%Y-%m-%d\ %H:%M:%S)
|
|
89
|
+
- **Exploration direction**: ${direction:-"Not specified"}
|
|
90
90
|
|
|
91
|
-
##
|
|
91
|
+
## Fork Goals
|
|
92
92
|
|
|
93
|
-
[
|
|
93
|
+
[Goals to achieve in this fork]
|
|
94
94
|
|
|
95
|
-
##
|
|
95
|
+
## Evaluation Criteria
|
|
96
96
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
97
|
+
- Code quality
|
|
98
|
+
- Performance
|
|
99
|
+
- Maintainability
|
|
100
100
|
|
|
101
|
-
##
|
|
101
|
+
## Merge Conditions
|
|
102
102
|
|
|
103
|
-
[
|
|
103
|
+
[Conditions that must be met for merging]
|
|
104
104
|
|
|
105
|
-
##
|
|
105
|
+
## Progress
|
|
106
106
|
|
|
107
|
-
- [ ]
|
|
108
|
-
- [ ]
|
|
109
|
-
- [ ]
|
|
110
|
-
- [ ]
|
|
107
|
+
- [ ] Initial setup
|
|
108
|
+
- [ ] Implementation
|
|
109
|
+
- [ ] Testing
|
|
110
|
+
- [ ] Evaluation
|
|
111
111
|
|
|
112
112
|
EOF
|
|
113
113
|
|
|
114
|
-
#
|
|
114
|
+
# Generate metadata
|
|
115
115
|
cat > "$fork_path/metadata.json" << EOF
|
|
116
116
|
{
|
|
117
117
|
"name": "$name",
|
|
@@ -124,16 +124,16 @@ EOF
|
|
|
124
124
|
}
|
|
125
125
|
EOF
|
|
126
126
|
|
|
127
|
-
log_success "
|
|
128
|
-
log_info "
|
|
127
|
+
log_success "Fork created: $fork_path"
|
|
128
|
+
log_info "Fork HANDOFF: $fork_path/FORK_HANDOFF.md"
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
#
|
|
131
|
+
# List forks
|
|
132
132
|
list_forks() {
|
|
133
|
-
log_info "
|
|
133
|
+
log_info "Active forks list"
|
|
134
134
|
echo ""
|
|
135
|
-
echo "| ID |
|
|
136
|
-
echo "
|
|
135
|
+
echo "| ID | Name | Stage | Status | Created |"
|
|
136
|
+
echo "|----|------|-------|--------|---------|"
|
|
137
137
|
|
|
138
138
|
local id=1
|
|
139
139
|
for fork_dir in "$FORKS_DIR"/*/; do
|
|
@@ -155,16 +155,16 @@ list_forks() {
|
|
|
155
155
|
echo ""
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
-
#
|
|
158
|
+
# Compare forks
|
|
159
159
|
compare_forks() {
|
|
160
|
-
log_info "
|
|
160
|
+
log_info "Fork comparison"
|
|
161
161
|
echo ""
|
|
162
162
|
echo "=========================================="
|
|
163
|
-
echo "
|
|
163
|
+
echo " Fork Comparison Results"
|
|
164
164
|
echo "=========================================="
|
|
165
165
|
echo ""
|
|
166
166
|
|
|
167
|
-
echo "|
|
|
167
|
+
echo "| Metric | Main |"
|
|
168
168
|
for fork_dir in "$FORKS_DIR"/*/; do
|
|
169
169
|
if [ -d "$fork_dir" ]; then
|
|
170
170
|
echo -n " $(basename "$fork_dir") |"
|
|
@@ -180,7 +180,7 @@ compare_forks() {
|
|
|
180
180
|
done
|
|
181
181
|
echo ""
|
|
182
182
|
|
|
183
|
-
#
|
|
183
|
+
# Simulated metrics
|
|
184
184
|
echo "| Code Quality | 0.85 |"
|
|
185
185
|
for fork_dir in "$FORKS_DIR"/*/; do
|
|
186
186
|
if [ -d "$fork_dir" ]; then
|
|
@@ -200,60 +200,60 @@ compare_forks() {
|
|
|
200
200
|
echo ""
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
#
|
|
203
|
+
# Merge fork
|
|
204
204
|
merge_fork() {
|
|
205
205
|
local fork_name="$1"
|
|
206
206
|
local strategy="${2:-best_performer}"
|
|
207
207
|
|
|
208
208
|
if [ -z "$fork_name" ]; then
|
|
209
|
-
log_error "
|
|
209
|
+
log_error "Fork name to merge is required."
|
|
210
210
|
exit 1
|
|
211
211
|
fi
|
|
212
212
|
|
|
213
213
|
local fork_path="$FORKS_DIR/$fork_name"
|
|
214
214
|
|
|
215
215
|
if [ ! -d "$fork_path" ]; then
|
|
216
|
-
log_error "
|
|
216
|
+
log_error "Fork not found: $fork_name"
|
|
217
217
|
exit 1
|
|
218
218
|
fi
|
|
219
219
|
|
|
220
|
-
log_info "
|
|
221
|
-
log_info "
|
|
220
|
+
log_info "Merging fork: $fork_name"
|
|
221
|
+
log_info "Strategy: $strategy"
|
|
222
222
|
|
|
223
|
-
#
|
|
223
|
+
# Create checkpoint
|
|
224
224
|
"$SCRIPT_DIR/../.claude/hooks/auto-checkpoint.sh" create "pre_merge" 2>/dev/null || true
|
|
225
225
|
|
|
226
|
-
#
|
|
226
|
+
# Change fork status to merged
|
|
227
227
|
if [ -f "$fork_path/metadata.json" ]; then
|
|
228
228
|
sed -i '' 's/"status"[[:space:]]*:[[:space:]]*"[^"]*"/"status": "merged"/g' "$fork_path/metadata.json" 2>/dev/null || \
|
|
229
229
|
sed -i 's/"status"[[:space:]]*:[[:space:]]*"[^"]*"/"status": "merged"/g' "$fork_path/metadata.json"
|
|
230
230
|
fi
|
|
231
231
|
|
|
232
|
-
log_success "
|
|
232
|
+
log_success "Fork merged: $fork_name"
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
#
|
|
235
|
+
# Delete fork
|
|
236
236
|
delete_fork() {
|
|
237
237
|
local fork_name="$1"
|
|
238
238
|
|
|
239
239
|
if [ -z "$fork_name" ]; then
|
|
240
|
-
log_error "
|
|
240
|
+
log_error "Fork name to delete is required."
|
|
241
241
|
exit 1
|
|
242
242
|
fi
|
|
243
243
|
|
|
244
244
|
local fork_path="$FORKS_DIR/$fork_name"
|
|
245
245
|
|
|
246
246
|
if [ ! -d "$fork_path" ]; then
|
|
247
|
-
log_error "
|
|
247
|
+
log_error "Fork not found: $fork_name"
|
|
248
248
|
exit 1
|
|
249
249
|
fi
|
|
250
250
|
|
|
251
|
-
log_warning "
|
|
251
|
+
log_warning "Deleting fork: $fork_name"
|
|
252
252
|
rm -rf "$fork_path"
|
|
253
|
-
log_success "
|
|
253
|
+
log_success "Fork deleted"
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
#
|
|
256
|
+
# Main execution
|
|
257
257
|
main() {
|
|
258
258
|
local action="$1"
|
|
259
259
|
shift
|
|
@@ -277,14 +277,14 @@ main() {
|
|
|
277
277
|
delete_fork "$@"
|
|
278
278
|
;;
|
|
279
279
|
*)
|
|
280
|
-
echo "
|
|
280
|
+
echo "Usage: $0 {create|list|compare|merge|delete} [args]"
|
|
281
281
|
echo ""
|
|
282
|
-
echo "
|
|
283
|
-
echo " create --reason \"
|
|
284
|
-
echo " list
|
|
285
|
-
echo " compare
|
|
286
|
-
echo " merge <fork_name>
|
|
287
|
-
echo " delete <fork_name>
|
|
282
|
+
echo "Commands:"
|
|
283
|
+
echo " create --reason \"reason\" [--name name] [--direction direction]"
|
|
284
|
+
echo " list List active forks"
|
|
285
|
+
echo " compare Compare forks"
|
|
286
|
+
echo " merge <fork_name> Merge fork"
|
|
287
|
+
echo " delete <fork_name> Delete fork"
|
|
288
288
|
exit 1
|
|
289
289
|
;;
|
|
290
290
|
esac
|