savepoint 1.0.2 → 1.0.3
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.
- package/.claude/settings.local.json +12 -1
- package/.golangci.yml +11 -0
- package/.savepoint/Design.md +37 -36
- package/.savepoint/{audit/v1.1/E02-cross-platform-compatibility/proposals.md → releases/v1.1/epics/E02-cross-platform-compatibility/E02-Audit.md} +48 -38
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Audit.md +195 -0
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/E03-Detail.md +14 -1
- package/.savepoint/releases/v1.1/epics/E03-ui-visual-refinement/tasks/T006-forced-256-color-profile.md +3 -3
- package/.savepoint/{audit/v1.1/E04-epic-navigation/proposals.md → releases/v1.1/epics/E04-epic-navigation/E04-Audit.md} +65 -54
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Audit.md +237 -0
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/E05-Detail.md +25 -16
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T001-update-agents-md.md +17 -6
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T002-update-router-md.md +15 -5
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T003-update-design-md.md +19 -5
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T004-implement-m-hotkey.md +11 -1
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T005-update-help-overlay.md +9 -6
- package/.savepoint/releases/v1.1/epics/E05-tasking-permissions/tasks/T006-tests-and-quality-gates.md +29 -13
- package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Audit.md +56 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/E06-Detail.md +63 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T005-proposals.md +44 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T007-apply-close.md +35 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T009-integration.md +40 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T010-audit-file-migration.md +45 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T011-model-tab-state.md +26 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T012-epic-audit-render.md +33 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T013-handle-tab-keys.md +34 -0
- package/.savepoint/releases/v1.1/epics/E06-audit-command/tasks/T014-tab-indicator.md +33 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Audit.md +336 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/E07-Detail.md +61 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T001-cli-entrypoint.md +37 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T002-target-validation.md +28 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T003-scaffold-writer.md +46 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T004-atomic-writes.md +27 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T005-magic-prompt.md +25 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T006-clipboard.md +26 -0
- package/.savepoint/releases/v1.1/epics/E07-init-command/tasks/T007-integration-test.md +26 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Audit.md +333 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/E08-Detail.md +68 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T001-cli-entrypoint.md +26 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T002-non-tty-fallback.md +27 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T003-tui-app-shell.md +28 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T004-board-model.md +29 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T005-detail-pane.md +27 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T006-status-transitions.md +29 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T007-theme-fallbacks.md +29 -0
- package/.savepoint/releases/v1.1/epics/E08-board-command/tasks/T008-integration-test.md +27 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Audit.md +207 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/E09-Detail.md +65 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T001-cli-entrypoint.md +24 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T002-config-router-validation.md +28 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T003-structure-checks.md +29 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T004-dependency-checks.md +27 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T005-audit-orphan-checks.md +28 -0
- package/.savepoint/releases/v1.1/epics/E09-doctor-command/tasks/T006-quality-gates-report.md +31 -0
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/E11-Detail.md +36 -0
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T001-debug-logging.md +25 -0
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T002-increase-debounce.md +21 -0
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T003-error-handling.md +22 -0
- package/.savepoint/releases/v1.1/epics/E11-board-refresh-fix/tasks/T004-test-verify.md +29 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Audit.md +444 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/E12-Detail.md +45 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T001-default-phase.md +35 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T002-default-status.md +19 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T003-better-errors.md +29 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T004-validate-on-write.md +25 -0
- package/.savepoint/releases/v1.1/epics/E12-validation-fix/tasks/T005-tests.md +37 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Audit.md +118 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/E13-Detail.md +73 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T001-safe-cleanup.md +66 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T002-bug-fixes.md +35 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T003-centralize-duplication.md +60 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T004-infrastructure.md +33 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T005-decompose-update.md +37 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T006-async-io.md +40 -0
- package/.savepoint/releases/v1.1/epics/E13-audit-remediation/tasks/T007-test-coverage.md +37 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Audit.md +267 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/E14-Detail.md +54 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T001-group-model.md +39 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T002-data-interfaces.md +42 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T003-discover-orphans.md +33 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T004-epic-panel-headings.md +35 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T005-shell-tokenization.md +27 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T006-unify-enums.md +29 -0
- package/.savepoint/releases/v1.1/epics/E14-structural-improvements/tasks/T007-testutil-package.md +28 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/E15-Detail.md +43 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T001-benchmarks.md +31 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T002-fuzz-targets.md +28 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T003-debug-flag.md +30 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T004-dist-checksums.md +27 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T005-windows-targets.md +28 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T006-abbreviation-splitting.md +26 -0
- package/.savepoint/releases/v1.1/epics/E15-hardening/tasks/T007-root-test-allowlist.md +28 -0
- package/.savepoint/releases/v1.1/epics/_archived/T001-cli-entrypoint.md +25 -0
- package/.savepoint/releases/v1.1/epics/_archived/T002-quality-gates.md +27 -0
- package/.savepoint/releases/v1.1/epics/_archived/T003-snapshot.md +27 -0
- package/.savepoint/releases/v1.1/epics/_archived/T004-ai-reconcile.md +29 -0
- package/.savepoint/releases/v1.1/epics/_archived/T006-tui-review.md +31 -0
- package/.savepoint/releases/v1.1/epics/_archived/T008-skip-handling.md +34 -0
- package/.savepoint/releases/v1.1/v1.1-PRD.md +67 -7
- package/.savepoint/router.md +9 -16
- package/AGENTS.md +38 -23
- package/README.md +0 -1
- package/agent-skills/savepoint-audit/SKILL.md +86 -34
- package/agent-skills/savepoint-build-task/SKILL.md +7 -2
- package/agent-skills/savepoint-create-plan/SKILL.md +7 -2
- package/agent-skills/savepoint-create-task/SKILL.md +44 -31
- package/agent-skills/savepoint-draft-prd/SKILL.md +7 -2
- package/agent-skills/savepoint-system-design/SKILL.md +7 -2
- package/agent_skills_test.go +91 -0
- package/cmd/board.go +59 -0
- package/cmd/board_test.go +137 -0
- package/cmd/doctor.go +53 -0
- package/cmd/doctor_test.go +146 -0
- package/cmd/init.go +63 -0
- package/cmd/init_test.go +104 -0
- package/internal/board/board.go +40 -36
- package/internal/board/board_test.go +27 -82
- package/internal/board/card.go +43 -23
- package/internal/board/card_test.go +41 -5
- package/internal/board/column.go +44 -13
- package/internal/board/column_test.go +5 -2
- package/internal/board/detail.go +0 -47
- package/internal/board/epic_panel.go +118 -22
- package/internal/board/epic_panel_test.go +302 -17
- package/internal/board/help.go +1 -0
- package/internal/board/help_test.go +1 -0
- package/internal/board/integration_test.go +266 -0
- package/internal/board/interfaces.go +65 -0
- package/internal/board/interfaces_test.go +114 -0
- package/internal/board/io.go +93 -0
- package/internal/board/model.go +79 -118
- package/internal/board/plain.go +88 -0
- package/internal/board/plain_test.go +117 -0
- package/internal/board/release.go +1 -9
- package/internal/board/release_test.go +6 -6
- package/internal/board/status.go +4 -4
- package/internal/board/theme.go +24 -0
- package/internal/board/theme_test.go +31 -0
- package/internal/board/transitions.go +113 -88
- package/internal/board/transitions_test.go +164 -141
- package/internal/board/tui.go +32 -0
- package/internal/board/update.go +325 -215
- package/internal/board/update_test.go +299 -18
- package/internal/board/util.go +76 -0
- package/internal/board/view.go +31 -28
- package/internal/board/view_test.go +12 -2
- package/internal/board/watch.go +35 -5
- package/internal/buildtool/main.go +2 -10
- package/internal/buildtool/main_test.go +46 -0
- package/internal/data/config.go +17 -3
- package/internal/data/config_test.go +49 -0
- package/internal/data/discover.go +26 -0
- package/internal/data/discover_test.go +34 -10
- package/internal/data/errors.go +4 -0
- package/internal/data/lifecycle.go +13 -6
- package/internal/data/lifecycle_test.go +14 -11
- package/internal/data/parser.go +21 -6
- package/internal/data/parser_test.go +31 -7
- package/internal/data/task.go +0 -9
- package/internal/data/write.go +85 -11
- package/internal/data/write_test.go +167 -0
- package/internal/doctor/checks.go +567 -0
- package/internal/doctor/checks_test.go +716 -0
- package/internal/doctor/gates.go +193 -0
- package/internal/doctor/gates_test.go +166 -0
- package/internal/doctor/interfaces.go +64 -0
- package/internal/doctor/interfaces_test.go +104 -0
- package/internal/doctor/repairs.go +80 -0
- package/internal/doctor/repairs_test.go +81 -0
- package/internal/doctor/report.go +157 -0
- package/internal/doctor/report_test.go +89 -0
- package/internal/init/clipboard.go +146 -0
- package/internal/init/clipboard_test.go +74 -0
- package/internal/init/install.go +16 -0
- package/internal/init/integration_test.go +197 -0
- package/internal/init/prompt.go +14 -0
- package/internal/init/prompt_test.go +77 -0
- package/internal/init/scaffold.go +59 -0
- package/internal/init/scaffold_test.go +179 -0
- package/internal/init/template_freshness_test.go +56 -0
- package/internal/init/validate.go +85 -0
- package/internal/init/validate_test.go +141 -0
- package/internal/init/write.go +73 -0
- package/internal/init/write_test.go +91 -0
- package/internal/styles/styles_test.go +133 -0
- package/internal/testutil/fixture.go +113 -0
- package/internal/testutil/fs.go +26 -0
- package/main.go +101 -4
- package/package.json +2 -2
- package/project-audit/audit_report_glm_5.1.md +411 -0
- package/project-audit/audit_report_opus_4.6 +406 -0
- package/project-audit/consolidated-audit-report.md +456 -0
- package/savepoint +0 -0
- package/templates/project/.savepoint/Design.md +2 -2
- package/templates/project/.savepoint/router.md +10 -10
- package/templates/project/AGENTS.md +33 -21
- package/templates/project/agent-skills/savepoint-audit/SKILL.md +87 -0
- package/templates/project/agent-skills/savepoint-build-task/SKILL.md +44 -0
- package/templates/project/agent-skills/savepoint-create-plan/SKILL.md +33 -0
- package/templates/project/agent-skills/savepoint-create-task/SKILL.md +44 -0
- package/templates/project/agent-skills/savepoint-draft-prd/SKILL.md +37 -0
- package/templates/project/agent-skills/savepoint-system-design/SKILL.md +38 -0
- package/templates/prompts/audit-reconciliation.prompt.md +33 -28
- package/templates/prompts/design.prompt.md +3 -1
- package/.savepoint/audit/v1/E01/proposals.md +0 -168
- package/.savepoint/audit/v1/E01/snapshot.md +0 -78
- package/.savepoint/audit/v1/E01-go-setup/proposals.md +0 -166
- package/.savepoint/audit/v1/E01-go-setup/snapshot.md +0 -71
- package/.savepoint/audit/v1/E01-scaffolding/proposals/AGENTS.md +0 -66
- package/.savepoint/audit/v1/E01-scaffolding/proposals/Design.md +0 -210
- package/.savepoint/audit/v1/E01-scaffolding/proposals/epic-Design.md +0 -117
- package/.savepoint/audit/v1/E01-scaffolding/proposals/quality-review.md +0 -101
- package/.savepoint/audit/v1/E01-scaffolding/snapshot.md +0 -54
- package/.savepoint/audit/v1/E02-data-model/snapshot.md +0 -128
- package/.savepoint/audit/v1/E02-data-readers/proposals.md +0 -123
- package/.savepoint/audit/v1/E02-data-readers/snapshot.md +0 -54
- package/.savepoint/audit/v1/E03-board-tui-core/proposals.md +0 -146
- package/.savepoint/audit/v1/E03-board-tui-core/snapshot.md +0 -57
- package/.savepoint/audit/v1/E03-cli-foundation/snapshot.md +0 -106
- package/.savepoint/audit/v1/E04-board-components/proposals.md +0 -118
- package/.savepoint/audit/v1/E04-board-components/snapshot.md +0 -77
- package/.savepoint/audit/v1/E04-templates-and-prompts/snapshot.md +0 -115
- package/.savepoint/audit/v1/E05-init-command/snapshot.md +0 -125
- package/.savepoint/audit/v1/E05-phase-transitions/proposals.md +0 -83
- package/.savepoint/audit/v1/E05-phase-transitions/snapshot.md +0 -36
- package/.savepoint/audit/v1/E06-atari-noir-layout/proposals.md +0 -130
- package/.savepoint/audit/v1/E06-atari-noir-layout/snapshot.md +0 -84
- package/.savepoint/audit/v1/E06-tui-board/snapshot.md +0 -64
- package/.savepoint/audit/v1/E07-audit-pipeline/snapshot.md +0 -165
- package/.savepoint/audit/v1/E08-board-workflow-cleanup/snapshot.md +0 -65
- package/.savepoint/audit/v1.1/E02-cross-platform-compatibility/snapshot.md +0 -41
- package/.savepoint/audit/v1.1/E04-epic-navigation/snapshot.md +0 -48
- package/ink-cli-ui-design.zip +0 -0
- package/savepoint.exe +0 -0
|
@@ -0,0 +1,87 @@
|
|
|
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
|
|
18
|
+
- `.savepoint/releases/{release}/epics/{E##-slug}/E##-Detail.md` (the epic design).
|
|
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.
|
|
@@ -0,0 +1,44 @@
|
|
|
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`)
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
Act as a disciplined coding agent that strictly follows Savepoint's implementation loop.
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
The `build-task` skill is the execution engine. It reads the detailed task plan, writes the code, and proves that the Acceptance Criteria (ACs) have been met. It is strictly constrained to the scope of the single active task. It does not rewrite architecture, and it does not fix unrelated bugs.
|
|
13
|
+
|
|
14
|
+
## Trigger
|
|
15
|
+
This skill is activated when the `.savepoint/router.md` state is `task-building` and points to a specific task file.
|
|
16
|
+
|
|
17
|
+
## Input
|
|
18
|
+
- `.savepoint/router.md` (Current state).
|
|
19
|
+
- The active epic E##-Detail.md: `.savepoint/releases/v1/epics/{E##-epic}/E##-Detail.md`.
|
|
20
|
+
- The active task file: `.savepoint/releases/v1/epics/{E##-epic}/tasks/{T###}-*.md`.
|
|
21
|
+
- Directly touched source/test files.
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
1. **Read the Task Plan:** Review the `## Acceptance Criteria` and the `## Implementation Plan`.
|
|
26
|
+
2. **Test-First Implementation:** If testing is part of the project constraints, write the focused tests for the required behavior first.
|
|
27
|
+
3. **Execute:** Write the code to check off every item in the `## Implementation Plan`.
|
|
28
|
+
4. **Validate ACs:** You must verify that every single item in the `## Acceptance Criteria` has been met. A task is not done just because the code is written; it is done when the ACs are demonstrably true.
|
|
29
|
+
5. **Run Quality Gates:** Run the project's build, lint, and test commands (e.g., `npm run build && npm test` or `go test ./...`).
|
|
30
|
+
6. **Log Context:** Fill out the `## Context Log` at the bottom of the task file:
|
|
31
|
+
* List files read/edited.
|
|
32
|
+
* Estimate tokens used.
|
|
33
|
+
* Record the result of the quality gates.
|
|
34
|
+
7. **Log Drift Notes:** **CRITICAL STEP.** Ask yourself:
|
|
35
|
+
* Did I add new source files, modules, or exports not listed in the `AGENTS.md` Codebase Map?
|
|
36
|
+
* Did I change the architecture from what `.savepoint/Design.md` describes?
|
|
37
|
+
* If YES to either, append a `## Drift Notes` section to the bottom of the task file explaining what changed. DO NOT edit `Design.md` or `AGENTS.md` yourself. The `audit` agent will handle that later.
|
|
38
|
+
8. **Status Update:** Change the task frontmatter to `status: done`.
|
|
39
|
+
9. **Handoff:** Update `router.md` to point to the next unblocked task. If all tasks in the Epic are done, update it to `state: audit-pending`.
|
|
40
|
+
10. **Stop:** Prompt the user: "Task {id} is done. Quality gates passed. Review the changes, then tell me to continue." Do not start the next task automatically.
|
|
41
|
+
|
|
42
|
+
## Constraints
|
|
43
|
+
- **Stay in scope:** Do not touch files outside of what is required for the Acceptance Criteria.
|
|
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.
|
|
@@ -0,0 +1,33 @@
|
|
|
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`)
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
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.
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
Savepoint enforces small scopes to prevent AI agents from "wandering." The `create-plan` skill acts as the Technical Project Manager. It takes the grand vision and the architectural blueprint and slices it into a sequence of achievable, testable milestones (Epics).
|
|
13
|
+
|
|
14
|
+
## Trigger
|
|
15
|
+
This skill is activated when the `.savepoint/router.md` state is `pre-implementation`.
|
|
16
|
+
|
|
17
|
+
## Input
|
|
18
|
+
- `.savepoint/PRD.md` (Vision and constraints)
|
|
19
|
+
- `.savepoint/Design.md` (Architecture and layout)
|
|
20
|
+
- `.savepoint/releases/v1/v1-PRD.md` (Optional: Release-scoped PRD)
|
|
21
|
+
|
|
22
|
+
## Workflow
|
|
23
|
+
|
|
24
|
+
1. **Read the Context:** Consume the PRD and Design documents to understand the scope and technical constraints.
|
|
25
|
+
2. **Define Epics:** Group the work into high-level features or milestones. Name them clearly (e.g., `E01-scaffolding`, `E02-database`, `E03-auth`). Each Epic must represent a deliverable slice of value.
|
|
26
|
+
3. **Draft Epic Designs:** For each Epic, create a shell `E##-Detail.md` inside `.savepoint/releases/v1/epics/{E##-epic-name}/E##-Detail.md`. This file should describe the *delta* (what this specific epic adds to the overall architecture).
|
|
27
|
+
4. **Breakdown Tasks (High Level):** Inside each Epic folder, list out the high-level tasks required to complete it. Do not write full implementation plans yet—just identify the discrete chunks of work (e.g., `T001-setup-repo.md`, `T002-init-db.md`).
|
|
28
|
+
5. **Order and Dependency:** Ensure the Epics and tasks are ordered logically. You cannot build the frontend auth UI (E03) before the database models (E02) exist.
|
|
29
|
+
6. **Handoff:** Update `.savepoint/router.md` to `state: task-breakdown` and point it at the first Epic. Prompt the user to review the Epic list.
|
|
30
|
+
|
|
31
|
+
## Constraints
|
|
32
|
+
- **Do not write code.**
|
|
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.
|
|
@@ -0,0 +1,44 @@
|
|
|
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.
|
|
@@ -0,0 +1,37 @@
|
|
|
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`)
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
Help the user write a structured, sufficiently detailed Product Requirements Document (PRD) before any design or planning occurs.
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
In the Savepoint workflow, the PRD is the absolute source of truth. If the PRD is a vague brain-dump, the resulting architecture and code will be a mess. Your job as the `draft-prd` agent is to act as a strict Product Manager. You do not write code. You interrogate the user's idea until it is crisp enough to build a V1.
|
|
13
|
+
|
|
14
|
+
## Trigger
|
|
15
|
+
This skill is activated when the `.savepoint/router.md` state is `pre-implementation` or when the user explicitly asks you to help them write or refine their PRD.
|
|
16
|
+
|
|
17
|
+
## Input
|
|
18
|
+
- The user's initial idea, brain-dump, or `.txt` file outline.
|
|
19
|
+
- The template located at `.savepoint/PRD.md`.
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
1. **Read the Template:** Review the current state of `.savepoint/PRD.md`. If it is the default template (mostly comments), prepare to interview the user.
|
|
24
|
+
2. **Interrogation (The Grill):** Do not immediately overwrite the file with guesses. If the user's input lacks:
|
|
25
|
+
* A specific core mechanic.
|
|
26
|
+
* A defined target user.
|
|
27
|
+
* Clear V1 constraints (e.g., tech stack).
|
|
28
|
+
* Explicit "Out of scope" items.
|
|
29
|
+
...you MUST ask them questions. Force them to define boundaries.
|
|
30
|
+
3. **Synthesis:** Once you have sufficient detail, synthesize the conversation into the `.savepoint/PRD.md` file, strictly adhering to its markdown structure. Remove the instructional HTML comments as you fill in each section.
|
|
31
|
+
4. **The V1 Gate:** Review the final document. If the scope still feels too large for a rapid MVP (e.g., "Build a full clone of Jira with AI"), warn the user. Suggest moving features to the "Out of Scope" section for V1.
|
|
32
|
+
5. **Handoff:** Once the PRD is solid and approved by the user, update `.savepoint/router.md` to `state: design`. Instruct the user to review the PRD and then prompt the agent to continue to the design phase.
|
|
33
|
+
|
|
34
|
+
## Constraints
|
|
35
|
+
- **Do not write code.**
|
|
36
|
+
- **Do not plan Epics.** That is the job of the `create-plan` skill.
|
|
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*.
|
|
@@ -0,0 +1,38 @@
|
|
|
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`)
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
Translate the Product Requirements Document (PRD) into the initial architectural blueprint (`Design.md`) before the planning phase breaks the work down into Epics.
|
|
10
|
+
|
|
11
|
+
## Context
|
|
12
|
+
Before any tasks can be planned, the project needs a high-level technical direction. The `system-design` skill acts as the Staff Engineer. It reads the vision and constraints from the PRD and makes authoritative technical decisions regarding architecture, directory layout, dependency strategies, and workflow rules.
|
|
13
|
+
|
|
14
|
+
## Trigger
|
|
15
|
+
This skill is activated when the `.savepoint/router.md` state is `epic-design` or when the user explicitly asks to design the system based on the PRD.
|
|
16
|
+
|
|
17
|
+
## Input
|
|
18
|
+
- `.savepoint/PRD.md` (The source of truth for "what" and "why").
|
|
19
|
+
- Any existing template or shell in `.savepoint/Design.md`.
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
1. **Read the PRD:** Analyze `.savepoint/PRD.md` to understand the goal, constraints (e.g., tech stack, budget), and what is out of scope.
|
|
24
|
+
2. **Architectural Mapping:** Make firm, opinionated technical decisions that solve the PRD's goals. Do not offer options unless absolutely necessary; pick a path and justify it briefly.
|
|
25
|
+
3. **Draft `.savepoint/Design.md`:** Write or update the architectural design document. It must include:
|
|
26
|
+
* **Architecture Model:** The core pattern (e.g., "File-only state machine," "Client-side React with Firebase," "CLI Tool").
|
|
27
|
+
* **Directory Layout:** A clear, visual tree mapping out the structure of the project (`src/`, `test/`, etc.).
|
|
28
|
+
* **Hierarchy Semantics:** Definitions of what constitutes an Epic vs. a Task.
|
|
29
|
+
* **Status Model & Gates:** How work moves from `planned` to `done`.
|
|
30
|
+
* **Dependencies:** How modules or tasks rely on each other.
|
|
31
|
+
* **CLI Surface/API Contract:** If applicable, define the boundary interactions.
|
|
32
|
+
4. **Review Against Constraints:** Ensure your design strictly adheres to the constraints and out-of-scope items listed in the PRD. If the PRD says "no database," do not add a database to the architecture.
|
|
33
|
+
5. **Handoff:** Update `.savepoint/router.md` to `state: planning`. Instruct the user to review the `Design.md` and then prompt the agent to start the epic breakdown.
|
|
34
|
+
|
|
35
|
+
## Constraints
|
|
36
|
+
- **Do not write code.**
|
|
37
|
+
- **Do not break down tasks.** That is the job of the `create-plan` skill.
|
|
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.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Prompt: Audit Reconciliation
|
|
2
2
|
|
|
3
|
-
<!-- AGENT: Produce one
|
|
3
|
+
<!-- AGENT: Produce one epic-local audit findings file. Prefer delta-only edits. Do not write separate proposal files. -->
|
|
4
4
|
|
|
5
5
|
You are reconciling an epic after its last task is done. The epic is `status: audit-pending`.
|
|
6
6
|
|
|
@@ -8,60 +8,65 @@ You are reconciling an epic after its last task is done. The epic is `status: au
|
|
|
8
8
|
|
|
9
9
|
## Input
|
|
10
10
|
|
|
11
|
-
- `.savepoint/audit/{release}/{E##-slug}/snapshot.md` — what changed during the epic. If this file is missing while the audit CLI is still unavailable, create one manual snapshot from the known epic scope once; do not search broadly for replacement inputs.
|
|
12
11
|
- `.savepoint/releases/{release}/epics/{E##-slug}/E##-Detail.md` — the epic design (may have deltas from the original plan).
|
|
12
|
+
- `.savepoint/releases/{release}/epics/{E##-slug}/tasks/*.md` — task plans, ACs, and drift notes.
|
|
13
13
|
- `.savepoint/Design.md` — project architecture.
|
|
14
14
|
- `AGENTS.md` — agent guide and codebase map.
|
|
15
|
-
-
|
|
15
|
+
- Source and test files in the epic scope.
|
|
16
16
|
|
|
17
17
|
## Output
|
|
18
18
|
|
|
19
|
-
One file: `.savepoint/
|
|
19
|
+
One file: `.savepoint/releases/{release}/epics/{E##-slug}/E##-Audit.md`
|
|
20
20
|
|
|
21
|
-
The
|
|
21
|
+
The audit file must contain these sections in order:
|
|
22
22
|
|
|
23
|
-
1. **
|
|
24
|
-
2. **
|
|
25
|
-
3. **
|
|
26
|
-
4. **Quality Review section** — semantic-review findings against the project's code style rules.
|
|
23
|
+
1. **Main Findings** — user-facing summary only: AC verification, important drift, and notable risks. Do not include per-file replacement blocks here.
|
|
24
|
+
2. **Code Style Review** — checklist against the 10 AGENTS.md code style rules.
|
|
25
|
+
3. **Proposed Changes** — admin/apply metadata only. This section may contain `### Target File`, `### Replace`, and `### With` blocks.
|
|
27
26
|
|
|
28
|
-
|
|
27
|
+
The TUI Audit tab renders only `## Main Findings` and `## Code Style Review`. Keep all file-specific proposal blocks under `## Proposed Changes` so the panel does not show stale admin details.
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
## File Format
|
|
31
30
|
|
|
32
31
|
```md
|
|
33
|
-
|
|
32
|
+
---
|
|
33
|
+
type: audit-findings
|
|
34
|
+
audited: YYYY-MM-DD
|
|
35
|
+
---
|
|
36
|
+
# Audit Findings: E## Epic Name
|
|
34
37
|
|
|
35
|
-
|
|
38
|
+
## Main Findings
|
|
36
39
|
|
|
37
|
-
##
|
|
40
|
+
## Code Style Review
|
|
38
41
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
## With
|
|
42
|
-
|
|
43
|
-
<new content>
|
|
42
|
+
## Proposed Changes
|
|
44
43
|
```
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
```md
|
|
49
|
-
## Must Fix Before Close
|
|
45
|
+
Use this shape for every proposed change inside `## Proposed Changes`:
|
|
50
46
|
|
|
51
|
-
|
|
47
|
+
````md
|
|
48
|
+
### Target File
|
|
49
|
+
path/to/file.md
|
|
52
50
|
|
|
53
|
-
|
|
51
|
+
### Replace
|
|
52
|
+
```
|
|
53
|
+
<exact old heading, marker, or section>
|
|
54
|
+
```
|
|
54
55
|
|
|
55
|
-
|
|
56
|
+
### With
|
|
57
|
+
```
|
|
58
|
+
<new content>
|
|
56
59
|
```
|
|
60
|
+
````
|
|
57
61
|
|
|
58
62
|
## Rules
|
|
59
63
|
|
|
60
|
-
1. **One
|
|
64
|
+
1. **One audit file only.** Do not create `proposal-1.md`, `proposal-2.md`, `.savepoint/audit/...`, or any other separate audit files.
|
|
61
65
|
2. **Prefer delta-only edits.** Use `## Replace` anchored to exact existing text. Do not quote and replace entire large sections unless the whole section genuinely changed.
|
|
62
66
|
3. **Do not apply changes yourself.** Write the proposals; the user reviews them in the TUI before commit.
|
|
63
67
|
4. **Track context.** Count only intentional audit context reads, and keep notes short.
|
|
64
68
|
5. **Stop after proposals.** Do not update the router, do not mark the epic audited, and do not commit.
|
|
65
69
|
6. **Be honest about deviations.** If the implementation diverged from the design, document why in the epic-E##-Detail.md section.
|
|
66
|
-
7. **Never stop at chat-only findings.** Persist `.savepoint/
|
|
70
|
+
7. **Never stop at chat-only findings.** Persist `.savepoint/releases/{release}/epics/{E##-slug}/E##-Audit.md` before you report the audit result back to the user.
|
|
67
71
|
8. **Carry-forwards must be actionable.** If an item is "Must Fix Before Next Epic," explain what the next epic's agent should verify. Vague carry-forwards are rejected.
|
|
72
|
+
9. **No CLI audit pipeline.** Savepoint audit is agent-led and skill-driven; do not invoke or design around a `savepoint audit` command.
|
|
@@ -28,7 +28,7 @@ last_audited: never
|
|
|
28
28
|
## 4. Status model & gates
|
|
29
29
|
## 5. Dependencies
|
|
30
30
|
## 6. CLI surface
|
|
31
|
-
## 7.
|
|
31
|
+
## 7. Agent audit workflow
|
|
32
32
|
## 8. Testing strategy
|
|
33
33
|
## 9. Release versioning
|
|
34
34
|
```
|
|
@@ -41,3 +41,5 @@ last_audited: never
|
|
|
41
41
|
4. **CLI surface is optional.** If the project has no CLI, state that explicitly.
|
|
42
42
|
5. **Do not write epics or tasks.** The Design is architecture only.
|
|
43
43
|
6. **Keep visual identity separate.** If the project has UI/TUI/theme concerns, note that `.savepoint/visual-identity.md` will carry them.
|
|
44
|
+
7. **Audit is agent-led.** Do not design a `savepoint audit` CLI pipeline. The audit gate is performed by a fresh agent using the audit skill, producing one epic-local `E##-Audit.md` file.
|
|
45
|
+
8. **Audit file structure is fixed.** `E##-Audit.md` user-facing sections are `## Main Findings` and `## Code Style Review`; file-specific replacement blocks belong under `## Proposed Changes` as admin/apply metadata and should not be rendered in the Epic Detail Audit tab.
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
# Audit Proposals: v1.1 E01 TUI Optimisation
|
|
2
|
-
|
|
3
|
-
## Target File
|
|
4
|
-
|
|
5
|
-
`.savepoint/Design.md`
|
|
6
|
-
|
|
7
|
-
## Replace
|
|
8
|
-
|
|
9
|
-
```md
|
|
10
|
-
last_audited: E06-atari-noir-layout (2026-05-02)
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## With
|
|
14
|
-
|
|
15
|
-
```md
|
|
16
|
-
last_audited: E01-tui-optimisation (2026-05-02)
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## Target File
|
|
20
|
-
|
|
21
|
-
`.savepoint/Design.md`
|
|
22
|
-
|
|
23
|
-
## Replace
|
|
24
|
-
|
|
25
|
-
```md
|
|
26
|
-
- **Board command** (`savepoint board`) reads project state, renders the Atari-Noir TUI board, supports release/epic filtering, detail overlays, task status transitions with mtime-guarded writes, router priority markers, and fsnotify-based task auto-refresh (epic E06).
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## With
|
|
30
|
-
|
|
31
|
-
```md
|
|
32
|
-
- **Board command** (`savepoint board`) reads project state, renders the Atari-Noir TUI board, supports release/epic filtering, detail overlays, task status transitions with mtime-guarded writes, router priority markers, fsnotify-based task auto-refresh (epic E06), header Next Activity display, height-aware column/detail viewport scrolling, and stable focused/unfocused column border geometry (v1.1 E01).
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
## Target File
|
|
36
|
-
|
|
37
|
-
`.savepoint/Design.md`
|
|
38
|
-
|
|
39
|
-
## Replace
|
|
40
|
-
|
|
41
|
-
```md
|
|
42
|
-
│ └── {E##-epic}/
|
|
43
|
-
│ ├── snapshot.md
|
|
44
|
-
│ └── proposals/
|
|
45
|
-
│ └── proposals.md
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## With
|
|
49
|
-
|
|
50
|
-
```md
|
|
51
|
-
│ └── {E##-epic}/
|
|
52
|
-
│ ├── snapshot.md
|
|
53
|
-
│ └── proposals.md
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Target File
|
|
57
|
-
|
|
58
|
-
`.savepoint/Design.md`
|
|
59
|
-
|
|
60
|
-
## Replace
|
|
61
|
-
|
|
62
|
-
```md
|
|
63
|
-
└── E##-{epic-name}/
|
|
64
|
-
├── Design.md ← epic delta
|
|
65
|
-
└── tasks/
|
|
66
|
-
└── T001-slug.md
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## With
|
|
70
|
-
|
|
71
|
-
```md
|
|
72
|
-
└── E##-{epic-name}/
|
|
73
|
-
├── E##-Detail.md ← epic delta
|
|
74
|
-
└── tasks/
|
|
75
|
-
└── T001-slug.md
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Target File
|
|
79
|
-
|
|
80
|
-
`.savepoint/Design.md`
|
|
81
|
-
|
|
82
|
-
## Replace
|
|
83
|
-
|
|
84
|
-
```md
|
|
85
|
-
| **Epic** | A major feature within a release. Has its own Design.md (delta from project Design). |
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## With
|
|
89
|
-
|
|
90
|
-
```md
|
|
91
|
-
| **Epic** | A major feature within a release. Has its own E##-Detail.md (delta from project Design). |
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Target File
|
|
95
|
-
|
|
96
|
-
`.savepoint/Design.md`
|
|
97
|
-
|
|
98
|
-
## Replace
|
|
99
|
-
|
|
100
|
-
```md
|
|
101
|
-
**Layout:** single screen with a 3-column task board (`planned`, `in_progress`, `done`), optional epic sidebar on wide terminals, centered overlays for release/epic/help/task detail, static Atari-Noir header/footer, full-width dividers, uniform black TUI backgrounds, and navigation hints. Non-TTY output remains a plain table fallback.
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## With
|
|
105
|
-
|
|
106
|
-
```md
|
|
107
|
-
**Layout:** single screen with a 3-column task board (`planned`, `in_progress`, `done`), optional epic sidebar on wide terminals, centered overlays for release/epic/help/task detail, static Atari-Noir header/footer, full-width dividers, uniform black TUI backgrounds, and navigation hints. The header can show a compact right-aligned Next Activity value from router state. Columns and detail overlays use height-aware viewport slicing with subtle above/more scroll indicators. Focused and unfocused columns preserve the same rounded-border geometry so focus changes do not shift content. Non-TTY output remains a plain table fallback.
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
## Target File
|
|
111
|
-
|
|
112
|
-
`AGENTS.md`
|
|
113
|
-
|
|
114
|
-
## Replace
|
|
115
|
-
|
|
116
|
-
```md
|
|
117
|
-
| `internal/styles/` | Atari-Noir palette constants, terminal color fallbacks, shared TUI styles, semantic glyph/tag styles, and footer/header styling |
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## With
|
|
121
|
-
|
|
122
|
-
```md
|
|
123
|
-
| `internal/styles/` | Atari-Noir palette constants, terminal color fallbacks, shared TUI styles, stable column border styles, scroll indicators, semantic glyph/tag styles, and footer/header styling |
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## Target File
|
|
127
|
-
|
|
128
|
-
`.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md`
|
|
129
|
-
|
|
130
|
-
## Replace
|
|
131
|
-
|
|
132
|
-
```md
|
|
133
|
-
## Components and files
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## With
|
|
137
|
-
|
|
138
|
-
```md
|
|
139
|
-
## Implemented As
|
|
140
|
-
|
|
141
|
-
- Header Next Activity rendering is implemented in `internal/board/view.go` using `FormatNextActivity` and `styles.HeaderRight`.
|
|
142
|
-
- Column and detail scrolling are implemented through `ColumnOffsets`, `DetailOffset`, height-aware layout, viewport slicing, and subtle scroll indicators in `internal/board/model.go`, `internal/board/layout.go`, `internal/board/update.go`, `internal/board/column.go`, and `internal/board/detail.go`.
|
|
143
|
-
- Focus border stability is implemented by rendering unfocused columns with `styles.ColumnUnfocused`, matching focused column border dimensions while using the subtle border color.
|
|
144
|
-
- Naming conventions were reconciled across workflow docs: per-epic `Design.md` files became `E##-Detail.md`, and release `PRD.md` became `{release}-PRD.md`.
|
|
145
|
-
- The originally listed fsnotify watcher scope was already present from the prior TUI epic and was reviewed as existing behavior rather than newly introduced in this epic.
|
|
146
|
-
|
|
147
|
-
## Components and files
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Quality Review
|
|
151
|
-
|
|
152
|
-
## Must Fix Before Close
|
|
153
|
-
|
|
154
|
-
No remaining must-fix items.
|
|
155
|
-
|
|
156
|
-
## Carry Forward
|
|
157
|
-
|
|
158
|
-
- `make build && make test` could not be verified directly in this environment. The audit verified the underlying Go gates with `go build ./...` and `go test ./...`, both passing.
|
|
159
|
-
- `internal/board/update.go` allows `DetailOffset` to grow beyond the rendered detail body and relies on render-time clamping. This is not currently user-visible breakage, but a future cleanup could clamp detail scrolling against actual visible body height to keep model state closer to rendered state.
|
|
160
|
-
|
|
161
|
-
## Already Fixed
|
|
162
|
-
|
|
163
|
-
- Stale unchecked implementation checklist items in `T001-next-activity-header.md`, `T004-update-instruction-files.md`, and `T005-update-cross-references.md` were reconciled after audit verification.
|
|
164
|
-
- Column viewport slicing and subtle scroll indicators are covered by `internal/board/column_test.go`.
|
|
165
|
-
- Detail overlay scrolling is covered by `internal/board/detail_test.go`.
|
|
166
|
-
- Height-aware layout is covered by `internal/board/layout_test.go`.
|
|
167
|
-
- Header Next Activity rendering and truncation are covered by `internal/board/view_test.go`.
|
|
168
|
-
- Focused and unfocused column border dimensions are covered by `TestRenderColumn_focusStatesUseStableBorderDimensions`.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# Audit Snapshot: v1.1 E01 TUI Optimisation
|
|
2
|
-
|
|
3
|
-
Manual snapshot created because the audit CLI snapshot was missing and the router permits one manual snapshot when the CLI is unavailable.
|
|
4
|
-
|
|
5
|
-
## Scope
|
|
6
|
-
|
|
7
|
-
- Release: `v1.1`
|
|
8
|
-
- Epic: `E01-tui-optimisation`
|
|
9
|
-
- Router state at audit start: `audit-pending`
|
|
10
|
-
- Next action: `Audit v1.1 E01 TUI optimisation.`
|
|
11
|
-
|
|
12
|
-
## Epic Files
|
|
13
|
-
|
|
14
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/E01-Detail.md`
|
|
15
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-next-activity-header.md`
|
|
16
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T002-rename-epic-design-files.md`
|
|
17
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T003-rename-release-prd.md`
|
|
18
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T004-update-instruction-files.md`
|
|
19
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T005-update-cross-references.md`
|
|
20
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T006-column-and-detail-scrolling.md`
|
|
21
|
-
- `.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T007-column-focus-border-stability.md`
|
|
22
|
-
|
|
23
|
-
## Changed Source And Test Files Reviewed
|
|
24
|
-
|
|
25
|
-
- `internal/board/layout.go`
|
|
26
|
-
- `internal/board/view.go`
|
|
27
|
-
- `internal/board/column.go`
|
|
28
|
-
- `internal/board/detail.go`
|
|
29
|
-
- `internal/board/model.go`
|
|
30
|
-
- `internal/board/update.go`
|
|
31
|
-
- `internal/board/watch.go`
|
|
32
|
-
- `internal/styles/styles.go`
|
|
33
|
-
- `internal/board/column_test.go`
|
|
34
|
-
- `internal/board/detail_test.go`
|
|
35
|
-
- `internal/board/layout_test.go`
|
|
36
|
-
- `internal/board/view_test.go`
|
|
37
|
-
|
|
38
|
-
## Documentation And Workflow Files In Scope
|
|
39
|
-
|
|
40
|
-
- `.savepoint/Design.md`
|
|
41
|
-
- `AGENTS.md`
|
|
42
|
-
- `.savepoint/router.md`
|
|
43
|
-
- `agent-skills/savepoint-audit/SKILL.md`
|
|
44
|
-
- `agent-skills/savepoint-build-task/SKILL.md`
|
|
45
|
-
- `agent-skills/savepoint-create-plan/SKILL.md`
|
|
46
|
-
- `agent-skills/savepoint-create-task/SKILL.md`
|
|
47
|
-
- `agent-skills/savepoint-system-design/SKILL.md`
|
|
48
|
-
- `templates/project/AGENTS.md`
|
|
49
|
-
- `templates/project/.savepoint/router.md`
|
|
50
|
-
- `templates/prompts/task-breakdown.prompt.md`
|
|
51
|
-
- `templates/prompts/task-building.prompt.md`
|
|
52
|
-
- `templates/prompts/task-planning.prompt.md`
|
|
53
|
-
|
|
54
|
-
## Implemented Delta Observed
|
|
55
|
-
|
|
56
|
-
- Board header can show a right-aligned `Next Activity:` label from parsed router state.
|
|
57
|
-
- Release PRD naming moved from `PRD.md` to `{release}-PRD.md`.
|
|
58
|
-
- Epic design naming moved from per-epic `Design.md` to `E##-Detail.md`.
|
|
59
|
-
- TUI columns use height-aware virtual viewport slicing with above/more scroll indicators.
|
|
60
|
-
- Detail overlay accepts terminal-height-derived caps and scroll offsets.
|
|
61
|
-
- Model state now tracks per-column offsets and detail offsets.
|
|
62
|
-
- Column navigation and page keys keep the focused task visible.
|
|
63
|
-
- Unfocused columns now use a rounded-border style matching focused column dimensions.
|
|
64
|
-
- `internal/styles/styles.go` added `HeaderRight`, `ScrollIndicator`, and `ColumnUnfocused`.
|
|
65
|
-
|
|
66
|
-
## Drift Notes Found
|
|
67
|
-
|
|
68
|
-
- `T007-column-focus-border-stability.md`: `internal/styles/styles.go` added exported `ColumnUnfocused` style, not yet in Codebase Map.
|
|
69
|
-
|
|
70
|
-
## Verification Performed During Audit
|
|
71
|
-
|
|
72
|
-
- `go build ./...`: passed.
|
|
73
|
-
- `go test ./...`: passed.
|
|
74
|
-
|
|
75
|
-
## Audit Caveats
|
|
76
|
-
|
|
77
|
-
- The required `make build && make test` gate was not rerun because this environment has used direct Go equivalents for recent task closeout when `make` is unavailable.
|
|
78
|
-
- Must-fix follow-up applied: `T001-next-activity-header.md`, `T004-update-instruction-files.md`, and `T005-update-cross-references.md` no longer contain unchecked implementation checklist items.
|