savepoint 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/.claude/settings.local.json +12 -1
  2. package/.github/workflows/ci.yml +20 -0
  3. package/.golangci.yml +11 -0
  4. package/.savepoint/Design.md +40 -38
  5. package/.savepoint/{audit/v1.1/E02-cross-platform-compatibility/proposals.md → releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md} +48 -38
  6. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +195 -0
  7. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +14 -1
  8. package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +3 -3
  9. package/.savepoint/{audit/v1.1/E04-epic-navigation/proposals.md → releases/v1.1/epics/E04-epic-navigation/E04-Audit.md} +65 -54
  10. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +237 -0
  11. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +25 -16
  12. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +17 -6
  13. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +15 -5
  14. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +19 -5
  15. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +11 -1
  16. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +9 -6
  17. package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +29 -13
  18. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +56 -0
  19. package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +63 -0
  20. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +44 -0
  21. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +35 -0
  22. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +40 -0
  23. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +45 -0
  24. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +26 -0
  25. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +33 -0
  26. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +34 -0
  27. package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +33 -0
  28. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +336 -0
  29. package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +61 -0
  30. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +37 -0
  31. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +28 -0
  32. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +46 -0
  33. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +27 -0
  34. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +25 -0
  35. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +26 -0
  36. package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +26 -0
  37. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +333 -0
  38. package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +68 -0
  39. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +26 -0
  40. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +27 -0
  41. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +28 -0
  42. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +29 -0
  43. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +27 -0
  44. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +29 -0
  45. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +29 -0
  46. package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +27 -0
  47. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +207 -0
  48. package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +65 -0
  49. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +24 -0
  50. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +28 -0
  51. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +29 -0
  52. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +27 -0
  53. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +28 -0
  54. package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +31 -0
  55. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +36 -0
  56. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +25 -0
  57. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +21 -0
  58. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +22 -0
  59. package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +29 -0
  60. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +444 -0
  61. package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +45 -0
  62. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +35 -0
  63. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +19 -0
  64. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +29 -0
  65. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +25 -0
  66. package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +37 -0
  67. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +118 -0
  68. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +73 -0
  69. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +66 -0
  70. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +35 -0
  71. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +60 -0
  72. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +33 -0
  73. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +37 -0
  74. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +40 -0
  75. package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +37 -0
  76. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +267 -0
  77. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +54 -0
  78. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +39 -0
  79. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +42 -0
  80. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +33 -0
  81. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +35 -0
  82. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +27 -0
  83. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +29 -0
  84. package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +28 -0
  85. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Audit.md +272 -0
  86. package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +60 -0
  87. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +31 -0
  88. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +34 -0
  89. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +30 -0
  90. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +27 -0
  91. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +28 -0
  92. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +26 -0
  93. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +33 -0
  94. package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T008-ci-and-release-automation.md +46 -0
  95. package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +25 -0
  96. package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +27 -0
  97. package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +27 -0
  98. package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +29 -0
  99. package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +31 -0
  100. package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +34 -0
  101. package/.savepoint/releases/v1.1/v1.1-PRD.md +67 -7
  102. package/.savepoint/router.md +10 -17
  103. package/AGENTS.md +39 -24
  104. package/Makefile +3 -1
  105. package/README.md +0 -1
  106. package/agent-skills/savepoint-audit/SKILL.md +86 -34
  107. package/agent-skills/savepoint-build-task/SKILL.md +7 -2
  108. package/agent-skills/savepoint-create-plan/SKILL.md +7 -2
  109. package/agent-skills/savepoint-create-task/SKILL.md +44 -31
  110. package/agent-skills/savepoint-draft-prd/SKILL.md +7 -2
  111. package/agent-skills/savepoint-system-design/SKILL.md +7 -2
  112. package/agent_skills_test.go +91 -0
  113. package/cmd/board.go +59 -0
  114. package/cmd/board_test.go +137 -0
  115. package/cmd/doctor.go +53 -0
  116. package/cmd/doctor_test.go +146 -0
  117. package/cmd/init.go +63 -0
  118. package/cmd/init_test.go +104 -0
  119. package/internal/board/board.go +44 -36
  120. package/internal/board/board_test.go +27 -82
  121. package/internal/board/card.go +43 -23
  122. package/internal/board/card_test.go +74 -5
  123. package/internal/board/column.go +75 -15
  124. package/internal/board/column_test.go +76 -2
  125. package/internal/board/debug.go +26 -0
  126. package/internal/board/debug_test.go +108 -0
  127. package/internal/board/detail.go +33 -47
  128. package/internal/board/detail_test.go +48 -0
  129. package/internal/board/epic_panel.go +120 -22
  130. package/internal/board/epic_panel_test.go +302 -17
  131. package/internal/board/help.go +1 -0
  132. package/internal/board/help_test.go +1 -0
  133. package/internal/board/integration_test.go +266 -0
  134. package/internal/board/interfaces.go +65 -0
  135. package/internal/board/interfaces_test.go +114 -0
  136. package/internal/board/io.go +93 -0
  137. package/internal/board/model.go +79 -118
  138. package/internal/board/plain.go +88 -0
  139. package/internal/board/plain_test.go +117 -0
  140. package/internal/board/release.go +1 -9
  141. package/internal/board/release_test.go +6 -6
  142. package/internal/board/status.go +4 -4
  143. package/internal/board/theme.go +24 -0
  144. package/internal/board/theme_test.go +31 -0
  145. package/internal/board/transitions.go +113 -88
  146. package/internal/board/transitions_test.go +164 -141
  147. package/internal/board/tui.go +32 -0
  148. package/internal/board/update.go +344 -215
  149. package/internal/board/update_test.go +326 -18
  150. package/internal/board/util.go +76 -0
  151. package/internal/board/view.go +31 -28
  152. package/internal/board/view_test.go +74 -2
  153. package/internal/board/watch.go +41 -5
  154. package/internal/buildtool/main.go +45 -15
  155. package/internal/buildtool/main_test.go +224 -0
  156. package/internal/data/config.go +17 -3
  157. package/internal/data/config_test.go +49 -0
  158. package/internal/data/discover.go +26 -0
  159. package/internal/data/discover_test.go +34 -10
  160. package/internal/data/errors.go +4 -0
  161. package/internal/data/fuzz_test.go +75 -0
  162. package/internal/data/lifecycle.go +13 -6
  163. package/internal/data/lifecycle_test.go +14 -11
  164. package/internal/data/parser.go +22 -6
  165. package/internal/data/parser_test.go +31 -7
  166. package/internal/data/task.go +0 -9
  167. package/internal/data/testdata/fuzz/FuzzSplitFrontmatterBody/68eb66b0fe91e7e3 +2 -0
  168. package/internal/data/write.go +88 -11
  169. package/internal/data/write_test.go +167 -0
  170. package/internal/doctor/checks.go +567 -0
  171. package/internal/doctor/checks_test.go +716 -0
  172. package/internal/doctor/gates.go +193 -0
  173. package/internal/doctor/gates_test.go +166 -0
  174. package/internal/doctor/interfaces.go +64 -0
  175. package/internal/doctor/interfaces_test.go +104 -0
  176. package/internal/doctor/repairs.go +80 -0
  177. package/internal/doctor/repairs_test.go +81 -0
  178. package/internal/doctor/report.go +157 -0
  179. package/internal/doctor/report_test.go +89 -0
  180. package/internal/init/clipboard.go +146 -0
  181. package/internal/init/clipboard_test.go +74 -0
  182. package/internal/init/install.go +16 -0
  183. package/internal/init/integration_test.go +197 -0
  184. package/internal/init/prompt.go +14 -0
  185. package/internal/init/prompt_test.go +77 -0
  186. package/internal/init/scaffold.go +59 -0
  187. package/internal/init/scaffold_test.go +179 -0
  188. package/internal/init/template_freshness_test.go +56 -0
  189. package/internal/init/validate.go +85 -0
  190. package/internal/init/validate_test.go +141 -0
  191. package/internal/init/write.go +73 -0
  192. package/internal/init/write_test.go +91 -0
  193. package/internal/styles/styles_test.go +133 -0
  194. package/internal/testutil/fixture.go +113 -0
  195. package/internal/testutil/fs.go +26 -0
  196. package/main.go +120 -4
  197. package/package.json +2 -2
  198. package/project-audit/audit_report_glm_5.1.md +411 -0
  199. package/project-audit/audit_report_opus_4.6.md +406 -0
  200. package/project-audit/consolidated-audit-report.md +456 -0
  201. package/templates/project/.savepoint/Design.md +2 -2
  202. package/templates/project/.savepoint/router.md +10 -10
  203. package/templates/project/AGENTS.md +33 -21
  204. package/templates/project/agent-skills/savepoint-audit/SKILL.md +87 -0
  205. package/templates/project/agent-skills/savepoint-build-task/SKILL.md +44 -0
  206. package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +33 -0
  207. package/templates/project/agent-skills/savepoint-create-task/SKILL.md +44 -0
  208. package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +37 -0
  209. package/templates/project/agent-skills/savepoint-system-design/SKILL.md +38 -0
  210. package/templates/prompts/audit-reconciliation.prompt.md +33 -28
  211. package/templates/prompts/design.prompt.md +3 -1
  212. package/.savepoint/audit/v1/E01/proposals.md +0 -168
  213. package/.savepoint/audit/v1/E01/snapshot.md +0 -78
  214. package/.savepoint/audit/v1/E01-go-setup/proposals.md +0 -166
  215. package/.savepoint/audit/v1/E01-go-setup/snapshot.md +0 -71
  216. package/.savepoint/audit/v1/E01-scaffolding/proposals/AGENTS.md +0 -66
  217. package/.savepoint/audit/v1/E01-scaffolding/proposals/Design.md +0 -210
  218. package/.savepoint/audit/v1/E01-scaffolding/proposals/epic-Design.md +0 -117
  219. package/.savepoint/audit/v1/E01-scaffolding/proposals/quality-review.md +0 -101
  220. package/.savepoint/audit/v1/E01-scaffolding/snapshot.md +0 -54
  221. package/.savepoint/audit/v1/E02-data-model/snapshot.md +0 -128
  222. package/.savepoint/audit/v1/E02-data-readers/proposals.md +0 -123
  223. package/.savepoint/audit/v1/E02-data-readers/snapshot.md +0 -54
  224. package/.savepoint/audit/v1/E03-board-tui-core/proposals.md +0 -146
  225. package/.savepoint/audit/v1/E03-board-tui-core/snapshot.md +0 -57
  226. package/.savepoint/audit/v1/E03-cli-foundation/snapshot.md +0 -106
  227. package/.savepoint/audit/v1/E04-board-components/proposals.md +0 -118
  228. package/.savepoint/audit/v1/E04-board-components/snapshot.md +0 -77
  229. package/.savepoint/audit/v1/E04-templates-and-prompts/snapshot.md +0 -115
  230. package/.savepoint/audit/v1/E05-init-command/snapshot.md +0 -125
  231. package/.savepoint/audit/v1/E05-phase-transitions/proposals.md +0 -83
  232. package/.savepoint/audit/v1/E05-phase-transitions/snapshot.md +0 -36
  233. package/.savepoint/audit/v1/E06-atari-noir-layout/proposals.md +0 -130
  234. package/.savepoint/audit/v1/E06-atari-noir-layout/snapshot.md +0 -84
  235. package/.savepoint/audit/v1/E06-tui-board/snapshot.md +0 -64
  236. package/.savepoint/audit/v1/E07-audit-pipeline/snapshot.md +0 -165
  237. package/.savepoint/audit/v1/E08-board-workflow-cleanup/snapshot.md +0 -65
  238. package/.savepoint/audit/v1.1/E02-cross-platform-compatibility/snapshot.md +0 -41
  239. package/.savepoint/audit/v1.1/E04-epic-navigation/snapshot.md +0 -48
  240. package/ink-cli-ui-design.zip +0 -0
  241. package/savepoint +0 -0
  242. package/savepoint.exe +0 -0
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: E06-audit-command/T004-ai-reconcile
3
+ status: planned
4
+ objective: "Generate AI prompt for semantic review, parse findings"
5
+ depends_on: ["E06-audit-command/T003-snapshot"]
6
+ ---
7
+
8
+ # T004: AI Reconcile (Semantic Review)
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - Generates a prompt file for human to give to their AI
13
+ - Prompt includes: snapshot, epic E##-Detail.md, changed files list, AGENTS.md Code Style rules
14
+ - Prompt instructs AI to check against 10 Code Style rules
15
+ - After human runs AI, parses findings for "Must Fix Before Close" section
16
+ - Fails audit if "Must Fix Before Close" has any items
17
+
18
+ ## Implementation Plan
19
+
20
+ - [ ] Add `internal/audit/reconcile.go`
21
+ - [ ] Implement `GeneratePrompt(epic, release) (string, error)`
22
+ - [ ] Embed 10 Code Style rules in prompt template
23
+ - [ ] Include snapshot.md content in prompt
24
+ - [ ] Include epic E##-Detail.md in prompt
25
+ - [ ] Include changed files list in prompt
26
+ - [ ] Implement `ParseFindings(output) (hasIssues bool, err)`
27
+ - [ ] Check for "Must Fix Before Close" header and non-empty content
28
+ - [ ] Test prompt generation and finding parsing
29
+ - [ ] Run `make build && make test`
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: E06-audit-command/T006-tui-review
3
+ status: planned
4
+ objective: "Implement TUI review mode for approving/rejecting proposals"
5
+ depends_on: ["E06-audit-command/T005-proposals"]
6
+ ---
7
+
8
+ # T006: TUI Review Mode
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - Shows each proposal as a side-by-side diff (old vs new)
13
+ - User can Approve, Reject, or Edit each proposal
14
+ - Edit opens inline editor to modify the "With" section
15
+ - High-divergence warning if proposal changes >50% of file
16
+ - Shows progress: X of Y proposals reviewed
17
+ - Keyboard: arrow nav, Enter approve, Backspace reject, e edit, q quit
18
+
19
+ ## Implementation Plan
20
+
21
+ - [ ] Add `internal/audit/review.go` with Bubble Tea model
22
+ - [ ] Create `ReviewModel` with proposals, current index, decisions
23
+ - [ ] Implement `RenderProposal` showing old/new side-by-side
24
+ - [ ] Add keyboard handlers: Up/Down (nav), Enter (approve), Backspace (reject), e (edit)
25
+ - [ ] Implement edit mode: text area for "With" content
26
+ - [ ] Add high-divergence check (config threshold from config.yml)
27
+ - [ ] Show progress bar: "Proposal 1 of 5"
28
+ - [ ] Track decisions: approved/rejected/edited map
29
+ - [ ] Return decisions to caller for apply step
30
+ - [ ] Test review flow manually
31
+ - [ ] Run `make build && make test`
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: E06-audit-command/T008-skip-handling
3
+ status: planned
4
+ objective: "Implement audit skip with logging"
5
+ depends_on: ["E06-audit-command/T001-cli-entrypoint"]
6
+ ---
7
+
8
+ # T008: Skip Handling
9
+
10
+ ## Acceptance Criteria
11
+
12
+ - `--skip --reason "..."` flags are required together
13
+ - Missing reason shows error
14
+ - Skipped audit logged to `.savepoint/audit-log.md`
15
+ - Log entry includes: timestamp, epic, release, reason, skipped-by
16
+ - Skipped epic still advances router (no changes to docs)
17
+
18
+ ## Implementation Plan
19
+
20
+ - [ ] Add `internal/audit/log.go`
21
+ - [ ] Implement `LogSkip(epic, release, reason) error`
22
+ - [ ] Parse existing audit-log.md or create new
23
+ - [ ] Append new entry in format:
24
+ ```markdown
25
+ ## {timestamp}
26
+
27
+ - **Epic:** {epic}
28
+ - **Release:** {release}
29
+ - **Reason:** {user reason}
30
+ - **Status:** ⚠ skipped
31
+ ```
32
+ - [ ] Update router to advance past skipped epic
33
+ - [ ] Test skip flow with valid/invalid args
34
+ - [ ] Run `make build && make test`
@@ -42,22 +42,82 @@ v1.1 is the "love what you look at" release. It takes the functional board from
42
42
  - Existing `E` key dropdown retained
