بنقرة واحدة
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.