with one click
with one click
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | epic-creation |
| description | Create GitHub epic issue from any implementation plan file |
| version | 1.0.0 |
Create a GitHub epic issue from an implementation plan file, regardless of format or structure.
writing-plans completes (automatic)Announce at start: "I'm using the epic-creation skill to create an epic issue."
Read the plan file completely. Use your understanding to identify:
Flexible reading: Plans may have different formats:
Your job: Extract the essence regardless of format.
PLAN_FILE="<plan-file-path>"
# Check if plan already references an epic
if grep -q "Epic Issue:" "$PLAN_FILE" || grep -q "epic.*#[0-9]" "$PLAN_FILE"; then
EXISTING_EPIC=$(grep -oP '(?:Epic Issue:|epic).*#\K\d+' "$PLAN_FILE" | head -1)
echo "ā ļø Plan already linked to epic #$EXISTING_EPIC"
# If not forcing, stop here
if [ "$FORCE" != "true" ]; then
echo "Use force=true to create new epic anyway"
exit 0
fi
fi
Create the epic issue body with extracted information:
cat > epic_body.md <<EOF
## š Plan File
\`$PLAN_FILE\`
## šÆ Goal
$GOAL
## šļø Architecture
$ARCH
## š ļø Tech Stack
$TECH
## ā
Tasks
$TASKS
---
**Status:** š” In Progress
---
## š Implementation Journey
<!-- JOURNEY_START -->
*Journey documentation will be added upon completion.*
<!-- JOURNEY_END -->
EOF
Handling missing information:
Be practical: Some plans won't have all information clearly labeled. That's okay - extract what you can.
# Create the issue
gh issue create \
--title "$TITLE" \
--label "epic,planning" \
--body "$(cat epic_body.md)"
# Capture the issue number
EPIC_NUMBER=$(gh issue list --label "epic" --limit 1 --json number --jq '.[0].number')
echo "Created epic issue: #$EPIC_NUMBER"
Add epic reference to the plan file:
# Add epic reference near the top of the plan (after tech stack if present)
# Find a good insertion point
if grep -q "^\*\*Tech Stack:\*\*" "$PLAN_FILE"; then
# Insert after tech stack
sed -i "/^\*\*Tech Stack:\*\*/a\\n**Epic Issue:** #$EPIC_NUMBER" "$PLAN_FILE"
elif grep -q "^---" "$PLAN_FILE"; then
# Insert after first separator
sed -i "0,/^---/s/^---/---\n\n**Epic Issue:** #$EPIC_NUMBER/" "$PLAN_FILE"
else
# Insert after first paragraph/section
sed -i "4a\\n**Epic Issue:** #$EPIC_NUMBER" "$PLAN_FILE"
fi
# Commit the update
git add "$PLAN_FILE"
git commit -m "docs: link plan to epic issue #$EPIC_NUMBER"
Tell the user:
ā
Epic issue created: #$EPIC_NUMBER
ā
Plan updated with epic reference
Epic URL: https://github.com/<owner>/<repo>/issues/$EPIC_NUMBER
Epic creation should be:
Avoid:
Plan structure:
# Feature Implementation Plan
**Goal:** Build the feature
**Architecture:** Uses X and Y
**Tech Stack:** Python, JavaScript
### Task 1: Do thing
### Task 2: Do other thing
Extraction:
Plan structure:
# Adding Dark Mode
We need to add dark mode to the app. This will involve:
1. Create theme context
2. Add theme toggle
3. Update all components
Technologies: React, CSS-in-JS
Extraction (intelligent reading):
Plan structure:
# Fix Bug #123
Update validation logic to handle edge case.
Extraction (with defaults):
Still useful: Future agents can find this epic and see the linked plan for full context.
Called by:
writing-plans skill - After plan is saved