43
43
  - 2 tasks planned
44
44
 
45
- 5. **Tasking Permissions & Router Updates (E05)** *Not started*
45
+ 5. **Tasking Permissions & Router Updates (E05)** *Audited and complete*
46
46
  - Agents can only set `status: in_progress`; user alone sets `done` or retreats
47
- - New TUI `m` hotkey explicitly updates router to the focused task
48
- - Router update decoupled from navigation — browse without side effects
49
- - Last task in epic detected router shows `audit-pending`
47
+ - New TUI `p` priority hotkey explicitly updates router to the focused non-done task
48
+ - Router task priority decoupled from navigation — browse without side effects
49
+ - Priority writes keep router in `task-building`; audit handoff remains explicit
50
+ - All 6 tasks done
51
+
52
+ 6. **Audit Command (E06)** — *Planned*
53
+ - `savepoint audit <epic-id|release>` runs full pipeline
54
+ - Quality gates block on failure
55
+ - AI semantic review checks 10 Code Style rules — blocks if "Must Fix Before Close" has items
56
+ - TUI review mode for approving/rejecting proposals
57
+ - Updates Design.md last_audited, marks epic status: audited
58
+ - 9 tasks planned
59
+
60
+ 7. **Init Command (E07)** — *Planned*
61
+ - `savepoint init [dir] [--force] [--install]` scaffolds .savepoint/
62
+ - Target validation (empty/compatible/already-initialized)
63
+ - Template-based scaffold with project name interpolation
64
+ - Magic prompt output to stdout + clipboard
65
+ - Best-effort clipboard (doesn't fail on error)
66
+ - 7 tasks planned
67
+
68
+ 8. **Board Command (E08)** — *Planned*
69
+ - `savepoint board [--release <release>] [--epic <epic>]` launches TUI
70
+ - `savepoint` (no args) defaults to board
71
+ - Bubble Tea TUI with 3-column Kanban
72
+ - Detail pane for selected task
73
+ - Keyboard navigation (arrows, vim-style j/k/h/l)
74
+ - Status transitions with gate enforcement
75
+ - Non-TTY plain table fallback
76
+ - 8 tasks planned
77
+
78
+ 9. **Doctor Command (E09)** — *Planned*
79
+ - `savepoint doctor [--epic <epic>]` runs diagnostics
80
+ - Config, router, structure, YAML validation
81
+ - Dependency checks (missing deps, cycles, duplicates)
82
+ - Audit state and orphan detection
83
+ - Ad-hoc quality gate runner
84
+ - Human-readable diagnostic output with repair suggestions
85
+ - Exit codes: 0=clean, 1=problems, 2=error
50
86
  - 6 tasks planned
51
87
 
88
+ 10. **Task File Validation & Auto-Fix (E12)** — *In Progress*
89
+ - Default `phase: build` when `status=in_progress` but phase missing
90
+ - Default `status: planned` when both status and column missing
91
+ - Better error hints with suggested fixes
92
+ - Validate on write with helpful messages
93
+
94
+ 11. **Codebase Audit Remediation (E13)** — *In Progress*
95
+ - Fix cycle detection bug producing inaccurate error paths
96
+ - Remove dead code, stdlib reimplementations, hardcoded state maps
97
+ - Centralize duplicated logic (normalization, frontmatter extraction, shared utilities)
98
+ - Fix AtomicWrite cross-device fallback and config accent defaults
99
+ - Add quality gate timeout
100
+ - Remove committed binaries, add gitignore and linter config
101
+ - Decompose `update.go` monolith into focused handlers
102
+ - Extract synchronous I/O from `Update()` into `tea.Cmd` async pattern
103
+ - Add test coverage for untested packages
104
+ - 7 tasks planned
105
+
52
106
  ## Epic breakdown
53
107
 
54
108
  | # | Epic | Status | Tasks |
55
109
  |---|------|--------|-------|
56
110
  | 01 | TUI Optimisation | Audited | 7/7 done |
57
- | 02 | Cross-Platform Compatibility | Planned | 0/4 done |
111
+ | 02 | Cross-Platform Compatibility | Audited | 4/4 done |
58
112
  | 03 | UI Visual Refinement | Planned | 0/4 done |
59
- | 04 | Epic Navigation | Designing | 0/2 done |
60
- | 05 | Tasking Permissions & Router Updates | Planned | 0/6 done |
113
+ | 04 | Epic Navigation | Audited | 2/2 done |
114
+ | 05 | Tasking Permissions & Router Updates | Audited | 6/6 done |
115
+ | 06 | Audit Command | Planned | 0/9 done |
116
+ | 07 | Init Command | Planned | 0/7 done |
117
+ | 08 | Board Command | Planned | 0/8 done |
118
+ | 09 | Doctor Command | Planned | 0/6 done |
119
+ | 10 | Task File Validation & Auto-Fix | In Progress | 5/5 done |
120
+ | 13 | Codebase Audit Remediation | In Progress | 0/7 done |
61
121
 
62
122
  ## Success criteria
63
123
 
@@ -12,11 +12,11 @@ Read `.savepoint/PRD.md` only for vision changes. Read `.savepoint/Design.md` on
12
12
  ## Current state
13
13
 
14
14
  ```yaml
15
- state: task-building
15
+ state: epic-design
16
16
  release: v1.1
17
- epic: E05-tasking-permissions
18
- task: E05-tasking-permissions/T005-update-help-overlay
19
- next_action: Build E05-tasking-permissions/T005-update-help-overlay.
17
+ epic: ""
18
+ task: ""
19
+ next_action: Plan next epic.
20
20
  ```
21
21
 
22
22
  ## State → action
@@ -39,26 +39,19 @@ Epic exists, tasks missing.
39
39
 
40
40
  **Next:** 1) Re-read epic, 2) Create task files at `tasks/TNNN-slug.md` with `status: planned`, `objective`, `depends_on`, 3) Add `## Implementation Plan` checkboxes per task. When all planned → first unblocked task.
