@h-ai/cli 0.1.0-alpha.60 → 0.1.0-alpha.62
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/README.en.md +25 -1
- package/README.ja.md +25 -1
- package/README.md +25 -1
- package/dist/{chunk-P6X63D3I.js → chunk-WW2MIO6T.js} +377 -124
- package/dist/chunk-WW2MIO6T.js.map +1 -0
- package/dist/{chunk-WWG3U5ZD.js → chunk-X3RSYNBG.js} +8 -3
- package/dist/chunk-X3RSYNBG.js.map +1 -0
- package/dist/cli-config-templates-QRF6B5T4.js +5 -0
- package/dist/{cli-config-templates-EFABFSCY.js.map → cli-config-templates-QRF6B5T4.js.map} +1 -1
- package/dist/{cli-skill-templates-2KDUACT6.js → cli-skill-templates-EZFW7D43.js} +3 -3
- package/dist/{cli-skill-templates-2KDUACT6.js.map → cli-skill-templates-EZFW7D43.js.map} +1 -1
- package/dist/index.js +31 -10
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/templates/README.md +11 -4
- package/templates/apps/api/.gitignore.hbs +1 -0
- package/templates/apps/api/e2e/capture-evidence.ts.hbs +23 -0
- package/templates/apps/api/playwright.config.ts.hbs +1 -0
- package/templates/apps/fullstack/.gitignore.hbs +1 -0
- package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +123 -4
- package/templates/apps/fullstack/packages/{{projectName}}-serv/README.md.hbs +8 -3
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_ai.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_audit.yml.hbs +1 -3
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_cache.yml.hbs +1 -2
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_core.yml.hbs +7 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_db.yml.hbs +1 -3
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_deploy.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_iam.yml.hbs +1 -67
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_payment.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_reach.yml.hbs +31 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_scheduler.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_serv.yml.hbs +10 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_storage.yml.hbs +1 -3
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_vecdb.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/app-server.ts.hbs +1 -21
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/admin-procedures.ts.hbs +1 -1
- package/templates/apps/fullstack/packages/{{projectName}}-shared/README.md.hbs +7 -1
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/en-US.json.hbs +19 -1
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/zh-CN.json.hbs +19 -1
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AdminWorkspace.svelte.hbs +7 -2
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AppShell.svelte.hbs +5 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/ProfileSettings.svelte.hbs +3 -3
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/guide-store.ts.hbs +55 -0
- package/templates/apps/fullstack/playwright.config.ts.hbs +21 -10
- package/templates/apps/h5/src/routes/+layout.svelte.hbs +35 -23
- package/templates/base/.gitignore.hbs +1 -2
- package/templates/base/e2e/app.spec.ts.hbs +49 -3
- package/templates/base/package.json.hbs +1 -1
- package/templates/skills/AGENTS.md +6 -0
- package/templates/skills/bridges/admin/AGENTS.md +6 -0
- package/templates/skills/bridges/api/AGENTS.md +6 -0
- package/templates/skills/bridges/fullstack/AGENTS.md.hbs +6 -0
- package/templates/skills/bridges/h5/AGENTS.md +6 -0
- package/templates/skills/bridges/mobile-app/AGENTS.md +6 -0
- package/templates/skills/bridges/website/AGENTS.md +6 -0
- package/templates/skills/copilot-instructions.md +3 -9
- package/templates/skills/hai-app-create/SKILL.md +6 -0
- package/templates/skills/hai-app-create/development.md +10 -6
- package/templates/skills/hai-app-create/reference.md +10 -0
- package/templates/skills/hai-audit/SKILL.md +1 -1
- package/templates/skills/hai-build/SKILL.md +1 -0
- package/templates/skills/hai-build/reference.md +1 -1
- package/templates/skills/hai-ci/SKILL.md +1 -1
- package/templates/skills/hai-framework-sync/SKILL.md +67 -70
- package/templates/skills/hai-framework-sync/sync.md +49 -0
- package/templates/skills/hai-iam/SKILL.md +5 -0
- package/templates/skills/hai-iam/reference.md +88 -7
- package/templates/skills/hai-pr-review/SKILL.md +1 -1
- package/templates/skills/hai-reach/SKILL.md +1 -1
- package/templates/skills/hai-reach/reference.md +4 -5
- package/templates/skills/hai-serv/SKILL.md +1 -1
- package/templates/skills/hai-serv/reference.md +9 -6
- package/templates/skills/hai-spec-implement/SKILL.md +41 -0
- package/templates/skills/hai-spec-implement/templates.md +90 -0
- package/templates/skills/hai-spec-implement/workflow.md +53 -0
- package/templates/skills/hai-spec-review/SKILL.md +44 -0
- package/templates/skills/hai-spec-review/checklist.md +70 -0
- package/templates/skills/hai-storage/SKILL.md +9 -2
- package/templates/skills/hai-ui/SKILL.md +3 -1
- package/templates/skills/hai-ui/guide.md +79 -0
- package/templates/skills/hai-ui/reference.md +13 -0
- package/templates/skills/opencode.json +1 -1
- package/dist/chunk-P6X63D3I.js.map +0 -1
- package/dist/chunk-WWG3U5ZD.js.map +0 -1
- package/dist/cli-config-templates-EFABFSCY.js +0 -5
- package/templates/skills/bridges/admin/copilot-instructions.md +0 -11
- package/templates/skills/bridges/api/copilot-instructions.md +0 -13
- package/templates/skills/bridges/fullstack/copilot-instructions.md.hbs +0 -19
- package/templates/skills/bridges/h5/copilot-instructions.md +0 -11
- package/templates/skills/bridges/mobile-app/copilot-instructions.md +0 -11
- package/templates/skills/bridges/website/copilot-instructions.md +0 -11
package/README.en.md
CHANGED
|
@@ -25,9 +25,15 @@ Claude Code v2.1.277 and later can also read root `AGENTS.md` directly when no h
|
|
|
25
25
|
|
|
26
26
|
The CLI copies complete selected skill directories from `templates/skills/` into the generated project's `.agents/skills/`. `SKILL.md` defines boundaries and task navigation; `reference.md`/`guide.md` hold on-demand examples. Do not copy only the entry file. AGENTS.md holds application constraints and Claude/Copilot bridge files reference it. Template changes must sync relevant repository skills. Generation tests verify delivery of reference files.
|
|
27
27
|
|
|
28
|
+
Every application type includes `hai-spec-review` to review requirements and designs before generation: completeness, ambiguity, technical/framework correctness, and consistent naming. It reports located issues with concrete corrections and declares generation readiness only when issues are resolved and evidence is sufficient. `hai init` / `hai add` also backfill this workflow skill while preserving custom files.
|
|
29
|
+
|
|
30
|
+
After review, the separate `hai-spec-implement` skill handles implementation from documents. Every application includes it, and `hai init` / `hai add` backfill its complete resources. AI splits work by independently verifiable features and actual dependencies, using `docs/task-list.md` and `docs/tasks/<id>-<slug>.md` by default. Each task uses its own Git branch, TDD, quality gates and a local merge; records are marked complete after the actual merge commit and integration checks. Rework keeps the same task ID, file and branch, adding a new cycle linked to prior evidence. This uses Markdown, Git and existing development/test skills, with no new runtime dependency or workflow engine. Requests can plan only, implement a document, execute T003, or repair and merge T002. Planning does not start implementation; selected tasks require completed dependencies, and remote actions follow the user's authorization.
|
|
31
|
+
|
|
28
32
|
For everyday feature additions, changes and fixes, `AGENTS.md` routes to `hai-app-create/SKILL.md` and `development.md`. Map requirements to existing framework features, configuration and extension points before implementing against the installed package's exports and types. Reuse applicable capabilities and explain concrete gaps; do not install unrelated dependencies to increase module coverage. Codex uses `.agents/skills/` and the project root's persistent `AGENTS.md` rules.
|
|
29
33
|
|
|
30
|
-
Tool entry points share one set of rules and skills: Codex/Cursor use AGENTS and `.agents/skills/`; Copilot
|
|
34
|
+
Tool entry points share one set of rules and skills: Codex/Cursor use AGENTS and `.agents/skills/`; Copilot's `.github/copilot-instructions.md` only references the shared `AGENTS.md`, with application-specific rules maintained there; OpenCode's opencode.json references the shared rules directly through `instructions: ["AGENTS.md"]`. Claude Code's root CLAUDE.md contains only `@AGENTS.md`; task navigation in the shared rules leads to skill bodies and references in `.agents/skills/` as needed. The CLI does not create `.claude/`, duplicate skills or require symlinks. This setup does not register native Claude skills or `/skill` commands; existing Claude settings and skills are preserved. Sources: [Claude project instructions](https://code.claude.com/docs/en/memory), [Claude native skills](https://code.claude.com/docs/en/skills), [Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills), [OpenCode](https://docs.opencode.ai/docs/skills/), [Cursor](https://cursor.com/docs/skills).
|
|
35
|
+
|
|
36
|
+
Codex discovers `.agents/skills/` natively and selects skills as needed. Invoke `$hai-app-create`, `$hai-app-review`, or another skill explicitly when useful; entry points and references remain on demand. No additional `.codex/skills` tree or Copilot settings are required. Sources: [Codex skills](https://learn.chatgpt.com/docs/build-skills), [AGENTS.md](https://learn.chatgpt.com/docs/agent-configuration/agents-md).
|
|
31
37
|
|
|
32
38
|
Generated projects share `eslint-rules.js`. Lint rejects explicit `any`, console calls, unexplained suppressions, double unknown assertions, internal framework source imports and writes to known sensitive localStorage keys. A necessary third-party workaround requires a documented local exception. Static rules do not prove authorization, input safety, transaction behavior or log redaction; verify those through tests and review.
|
|
33
39
|
|
|
@@ -56,6 +62,8 @@ In PowerShell, use `pnpm.cmd add -g @h-ai/cli`. To update an installed CLI to th
|
|
|
56
62
|
|
|
57
63
|
Generated `@h-ai/*` dependencies are pinned to the CLI version; pnpm references that exact version through `catalog:`. Upgrade framework packages together and verify the versions resolved in the lockfile.
|
|
58
64
|
|
|
65
|
+
In your application repository, ask the AI to "upgrade Hai-framework to the latest version". Project instructions route to [hai-framework-sync](templates/skills/hai-framework-sync/SKILL.md) to check published versions online, compare cumulative changes and application impact, request decisions or blocker resolution when needed, then migrate dependencies/code/configuration, merge skills and AI instructions, and validate. Comparison-only requests do not modify the application. `hai init` / `hai add` backfill the upgrade skill, adjacent resources and referenced CI/PR workflow skills even when the original template cannot be identified. Existing files are preserved; older skills and routing still need to be merged.
|
|
66
|
+
|
|
59
67
|
Creation messages are written directly to the terminal. Installation failures display the package manager command, exit code and stdout/stderr, and retain generated files for a retry from the project directory. The `prebuild-install@7.1.3` deprecation warning comes from the upstream `better-sqlite3` installer dependency. That warning alone does not fail installation; do not override or remove the native installer to hide it.
|
|
60
68
|
|
|
61
69
|
```bash
|
|
@@ -135,6 +143,8 @@ hai g:model order
|
|
|
135
143
|
|
|
136
144
|
## Fullstack mini administration
|
|
137
145
|
|
|
146
|
+
The default workspace includes `@h-ai/ui/guide` onboarding and help: first-use invitations, element tours, searchable instructions, manual replay and profile setup tours. Web/App/Desktop share content and translations; Web uses Cookies and native WebViews use localStorage, isolated by user and tour version. Extend the shared guide-store and data-guide anchors; see the [guide skill](templates/skills/hai-ui/guide.md).
|
|
147
|
+
|
|
138
148
|
`--type fullstack` generates an administration workspace with IAM, reldb, cache, audit, storage and crypto by default. The required management modules remain enabled even with the minimal preset. `--frontends` selects Web, Capacitor App and Tauri Desktop; miniapp remains a documentation placeholder excluded from runtime and builds.
|
|
139
149
|
|
|
140
150
|
```powershell
|
|
@@ -159,10 +169,20 @@ Default SQLite, local storage and memory cache suit a single-instance mini admin
|
|
|
159
169
|
|
|
160
170
|
## Application configuration and display
|
|
161
171
|
|
|
172
|
+
Every generated `.gitignore` includes `**/data/`, covering runtime data and `.gitkeep` at every workspace depth. Runtime code creates the required directories.
|
|
173
|
+
|
|
174
|
+
Fullstack always includes 13 `.yml` files in `packages/<project>-serv/config/`: `_core`, `_serv`, `_db`, `_cache`, `_iam`, `_storage`, `_audit`, `_reach`, `_ai`, `_vecdb`, `_payment`, `_scheduler`, and `_deploy`. Used modules retain working defaults; unused modules, optional fields, and alternative providers remain as comments. `.env.example` also includes commented credentials for unused modules. Module choices entered during creation are preserved.
|
|
175
|
+
|
|
176
|
+
To extend the service, install the required package in its workspace, validate with the public schema, initialize it and close it in reverse order in `src/server/runtime.ts`, then uncomment the relevant configuration. For a fully commented file, remove one outer comment layer first and enable optional blocks as needed. A configuration file alone does not connect business features. Replace connection blocks when switching SQLite/Redis/S3 or Reach providers, keeping each provider name unique. `crypto.init()` takes no configuration and datapipe provides pure functions; neither gets an invented YAML file.
|
|
177
|
+
|
|
162
178
|
Every template reads `name`, `version`, `env`, `defaultLocale` and `logging` from `_core.yml`, obtains metadata through `core.config` and uses `core.logger`. Single-app configuration lives in `config/`, API workspace configuration in `apps/<project>-service/config/`, and fullstack configuration in `packages/<project>-serv/config/`. YAML controls log level and format; initialization does not replace them with a fixed `logging` option.
|
|
163
179
|
|
|
164
180
|
Core environment overrides include `HAI_CORE_NAME`, `HAI_CORE_VERSION`, `HAI_CORE_ENV` and `HAI_CORE_LOGGING_LEVEL`; a whole `HAI_CORE` override follows parent-node precedence. Restart services after server configuration changes. Containers explicitly set `HAI_CORE_ENV=production`, which enables production security policy.
|
|
165
181
|
|
|
182
|
+
Leaf overrides apply only to existing YAML paths: uncomment the key first, or replace the whole object with `HAI_DB`, `HAI_CACHE`, etc. CamelCase remains one segment: `connectTimeout` maps to `HAI_CACHE_CONNECTTIMEOUT`. Locale lists belong in each frontend/shared `project.inlang/settings.json`; `_core.yml` specifies only the default locale.
|
|
183
|
+
|
|
184
|
+
The automatically generated fullstack `.env` enables only the initial administrator password and `PUBLIC_API_BASE`. Module overrides remain commented so YAML supplies defaults. Explicitly uncomment environment overrides when needed, and check existing overrides when editing YAML.
|
|
185
|
+
|
|
166
186
|
SvelteKit server layouts expose only whitelisted public metadata such as name, version, environment and default locale. Standalone mobile-app Vite configuration parses YAML through core in the Node build process and injects public values plus browser logging level/format; YAML or override changes require a rebuild. Fullstack frontends obtain public server metadata through encrypted `app.info`. No template exposes complete core/module configuration, secrets or log-redaction context to the browser.
|
|
167
187
|
|
|
168
188
|
## Global options
|
|
@@ -251,6 +271,10 @@ pnpm --filter @h-ai/cli test:watch
|
|
|
251
271
|
pnpm --filter @h-ai/cli test:coverage
|
|
252
272
|
```
|
|
253
273
|
|
|
274
|
+
Admin and fullstack gates also verify public types and runtime behavior from installed local tarballs: streams/checksums/create-only writes, API Key scopes/revocation, current authorization, batch users/role pagination, Reach templates and Audit metadata. Fullstack also verifies trusted peer IPs.
|
|
275
|
+
|
|
276
|
+
Successful screenshots default to the CLI's `test-results/scaffold-evidence/`. Set `HAI_AUTH_EVIDENCE_DIR` to retain them in a chosen directory after generated projects are cleaned up. Fullstack E2E starts every selected Web/App/Desktop browser preview and checks login, tours, help and profile navigation. Miniapp and native shells require separate platform acceptance.
|
|
277
|
+
|
|
254
278
|
## License
|
|
255
279
|
|
|
256
280
|
Apache-2.0
|
package/README.ja.md
CHANGED
|
@@ -25,9 +25,15 @@ Claude Code v2.1.277 以降は、優先されるプロジェクト CLAUDE ファ
|
|
|
25
25
|
|
|
26
26
|
CLI は選択した skill のディレクトリー全体を `templates/skills/` から生成先の `.agents/skills/` にコピーします。`SKILL.md` は機能の境界とタスク案内、`reference.md`/`guide.md` は必要時に読む例を提供します。入口だけをコピーしてはいけません。AGENTS.md にアプリの制約を置き、Claude/Copilot のブリッジから参照します。テンプレート変更は関連するリポジトリー skill と同期し、生成テストで参照ファイルの完全な提供を確認します。
|
|
27
27
|
|
|
28
|
+
すべてのアプリ種別に `hai-spec-review` を提供します。生成前に要件・設計の完全性、曖昧さ、技術・フレームワーク利用の正確性、命名の一貫性を厳密に確認し、箇所と具体的な修正案を報告します。問題が解決され、証拠が十分な場合のみ AI 生成に進めると判定します。`hai init` / `hai add` は既存のカスタムファイルを保持してこの skill も補完します。
|
|
29
|
+
|
|
30
|
+
審査後の文書からの実装は、独立した `hai-spec-implement` が担当します。全アプリに提供し、`hai init` / `hai add` でも関連リソース全体を補完します。AI は独立して検証できる機能と実際の依存関係に基づいて分割を判断し、既定では `docs/task-list.md` と `docs/tasks/<id>-<slug>.md` を使います。各タスクは専用 Git ブランチで TDD と品質チェックを行い、ローカルでマージして実際のコミットと統合検証を記録してから完了にします。修正時は元の番号・ファイル・ブランチを再利用し、以前の証拠に関連付けた新しい実施回を追加します。Markdown、Git、既存の開発・テスト skills を使い、新しいランタイム依存やワークフローエンジンは不要です。「文書からタスク一覧だけ作成」「文書から実装」「T003 を実行」「T002 を修正してマージ」のように指定できます。計画だけの依頼では実装せず、指定タスクは依存を確認し、リモート操作はユーザーの許可範囲に従います。
|
|
31
|
+
|
|
28
32
|
通常の機能追加・変更・修正では、`AGENTS.md` が `hai-app-create/SKILL.md` と `development.md` に案内します。要件を既存のフレームワーク機能・設定・拡張点に対応付け、インストール済みバージョンの exports と型を確認して実装します。適用できる機能を優先して再利用し、不足する能力を具体的に説明します。利用率のために無関係な依存を追加しません。Codex は `.agents/skills/` とプロジェクトルートの `AGENTS.md` を使用します。
|
|
29
33
|
|
|
30
|
-
各ツールの入口は一つの規則と skill を共有します。Codex/Cursor は AGENTS と `.agents/skills
|
|
34
|
+
各ツールの入口は一つの規則と skill を共有します。Codex/Cursor は AGENTS と `.agents/skills/` を使用します。Copilot の `.github/copilot-instructions.md` は共通の `AGENTS.md` のみを参照し、アプリ種別の規則もそこに集約します。OpenCode の opencode.json は `instructions: ["AGENTS.md"]` で共通規則を直接参照します。Claude Code のルート CLAUDE.md は `@AGENTS.md` のみを含み、共有規則のタスク案内から `.agents/skills/` の本文と参照ファイルを必要時に読みます。CLI は `.claude/` を生成せず、skill の複製やシンボリックリンクも不要です。この構成では Claude のネイティブ skill 自動検出や `/skill` コマンドは登録されません。既存の Claude 設定と skill は保持します。根拠:[Claude プロジェクト指針](https://code.claude.com/docs/en/memory)、[Claude ネイティブ skills](https://code.claude.com/docs/en/skills)、[Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills)、[OpenCode](https://docs.opencode.ai/docs/skills/)、[Cursor](https://cursor.com/docs/skills)。
|
|
35
|
+
|
|
36
|
+
Codex は `.agents/skills/` を標準で検出し、タスクに応じて Skill を選びます。必要に応じて `$hai-app-create`、`$hai-app-review` などを明示的に呼び出せます。入口と参考ファイルは必要時に読みます。追加の `.codex/skills` や Copilot 設定は不要です。根拠:[Codex skills](https://learn.chatgpt.com/docs/build-skills)、[AGENTS.md](https://learn.chatgpt.com/docs/agent-configuration/agents-md)。
|
|
31
37
|
|
|
32
38
|
生成プロジェクトは `eslint-rules.js` を共有します。lint は明示的な `any`、console、説明のない抑制、unknown を介した二重アサーション、フレームワーク内部ソースの import、既知の機密 localStorage キーへの書き込みを拒否します。必要なサードパーティーの回避策は局所的な説明を付けます。権限分離・入力安全性・トランザクション・ログのマスキングは静的規則だけでは証明できないため、テストとレビューで確認します。
|
|
33
39
|
|
|
@@ -56,6 +62,8 @@ PowerShell では `pnpm.cmd add -g @h-ai/cli` を使用してください。同
|
|
|
56
62
|
|
|
57
63
|
生成する `@h-ai/*` 依存は CLI と同じバージョンに固定し、pnpm は `catalog:` からその完全なバージョンを参照します。更新時はフレームワークのパッケージをまとめて更新し、lockfile の実際の解決バージョンを確認してください。
|
|
58
64
|
|
|
65
|
+
アプリケーションのリポジトリーで AI に「Hai-framework を最新バージョンにアップグレードして」と伝えると、プロジェクトの指針から [hai-framework-sync](templates/skills/hai-framework-sync/SKILL.md) を読みます。公開バージョンをオンラインで確認し、累積差分とアプリへの影響を比較して、必要な選択や阻害要因の解消をユーザーに求めます。その後、依存・コード・設定を移行し、skills と AI 入口をマージして検証します。比較のみの依頼ではアプリを変更しません。`hai init` / `hai add` は元のテンプレートを特定できない旧プロジェクトにも、アップグレード skill、関連リソース、参照先の CI/PR skill を補完します。既存ファイルは保持されるため、旧版 skill と入口は別途マージしてください。
|
|
66
|
+
|
|
59
67
|
作成メッセージは端末へ直接出力します。依存のインストールが失敗した場合は、コマンド、終了コード、stdout/stderr を表示し、生成したファイルを残します。プロジェクト内でインストールを再実行できます。`prebuild-install@7.1.3` の非推奨警告は `better-sqlite3` の上流インストーラー依存によるものです。この警告だけではインストールは失敗しません。警告を隠すためにネイティブインストーラーを上書き・削除しないでください。
|
|
60
68
|
|
|
61
69
|
```bash
|
|
@@ -135,6 +143,8 @@ hai g:model order
|
|
|
135
143
|
|
|
136
144
|
## Fullstack mini 管理画面
|
|
137
145
|
|
|
146
|
+
既定の管理画面は `@h-ai/ui/guide` の初回案内、要素ガイド、検索付きヘルプ、再表示、個人設定ガイドを提供します。Web/App/Desktop は内容と翻訳を共有し、Web は Cookie、WebView は localStorage でユーザーとバージョンごとに状態を保存します。共有 guide-store と data-guide を拡張してください。[ガイド skill](templates/skills/hai-ui/guide.md)を参照してください。
|
|
147
|
+
|
|
138
148
|
`--type fullstack` は IAM、reldb、cache、audit、storage、crypto を含む管理 workspace を既定で生成します。minimal を選んでも管理に必要なモジュールは有効です。`--frontends` で Web、Capacitor App、Tauri Desktop を選択します。miniapp は説明用のプレースホルダーで、実行・ビルド対象には含まれません。
|
|
139
149
|
|
|
140
150
|
```powershell
|
|
@@ -159,12 +169,22 @@ Web/App/Desktop は同じ `AdminWorkspace`、management store、型付き client
|
|
|
159
169
|
|
|
160
170
|
## アプリ設定と表示
|
|
161
171
|
|
|
172
|
+
生成されるすべての `.gitignore` に `**/data/` を含め、ルートと各 workspace の実行データおよび `.gitkeep` を除外します。必要なディレクトリは実行時に作成します。
|
|
173
|
+
|
|
174
|
+
Fullstack の `packages/<project>-serv/config/` は `_core`、`_serv`、`_db`、`_cache`、`_iam`、`_storage`、`_audit`、`_reach`、`_ai`、`_vecdb`、`_payment`、`_scheduler`、`_deploy` の 13 個の `.yml` を常に生成します。使用するモジュールは既定値を有効にし、未使用のモジュール、任意項目、代替 Provider はコメントとして残します。`.env.example` も未使用モジュールの認証情報をコメントで示し、作成時に指定した設定値を保持します。
|
|
175
|
+
|
|
176
|
+
拡張時はサービスの workspace に必要なパッケージを追加し、`src/server/runtime.ts` で公開 Schema による検証、初期化、逆順の終了処理を実装してから設定を有効にします。全体がコメントのファイルは外側のコメントを一層外し、任意ブロックは必要なものだけ有効にします。設定ファイルの存在だけでは業務機能は接続されません。SQLite/Redis/S3 や Reach Provider の切り替え時は既存の接続ブロックを置き換え、Provider 名を重複させません。`crypto.init()` は設定引数を取らず、datapipe は純関数のため、架空の YAML は生成しません。
|
|
177
|
+
|
|
162
178
|
全テンプレートは `_core.yml` から `name`、`version`、`env`、`defaultLocale`、`logging` を読み、`core.config` でメタ情報を取得して `core.logger` を使います。単一アプリの設定は `config/`、API workspace は `apps/<project>-service/config/`、fullstack は `packages/<project>-serv/config/` にあります。ログレベルと形式は YAML で決め、初期化で固定の `logging` を指定して上書きしません。
|
|
163
179
|
|
|
164
180
|
Core の環境変数上書きには `HAI_CORE_NAME`、`HAI_CORE_VERSION`、`HAI_CORE_ENV`、`HAI_CORE_LOGGING_LEVEL` を使えます。`HAI_CORE` 全体の上書きは親ノード優先です。サーバー設定の変更後はサービスを再起動します。コンテナは `HAI_CORE_ENV=production` を明示し、この値で本番の安全ポリシーを有効にします。
|
|
165
181
|
|
|
166
182
|
SvelteKit のサーバー layout は名称、バージョン、環境、既定言語など公開メタ情報のホワイトリストのみを渡します。単独 mobile-app の Vite 設定は Node ビルド時に core で YAML を解析し、公開値とブラウザーログレベル・形式を注入するため、YAML や上書き変数を変えたら再ビルドが必要です。Fullstack の画面は暗号化された `app.info` でサーバーの公開メタ情報を取得します。core/モジュール設定全体、秘密情報、ログのマスキング文脈はブラウザーに公開しません。
|
|
167
183
|
|
|
184
|
+
葉の環境変数は YAML に存在するパスだけを上書きします。コメントの項目は先に有効にするか、`HAI_DB`、`HAI_CACHE` などでオブジェクト全体を置き換えます。camelCase は分割せず、`connectTimeout` は `HAI_CACHE_CONNECTTIMEOUT` に対応します。言語一覧は各フロントエンド/shared の `project.inlang/settings.json` で管理し、`_core.yml` は既定言語のみを指定します。
|
|
185
|
+
|
|
186
|
+
Fullstack が自動生成する `.env` は初期管理者パスワードと `PUBLIC_API_BASE` のみ有効にします。モジュールの環境変数上書きはコメントとして残し、YAML を既定値の元にします。必要な環境変数だけを明示的に有効にし、YAML 編集時は既存の上書きも確認します。
|
|
187
|
+
|
|
168
188
|
## 共通オプション
|
|
169
189
|
|
|
170
190
|
| オプション | 説明 |
|
|
@@ -251,6 +271,10 @@ pnpm --filter @h-ai/cli test:watch
|
|
|
251
271
|
pnpm --filter @h-ai/cli test:coverage
|
|
252
272
|
```
|
|
253
273
|
|
|
274
|
+
Admin/fullstack の門禁では実際にインストールしたローカル tarball の公開型と動作も検証します:ストリーム/checksum/上書き拒否、API Key scope/失効、現在の認可、ユーザー一括/ロールページ検索、Reach テンプレート、Audit ページ情報。fullstack は信頼できる接続元 IP も検証します。
|
|
275
|
+
|
|
276
|
+
成功時のスクリーンショットは CLI の `test-results/scaffold-evidence/` に保存します。`HAI_AUTH_EVIDENCE_DIR` で保存先を指定でき、生成プロジェクトの削除後も残ります。fullstack E2E は選択した全 Web/App/Desktop のブラウザープレビューでログイン、ガイド、ヘルプ、個人設定を検証します。小程序とネイティブシェルは各プラットフォームで別途検証します。
|
|
277
|
+
|
|
254
278
|
## License
|
|
255
279
|
|
|
256
280
|
Apache-2.0
|
package/README.md
CHANGED
|
@@ -23,9 +23,15 @@
|
|
|
23
23
|
|
|
24
24
|
CLI 从 `templates/skills/` 将所选 skill 的完整目录复制到生成项目 `.agents/skills/`。`SKILL.md` 提供能力边界和任务导航,`reference.md`/`guide.md` 保留按需范本;同步时不能只复制入口。AGENTS.md 保存应用约束,Claude/Copilot 桥接文件引用它;修改模板需同步相关仓库 skills。模板生成测试会核对参考文件的完整交付。
|
|
25
25
|
|
|
26
|
+
所有应用类型均交付 `hai-spec-review`:生成前严格检查需求/设计文档的完备性、歧义、技术及框架使用错误、命名一致性,给出带位置和修正建议的问题清单;问题解决且证据充分后才判定可以进入 AI 生成。`hai init` / `hai add` 同时为已有项目补齐该工作流 skill,保留自定义文件。
|
|
27
|
+
|
|
28
|
+
审查后的文档实施使用独立的 `hai-spec-implement`,同样交付到所有应用并由 `hai init` / `hai add` 补齐。AI 按可独立验收的功能和实际依赖决定是否拆分,默认写入 `docs/task-list.md` 与 `docs/tasks/<编号>-<slug>.md`;每项在独立 Git 分支走 TDD、门禁、本地合并,记录真实合并提交后更新清单。返修复用原任务编号、文件和分支,追加轮次并关联此前证据。流程复用 Markdown、Git 和已有开发/测试 skills,无新增运行依赖或工作流引擎。可以请求“只根据 docs/需求.md 拆分任务”“根据该文档生成代码”“执行 T003”或“T002 返修后合并”;仅规划时不实施,指定任务先核验依赖,远端操作依实际授权。
|
|
29
|
+
|
|
26
30
|
日常新增、修改、修复功能由 `AGENTS.md` 引导读取 `hai-app-create/SKILL.md` 与 `development.md`:先把需求映射到框架现成功能、配置和扩展点,再依据当前安装版本的 exports/类型实现。适用能力优先复用;能力不足时说明具体缺口,不为模块覆盖率安装无关依赖。Codex 使用 `.agents/skills/`,仍需遵循项目根 `AGENTS.md` 的常驻规则。
|
|
27
31
|
|
|
28
|
-
工具入口共享同一份规则与技能:Codex/Cursor 使用 AGENTS 与 `.agents/skills/`;Copilot
|
|
32
|
+
工具入口共享同一份规则与技能:Codex/Cursor 使用 AGENTS 与 `.agents/skills/`;Copilot 的 `.github/copilot-instructions.md` 只引用共享 `AGENTS.md`,不另保存各应用类型规则;OpenCode 的 opencode.json 通过 `instructions: ["AGENTS.md"]` 直接引用共享规则。Claude Code 的根 CLAUDE.md 仅包含 `@AGENTS.md`,通过共享规则的任务导航按需读取 `.agents/skills/` 正文和参考文件。CLI 不创建 `.claude/`,无需重复技能或符号链接。此模式不提供 Claude 原生技能自动发现或 `/skill` 命令;项目已有的 Claude 设置与技能保留。依据:[Claude 项目指引](https://code.claude.com/docs/en/memory)、[Claude 原生 skills](https://code.claude.com/docs/en/skills)、[Copilot](https://docs.github.com/en/copilot/concepts/agents/about-agent-skills)、[OpenCode](https://docs.opencode.ai/docs/skills/)、[Cursor](https://cursor.com/docs/skills)。
|
|
33
|
+
|
|
34
|
+
Codex 原生发现 `.agents/skills/` 并按任务自动选择,也可显式输入 `$hai-app-create`、`$hai-app-review` 等名称调用;入口和参考文件保持按需读取。无需额外 `.codex/skills` 或 Copilot 设置。依据:[Codex skills](https://learn.chatgpt.com/docs/build-skills)、[AGENTS.md](https://learn.chatgpt.com/docs/agent-configuration/agents-md)。
|
|
29
35
|
|
|
30
36
|
Claude Code v2.1.277 起也可直接读取根 `AGENTS.md`(没有更高优先级项目 CLAUDE 文件且相关内置插件启用时)。保留这一行导入可兼容旧版及未开启该能力的会话,官方说明导入不会重复加载规则;仍无须 `.claude/` 目录。参见 [AGENTS.md 支持](https://code.claude.com/docs/en/memory#agentsmd)。
|
|
31
37
|
|
|
@@ -56,6 +62,8 @@ PowerShell 中使用 `pnpm.cmd add -g @h-ai/cli`。已安装 CLI 时,执行相
|
|
|
56
62
|
|
|
57
63
|
生成项目的 `@h-ai/*` 依赖固定为 CLI 对应版本;pnpm 通过 `catalog:` 引用该精确版本。升级时统一更新框架包并验证 lockfile 中实际解析的版本。
|
|
58
64
|
|
|
65
|
+
在应用仓库对 AI 说“升级 Hai-framework 到最新版本”,项目入口会引导读取 [hai-framework-sync](templates/skills/hai-framework-sync/SKILL.md):在线确认发布版本、比较累计差异与应用影响,需要用户选择或处理阻塞时提示,随后迁移依赖/代码/配置、合并 skills 与 AI 入口并验证。仅要求比较时不会修改应用。`hai init` / `hai add` 为旧项目补齐升级 skill、相邻资源及引用的 CI/PR 流程技能,即使无法识别原模板也会交付;已有文件保留,旧版 skill 及入口仍须合并。
|
|
66
|
+
|
|
59
67
|
创建提示直接输出到终端;安装失败会显示包管理器命令、退出码和 stdout/stderr,已生成文件保留,可进入目录重试安装。`prebuild-install@7.1.3` 的弃用警告来自 `better-sqlite3` 的上游安装依赖,单独的警告不会令安装失败;不要为隐藏警告覆盖或删除原生安装器。
|
|
60
68
|
|
|
61
69
|
```bash
|
|
@@ -135,6 +143,8 @@ hai g:model order
|
|
|
135
143
|
|
|
136
144
|
## Fullstack mini 管理后台
|
|
137
145
|
|
|
146
|
+
默认管理界面启用 `@h-ai/ui/guide` 新手引导与帮助中心:首次邀请、页面逐步高亮、搜索使用说明、手动重看和个人设置导览。Web/App/Desktop 共用 guide-store 和业务翻译,Web 用 Cookie、原生 WebView 用 localStorage,按用户和引导版本记录。新增页面只需补共享内容与 data-guide 锚点,见 [引导 skill](templates/skills/hai-ui/guide.md)。
|
|
147
|
+
|
|
138
148
|
`--type fullstack` 默认生成包含 IAM、reldb、cache、audit、storage、crypto 的管理工程;即使选择 minimal,管理所需模块也会保留。`--frontends` 选择 Web、Capacitor App 和 Tauri Desktop;miniapp 仍是说明占位,不参与运行或构建。
|
|
139
149
|
|
|
140
150
|
```powershell
|
|
@@ -159,10 +169,20 @@ Web/App/Desktop 复用同一个 `AdminWorkspace`、management store 和 typed cl
|
|
|
159
169
|
|
|
160
170
|
## 应用配置与显示
|
|
161
171
|
|
|
172
|
+
所有生成项目的 `.gitignore` 都包含 `**/data/`,忽略根目录及嵌套 workspace 的运行数据,包括 `.gitkeep`;运行时会创建需要的数据目录。
|
|
173
|
+
|
|
174
|
+
Fullstack 的 `packages/<project>-serv/config/` 始终保留 13 份配置:`_core`、`_serv`、`_db`、`_cache`、`_iam`、`_storage`、`_audit`、`_reach`、`_ai`、`_vecdb`、`_payment`、`_scheduler`、`_deploy`(均为 `.yml`)。已用模块保留有效默认值,未启用模块整份注释,各模块的可选字段和替代 Provider 也以注释保留。`.env.example` 同时提供未启用模块的注释凭据示例。创建时填写的模块选项会保留。
|
|
175
|
+
|
|
176
|
+
扩展时先在服务端 workspace 安装所需模块,在 `src/server/runtime.ts` 按公开 Schema 校验配置、初始化并反序关闭,再取消所需配置的注释。整份注释的文件先去掉一层外层注释,可选块继续按需开启;配置文件存在并不等于业务能力已接入。切换 SQLite/Redis/S3 或 Reach Provider 时替换原连接块,同名 Provider 只保留一个。`crypto.init()` 无配置参数,datapipe 是纯函数,不生成虚构的 YAML 配置。
|
|
177
|
+
|
|
162
178
|
所有模板从 `_core.yml` 统一读取 `name`、`version`、`env`、`defaultLocale` 和 `logging`,通过 `core.config` 获取元信息并使用 `core.logger`。单应用配置在 `config/`;API workspace 在 `apps/<project>-service/config/`;fullstack 在 `packages/<project>-serv/config/`。日志级别与格式由 YAML 决定,不在初始化时另写固定 `logging` 覆盖。
|
|
163
179
|
|
|
164
180
|
环境变量可按 core 约定覆盖,如 `HAI_CORE_NAME`、`HAI_CORE_VERSION`、`HAI_CORE_ENV`、`HAI_CORE_LOGGING_LEVEL`;整体 `HAI_CORE` 覆盖遵循父节点优先规则。服务端配置变更后重启服务,容器显式设置 `HAI_CORE_ENV=production`,由该值启用生产安全策略。
|
|
165
181
|
|
|
182
|
+
叶子环境变量只覆盖 YAML 中已有的路径;注释掉的键须先取消注释,或使用 `HAI_DB`、`HAI_CACHE` 等整体对象覆盖。camelCase 不拆词,例如 `connectTimeout` 对应 `HAI_CACHE_CONNECTTIMEOUT`。语言列表由各前端与 shared 的 `project.inlang/settings.json` 维护,`_core.yml` 只配置默认语言。
|
|
183
|
+
|
|
184
|
+
Fullstack 自动生成的 `.env` 默认只启用初始管理员密码和 `PUBLIC_API_BASE`;模块环境覆盖全部保留注释,以 YAML 为默认值来源。需要环境覆盖时显式取消对应变量的注释,修改 YAML 时同步核对已有环境覆盖。
|
|
185
|
+
|
|
166
186
|
SvelteKit 的服务端 layout 只下发名称、版本、环境和默认语言等公开白名单。独立 mobile-app 的 Vite 配置在 Node 构建阶段通过 core 解析 YAML,再注入公开值及浏览器日志级别/格式;修改 YAML 或覆盖变量后需要重新构建。Fullstack 前端通过加密的 `app.info` 获取服务端公开元信息。任何模板都不能把完整 core/模块配置、密钥或日志脱敏上下文注入浏览器。
|
|
167
187
|
|
|
168
188
|
## 全局选项
|
|
@@ -251,6 +271,10 @@ pnpm --filter @h-ai/cli test:watch
|
|
|
251
271
|
pnpm --filter @h-ai/cli test:coverage
|
|
252
272
|
```
|
|
253
273
|
|
|
274
|
+
Admin 与 fullstack 门禁还用实际安装的本地 tarball 验证公开类型和运行行为:流式文件/checksum/拒覆盖、API Key scope 与撤销、当前授权、批量用户/角色分页、Reach 模板路由和 Audit 分页元数据;fullstack 同时验证可信对端 IP。
|
|
275
|
+
|
|
276
|
+
成功截图默认保存在 CLI 的 `test-results/scaffold-evidence/`,可通过 `HAI_AUTH_EVIDENCE_DIR` 指定独立目录,生成项目清理后仍保留。fullstack E2E 启动所有已选 Web/App/Desktop 浏览器预览,并验证各端的登录、导览、帮助与个人设置;小程序和原生壳仍需要对应平台验收。
|
|
277
|
+
|
|
254
278
|
## License
|
|
255
279
|
|
|
256
280
|
Apache-2.0
|