Some checks are pending
CI — CoM Config Validation / Validate JSON Configs (push) Waiting to run
CI — CoM Config Validation / Validate YAML Configs (push) Waiting to run
CI — CoM Config Validation / Lint Shell Scripts (push) Waiting to run
CI — CoM Config Validation / Secret Detection (push) Waiting to run
CI — CoM Config Validation / Lint Markdown (push) Waiting to run
CI — CoM Config Validation / Validate CODEOWNERS (push) Waiting to run
Public, sanitized mirror of an AI orchestration command center: agents, skills, MCP servers, slash-command workflows. All infrastructure identifiers, hostnames, mesh IPs/subnets, repo paths, maintainer identity, and hardware fleet specifics scrubbed to <placeholders>; session debug logs and host-specific memory removed. No live credentials. Verified clean by automated leak sweep. See SANITIZATION.md. churchofmalware.org . authorized research only
92 lines
2.4 KiB
Bash
92 lines
2.4 KiB
Bash
#!/bin/bash
|
|
|
|
epic_name="$1"
|
|
|
|
if [ -z "$epic_name" ]; then
|
|
echo "❌ Please provide an epic name"
|
|
echo "Usage: /pm:epic-show <epic-name>"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Getting epic..."
|
|
echo ""
|
|
echo ""
|
|
|
|
epic_dir=".claude/epics/$epic_name"
|
|
epic_file="$epic_dir/epic.md"
|
|
|
|
if [ ! -f "$epic_file" ]; then
|
|
echo "❌ Epic not found: $epic_name"
|
|
echo ""
|
|
echo "Available epics:"
|
|
for dir in .claude/epics/*/; do
|
|
[ -d "$dir" ] && echo " • $(basename "$dir")"
|
|
done
|
|
exit 1
|
|
fi
|
|
|
|
# Display epic details
|
|
echo "📚 Epic: $epic_name"
|
|
echo "================================"
|
|
echo ""
|
|
|
|
# Extract metadata
|
|
status=$(grep "^status:" "$epic_file" | head -1 | sed 's/^status: *//')
|
|
progress=$(grep "^progress:" "$epic_file" | head -1 | sed 's/^progress: *//')
|
|
github=$(grep "^github:" "$epic_file" | head -1 | sed 's/^github: *//')
|
|
created=$(grep "^created:" "$epic_file" | head -1 | sed 's/^created: *//')
|
|
|
|
echo "📊 Metadata:"
|
|
echo " Status: ${status:-planning}"
|
|
echo " Progress: ${progress:-0%}"
|
|
[ -n "$github" ] && echo " GitHub: $github"
|
|
echo " Created: ${created:-unknown}"
|
|
echo ""
|
|
|
|
# Show tasks
|
|
echo "📝 Tasks:"
|
|
task_count=0
|
|
open_count=0
|
|
closed_count=0
|
|
|
|
for task_file in "$epic_dir"/[0-9]*.md; do
|
|
[ -f "$task_file" ] || continue
|
|
|
|
task_num=$(basename "$task_file" .md)
|
|
task_name=$(grep "^name:" "$task_file" | head -1 | sed 's/^name: *//')
|
|
task_status=$(grep "^status:" "$task_file" | head -1 | sed 's/^status: *//')
|
|
parallel=$(grep "^parallel:" "$task_file" | head -1 | sed 's/^parallel: *//')
|
|
|
|
if [ "$task_status" = "closed" ] || [ "$task_status" = "completed" ]; then
|
|
echo " ✅ #$task_num - $task_name"
|
|
((closed_count++))
|
|
else
|
|
echo " ⬜ #$task_num - $task_name"
|
|
[ "$parallel" = "true" ] && echo -n " (parallel)"
|
|
((open_count++))
|
|
fi
|
|
|
|
((task_count++))
|
|
done
|
|
|
|
if [ $task_count -eq 0 ]; then
|
|
echo " No tasks created yet"
|
|
echo " Run: /pm:epic-decompose $epic_name"
|
|
fi
|
|
|
|
echo ""
|
|
echo "📈 Statistics:"
|
|
echo " Total tasks: $task_count"
|
|
echo " Open: $open_count"
|
|
echo " Closed: $closed_count"
|
|
[ $task_count -gt 0 ] && echo " Completion: $((closed_count * 100 / task_count))%"
|
|
|
|
# Next actions
|
|
echo ""
|
|
echo "💡 Actions:"
|
|
[ $task_count -eq 0 ] && echo " • Decompose into tasks: /pm:epic-decompose $epic_name"
|
|
[ -z "$github" ] && [ $task_count -gt 0 ] && echo " • Sync to GitHub: /pm:epic-sync $epic_name"
|
|
[ -n "$github" ] && [ "$status" != "completed" ] && echo " • Start work: /pm:epic-start $epic_name"
|
|
|
|
exit 0
|