41
41
 
42
- ### task-planning
43
-
44
- Reserved for repair/late tasks.
45
-
46
- **Next:** Write implementation plan, set `status: planned`, stop.
47
-
48
42
  ### task-building
49
43
 
50
44
  Task `in_progress`, depends satisfied.
51
45
 
52
- **Next:** Execute plan, tick checkboxes, run quality gates, set `status: done`, update router to next task or `audit-pending`. Stop.
46
+ **Next:** When starting work, set task `status: in_progress` and press `p` in TUI to mark the focused task as router priority. Execute plan, tick checkboxes, run quality gates, update router to next task or `audit-pending`. Stop.
53
47
 
54
48
  ### audit-pending
55
49
 
56
50
  Epic complete, needs audit before next epic.
57
51
 
58
- **Next:** Read snapshot + epic E##-Detail.md + changed files. Write proposals to `.savepoint/audit/{release}/{E##-epic}/proposals.md`:
59
- - Design.md delta
60
- - AGENTS.md Codebase Map refresh
61
- - Epic detail "implemented as" notes
62
- - Quality review against Code Style rules
52
+ **Next:** Fresh audit agent reads epic E##-Detail.md, task files, drift notes, Design.md, AGENTS.md, and scoped changed files. Write one audit file to `.savepoint/releases/{release}/epics/{E##-epic}/E##-Audit.md`:
53
+ - `## Main Findings` user-facing narrative only
54
+ - `## Code Style Review` checklist against AGENTS.md rules
55
+ - `## Proposed Changes` admin/apply blocks using `### Target File`, `### Replace`, `### With`
63
56
 
