一键导入
phase-status
Query the status of a phase. Returns structured status information for external consumers.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Query the status of a phase. Returns structured status information for external consumers.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Bootstrap phase context for Builder. Provides current phase, next step, and full phase file contents.
Bootstrap phase context for Overseer. Provides phase under review with full file contents and card metadata.
Approve a phase — sets status to complete, marks all steps reviewed, updates linked card. Use when declaring a phase green.
Create a phase directory with all required files in one call. Use instead of separate mkdir + Write calls when creating a new phase.
Kick a phase back to building — sets status and adds new step entries to progress.yaml. Use when requesting fixes from Builder.
Mark a step as implemented in progress.yaml with notes and touched files. Use after completing each step instead of manual Edit calls.
| name | phase-status |
| description | Query the status of a phase. Returns structured status information for external consumers. |
| user-invocable | true |
This skill provides a stable public API for external tools (e.g., Pharaoh) to query phase status without directly coupling to Ushabti's internal file structure.
/phase-status [ARGUMENT]
Where ARGUMENT can be:
latest — returns the most recently modified phase (default if empty)0002-welcome-banner)welcome-banner)Find the phase with the most recently modified progress.yaml:
latest_phase=$(find .ushabti/phases -name "progress.yaml" -type f -exec ls -t {} + 2>/dev/null | head -1)
if [ -n "$latest_phase" ]; then
phase_dir=$(dirname "$latest_phase")
else
# No phases found
fi
Match directory names (exact or partial):
slug="$ARGUMENTS"
# Try exact match first
if [ -d ".ushabti/phases/$slug" ]; then
phase_dir=".ushabti/phases/$slug"
else
# Try partial match (first alphabetically)
phase_dir=$(find .ushabti/phases -maxdepth 1 -type d -name "*$slug*" | sort | head -1)
fi
Return exactly this format (parseable structured output):
PHASE_STATUS:
slug: {phase directory name}
status: {planned|building|review|complete}
steps_implemented: {count}
steps_total: {count}
If phase not found:
PHASE_STATUS:
error: Phase not found
Once you have the phase directory:
# Get slug (directory basename)
slug=$(basename "$phase_dir")
# Get status
phase_status=$(grep "^ status:" "$phase_dir/progress.yaml" 2>/dev/null | awk '{print $2}')
# Count implemented steps
steps_implemented=$(grep -c "implemented: true" "$phase_dir/progress.yaml" 2>/dev/null || echo 0)
# Count total steps
steps_total=$(grep -c "implemented:" "$phase_dir/progress.yaml" 2>/dev/null || echo 0)
Then output:
cat <<EOF
PHASE_STATUS:
slug: $slug
status: $phase_status
steps_implemented: $steps_implemented
steps_total: $steps_total
EOF
The output format is a public contract. External tools parse this format. Any change to the structure is a breaking change and must be versioned appropriately.