@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.
- package/dist/builder-ui/assets/index-BxfWKnb5.js +437 -0
- package/dist/builder-ui/assets/index-BxfWKnb5.js.map +1 -0
- package/dist/builder-ui/assets/index-DkLHZ-in.css +1 -0
- package/dist/builder-ui/favicon.svg +10 -0
- package/dist/builder-ui/index.html +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +995 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/MASTER_PROMPT.md +309 -0
- package/dist/templates/_base.yaml +52 -0
- package/dist/templates/fullstack.yaml +93 -0
- package/dist/templates/go.yaml +60 -0
- package/dist/templates/nextjs.yaml +76 -0
- package/dist/templates/python.yaml +60 -0
- package/dist/templates/typescript.yaml +55 -0
- package/package.json +72 -0
|
@@ -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
|
+
}
|