64
- After user approves: apply proposals, mark epic `status: audited`, update Design.md `last_audited`, advance router.
57
+ After user approves: apply proposals, mark epic `status: audited`, update Design.md `last_audited`, advance router.
package/AGENTS.md CHANGED
@@ -16,25 +16,29 @@
16
16
  | task-building | savepoint-build-task |
17
17
  | audit-pending | savepoint-audit |
18
18
 
19
- Use `skill` tool.
19
+ Use the `skill` tool when the listed skill is available. If the agent says the skill is not found, read `agent-skills/{skill}/SKILL.md` directly and follow it as the active skill.
20
20
 
21
21
  Read `.savepoint/PRD.md` only for vision changes, `.savepoint/Design.md` only for architecture/audit.
22
22
 
23
23
  ## Task Status
24
24
 
25
25
  - `status`: only `planned`, `in_progress`, or `done`
26
- - `phase` (build/test/audit): only when `status: in_progress`
26
+ - `stage` (build/test/audit): **required** when `status: in_progress` — omitting it is a parse error
27
27
  - Never: todo, doing, blocked, review, audit
28
+ - Agents may set a task to `status: in_progress` when starting implementation.
29
+ - Only the user may set a task to `status: done` or retreat a task to an earlier status.
28
30
 
29
31
  ## Implementation
