cabloy 5.1.193 → 5.1.195
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 +1 -0
- package/CHANGELOG.md +30 -0
- package/README.md +13 -24
- package/package.json +2 -1
- package/repo-agent-governance/adapters/codex/contract-loop-gate.mjs +1 -1
- package/repo-agent-governance/adapters/cursor/contract-loop-gate.mjs +1 -1
- package/repo-agent-governance/managed-assets.json +140 -35
- package/repo-agent-governance/scripts/pack-check.mjs +17 -0
- package/repo-agent-governance/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -0
- package/repo-agent-governance/skills/cabloy-domain-planning/SKILL.md +5 -3
- package/repo-agent-governance/skills/cabloy-spec-execution/SKILL.md +13 -8
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/evals.json +108 -12
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/files/scenarios.json +84 -0
- package/repo-agent-governance/skills/cabloy-spec-execution/evals/protocol.md +9 -0
- package/repo-agent-governance/skills/cabloy-spec-execution/references/execution-protocol.md +21 -5
- package/repo-agent-governance/skills/cabloy-spec-execution/references/status-and-evidence.md +5 -3
- package/repo-agent-governance/skills/cabloy-spec-generation/SKILL.md +78 -168
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/evals.json +165 -17
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/files/scenarios.json +114 -0
- package/repo-agent-governance/skills/cabloy-spec-generation/evals/protocol.md +44 -0
- package/repo-agent-governance/skills/cabloy-spec-generation/references/canonical-spec-input.md +145 -0
- package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-aware-discovery.md +55 -57
- package/repo-agent-governance/skills/cabloy-spec-generation/references/repo-specs-document-set.md +6 -4
- package/repo-agent-governance/skills/cabloy-spec-generation/references/traceability-and-status-rules.md +12 -8
- package/repo-agent-governance/tests/governance.test.mjs +42 -1
- package/repo-agent-governance/tests/spec-audit.test.mjs +255 -0
- package/repo-agent-governance/tools/contract-loop/hook-runtime.mjs +4 -3
- package/repo-agent-governance/tools/spec-audit/audit.mjs +427 -0
- package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs +97 -408
- package/repo-agent-governance/tools/spec-charts/generate-implementation-charts.test.mjs +462 -1
- package/repo-agent-governance/tools/spec-charts/spec-parser.mjs +561 -0
- package/repo-docs/.vitepress/config.mjs +54 -29
- package/repo-docs/ai/playbook-spec-execution.md +10 -4
- package/repo-docs/ai/playbook-spec-generation.md +40 -3
- package/repo-docs/ai/skills.md +3 -3
- package/repo-docs/backend/controller-aop-guide.md +10 -0
- package/repo-docs/backend/field-indexes.md +25 -0
- package/repo-docs/backend/menu-authorization.md +1 -0
- package/repo-docs/backend/menu-guide.md +18 -7
- package/repo-docs/blogs/cabloy-fullstack-resource-addressing/index.md +2 -1
- package/repo-docs/fullstack/contract-loop-playbook.md +1 -1
- package/repo-docs/fullstack/development-history.md +24 -0
- package/repo-docs/fullstack/introduction.md +25 -156
- package/repo-docs/fullstack/quickstart.md +1 -1
- package/repo-docs/fullstack/ssr-entry-modes.md +52 -0
- package/repo-docs/fullstack/ssr-site-and-flavor-setup.md +3 -1
- package/repo-docs/fullstack/tutorial-5-backend-contract-sharing.md +13 -7
- package/repo-docs/fullstack/tutorial-6-one-contract-four-uses.md +11 -15
- package/repo-docs/fullstack/tutorials-overview.md +2 -2
- package/repo-docs/index.md +23 -45
- package/repo-docs/public/cabloy.png +0 -0
- package/repo-docs/public/cabloy.svg +3 -0
- package/repo-docs/public/favicon.svg +3 -0
- package/repo-docs/reference/repo-scripts.md +6 -1
- package/repo-e2e/config/playwright.config.ts +1 -1
- package/repo-e2e/scripts/startE2eVona.ts +6 -2
- package/repo-e2e/specs/controller-boundary.spec.ts +76 -28
- package/scripts/bootstrapAgentGovernance.mjs +1 -0
- package/scripts/upgrade.ts +1 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/cli/templates/tools/crudBasic/snippets/2-meta.index.ts +4 -10
- package/vona/packages-cli/cli-set-api/cli/templates/tools/crudStart/snippets/2-meta.index.ts +4 -10
- package/vona/packages-cli/cli-set-api/package.json +8 -2
- package/vona/packages-cli/cli-set-api/src/index.ts +1 -0
- package/vona/packages-cli/cli-set-api/src/lib/bean/cli.tools.masterDetail.ts +9 -12
- package/vona/packages-cli/cli-set-api/src/lib/mergeMetaIndex.ts +121 -0
- package/vona/packages-cli/cli-set-api/test/indexSnippets.test.ts +41 -0
- package/vona/packages-cli/cli-set-api/test/mergeMetaIndex.test.ts +78 -0
- package/vona/packages-vona/vona/package.json +1 -1
- package/vona/pnpm-lock.yaml +5 -5
- package/vona/src/suite/a-commerce/modules/commerce-catalog/src/service/sku.ts +25 -4
- package/vona/src/suite/a-commerce/modules/commerce-catalog/test/skuUniqueness.test.ts +161 -0
- package/vona/src/suite/a-commerce/modules/commerce-payment/src/bean/meta.index.ts +21 -20
- package/vona/src/suite/a-commerce/modules/commerce-payment/test/paymentIndexes.test.ts +165 -0
- package/vona/src/suite/a-commerce/modules/commerce-promotion/src/bean/meta.index.ts +16 -13
- package/vona/src/suite/a-commerce/modules/commerce-promotion/test/promotionIndexes.test.ts +82 -0
- package/vona/src/suite/a-commerce/modules/commerce-trade/src/bean/meta.index.ts +23 -21
- package/vona/src/suite/a-commerce/modules/commerce-trade/test/tradeIndexes.test.ts +86 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/lib/beanSsrSiteBase.ts +2 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/lib/ssrMenu.ts +9 -3
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/lib/ssrMenuEligibility.ts +14 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/lib/ssrMenuGroup.ts +9 -3
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/lib/ssrMenuSite.ts +10 -0
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/types/ssrMenu.ts +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/src/types/ssrMenuGroup.ts +1 -1
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/test/ssrMenuEligibility.test.ts +73 -13
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/test/ssrMenuSite.test.ts +90 -0
- package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-pay/modules/a-pay/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/a-pay/src/bean/meta.index.ts +35 -26
- package/vona/src/suite-vendor/a-pay/modules/pay-mock/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-paypal/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/modules/pay-stripe/package.json +1 -1
- package/vona/src/suite-vendor/a-pay/package.json +5 -5
- package/vona/src/suite-vendor/a-vona/modules/a-error/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-error/src/lib/onerror.ts +9 -0
- package/vona/src/suite-vendor/a-vona/modules/a-error/test/onerror.test.ts +92 -0
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transactionFiber_.ts +6 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/service/transaction_.ts +4 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-ormutils/src/lib/columns.ts +3 -1
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- /package/repo-docs/{.vitepress/public → public}/CNAME +0 -0
package/.cabloy-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
5.1.
|
|
1
|
+
5.1.195
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.1.195
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
- Update application features.
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- Fix metadata index merging and preserve indexes on the same table in metadata and generators.
|
|
12
|
+
|
|
13
|
+
### Improvements
|
|
14
|
+
|
|
15
|
+
- Enhance transaction handling and specification skills.
|
|
16
|
+
- Refine the commerce specification and clarify the tutorial’s OpenAPI workflow and contract model.
|
|
17
|
+
- Update the controller AOP guide, SSR comparison, development history, introduction, README, and site icon.
|
|
18
|
+
|
|
19
|
+
## 5.1.194
|
|
20
|
+
|
|
21
|
+
### Bug Fixes
|
|
22
|
+
|
|
23
|
+
- Resolve lint errors in governance contract-loop hooks.
|
|
24
|
+
|
|
25
|
+
### Improvements
|
|
26
|
+
|
|
27
|
+
- Update controller-boundary tests.
|
|
28
|
+
|
|
29
|
+
### Breaking Changes
|
|
30
|
+
|
|
31
|
+
- Require explicit menu site bindings for SSR.
|
|
32
|
+
|
|
3
33
|
## 5.1.193
|
|
4
34
|
|
|
5
35
|
### Features
|
package/README.md
CHANGED
|
@@ -6,32 +6,31 @@
|
|
|
6
6
|
[](https://cabloy.com)
|
|
7
7
|
[](https://cabloy.com/demo)
|
|
8
8
|
|
|
9
|
-
Cabloy is a Node.js fullstack framework for AI vibe coding, with AI Spec-Driven Development
|
|
9
|
+
Cabloy is a Node.js fullstack framework for AI vibe coding, with AI Spec-Driven Development guiding work from confirmed specs to verifiable delivery.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. [AI Spec-Driven Development](https://cabloy.com/ai/ai-spec-driven-development) provides the disciplined path from confirmed Specs to evidence-backed delivery; its precise engineering method is Traceable Spec Delivery. Vona is its backend framework and runtime layer, and Zova is its frontend framework and application layer. Cabloy Basic and Cabloy Start are related, complete edition baselines built on that shared architecture; see [Editions Overview](https://cabloy.com/editions/overview) for their deliberate differences.
|
|
11
|
+
Cabloy Basic and Cabloy Start are complete editions built on this shared architecture; see [Editions Overview](https://cabloy.com/editions/overview) for their differences.
|
|
14
12
|
|
|
15
13
|
[Documentation](https://cabloy.com) · [npm](https://www.npmjs.com/package/cabloy) · [Demo](https://cabloy.com/demo) · [GitHub](https://github.com/cabloy/cabloy)
|
|
16
14
|
|
|
17
15
|
## Fullstack Principles
|
|
18
16
|
|
|
19
|
-
Cabloy
|
|
17
|
+
Cabloy connects Vona and Zova in two ways:
|
|
20
18
|
|
|
21
|
-
1. **
|
|
22
|
-
- Zova owns the frontend application source
|
|
23
|
-
- the generated frontend bundle and SSR-related artifacts are consumed by the Vona-side SSR flow
|
|
24
|
-
- backend rendering and frontend hydration stay on one coordinated delivery path
|
|
19
|
+
1. **Integrated SSR.** Zova builds the frontend and SSR artifacts. In Vona integrated SSR, Vona consumes those artifacts to render the page, and Zova hydrates it in the browser.
|
|
25
20
|
|
|
26
|
-
2. **
|
|
27
|
-
- **Backend -> Frontend**: Vona emits Swagger/OpenAPI contracts that Zova can use to generate SDKs and related schema-aware helpers
|
|
28
|
-
- **Frontend -> Backend**: Zova generates structural metadata and typing surfaces such as routes, components, and icons that can improve backend-side tooling and type hints
|
|
21
|
+
2. **Bidirectional contract flow.** Vona's OpenAPI contracts generate Zova SDKs and schema-aware helpers. Zova's generated metadata and types for routes, components, and icons feed back into Vona's tooling and type hints.
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
Learn more about [Vona + Zova Integration](https://cabloy.com/fullstack/vona-zova-integration) and the [Contract Loop](https://cabloy.com/fullstack/contract-loop-playbook).
|
|
31
24
|
|
|
32
25
|
## Get Started
|
|
33
26
|
|
|
34
|
-
|
|
27
|
+
Create a new Cabloy Basic project:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm create cabloy
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
For Cabloy Start, clone the [Cabloy Start repository](https://github.com/cabloy/cabloy-start) and run `npm run init` from its root. See the [Fullstack Quickstart](https://cabloy.com/fullstack/quickstart) for prerequisites and development commands.
|
|
35
34
|
|
|
36
35
|
## AI Spec-Driven Development
|
|
37
36
|
|
|
@@ -78,16 +77,6 @@ Included demonstration suites give AI vibe coding agents high-quality, project-n
|
|
|
78
77
|
|
|
79
78
|
> “Not included” means that the suite is not part of the default edition baseline. It does not limit what can be built with Cabloy.
|
|
80
79
|
|
|
81
|
-
## Highlights
|
|
82
|
-
|
|
83
|
-
- **One fullstack system** — build backend and frontend together instead of assembling separate stacks
|
|
84
|
-
- **Bidirectional type sync** — use the contract loop to keep backend contracts and frontend metadata aligned in both directions
|
|
85
|
-
- **CLI-first workflows** — use explicit commands for scaffolding, generation, refactors, and verification
|
|
86
|
-
- **Docs and skills** — give people and AI agents reusable, source-grounded guidance for the current repository
|
|
87
|
-
- **AI Spec-Driven Development** — use Traceable Spec Delivery to connect product intent, contracts, bounded work, acceptance procedures, and verifiable evidence
|
|
88
|
-
- **Vona + Zova** — use aligned backend and frontend layers for code sharing and cross-stack consistency
|
|
89
|
-
- **Modular delivery** — organize capabilities as suites and modules, then deliver SSR, SPA, Web, and Admin applications with shared conventions
|
|
90
|
-
|
|
91
80
|
## Technology Stack
|
|
92
81
|
|
|
93
82
|
### General
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cabloy",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.195",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "A Node.js fullstack framework",
|
|
6
6
|
"keywords": [
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"test:spec-charts": "node --test repo-agent-governance/tools/spec-charts/generate-implementation-charts.test.mjs",
|
|
61
61
|
"spec:charts": "node ./repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs",
|
|
62
62
|
"spec:charts:check": "node ./repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs --check",
|
|
63
|
+
"spec:check": "node ./repo-agent-governance/tools/spec-audit/audit.mjs",
|
|
63
64
|
"docs:dev": "pnpm --dir repo-docs docs:dev",
|
|
64
65
|
"docs:build": "pnpm --dir repo-docs docs:build",
|
|
65
66
|
"docs:preview": "pnpm --dir repo-docs docs:preview",
|
|
@@ -17,7 +17,7 @@ function runCodexHook() {
|
|
|
17
17
|
const evaluated = evaluateCodexEditedFiles(ROOT, extractCodexEditedFiles(payload), payload.cwd);
|
|
18
18
|
if (!evaluated.length) return 0;
|
|
19
19
|
const message = evaluated.map(item => item.message).join('\n\n');
|
|
20
|
-
// eslint-disable-next-line
|
|
20
|
+
// eslint-disable-next-line no-console
|
|
21
21
|
console.log(JSON.stringify(formatCodexHookOutput(message)));
|
|
22
22
|
return 0;
|
|
23
23
|
}
|
|
@@ -19,7 +19,7 @@ function runCursorHook() {
|
|
|
19
19
|
if (!evaluated) return 0;
|
|
20
20
|
const output = formatCursorHookOutput(evaluated.message, inferCursorHookEvent(payload));
|
|
21
21
|
if (output) {
|
|
22
|
-
// eslint-disable-next-line
|
|
22
|
+
// eslint-disable-next-line no-console
|
|
23
23
|
console.log(JSON.stringify(output));
|
|
24
24
|
}
|
|
25
25
|
return 0;
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
{
|
|
19
19
|
"adapter": "codex",
|
|
20
20
|
"category": "skill",
|
|
21
|
-
"sha256": "
|
|
21
|
+
"sha256": "88e6ca8c60d8caeb68ab932f2a7e22810a31911400b4428fd0756d076dbc78e8",
|
|
22
22
|
"source": "skills/cabloy-backend-scaffold/references/follow-up-checklist.md",
|
|
23
23
|
"target": ".agents/skills/cabloy-backend-scaffold/references/follow-up-checklist.md"
|
|
24
24
|
},
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
{
|
|
68
68
|
"adapter": "codex",
|
|
69
69
|
"category": "skill",
|
|
70
|
-
"sha256": "
|
|
70
|
+
"sha256": "aceca7a587634f574301cafad267b9a2d620db1c5a5c1dd8cec9483870fc0400",
|
|
71
71
|
"source": "skills/cabloy-domain-planning/SKILL.md",
|
|
72
72
|
"target": ".agents/skills/cabloy-domain-planning/SKILL.md"
|
|
73
73
|
},
|
|
@@ -158,63 +158,98 @@
|
|
|
158
158
|
{
|
|
159
159
|
"adapter": "codex",
|
|
160
160
|
"category": "skill",
|
|
161
|
-
"sha256": "
|
|
161
|
+
"sha256": "1d5a93d8285e85778e281c1a82d141f44d6f74112a295fc1d8ad977e2af2b3c3",
|
|
162
162
|
"source": "skills/cabloy-spec-execution/evals/evals.json",
|
|
163
163
|
"target": ".agents/skills/cabloy-spec-execution/evals/evals.json"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
"adapter": "codex",
|
|
167
167
|
"category": "skill",
|
|
168
|
-
"sha256": "
|
|
168
|
+
"sha256": "187c45fea775846326bcdea17b20a465850e563cd98a9c189725ca5aac5fdee5",
|
|
169
|
+
"source": "skills/cabloy-spec-execution/evals/files/scenarios.json",
|
|
170
|
+
"target": ".agents/skills/cabloy-spec-execution/evals/files/scenarios.json"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"adapter": "codex",
|
|
174
|
+
"category": "skill",
|
|
175
|
+
"sha256": "4272ada10c6802a70c3fd926aab858724a65e975a716775ac716d6f0ba85c25a",
|
|
176
|
+
"source": "skills/cabloy-spec-execution/evals/protocol.md",
|
|
177
|
+
"target": ".agents/skills/cabloy-spec-execution/evals/protocol.md"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"adapter": "codex",
|
|
181
|
+
"category": "skill",
|
|
182
|
+
"sha256": "788f9c94a93753f2ad16d0a1f772fe61785514ab69e2564a2a2454f4efb46086",
|
|
169
183
|
"source": "skills/cabloy-spec-execution/references/execution-protocol.md",
|
|
170
184
|
"target": ".agents/skills/cabloy-spec-execution/references/execution-protocol.md"
|
|
171
185
|
},
|
|
172
186
|
{
|
|
173
187
|
"adapter": "codex",
|
|
174
188
|
"category": "skill",
|
|
175
|
-
"sha256": "
|
|
189
|
+
"sha256": "ec93b6999fcf87f35f8f1f18eed54bb08ee2753862b34f6c474480f2c88ee7e0",
|
|
176
190
|
"source": "skills/cabloy-spec-execution/references/status-and-evidence.md",
|
|
177
191
|
"target": ".agents/skills/cabloy-spec-execution/references/status-and-evidence.md"
|
|
178
192
|
},
|
|
179
193
|
{
|
|
180
194
|
"adapter": "codex",
|
|
181
195
|
"category": "skill",
|
|
182
|
-
"sha256": "
|
|
196
|
+
"sha256": "52a1a0ae16f72345a761d657130fd65b681535c20937a86d1d6f279772c9bb31",
|
|
183
197
|
"source": "skills/cabloy-spec-execution/SKILL.md",
|
|
184
198
|
"target": ".agents/skills/cabloy-spec-execution/SKILL.md"
|
|
185
199
|
},
|
|
186
200
|
{
|
|
187
201
|
"adapter": "codex",
|
|
188
202
|
"category": "skill",
|
|
189
|
-
"sha256": "
|
|
203
|
+
"sha256": "4ef681f7bb98e605514e770bfa129d171f915e8562025d6195de0f8dfecaa80a",
|
|
190
204
|
"source": "skills/cabloy-spec-generation/evals/evals.json",
|
|
191
205
|
"target": ".agents/skills/cabloy-spec-generation/evals/evals.json"
|
|
192
206
|
},
|
|
193
207
|
{
|
|
194
208
|
"adapter": "codex",
|
|
195
209
|
"category": "skill",
|
|
196
|
-
"sha256": "
|
|
210
|
+
"sha256": "c5a1923be3cf387d3d31535af816e8ecadd52762ebb847a1be0d7cd1fe7c3d61",
|
|
211
|
+
"source": "skills/cabloy-spec-generation/evals/files/scenarios.json",
|
|
212
|
+
"target": ".agents/skills/cabloy-spec-generation/evals/files/scenarios.json"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"adapter": "codex",
|
|
216
|
+
"category": "skill",
|
|
217
|
+
"sha256": "4fa0405277092948d79cbde3d5b9b0f2e258dac58bf7e462dffea56da5fdd45f",
|
|
218
|
+
"source": "skills/cabloy-spec-generation/evals/protocol.md",
|
|
219
|
+
"target": ".agents/skills/cabloy-spec-generation/evals/protocol.md"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"adapter": "codex",
|
|
223
|
+
"category": "skill",
|
|
224
|
+
"sha256": "85b5a174c20111d31e50071a826f555c1e9b810e52078305af2850f3593f3603",
|
|
225
|
+
"source": "skills/cabloy-spec-generation/references/canonical-spec-input.md",
|
|
226
|
+
"target": ".agents/skills/cabloy-spec-generation/references/canonical-spec-input.md"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"adapter": "codex",
|
|
230
|
+
"category": "skill",
|
|
231
|
+
"sha256": "0c482b23c42c893dae4a027a786117ff2ad4b5686e3fc29de0a117d7e4958a49",
|
|
197
232
|
"source": "skills/cabloy-spec-generation/references/repo-aware-discovery.md",
|
|
198
233
|
"target": ".agents/skills/cabloy-spec-generation/references/repo-aware-discovery.md"
|
|
199
234
|
},
|
|
200
235
|
{
|
|
201
236
|
"adapter": "codex",
|
|
202
237
|
"category": "skill",
|
|
203
|
-
"sha256": "
|
|
238
|
+
"sha256": "772e83aea0d7a3ad3d5a91d4ecedd09f6cd24ae9eb146399f0834ded3f074185",
|
|
204
239
|
"source": "skills/cabloy-spec-generation/references/repo-specs-document-set.md",
|
|
205
240
|
"target": ".agents/skills/cabloy-spec-generation/references/repo-specs-document-set.md"
|
|
206
241
|
},
|
|
207
242
|
{
|
|
208
243
|
"adapter": "codex",
|
|
209
244
|
"category": "skill",
|
|
210
|
-
"sha256": "
|
|
245
|
+
"sha256": "242d3b7dd6f9266fa836918443c06add6bf9d2308d7f4288112412ee3a6224f5",
|
|
211
246
|
"source": "skills/cabloy-spec-generation/references/traceability-and-status-rules.md",
|
|
212
247
|
"target": ".agents/skills/cabloy-spec-generation/references/traceability-and-status-rules.md"
|
|
213
248
|
},
|
|
214
249
|
{
|
|
215
250
|
"adapter": "codex",
|
|
216
251
|
"category": "skill",
|
|
217
|
-
"sha256": "
|
|
252
|
+
"sha256": "7b66c1f77130d14e44bea6f6f09e0de53fe4ae251ad888e78195dab48246301d",
|
|
218
253
|
"source": "skills/cabloy-spec-generation/SKILL.md",
|
|
219
254
|
"target": ".agents/skills/cabloy-spec-generation/SKILL.md"
|
|
220
255
|
},
|
|
@@ -319,7 +354,7 @@
|
|
|
319
354
|
{
|
|
320
355
|
"adapter": "claude",
|
|
321
356
|
"category": "skill",
|
|
322
|
-
"sha256": "
|
|
357
|
+
"sha256": "88e6ca8c60d8caeb68ab932f2a7e22810a31911400b4428fd0756d076dbc78e8",
|
|
323
358
|
"source": "skills/cabloy-backend-scaffold/references/follow-up-checklist.md",
|
|
324
359
|
"target": ".claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md"
|
|
325
360
|
},
|
|
@@ -368,7 +403,7 @@
|
|
|
368
403
|
{
|
|
369
404
|
"adapter": "claude",
|
|
370
405
|
"category": "skill",
|
|
371
|
-
"sha256": "
|
|
406
|
+
"sha256": "aceca7a587634f574301cafad267b9a2d620db1c5a5c1dd8cec9483870fc0400",
|
|
372
407
|
"source": "skills/cabloy-domain-planning/SKILL.md",
|
|
373
408
|
"target": ".claude/skills/cabloy-domain-planning/SKILL.md"
|
|
374
409
|
},
|
|
@@ -459,63 +494,98 @@
|
|
|
459
494
|
{
|
|
460
495
|
"adapter": "claude",
|
|
461
496
|
"category": "skill",
|
|
462
|
-
"sha256": "
|
|
497
|
+
"sha256": "1d5a93d8285e85778e281c1a82d141f44d6f74112a295fc1d8ad977e2af2b3c3",
|
|
463
498
|
"source": "skills/cabloy-spec-execution/evals/evals.json",
|
|
464
499
|
"target": ".claude/skills/cabloy-spec-execution/evals/evals.json"
|
|
465
500
|
},
|
|
466
501
|
{
|
|
467
502
|
"adapter": "claude",
|
|
468
503
|
"category": "skill",
|
|
469
|
-
"sha256": "
|
|
504
|
+
"sha256": "187c45fea775846326bcdea17b20a465850e563cd98a9c189725ca5aac5fdee5",
|
|
505
|
+
"source": "skills/cabloy-spec-execution/evals/files/scenarios.json",
|
|
506
|
+
"target": ".claude/skills/cabloy-spec-execution/evals/files/scenarios.json"
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"adapter": "claude",
|
|
510
|
+
"category": "skill",
|
|
511
|
+
"sha256": "4272ada10c6802a70c3fd926aab858724a65e975a716775ac716d6f0ba85c25a",
|
|
512
|
+
"source": "skills/cabloy-spec-execution/evals/protocol.md",
|
|
513
|
+
"target": ".claude/skills/cabloy-spec-execution/evals/protocol.md"
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"adapter": "claude",
|
|
517
|
+
"category": "skill",
|
|
518
|
+
"sha256": "788f9c94a93753f2ad16d0a1f772fe61785514ab69e2564a2a2454f4efb46086",
|
|
470
519
|
"source": "skills/cabloy-spec-execution/references/execution-protocol.md",
|
|
471
520
|
"target": ".claude/skills/cabloy-spec-execution/references/execution-protocol.md"
|
|
472
521
|
},
|
|
473
522
|
{
|
|
474
523
|
"adapter": "claude",
|
|
475
524
|
"category": "skill",
|
|
476
|
-
"sha256": "
|
|
525
|
+
"sha256": "ec93b6999fcf87f35f8f1f18eed54bb08ee2753862b34f6c474480f2c88ee7e0",
|
|
477
526
|
"source": "skills/cabloy-spec-execution/references/status-and-evidence.md",
|
|
478
527
|
"target": ".claude/skills/cabloy-spec-execution/references/status-and-evidence.md"
|
|
479
528
|
},
|
|
480
529
|
{
|
|
481
530
|
"adapter": "claude",
|
|
482
531
|
"category": "skill",
|
|
483
|
-
"sha256": "
|
|
532
|
+
"sha256": "52a1a0ae16f72345a761d657130fd65b681535c20937a86d1d6f279772c9bb31",
|
|
484
533
|
"source": "skills/cabloy-spec-execution/SKILL.md",
|
|
485
534
|
"target": ".claude/skills/cabloy-spec-execution/SKILL.md"
|
|
486
535
|
},
|
|
487
536
|
{
|
|
488
537
|
"adapter": "claude",
|
|
489
538
|
"category": "skill",
|
|
490
|
-
"sha256": "
|
|
539
|
+
"sha256": "4ef681f7bb98e605514e770bfa129d171f915e8562025d6195de0f8dfecaa80a",
|
|
491
540
|
"source": "skills/cabloy-spec-generation/evals/evals.json",
|
|
492
541
|
"target": ".claude/skills/cabloy-spec-generation/evals/evals.json"
|
|
493
542
|
},
|
|
494
543
|
{
|
|
495
544
|
"adapter": "claude",
|
|
496
545
|
"category": "skill",
|
|
497
|
-
"sha256": "
|
|
546
|
+
"sha256": "c5a1923be3cf387d3d31535af816e8ecadd52762ebb847a1be0d7cd1fe7c3d61",
|
|
547
|
+
"source": "skills/cabloy-spec-generation/evals/files/scenarios.json",
|
|
548
|
+
"target": ".claude/skills/cabloy-spec-generation/evals/files/scenarios.json"
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"adapter": "claude",
|
|
552
|
+
"category": "skill",
|
|
553
|
+
"sha256": "4fa0405277092948d79cbde3d5b9b0f2e258dac58bf7e462dffea56da5fdd45f",
|
|
554
|
+
"source": "skills/cabloy-spec-generation/evals/protocol.md",
|
|
555
|
+
"target": ".claude/skills/cabloy-spec-generation/evals/protocol.md"
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
"adapter": "claude",
|
|
559
|
+
"category": "skill",
|
|
560
|
+
"sha256": "85b5a174c20111d31e50071a826f555c1e9b810e52078305af2850f3593f3603",
|
|
561
|
+
"source": "skills/cabloy-spec-generation/references/canonical-spec-input.md",
|
|
562
|
+
"target": ".claude/skills/cabloy-spec-generation/references/canonical-spec-input.md"
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
"adapter": "claude",
|
|
566
|
+
"category": "skill",
|
|
567
|
+
"sha256": "0c482b23c42c893dae4a027a786117ff2ad4b5686e3fc29de0a117d7e4958a49",
|
|
498
568
|
"source": "skills/cabloy-spec-generation/references/repo-aware-discovery.md",
|
|
499
569
|
"target": ".claude/skills/cabloy-spec-generation/references/repo-aware-discovery.md"
|
|
500
570
|
},
|
|
501
571
|
{
|
|
502
572
|
"adapter": "claude",
|
|
503
573
|
"category": "skill",
|
|
504
|
-
"sha256": "
|
|
574
|
+
"sha256": "772e83aea0d7a3ad3d5a91d4ecedd09f6cd24ae9eb146399f0834ded3f074185",
|
|
505
575
|
"source": "skills/cabloy-spec-generation/references/repo-specs-document-set.md",
|
|
506
576
|
"target": ".claude/skills/cabloy-spec-generation/references/repo-specs-document-set.md"
|
|
507
577
|
},
|
|
508
578
|
{
|
|
509
579
|
"adapter": "claude",
|
|
510
580
|
"category": "skill",
|
|
511
|
-
"sha256": "
|
|
581
|
+
"sha256": "242d3b7dd6f9266fa836918443c06add6bf9d2308d7f4288112412ee3a6224f5",
|
|
512
582
|
"source": "skills/cabloy-spec-generation/references/traceability-and-status-rules.md",
|
|
513
583
|
"target": ".claude/skills/cabloy-spec-generation/references/traceability-and-status-rules.md"
|
|
514
584
|
},
|
|
515
585
|
{
|
|
516
586
|
"adapter": "claude",
|
|
517
587
|
"category": "skill",
|
|
518
|
-
"sha256": "
|
|
588
|
+
"sha256": "7b66c1f77130d14e44bea6f6f09e0de53fe4ae251ad888e78195dab48246301d",
|
|
519
589
|
"source": "skills/cabloy-spec-generation/SKILL.md",
|
|
520
590
|
"target": ".claude/skills/cabloy-spec-generation/SKILL.md"
|
|
521
591
|
},
|
|
@@ -592,7 +662,7 @@
|
|
|
592
662
|
{
|
|
593
663
|
"adapter": "codex",
|
|
594
664
|
"category": "runtime",
|
|
595
|
-
"sha256": "
|
|
665
|
+
"sha256": "7d7bc4472cd7fdfa2a34193117a771445b3b2ac6fddb553c64050f7ae9cf01cc",
|
|
596
666
|
"source": "adapters/codex/contract-loop-gate.mjs",
|
|
597
667
|
"target": ".codex/hooks/contract-loop-gate.mjs"
|
|
598
668
|
},
|
|
@@ -606,7 +676,7 @@
|
|
|
606
676
|
{
|
|
607
677
|
"adapter": "cursor",
|
|
608
678
|
"category": "runtime",
|
|
609
|
-
"sha256": "
|
|
679
|
+
"sha256": "14ec4e6aaf57cd8cdc21b42b8ff865810d79a82f0927a4445b756e41c0e2438a",
|
|
610
680
|
"source": "adapters/cursor/contract-loop-gate.mjs",
|
|
611
681
|
"target": ".cursor/hooks/contract-loop-gate.mjs"
|
|
612
682
|
},
|
|
@@ -634,7 +704,7 @@
|
|
|
634
704
|
{
|
|
635
705
|
"adapter": "cursor",
|
|
636
706
|
"category": "skill",
|
|
637
|
-
"sha256": "
|
|
707
|
+
"sha256": "88e6ca8c60d8caeb68ab932f2a7e22810a31911400b4428fd0756d076dbc78e8",
|
|
638
708
|
"source": "skills/cabloy-backend-scaffold/references/follow-up-checklist.md",
|
|
639
709
|
"target": ".cursor/skills/cabloy-backend-scaffold/references/follow-up-checklist.md"
|
|
640
710
|
},
|
|
@@ -683,7 +753,7 @@
|
|
|
683
753
|
{
|
|
684
754
|
"adapter": "cursor",
|
|
685
755
|
"category": "skill",
|
|
686
|
-
"sha256": "
|
|
756
|
+
"sha256": "aceca7a587634f574301cafad267b9a2d620db1c5a5c1dd8cec9483870fc0400",
|
|
687
757
|
"source": "skills/cabloy-domain-planning/SKILL.md",
|
|
688
758
|
"target": ".cursor/skills/cabloy-domain-planning/SKILL.md"
|
|
689
759
|
},
|
|
@@ -774,63 +844,98 @@
|
|
|
774
844
|
{
|
|
775
845
|
"adapter": "cursor",
|
|
776
846
|
"category": "skill",
|
|
777
|
-
"sha256": "
|
|
847
|
+
"sha256": "1d5a93d8285e85778e281c1a82d141f44d6f74112a295fc1d8ad977e2af2b3c3",
|
|
778
848
|
"source": "skills/cabloy-spec-execution/evals/evals.json",
|
|
779
849
|
"target": ".cursor/skills/cabloy-spec-execution/evals/evals.json"
|
|
780
850
|
},
|
|
781
851
|
{
|
|
782
852
|
"adapter": "cursor",
|
|
783
853
|
"category": "skill",
|
|
784
|
-
"sha256": "
|
|
854
|
+
"sha256": "187c45fea775846326bcdea17b20a465850e563cd98a9c189725ca5aac5fdee5",
|
|
855
|
+
"source": "skills/cabloy-spec-execution/evals/files/scenarios.json",
|
|
856
|
+
"target": ".cursor/skills/cabloy-spec-execution/evals/files/scenarios.json"
|
|
857
|
+
},
|
|
858
|
+
{
|
|
859
|
+
"adapter": "cursor",
|
|
860
|
+
"category": "skill",
|
|
861
|
+
"sha256": "4272ada10c6802a70c3fd926aab858724a65e975a716775ac716d6f0ba85c25a",
|
|
862
|
+
"source": "skills/cabloy-spec-execution/evals/protocol.md",
|
|
863
|
+
"target": ".cursor/skills/cabloy-spec-execution/evals/protocol.md"
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"adapter": "cursor",
|
|
867
|
+
"category": "skill",
|
|
868
|
+
"sha256": "788f9c94a93753f2ad16d0a1f772fe61785514ab69e2564a2a2454f4efb46086",
|
|
785
869
|
"source": "skills/cabloy-spec-execution/references/execution-protocol.md",
|
|
786
870
|
"target": ".cursor/skills/cabloy-spec-execution/references/execution-protocol.md"
|
|
787
871
|
},
|
|
788
872
|
{
|
|
789
873
|
"adapter": "cursor",
|
|
790
874
|
"category": "skill",
|
|
791
|
-
"sha256": "
|
|
875
|
+
"sha256": "ec93b6999fcf87f35f8f1f18eed54bb08ee2753862b34f6c474480f2c88ee7e0",
|
|
792
876
|
"source": "skills/cabloy-spec-execution/references/status-and-evidence.md",
|
|
793
877
|
"target": ".cursor/skills/cabloy-spec-execution/references/status-and-evidence.md"
|
|
794
878
|
},
|
|
795
879
|
{
|
|
796
880
|
"adapter": "cursor",
|
|
797
881
|
"category": "skill",
|
|
798
|
-
"sha256": "
|
|
882
|
+
"sha256": "52a1a0ae16f72345a761d657130fd65b681535c20937a86d1d6f279772c9bb31",
|
|
799
883
|
"source": "skills/cabloy-spec-execution/SKILL.md",
|
|
800
884
|
"target": ".cursor/skills/cabloy-spec-execution/SKILL.md"
|
|
801
885
|
},
|
|
802
886
|
{
|
|
803
887
|
"adapter": "cursor",
|
|
804
888
|
"category": "skill",
|
|
805
|
-
"sha256": "
|
|
889
|
+
"sha256": "4ef681f7bb98e605514e770bfa129d171f915e8562025d6195de0f8dfecaa80a",
|
|
806
890
|
"source": "skills/cabloy-spec-generation/evals/evals.json",
|
|
807
891
|
"target": ".cursor/skills/cabloy-spec-generation/evals/evals.json"
|
|
808
892
|
},
|
|
809
893
|
{
|
|
810
894
|
"adapter": "cursor",
|
|
811
895
|
"category": "skill",
|
|
812
|
-
"sha256": "
|
|
896
|
+
"sha256": "c5a1923be3cf387d3d31535af816e8ecadd52762ebb847a1be0d7cd1fe7c3d61",
|
|
897
|
+
"source": "skills/cabloy-spec-generation/evals/files/scenarios.json",
|
|
898
|
+
"target": ".cursor/skills/cabloy-spec-generation/evals/files/scenarios.json"
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"adapter": "cursor",
|
|
902
|
+
"category": "skill",
|
|
903
|
+
"sha256": "4fa0405277092948d79cbde3d5b9b0f2e258dac58bf7e462dffea56da5fdd45f",
|
|
904
|
+
"source": "skills/cabloy-spec-generation/evals/protocol.md",
|
|
905
|
+
"target": ".cursor/skills/cabloy-spec-generation/evals/protocol.md"
|
|
906
|
+
},
|
|
907
|
+
{
|
|
908
|
+
"adapter": "cursor",
|
|
909
|
+
"category": "skill",
|
|
910
|
+
"sha256": "85b5a174c20111d31e50071a826f555c1e9b810e52078305af2850f3593f3603",
|
|
911
|
+
"source": "skills/cabloy-spec-generation/references/canonical-spec-input.md",
|
|
912
|
+
"target": ".cursor/skills/cabloy-spec-generation/references/canonical-spec-input.md"
|
|
913
|
+
},
|
|
914
|
+
{
|
|
915
|
+
"adapter": "cursor",
|
|
916
|
+
"category": "skill",
|
|
917
|
+
"sha256": "0c482b23c42c893dae4a027a786117ff2ad4b5686e3fc29de0a117d7e4958a49",
|
|
813
918
|
"source": "skills/cabloy-spec-generation/references/repo-aware-discovery.md",
|
|
814
919
|
"target": ".cursor/skills/cabloy-spec-generation/references/repo-aware-discovery.md"
|
|
815
920
|
},
|
|
816
921
|
{
|
|
817
922
|
"adapter": "cursor",
|
|
818
923
|
"category": "skill",
|
|
819
|
-
"sha256": "
|
|
924
|
+
"sha256": "772e83aea0d7a3ad3d5a91d4ecedd09f6cd24ae9eb146399f0834ded3f074185",
|
|
820
925
|
"source": "skills/cabloy-spec-generation/references/repo-specs-document-set.md",
|
|
821
926
|
"target": ".cursor/skills/cabloy-spec-generation/references/repo-specs-document-set.md"
|
|
822
927
|
},
|
|
823
928
|
{
|
|
824
929
|
"adapter": "cursor",
|
|
825
930
|
"category": "skill",
|
|
826
|
-
"sha256": "
|
|
931
|
+
"sha256": "242d3b7dd6f9266fa836918443c06add6bf9d2308d7f4288112412ee3a6224f5",
|
|
827
932
|
"source": "skills/cabloy-spec-generation/references/traceability-and-status-rules.md",
|
|
828
933
|
"target": ".cursor/skills/cabloy-spec-generation/references/traceability-and-status-rules.md"
|
|
829
934
|
},
|
|
830
935
|
{
|
|
831
936
|
"adapter": "cursor",
|
|
832
937
|
"category": "skill",
|
|
833
|
-
"sha256": "
|
|
938
|
+
"sha256": "7b66c1f77130d14e44bea6f6f09e0de53fe4ae251ad888e78195dab48246301d",
|
|
834
939
|
"source": "skills/cabloy-spec-generation/SKILL.md",
|
|
835
940
|
"target": ".cursor/skills/cabloy-spec-generation/SKILL.md"
|
|
836
941
|
},
|
|
@@ -17,6 +17,18 @@ const required = [
|
|
|
17
17
|
'repo-agent-governance/scripts/governance.mjs',
|
|
18
18
|
'repo-agent-governance/tools/contract-loop/core.mjs',
|
|
19
19
|
'repo-agent-governance/tools/contract-loop/hook-runtime.mjs',
|
|
20
|
+
'repo-agent-governance/tools/spec-audit/audit.mjs',
|
|
21
|
+
'repo-agent-governance/tools/spec-charts/spec-parser.mjs',
|
|
22
|
+
'repo-agent-governance/tools/spec-charts/generate-implementation-charts.mjs',
|
|
23
|
+
'repo-agent-governance/skills/cabloy-spec-generation/SKILL.md',
|
|
24
|
+
'repo-agent-governance/skills/cabloy-spec-generation/references/canonical-spec-input.md',
|
|
25
|
+
'repo-agent-governance/skills/cabloy-spec-generation/evals/evals.json',
|
|
26
|
+
'repo-agent-governance/skills/cabloy-spec-generation/evals/protocol.md',
|
|
27
|
+
'repo-agent-governance/skills/cabloy-spec-generation/evals/files/scenarios.json',
|
|
28
|
+
'repo-agent-governance/skills/cabloy-spec-execution/SKILL.md',
|
|
29
|
+
'repo-agent-governance/skills/cabloy-spec-generation/references/repo-aware-discovery.md',
|
|
30
|
+
'repo-agent-governance/skills/cabloy-spec-generation/references/repo-specs-document-set.md',
|
|
31
|
+
'repo-agent-governance/skills/cabloy-spec-generation/references/traceability-and-status-rules.md',
|
|
20
32
|
'repo-agent-governance/adapters/cursor/hooks.json',
|
|
21
33
|
'repo-agent-governance/adapters/cursor/contract-loop-gate.mjs',
|
|
22
34
|
'repo-agent-governance/adapters/codex/hooks.json',
|
|
@@ -42,6 +54,11 @@ for (const path of forbidden) {
|
|
|
42
54
|
if (files.has(path))
|
|
43
55
|
throw new Error(`npm package must not contain local governance state: ${path}`);
|
|
44
56
|
}
|
|
57
|
+
for (const path of files) {
|
|
58
|
+
if (path.startsWith('repo-specs/') || path.startsWith('repo-docs-internal/')) {
|
|
59
|
+
throw new Error(`npm package must not contain project planning or internal records: ${path}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
45
62
|
// eslint-disable-next-line no-console
|
|
46
63
|
console.log(
|
|
47
64
|
`Governance package surface is valid (${required.length} canonical assets; ${managedAdapters.length} transition adapters excluded).`,
|
package/repo-agent-governance/skills/cabloy-backend-scaffold/references/follow-up-checklist.md
CHANGED
|
@@ -43,6 +43,7 @@ When the active edition and installed modules provide `@Passport.rbac(...)` and
|
|
|
43
43
|
- migration/version changes
|
|
44
44
|
- `meta.version`
|
|
45
45
|
- field indexes; in shared-database multitenancy, preserve ordinary lookup indexes and enforce business uniqueness in tenant-aware business logic rather than with `table.unique(...)`
|
|
46
|
+
- when editing or generating `meta.index`, consolidate each table's specifications into one declaration instead of adding another same-table `$tableColumns` spread; check for leading-column name collisions, effective metadata, and physical index definitions using the [Field Indexes guide](../../../../repo-docs/backend/field-indexes.md)
|
|
46
47
|
- relations
|
|
47
48
|
- datasource choice
|
|
48
49
|
- cache behavior
|
|
@@ -143,9 +143,11 @@ Use examples such as:
|
|
|
143
143
|
|
|
144
144
|
When helpful, explain why the recommendation is better than obvious alternatives.
|
|
145
145
|
|
|
146
|
-
## Step 7:
|
|
146
|
+
## Step 7: Confirm naming and preserve the caller's workflow
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
If invoked by `cabloy-spec-generation` because naming was unresolved, this is a **naming-only** detour. Return the validated identity, capability names, proposed ownership, edition, and remaining naming questions to generation. Do not run scaffold commands or treat naming confirmation as generation, ADR, or execution approval. Generation resumes its selected complete/incremental/lightweight mode and confirmation gate.
|
|
149
|
+
|
|
150
|
+
For a direct scaffolding request, before suggesting execution, explicitly confirm:
|
|
149
151
|
|
|
150
152
|
- `providerId`
|
|
151
153
|
- suite short name
|
|
@@ -160,7 +162,7 @@ Always leave a custom path available, for example:
|
|
|
160
162
|
|
|
161
163
|
## Step 8: Hand off to CLI-first scaffolding only after confirmation
|
|
162
164
|
|
|
163
|
-
|
|
165
|
+
For a naming-only detour, return to `cabloy-spec-generation` without source generation. Only a direct, explicitly confirmed scaffolding request routes to the real generators rather than hand-authoring structure. A completed spec baseline instead hands one bounded WBS candidate to `cabloy-spec-execution` for its own dossier approval.
|
|
164
166
|
|
|
165
167
|
Typical commands are:
|
|
166
168
|
|