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.
- package/.cabloy-version +1 -1
- package/.github/workflows/agent-governance.yml +39 -0
- package/.github/workflows/docs-pages.yml +1 -0
- package/.gitignore +3 -0
- package/CHANGELOG.md +14 -0
- package/package.json +11 -5
- package/repo-agent-governance/adapters/claude/contract-loop-gate.ts +27 -0
- package/repo-agent-governance/adapters/codex/contract-loop-gate.mjs +25 -0
- package/repo-agent-governance/adapters/codex/hooks.json +19 -0
- package/repo-agent-governance/adapters/cursor/contract-loop-gate.mjs +28 -0
- package/repo-agent-governance/adapters/cursor/hooks.json +19 -0
- package/{.claude → repo-agent-governance}/commands/release.md +20 -20
- package/repo-agent-governance/managed-assets.json +915 -0
- package/repo-agent-governance/manifest.json +80 -0
- package/{CLAUDE.md → repo-agent-governance/policies/repository.md} +4 -2
- package/repo-agent-governance/scripts/governance.mjs +669 -0
- package/repo-agent-governance/scripts/pack-check.mjs +48 -0
- package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/SKILL.md +9 -2
- package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/references/contract-loop-map.md +4 -4
- package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/references/verification-checklist.md +5 -3
- package/{.claude → repo-agent-governance}/skills/cabloy-master-detail/SKILL.md +1 -1
- package/{.claude → repo-agent-governance}/skills/cabloy-module-removal/SKILL.md +1 -1
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/SKILL.md +1 -1
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/references/execution-protocol.md +8 -8
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/references/status-and-evidence.md +9 -9
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/SKILL.md +2 -2
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/references/repo-aware-discovery.md +7 -7
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/references/repo-specs-document-set.md +30 -30
- package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/references/traceability-and-status-rules.md +9 -9
- package/{.claude → repo-agent-governance}/skills/cabloy-workflow/SKILL.md +7 -8
- package/{.claude → repo-agent-governance}/skills/cabloy-worktree-environment/SKILL.md +9 -9
- package/{.claude → repo-agent-governance}/skills/cabloy-zova-source-reading/SKILL.md +5 -5
- package/repo-agent-governance/tests/governance.test.mjs +569 -0
- package/repo-agent-governance/tools/contract-loop/check.mjs +71 -0
- package/repo-agent-governance/tools/contract-loop/core.mjs +205 -0
- package/repo-agent-governance/tools/contract-loop/hook-runtime.mjs +367 -0
- package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs +858 -0
- package/{.claude/skills/cabloy-spec-generation/scripts → repo-agent-governance/tools/spec-charts}/generate-implementation-charts.test.mjs +95 -20
- package/repo-docs/.vitepress/config.mjs +1 -0
- package/repo-docs/ai/agent-governance.md +82 -0
- package/repo-docs/ai/cli-to-skill-map.md +3 -3
- package/repo-docs/ai/docs-skills-rules-mapping.md +30 -26
- package/repo-docs/ai/edition-consistency-checklist.md +8 -6
- package/repo-docs/ai/future-skill-roadmap.md +2 -2
- package/repo-docs/ai/introduction.md +7 -6
- package/repo-docs/ai/repo-guidance.md +3 -2
- package/repo-docs/ai/rules-and-config.md +25 -15
- package/repo-docs/ai/skills.md +7 -7
- package/repo-docs/ai/verification.md +2 -1
- package/repo-docs/fullstack/contract-loop-playbook.md +1 -1
- package/repo-docs/fullstack/quickstart.md +1 -1
- package/repo-docs/reference/package-map.md +3 -2
- package/repo-docs/reference/repo-scripts.md +17 -2
- package/scripts/bootstrapAgentGovernance.mjs +81 -0
- package/scripts/init.ts +1 -0
- package/scripts/release.ts +15 -0
- package/scripts/upgrade.ts +66 -7
- package/zova/pnpm-lock.yaml +3 -3
- package/.claude/hooks/contract-loop-gate.ts +0 -421
- package/.claude/scheduled_tasks.lock +0 -1
- package/.claude/skills/cabloy-spec-generation/scripts/generate-implementation-charts.mjs +0 -385
- /package/{.claude → repo-agent-governance/adapters/claude}/settings.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/SKILL.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/references/backend-thread-map.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-domain-planning/SKILL.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/SKILL.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-frontend-scaffold/references/frontend-thread-map.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/SKILL.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/custom-renderer-demo-checklist.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/field-update-decision-tree.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/follow-up-checklist.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-resource-field-update/references/verification-checklist.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-spec-execution/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-spec-generation/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-workflow/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-workflow/references/cli-strategy.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-workflow/references/edition-detection.md +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-worktree-environment/evals/evals.json +0 -0
- /package/{.claude → repo-agent-governance}/skills/cabloy-zova-source-reading/references/analysis-modes.md +0 -0
- /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.
|
|
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
|
package/.gitignore
CHANGED
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.
|
|
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
|
|
61
|
-
"spec:charts": "node
|
|
62
|
-
"spec:charts:check": "node
|
|
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
|
|
28
|
-
|
|
29
|
-
| `pnpm release-patch`
|
|
30
|
-
| `pnpm release-minor`
|
|
31
|
-
| `pnpm release-major`
|
|
32
|
-
| `pnpm release`
|
|
33
|
-
| `pnpm release:dry-run`
|
|
34
|
-
| `pnpm release:changelog` | Only generate changelog (no version bump)
|
|
35
|
-
| `pnpm release:publish`
|
|
36
|
-
| `pnpm release:github`
|
|
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
|
|
43
|
-
|
|
44
|
-
| `--dry-run`
|
|
45
|
-
| `--changelog-only` | Only generate changelog (no version bump)
|
|
46
|
-
| `--publish-only`
|
|
47
|
-
| `--release-only`
|
|
48
|
-
| `--skip-changelog` | Skip changelog generation
|
|
49
|
-
| `--skip-publish`
|
|
50
|
-
| `--skip-release`
|
|
51
|
-
| `--no-ai`
|
|
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
|
|