cabloy 5.1.191 → 5.1.193

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.
Files changed (87) hide show
  1. package/.cabloy-version +1 -1
  2. package/.github/workflows/agent-governance.yml +39 -0
  3. package/.github/workflows/docs-pages.yml +1 -0
  4. package/.gitignore +3 -0
  5. package/CHANGELOG.md +14 -0
  6. package/package.json +11 -5
  7. package/repo-agent-governance/adapters/claude/contract-loop-gate.ts +27 -0
  8. package/repo-agent-governance/adapters/codex/contract-loop-gate.mjs +25 -0
  9. package/repo-agent-governance/adapters/codex/hooks.json +19 -0
  10. package/repo-agent-governance/adapters/cursor/contract-loop-gate.mjs +28 -0
  11. package/repo-agent-governance/adapters/cursor/hooks.json +19 -0
  12. package/{.claude → repo-agent-governance}/commands/release.md +20 -20
  13. package/repo-agent-governance/managed-assets.json +915 -0
  14. package/repo-agent-governance/manifest.json +80 -0
  15. package/{CLAUDE.md → repo-agent-governance/policies/repository.md} +4 -2
  16. package/repo-agent-governance/scripts/governance.mjs +669 -0
  17. package/repo-agent-governance/scripts/pack-check.mjs +48 -0
  18. package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/SKILL.md +9 -2
  19. package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/references/contract-loop-map.md +4 -4
  20. package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/references/verification-checklist.md +5 -3
  21. package/{.claude → repo-agent-governance}/skills/cabloy-master-detail/SKILL.md +1 -1
  22. package/{.claude → repo-agent-governance}/skills/cabloy-module-removal/SKILL.md +1 -1
  23. package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/SKILL.md +1 -1
  24. package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/references/execution-protocol.md +8 -8
  25. package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/references/status-and-evidence.md +9 -9
  26. package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/SKILL.md +2 -2
  27. package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/references/repo-aware-discovery.md +7 -7
  28. package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/references/repo-specs-document-set.md +30 -30
  29. package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/references/traceability-and-status-rules.md +9 -9
  30. package/{.claude → repo-agent-governance}/skills/cabloy-workflow/SKILL.md +7 -8
  31. package/{.claude → repo-agent-governance}/skills/cabloy-worktree-environment/SKILL.md +9 -9
  32. package/{.claude → repo-agent-governance}/skills/cabloy-zova-source-reading/SKILL.md +5 -5
  33. package/repo-agent-governance/tests/governance.test.mjs +569 -0
  34. package/repo-agent-governance/tools/contract-loop/check.mjs +71 -0
  35. package/repo-agent-governance/tools/contract-loop/core.mjs +205 -0
  36. package/repo-agent-governance/tools/contract-loop/hook-runtime.mjs +367 -0
  37. package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs +858 -0
  38. package/{.claude/skills/cabloy-spec-generation/scripts → repo-agent-governance/tools/spec-charts}/generate-implementation-charts.test.mjs +95 -20
  39. package/repo-docs/.vitepress/config.mjs +1 -0
  40. package/repo-docs/ai/agent-governance.md +82 -0
  41. package/repo-docs/ai/cli-to-skill-map.md +3 -3
  42. package/repo-docs/ai/docs-skills-rules-mapping.md +30 -26
  43. package/repo-docs/ai/edition-consistency-checklist.md +8 -6
  44. package/repo-docs/ai/future-skill-roadmap.md +2 -2
  45. package/repo-docs/ai/introduction.md +7 -6
  46. package/repo-docs/ai/repo-guidance.md +3 -2
  47. package/repo-docs/ai/rules-and-config.md +25 -15
  48. package/repo-docs/ai/skills.md +7 -7
  49. package/repo-docs/ai/verification.md +2 -1
  50. package/repo-docs/fullstack/contract-loop-playbook.md +1 -1
  51. package/repo-docs/fullstack/quickstart.md +1 -1
  52. package/repo-docs/reference/package-map.md +3 -2
  53. package/repo-docs/reference/repo-scripts.md +17 -2
  54. package/scripts/bootstrapAgentGovernance.mjs +81 -0
  55. package/scripts/init.ts +1 -0
  56. package/scripts/release.ts +15 -0
  57. package/scripts/upgrade.ts +66 -7
  58. package/zova/pnpm-lock.yaml +3 -3
  59. package/.claude/hooks/contract-loop-gate.ts +0 -421
  60. package/.claude/scheduled_tasks.lock +0 -1
  61. package/.claude/skills/cabloy-spec-generation/scripts/generate-implementation-charts.mjs +0 -385
  62. /package/{.claude → repo-agent-governance/adapters/claude}/settings.json +0 -0
  63. /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/SKILL.md +0 -0
  64. /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/evals/evals.json +0 -0
  65. /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/references/backend-thread-map.md +0 -0
  66. /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +0 -0
  67. /package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/evals/evals.json +0 -0
  68. /package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +0 -0
  69. /package/{.claude → repo-agent-governance}/skills/cabloy-domain-planning/SKILL.md +0 -0
  70. /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/SKILL.md +0 -0
  71. /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/evals/evals.json +0 -0
  72. /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +0 -0
  73. /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +0 -0
  74. /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/SKILL.md +0 -0
  75. /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/evals/evals.json +0 -0
  76. /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/custom-renderer-demo-checklist.md +0 -0
  77. /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/field-update-decision-tree.md +0 -0
  78. /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/follow-up-checklist.md +0 -0
  79. /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/verification-checklist.md +0 -0
  80. /package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/evals/evals.json +0 -0
  81. /package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/evals/evals.json +0 -0
  82. /package/{.claude → repo-agent-governance}/skills/cabloy-workflow/evals/evals.json +0 -0
  83. /package/{.claude → repo-agent-governance}/skills/cabloy-workflow/references/cli-strategy.md +0 -0
  84. /package/{.claude → repo-agent-governance}/skills/cabloy-workflow/references/edition-detection.md +0 -0
  85. /package/{.claude → repo-agent-governance}/skills/cabloy-worktree-environment/evals/evals.json +0 -0
  86. /package/{.claude → repo-agent-governance}/skills/cabloy-zova-source-reading/references/analysis-modes.md +0 -0
  87. /package/{.claude → repo-agent-governance}/skills/cabloy-zova-source-reading/references/core-reading-paths.md +0 -0
