<< All versions
Skill v1.0.1
currentAutomated scan100/100majiayu000/claude-skill-registry-data/specs-status
3 files
──Details
PublishedMay 14, 2026 at 08:19 PM
Content Hashsha256:2798f5481515e691...
Git SHA6c0be08ba74a
Bump Typepatch
──Files
Files (1 file, 5.4 KB)
SKILL.md5.4 KBactive
SKILL.md · 162 lines · 5.4 KB
version: "1.0.1" name: specs-status description: 현재 프로젝트의 EARS 스펙 상태 현황 표시 user-invocable: true
/specs-status [project|all]
현재 프로젝트 또는 지정된 프로젝트의 스펙 상태를 표시합니다.
Arguments
- 无参数 - 현재 디렉토리명을 프로젝트명으로 사용
- project-name - 지정된 프로젝트의 스펙만 표시
- all - 모든 프로젝트의 스펙을 표시
Implementation
bash
specs-status() {local SPECS_DIR="$HOME/.claude/specs"local target_project="$1"local projects=()# Determine which projects to showif [[ -z "$target_project" ]]; then# No argument: use current directory basenametarget_project="$(basename "$PWD")"projects=("$target_project")elif [[ "$target_project" == "all" ]]; then# Show all projectsif [[ ! -d "$SPECS_DIR" ]]; thenecho "No specs directory found"return 0fi# Get all subdirectories in specs directorywhile IFS= read -r -d '' dir; doprojects+=("$(basename "$dir")")done < <(find "$SPECS_DIR" -mindepth 1 -maxdepth 1 -type d -print0 | sort -z)else# Specific projectprojects=("$target_project")fi# Exit if no projects foundif [[ ${#projects[@]} -eq 0 ]]; thenecho "No projects found"return 0fi# Process each projectfor project in "${projects[@]}"; dolocal project_dir="$SPECS_DIR/$project"echo ""echo "## Specs Status: $project"echo ""# Check if project directory existsif [[ ! -d "$project_dir" ]]; thenecho "No specs found for project $project"continuefi# Track countslocal pending_count=0 doing_count=0 done_count=0local pending_specs=() doing_specs=() done_specs=()# Process each status directoryfor status in pending doing done; dolocal status_dir="$project_dir/$status"if [[ ! -d "$status_dir" ]]; thencontinuefi# Find all .ears.md files in status directorywhile IFS= read -r -d '' spec_file; dolocal spec_idspec_id="$(basename "$spec_file" .ears.md)"local title="" priority="" created=""# Parse metadata from file using grep for safety# Extract title (first line with # SPEC-ID: format, e.g., "# 001: Title")title="$(grep -m1 "^# *[0-9]*: " "$spec_file" 2>/dev/null | sed 's/^# *[0-9]*: //')"# Extract created datecreated="$(grep '^-' "$spec_file" 2>/dev/null | grep 'created:' | sed 's/.*created: *//' | head -1)"# Extract prioritypriority="$(grep '^-' "$spec_file" 2>/dev/null | grep 'priority:' | sed 's/.*priority: *//' | head -1)"# Default values if not found[[ -z "$title" ]] && title="(no title)"[[ -z "$priority" ]] && priority="medium"[[ -z "$created" ]] && created="(unknown)"case "$status" inpending)((pending_count++))pending_specs+=("$spec_id|$title|$priority|$created");;doing)((doing_count++))doing_specs+=("$spec_id|$title|$priority|$created");;done)((done_count++))done_specs+=("$spec_id|$title|$priority|$created");;esacdone < <(find "$status_dir" -maxdepth 1 -type f -name "*.ears.md" -print0 | sort -z)done# Display summary tableecho "| Status | Count |"echo "|---------|-------|"echo "| Pending | $pending_count |"echo "| Doing | $doing_count |"echo "| Done | $done_count |"echo ""# Check if any specs foundif [[ $pending_count -eq 0 && $doing_count -eq 0 && $done_count -eq 0 ]]; thenecho "No specs found for project $project"continuefi# Display pending specsif [[ $pending_count -gt 0 ]]; thenecho "### Pending"for spec in "${pending_specs[@]}"; doIFS='|' read -r spec_id spec_title spec_priority spec_created <<< "$spec"echo "- **$spec_id**: $spec_title ($spec_priority) - created: $spec_created"doneecho ""fi# Display doing specsif [[ $doing_count -gt 0 ]]; thenecho "### Doing"for spec in "${doing_specs[@]}"; doIFS='|' read -r spec_id spec_title spec_priority spec_created <<< "$spec"echo "- **$spec_id**: $spec_title ($spec_priority) - created: $spec_created"doneecho ""fi# Display done specsif [[ $done_count -gt 0 ]]; thenecho "### Done"for spec in "${done_specs[@]}"; doIFS='|' read -r spec_id spec_title spec_priority spec_created <<< "$spec"echo "- **$spec_id**: $spec_title ($spec_priority) - created: $spec_created"doneecho ""fidone}specs-status "$@"