tissue index
Generate an index/summary of all issues.
Tissue Commands
# Generate default index
tissue index
# Output to specific file
tissue index --output ISSUES.md
Manual Workflow (bash + git)
Generate basic index
# Create README index of all issues
generate_index() {
cd ../issues 2>/dev/null || return 1
OUTPUT_FILE="${1:-README.md}"
cat > "$OUTPUT_FILE" << 'EOF'
# Issues Index
This is an automatically generated index of all issues in this repository.
Last updated: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
## Summary
EOF
# Add statistics using yq
TOTAL=0
OPEN=0
IN_PROGRESS=0
CLOSED=0
BLOCKED=0
for file in *.md; do
[ -f "$file" ] || continue
[ "$file" = "README.md" ] && continue
((TOTAL++))
STATUS=$(yq --front-matter '.status // "unknown"' "$file" 2>/dev/null)
case "$STATUS" in
open) ((OPEN++)) ;;
in-progress) ((IN_PROGRESS++)) ;;
closed) ((CLOSED++)) ;;
blocked) ((BLOCKED++)) ;;
esac
done
cat >> "$OUTPUT_FILE" << EOF
- **Total Issues**: $TOTAL
- **Open**: $OPEN
- **In Progress**: $IN_PROGRESS
- **Closed**: $CLOSED
## Issues by Status
EOF
# Generate sections by status
for status in "open" "in-progress" "closed"; do
case "$status" in
open) HEADING="### 📂 Open Issues" ;;
in-progress) HEADING="### 🚧 In Progress" ;;
closed) HEADING="### ✅ Closed Issues" ;;
esac
echo "$HEADING" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
COUNT=0
for file in *.md; do
[ "$file" = "README.md" ] && continue
[ -f "$file" ] || continue
FILE_STATUS=$(yq --front-matter '.status // ""' "$file" 2>/dev/null)
if [ "$FILE_STATUS" = "$status" ]; then
NUM=$(echo "$file" | cut -d'_' -f1)
TITLE=$(yq --front-matter '.title // ""' "$file")
PRIORITY=$(yq --front-matter '.priority // "medium"' "$file")
ASSIGNEE=$(yq --front-matter '.assignee // null' "$file")
# Priority emoji
case "$PRIORITY" in
critical) EMOJI="🔴" ;;
high) EMOJI="🟠" ;;
medium) EMOJI="🟡" ;;
low) EMOJI="🟢" ;;
*) EMOJI="⚪" ;;
esac
echo -n "- $EMOJI **#${NUM}**: [${TITLE}](./${file})" >> "$OUTPUT_FILE"
[ "$ASSIGNEE" != "null" ] && echo -n " (@${ASSIGNEE})" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
((COUNT++))
fi
done
[ "$COUNT" -eq 0 ] && echo "*No issues*" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
done
echo "Index generated: $OUTPUT_FILE"
cd - > /dev/null
}
generate_index
What tissue does for you:
- Automatically generates formatted indexes
- Provides multiple output formats (Markdown, HTML, etc.)
- Creates visual charts and statistics
- Groups issues by various criteria
- Updates timestamps automatically
- Generates both summary and detailed views
- Handles large numbers of issues efficiently
- Maintains consistent formatting
- Auto-commits index updates
- Supports custom templates for index generation