package/.cabloy-version CHANGED
@@ -1 +1 @@
1
- 5.1.191
1
+ 5.1.193
@@ -0,0 +1,39 @@
1
+ name: agent-governance
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ workflow_dispatch:
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ verify:
15
+ runs-on: ubuntu-latest
16
+ env:
17
+ PNPM_CONFIG_MINIMUM_RELEASE_AGE: 0
18
+ steps:
19
+ - uses: actions/checkout@v6
20
+ - uses: pnpm/action-setup@v5
21
+ with:
22
+ version: 11.5.2
23
+ - uses: actions/setup-node@v6
24
+ with:
25
+ node-version: 24
26
+ cache: pnpm
27
+ - name: install root dependencies
28
+ run: pnpm install --frozen-lockfile
29
+ - name: install docs dependencies
30
+ run: pnpm --dir repo-docs install --frozen-lockfile
31
+ - name: verify agent-governance assets
32
+ run: |
33
+ npm run test:agent-governance
34
+ npm run agent:governance:check
35
+ npm run agent:governance:pack-check
36
+ npm run test:spec-charts
37
+ npm run spec:charts:check -- a-commerce
38
+ - name: build documentation
39
+ run: npm run docs:build
@@ -5,6 +5,7 @@ on:
5
5
  - main
6
6
  paths:
7
7
  - 'repo-docs/**'
8
+ - 'repo-agent-governance/**'
8
9
  - 'repo-e2e/docs/**'
9
10
  - 'package.json'
10
11
  - 'pnpm-lock.yaml'
package/.gitignore CHANGED
@@ -78,3 +78,6 @@ vona/docker-compose.yml
78
78
  !/zova/packages-utils/quasar-app-extension-zova/dist
79
79
 
80
80
  **/assets/site
81
+
82
+ **/.claude/scheduled_tasks.lock
83
+ .cabloy-agent-governance-state.json
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.1.193
4
+
5
+ ### Features
6
+
7
+ - Add support for Cursor and Codex agents.
8
+ - Update agent capabilities and integrations.
9
+
10
+ ## 5.1.192
11
+
12
+ ### Features
13
+
14
+ - Update core functionality.
15
+ - Add agents for Claude Code, Codex, and Cursor.
16
+
3
17
  ## 5.1.191
4
18
 
5
19
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.191",
3
+ "version": "5.1.193",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -57,9 +57,9 @@
57
57
  "format:fix": "oxfmt --write",
58
58
  "lint": "oxlint --disable-nested-config",
59
59
  "lint:fix": "oxlint --disable-nested-config --fix",
