Back to list
benbrastmckie

skill-status-sync

by benbrastmckie

NeoVim configuration optimized for writing in LaTeX with AI integration for Avante, Lectic, and Claude-Code

432🍴 463📅 Jan 15, 2026

SKILL.md


name: skill-status-sync description: Atomically update task status across TODO.md and state.json. Invoke when task status changes. allowed-tools: Read, Write, Edit context:

  • core/orchestration/state-management.md
  • core/standards/status-markers.md

Status Sync Skill

Atomic status updates across TODO.md and state.json.

Trigger Conditions

This skill activates when:

  • Task status needs to change
  • Artifacts are added to a task
  • Task metadata needs updating

Two-Phase Commit Pattern

Phase 1: Prepare

  1. Read Current State (using jq/grep for efficiency)

    # Read task from state.json via jq (fast, ~12ms)
    task_data=$(jq -r --arg num "$task_number" \
      '.active_projects[] | select(.project_number == ($num | tonumber))' \
      .claude/specs/state.json)
    
    # Read next_project_number for create operations
    next_num=$(jq -r '.next_project_number' .claude/specs/state.json)
    
    # Find task section in TODO.md via grep
    task_line=$(grep -n "^### ${task_number}\." .claude/specs/TODO.md | cut -d: -f1)
    
  2. Validate Task Exists

    • Check task_data is not empty (state.json)
    • Check task_line is found (TODO.md)
    • If not in both: Error
  3. Prepare Updates

    • Calculate new status
    • Prepare jq update for state.json
    • Prepare Edit for TODO.md task entry
    • For create operations: also prepare frontmatter update
    • Validate both are consistent

Phase 2: Commit

  1. Write state.json First

    • Machine state is source of truth
    • Faster to query and validate
  2. Write TODO.md Second

    • User-facing representation
    • May have formatting variations
  3. Verify Both Updated

    • Re-read both files
    • Confirm changes applied

Rollback (if needed)

If any write fails:

  1. Log the failure
  2. Attempt to restore original state
  3. Return error with details

Status Mapping

OperationOld StatusNew Status
Start researchnot_startedresearching
Complete researchresearchingresearched
Start planningresearchedplanning
Complete planningplanningplanned
Start implementplannedimplementing
Complete implementimplementingcompleted
Block taskanyblocked
Abandon taskanyabandoned

Task Creation (Special Case)

When creating a new task, BOTH files require additional updates beyond task entries:

state.json Updates

jq --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  '.next_project_number = ($next_num | tonumber) + 1 |
   .active_projects = [{new_task_object}] + .active_projects' \
  .claude/specs/state.json > /tmp/state.json && \
  mv /tmp/state.json .claude/specs/state.json

TODO.md Updates (TWO parts)

  1. Frontmatter: Update next_project_number in YAML frontmatter

    # Use sed or Edit to update frontmatter
    sed -i 's/^next_project_number: [0-9]*/next_project_number: NEW_NUM/' \
      .claude/specs/TODO.md
    
  2. Task Entry: Add entry under appropriate priority section

CRITICAL: next_project_number MUST match in both files after creation.

Update Formats

state.json Update

{
  "project_number": N,
  "status": "new_status",
  "last_updated": "ISO_TIMESTAMP",
  "artifacts": [
    {"path": "...", "type": "research|plan|summary"}
  ]
}

TODO.md Update

### {N}. {Title}
- **Status**: [{NEW_STATUS}]
- **{Artifact}**: [link](path)

Execution Flow

1. Receive update request:
   - task_number
   - new_status
   - artifacts (optional)
   - metadata (optional)

2. Phase 1 - Prepare:
   - Read both files
   - Validate task exists
   - Prepare updates

3. Phase 2 - Commit:
   - Write state.json
   - Write TODO.md
   - Verify success

4. Return result

Return Format

{
  "status": "completed|failed",
  "summary": "Updated task #N to [STATUS]",
  "task_number": N,
  "old_status": "previous",
  "new_status": "current",
  "files_updated": [
    ".claude/specs/state.json",
    ".claude/specs/TODO.md"
  ]
}

Error Handling

File Read Error

{
  "status": "failed",
  "error": "Could not read state.json",
  "recovery": "Check file exists and permissions"
}

Task Not Found

{
  "status": "failed",
  "error": "Task #N not found",
  "recovery": "Verify task number, check if archived"
}

Write Failure

{
  "status": "failed",
  "error": "Failed to write TODO.md",
  "recovery": "Check permissions, state.json may be updated"
}

Inconsistency Detected

{
  "status": "failed",
  "error": "TODO.md and state.json inconsistent",
  "recovery": "Run /task --sync to reconcile"
}

Score

Total Score

70/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

0/10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

+5
最近の活動

3ヶ月以内に更新

+5
フォーク

10回以上フォークされている

+5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

Reviews

💬

Reviews coming soon