30
32
 
31
- 1. Read task's `## Acceptance Criteria` + `## Implementation Plan`
32
- 2. Execute in order, tick checkboxes
33
- 3. Verify every AC has passing test/outcome
34
- 4. Run quality gates (build + test)
35
- 5. Update task: tick boxes, fill `## Context Log`, set `status: done`
36
- 6. Update router.md: next task or `audit-pending`
37
- 7. **Stop. Prompt user before continuing.**
33
+ 1. Read task's `## Context Files` using `Read` tool — one call per file, no explore, no glob
34
+ 2. Read task's `## Acceptance Criteria` + `## Implementation Plan`
35
+ 3. When starting implementation, set task frontmatter to `status: in_progress` + `stage: build` (both required together)
36
+ 4. After setting `in_progress`, press `p` in the TUI to mark the focused task as router priority
37
+ 5. Execute in order, tick checkboxes
38
+ 6. Verify every AC has passing test/outcome
39
+ 7. Run quality gates (build + test)
40
+ 8. Update router.md: next task or `audit-pending`
41
+ 9. **Stop. Prompt user before continuing.**
38
42
 
39
43
  ## Drift Check
40
44
 
@@ -47,18 +51,26 @@ If yes → append `## Drift Notes` to task file.
47
51
 
48
52
  The agent that builds an epic **must not audit it**. Start a fresh session.
49
53
 
54
+ ## Audit File Structure
55
+
56
+ - Audit is agent-led via `savepoint-audit`, not a `savepoint audit` CLI pipeline.
57
+ - Write exactly one `.savepoint/releases/{release}/epics/{E##-slug}/E##-Audit.md`.
58
+ - The TUI Audit tab renders `## Main Findings` and `## Code Style Review` only.
59
+ - Keep file-specific `### Target File` / `### Replace` / `### With` blocks under `## Proposed Changes` so admin apply details do not appear in the Epic Detail panel.
60
+ - During audit apply/close, update the same `E##-Audit.md` visible sections so `## Main Findings` and `## Code Style Review` describe the applied outcome, not stale pre-apply blockers.
61
+
50
62
  ## Code Style
51
63
 
52
- 1. One job per file
53
- 2. One-sentence functions
54
- 3. Test branches
55
- 4. Types are documentation
56
- 5. Build, don't speculate
57
- 6. Errors at boundaries
58
- 7. One source of truth
59
- 8. Comments explain WHY
60
- 9. Content in data files
61
- 10. Small diffs
64
+ - **One job per file** — split files when responsibilities mix.
65
+ - **One job per function** — small, named, testable units.
66
+ - **Test branches** — cover meaningful conditionals and edge cases.
67
+ - **Types document intent** — prefer explicit types over comments.
68
+ - **Build only what is needed** — no speculative abstractions.
69
+ - **Handle errors at boundaries** — validate inputs, APIs, IO, and external data.
70
+ - **One source of truth** — no duplicated rules, constants, state, or config.
71
+ - **Comments explain why** — not what the code already says.
72
+ - **Content lives in data** — keep copy/config out of logic.
73
+ - **Small diffs** — minimal, reviewable, behaviour-preserving changes.
62
74
 
63
75
  ## Build
64
76
 
@@ -71,14 +83,17 @@ make build && make test
71
83
  | Module | Purpose |
72
84
  |--------|---------|
73
85
  | `main.go` | CLI entrypoint, --version |
74
- | `internal/board/` | TUI board, overlays, epic sidebar, status glyphs |
75
- | `internal/buildtool/` | Makefile helper, cross-compile, archives |
76
- | `internal/data/` | Task/router models, frontmatter parsing, discovery |
86
+ | `cmd/` | CLI command arg parsing and dispatch for init, board, and doctor |
87
+ | `internal/init/` | Target validation, scaffold writing from templates |
88
+ | `internal/board/` | TUI board, overlays, epic sidebar, Next Activity line, router priority key, detail checklist rendering, status glyphs, forced color profile, debug logging hooks, async update I/O commands, shared board utilities |
89
+ | `internal/buildtool/` | Makefile helper, cross-compile including Windows targets, archives, distribution checksums |
90
+ | `internal/doctor/` | Read-only project diagnostics, integrity checks, timed quality gate execution, report formatting, typed repair suggestions |
91
+ | `internal/data/` | Task/router models, frontmatter parsing/splitting, lifecycle validation/defaulting, discovery including root-dir traversal, unified task status constants, canonical write helpers |
92
+ | `internal/testutil/` | Shared Go test fixtures and filesystem helpers for internal package tests |
77
93
  | `internal/styles/` | Atari-Noir palette, TUI styles |
78
- | `cmd/` | CLI subcommands |
79
94
  | `templates/` | Scaffold markdown, YAML, prompts |
80
95
  | `agent-skills/` | Phase-specific skill guides |
81
96
 
82
97
  ## CLI Rules
83
98
 
84
- **Never run `savepoint` commands.** The CLI is for the human. Edit files directly.
99
+ **Never run `savepoint` commands.** The CLI is for the human. Edit files directly.
package/Makefile CHANGED
@@ -1,4 +1,4 @@
1
- .PHONY: build test run clean build-linux build-darwin build-all dist smoke-test
1
+ .PHONY: build test run clean build-linux build-darwin build-all dist smoke-test ci
2
2
 
3
3
  VERSION ?=
4
4
 
@@ -27,3 +27,5 @@ dist:
27
27
 
28
28
  smoke-test:
29
29
  go run ./internal/buildtool -version "$(VERSION)" smoke-test
30
+
31
+ ci: test build
package/README.md CHANGED
@@ -61,7 +61,6 @@ Built for a cinematic, technical feel without the bloat.
61
61
  | :----------------- | :--------------------------------------------------------------------------------------------------- |
62
62
  | `savepoint init` | Scaffold the loop, write your `AGENTS.md` guide, drop the baby gates, and generate the magic prompt. |
63
63
  | `savepoint board` | Launch the Atari-Noir Kanban TUI to track the vibe. |
