diff --git a/.github/workflows/scripts/create-release-packages.sh b/.github/workflows/scripts/create-release-packages.sh index 0e408d2..e35448a 100644 --- a/.github/workflows/scripts/create-release-packages.sh +++ b/.github/workflows/scripts/create-release-packages.sh @@ -47,43 +47,22 @@ generate_commands() { mkdir -p "$output_dir" for template in templates/commands/*.md; do [[ -f "$template" ]] || continue - local name description raw_body variant_line injected body file_norm delim_count + local name description file_content variant_line injected body name=$(basename "$template" .md) - # Normalize line endings first (remove CR) for consistent regex matching - file_norm=$(tr -d '\r' < "$template") + # Normalize line endings and work with entire file content + file_content=$(tr -d '\r' < "$template") # Extract description from frontmatter - description=$(printf '%s\n' "$file_norm" | awk '/^description:/ {sub(/^description:[[:space:]]*/, ""); print; exit}') - # Count YAML frontmatter delimiter lines - delim_count=$(printf '%s\n' "$file_norm" | grep -c '^---$' || true) - if [[ $delim_count -ge 2 ]]; then - # Grab everything after the second --- line - raw_body=$(printf '%s\n' "$file_norm" | awk '/^---$/ {if(++c==2){next}; if(c>=2){print}}') - else - # Fallback: no proper frontmatter detected; use entire file content (still allowing variant parsing) - raw_body=$file_norm - fi - # If somehow still empty, fallback once more to whole normalized file - if [[ -z ${raw_body// /} ]]; then - echo "Warning: body extraction empty for $template; using full file" >&2 - raw_body=$file_norm - fi - # Find single-line variant comment matching the variant: or - variant_line=$(printf '%s\n' "$raw_body" | awk -v sv="$script_variant" '//, m); if (m[1]!="") {print m[1]; exit}}') + description=$(printf '%s\n' "$file_content" | awk '/^description:/ {sub(/^description:[[:space:]]*/, ""); print; exit}') + # Find variant line content + variant_line=$(printf '%s\n' "$file_content" | grep -E ".*//") if [[ -z $variant_line ]]; then echo "Warning: no variant line found for $script_variant in $template" >&2 variant_line="(Missing variant command for $script_variant)" fi - # Replace the token VARIANT-INJECT with the selected variant line - injected=$(printf '%s\n' "$raw_body" | sed "s/VARIANT-INJECT/${variant_line//\//\/}/") - # Remove all single-line variant comments - injected=$(printf '%s\n' "$injected" | sed '//, m); if(m[1]!=""){print m[1]; exit}}' "$plan_tpl") + plan_norm=$(tr -d '\r' < "$plan_tpl") + variant_line=$(printf '%s\n' "$plan_norm" | grep -E ".*//; s/^[[:space:]]+//; s/[[:space:]]+$//") if [[ -n $variant_line ]]; then tmp_file=$(mktemp) - sed "s/VARIANT-INJECT/${variant_line//\//\/}/" "$plan_tpl" | sed "/__AGENT__/s//${agent}/g" | sed '/ - + + Given the implementation details provided as an argument, do this: diff --git a/templates/commands/specify.md b/templates/commands/specify.md index 111e278..b1d404a 100644 --- a/templates/commands/specify.md +++ b/templates/commands/specify.md @@ -1,8 +1,8 @@ --- description: Create or update the feature specification from a natural language feature description. --- - - + + Given the feature description provided as an argument, do this: diff --git a/templates/commands/tasks.md b/templates/commands/tasks.md index 3a58489..505ea9e 100644 --- a/templates/commands/tasks.md +++ b/templates/commands/tasks.md @@ -1,8 +1,8 @@ --- description: Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts. --- - - + + Given the context provided as an argument, do this: