@holdpoint/cli 0.1.0-alpha.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.
@@ -0,0 +1,93 @@
1
+ version: 1
2
+
3
+ context:
4
+ guides: {}
5
+
6
+ conditions:
7
+ - id: has-openapi
8
+ operator: file_exists
9
+ path: openapi.yaml
10
+
11
+ - id: has-playwright
12
+ operator: file_exists
13
+ path: playwright.config.ts
14
+
15
+ checks:
16
+ - id: lint
17
+ label: "ESLint — no warnings"
18
+ cmd: "pnpm lint --max-warnings 0"
19
+
20
+ - id: typecheck
21
+ label: "TypeScript type check"
22
+ cmd: "pnpm typecheck"
23
+
24
+ - id: unit-tests
25
+ label: "Vitest unit tests"
26
+ cmd: "pnpm test --run"
27
+
28
+ - id: backend-tests
29
+ label: "Backend integration tests"
30
+ when: backend
31
+ cmd: "pnpm test:integration --run"
32
+
33
+ - id: build
34
+ label: "Production build"
35
+ cmd: "pnpm build"
36
+
37
+ - id: jsdoc
38
+ label: "JSDoc on changed public functions"
39
+ prompt: >
40
+ All changed public functions and exports must have JSDoc.
41
+
42
+ - id: openapi-updated
43
+ label: "OpenAPI spec updated for API changes"
44
+ when: backend
45
+ conditionId: has-openapi
46
+ prompt: >
47
+ If any API routes were added or changed, update openapi.yaml to match.
48
+
49
+ - id: visual-regression
50
+ label: "Visual regression check"
51
+ when: frontend
52
+ conditionId: has-playwright
53
+ prompt: >
54
+ Run playwright tests for any UI changes: `pnpm playwright test`
55
+ Review screenshots for regressions.
56
+
57
+ - id: i18n
58
+ label: "i18n — no hardcoded user-facing strings"
59
+ when: frontend
60
+ prompt: >
61
+ Confirm all user-visible strings are wrapped in t() and locale files updated.
62
+
63
+ - id: db-migrations
64
+ label: "Database migration for schema changes"
65
+ when: database
66
+ prompt: >
67
+ If schema or migration files changed, ensure the appropriate migration was
68
+ generated with your ORM tool (e.g. `prisma migrate dev`, `alembic revision`,
69
+ `rails db:migrate`) and committed alongside the schema change.
70
+
71
+ - id: changelog-update
72
+ label: "Add a CHANGELOG.md entry for this session"
73
+ prompt: >
74
+ Before committing, add an entry to CHANGELOG.md describing what was done.
75
+ Use Keep a Changelog format — add under ## [Unreleased] (create the file
76
+ and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
77
+ Be concise but specific. The entry text will serve as the commit message.
78
+
79
+ - id: readme-sync
80
+ label: "Update README.md if user-facing changes were made"
81
+ prompt: >
82
+ If you added, changed, or removed user-facing functionality — CLI commands,
83
+ configuration options, public APIs, or significant new features — update
84
+ README.md to reflect those changes.
85
+
86
+ - id: holdpoint-evolve
87
+ label: "Evolve checks when project structure changes"
88
+ when: structural
89
+ cmd: "npx holdpoint evolve"
90
+
91
+ - id: git-commit
92
+ label: "Commit all changes before finishing"
93
+ cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
@@ -0,0 +1,60 @@
1
+ version: 1
2
+
3
+ context:
4
+ guides: {}
5
+
6
+ conditions: []
7
+
8
+ checks:
9
+ - id: go-build
10
+ label: "go build — no compilation errors"
11
+ when: go
12
+ cmd: "go build ./..."
13
+
14
+ - id: go-vet
15
+ label: "go vet — no suspicious constructs"
16
+ when: go
17
+ cmd: "go vet ./..."
18
+
19
+ - id: go-test
20
+ label: "go test — all unit tests pass"
21
+ when: go
22
+ cmd: "go test ./..."
23
+
24
+ - id: godoc
25
+ label: "GoDoc on exported symbols"
26
+ when: go
27
+ prompt: >
28
+ Ensure all exported functions, types, methods, and packages have GoDoc
29
+ comments (one-line summary starting on the same line as the declaration).
30
+
31
+ - id: test-coverage
32
+ label: "Meaningful test coverage for new logic"
33
+ when: testing
34
+ prompt: >
35
+ Confirm any new non-trivial logic has corresponding unit tests in
36
+ *_test.go files in the same package.
37
+
38
+ - id: changelog-update
39
+ label: "Add a CHANGELOG.md entry for this session"
40
+ prompt: >
41
+ Before committing, add an entry to CHANGELOG.md describing what was done.
42
+ Use Keep a Changelog format — add under ## [Unreleased] (create the file
43
+ and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
44
+ Be concise but specific. The entry text will serve as the commit message.
45
+
46
+ - id: readme-sync
47
+ label: "Update README.md if user-facing changes were made"
48
+ prompt: >
49
+ If you added, changed, or removed user-facing functionality — CLI commands,
50
+ configuration options, public APIs, or significant new features — update
51
+ README.md to reflect those changes.
52
+
53
+ - id: holdpoint-evolve
54
+ label: "Evolve checks when project structure changes"
55
+ when: structural
56
+ cmd: "npx holdpoint evolve"
57
+
58
+ - id: git-commit
59
+ label: "Commit all changes before finishing"
60
+ cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
@@ -0,0 +1,76 @@
1
+ version: 1
2
+
3
+ context:
4
+ guides: {}
5
+
6
+ conditions:
7
+ - id: has-openapi
8
+ operator: file_exists
9
+ path: openapi.yaml
10
+
11
+ checks:
12
+ - id: lint
13
+ label: "ESLint — no warnings"
14
+ cmd: "pnpm lint --max-warnings 0"
15
+
16
+ - id: typecheck
17
+ label: "TypeScript type check"
18
+ cmd: "pnpm typecheck"
19
+
20
+ - id: unit-tests
21
+ label: "Vitest unit tests"
22
+ cmd: "pnpm test --run"
23
+
24
+ - id: build
25
+ label: "Next.js production build"
26
+ cmd: "pnpm build"
27
+
28
+ - id: jsdoc
29
+ label: "JSDoc on changed public functions"
30
+ prompt: >
31
+ Ensure all changed public functions and exports have JSDoc comments.
32
+
33
+ - id: visual-regression
34
+ label: "Visual regression check"
35
+ when: frontend
36
+ prompt: >
37
+ For any UI changes, confirm the layout is correct at 1280px desktop,
38
+ 768px tablet, and 375px mobile breakpoints.
39
+
40
+ - id: i18n
41
+ label: "i18n — no hardcoded strings"
42
+ when: frontend
43
+ prompt: >
44
+ Ensure all user-visible text is wrapped in the t() translation function
45
+ and has corresponding entries in all locale files.
46
+
47
+ - id: openapi-updated
48
+ label: "OpenAPI spec updated for API changes"
49
+ when: backend
50
+ conditionId: has-openapi
51
+ prompt: >
52
+ If any API routes were added or changed, confirm the openapi.yaml
53
+ spec has been updated to match.
54
+
55
+ - id: changelog-update
56
+ label: "Add a CHANGELOG.md entry for this session"
57
+ prompt: >
58
+ Before committing, add an entry to CHANGELOG.md describing what was done.
59
+ Use Keep a Changelog format — add under ## [Unreleased] (create the file
60
+ and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
61
+ Be concise but specific. The entry text will serve as the commit message.
62
+
63
+ - id: readme-sync
64
+ label: "Update README.md if user-facing changes were made"
65
+ prompt: >
66
+ If you added, changed, or removed user-facing functionality — pages, features,
67
+ or configuration options — update README.md to reflect those changes.
68
+
69
+ - id: holdpoint-evolve
70
+ label: "Evolve checks when project structure changes"
71
+ when: structural
72
+ cmd: "npx holdpoint evolve"
73
+
74
+ - id: git-commit
75
+ label: "Commit all changes before finishing"
76
+ cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
@@ -0,0 +1,60 @@
1
+ version: 1
2
+
3
+ context:
4
+ guides: {}
5
+
6
+ conditions: []
7
+
8
+ checks:
9
+ - id: ruff
10
+ label: "Ruff linter"
11
+ when: python
12
+ cmd: "ruff check ."
13
+
14
+ - id: mypy
15
+ label: "Mypy type check"
16
+ when: python
17
+ cmd: "mypy . --ignore-missing-imports"
18
+
19
+ - id: pytest
20
+ label: "pytest"
21
+ when: python
22
+ cmd: "pytest --tb=short -q"
23
+
24
+ - id: docstrings
25
+ label: "Docstrings on changed functions"
26
+ when: python
27
+ prompt: >
28
+ Ensure all changed public functions and classes have PEP-257 compliant
29
+ docstrings (one-line summary + extended description where needed).
30
+
31
+ - id: type-hints
32
+ label: "Type hints on new functions"
33
+ when: python
34
+ prompt: >
35
+ Confirm that all new functions have complete type annotations on
36
+ all parameters and return values.
37
+
38
+ - id: changelog-update
39
+ label: "Add a CHANGELOG.md entry for this session"
40
+ prompt: >
41
+ Before committing, add an entry to CHANGELOG.md describing what was done.
42
+ Use Keep a Changelog format — add under ## [Unreleased] (create the file
43
+ and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
44
+ Be concise but specific. The entry text will serve as the commit message.
45
+
46
+ - id: readme-sync
47
+ label: "Update README.md if user-facing changes were made"
48
+ prompt: >
49
+ If you added, changed, or removed user-facing functionality — CLI commands,
50
+ configuration options, public APIs, or significant new features — update
51
+ README.md to reflect those changes.
52
+
53
+ - id: holdpoint-evolve
54
+ label: "Evolve checks when project structure changes"
55
+ when: structural
56
+ cmd: "npx holdpoint evolve"
57
+
58
+ - id: git-commit
59
+ label: "Commit all changes before finishing"
60
+ cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
@@ -0,0 +1,55 @@
1
+ version: 1
2
+
3
+ context:
4
+ guides: {}
5
+
6
+ conditions: []
7
+
8
+ checks:
9
+ - id: lint
10
+ label: "ESLint — no warnings"
11
+ cmd: "pnpm lint --max-warnings 0"
12
+
13
+ - id: typecheck
14
+ label: "TypeScript type check"
15
+ cmd: "pnpm typecheck"
16
+
17
+ - id: unit-tests
18
+ label: "Vitest unit tests"
19
+ cmd: "pnpm test --run"
20
+
21
+ - id: jsdoc
22
+ label: "JSDoc on changed public functions"
23
+ prompt: >
24
+ Ensure all changed public functions and exports have JSDoc comments
25
+ with description, @param, and @returns where applicable.
26
+
27
+ - id: test-coverage
28
+ label: "Meaningful test coverage for new logic"
29
+ prompt: >
30
+ Confirm that any new non-trivial logic introduced in this change
31
+ has corresponding unit tests in the __tests__ directory.
32
+
33
+ - id: changelog-update
34
+ label: "Add a CHANGELOG.md entry for this session"
35
+ prompt: >
36
+ Before committing, add an entry to CHANGELOG.md describing what was done.
37
+ Use Keep a Changelog format — add under ## [Unreleased] (create the file
38
+ and that section if absent). Group entries as Added, Changed, Fixed, or Removed.
39
+ Be concise but specific. The entry text will serve as the commit message.
40
+
41
+ - id: readme-sync
42
+ label: "Update README.md if user-facing changes were made"
43
+ prompt: >
44
+ If you added, changed, or removed user-facing functionality — CLI commands,
45
+ configuration options, public APIs, or significant new features — update
46
+ README.md to reflect those changes.
47
+
48
+ - id: holdpoint-evolve
49
+ label: "Evolve checks when project structure changes"
50
+ when: structural
51
+ cmd: "npx holdpoint evolve"
52
+
53
+ - id: git-commit
54
+ label: "Commit all changes before finishing"
55
+ cmd: 'git rev-parse --is-inside-work-tree 2>/dev/null || exit 0; [ -z "$(git status --porcelain)" ] && exit 0; git status --short; exit 1'
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@holdpoint/cli",
3
+ "version": "0.1.0-alpha.0",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "tag": "alpha"
7
+ },
8
+ "description": "Holdpoint CLI — enforce deterministic eval checkpoints on AI coding agents",
9
+ "homepage": "https://holdpoint.dev",
10
+ "bugs": {
11
+ "url": "https://github.com/holdpoint-dev/holdpoint/issues"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/holdpoint-dev/holdpoint.git",
16
+ "directory": "packages/cli"
17
+ },
18
+ "license": "MIT",
19
+ "keywords": [
20
+ "holdpoint",
21
+ "ai",
22
+ "agents",
23
+ "claude-code",
24
+ "github-copilot",
25
+ "cursor",
26
+ "eval",
27
+ "checkpoints",
28
+ "ci",
29
+ "yaml"
30
+ ],
31
+ "type": "module",
32
+ "bin": {
33
+ "holdpoint": "dist/index.js"
34
+ },
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "import": "./dist/index.js"
39
+ }
40
+ },
41
+ "main": "./dist/index.js",
42
+ "types": "./dist/index.d.ts",
43
+ "files": [
44
+ "dist",
45
+ "README.md",
46
+ "LICENSE"
47
+ ],
48
+ "scripts": {
49
+ "build": "tsup",
50
+ "typecheck": "tsc --noEmit",
51
+ "test": "vitest run --passWithNoTests",
52
+ "dev": "tsup --watch",
53
+ "clean": "rm -rf dist *.tsbuildinfo"
54
+ },
55
+ "dependencies": {
56
+ "@holdpoint/engine-claude": "workspace:*",
57
+ "@holdpoint/engine-copilot": "workspace:*",
58
+ "@holdpoint/engine-cursor": "workspace:*",
59
+ "@holdpoint/types": "workspace:*",
60
+ "@holdpoint/yaml-core": "workspace:*",
61
+ "chalk": "^5.3.0",
62
+ "commander": "^12.1.0",
63
+ "ora": "^8.1.1"
64
+ },
65
+ "devDependencies": {
66
+ "@holdpoint/builder": "workspace:*",
67
+ "@types/node": "^22.10.2",
68
+ "tsup": "^8.3.5",
69
+ "typescript": "^5.7.2",
70
+ "vitest": "^2.1.8"
71
+ }
72
+ }