64
- | `savepoint audit` | Stop the AI. Sync the map with the territory. |
65
64
  | `savepoint doctor` | Check the integrity of the state machine. |
66
65
 
67
66
  ---
@@ -1,35 +1,87 @@
1
- # Savepoint Skill: Audit (`audit`)
2
-
3
- ## Objective
4
- At the end of an epic, review the implemented code against the Epic objectives and Task Acceptance Criteria, and reconcile any documentation "Drift".
5
-
6
- ## Context
7
- The Audit Gate is Savepoint's wedge. It prevents projects from degrading into chaos. The `audit` agent acts as the Quality Assurance and Documentation Lead. It reviews the work of the `build-task` agent with "fresh eyes," ensuring that the `Design.md` and the `AGENTS.md` Codebase Map reflect the actual reality of the codebase before the next Epic begins.
8
-
9
- ## Trigger
10
- This skill is activated when the `.savepoint/router.md` state is `audit-pending`.
11
-
12
- ## Input
13
- - `.savepoint/audit/{release}/{E##-slug}/snapshot.md` (what changed).
1
+ ---
2
+ name: savepoint-audit
3
+ description: Performs Savepoint audit-pending work for a completed epic, reviewing implementation against task acceptance criteria and writing the required E##-Audit.md handoff file.
4
+ ---
5
+
6
+ # Savepoint Skill: Audit (`audit`)
7
+
8
+ ## Objective
9
+ At the end of an epic, review the implemented code against the Epic objectives and Task Acceptance Criteria, and reconcile any documentation "Drift".
10
+
11
+ ## Context
12
+ The Audit Gate is Savepoint's wedge. It prevents projects from degrading into chaos. The `audit` agent acts as the Quality Assurance and Documentation Lead. It reviews the work of the `build-task` agent with "fresh eyes," ensuring that the `Design.md` and the `AGENTS.md` Codebase Map reflect the actual reality of the codebase before the next Epic begins.
13
+
14
+ ## Trigger
15
+ This skill is activated when the `.savepoint/router.md` state is `audit-pending`.
16
+
17
+ ## Input
14
18
  - `.savepoint/releases/{release}/epics/{E##-slug}/E##-Detail.md` (the epic design).
15
- - `.savepoint/Design.md` (project architecture).
16
- - `AGENTS.md` (agent guide and codebase map).
17
- - The source and test files modified during the Epic.
18
-
19
- ## Workflow
20
-
21
- 1. **Fresh Eyes Check:** If you are the exact same agent session that just built the `build-task` code for this Epic, you MUST STOP. Tell the user: "Epic complete. Start a new agent session for the audit."
22
- 2. **Verify ACs:** Review the completed tasks for the Epic. Ensure the Acceptance Criteria were actually met by the committed code.
23
- 3. **Process Drift Notes (Reconciliation):** Read every task file in the Epic and look for `## Drift Notes`.
24
- 4. **Draft Proposals:** Based on the code changes and the Drift Notes, write exactly ONE file: `.savepoint/audit/{release}/{E##-slug}/proposals.md`. It must contain:
25
- * **Design.md section:** Propose updates to merge the epic's architectural changes into the project-level `Design.md`.
26
- * **AGENTS.md section:** Propose updates to refresh the Codebase Map table with new or changed modules.
27
- * **Epic-E##-Detail.md section:** Add "Implemented as:" notes showing where reality deviated from the original plan.
28
- * **Quality Review section:** List any minor code-style infractions that must be fixed before the next Epic.
29
- 5. **Review Format:** Use `## Target File`, `## Replace`, and `## With` formatting in the proposals document so it is easy for a human (or an agent) to apply later.
30
- 6. **Handoff:** Do not apply the proposals yourself. Do not mark the epic audited. Stop and prompt the user to review `.savepoint/audit/{release}/{E##-slug}/proposals.md` (often via the TUI). Once the user approves, the proposals are applied, and the router moves to the next Epic.
31
-
32
- ## Constraints
33
- - **Do not write product code.** You are an auditor.
34
- - **Do not apply the changes immediately.** Write the proposals document first.
35
- - **One proposals file.** Do not create multiple proposal files.
19
+ - `.savepoint/Design.md` (project architecture).
20
+ - `AGENTS.md` (agent guide and codebase map).
21
+ - The source and test files modified during the Epic.
22
+
23
+ ## Workflow
24
+
25
+ 1. **Fresh Eyes Check:** If you are the exact same agent session that just built the `build-task` code for this Epic, you MUST STOP. Tell the user: "Epic complete. Start a new agent session for the audit."
26
+ 2. **Verify ACs:** Review the completed tasks for the Epic. Ensure the Acceptance Criteria were actually met by the committed code. Also confirm each task file has a `## Context Files` section — flag any missing ones under `## Main Findings` as a process gap.
27
+ 3. **Process Drift Notes (Reconciliation):** Read every task file in the Epic and look for `## Drift Notes`.
28
+ 4. **Draft Audit File:** Based on the code changes and the Drift Notes, write exactly ONE file: `.savepoint/releases/{release}/epics/{E##-slug}/E##-Audit.md`. It must use this format:
29
+ ````md
30
+ ---
31
+ type: audit-findings
32
+ audited: YYYY-MM-DD
33
+ ---
34
+ # Audit Findings: E## {Epic Name}
35
+
36
+ ## Main Findings
37
+ [human-readable audit summary only: AC verification, important drift, and notable risks. Do not include per-file replacement blocks here.]
38
+
39
+ ## Code Style Review
40
+ - [ ] One job per file
41
+ - [ ] One-sentence functions
42
+ - [ ] Test branches
43
+ - [ ] Types are documentation
44
+ - [ ] Build, don't speculate
45
+ - [ ] Errors at boundaries
46
+ - [ ] One source of truth
47
+ - [ ] Comments explain WHY
48
+ - [ ] Content in data files
49
+ - [ ] Small diffs
50
+
51
+ ## Proposed Changes
52
+ ### Target File
53
+ path/to/file.md
54
+
55
+ ### Replace
56
+ ```
57
+ exact old text
58
+ ```
59
+
60
+ ### With
61
+ ```
62
+ replacement text
63
+ ```
64
+ ````
65
+ The TUI Audit tab renders only `## Main Findings` and `## Code Style Review`. Keep `## Proposed Changes` as admin/apply metadata so the Epic Detail panel does not show stale file-change blocks.
66
+ 5. **Review Format:** Use `### Target File`, `### Replace`, and `### With` formatting only inside `## Proposed Changes`. Include proposals for:
67
+ * **Design.md:** Merge the epic's architectural changes into the project-level `Design.md`.
68
+ * **AGENTS.md:** Refresh the Codebase Map table with new or changed modules.
69
+ * **Epic E##-Detail.md:** Add "Implemented as:" notes showing where reality deviated from the original plan.
70
+ * **Implementation fixes:** Include any must-fix code or test changes found during audit.
71
+ 6. **Handoff:** Do not apply the proposals yourself. Do not mark the epic audited. Stop and prompt the user to review `.savepoint/releases/{release}/epics/{E##-slug}/E##-Audit.md` (via the TUI Audit tab). Tell them: "Review the audit tab. When ready, say 'apply audit' to apply proposals and close the epic."
72
+ 7. **Apply + Close** (only when the user approves by saying "apply audit" or equivalent):
73
+ 1. Read `E##-Audit.md` — extract every `### Target File` / `### Replace` / `### With` block from `## Proposed Changes`.
74
+ 2. For each pair, apply the replacement to the target file named in the preceding `### Target File` line.
75
+ 3. Update `E##-Audit.md` visible sections: rewrite `## Main Findings` and `## Code Style Review` so the TUI Audit tab reflects the applied outcome, resolved findings, remaining risks if any, and final code-style status. Keep `## Proposed Changes` intact as admin/apply trace unless the user asks to remove it.
76
+ 4. Update `E##-Detail.md` frontmatter: set `status: audited`.
77
+ 5. Update `.savepoint/Design.md` frontmatter: set `last_audited: {release}/{E##-slug}`.
78
+ 6. Read `.savepoint/router.md` current state. Advance:
79
+ - If more epics remain in the release: set `state: epic-design`, `epic: {next-epic-slug}`, `task: ""`, `next_action: "Draft epic design"`.
80
+ - If no more epics: set `state: epic-design`, `epic: ""`, `next_action: "Plan next epic"`.
81
+ 7. Print apply summary: "Applied X proposals. Updated audit findings. Epic {E##} closed as audited. Router → {new state}."
82
+
83
+ ## Constraints
84
+ - **Do not write product code.** You are an auditor.
85
+ - **Do not apply the changes immediately.** Write the proposals document first.
86
+ - **One proposals file.** Do not create multiple proposal files.
87
+ - **No CLI audit pipeline.** Savepoint audit is agent-led and skill-driven; do not invoke or design around a `savepoint audit` command.
@@ -1,4 +1,9 @@
1
- # Savepoint Skill: Build Task (`build-task`)
1
+ ---
2
+ name: savepoint-build-task
3
+ description: Executes Savepoint task-building work when .savepoint/router.md state is task-building, including implementing one active task, checking acceptance criteria, running quality gates, and stopping for user review.
4
+ ---
5
+
6
+ # Savepoint Skill: Build Task (`build-task`)
2
7
 
