Files
agentic-dev/docs/work
Danijel Martinek 90fc2853f2 feat(work): add ISO timestamps + auto-bump on staged work-doc changes
- New scripts/work/bump-updated-timestamps.mjs stamps the `updated:`
  frontmatter field to the current ISO 8601 UTC timestamp on every
  staged docs/work/**/*.md file. Idempotent; adds the field after
  `created:` if missing.
- .husky/pre-commit invokes the bump script as step 2 (before
  rebuild-state) so _state.json sees the fresh timestamp.
- Backfill all existing work docs (4 PRDs + 3 epics + 21 stories):
    * created: promoted from \`YYYY-MM-DD\` -> ISO timestamp using
      git log --diff-filter=A on each file (first-commit date for
      stories that had no \`created:\` line, midnight UTC for PRDs
      and epics that had date-only created).
    * updated: added from \`git log -1 --format=%aI\` on each file
      (last-commit timestamp); will be re-stamped to "now" by the
      pre-commit hook on this commit.

Stories that had no \`created:\` line now get one.
2026-05-14 21:10:34 +02:00
..

docs/work — the local task system

Filesystem-backed Epic/Story/Task hierarchy used by AI agents and humans alike. See docs/architecture/agent-first-workflow-and-conformance.md for the full design. Until the work-system-v1 epic ships orchestration tooling, this folder is human-driven — agents read the files for context, humans flip checkboxes.

Layout

  • prds/<date>-<slug>.prd.md — source PRDs
  • <epic-slug>/_epic.md — one folder per epic
  • <epic-slug>/<story-slug>/_story.md — one folder per story
  • <epic-slug>/<story-slug>/<task-slug>.task.md — one file per task
  • _templates/ — copy-paste templates (added in work-system-v1)
  • _state.json — derived index (added in work-system-v1)

PRD lifecycle

PRD status frontmatter field: draft → in-review → approved → shipped.

  • draft → in-review — author flips when ready for review (manual)
  • in-review → approved — human reviewer flips on acceptance (manual)
  • approved → shipped — auto-flipped by pnpm work prd-ship <prd-id> when the seed epic finishes. The state-builder surfaces this signal under _state.jsonneeds_prd_ship[] so the orchestrator (or a reviewer running the sandcastle workflow) can act on it.

The decomposer refuses to run on draft PRDs. Once approved, the seed epic is generated; once the epic completes, the PRD is automatically flipped to shipped along with its commit list.