engineer/skills/progress-log/SKILL.md
Use to propagate DAE state — turning handoff summaries into visible progress. Triggers — "/engineer.progress-log", "sync progress", "update the tracker", "reconcile the tracker", "refresh feature status".
npx skillsauth add swingerman/atdd progress-logInstall 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.
The propagation engine of DAE visibility. Skills emit handoff summaries; progress-log turns them into the two visible state layers — progress.md (the per-feature glanceable file) and the external tracker.
When the foundations say "the agentic summary contract handles propagation," this skill is that propagation. checkpoint: null.
/engineer.progress-log <slug> re-syncs one feature; --project reconciles all.Not for: changing artifacts (feature-edit); validating consistency (consistency-check); a session wrap-up (session-summary).
${CLAUDE_PLUGIN_ROOT}/scripts/dae_resolve.py (see references/resolving.md); the manifest carries the tracker config. Scope = one feature (auto / <slug>) or all (--project).handoffs/*.md not yet reflected in progress.md (compare timestamps against the last-synced marker).progress.md — per handoff: update the Checkpoints table row (if checkpoint: set), append to Verification reports (if a verification skill), append to the Handoff log, recompute the CURRENT header — the fixed, parseable first line of progress.md: > ▶ CP<N> <Stage> — <m>/<n> criteria met | NEXT: <action> | BLOCKED: <none|reason>. Derive <m>/<n> from the latest handoff's exit_criteria block for the current checkpoint, NEXT from its recommended_next, and BLOCKED from any unmet criterion that needs a human (else none).TrackedFeature record from local truth (feature.md + progress.md).upsert(TrackedFeature) per references/tracker.md: local-wins on DAE-managed fields, tracker-managed fields (comments, labels) preserved. local = no-op (the feature files are the tracker). Write the result to progress.md's "Tracker sync" line.--project only) Drift report — driver reconcile() per references/tracker.md; surface anything unexpected (orphan tracker entry, untracked local feature).progress-log does NOT emit a handoff summary — it is the single exception to the agentic summary contract. It is the mechanism that processes handoffs; emitting one would trigger another progress-log run, looping. Its record of work is the progress.md "Tracker sync" line. (Documented in the Foundation Design.)
When the fix skill reaches its Close step, append the rendered closure entry
to each feature_refs[*]/progress.md of the fix artifact.
Use ${CLAUDE_PLUGIN_ROOT}/scripts/dae_fix.py helper render_fix_closure_entry(rec, followups_summary)
to build the entry. Append it to each affected feature's progress.md under a new
H2 section (the helper produces a complete H2 + bullets block).
Fix closures use the same propagation contract as feature handoffs: visible at
the feature level so contributors browsing that feature see the bug history
without having to discover .engineer/fixes/.
When progress-log observes a feature advancing to status: done (CP8 complete
or PR merged), check whether an atdd-<slug> team exists. If it does, propose
teardown per the atdd:atdd-team lifecycle — auto-dispatch at autonomy
high/medium, surface and wait at low. nexthq saw a team idle for 5 days
after its feature shipped because nothing claimed responsibility for cleanup.
progress.md schema, agentic summary contract + this exemption (Section 5)references/tracker.md — the tracker drivers, TrackedFeature, local-wins reconciliationdata-ai
Use immediately after a PR is merged to clean up the local feature branch and resync main. Triggers — "/engineer.post-merge", "did we merge", "did we push", "PR merged", "post-merge cleanup", or right after a `gh pr merge` succeeds in the same session.
data-ai
Use to drive a bug fix from first report through close, with a "why didn't we catch it?" loop at the end. Triggers — "/engineer.fix", "a bug came in", "this is broken", "a user reported X", "there's a defect", "we have a regression", "this needs a fix", "another report", "more issues", "still failing", "validation failed again", "another bug", "next defect", "more fixes".
testing
Use mid-task when the working thread is lost — after a context compaction, a long agent run, or coming back to a feature unsure of the role, the current checkpoint, or the next action. Triggers — "/engineer.reorient", "reorient", "re-anchor", "what should I be doing right now", "I lost track", "where was I".
development
Use to check a feature's code against the charter's architecture rules — dependency layering, cycles, forbidden patterns, file naming, file size. Triggers — "/engineer.arch-check", "architecture check", "check architecture fitness", "does this follow the charter", "check layering".