60
- "test:spec-charts": "node --test .claude/skills/cabloy-spec-generation/scripts/generate-implementation-charts.test.mjs",
61
- "spec:charts": "node ./.claude/skills/cabloy-spec-generation/scripts/generate-implementation-charts.mjs",
62
- "spec:charts:check": "node ./.claude/skills/cabloy-spec-generation/scripts/generate-implementation-charts.mjs --check",
60
+ "test:spec-charts": "node --test repo-agent-governance/tools/spec-charts/generate-implementation-charts.test.mjs",
61
+ "spec:charts": "node ./repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs",
62
+ "spec:charts:check": "node ./repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs --check",
63
63
  "docs:dev": "pnpm --dir repo-docs docs:dev",
64
64
  "docs:build": "pnpm --dir repo-docs docs:build",
65
65
  "docs:preview": "pnpm --dir repo-docs docs:preview",
@@ -72,7 +72,13 @@
72
72
  "release:changelog": "node scripts/release.ts --changelog-only",
73
73
  "release:publish": "node scripts/release.ts --publish-only",
74
74
  "release:github": "node scripts/release.ts --release-only",
75
- "prepare": "husky"
75
+ "prepare": "husky",
76
+ "agent:governance:render": "node repo-agent-governance/scripts/governance.mjs render",
77
+ "agent:governance:check": "node repo-agent-governance/scripts/governance.mjs check",
78
+ "agent:governance:adopt": "node repo-agent-governance/scripts/governance.mjs adopt",
79
+ "test:agent-governance": "node --test repo-agent-governance/tests/*.test.mjs",
80
+ "contract:gate": "node repo-agent-governance/tools/contract-loop/check.mjs",
81
+ "agent:governance:pack-check": "node repo-agent-governance/scripts/pack-check.mjs"
76
82
  },