3
8
  ## Objective
4
9
  Act as a disciplined coding agent that strictly follows Savepoint's implementation loop.
@@ -36,4 +41,4 @@ This skill is activated when the `.savepoint/router.md` state is `task-building`
36
41
 
37
42
  ## Constraints
38
43
  - **Stay in scope:** Do not touch files outside of what is required for the Acceptance Criteria.
39
- - **Do not edit architecture documents.** If you must deviate from the plan, write the code and log a "Drift Note" in the task file.
44
+ - **Do not edit architecture documents.** If you must deviate from the plan, write the code and log a "Drift Note" in the task file.
@@ -1,4 +1,9 @@
1
- # Savepoint Skill: Create Plan (`create-plan`)
1
+ ---
2
+ name: savepoint-create-plan
3
+ description: Creates Savepoint release epics from the PRD and Design documents when the router is in pre-implementation planning.
4
+ ---
5
+
6
+ # Savepoint Skill: Create Plan (`create-plan`)
2
7
 
3
8
  ## Objective
4
9
  Turn the Product Requirements Document (PRD) and the architectural `Design.md` into Epics (logical slices of work) and high-level tasks that can be implemented independently.
@@ -25,4 +30,4 @@ This skill is activated when the `.savepoint/router.md` state is `pre-implementa
25
30
 
26
31
  ## Constraints
27
32
  - **Do not write code.**
28
- - **Do not write detailed implementation steps.** That is the job of the `create-task` skill. Keep the task outlines high-level at this stage.
33
+ - **Do not write detailed implementation steps.** That is the job of the `create-task` skill. Keep the task outlines high-level at this stage.
@@ -1,31 +1,44 @@
1
- # Savepoint Skill: Create Task (`create-task`)
2
-
3
- ## Objective
4
- Take high-level tasks identified during the planning phase and build detailed, actionable task plans with strict Acceptance Criteria.
5
-
6
- ## Context
7
- A task plan is a contract between the planner and the builder. If the task plan is vague, the resulting code will be buggy. The `create-task` skill acts as a Senior Engineer writing tickets for a Junior Developer (the `build-task` agent). It must define exactly *what* constitutes success and *how* to achieve it, without actually writing the code.
8
-
9
- ## Trigger
10
- This skill is activated when the `.savepoint/router.md` state is `epic-task-breakdown` and the router points to a specific epic.
11
-
12
- ## Input
13
- - `.savepoint/releases/v1/epics/{E##-epic}/E##-Detail.md` (The active Epic's design).
14
- - The high-level task markdown file (e.g., `.savepoint/releases/v1/epics/{E##-epic}/tasks/T001-slug.md`).
15
-
16
- ## Workflow
17
-
18
- 1. **Read Context:** Understand the goal of the specific task within the context of its parent Epic.
19
- 2. **Define Acceptance Criteria (ACs):** This is the most critical step. Write explicit, observable outcomes. (e.g., "Running `npm test` passes 5 tests for the auth module" or "The `/login` route returns a 200 OK with a valid JWT"). Do not use subjective language like "looks good."
20
- 3. **Draft Implementation Plan:** Create a step-by-step checklist for the `build-task` agent to follow.
21
- * List which files need to be created or modified.
22
- * Specify which functions or components need to be written.
23
- * Include instructions to write tests *first* if applicable.
24
- 4. **Add Context Log Shell:** Ensure the bottom of the task file includes a `## Context Log` section with placeholders for `Files read:`, `Estimated input tokens:`, and `Notes:`.
25
- 5. **Define Dependencies:** If this task relies on another task being completed first, explicitly declare it in the YAML frontmatter (e.g., `depends_on: [T001-setup]`).
26
- 6. **Status Update:** Change the task frontmatter to `status: planned`.
27
- 7. **Handoff:** Update `.savepoint/router.md` to `state: in-progress` and ensure it points to the newly planned task. Prompt the user to approve the task plan before building begins.
28
-
29
- ## Constraints
30
- - **Do not write code.** Your job is to plan the work, not execute it.
31
- - **Keep it isolated:** The task plan should touch as few files as possible. If a task plan requires modifying 15 files, it is too large and should be broken down further.
1
+ ---
2
+ name: savepoint-create-task
3
+ description: Plans Savepoint task files during epic-task-breakdown by writing acceptance criteria, implementation checklists, dependencies, and context-log shells.
4
+ ---
5
+
6
+ # Savepoint Skill: Create Task (`create-task`)
7
+
8
+ ## Objective
9
+ Take high-level tasks identified during the planning phase and build detailed, actionable task plans with strict Acceptance Criteria.
10
+
11
+ ## Context
12
+ A task plan is a contract between the planner and the builder. If the task plan is vague, the resulting code will be buggy. The `create-task` skill acts as a Senior Engineer writing tickets for a Junior Developer (the `build-task` agent). It must define exactly *what* constitutes success and *how* to achieve it, without actually writing the code.
13
+
14
+ ## Trigger
15
+ This skill is activated when the `.savepoint/router.md` state is `epic-task-breakdown` and the router points to a specific epic.
16
+
17
+ ## Input
18
+ - `.savepoint/releases/v1/epics/{E##-epic}/E##-Detail.md` (The active Epic's design).
19
+ - The high-level task markdown file (e.g., `.savepoint/releases/v1/epics/{E##-epic}/tasks/T001-slug.md`).
20
+
21
+ ## Workflow
22
+
23
+ 1. **Read Context:** Understand the goal of the specific task within the context of its parent Epic.
24
+ 2. **Define Acceptance Criteria (ACs):** This is the most critical step. Write explicit, observable outcomes. (e.g., "Running `npm test` passes 5 tests for the auth module" or "The `/login` route returns a 200 OK with a valid JWT"). Do not use subjective language like "looks good."
25
+ 3. **Draft Implementation Plan:** Create a step-by-step checklist for the `build-task` agent to follow.
26
+ * List which files need to be created or modified.
27
+ * Specify which functions or components need to be written.
28
+ * Include instructions to write tests *first* if applicable.
29
+ 4. **Populate Context Files:** Add a `## Context Files` section listing the exact file paths the build agent must read before coding. Pull these from the epic's Components table — only the files this task actually touches or depends on. Example:
30
+ ```markdown
31
+ ## Context Files
32
+ - `internal/board/board.go`
33
+ - `internal/board/model.go`
34
+ - `internal/data/config.go`
35
+ ```
36
+ No globs. No directories. Exact paths only.
37
+ 5. **Add Context Log Shell:** Ensure the bottom of the task file includes a `## Context Log` section with placeholders for `Files read:`, `Estimated input tokens:`, and `Notes:`.
38
+ 5. **Define Dependencies:** If this task relies on another task being completed first, explicitly declare it in the YAML frontmatter (e.g., `depends_on: [T001-setup]`).
39
+ 6. **Status Update:** Change the task frontmatter to `status: planned`.
40
+ 7. **Handoff:** Update `.savepoint/router.md` to `state: in-progress` and ensure it points to the newly planned task. Prompt the user to approve the task plan before building begins.
41
+
42
+ ## Constraints
43
+ - **Do not write code.** Your job is to plan the work, not execute it.
44
+ - **Keep it isolated:** The task plan should touch as few files as possible. If a task plan requires modifying 15 files, it is too large and should be broken down further.
@@ -1,4 +1,9 @@
1
- # Savepoint Skill: Draft PRD (`draft-prd`)
1
+ ---
2
+ name: savepoint-draft-prd
3
+ description: Guides Savepoint PRD drafting and refinement before implementation, interviewing the user until the product scope is clear enough for design.
4
+ ---
5
+
6
+ # Savepoint Skill: Draft PRD (`draft-prd`)
2
7
 
3
8
  ## Objective
4
9
  Help the user write a structured, sufficiently detailed Product Requirements Document (PRD) before any design or planning occurs.
@@ -29,4 +34,4 @@ This skill is activated when the `.savepoint/router.md` state is `pre-implementa
29
34
  ## Constraints
30
35
  - **Do not write code.**
31
36
  - **Do not plan Epics.** That is the job of the `create-plan` skill.
32
- - **Do not make technical architectural decisions.** That is the job of the `system-design` skill. Your focus is strictly on *what* and *why*, not *how*.
37
+ - **Do not make technical architectural decisions.** That is the job of the `system-design` skill. Your focus is strictly on *what* and *why*, not *how*.
@@ -1,4 +1,9 @@
1
- # Savepoint Skill: System Design (`system-design`)
1
+ ---
2
+ name: savepoint-system-design
3
+ description: Produces Savepoint system or epic design documents from the PRD when the router is in epic-design or the user asks for architectural design.
4
+ ---
5
+
6
+ # Savepoint Skill: System Design (`system-design`)
2
7
 
3
8
  ## Objective
4
9
  Translate the Product Requirements Document (PRD) into the initial architectural blueprint (`Design.md`) before the planning phase breaks the work down into Epics.
@@ -30,4 +35,4 @@ This skill is activated when the `.savepoint/router.md` state is `epic-design` o
30
35
  ## Constraints
31
36
  - **Do not write code.**
32
37
  - **Do not break down tasks.** That is the job of the `create-plan` skill.
33
- - **Maintain Token Discipline:** Keep the `Design.md` concise. It is meant to be read by AI agents on every turn. Rambling design docs destroy context windows.
38
+ - **Maintain Token Discipline:** Keep the `Design.md` concise. It is meant to be read by AI agents on every turn. Rambling design docs destroy context windows.