savepoint 1.0.0
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 +20 -0
- package/.prettierignore +4 -0
- package/.savepoint/Design.md +196 -0
- package/.savepoint/PRD.md +58 -0
- package/.savepoint/audit/E01-go-setup/proposals.md +166 -0
- package/.savepoint/audit/E01-go-setup/snapshot.md +71 -0
- package/.savepoint/audit/E01-scaffolding/proposals/AGENTS.md +66 -0
- package/.savepoint/audit/E01-scaffolding/proposals/Design.md +210 -0
- package/.savepoint/audit/E01-scaffolding/proposals/epic-Design.md +117 -0
- package/.savepoint/audit/E01-scaffolding/proposals/quality-review.md +101 -0
- package/.savepoint/audit/E01-scaffolding/snapshot.md +54 -0
- package/.savepoint/audit/E02-data-model/snapshot.md +128 -0
- package/.savepoint/audit/E02-data-readers/proposals.md +123 -0
- package/.savepoint/audit/E02-data-readers/snapshot.md +54 -0
- package/.savepoint/audit/E03-board-tui-core/proposals.md +146 -0
- package/.savepoint/audit/E03-board-tui-core/snapshot.md +57 -0
- package/.savepoint/audit/E03-cli-foundation/snapshot.md +106 -0
- package/.savepoint/audit/E04-board-components/proposals.md +118 -0
- package/.savepoint/audit/E04-board-components/snapshot.md +77 -0
- package/.savepoint/audit/E04-templates-and-prompts/snapshot.md +115 -0
- package/.savepoint/audit/E05-init-command/snapshot.md +125 -0
- package/.savepoint/audit/E05-phase-transitions/proposals.md +83 -0
- package/.savepoint/audit/E05-phase-transitions/snapshot.md +36 -0
- package/.savepoint/audit/E06-tui-board/snapshot.md +64 -0
- package/.savepoint/audit/E07-audit-pipeline/snapshot.md +165 -0
- package/.savepoint/audit/E08-board-workflow-cleanup/snapshot.md +65 -0
- package/.savepoint/config.yml +27 -0
- package/.savepoint/releases/v1/PRD.md +66 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/Design.md +39 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md +42 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md +23 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md +24 -0
- package/.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md +23 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/Design.md +61 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T001-task-struct.md +29 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T002-frontmatter-parser.md +30 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T003-router-reader.md +29 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T004-config-reader.md +29 -0
- package/.savepoint/releases/v1/epics/E02-data-readers/tasks/T005-discovery.md +30 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/Design.md +38 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T001-model.md +29 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T002-update-loop.md +30 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T003-view.md +34 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T004-styles.md +29 -0
- package/.savepoint/releases/v1/epics/E03-board-tui-core/tasks/T005-layout.md +42 -0
- package/.savepoint/releases/v1/epics/E04-board-components/Design.md +44 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T001-column.md +34 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T002-card.md +33 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T003-epic-panel.md +49 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T004-detail-overlay.md +40 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T005-release-dropdown.md +33 -0
- package/.savepoint/releases/v1/epics/E04-board-components/tasks/T006-help-overlay.md +34 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/Design.md +38 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T001-phase-stepping.md +29 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T002-gates.md +31 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T003-write-task.md +31 -0
- package/.savepoint/releases/v1/epics/E05-phase-transitions/tasks/T004-write-router.md +31 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/Design.md +42 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T001-color-system.md +39 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T002-header-and-dividers.md +52 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T003-footer-status-bar.md +52 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T004-component-refinement.md +53 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T005-restore-nav-hints.md +39 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T007-detail-card-fixes.md +36 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T008-checkbox-states.md +38 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T009-router-priority-marker.md +41 -0
- package/.savepoint/releases/v1/epics/E06-atari-noir-layout/tasks/T010-auto-refresh-watcher.md +61 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/Design.md +39 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T001-archive-epics.md +20 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T002-rewrite-prd.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T003-create-epic-stubs.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E01-archive-and-reset/tasks/T004-update-router.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/Design.md +118 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/handoff.md +9 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T001-package-baseline.md +45 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T002-typescript-build.md +48 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T003-vitest-smoke.md +43 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T004-lint-format-gates.md +45 -0
- package/.savepoint/releases/v1/epics/_archived/E01-scaffolding/tasks/T005-scaffold-verification.md +40 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/Design.md +142 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T001-domain-ids-status.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T002-markdown-frontmatter-boundary.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T003-task-documents.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T004-release-epic-router-config-readers.md +30 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T005-dependency-validation.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T006-epic-task-set-reader.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E02-data-model/tasks/T007-quality-gates.md +31 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/Design.md +40 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T001-phase-types.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T002-phase-frontmatter.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T003-simplify-config.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E02-domain-phase-model/tasks/T004-simplify-router-domain.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/Design.md +122 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T001-argument-parser-contract.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T002-help-text-generation.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T003-terminal-environment-detection.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T004-command-stub-modules.md +29 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T005-cli-runner-dispatch.md +34 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-foundation/tasks/T006-entrypoint-quality-gates.md +32 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/Design.md +43 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T001-strip-args.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T002-strip-help.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T003-strip-run.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T004-delete-commands.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E03-cli-simplify/tasks/T005-update-cli-tests.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/Design.md +48 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T001-board-data-phases.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T002-phase-rendering.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T003-detail-pane-phases.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T004-phase-transitions.md +42 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T005-phase-gates.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T006-phase-write-back.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T007-remove-audit-flow.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E04-board-phase-integration/tasks/T008-board-tests.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/Design.md +85 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T001-project-template-assets.md +17 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T002-release-and-prompt-assets.md +20 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T003-template-registry-renderer.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T004-template-integrity-tests.md +17 -0
- package/.savepoint/releases/v1/epics/_archived/E04-templates-and-prompts/tasks/T005-template-closeout-quality-gates.md +16 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/Design.md +88 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T001-init-cli-contract.md +22 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T002-target-validation.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T003-scaffold-writer.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T004-magic-prompt-and-clipboard.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T005-dev-deps-install-option.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E05-init-command/tasks/T006-init-command-integration.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/Design.md +53 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T001-delete-dead-src.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T002-delete-dead-tests.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T003-delete-assets.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T004-clean-savepoint.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T005-rewrite-agents-md.md +28 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T006-clean-package-json.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E05-project-cleanup/tasks/T007-verify.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/Design.md +104 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T001-board-command-data.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T002-board-view-state.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T003-transition-gates-and-writes.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T004-terminal-theme.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T005-ink-board-ui.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E06-tui-board/tasks/T006-board-integration-audit-entry.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/Design.md +88 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T001-audit-cli-contract.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T002-quality-gate-runner.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T003-snapshot-and-prompt.md +23 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T004-audit-orchestration-router.md +27 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T005-proposal-validation-apply.md +25 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T006-audit-review-state.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T007-audit-review-ui.md +26 -0
- package/.savepoint/releases/v1/epics/_archived/E07-audit-pipeline/tasks/T008-audit-pipeline-integration.md +24 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/Design.md +103 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T001-acceptance-criteria-model.md +30 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T002-release-task-set-reader.md +33 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T003-board-data-and-plain-output.md +34 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T004-board-selection-state.md +33 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T005-ink-board-layout-cleanup.md +37 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T006-task-detail-popup.md +36 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T007-templates-acceptance-criteria.md +34 -0
- package/.savepoint/releases/v1/epics/_archived/E08-board-workflow-cleanup/tasks/T008-board-workflow-integration.md +41 -0
- package/.savepoint/releases/v1/epics/_archived/E09-doctor-command/Design.md +70 -0
- package/.savepoint/releases/v1/epics/_archived/E10-docs-and-packaging/Design.md +68 -0
- package/.savepoint/releases/v1/epics/_archived/E11-release-validation/Design.md +68 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/Design.md +26 -0
- package/.savepoint/releases/v1.1/epics/E01-tui-optimisation/tasks/T001-border-resize-fix.md +35 -0
- package/.savepoint/router.md +136 -0
- package/.savepoint/visual-identity.md +124 -0
- package/AGENTS.md +141 -0
- package/CLAUDE.md +1 -0
- package/GEMINI.md +1 -0
- package/LICENSE +21 -0
- package/Makefile +13 -0
- package/README.md +78 -0
- package/agent-skills/ink-tui-design/SKILL.md +309 -0
- package/agent-skills/ink-tui-design/references/component-patterns.md +371 -0
- package/agent-skills/ink-tui-design/references/hooks-guide.md +436 -0
- package/agent-skills/ink-tui-design/references/ink-gotchas.md +330 -0
- package/agent-skills/ink-tui-design/references/testing-patterns.md +384 -0
- package/agent-skills/savepoint-audit/SKILL.md +35 -0
- package/agent-skills/savepoint-build-task/SKILL.md +39 -0
- package/agent-skills/savepoint-create-plan/SKILL.md +28 -0
- package/agent-skills/savepoint-create-task/SKILL.md +31 -0
- package/agent-skills/savepoint-draft-prd/SKILL.md +32 -0
- package/agent-skills/savepoint-system-design/SKILL.md +33 -0
- package/agent-skills/superpowers/brainstorming/SKILL.md +165 -0
- package/agent-skills/superpowers/brainstorming/visual-companion.md +304 -0
- package/agent-skills/superpowers/dispatching-parallel-agents/SKILL.md +193 -0
- package/agent-skills/superpowers/executing-plans/SKILL.md +77 -0
- package/agent-skills/superpowers/finishing-a-development-branch/SKILL.md +213 -0
- package/agent-skills/superpowers/receiving-code-review/SKILL.md +226 -0
- package/agent-skills/superpowers/requesting-code-review/SKILL.md +115 -0
- package/agent-skills/superpowers/requesting-code-review/code-reviewer.md +160 -0
- package/agent-skills/superpowers/subagent-driven-development/SKILL.md +292 -0
- package/agent-skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +27 -0
- package/agent-skills/superpowers/subagent-driven-development/implementer-prompt.md +113 -0
- package/agent-skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/agent-skills/superpowers/systematic-debugging/SKILL.md +305 -0
- package/agent-skills/superpowers/systematic-debugging/condition-based-waiting.md +122 -0
- package/agent-skills/superpowers/systematic-debugging/defense-in-depth.md +130 -0
- package/agent-skills/superpowers/systematic-debugging/root-cause-tracing.md +183 -0
- package/agent-skills/superpowers/test-driven-development/SKILL.md +389 -0
- package/agent-skills/superpowers/test-driven-development/testing-anti-patterns.md +317 -0
- package/agent-skills/superpowers/verification-before-completion/SKILL.md +147 -0
- package/agent-skills/superpowers/writing-plans/SKILL.md +159 -0
- package/agent-skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/assets/banner.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/strawman.png +0 -0
- package/go.mod +33 -0
- package/go.sum +73 -0
- package/ink-cli-ui-design.zip +0 -0
- package/internal/board/board.go +121 -0
- package/internal/board/board_test.go +99 -0
- package/internal/board/card.go +72 -0
- package/internal/board/card_test.go +111 -0
- package/internal/board/column.go +61 -0
- package/internal/board/column_test.go +81 -0
- package/internal/board/detail.go +140 -0
- package/internal/board/detail_test.go +233 -0
- package/internal/board/epic_panel.go +69 -0
- package/internal/board/epic_panel_test.go +246 -0
- package/internal/board/help.go +40 -0
- package/internal/board/help_test.go +85 -0
- package/internal/board/layout.go +58 -0
- package/internal/board/layout_test.go +89 -0
- package/internal/board/model.go +151 -0
- package/internal/board/model_test.go +67 -0
- package/internal/board/release.go +42 -0
- package/internal/board/release_test.go +177 -0
- package/internal/board/transitions.go +88 -0
- package/internal/board/transitions_test.go +141 -0
- package/internal/board/update.go +155 -0
- package/internal/board/update_test.go +128 -0
- package/internal/board/view.go +190 -0
- package/internal/board/view_test.go +147 -0
- package/internal/data/config.go +87 -0
- package/internal/data/config_test.go +73 -0
- package/internal/data/discover.go +152 -0
- package/internal/data/discover_test.go +106 -0
- package/internal/data/errors.go +9 -0
- package/internal/data/lifecycle.go +37 -0
- package/internal/data/lifecycle_test.go +38 -0
- package/internal/data/parser.go +189 -0
- package/internal/data/parser_test.go +216 -0
- package/internal/data/router.go +52 -0
- package/internal/data/router_test.go +35 -0
- package/internal/data/task.go +46 -0
- package/internal/data/task_test.go +51 -0
- package/internal/data/write.go +144 -0
- package/internal/data/write_test.go +456 -0
- package/internal/styles/palette.go +47 -0
- package/internal/styles/styles.go +122 -0
- package/main.exe +0 -0
- package/main.go +11 -0
- package/package.json +25 -0
- package/savepoint +0 -0
- package/savepoint.exe +0 -0
- package/scripts/vitest-preload.cjs +95 -0
- package/templates/project/.savepoint/Design.md +47 -0
- package/templates/project/.savepoint/PRD.md +34 -0
- package/templates/project/.savepoint/config.yml +27 -0
- package/templates/project/.savepoint/router.md +152 -0
- package/templates/project/.savepoint/visual-identity.md +122 -0
- package/templates/project/AGENTS.md +130 -0
- package/templates/prompts/audit-reconciliation.prompt.md +67 -0
- package/templates/prompts/design.prompt.md +43 -0
- package/templates/prompts/epic-design.prompt.md +43 -0
- package/templates/prompts/magic-prompt.prompt.md +7 -0
- package/templates/prompts/prd.prompt.md +42 -0
- package/templates/prompts/task-breakdown.prompt.md +54 -0
- package/templates/prompts/task-building.prompt.md +38 -0
- package/templates/prompts/task-planning.prompt.md +53 -0
- package/templates/release/v1/PRD.md +37 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(npm run *)",
|
|
5
|
+
"Bash(npx prettier *)",
|
|
6
|
+
"Bash(npm test *)",
|
|
7
|
+
"Bash(npm install *)",
|
|
8
|
+
"Bash(npx vitest *)",
|
|
9
|
+
"Bash(echo \"lint exit: $?\")",
|
|
10
|
+
"Bash(echo \"format exit: $?\")",
|
|
11
|
+
"Bash(npx tsc *)",
|
|
12
|
+
"Bash(node --require ./scripts/vitest-preload.cjs ./node_modules/vitest/vitest.mjs run --configLoader runner --config vitest.config.js --reporter=verbose test/tui/components/Board.test.tsx)",
|
|
13
|
+
"Bash(node --require ./scripts/vitest-preload.cjs ./node_modules/vitest/vitest.mjs run --configLoader runner --config vitest.config.js --reporter=verbose test/tui/components/Board.test.tsx test/tui/components/App.test.tsx test/tui/components/DetailPane.test.tsx)",
|
|
14
|
+
"Bash(node --require ./scripts/vitest-preload.cjs ./node_modules/vitest/vitest.mjs run --configLoader runner --config vitest.config.js)",
|
|
15
|
+
"Bash(go test *)",
|
|
16
|
+
"Bash(go build *)",
|
|
17
|
+
"Bash(go vet *)"
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
package/.prettierignore
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: project-design
|
|
3
|
+
status: active
|
|
4
|
+
last_audited: E02-data-readers (2026-05-01)
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Savepoint — System Architecture
|
|
8
|
+
|
|
9
|
+
> Project-level architecture. Audit-kept fresh: every epic's audit step merges its delta into this document.
|
|
10
|
+
>
|
|
11
|
+
> **Visual identity** lives separately in `.savepoint/visual-identity.md` and is loaded only for TUI/theme/visual tasks.
|
|
12
|
+
|
|
13
|
+
## 1. Architecture model
|
|
14
|
+
|
|
15
|
+
- **File-only.** No MCP server in v1. Agents read and edit Markdown + YAML files directly using their native file tools.
|
|
16
|
+
- **Agent routing:** AGENTS.md → `.savepoint/router.md` → template prompts. See AGENTS.md Workflow section.
|
|
17
|
+
- **Bundled Agent Skills:** Savepoint ships with custom skills (`draft-prd`, `system-design`, `create-plan`, `create-task`, `build-task`, `audit`) to enforce each phase of the state machine.
|
|
18
|
+
- **Token-efficiency principle.**
|
|
19
|
+
- Cold session bootstrap: ~5–7K tokens (one-time per conversation).
|
|
20
|
+
- Per-task incremental: <2KB.
|
|
21
|
+
- Audit: 5–15KB.
|
|
22
|
+
- Anything that breaks these bounds violates the wedge.
|
|
23
|
+
- **Go data-reader boundary:** established in epic `E02-data-readers` (2026-05-01). `internal/data` owns Savepoint file parsing and discovery for the Go implementation: task frontmatter models, markdown YAML extraction, router state parsing, config theme defaults, release/epic/task directory listing, and boundary error sentinels.
|
|
24
|
+
- **Template assets** live under `templates/` with helpers in `src/templates/` (epic E04).
|
|
25
|
+
- **Init command** (`savepoint init`) validates, scaffolds, prints prompt, clipboard, optional install (epic E05).
|
|
26
|
+
- **Board command** (`savepoint board`) reads project, non-TTY fallback, Ink TUI, transition gates, mtime writes, audit signaling (epic E06).
|
|
27
|
+
- **Audit pipeline** (`savepoint audit`) resolves epic, skips, quality gates, snapshots, router transition, proposal review (epic E07).
|
|
28
|
+
|
|
29
|
+
## 2. Directory layout
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
<project-root>/
|
|
33
|
+
├── AGENTS.md ← agent entry point
|
|
34
|
+
└── .savepoint/
|
|
35
|
+
├── PRD.md ← project vision (rare changes)
|
|
36
|
+
├── Design.md ← project architecture (this file)
|
|
37
|
+
├── visual-identity.md ← design system; loaded conditionally for TUI work
|
|
38
|
+
├── router.md ← state-machine routing
|
|
39
|
+
├── config.yml ← theme, quality_gates, verify_strict
|
|
40
|
+
├── audit/
|
|
41
|
+
│ └── {E##-epic}/
|
|
42
|
+
│ ├── snapshot.md
|
|
43
|
+
│ └── proposals/
|
|
44
|
+
│ └── proposals.md
|
|
45
|
+
└── releases/
|
|
46
|
+
└── v1/
|
|
47
|
+
├── PRD.md ← release-scoped PRD
|
|
48
|
+
└── epics/
|
|
49
|
+
└── E##-{epic-name}/
|
|
50
|
+
├── Design.md ← epic delta
|
|
51
|
+
└── tasks/
|
|
52
|
+
└── T001-slug.md
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
AGENTS.md at root (uppercase, cross-vendor spec). Design.md in `.savepoint/` (working doc, not public-facing). visual-identity.md conditional — only loaded for TUI/theme/visual tasks. Subtasks are inline checklists inside task `.md` — never separate files. Epic folders and task files use `E##`/`T##` prefix. Scaffold assets live under `templates/`; generated projects receive rendered copies, not hardcoded strings.
|
|
56
|
+
|
|
57
|
+
## 3. Hierarchy semantics
|
|
58
|
+
|
|
59
|
+
| Level | Definition |
|
|
60
|
+
| ------------ | -------------------------------------------------------------------------------------- |
|
|
61
|
+
| **Release** | The thing being built. One PRD per release. v1 = MVP. |
|
|
62
|
+
| **Epic** | A major feature within a release. Has its own Design.md (delta from project Design). |
|
|
63
|
+
| **Task** | Independently buildable. Objective-led. **Requires implementation plan before build.** |
|
|
64
|
+
| **Sub-task** | Inline checklist item — _evidence of the implementation plan_, not standalone work. |
|
|
65
|
+
|
|
66
|
+
## 4. Status model & gates
|
|
67
|
+
|
|
68
|
+
Three statuses, with explicit gates:
|
|
69
|
+
|
|
70
|
+
| Status | Meaning | Entry gate |
|
|
71
|
+
| ------------- | -------------------------- | --------------------------------------------------------------- |
|
|
72
|
+
| `planned` | Ready to build | plan section non-empty |
|
|
73
|
+
| `in_progress` | AI building | all `depends_on` are `done` |
|
|
74
|
+
| `done` | Complete for current scope | all implementation items checked; verification per project mode |
|
|
75
|
+
|
|
76
|
+
- `blocked` is a **flag**, not a status — `in_progress` + `blocked: "reason"` is valid.
|
|
77
|
+
- `done -> in_progress` is allowed so completed work can be reopened when follow-up work is required.
|
|
78
|
+
- Verification mode: see `config.yml`.
|
|
79
|
+
|
|
80
|
+
## 5. Dependencies
|
|
81
|
+
|
|
82
|
+
- Declared in YAML frontmatter: `depends_on: [E##-epic/T###-task-id, ...]` (repo-relative IDs).
|
|
83
|
+
- `src/validation/dependencies.ts` detects duplicate task IDs, missing dependencies, and dependency cycles.
|
|
84
|
+
- Cross-epic deps allowed but warned (signal that epic boundaries may be wrong).
|
|
85
|
+
|
|
86
|
+
## 6. CLI surface (4 commands, no extras)
|
|
87
|
+
|
|
88
|
+
| Command | Purpose |
|
|
89
|
+
| ---------------------- | --------------------------------------------------------------------------------- |
|
|
90
|
+
| `savepoint init` | Scaffold `.savepoint/`, print magic prompt to stdout + clipboard |
|
|
91
|
+
| `savepoint board` | Launch TUI; auto-falls-back to plain table on non-TTY |
|
|
92
|
+
| `savepoint audit` | Run audit pipeline (`--skip --reason`, `--epic`) |
|
|
93
|
+
| `savepoint doctor` | Integrity check + ad-hoc quality-gate run + Layer-2 prompt for AI semantic review |
|
|
94
|
+
| `--version` / `--help` | Standard global flags |
|
|
95
|
+
|
|
96
|
+
- Bare `savepoint` prints help.
|
|
97
|
+
- Source modules: see AGENTS.md Codebase Map.
|
|
98
|
+
- **Explicitly rejected:** `task new`, `epic new`, `release new`, `plan`, `next`, `status`, `task done`. All are file edits or TUI actions.
|
|
99
|
+
|
|
100
|
+
**Names:** npm package `savepoint`; binary `savepoint`. No `vk` alias.
|
|
101
|
+
## 7. Audit pipeline (6 steps)
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
0. Quality Gates — CLI runs configured commands. Halts on failure if block_on_failure: true.
|
|
105
|
+
1. Snapshot — CLI writes file tree (gitignore-respecting) + changed-files list. NO code contents.
|
|
106
|
+
2. Diff Brief — State flips to audit_pending: {E##-epic}. Magic prompt printed to user.
|
|
107
|
+
3. Reconcile — Agent reads epic Design + snapshot + scoped code. Writes one proposal bundle to
|
|
108
|
+
.savepoint/audit/{E##-epic}/proposals.md.
|
|
109
|
+
4. Review — TUI shows side-by-side per-proposal diff. Approve / reject / edit each.
|
|
110
|
+
5. Commit — Approved proposals overwrite live files. Epic gets status: audited. Next epic unlocks.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
- `audit_pending` is a **hard gate**: next epic's tasks cannot enter `in_progress` until prior epic is `audited`.
|
|
114
|
+
- **High-divergence guard:** if a proposal changes >50% of the live file, TUI requires extra confirmation (threshold tunable in `config.yml`).
|
|
115
|
+
- **Skip allowed** via `savepoint audit --skip --reason "..."`. Logged to `.savepoint/audit-log.md`. Permanent `⚠ skipped` badge in TUI.
|
|
116
|
+
- **Proposal bundles** use delta-shaped edits: `Insert After`, `Replace`, or `Delete` blocks anchored to exact text.
|
|
117
|
+
- **Quality review** is a section inside the proposal bundle.
|
|
118
|
+
- **Snapshot availability is an audit precondition.** The router should enter `audit-pending` only after `.savepoint/audit/{E##-epic}/snapshot.md` exists.
|
|
119
|
+
|
|
120
|
+
Three layers:
|
|
121
|
+
|
|
122
|
+
- **Layer 1 (mechanical):** user's chosen linter. Recommended: eslint+dependency-cruiser (TS), radon+pylint (Python), gocyclo+staticcheck (Go). Cross-language fallback: `lizard`. Quality gate config: see `.savepoint/config.yml`.
|
|
123
|
+
- **Layer 2 (AI semantic review):** baked into the audit reconcile prompt. Outputs a quality-review section in the proposal bundle. **Advisory, not blocking.**
|
|
124
|
+
- **Layer 3:** `savepoint doctor` runs Layer 1 + prints Layer 2 prompt for ad-hoc use.
|
|
125
|
+
|
|
126
|
+
## 8. TUI
|
|
127
|
+
|
|
128
|
+
**Theming:** Atari-Noir is the default theme. **For full design tokens, palette, and rendering rules, see `.savepoint/visual-identity.md`** (loaded conditionally for TUI tasks). Live values in `config.yml` `theme:` section.
|
|
129
|
+
|
|
130
|
+
Acknowledged terminal limits: fonts, scanlines, glows, letter-spacing, mouse-driven motion don't translate. Lean on color discipline + box-drawing geometry + uppercase headings.
|
|
131
|
+
|
|
132
|
+
**Render fallbacks:** 256-color → 16-color hard-coded → `NO_COLOR=1` monochrome with glyphs → non-TTY plain table.
|
|
133
|
+
|
|
134
|
+
**Layout:** single screen with a 5-column Kanban board and detail pane. Non-TTY output uses `src/tui/render/plain-table.ts`.
|
|
135
|
+
|
|
136
|
+
**Implementation modules:** see AGENTS.md Codebase Map (E06 and E07 epic rows).
|
|
137
|
+
|
|
138
|
+
**Keybindings:** arrow/vim navigation, enter advances, backspace retreats, r/R refreshes, a/A exits toward audit review when proposals exist, q quits.
|
|
139
|
+
|
|
140
|
+
## 9. Concurrency
|
|
141
|
+
|
|
142
|
+
- **mtime-based optimistic concurrency.** TUI status writes compare the expected task-file mtime before parsing and again immediately before a no-op or write; conflicts are reported as non-destructive messages that require manual refresh before retry.
|
|
143
|
+
- Agents edit freely; the TUI defers.
|
|
144
|
+
- **No lockfile.**
|
|
145
|
+
|
|
146
|
+
## 10. Release versioning (PRDs)
|
|
147
|
+
|
|
148
|
+
- Sequential integer (`v1`, `v2`). Optional `name` in YAML.
|
|
149
|
+
- `savepoint doctor` warns when creating `v2` while `v1` has un-audited epics.
|
|
150
|
+
|
|
151
|
+
## 11. Failure modes
|
|
152
|
+
|
|
153
|
+
All failure modes are diagnosed by `savepoint doctor`. Doctor diagnoses and proposes; never auto-destructive.
|
|
154
|
+
|
|
155
|
+
| Failure | Behavior |
|
|
156
|
+
| -------------------------------------------- | ----------------------------------------------------------- |
|
|
157
|
+
| Corrupt YAML | Doctor flags file:line. TUI marks `⚠ corrupt`, refuses ops. |
|
|
158
|
+
| Missing dep | Doctor flags. TUI shows `⚠ broken dep`. |
|
|
159
|
+
| Dependency cycle | Doctor refuses to start either side; prints cycle path. |
|
|
160
|
+
| Duplicate task ID | Doctor flags. |
|
|
161
|
+
| Audit proposals without `audit_pending` flag | Doctor offers cleanup or restore. |
|
|
162
|
+
| Task in nonexistent epic | Doctor moves to `.savepoint/orphans/`. |
|
|
163
|
+
| Missing `config.yml` | All commands except `init` refuse. |
|
|
164
|
+
| Unknown CLI flag | Show help, exit 1. |
|
|
165
|
+
|
|
166
|
+
## 12. Distribution & build
|
|
167
|
+
|
|
168
|
+
> Audit note: the live repository is transitioning from the documented TypeScript/Node implementation to a Go module (`github.com/opencode/savepoint`). The architecture document still contains substantial TypeScript-era implementation detail and should be reconciled as Go epics are audited.
|
|
169
|
+
|
|
170
|
+
- **License:** MIT.
|
|
171
|
+
- **Install:** primary `npx savepoint init`, persistent `npm i -g savepoint` → `savepoint`.
|
|
172
|
+
- **Runtime:** Node 20.10+ LTS, ESM-only, no native deps. macOS / Linux / Windows-Terminal.
|
|
173
|
+
- **Repo:** single package. TypeScript strict. `tsup` build → `dist/`. Bin `dist/cli.js` shebanged.
|
|
174
|
+
- **No telemetry.** Ever.
|
|
175
|
+
|
|
176
|
+
## 13. Testing
|
|
177
|
+
|
|
178
|
+
| Layer | Tool | Coverage |
|
|
179
|
+
| -------------------------------------------------------- | -------------------------------- | ---------------------------------------------------------------------- |
|
|
180
|
+
| Unit: file ops, YAML, frontmatter, snapshot gen | `vitest` | High |
|
|
181
|
+
| Unit: state transitions, dep resolution, cycle detection | `vitest` | High |
|
|
182
|
+
| Integration: CLI commands in temp dirs | `vitest` + `tmp` | Medium |
|
|
183
|
+
| TUI reducers (state, isolated from rendering) | `vitest` + `ink-testing-library` | Medium |
|
|
184
|
+
| TUI rendering (snapshot tests) | — | **None.** Brittle. |
|
|
185
|
+
| End-to-end with real AI agents | Manual matrix | Pre-release: `[Claude, Cursor, Gemini, Aider]` × `[init, plan, audit]` |
|
|
186
|
+
|
|
187
|
+
~70% line coverage target; behavior coverage prioritized.
|
|
188
|
+
|
|
189
|
+
## 14. Package versioning
|
|
190
|
+
|
|
191
|
+
- `0.1.0` — first public release: scaffolding, status model, CLI, basic TUI, audit (no AI semantic review).
|
|
192
|
+
- `0.2.0` — AI semantic review + broader quality-gate language presets.
|
|
193
|
+
- `0.3.0` — file watching, search.
|
|
194
|
+
- `1.0.0` — MCP server + production stability.
|
|
195
|
+
|
|
196
|
+
Strict semver. Pre-1.0 minors may break.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: project-prd
|
|
3
|
+
status: active
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Savepoint — Product Vision
|
|
7
|
+
|
|
8
|
+
## What it is
|
|
9
|
+
|
|
10
|
+
A public OSS CLI + Ink-based TUI that scaffolds an opinionated AI-driven development workflow. The user runs `npx savepoint init` in an empty directory, points any AI agent (Claude / Cursor / Cline / Gemini / Aider / Codex) at the project, and the embedded prompt templates carry the agent through:
|
|
11
|
+
|
|
12
|
+
> **PRD → Design → Epics → Tasks → Build → Audit**
|
|
13
|
+
|
|
14
|
+
…with hard gates at each transition.
|
|
15
|
+
|
|
16
|
+
run dev npm run build && node dist/cli.js board to test
|
|
17
|
+
|
|
18
|
+
## Why
|
|
19
|
+
|
|
20
|
+
Three failure modes plague AI-driven development today:
|
|
21
|
+
|
|
22
|
+
1. **Inconsistency.** No repeatable process from high-level intent to working MVP.
|
|
23
|
+
2. **Token bloat.** Monolithic backlogs and MCP overhead burn context for everyone, but especially users on minimal AI plans.
|
|
24
|
+
3. **Documentation drift.** `Design.md` and agent instructions go stale after the first iteration; nobody updates them.
|
|
25
|
+
|
|
26
|
+
Savepoint addresses all three with a single mechanism: **a file-based state machine that any agent can follow, where every epic completion forces a documentation audit before the next epic can start.**
|
|
27
|
+
|
|
28
|
+
## Target user
|
|
29
|
+
|
|
30
|
+
**Vibe coders** — builders with minimal-to-moderate development experience, on minimal AI plans, who want AI agents to drive most of the implementation while a structured workflow keeps the project coherent.
|
|
31
|
+
|
|
32
|
+
Not: experienced engineers who already have their own systems. (They can still use it; they're not the audience.)
|
|
33
|
+
|
|
34
|
+
## Headline differentiator
|
|
35
|
+
|
|
36
|
+
**The Audit Loop.** When the last task in an epic moves to `done`, the next epic cannot start until `Design.md`, `AGENTS.md`, and the epic's own design have been reconciled with the actual code that was built. No existing markdown-first task tool has this gate.
|
|
37
|
+
|
|
38
|
+
Token-efficient hierarchy and markdown-first storage are table stakes. The audit loop is the marketing-first feature.
|
|
39
|
+
|
|
40
|
+
## Success metrics
|
|
41
|
+
|
|
42
|
+
- **Token usage:** AI agents complete tasks reading <2KB of context per task. Audit budget bounded to ~5–15KB.
|
|
43
|
+
- **Documentation accuracy:** zero drift — `AGENTS.md` always correctly maps the current codebase, enforced by gate.
|
|
44
|
+
- **Agent reach:** works with any agent that can read markdown and edit files (no MCP required, no per-agent adapters).
|
|
45
|
+
- **Time-to-first-PR:** a vibe coder can go from `npx savepoint init` to a merged epic in one weekend.
|
|
46
|
+
|
|
47
|
+
## Constraints
|
|
48
|
+
|
|
49
|
+
- File-only architecture for v1. No MCP server.
|
|
50
|
+
- Agent-agnostic via the [Router Pattern](Design.md). No per-agent forks.
|
|
51
|
+
- Recommended planning model is top-tier (Opus / Gemini Pro / GPT-5.5 equivalent). Lighter models work for execution but planning fidelity drops.
|
|
52
|
+
|
|
53
|
+
## Out of scope (forever or for now)
|
|
54
|
+
|
|
55
|
+
- Telemetry. Ever.
|
|
56
|
+
- Multi-user collaboration / cloud sync.
|
|
57
|
+
- Mouse / drag-and-drop in the TUI.
|
|
58
|
+
- Per-language adapter code (we recommend tools, don't ship them).
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# E01-go-setup Audit Proposals
|
|
2
|
+
|
|
3
|
+
## Target File
|
|
4
|
+
|
|
5
|
+
`.savepoint/Design.md`
|
|
6
|
+
|
|
7
|
+
## Replace
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
## 12. Distribution & build
|
|
11
|
+
|
|
12
|
+
- **License:** MIT.
|
|
13
|
+
- **Install:** primary `npx savepoint init`, persistent `npm i -g savepoint` → `savepoint`.
|
|
14
|
+
- **Runtime:** Node 20.10+ LTS, ESM-only, no native deps. macOS / Linux / Windows-Terminal.
|
|
15
|
+
- **Repo:** single package. TypeScript strict. `tsup` build → `dist/`. Bin `dist/cli.js` shebanged.
|
|
16
|
+
- **No telemetry.** Ever.
|
|
17
|
+
- **Baseline scaffold:** established in epic `E01-scaffolding` (2026-04-27). Package name `savepoint`, version `0.1.0`. Build, typecheck, lint, format, and test gates all pass.
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## With
|
|
21
|
+
|
|
22
|
+
```md
|
|
23
|
+
## 12. Distribution & build
|
|
24
|
+
|
|
25
|
+
- **License:** MIT.
|
|
26
|
+
- **Install:** local Go build during the rewrite; public install channel remains release work.
|
|
27
|
+
- **Runtime:** Go 1.23+ target, single native binary. macOS / Linux / Windows-Terminal.
|
|
28
|
+
- **Repo:** Go module `github.com/opencode/savepoint`. Build with `go build`; test with `go test ./...`.
|
|
29
|
+
- **No telemetry.** Ever.
|
|
30
|
+
- **Go baseline scaffold:** established in epic `E01-go-setup` (2026-05-01). The project now has `go.mod`, `go.sum`, `main.go`, `internal/board`, and Makefile shortcuts for build/test/run/clean.
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Target File
|
|
34
|
+
|
|
35
|
+
`.savepoint/Design.md`
|
|
36
|
+
|
|
37
|
+
## Insert After
|
|
38
|
+
|
|
39
|
+
```md
|
|
40
|
+
## 8. TUI
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## With
|
|
44
|
+
|
|
45
|
+
```md
|
|
46
|
+
|
|
47
|
+
**Go rewrite baseline:** E01 creates a minimal Bubble Tea shell in `internal/board`. The root `main.go` delegates process startup to `board.Run()`, which owns the Bubble Tea program lifecycle. Later board epics should move richer rendering, input state, and styling into focused packages rather than expanding `main.go`.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Target File
|
|
51
|
+
|
|
52
|
+
`AGENTS.md`
|
|
53
|
+
|
|
54
|
+
## Replace
|
|
55
|
+
|
|
56
|
+
~~~~md
|
|
57
|
+
## Build / Test / Run
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npm run build # compile src/ → dist/cli.js via tsup (ESM, node20)
|
|
61
|
+
npm run typecheck # tsc --noEmit strict check (NodeNext)
|
|
62
|
+
npm run lint # eslint flat config — rejects any in TypeScript
|
|
63
|
+
npm run format:check # prettier check across src, test, config, markdown
|
|
64
|
+
npm test # vitest smoke suite
|
|
65
|
+
```
|
|
66
|
+
~~~~
|
|
67
|
+
|
|
68
|
+
## With
|
|
69
|
+
|
|
70
|
+
````md
|
|
71
|
+
## Build / Test / Run
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
go build ./... # compile all Go packages
|
|
75
|
+
go test ./... # run Go test suite
|
|
76
|
+
make build # shortcut: go build -o savepoint main.go
|
|
77
|
+
make test # shortcut: go test ./...
|
|
78
|
+
make run # shortcut: go run main.go
|
|
79
|
+
```
|
|
80
|
+
````
|
|
81
|
+
|
|
82
|
+
## Target File
|
|
83
|
+
|
|
84
|
+
`AGENTS.md`
|
|
85
|
+
|
|
86
|
+
## Replace
|
|
87
|
+
|
|
88
|
+
```md
|
|
89
|
+
<!-- AUTO-GENERATED BY savepoint audit. Do not edit manually. -->
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## With
|
|
93
|
+
|
|
94
|
+
```md
|
|
95
|
+
<!-- AUTO-GENERATED BY savepoint audit. Do not edit manually. -->
|
|
96
|
+
|
|
97
|
+
| Module | Epic | Purpose |
|
|
98
|
+
| ------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------- |
|
|
99
|
+
| `go.mod` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Go module definition for the Savepoint CLI rewrite |
|
|
100
|
+
| `go.sum` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Dependency checksums for Bubble Tea, Lip Gloss, YAML, and deps |
|
|
101
|
+
| `main.go` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Process entrypoint; delegates Bubble Tea startup to board.Run |
|
|
102
|
+
| `Makefile` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Local build, test, run, and clean shortcuts |
|
|
103
|
+
| `internal/board/board.go` | [E01-go-setup](.savepoint/releases/v1/epics/E01-go-setup/Design.md) | Minimal Bubble Tea model, quit handling, and program lifecycle |
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Target File
|
|
107
|
+
|
|
108
|
+
`.savepoint/releases/v1/epics/E01-go-setup/Design.md`
|
|
109
|
+
|
|
110
|
+
## Replace
|
|
111
|
+
|
|
112
|
+
```md
|
|
113
|
+
status: planned
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## With
|
|
117
|
+
|
|
118
|
+
```md
|
|
119
|
+
status: audited
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Target File
|
|
123
|
+
|
|
124
|
+
`.savepoint/releases/v1/epics/E01-go-setup/Design.md`
|
|
125
|
+
|
|
126
|
+
## Insert After
|
|
127
|
+
|
|
128
|
+
```md
|
|
129
|
+
## Components and files
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## With
|
|
133
|
+
|
|
134
|
+
```md
|
|
135
|
+
|
|
136
|
+
## Implemented as
|
|
137
|
+
|
|
138
|
+
- `go.mod` uses module path `github.com/opencode/savepoint` and Go `1.26.2` in the current local toolchain.
|
|
139
|
+
- `main.go` is intentionally thin and delegates to `internal/board.Run()`.
|
|
140
|
+
- `internal/board/board.go` contains the first Bubble Tea model, `q`/`ctrl+c` quit handling, and the program runner.
|
|
141
|
+
- `Makefile` provides build/test/run/clean shortcuts, but `make` is not available in the audited Windows environment.
|
|
142
|
+
- `cmd/` and `internal/styles/` currently exist as empty directories. Add placeholder files if those directories must survive git checkout before later epics add code.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Quality Review
|
|
146
|
+
|
|
147
|
+
## Must Fix Before Close
|
|
148
|
+
|
|
149
|
+
- `internal/data/discover_test.go` fails `go test ./...` because imports `os` and `path/filepath` are unused. This is active E02 work, not E01 code, but it blocks the repo-level quality gate.
|
|
150
|
+
|
|
151
|
+
## Must Fix Before Next Epic
|
|
152
|
+
|
|
153
|
+
- `AGENTS.md` and `.savepoint/Design.md` still describe the old TypeScript/npm architecture and quality gates in several sections. Apply or refine the proposal sections above so future agents do not follow stale commands.
|
|
154
|
+
- `cmd/` and `internal/styles/` are empty directories. Git will not preserve them unless later code lands there or placeholders are added.
|
|
155
|
+
|
|
156
|
+
## Carry Forward
|
|
157
|
+
|
|
158
|
+
- `internal/board/board.go` currently writes errors to stderr inside `Run()` and `main.go` panics on the returned error. Before the CLI grows real command handling, centralize boundary error presentation so failures do not double-report or emit stack-like panic output.
|
|
159
|
+
- `Makefile` uses `rm -f savepoint`, which is fine under POSIX shells but is not enough for native Windows cleanup of `savepoint.exe`. Consider making clean cross-platform or documenting the expected shell.
|
|
160
|
+
|
|
161
|
+
## Already Fixed
|
|
162
|
+
|
|
163
|
+
- `go build ./...` passes outside the sandbox.
|
|
164
|
+
- The root TypeScript scaffold files are removed from the working tree as required by the E01 definition of done.
|
|
165
|
+
- `main.go` delegates to `internal/board`, and `q`/`ctrl+c` quit handling is implemented.
|
|
166
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md` now has checked implementation items and a `## Context Log`.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: audit-snapshot
|
|
3
|
+
epic: E01-go-setup
|
|
4
|
+
created: 2026-05-01
|
|
5
|
+
mode: manual
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# E01-go-setup Audit Snapshot
|
|
9
|
+
|
|
10
|
+
Manual snapshot created because the router was already on E02 and the audit CLI is not the source of truth for this Go rewrite state.
|
|
11
|
+
|
|
12
|
+
## Epic Scope
|
|
13
|
+
|
|
14
|
+
- Initialize Go module `github.com/opencode/savepoint`.
|
|
15
|
+
- Add Bubble Tea, Lip Gloss, and YAML dependencies.
|
|
16
|
+
- Add root `main.go` entrypoint.
|
|
17
|
+
- Add `internal/board` Bubble Tea shell.
|
|
18
|
+
- Add `cmd/`, `internal/data/`, and `internal/styles/` directories.
|
|
19
|
+
- Add `Makefile` targets for build, test, run, and clean.
|
|
20
|
+
- Remove the old TypeScript/npm root scaffold.
|
|
21
|
+
|
|
22
|
+
## Files Read
|
|
23
|
+
|
|
24
|
+
- `.savepoint/router.md`
|
|
25
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
|
|
26
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md`
|
|
27
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md`
|
|
28
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md`
|
|
29
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md`
|
|
30
|
+
- `agent-skills/ink-tui-design/SKILL.md`
|
|
31
|
+
- `.savepoint/visual-identity.md`
|
|
32
|
+
- `.savepoint/Design.md`
|
|
33
|
+
- `AGENTS.md`
|
|
34
|
+
- `go.mod`
|
|
35
|
+
- `go.sum`
|
|
36
|
+
- `main.go`
|
|
37
|
+
- `internal/board/board.go`
|
|
38
|
+
- `Makefile`
|
|
39
|
+
|
|
40
|
+
## Changed Files in Epic Scope
|
|
41
|
+
|
|
42
|
+
- `go.mod`
|
|
43
|
+
- `go.sum`
|
|
44
|
+
- `main.go`
|
|
45
|
+
- `internal/board/board.go`
|
|
46
|
+
- `Makefile`
|
|
47
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/Design.md`
|
|
48
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T001-init-module.md`
|
|
49
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T002-entrypoint.md`
|
|
50
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T003-directory-structure.md`
|
|
51
|
+
- `.savepoint/releases/v1/epics/E01-go-setup/tasks/T004-makefile.md`
|
|
52
|
+
|
|
53
|
+
## Directory Checks
|
|
54
|
+
|
|
55
|
+
- `cmd/` exists.
|
|
56
|
+
- `internal/board/` exists and contains `board.go`.
|
|
57
|
+
- `internal/data/` exists but currently contains E02 data-reader work, outside E01 scope.
|
|
58
|
+
- `internal/styles/` exists but is empty.
|
|
59
|
+
|
|
60
|
+
## Verification
|
|
61
|
+
|
|
62
|
+
- `go env GOVERSION`: `go1.26.2`
|
|
63
|
+
- `go build ./...`: pass when run outside the sandbox.
|
|
64
|
+
- `go test ./...`: fail. Failure is in `internal/data/discover_test.go` from active E02 work: unused imports `os` and `path/filepath`.
|
|
65
|
+
- `make test`: not runnable in this Windows environment because `make` is not installed.
|
|
66
|
+
|
|
67
|
+
## Notes
|
|
68
|
+
|
|
69
|
+
- The router currently points to `E02-data-readers/T001-task-struct`, so this audit is an explicit manual override for E01.
|
|
70
|
+
- The working tree contains a broad TypeScript-to-Go rewrite. Deleted TypeScript files are not treated as E01 regressions because the E01 design explicitly requires removing the TypeScript root scaffold.
|
|
71
|
+
- Empty directories such as `cmd/` and `internal/styles/` are not represented by `git ls-files` unless placeholder files are added.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Agents Guide
|
|
2
|
+
|
|
3
|
+
Welcome, AI agent. This project (`savepoint`) uses its own conventions to manage its own build. You are about to dogfood the workflow.
|
|
4
|
+
|
|
5
|
+
## Workflow
|
|
6
|
+
|
|
7
|
+
Before doing anything, read `.savepoint/router.md`. That file routes you to the next file based on the project's current state.
|
|
8
|
+
|
|
9
|
+
When you are about to write code, you must first read, in order:
|
|
10
|
+
|
|
11
|
+
1. `.savepoint/PRD.md` — what we are building and why
|
|
12
|
+
2. `.savepoint/Design.md` — how the system is architected
|
|
13
|
+
3. The release PRD: `.savepoint/releases/v1/PRD.md`
|
|
14
|
+
4. The epic Design: `.savepoint/releases/v1/epics/{epic}/Design.md`
|
|
15
|
+
5. The active task file: `.savepoint/releases/v1/epics/{epic}/tasks/{NNN}-*.md`
|
|
16
|
+
|
|
17
|
+
**Conditional read:** if the active task touches TUI rendering, theme, or visual design, also read `.savepoint/visual-identity.md`. Otherwise skip it — it's ~1.8K tokens you don't need.
|
|
18
|
+
|
|
19
|
+
**Do not load files outside the current task scope** unless the task requires it. Token discipline is the wedge of this product; we honor it on ourselves.
|
|
20
|
+
|
|
21
|
+
## Build / Test / Run
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm run build # compile src/ → dist/cli.js via tsup (ESM, node20)
|
|
25
|
+
npm run typecheck # tsc --noEmit strict check (NodeNext)
|
|
26
|
+
npm run lint # eslint flat config — rejects any in TypeScript
|
|
27
|
+
npm run format:check # prettier check across src, test, config, markdown
|
|
28
|
+
npm test # vitest smoke suite
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
> **Windows note:** `npm test` uses a custom preload script (`scripts/vitest-preload.cjs`) and `vitest.config.js` (not `.ts`) to work around a Windows-specific child_process/esbuild issue. This is transparent when running through npm scripts.
|
|
32
|
+
|
|
33
|
+
## Code Style
|
|
34
|
+
|
|
35
|
+
1. **One job per file.** If a file does two things, split it.
|
|
36
|
+
2. **One-sentence rule.** If you can't describe a function in one sentence, refactor.
|
|
37
|
+
3. **Test what branches.** Logic with if/else/switch gets a test. Pure rendering: skip.
|
|
38
|
+
4. **Types are documentation.** No `any`. Let the compiler help.
|
|
39
|
+
5. **Build, don't speculate.** No code for hypothetical futures.
|
|
40
|
+
6. **Errors at boundaries.** Handle failure where data enters or leaves the system.
|
|
41
|
+
7. **One source of truth.** State lives in one place. No syncing copies.
|
|
42
|
+
8. **Comments explain WHY,** not what. If removing the comment wouldn't confuse a future reader, delete it.
|
|
43
|
+
9. **Content in data files.** Markdown/JSON/YAML, not strings in code.
|
|
44
|
+
10. **Small diffs.** Each task touches as few files as possible.
|
|
45
|
+
|
|
46
|
+
## Codebase Map
|
|
47
|
+
|
|
48
|
+
<!-- AUTO-GENERATED BY savepoint audit. Do not edit manually. -->
|
|
49
|
+
|
|
50
|
+
| Module | Epic | Purpose |
|
|
51
|
+
| -------------------- | ------------------------------------------------------------------------- | ---------------------------------------------------- |
|
|
52
|
+
| `src/cli.ts` | [E01-scaffolding](.savepoint/releases/v1/epics/E01-scaffolding/Design.md) | CLI entrypoint; placeholder help/version output |
|
|
53
|
+
| `src/version.ts` | [E01-scaffolding](.savepoint/releases/v1/epics/E01-scaffolding/Design.md) | Single source for package version string |
|
|
54
|
+
| `test/smoke.test.ts` | [E01-scaffolding](.savepoint/releases/v1/epics/E01-scaffolding/Design.md) | Baseline Vitest smoke test proving test runner works |
|
|
55
|
+
|
|
56
|
+
<!-- END AUTO-GENERATED -->
|
|
57
|
+
|
|
58
|
+
## CLI rules for agents
|
|
59
|
+
|
|
60
|
+
**Never run `savepoint` commands.** The CLI is for the human. Edit files directly.
|
|
61
|
+
|
|
62
|
+
(For this repo specifically: `savepoint` doesn't exist yet — we're building it. Even once it exists, this rule stands.)
|
|
63
|
+
|
|
64
|
+
## Recommended planning models
|
|
65
|
+
|
|
66
|
+
For PRD/Design/Task planning, this workflow assumes a top-tier model: Claude Opus, Gemini 2.5 Pro, GPT-5.5, or equivalent. Lighter models may not follow embedded prompt instructions reliably. If you are not one of those, advise the user before proceeding with planning steps.
|