77
83
  "devDependencies": {
78
84
  "@cabloy/dotenv": "^1.2.8",
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ import {
6
+ evaluateEditedFile,
7
+ extractClaudeEditedFilePath,
8
+ formatClaudeHookOutput,
9
+ readHookPayload,
10
+ } from '../../repo-agent-governance/tools/contract-loop/hook-runtime.mjs';
11
+
12
+ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '../..');
13
+
14
+ function runClaudeHook(): number {
15
+ // Cursor can import this Claude-compatible bridge alongside its native hook. Its native
16
+ // Cursor adapter owns that event, so avoid duplicate context and reverse auto-sync work.
17
+ if (process.env.CURSOR_PROJECT_DIR) return 0;
18
+ const payload = readHookPayload();
19
+ if (!payload) return 0;
20
+ const evaluated = evaluateEditedFile(ROOT, extractClaudeEditedFilePath(payload));
21
+ if (!evaluated) return 0;
22
+ // eslint-disable-next-line
23
+ console.log(JSON.stringify(formatClaudeHookOutput(evaluated.message)));
24
+ return 0;
25
+ }
26
+
27
+ process.exit(runClaudeHook());
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ import {
6
+ evaluateCodexEditedFiles,
7
+ extractCodexEditedFiles,
8
+ formatCodexHookOutput,
9
+ readHookPayload,
10
+ } from '../../repo-agent-governance/tools/contract-loop/hook-runtime.mjs';
11
+
12
+ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '../..');
13
+
14
+ function runCodexHook() {
15
+ const payload = readHookPayload();
16
+ if (!payload) return 0;
17
+ const evaluated = evaluateCodexEditedFiles(ROOT, extractCodexEditedFiles(payload), payload.cwd);
18
+ if (!evaluated.length) return 0;
19
+ const message = evaluated.map(item => item.message).join('\n\n');
20
+ // eslint-disable-next-line
21
+ console.log(JSON.stringify(formatCodexHookOutput(message)));
22
+ return 0;
23
+ }
24
+
25
+ process.exit(runCodexHook());
@@ -0,0 +1,19 @@
1
+ {
2
+ "description": "Cabloy repository lifecycle hooks generated from repo-agent-governance.",
3
+ "hooks": {
4
+ "PostToolUse": [
5
+ {
6
+ "matcher": "apply_patch|Edit|Write",
7
+ "hooks": [
8
+ {
9
+ "type": "command",
10
+ "command": "node -e \"const fs=require('node:fs'),path=require('node:path'),{pathToFileURL}=require('node:url');let d=process.cwd();for(;;){const h=path.join(d,'.codex','hooks','contract-loop-gate.mjs');if(fs.existsSync(h)){import(pathToFileURL(h).href);break}const p=path.dirname(d);if(p===d)break;d=p}\"",
11
+ "commandWindows": "node -e \"const fs=require('node:fs'),path=require('node:path'),{pathToFileURL}=require('node:url');let d=process.cwd();for(;;){const h=path.join(d,'.codex','hooks','contract-loop-gate.mjs');if(fs.existsSync(h)){import(pathToFileURL(h).href);break}const p=path.dirname(d);if(p===d)break;d=p}\"",
12
+ "timeout": 600,
13
+ "statusMessage": "Checking contract-loop gate"
14
+ }
15
+ ]
16
+ }
17
+ ]
18
+ }
19
+ }
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import { dirname, resolve } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+
5
+ import {
6
+ evaluateEditedFile,
7
+ extractCursorEditedFilePath,
8
+ formatCursorHookOutput,
9
+ inferCursorHookEvent,
10
+ readHookPayload,
11
+ } from '../../repo-agent-governance/tools/contract-loop/hook-runtime.mjs';
12
+
13
+ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '../..');
14
+
15
+ function runCursorHook() {
16
+ const payload = readHookPayload();
17
+ if (!payload) return 0;
18
+ const evaluated = evaluateEditedFile(ROOT, extractCursorEditedFilePath(payload));
19
+ if (!evaluated) return 0;
20
+ const output = formatCursorHookOutput(evaluated.message, inferCursorHookEvent(payload));
21
+ if (output) {
22
+ // eslint-disable-next-line
23
+ console.log(JSON.stringify(output));
24
+ }
25
+ return 0;
26
+ }
27
+
28
+ process.exit(runCursorHook());
@@ -0,0 +1,19 @@
1
+ {
2
+ "version": 1,
3
+ "hooks": {
4
+ "postToolUse": [
5
+ {
6
+ "command": "node .cursor/hooks/contract-loop-gate.mjs",
7
+ "matcher": "Write",
8
+ "timeout": 600
9
+ }
10
+ ],
11
+ "afterTabFileEdit": [
12
+ {
13
+ "command": "node .cursor/hooks/contract-loop-gate.mjs",
14
+ "matcher": "TabWrite",
15
+ "timeout": 600
16
+ }
17
+ ]
18
+ }
19
+ }
@@ -24,31 +24,31 @@ The release script at `scripts/release.ts` performs 4 steps for the public `cabl
24
24
 
25
25
  Only after the Basic preflight above succeeds, use the matching script that exists in the active root `package.json`:
26
26
 
27
- | Command | Description |
28
- |---------|-------------|
29
- | `pnpm release-patch` | Full release with patch version bump |
30
- | `pnpm release-minor` | Full release with minor version bump |
31
- | `pnpm release-major` | Full release with major version bump |
32
- | `pnpm release` | Full release with default patch bump |
33
- | `pnpm release:dry-run` | Preview what would happen without executing |
34
- | `pnpm release:changelog` | Only generate changelog (no version bump) |
35
- | `pnpm release:publish` | Only publish to npm |
36
- | `pnpm release:github` | Only create GitHub release |
27
+ | Command | Description |
28
+ | ------------------------ | ------------------------------------------- |
29
+ | `pnpm release-patch` | Full release with patch version bump |
30
+ | `pnpm release-minor` | Full release with minor version bump |
31
+ | `pnpm release-major` | Full release with major version bump |
32
+ | `pnpm release` | Full release with default patch bump |
33
+ | `pnpm release:dry-run` | Preview what would happen without executing |
34
+ | `pnpm release:changelog` | Only generate changelog (no version bump) |
35
+ | `pnpm release:publish` | Only publish to npm |
36
+ | `pnpm release:github` | Only create GitHub release |
37
37
 
38
38
  Do not infer equivalent commands in Cabloy Start when this table is absent from its package scripts.
39
39
 
40
40
  ## CLI Options
41
41
 
42
- | Option | Description |
43
- |--------|-------------|
44
- | `--dry-run` | Show what would happen without executing |
45
- | `--changelog-only` | Only generate changelog (no version bump) |
46
- | `--publish-only` | Only publish to npm |
47
- | `--release-only` | Only create GitHub release |
48
- | `--skip-changelog` | Skip changelog generation |
49
- | `--skip-publish` | Skip npm publish |
50
- | `--skip-release` | Skip GitHub release |
51
- | `--no-ai` | Use raw commit list instead of AI for changelog |
42
+ | Option | Description |
43
+ | ------------------ | ----------------------------------------------- |
44
+ | `--dry-run` | Show what would happen without executing |
45
+ | `--changelog-only` | Only generate changelog (no version bump) |
46
+ | `--publish-only` | Only publish to npm |
47
+ | `--release-only` | Only create GitHub release |
48
+ | `--skip-changelog` | Skip changelog generation |
49
+ | `--skip-publish` | Skip npm publish |
50
+ | `--skip-release` | Skip GitHub release |
51
+ | `--no-ai` | Use raw commit list instead of AI for changelog |
52
52
 
53
53
  ## Execution
54
54