模板domain-packages
Domain Packages 工作区
初始化一个空的标准化 domain packages 工作区,并通过确定性流程生成带默认 Web 工作台的正式领域包。
Domain Packages 工作区
domain-packages 模板初始化的仓库刻意不包含任何业务 package。它内置 OpenSpec、文档工作
区、确定性建包生成器、机器可读 schema、实践包和 agent skills,让人类或 AI Coding Agent
不依赖模型记忆也能创建规范的 domain package。
创建工作区和第一个 package
交互式 agentdock init 会在生成 workspace 后继续首个 package onboarding:询问 domain
package id 与 intent,推导 display name/owner 默认值,并在返回前直接创建 package:
npx @cogito.ai/cli@0.27.1 init \
--name my-domain-packages \
--template domain-packages \
--dir my-domain-packages \
--pm pnpmAgent/JSON 模式保持非交互。可以显式传入 package 字段或 spec:
npx @cogito.ai/cli@0.27.1 init \
--name my-domain-packages \
--template domain-packages \
--dir my-domain-packages \
--pm pnpm \
--json \
--domain-package-id example-domain \
--domain-package-intent "Help the user complete one concrete domain outcome with a reviewable artifact."在 agent/JSON 模式省略这些字段,则会生成合法的空 workspace。
仓库结构
openspec/ # 根目录规范工作区
apps/<package-id>/ # domain package 根目录
apps/<package-id>/web/ # 被忽略的构建 staging
apps/docs/ # 文档工作区
apps/web/ # package Web 源码在已有工作区使用生成器
如果 workspace 已存在,在交互终端运行:
pnpm create:package生成器会询问 id 与 intent,并应用 display name/owner 默认值,不需要临时创建
package-spec.json。
通过 spec 创建 package(agent/CI)
cat > package-spec.json <<'JSON'
{
"id": "example-domain",
"displayName": "Example Domain",
"intent": "Help the user complete one concrete domain outcome with a reviewable artifact.",
"owner": "@team",
"lifecycle": "active",
"repositoryClass": "product",
"hasWeb": true
}
JSON
pnpm create:package --spec package-spec.json
pnpm install
pnpm check生成器会创建:
- package
contract.json、declarations、truth、upgrade 元数据和 system prompt; - package-local
AGENTS.md与roadmap.yaml; agent/surface.json与agent/web-surface.json;- capability catalog;
- 固定在
apps/web/的web-tanstackstart包 Web 项目; - 根目录的
dev、check和 package build 命令。
正式 package 默认带 Web。无 Web 的正式 package 必须提供明确批准的例外说明。
源码与产物边界
apps/<package-id>/web/ 和生成的 seed database 是被 Git 忽略的构建 staging。发布流水线必须从干净
源码克隆构建它们,并连同 checksum 与构建元数据放入不可变 artifact。
Agent 边界
模板面向 AI Coding Agent,但智能仍留在 package 外部:
- 不允许 package 自行调用 LLM;
- 不允许第二套 agent loop 或对话记忆;
- Web 交互使用意图级 action 与 capability,禁止 DOM selector 自动化;
- roadmap 与上下文保持 package-local;
- 禁止跨 package 复制业务实现。