skills/complete-card/SKILL.md
# Complete Card Mark a card as done by updating its status field to `done` and setting the updated timestamp. This replaces the old ticket archival system where tickets were moved to an `.archived/` directory. ## When to Use Mark a card complete when: - A Phase addressing the card's work has been completed and reviewed - The work item has been fully implemented and verified - The Overseer determines the card's requirements are satisfied ## Status Update Cards track their lifecycle state in
npx skillsauth add adamrdrew/ushabti skills/complete-cardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Mark a card as done by updating its status field to done and setting the updated timestamp. This replaces the old ticket archival system where tickets were moved to an .archived/ directory.
Mark a card complete when:
Cards track their lifecycle state in the status frontmatter field:
todo: Not yet started (default for new cards)backlog: Deprioritized or deferredin-progress: Currently being worked ondone: Completed and closedCompleting a card means setting status: done.
When marking a card complete, also update the updated field to the current UTC time in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ
Example: 2026-02-08T14:30:00Z
Generate timestamp:
date -u +"%Y-%m-%dT%H:%M:%SZ"
CRITICAL: When updating a card, you MUST preserve all existing frontmatter fields, including fields you don't recognize. Hieroglyphs may add additional fields that agents don't know about. Dropping unknown fields will corrupt the card.
Strategy:
status and updated fields.ushabti/cards/{slug}/card.md exists--- delimiters)status field to doneupdated field to current UTC timeslug="improve-error-handling"
card_path=".ushabti/cards/${slug}/card.md"
# Verify card exists
if [ ! -f "$card_path" ]; then
echo "Error: Card not found: $card_path"
exit 1
fi
# Generate new timestamp
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# Read current card
current_content=$(cat "$card_path")
# Update status and timestamp using sed
# This example assumes frontmatter is well-formed
updated_content=$(echo "$current_content" | sed "s/^status: .*/status: done/" | sed "s/^updated: .*/updated: ${timestamp}/")
# Write back
echo "$updated_content" > "$card_path"
echo "Card ${slug} marked as done"
For more robust parsing that preserves unknown fields:
slug="example-card"
card_path=".ushabti/cards/${slug}/card.md"
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
# Create temporary file
temp_file=$(mktemp)
# Update frontmatter while preserving structure
awk -v ts="$timestamp" '
BEGIN { in_frontmatter=0; first_delimiter=0 }
/^---$/ {
if (!first_delimiter) { first_delimiter=1; in_frontmatter=1 }
else if (in_frontmatter) { in_frontmatter=0 }
print; next
}
in_frontmatter && /^status:/ { print "status: done"; next }
in_frontmatter && /^updated:/ { print "updated: " ts; next }
{ print }
' "$card_path" > "$temp_file"
# Replace original
mv "$temp_file" "$card_path"
After updating, verify the changes:
# Check status field
grep '^status:' "$card_path"
# Expected: status: done
# Check updated timestamp
grep '^updated:' "$card_path"
# Expected: updated: <current timestamp>
# Verify frontmatter is still valid YAML
sed -n '/^---$/,/^---$/p' "$card_path" | sed '1d;$d'
Issue: Frontmatter order changes during update Solution: Manually restore alphabetical order or use YAML-aware tools
Issue: Unknown fields dropped during update Solution: Parse more carefully, preserving all fields not explicitly updated
Issue: Markdown body corrupted
Solution: Only modify the frontmatter section; everything after the closing --- should remain unchanged
.ushabti/cards/ (they are NOT moved to a separate directory)status: done should be excluded from "open work" listingsupdated timestamp tracks the last modification time (creation, status change, or any other update)data-ai
Set the status field in a phase's progress.yaml. Use instead of manual Edit calls when transitioning phase status.
development
Query the status of a phase. Returns structured status information for external consumers.
data-ai
Mark a step as implemented in progress.yaml with notes and touched files. Use after completing each step instead of manual Edit calls.
testing
# List Cards Scan and list all Hieroglyphs-compatible cards in `.ushabti/cards/`, with optional filtering by status or other criteria. ## When to Use Use this skill when: - You need to see all available work items - Looking for cards in a specific state (e.g., only `todo` cards) - Determining which cards to plan next - Checking card priorities and types ## Card Location Cards are stored in: ``` .ushabti/cards/{slug}/card.md ``` Each card is a directory containing a `card.md` file with YAML