From andthen
Deterministic operations: update STATE.md, plan status, FIS checkboxes, standardized commits. Trigger on 'update state', 'mark story done', 'update FIS checkboxes', 'progress summary'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/andthen:opsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Reliable, template-driven operations for state management, git conventions, and progress tracking. These operations follow strict patterns to avoid LLM interpretation drift.
Reliable, template-driven operations for state management, git conventions, and progress tracking. These operations follow strict patterns to avoid LLM interpretation drift.
Philosophy: This skill provides structured templates and validation – it doesn't bypass the agent but gives it reliable patterns to follow. Think of it as "guardrails for deterministic work."
State document when it doesn't exist – initialization is the init skill's job; ops only reads/writes an existing State document as defined in the Project Document IndexParse the State document (path from Project Document Index, default: docs/STATE.md) and return a structured summary:
If the State document does not exist in the location defined by the Project Document Index, report "no state file" – do not create it or prompt the user.
Update specific fields in the State document (path from Project Document Index, default: docs/STATE.md):
Usage: update-state <field> <value>
If the State document does not exist in the location defined by the Project Document Index, report "no state file" – do not create it.
Supported fields:
phase: Current phase name/number (e.g. "Phase 2: Core Features")status: Overall project status – one of On Track, At Risk, Blockedactive-story: Add or update an active story entry
update-state active-story {story_id} "{story_name}" "In Progress"update-state active-story {story_id} Done → removes the row from Active Storiesupdate-state active-story {story_id} fis "{fis_path}" → updates the FIS columnblocker: Add or remove a blocker
update-state blocker "{description}"update-state blocker remove "{description}" → removes the matching entrydecision: Add a recent decision entry with timestampnote: Add a session continuity note with timestampAfter any update, set Last Updated to current timestamp.
Maintenance rules (apply automatically on every write):
Done (they belong in plan.md, not state). This section tracks only currently in-progress work — never accumulate completed milestone summaries here.Previous: 0.14, 0.13, 0.12, ...Done, or the blocker is older than 14 days with no recent activity)State document should stay under ~60 lines. If it exceeds this after other maintenance rules, trim the oldest/longest entries first. This file is a snapshot of current state, not a history log.Format for the State document (see Project Document Index):
# Project State
Last Updated: {YYYY-MM-DD HH:MM}
## Current Phase
Phase: {phase}
Status: {On Track | At Risk | Blocked}
## Active Stories
| Story | Status | FIS | Notes |
|-------|--------|-----|-------|
| {story_id}: {story_name} | {In Progress | Blocked} | {fis_path or –} | {brief note} |
## Recently Completed
- **{version/milestone}** ({date}): {one-line summary}
- **{version/milestone}** ({date}): {one-line summary}
Previous: {older milestone list, if any}
## Blockers
- {blocker description} _(added {date})_
## Recent Decisions
- [{date}] {decision}
## Session Continuity Notes
- [{date}] {note}
Update story status fields in plan.md:
Usage: update-plan <plan_path> <story_id> <status>
Actions:
Pending → Spec Ready → In Progress → DoneDone: check off all acceptance criteria checkboxesCheck off task/criteria checkboxes in a FIS document:
Usage: update-fis <fis_path> <task_id|all>
Actions:
task_id is a specific ID: Mark that task's checkbox: - [ ] **{task_id}** → - [x] **{task_id}**task_id is all: Mark ALL unchecked task checkboxes (- [ ] → - [x]), all success criteria checkboxes, and all Final Validation Checklist items in one passall): also mark success criteria and Final Validation Checklist itemsStandardized commit message formatting:
Format: {type}({scope}): {description}
Types: feat, fix, refactor, test, docs, chore, style, perf, ci
Usage: commit <type> <scope> <description>
Rules:
feat(auth): add login form [S03]Standardized branch naming:
Format: {type}/{story-id}-{slug}
Types: feat, fix, refactor, chore, docs
Usage: branch <type> <story-id> <slug>
Example: feat/S03-user-authentication
Rules:
Format a changelog entry:
Usage: changelog <version> <entries...>
Format:
## [{version}] – {YYYY-MM-DD}
### Added
- {description} ([S{id}])
### Changed
- {description}
### Fixed
- {description}
Generate progress summary from plan.md:
Usage: progress <plan_path>
Output:
## Progress Summary
- **Total Stories**: {N}
- **Completed**: {done} ({percentage}%)
- **Spec Ready**: {spec_ready}
- **In Progress**: {in_progress}
- **Pending**: {pending}
- **Blocked**: {blocked}
### By Phase
| Phase | Total | Done | Spec Ready | In Progress | Pending |
|-------|-------|------|------------|-------------|---------|
| {phase} | {n} | {n} | {n} | {n} | {n} |
### Current Wave
- Wave {N}: {status} ({done}/{total} stories complete)
Detect stories that may be stale:
Usage: stale <plan_path>
A story is potentially stale if:
In Progress but no commits touch related files in 2+ daysDone but story hasn't startedOutput: List of potentially stale stories with reasons.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub it-huset/andthen --plugin andthen