savepoint 1.2.6 → 1.2.7

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/README.md CHANGED
@@ -1,127 +1,127 @@
1
- ![Savepoint Logo](assets/logo.png)
2
-
3
- # 💾 SAVEPOINT
4
-
5
- > **Hard Gates. Zero Drift. All Vibe.**
6
-
7
- Built for **vibe coders** on tight token budgets who still want to ship.
8
-
9
- ```bash
10
- npx savepoint init
11
- ```
12
-
13
- I love building side projects with AI. It feels like magic. But the reality of "vibe coding" is that it usually falls apart on day three. Not because the model is bad, but because there are no boundaries.
14
-
15
- AI-driven development fails for three specific reasons:
16
-
17
- 1. **The Drift:** Your `Design.md` and agent instructions go stale after the first iteration; nobody updates them.
18
- 2. **Token Bloat:** Monolithic backlogs and MCP overhead burn your context window — and your budget.
19
- 3. **The Chaos:** No repeatable process from a "vibe" to a working MVP.
20
-
21
- **Savepoint is a baby gate for AI agents.**
22
-
23
- It’s a simple, file-based state machine and cinematic Terminal UI (TUI) designed to force you—and your agent (Claude, Cursor, Aider, Gemini)—to slow down, write down what you're actually building, and check your work before moving on.
24
-
25
- No database. No proprietary cloud. **No telemetry, ever.** Your filesystem is the map, and Savepoint keeps the agent on it.
26
-
27
- ---
28
-
29
- ## 🔄 The Loop (Driven by Agent Skills)
30
-
31
- Savepoint turns your project into a series of hard gates, enforced by **six bundled custom agent skills** (`draft-prd`, `system-design`, `create-plan`, `create-task`, `build-task`, `audit`). You cannot move forward until the current gate is cleared.
32
-
33
- `[ PRD ]` **→** `[ DESIGN ]` **→** `[ EPICS ]` **→** `[ TASKS ]` **→** `[ BUILD ]` **→** `[ AUDIT ]`
34
-
35
- Small scopes. Small context windows. No wandering.
36
-
37
- - **The PRD Gate (`savepoint-draft-prd`):** The agent interviews you to ensure your idea is crisp enough for a V1 before writing any architecture.
38
- - **The Design Gate (`savepoint-system-design`):** Write down what you actually want. If you can't explain it simply in a markdown file, the AI is going to make a mess of it.
39
- - **The Plan Gate (`savepoint-create-plan` & `savepoint-create-task`):** Break the idea down into small, manageable steps. No giant leaps. This becomes the checklist the AI _must_ follow.
40
- - **The Build Gate (`savepoint-build-task`):** The AI writes code for one small step at a time. The scope stays tight so it doesn't wander off into the weeds. It logs "Drift Notes" instead of cowboy-coding architectural changes.
41
- - **The Audit Gate (`savepoint-audit`):** Before moving on, we stop and check. Does the code match the plan? We don't advance until the map matches the territory.
42
-
43
- > 🔒 **The Audit Loop** — When the last task in an epic moves to `done`, the next epic stays _locked_ until your docs (`Design.md`, `AGENTS.md`, and the epic's own design) are reconciled with the actual code via the audit agent. **No existing markdown-first task tool has this gate.**
44
-
45
- ---
46
-
47
- ## 🛠 The Stack (Atari-Noir)
48
-
49
- Built for a cinematic, technical feel without the bloat.
50
-
51
- - **Cinematic TUI:** Built with Go and Bubble Tea. It feels like a proper terminal tool, lightning-fast and dependency-free.
52
- - **File-First:** Your project's state lives in markdown and JSON files right next to your code.
53
- - **Agent-Agnostic:** Claude, Cursor, Aider, Gemini — if it reads markdown and edits files, it works. No MCP server. No per-agent adapters.
54
- - **Token-Efficient by Design:** Tasks read <2KB of context. Audits stay under ~15KB. No more burning your AI budget on bloated backlogs.
55
-
56
- ---
57
-
58
- ## 💻 Commands (0.1.0-MVP)
59
-
60
- | Command | Action |
61
- | :----------------- | :--------------------------------------------------------------------------------------------------- |
62
- | `savepoint --version` | Print the installed Savepoint version. |
63
- | `savepoint init` | Scaffold the loop, write your `AGENTS.md` guide, drop the baby gates, and generate the magic prompt. |
64
- | `savepoint board` | Launch the Atari-Noir Kanban TUI to track the vibe. |
65
- | `savepoint doctor` | Check the integrity of the state machine. |
66
- | `savepoint upgrade-assets [dir] [--dry-run] [--force]` | Refresh package-owned templates and agent skills in an existing Savepoint project without touching project state. |
67
-
68
- ---
69
-
70
- ## 🐛 Defect Workflow
71
-
72
- When a bug surfaces during a build or after a release, create a defect file instead of a new task. Defects live in `.savepoint/releases/{release}/defects/` and are tracked separately from the epic backlog so the audit trail stays clean.
73
-
74
- ```
75
- .savepoint/releases/v1/defects/
76
- D001-auth-crash.md
77
- D002-slow-query.md
78
- ```
79
-
80
- Each defect file uses YAML frontmatter:
81
-
82
- ```yaml
83
- ---
84
- id: v1/D001-auth-crash
85
- release: v1
86
- status: planned # planned | in_progress | done
87
- severity: high # critical | high | medium | low
88
- title: "Auth crash on empty token"
89
- introduced: v1.0.3 # optional: version where bug appeared
90
- reference: E12-slug/T003-slug # optional: related task ID
91
- ---
92
- ```
93
-
94
- - Press **`d`** on the board to open the defect overlay and see all defects for the current release.
95
- - `savepoint doctor` validates defect files and reports malformed frontmatter, invalid status, and broken task references.
96
-
97
- **Use a defect when:** a regression is found in TUI testing, a build breaks after a merged epic, or a production bug is traced to a known release.
98
-
99
- **Do NOT use a defect when:** a planned task needs rework (update the task instead), a scope changes (that is an epic), or something is a future enhancement.
100
-
101
- ---
102
-
103
- ## 📦 Updating
104
-
105
- After updating the Savepoint package:
106
-
107
- ```bash
108
- npm update -g savepoint
109
- savepoint upgrade-assets
110
- ```
111
-
112
- The `upgrade-assets` command refreshes bundled `agent-skills/**/SKILL.md` files and the Savepoint-managed block in `AGENTS.md` from the latest templates. It never overwrites `.savepoint/PRD.md`, `.savepoint/Design.md`, `.savepoint/releases/**`, or any task/epic/audit files.
113
-
114
- Use `--dry-run` to preview changes before applying them.
115
-
116
- ---
117
-
118
- ## 🪞 Recursive Construction
119
-
120
- I am building Savepoint to dogfood the very workflow it enables. **This entire repository is being built by agents, guided by Savepoint’s own state machine.**
121
-
122
- I’m sharing it to prove a point: The real power of AI isn't just the size of the LLM—it’s the structure you give it. Token-efficient, documentation-first development is the only way to build at scale with AI without losing your mind.
123
-
124
- **The goal:** Go from `npx savepoint init` to a merged epic in one weekend.
125
-
126
- **License:** MIT
127
- **Status:** Recursive Construction (v1 MVP in progress)
1
+ ![Savepoint Logo](assets/logo.png)
2
+
3
+ # 💾 SAVEPOINT
4
+
5
+ > **Hard Gates. Zero Drift. All Vibe.**
6
+
7
+ Built for **vibe coders** on tight token budgets who still want to ship.
8
+
9
+ ```bash
10
+ npx savepoint init
11
+ ```
12
+
13
+ I love building side projects with AI. It feels like magic. But the reality of "vibe coding" is that it usually falls apart on day three. Not because the model is bad, but because there are no boundaries.
14
+
15
+ AI-driven development fails for three specific reasons:
16
+
17
+ 1. **The Drift:** Your `Design.md` and agent instructions go stale after the first iteration; nobody updates them.
18
+ 2. **Token Bloat:** Monolithic backlogs and MCP overhead burn your context window — and your budget.
19
+ 3. **The Chaos:** No repeatable process from a "vibe" to a working MVP.
20
+
21
+ **Savepoint is a baby gate for AI agents.**
22
+
23
+ It’s a simple, file-based state machine and cinematic Terminal UI (TUI) designed to force you—and your agent (Claude, Cursor, Aider, Gemini)—to slow down, write down what you're actually building, and check your work before moving on.
24
+
25
+ No database. No proprietary cloud. **No telemetry, ever.** Your filesystem is the map, and Savepoint keeps the agent on it.
26
+
27
+ ---
28
+
29
+ ## 🔄 The Loop (Driven by Agent Skills)
30
+
31
+ Savepoint turns your project into a series of hard gates, enforced by **six bundled custom agent skills** (`draft-prd`, `system-design`, `create-plan`, `create-task`, `build-task`, `audit`). You cannot move forward until the current gate is cleared.
32
+
33
+ `[ PRD ]` **→** `[ DESIGN ]` **→** `[ EPICS ]` **→** `[ TASKS ]` **→** `[ BUILD ]` **→** `[ AUDIT ]`
34
+
35
+ Small scopes. Small context windows. No wandering.
36
+
37
+ - **The PRD Gate (`savepoint-draft-prd`):** The agent interviews you to ensure your idea is crisp enough for a V1 before writing any architecture.
38
+ - **The Design Gate (`savepoint-system-design`):** Write down what you actually want. If you can't explain it simply in a markdown file, the AI is going to make a mess of it.
39
+ - **The Plan Gate (`savepoint-create-plan` & `savepoint-create-task`):** Break the idea down into small, manageable steps. No giant leaps. This becomes the checklist the AI _must_ follow.
40
+ - **The Build Gate (`savepoint-build-task`):** The AI writes code for one small step at a time. The scope stays tight so it doesn't wander off into the weeds. It logs "Drift Notes" instead of cowboy-coding architectural changes.
41
+ - **The Audit Gate (`savepoint-audit`):** Before moving on, we stop and check. Does the code match the plan? We don't advance until the map matches the territory.
42
+
43
+ > 🔒 **The Audit Loop** — When the last task in an epic moves to `done`, the next epic stays _locked_ until your docs (`Design.md`, `AGENTS.md`, and the epic's own design) are reconciled with the actual code via the audit agent. **No existing markdown-first task tool has this gate.**
44
+
45
+ ---
46
+
47
+ ## 🛠 The Stack (Atari-Noir)
48
+
49
+ Built for a cinematic, technical feel without the bloat.
50
+
51
+ - **Cinematic TUI:** Built with Go and Bubble Tea. It feels like a proper terminal tool, lightning-fast and dependency-free.
52
+ - **File-First:** Your project's state lives in markdown and JSON files right next to your code.
53
+ - **Agent-Agnostic:** Claude, Cursor, Aider, Gemini — if it reads markdown and edits files, it works. No MCP server. No per-agent adapters.
54
+ - **Token-Efficient by Design:** Tasks read <2KB of context. Audits stay under ~15KB. No more burning your AI budget on bloated backlogs.
55
+
56
+ ---
57
+
58
+ ## 💻 Commands (0.1.0-MVP)
59
+
60
+ | Command | Action |
61
+ | :----------------- | :--------------------------------------------------------------------------------------------------- |
62
+ | `savepoint --version` | Print the installed Savepoint version. |
63
+ | `savepoint init` | Scaffold the loop, write your `AGENTS.md` guide, drop the baby gates, and generate the magic prompt. |
64
+ | `savepoint board` | Launch the Atari-Noir Kanban TUI to track the vibe. |
65
+ | `savepoint doctor` | Check the integrity of the state machine. |
66
+ | `savepoint upgrade-assets [dir] [--dry-run] [--force]` | Refresh package-owned templates and agent skills in an existing Savepoint project without touching project state. |
67
+
68
+ ---
69
+
70
+ ## 🐛 Defect Workflow
71
+
72
+ When a bug surfaces during a build or after a release, create a defect file instead of a new task. Defects live in `.savepoint/releases/{release}/defects/` and are tracked separately from the epic backlog so the audit trail stays clean.
73
+
74
+ ```
75
+ .savepoint/releases/v1/defects/
76
+ D001-auth-crash.md
77
+ D002-slow-query.md
78
+ ```
79
+
80
+ Each defect file uses YAML frontmatter:
81
+
82
+ ```yaml
83
+ ---
84
+ id: v1/D001-auth-crash
85
+ release: v1
86
+ status: planned # planned | in_progress | done
87
+ severity: high # critical | high | medium | low
88
+ title: "Auth crash on empty token"
89
+ introduced: v1.0.3 # optional: version where bug appeared
90
+ reference: E12-slug/T003-slug # optional: related task ID
91
+ ---
92
+ ```
93
+
94
+ - Press **`d`** on the board to open the defect overlay and see all defects for the current release.
95
+ - `savepoint doctor` validates defect files and reports malformed frontmatter, invalid status, and broken task references.
96
+
97
+ **Use a defect when:** a regression is found in TUI testing, a build breaks after a merged epic, or a production bug is traced to a known release.
98
+
99
+ **Do NOT use a defect when:** a planned task needs rework (update the task instead), a scope changes (that is an epic), or something is a future enhancement.
100
+
101
+ ---
102
+
103
+ ## 📦 Updating
104
+
105
+ After updating the Savepoint package:
106
+
107
+ ```bash
108
+ npm update -g savepoint
109
+ savepoint upgrade-assets
110
+ ```
111
+
112
+ The `upgrade-assets` command refreshes bundled `agent-skills/**/SKILL.md` files and the Savepoint-managed block in `AGENTS.md` from the latest templates. It never overwrites `.savepoint/PRD.md`, `.savepoint/Design.md`, `.savepoint/releases/**`, or any task/epic/audit files.
113
+
114
+ Use `--dry-run` to preview changes before applying them.
115
+
116
+ ---
117
+
118
+ ## 🪞 Recursive Construction
119
+
120
+ I am building Savepoint to dogfood the very workflow it enables. **This entire repository is being built by agents, guided by Savepoint’s own state machine.**
121
+
122
+ I’m sharing it to prove a point: The real power of AI isn't just the size of the LLM—it’s the structure you give it. Token-efficient, documentation-first development is the only way to build at scale with AI without losing your mind.
123
+
124
+ **The goal:** Go from `npx savepoint init` to a merged epic in one weekend.
125
+
126
+ **License:** MIT
127
+ **Status:** Recursive Construction (v1 MVP in progress)
package/bin/savepoint.js CHANGED
@@ -1,34 +1,34 @@
1
- #!/usr/bin/env node
2
-
3
- const { spawnSync } = require("node:child_process");
4
- const path = require("node:path");
5
-
6
- const platformMap = {
7
- darwin: "darwin",
8
- linux: "linux",
9
- win32: "windows",
10
- };
11
-
12
- const archMap = {
13
- arm64: "arm64",
14
- x64: "amd64",
15
- };
16
-
17
- const goos = platformMap[process.platform];
18
- const goarch = archMap[process.arch];
19
-
20
- if (!goos || !goarch) {
21
- console.error(`savepoint does not support ${process.platform}/${process.arch}`);
22
- process.exit(1);
23
- }
24
-
25
- const executable = goos === "windows" ? "savepoint.exe" : "savepoint";
26
- const binary = path.join(__dirname, "..", "dist", "npm", `${goos}-${goarch}`, executable);
27
- const result = spawnSync(binary, process.argv.slice(2), { stdio: "inherit" });
28
-
29
- if (result.error) {
30
- console.error(result.error.message);
31
- process.exit(1);
32
- }
33
-
34
- process.exit(result.status ?? 0);
1
+ #!/usr/bin/env node
2
+
3
+ const { spawnSync } = require("node:child_process");
4
+ const path = require("node:path");
5
+
6
+ const platformMap = {
7
+ darwin: "darwin",
8
+ linux: "linux",
9
+ win32: "windows",
10
+ };
11
+
12
+ const archMap = {
13
+ arm64: "arm64",
14
+ x64: "amd64",
15
+ };
16
+
17
+ const goos = platformMap[process.platform];
18
+ const goarch = archMap[process.arch];
19
+
20
+ if (!goos || !goarch) {
21
+ console.error(`savepoint does not support ${process.platform}/${process.arch}`);
22
+ process.exit(1);
23
+ }
24
+
25
+ const executable = goos === "windows" ? "savepoint.exe" : "savepoint";
26
+ const binary = path.join(__dirname, "..", "dist", "npm", `${goos}-${goarch}`, executable);
27
+ const result = spawnSync(binary, process.argv.slice(2), { stdio: "inherit" });
28
+
29
+ if (result.error) {
30
+ console.error(result.error.message);
31
+ process.exit(1);
32
+ }
33
+
34
+ process.exit(result.status ?? 0);
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,35 +1,35 @@
1
- {
2
- "name": "savepoint",
3
- "version": "1.2.6",
4
- "description": "It’s a simple, file-based state machine and cinematic Terminal UI (TUI) designed to force you—and your agent (Claude, Cursor, Aider, Gemini)—to slow down, write down what you're actually building, and check your work before moving on.",
5
- "keywords": [
6
- "board",
7
- "kanban",
8
- "planning"
9
- ],
10
- "homepage": "https://github.com/anipatke/savepoint#readme",
11
- "bugs": {
12
- "url": "https://github.com/anipatke/savepoint/issues"
13
- },
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/anipatke/savepoint.git"
17
- },
18
- "license": "MIT",
19
- "author": "anipatke",
20
- "bin": {
21
- "savepoint": "./bin/savepoint.js"
22
- },
23
- "files": [
24
- "bin/savepoint.js",
25
- "dist/npm",
26
- "README.md",
27
- "LICENSE"
28
- ],
29
- "scripts": {
30
- "build": "go run ./internal/buildtool build-npm",
31
- "test": "echo \"Run 'make test' for Go tests\"",
32
- "postinstall": "node -e \"console.log('Run \\\"savepoint upgrade-assets\\\" in each existing Savepoint project to refresh agent skills and templates.')\"",
33
- "prepublishOnly": "npm run build"
34
- }
35
- }
1
+ {
2
+ "name": "savepoint",
3
+ "version": "1.2.7",
4
+ "description": "It’s a simple, file-based state machine and cinematic Terminal UI (TUI) designed to force you—and your agent (Claude, Cursor, Aider, Gemini)—to slow down, write down what you're actually building, and check your work before moving on.",
5
+ "keywords": [
6
+ "board",
7
+ "kanban",
8
+ "planning"
9
+ ],
10
+ "homepage": "https://github.com/anipatke/savepoint#readme",
11
+ "bugs": {
12
+ "url": "https://github.com/anipatke/savepoint/issues"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/anipatke/savepoint.git"
17
+ },
18
+ "license": "MIT",
19
+ "author": "anipatke",
20
+ "bin": {
21
+ "savepoint": "./bin/savepoint.js"
22
+ },
23
+ "files": [
24
+ "bin/savepoint.js",
25
+ "dist/npm",
26
+ "README.md",
27
+ "LICENSE"
28
+ ],
29
+ "scripts": {
30
+ "build": "go run ./internal/buildtool build-npm",
31
+ "test": "echo \"Run 'make test' for Go tests\"",
32
+ "postinstall": "node -e \"console.log('Run \\\"savepoint upgrade-assets\\\" in each existing Savepoint project to refresh agent skills and templates.')\"",
33
+ "prepublishOnly": "npm run build"
34
+ }
35
+ }