@h-ai/cli 0.1.0-alpha9 → 1.0.0-beta.2
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 +229 -0
- package/README.ja.md +229 -0
- package/README.md +175 -113
- package/dist/chunk-AKV2CQZV.js +1497 -0
- package/dist/chunk-AKV2CQZV.js.map +1 -0
- package/dist/chunk-EF7WOFWZ.js +7557 -0
- package/dist/chunk-EF7WOFWZ.js.map +1 -0
- package/dist/chunk-MUHRBJSW.js +29272 -0
- package/dist/chunk-MUHRBJSW.js.map +1 -0
- package/dist/chunk-ZSDEVXZ7.js +38 -0
- package/dist/{chunk-2H7UOFLK.js.map → chunk-ZSDEVXZ7.js.map} +1 -1
- package/dist/cli-config-templates-HHFHNXBN.js +5 -0
- package/dist/cli-config-templates-HHFHNXBN.js.map +1 -0
- package/dist/cli-skill-templates-PN4FLGBC.js +5 -0
- package/dist/cli-skill-templates-PN4FLGBC.js.map +1 -0
- package/dist/index.js +4444 -554
- package/dist/index.js.map +1 -1
- package/dist/metafile-esm.json +1 -0
- package/dist/src-TEBHR5I5.js +5 -0
- package/dist/src-TEBHR5I5.js.map +1 -0
- package/package.json +35 -15
- package/templates/README.md +56 -114
- package/templates/apps/admin/messages/en-US.json +7 -0
- package/templates/apps/admin/messages/ja-JP.json +40 -0
- package/templates/apps/admin/messages/zh-CN.json +7 -0
- package/templates/apps/admin/src/routes/+layout.svelte.hbs +65 -8
- package/templates/apps/admin/src/routes/+page.svelte.hbs +35 -14
- package/templates/apps/admin/src/routes/admin/+layout.svelte.hbs +54 -22
- package/templates/apps/admin/src/routes/admin/+page.svelte.hbs +33 -24
- package/templates/apps/admin/src/routes/admin/settings/+page.svelte.hbs +16 -13
- package/templates/apps/api/.dockerignore.hbs +25 -0
- package/templates/apps/api/.gitignore.hbs +22 -0
- package/templates/apps/api/.npmrc.hbs +1 -0
- package/templates/apps/api/apps/{{projectName}}-contract/README.md.hbs +39 -0
- package/templates/apps/api/apps/{{projectName}}-contract/package.json.hbs +41 -0
- package/templates/apps/api/apps/{{projectName}}-contract/src/app-contract.ts.hbs +27 -0
- package/templates/apps/api/apps/{{projectName}}-contract/src/app-schemas.ts.hbs +28 -0
- package/templates/apps/api/apps/{{projectName}}-contract/src/index.ts.hbs +5 -0
- package/templates/apps/api/apps/{{projectName}}-contract/src/{{projectName}}-contract.ts.hbs +16 -0
- package/templates/apps/api/apps/{{projectName}}-contract/tests/contract.test.ts.hbs +18 -0
- package/templates/apps/api/apps/{{projectName}}-contract/tsconfig.json.hbs +12 -0
- package/templates/apps/api/apps/{{projectName}}-contract/tsup.config.ts.hbs +11 -0
- package/templates/apps/api/apps/{{projectName}}-contract/vitest.config.ts.hbs +9 -0
- package/templates/apps/api/apps/{{projectName}}-serv/README.md.hbs +60 -0
- package/templates/apps/api/apps/{{projectName}}-serv/config/_core.yml.hbs +17 -0
- package/templates/apps/api/apps/{{projectName}}-serv/config/_serv.yml.hbs +54 -0
- package/templates/apps/api/apps/{{projectName}}-serv/data/.gitkeep.hbs +1 -0
- package/templates/apps/api/apps/{{projectName}}-serv/package.json.hbs +66 -0
- package/templates/apps/api/apps/{{projectName}}-serv/src/app.ts.hbs +119 -0
- package/templates/apps/api/apps/{{projectName}}-serv/src/build-metadata.ts.hbs +7 -0
- package/templates/apps/api/apps/{{projectName}}-serv/src/index.ts.hbs +41 -0
- package/templates/apps/api/apps/{{projectName}}-serv/src/lib/server/init.ts.hbs +165 -0
- package/templates/apps/api/apps/{{projectName}}-serv/src/server/procedures/app-procedures.ts.hbs +57 -0
- package/templates/apps/api/apps/{{projectName}}-serv/src/server/procedures/index.ts.hbs +41 -0
- package/templates/apps/api/apps/{{projectName}}-serv/tests/service.test.ts.hbs +176 -0
- package/templates/apps/api/apps/{{projectName}}-serv/tsconfig.json.hbs +16 -0
- package/templates/apps/api/apps/{{projectName}}-serv/tsup.config.ts.hbs +20 -0
- package/templates/apps/api/apps/{{projectName}}-serv/vitest.config.ts.hbs +12 -0
- package/templates/apps/api/e2e/api-serv.spec.ts.hbs +113 -0
- package/templates/apps/api/e2e/capture-evidence.ts.hbs +23 -0
- package/templates/apps/api/eslint.config.js.hbs +30 -0
- package/templates/apps/api/hai.json.hbs +4 -0
- package/templates/apps/api/images/serv.Dockerfile.hbs +37 -0
- package/templates/apps/api/package.json.hbs +53 -0
- package/templates/apps/api/playwright.config.ts.hbs +67 -0
- package/templates/apps/api/pnpm-workspace.yaml.hbs +40 -0
- package/templates/apps/api/tsconfig.base.json +14 -0
- package/templates/apps/fullstack/.dockerignore.hbs +25 -0
- package/templates/apps/fullstack/.gitignore.hbs +38 -0
- package/templates/apps/fullstack/.npmrc.hbs +1 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/.env.example.hbs +10 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/README.md.hbs +67 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/capacitor.config.ts.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/eslint.config.js.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/index.html.hbs +22 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/messages/en-US.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/messages/ja-JP.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/messages/zh-CN.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/package.json.hbs +86 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/project.inlang/settings.json.hbs +17 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/public/runtime-config.js.hbs +4 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/App.svelte.hbs +59 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/app.css.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/app.d.ts.hbs +8 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/build-metadata.ts.hbs +9 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/lib/capacitor.ts.hbs +19 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/src/main.ts.hbs +21 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/svelte.config.js.hbs +16 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/tsconfig.json.hbs +23 -0
- package/templates/apps/fullstack/apps/{{projectName}}-app/vite.config.ts.hbs +74 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/.env.example.hbs +6 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/README.md.hbs +64 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/eslint.config.js.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/index.html.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/messages/en-US.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/messages/ja-JP.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/messages/zh-CN.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/package.json.hbs +66 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/project.inlang/settings.json.hbs +17 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/App.svelte.hbs +25 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/app.css.hbs +18 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/app.d.ts.hbs +8 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/build-metadata.ts.hbs +9 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src/main.ts.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/Cargo.toml.hbs +33 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/build.rs.hbs +6 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/capabilities/default.json.hbs +16 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/128x128.png +0 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/128x128@2x.png +0 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/32x32.png +0 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/icon.icns +0 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/icons/icon.ico +0 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/src/lib.rs.hbs +91 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/src/main.rs.hbs +8 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/src-tauri/tauri.conf.json.hbs +46 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/svelte.config.js.hbs +14 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/tsconfig.json.hbs +22 -0
- package/templates/apps/fullstack/apps/{{projectName}}-desktop/vite.config.ts.hbs +89 -0
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/README.md.hbs +25 -0
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/messages/en-US.json.hbs +12 -0
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/messages/ja-JP.json.hbs +12 -0
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/messages/zh-CN.json.hbs +12 -0
- package/templates/apps/fullstack/apps/{{projectName}}-miniapp/project.inlang/settings.json.hbs +17 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/README.md.hbs +54 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/eslint.config.js.hbs +20 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/index.html.hbs +21 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/messages/en-US.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/messages/ja-JP.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/messages/zh-CN.json.hbs +7 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/package.json.hbs +53 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/project.inlang/settings.json.hbs +17 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/public/runtime-config.js.hbs +1 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/App.svelte.hbs +18 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/app.css.hbs +18 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/app.d.ts.hbs +8 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/build-metadata.ts.hbs +9 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/src/main.ts.hbs +14 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/svelte.config.js.hbs +16 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/tsconfig.json.hbs +23 -0
- package/templates/apps/fullstack/apps/{{projectName}}-web/vite.config.ts.hbs +76 -0
- package/templates/apps/fullstack/docs/security-configuration.md.hbs +349 -0
- package/templates/apps/fullstack/e2e/fullstack.spec.ts.hbs +988 -0
- package/templates/apps/fullstack/e2e/session-close.spec.ts.hbs +119 -0
- package/templates/apps/fullstack/eslint.config.js.hbs +41 -0
- package/templates/apps/fullstack/hai.json.hbs +11 -0
- package/templates/apps/fullstack/images/serv.Dockerfile.hbs +38 -0
- package/templates/apps/fullstack/images/web/19-runtime-config.envsh.hbs +5 -0
- package/templates/apps/fullstack/images/web/nginx.conf.hbs +24 -0
- package/templates/apps/fullstack/images/web/runtime-config.js.template.hbs +3 -0
- package/templates/apps/fullstack/images/web.Dockerfile.hbs +37 -0
- package/templates/apps/fullstack/package.json.hbs +61 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/README.md.hbs +40 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/package.json.hbs +30 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-contract.ts.hbs +78 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/admin-schemas.ts.hbs +134 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/app-contract.ts.hbs +20 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/app-schemas.ts.hbs +35 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/index.ts.hbs +7 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/src/{{projectName}}-contract.ts.hbs +23 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/tests/contract.test.ts.hbs +31 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/tsconfig.json.hbs +9 -0
- package/templates/apps/fullstack/packages/{{projectName}}-contract/tsup.config.ts.hbs +9 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/README.md.hbs +84 -0
- 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 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_cache.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_core.yml.hbs +22 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_db.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_feedback.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_iam.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_payment.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_reach.yml.hbs +60 -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 +64 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_storage.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/config/_vecdb.yml.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/data/.gitkeep.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/package.json.hbs +62 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/app-server.ts.hbs +115 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/build-metadata.ts.hbs +7 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/index.ts.hbs +40 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/admin-service.ts.hbs +294 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/audit-jobs.ts.hbs +28 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/business-settings.ts.hbs +50 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/messages.ts.hbs +50 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/admin-procedures.ts.hbs +106 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/app-procedures.ts.hbs +49 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/procedures/index.ts.hbs +34 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/runtime.ts.hbs +159 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/src/server/security-roles.ts.hbs +73 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/app-server.test.ts.hbs +505 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/runtime.test.ts.hbs +72 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tests/security.test.ts.hbs +183 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tsconfig.json.hbs +10 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/tsup.config.ts.hbs +18 -0
- package/templates/apps/fullstack/packages/{{projectName}}-serv/vitest.config.ts.hbs +12 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/.gitignore.hbs +10 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/README.md.hbs +97 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/en-US.json.hbs +164 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/ja-JP.json.hbs +164 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/messages/zh-CN.json.hbs +164 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/package.json.hbs +55 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/project.inlang/settings.json.hbs +11 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/index.ts.hbs +7 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/api-client.ts.hbs +94 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/feedback-client.ts.hbs +36 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/sensitive-actions.svelte.ts.hbs +16 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/api/session-recovery.svelte.ts.hbs +4 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AdminWorkspace.svelte.hbs +122 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/AppShell.svelte.hbs +90 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/components/FeedbackEntry.svelte.hbs +86 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/audit.svelte.hbs +94 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/configuration.svelte.hbs +25 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/feedback.svelte.hbs +157 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/roles.svelte.hbs +77 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/settings.svelte.hbs +44 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/pages/users.svelte.hbs +216 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/security/role-label.ts.hbs +12 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/guide-store.ts.hbs +55 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/management-store.svelte.ts.hbs +614 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/src/lib/stores/theme-store.svelte.ts.hbs +23 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/svelte.config.js.hbs +1 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/api-client.test.ts.hbs +150 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/tests/management-store.test.ts.hbs +253 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/tsconfig.json.hbs +17 -0
- package/templates/apps/fullstack/packages/{{projectName}}-shared/vitest.config.ts.hbs +7 -0
- package/templates/apps/fullstack/playwright.config.ts.hbs +114 -0
- package/templates/apps/fullstack/playwright.session-close.config.ts.hbs +18 -0
- package/templates/apps/fullstack/pnpm-workspace.yaml.hbs +38 -0
- package/templates/apps/fullstack/tsconfig.base.json +14 -0
- package/templates/apps/h5/messages/en-US.json +3 -0
- package/templates/apps/h5/messages/ja-JP.json +40 -0
- package/templates/apps/h5/messages/zh-CN.json +3 -0
- package/templates/apps/h5/src/routes/+layout.svelte.hbs +85 -30
- package/templates/apps/h5/src/routes/+page.svelte.hbs +20 -8
- package/templates/apps/h5/src/routes/discover/+page.svelte.hbs +17 -6
- package/templates/apps/h5/src/routes/profile/+page.svelte.hbs +17 -6
- package/templates/apps/mobile-app/.env.hbs +3 -0
- package/templates/apps/{android-app → mobile-app}/capacitor.config.ts.hbs +2 -2
- package/templates/apps/mobile-app/index.html.hbs +14 -0
- package/templates/apps/mobile-app/messages/en-US.json +36 -0
- package/templates/apps/mobile-app/messages/ja-JP.json +36 -0
- package/templates/apps/mobile-app/messages/zh-CN.json +36 -0
- package/templates/apps/mobile-app/public/runtime-config.js +1 -0
- package/templates/apps/mobile-app/src/App.svelte.hbs +153 -0
- package/templates/apps/mobile-app/src/lib/api.ts.hbs +213 -0
- package/templates/apps/mobile-app/src/lib/app-config.ts.hbs +14 -0
- package/templates/apps/{android-app → mobile-app}/src/lib/capacitor.ts +6 -7
- package/templates/apps/mobile-app/src/lib/pages/home.svelte.hbs +58 -0
- package/templates/apps/mobile-app/src/lib/pages/profile.svelte.hbs +13 -0
- package/templates/apps/mobile-app/src/lib/pages/tasks.svelte.hbs +16 -0
- package/templates/apps/mobile-app/src/main.ts.hbs +11 -0
- package/templates/apps/website/messages/en-US.json +4 -2
- package/templates/apps/website/messages/ja-JP.json +34 -0
- package/templates/apps/website/messages/zh-CN.json +4 -2
- package/templates/apps/website/scripts/static-website.mjs.hbs +67 -0
- package/templates/apps/website/src/routes/+layout.svelte.hbs +77 -26
- package/templates/apps/website/src/routes/+layout.ts +3 -0
- package/templates/apps/website/src/routes/+page.svelte.hbs +31 -12
- package/templates/apps/website/src/routes/about/+page.svelte.hbs +11 -6
- package/templates/apps/website/src/routes/api/health/+server.ts +3 -0
- package/templates/apps/website/src/routes/contact/+page.svelte.hbs +44 -34
- package/templates/apps/website/src/routes/services/+page.svelte.hbs +27 -40
- package/templates/base/.dockerignore.hbs +27 -0
- package/templates/base/.gitignore.hbs +41 -0
- package/templates/base/.npmrc.hbs +1 -0
- package/templates/base/e2e/app.spec.ts.hbs +213 -0
- package/templates/base/e2e/helpers.ts +1 -1
- package/templates/base/eslint-rules.js +45 -0
- package/templates/base/eslint.config.js.hbs +34 -0
- package/templates/base/hai.json.hbs +4 -0
- package/templates/base/images/web/nginx.conf.hbs +24 -0
- package/templates/base/images/web.Dockerfile.hbs +72 -0
- package/templates/base/package.json.hbs +125 -49
- package/templates/base/playwright.config.ts +44 -6
- package/templates/base/pnpm-workspace.yaml.hbs +40 -0
- package/templates/base/src/app.css.hbs +40 -0
- package/templates/base/src/app.d.ts.hbs +14 -1
- package/templates/base/src/app.html.hbs +13 -0
- package/templates/base/src/hooks.server.ts.hbs +115 -43
- package/templates/base/src/lib/build-metadata.ts.hbs +7 -0
- package/templates/base/src/lib/server/init.ts.hbs +125 -152
- package/templates/base/src/lib/server/kit-config.ts.hbs +40 -0
- package/templates/base/src/routes/+layout.server.ts.hbs +35 -0
- package/templates/base/static/favicon.png +0 -0
- package/templates/base/svelte.config.js.hbs +84 -5
- package/templates/base/tests/scaffold.test.ts.hbs +102 -0
- package/templates/base/tsconfig.json.hbs +50 -0
- package/templates/base/vite.config.ts.hbs +117 -12
- package/templates/base/vitest.config.ts.hbs +19 -0
- package/templates/features/ai/routes/api/chat/+server.ts +6 -7
- package/templates/features/iam/routes-admin/(auth)/+layout.svelte.hbs +3 -17
- package/templates/features/iam/routes-admin/(auth)/auth/forgot-password/+page.svelte.hbs +10 -0
- package/templates/features/iam/routes-admin/(auth)/auth/login/+page.svelte.hbs +9 -96
- package/templates/features/iam/routes-admin/(auth)/auth/register/+page.svelte.hbs +9 -122
- package/templates/features/iam/routes-admin/(auth)/auth/reset-password/+page.svelte.hbs +10 -0
- package/templates/features/iam/routes-h5/auth/forgot-password/+page.svelte.hbs +10 -0
- package/templates/features/iam/routes-h5/auth/login/+page.svelte.hbs +9 -96
- package/templates/features/iam/routes-h5/auth/register/+page.svelte.hbs +9 -112
- package/templates/features/iam/routes-h5/auth/reset-password/+page.svelte.hbs +10 -0
- package/templates/features/iam/routes-shared/api/auth/captcha/+server.ts.hbs +4 -0
- package/templates/features/iam/routes-shared/api/auth/config/+server.ts +4 -0
- package/templates/features/iam/routes-shared/api/auth/login/+server.ts +1 -29
- package/templates/features/iam/routes-shared/api/auth/login/ldap/+server.ts +4 -0
- package/templates/features/iam/routes-shared/api/auth/login/otp/+server.ts +4 -0
- package/templates/features/iam/routes-shared/api/auth/logout/+server.ts +13 -6
- package/templates/features/iam/routes-shared/api/auth/otp/send/+server.ts +4 -0
- package/templates/features/iam/routes-shared/api/auth/password/renew/+server.ts +5 -0
- package/templates/features/iam/routes-shared/api/auth/password-reset/confirm/+server.ts +4 -0
- package/templates/features/iam/routes-shared/api/auth/password-reset/request/+server.ts +4 -0
- package/templates/features/iam/routes-shared/api/auth/reauthenticate/+server.ts +5 -0
- package/templates/features/iam/routes-shared/api/auth/register/+server.ts +1 -23
- package/templates/features/iam/routes-shared/api/auth/session/close/+server.ts.hbs +4 -0
- package/templates/features/iam/routes-website/auth/forgot-password/+page.svelte.hbs +10 -0
- package/templates/features/iam/routes-website/auth/login/+page.svelte.hbs +11 -0
- package/templates/features/iam/routes-website/auth/register/+page.svelte.hbs +11 -0
- package/templates/features/iam/routes-website/auth/reset-password/+page.svelte.hbs +10 -0
- package/templates/features/payment/routes/api/v1/payment/create/+server.ts +25 -23
- package/templates/features/payment/routes/api/v1/payment/notify/[provider]/+server.ts +5 -2
- package/templates/features/storage/routes/api/upload/+server.ts +10 -8
- package/templates/i18n/project.inlang/settings.json +2 -2
- package/templates/shared/.gitattributes +11 -0
- package/templates/shared/build-metadata.ts +42 -0
- package/templates/shared/container-runtime-config.sh +30 -0
- package/templates/shared/e2e-env.ts +98 -0
- package/templates/shared/hash-router.svelte.ts +83 -0
- package/templates/shared/public-base-path.mjs +19 -0
- package/templates/shared/run-e2e.mjs +104 -0
- package/templates/shared/vite-runtime-config.ts +56 -0
- package/templates/skills/AGENTS.md +75 -16
- package/templates/skills/CLAUDE.md +0 -11
- package/templates/skills/bridges/admin/AGENTS.md +89 -0
- package/templates/skills/bridges/api/AGENTS.md +83 -0
- package/templates/skills/bridges/fullstack/AGENTS.md.hbs +102 -0
- package/templates/skills/bridges/h5/AGENTS.md +88 -0
- package/templates/skills/bridges/mobile-app/AGENTS.md +100 -0
- package/templates/skills/bridges/website/AGENTS.md +88 -0
- package/templates/skills/copilot-instructions.md +3 -59
- package/templates/skills/hai-ai/SKILL.md +44 -715
- package/templates/skills/hai-ai/guide.md +457 -0
- package/templates/skills/hai-ai/reference.md +292 -0
- package/templates/skills/hai-api-client/SKILL.md +26 -339
- package/templates/skills/hai-api-client/reference.md +180 -0
- package/templates/skills/hai-api-contract/SKILL.md +36 -0
- package/templates/skills/hai-api-contract/reference.md +280 -0
- package/templates/skills/hai-app-create/SKILL.md +38 -351
- package/templates/skills/hai-app-create/collaboration.md +52 -0
- package/templates/skills/hai-app-create/development.md +243 -0
- package/templates/skills/hai-app-create/reference.md +376 -0
- package/templates/skills/hai-app-review/SKILL.md +57 -126
- package/templates/skills/hai-app-review/differential.md +34 -0
- package/templates/skills/hai-app-tests/SKILL.md +34 -454
- package/templates/skills/hai-app-tests/reference.md +462 -0
- package/templates/skills/hai-app-tests/validation.md +42 -0
- package/templates/skills/hai-audit/SKILL.md +37 -122
- package/templates/skills/hai-audit/reference.md +184 -0
- package/templates/skills/hai-build/SKILL.md +62 -315
- package/templates/skills/hai-build/paths.md +30 -0
- package/templates/skills/hai-build/reference.md +353 -0
- package/templates/skills/hai-cache/SKILL.md +26 -175
- package/templates/skills/hai-cache/reference.md +229 -0
- package/templates/skills/hai-capacitor/SKILL.md +24 -364
- package/templates/skills/hai-capacitor/reference.md +358 -0
- package/templates/skills/hai-change-plan/SKILL.md +46 -0
- package/templates/skills/hai-ci/SKILL.md +114 -0
- package/templates/skills/hai-core/SKILL.md +31 -469
- package/templates/skills/hai-core/reference.md +557 -0
- package/templates/skills/hai-core/request-access.md +65 -0
- package/templates/skills/hai-crypto/SKILL.md +29 -180
- package/templates/skills/hai-crypto/reference.md +317 -0
- package/templates/skills/hai-datapipe/SKILL.md +24 -207
- package/templates/skills/hai-datapipe/reference.md +204 -0
- package/templates/skills/hai-deploy/SKILL.md +53 -178
- package/templates/skills/hai-deploy/credentials.md +19 -0
- package/templates/skills/hai-deploy/middleware.md +129 -0
- package/templates/skills/hai-feedback/SKILL.md +85 -0
- package/templates/skills/hai-framework-sync/SKILL.md +105 -0
- package/templates/skills/hai-framework-sync/sync.md +49 -0
- package/templates/skills/hai-iam/SKILL.md +53 -325
- package/templates/skills/hai-iam/reference.md +535 -0
- package/templates/skills/hai-kit/SKILL.md +33 -329
- package/templates/skills/hai-kit/reference.md +202 -0
- package/templates/skills/hai-payment/SKILL.md +28 -262
- package/templates/skills/hai-payment/reference.md +295 -0
- package/templates/skills/hai-pr-review/SKILL.md +41 -0
- package/templates/skills/hai-reach/SKILL.md +28 -300
- package/templates/skills/hai-reach/reference.md +363 -0
- package/templates/skills/hai-reldb/SKILL.md +28 -449
- package/templates/skills/hai-reldb/reference.md +500 -0
- package/templates/skills/hai-scheduler/SKILL.md +26 -174
- package/templates/skills/hai-scheduler/reference.md +216 -0
- package/templates/skills/hai-serv/SKILL.md +60 -0
- package/templates/skills/hai-serv/reference.md +792 -0
- package/templates/skills/hai-spec-implement/SKILL.md +50 -0
- package/templates/skills/hai-spec-implement/changes.md +67 -0
- package/templates/skills/hai-spec-implement/evaluation.md +18 -0
- package/templates/skills/hai-spec-implement/handoff.md +47 -0
- package/templates/skills/hai-spec-implement/templates.md +117 -0
- package/templates/skills/hai-spec-implement/workflow.md +56 -0
- package/templates/skills/hai-spec-review/SKILL.md +57 -0
- package/templates/skills/hai-spec-review/checklist.md +71 -0
- package/templates/skills/hai-storage/SKILL.md +31 -262
- package/templates/skills/hai-storage/reference.md +284 -0
- package/templates/skills/hai-ui/SKILL.md +62 -238
- package/templates/skills/hai-ui/guide.md +81 -0
- package/templates/skills/hai-ui/reference.md +705 -0
- package/templates/skills/hai-ui-design/SKILL.md +31 -0
- package/templates/skills/hai-ui-design/patterns.md +31 -0
- package/templates/skills/hai-ui-review/SKILL.md +32 -0
- package/templates/skills/hai-ui-review/checklist.md +29 -0
- package/templates/skills/hai-vecdb/SKILL.md +25 -267
- package/templates/skills/hai-vecdb/reference.md +325 -0
- package/templates/skills/opencode.json +0 -5
- package/dist/chunk-2H7UOFLK.js +0 -10
- package/dist/chunk-LANIDJC7.js +0 -659
- package/dist/chunk-LANIDJC7.js.map +0 -1
- package/dist/chunk-YV7WPUI6.js +0 -206
- package/dist/chunk-YV7WPUI6.js.map +0 -1
- package/dist/config-templates-S5RI2MC6.js +0 -5
- package/dist/config-templates-S5RI2MC6.js.map +0 -1
- package/dist/skill-templates-N5DU5FNX.js +0 -5
- package/dist/skill-templates-N5DU5FNX.js.map +0 -1
- package/dist/src-XJ6YXNAF.js +0 -15030
- package/dist/src-XJ6YXNAF.js.map +0 -1
- package/templates/apps/android-app/.env.hbs +0 -3
- package/templates/apps/android-app/messages/en-US.json +0 -24
- package/templates/apps/android-app/messages/zh-CN.json +0 -24
- package/templates/apps/android-app/src/lib/api.ts.hbs +0 -30
- package/templates/apps/android-app/src/routes/+layout.svelte.hbs +0 -42
- package/templates/apps/android-app/src/routes/+layout.ts +0 -7
- package/templates/apps/android-app/src/routes/+page.svelte.hbs +0 -27
- package/templates/apps/api/src/routes/+layout.svelte +0 -14
- package/templates/apps/api/src/routes/+page.svelte +0 -11
- package/templates/apps/api/src/routes/api/v1/health/+server.ts +0 -14
- package/templates/apps/api/src/routes/api/v1/items/+server.ts +0 -37
- package/templates/apps/api/src/routes/api/v1/items/[id]/+server.ts +0 -30
- package/templates/base/src/app.css +0 -2
- package/templates/base/tsconfig.json +0 -8
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
> 管理后台项目 AI 编程助手入口。优先结合 `README.md`、`.agents/skills/`、`src/routes/`、`src/lib/server/` 与 `messages/*` 工作。
|
|
4
|
+
|
|
5
|
+
## 需求与模板
|
|
6
|
+
|
|
7
|
+
- 业务行为以用户当前明确要求及其指定的需求/设计文档为准。本文件、README、skills、示例、生成代码及其测试中的模板默认行为是起点,不是不可变的业务约束;角色代码、权限模型、页面流程、字段、限额、存储方式与架构均可按实际需求调整。
|
|
8
|
+
- 需求与模板不同,审查时记录为模板适配项,不据此判定需求错误或阻塞审查,也不要求用户额外授权“覆盖模板”;实施时在已有授权范围内修改或移除冲突逻辑,并同步 contract、鉴权、数据迁移、界面、配置、测试、文档及本文件中的过期规则。
|
|
9
|
+
- 未说明的行为可参考现有实现并注明假设,不能升级为强制需求。只有业务要求自身矛盾、与已确认项目决策的优先级不明,或存在真实技术/安全障碍时才提出具体问题;已明确的规则不重复要求选择。
|
|
10
|
+
- 业务规则与技术契约分别判断:可用 API 以当前安装版本的公开类型为准;输入校验、服务端授权、资源隔离和密钥保护仍须落实。需求涉及替换技术方案时说明影响并同步迁移,不能用保留模板默认值代替解决问题。
|
|
11
|
+
|
|
12
|
+
## 行为契约
|
|
13
|
+
|
|
14
|
+
涉及框架结构、配置、核心流程或模块边界变更时,先按 [变更影响与方案确认](.agents/skills/hai-change-plan/SKILL.md) 说明影响并等待用户决定;已确认且未扩大的方案继续执行。
|
|
15
|
+
|
|
16
|
+
需求/设计文档审查或从文档生成代码时,读取 [hai-spec-review](.agents/skills/hai-spec-review/SKILL.md),严格确认完备性、歧义、技术正确性与命名一致性;影响行为的问题未解决前不判定文档可生成。普通小改动不重审无关文档。
|
|
17
|
+
|
|
18
|
+
升级 hai-framework 到最新/指定版本、比较版本差异或同步框架 skills 时,先读 [框架升级与同步 Skill](.agents/skills/hai-framework-sync/SKILL.md),执行版本发现、差异分析、用户选择/阻塞处理、迁移与验证;仅要求比较时不修改应用。
|
|
19
|
+
|
|
20
|
+
根据文档规划、实施、继续、返修或按已提交文档变更同步实现时,读取 [hai-spec-implement](.agents/skills/hai-spec-implement/SKILL.md):维护 docs 清单与任务记录,比较已验收与目标文档 Git 快照,更新原任务或新建任务,每项独立分支 TDD、验证并本地合并;全部差异与整体验收通过后才推进基线。返修复用原任务与分支。仅规划不实施,指定任务先核验依赖。
|
|
21
|
+
|
|
22
|
+
普通新增、修改、修复任务开始前,先读 [应用开发 Skill](.agents/skills/hai-app-create/SKILL.md) 和 [开发规范与框架能力路由](.agents/skills/hai-app-create/development.md);再按任务读取模块 Skill 及其相邻参考文件。架构/构建、审查、测试分别读取 hai-build、hai-app-review、hai-app-tests,不加载整个 skill 树。
|
|
23
|
+
|
|
24
|
+
- 对当前需求逐项检索 hai-framework 能力和已有实现,确认适用的公开 API 后优先复用;未安装模块先核对依赖与配置,不能因 Skill 已存在就假定已启用。框架不适用时说明具体限制与选用方案,不为覆盖清单引入无关模块。
|
|
25
|
+
- 按已安装版本的公开类型确认模块契约:生命周期模块按 init → use → close;core/serv/kit、纯函数/工厂与流按实际签名处理。返回 HaiResult 的操作先检查 success,不以 try/catch 代替判断;事务失败明确触发回滚。
|
|
26
|
+
- 边界输入做 schema 校验,服务端验证身份、租户与资源权限;SQL 动态值参数化,文件路径防逃逸。密钥不进入 PUBLIC_/VITE_ 变量、客户端代码和日志;敏感 token 不写 localStorage。
|
|
27
|
+
- 禁止 any、无说明的 as unknown as、console.log 和硬编码密钥;从包公开入口导入。注释中文、结构化日志英文并脱敏,用户文本走现有 i18n 并同步所有 locale。
|
|
28
|
+
- 完成时说明实际复用的框架能力、未采用的相关能力及原因、门禁结果;跨边界同步类型、配置、调用方、文档和测试。
|
|
29
|
+
|
|
30
|
+
先读 README、package.json、相关实现/测试和所需 .agents/skills;不要加载整个 skill 树。新增抽象前确认复用路径与真实需求;保留用户改动。跨文件任务简述影响和验证计划,无须固定规模标签或重复问卷。
|
|
31
|
+
|
|
32
|
+
- 直接影响:哪些 `+page.svelte`、`+layout.svelte`、`+page.server.ts`、`+server.ts`、service、messages、README、测试会变。
|
|
33
|
+
- 间接影响:哪些角色权限、导航入口、共享组件、表单流程和依赖模块需要同步。
|
|
34
|
+
|
|
35
|
+
## 项目定位
|
|
36
|
+
|
|
37
|
+
本项目是 hai-framework 管理后台:SvelteKit 负责路由、页面、`hooks.server.ts` 和 API 端点;IAM、数据库、缓存等能力通过 `@h-ai/*` 模块初始化后使用。
|
|
38
|
+
|
|
39
|
+
## 架构边界
|
|
40
|
+
|
|
41
|
+
- 页面组件、layout、load 只负责渲染、权限态拼装和请求编排;业务逻辑放在 `src/lib/server/services` 或模块 API。
|
|
42
|
+
- 认证授权使用 `@h-ai/iam` / `@h-ai/kit`;Web token 优先 httpOnly cookie。
|
|
43
|
+
- 所有用户可见文本走 `$lib/paraglide/messages.js`,同步 `messages/zh-CN.json`、`messages/en-US.json`、`messages/ja-JP.json`。
|
|
44
|
+
- API 边界必须做 Zod 校验,HaiResult 错误用 kit response 转换。
|
|
45
|
+
- `+server.ts` 只能导出 handler 和 SvelteKit 允许的配置项;helper 放到 `src/lib/server/**`。
|
|
46
|
+
- 本样板默认不使用 `@h-ai/serv`、`@h-ai/api-contract`、`@h-ai/api-client`、`@h-ai/capacitor` 作为主架构。
|
|
47
|
+
|
|
48
|
+
## 工作流程
|
|
49
|
+
|
|
50
|
+
1. 先搜索现有路由、service、共享组件、messages 和测试。
|
|
51
|
+
2. 变更权限、登录、会话、导航或 CRUD 页面时,优先扩展现有 service / component,而不是临时散落逻辑。
|
|
52
|
+
3. 修改页面、API、认证流程后,同步测试、README 和 i18n。
|
|
53
|
+
|
|
54
|
+
页面统一继承根布局的 header/footer;新增页面沿用 SvelteKit 自动文件路由,刷新定位及服务端 load/鉴权保持一致。
|
|
55
|
+
|
|
56
|
+
## 代码注释与示例
|
|
57
|
+
|
|
58
|
+
- 尽可能补充有信息量的中文 JSDoc:所有 export 的函数/类/方法、核心算法与业务流程、所有数据库表/列、接口/type/schema 及其字段都必须说明用途、单位、约束和关联关系。核心逻辑解释决策原因、边界、权限与失败路径,不逐行复述代码。
|
|
59
|
+
- 函数按实际契约写 @param、@returns,仅确实抛错时写 @throws;异步、HaiResult 与事务失败行为须说明。类型/表结构说明字段含义、可空性、默认值、主外键和唯一约束。
|
|
60
|
+
- 上述函数和结构的 JSDoc 均提供可理解的 @example:函数给调用及结果判断,结构给合法数据,表给典型行或查询示例。省略上下文要标明,不使用真实凭据。示例随实现同步,不能只堆叠没有信息量的注释。
|
|
61
|
+
- 调用及结构示例见 [.agents/skills/hai-app-create/development.md](.agents/skills/hai-app-create/development.md) 的 JSDoc 注释一节。
|
|
62
|
+
|
|
63
|
+
## 质量门禁
|
|
64
|
+
|
|
65
|
+
先核对 package.json,按 [分轮验证与集中修复](.agents/skills/hai-app-tests/validation.md) 收集适用检查与日志,再归并修复、复测失败及受影响项;普通失败不中断独立检查,真实前置阻塞才暂停依赖项。文档检查引用,UI/路由变更加 E2E,未运行项说明原因。
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm typecheck
|
|
69
|
+
pnpm lint
|
|
70
|
+
pnpm build
|
|
71
|
+
pnpm test
|
|
72
|
+
pnpm test:e2e
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 完成条件
|
|
76
|
+
|
|
77
|
+
- 修改页面、API、认证流程时同步测试、README 和 i18n。
|
|
78
|
+
- 修改公共模块用法或共享组件时,全局检索并同步依赖方。
|
|
79
|
+
- 最终回复说明门禁状态、已更新页面 / API / 文档与未完成项。
|
|
80
|
+
|
|
81
|
+
## 优先 Skills
|
|
82
|
+
|
|
83
|
+
- `hai-build`、`hai-app-create`、`hai-app-review`、`hai-app-tests`
|
|
84
|
+
- `hai-kit`、`hai-ui`、`hai-iam`、`hai-reldb`、`hai-cache`、`hai-crypto`
|
|
85
|
+
- 其它 `hai-*` 模块按需读取
|
|
86
|
+
|
|
87
|
+
前端页面先按 [hai-ui-design](.agents/skills/hai-ui-design/SKILL.md) 确定任务、布局、状态与组件映射,使用 [hai-ui](.agents/skills/hai-ui/SKILL.md) 实现,再由 [hai-ui-review](.agents/skills/hai-ui-review/SKILL.md) 检查真实页面。窄范围修改复用已有设计;按实际语言/主题/尺寸验证。
|
|
88
|
+
|
|
89
|
+
工作流技能按 hai-领域-动作 命名,能力使用类沿用领域名。需求、验收、发现与当前版本证据按 [工作交接契约](.agents/skills/hai-spec-implement/handoff.md) 传递,沿既有清单恢复任务。
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
> API 服务项目 AI 编程助手入口。优先结合 `README.md`、`.agents/skills/`、`apps/*-contract/src/**`、`apps/*-serv/src/**` 与测试工作。
|
|
4
|
+
|
|
5
|
+
## 需求与模板
|
|
6
|
+
|
|
7
|
+
- 业务行为以用户当前明确要求及其指定的需求/设计文档为准。本文件、README、skills、示例、生成代码及其测试中的模板默认行为是起点,不是不可变的业务约束;角色代码、权限模型、页面流程、字段、限额、存储方式与架构均可按实际需求调整。
|
|
8
|
+
- 需求与模板不同,审查时记录为模板适配项,不据此判定需求错误或阻塞审查,也不要求用户额外授权“覆盖模板”;实施时在已有授权范围内修改或移除冲突逻辑,并同步 contract、鉴权、数据迁移、界面、配置、测试、文档及本文件中的过期规则。
|
|
9
|
+
- 未说明的行为可参考现有实现并注明假设,不能升级为强制需求。只有业务要求自身矛盾、与已确认项目决策的优先级不明,或存在真实技术/安全障碍时才提出具体问题;已明确的规则不重复要求选择。
|
|
10
|
+
- 业务规则与技术契约分别判断:可用 API 以当前安装版本的公开类型为准;输入校验、服务端授权、资源隔离和密钥保护仍须落实。需求涉及替换技术方案时说明影响并同步迁移,不能用保留模板默认值代替解决问题。
|
|
11
|
+
|
|
12
|
+
## 行为契约
|
|
13
|
+
|
|
14
|
+
涉及框架结构、配置、核心流程或模块边界变更时,先按 [变更影响与方案确认](.agents/skills/hai-change-plan/SKILL.md) 说明影响并等待用户决定;已确认且未扩大的方案继续执行。
|
|
15
|
+
|
|
16
|
+
需求/设计文档审查或从文档生成代码时,读取 [hai-spec-review](.agents/skills/hai-spec-review/SKILL.md),严格确认完备性、歧义、技术正确性与命名一致性;影响行为的问题未解决前不判定文档可生成。普通小改动不重审无关文档。
|
|
17
|
+
|
|
18
|
+
升级 hai-framework 到最新/指定版本、比较版本差异或同步框架 skills 时,先读 [框架升级与同步 Skill](.agents/skills/hai-framework-sync/SKILL.md),执行版本发现、差异分析、用户选择/阻塞处理、迁移与验证;仅要求比较时不修改应用。
|
|
19
|
+
|
|
20
|
+
根据文档规划、实施、继续、返修或按已提交文档变更同步实现时,读取 [hai-spec-implement](.agents/skills/hai-spec-implement/SKILL.md):维护 docs 清单与任务记录,比较已验收与目标文档 Git 快照,更新原任务或新建任务,每项独立分支 TDD、验证并本地合并;全部差异与整体验收通过后才推进基线。返修复用原任务与分支。仅规划不实施,指定任务先核验依赖。
|
|
21
|
+
|
|
22
|
+
普通新增、修改、修复任务开始前,先读 [应用开发 Skill](.agents/skills/hai-app-create/SKILL.md) 和 [开发规范与框架能力路由](.agents/skills/hai-app-create/development.md);再按任务读取模块 Skill 及其相邻参考文件。架构/构建、审查、测试分别读取 hai-build、hai-app-review、hai-app-tests,不加载整个 skill 树。
|
|
23
|
+
|
|
24
|
+
- 对当前需求逐项检索 hai-framework 能力和已有实现,确认适用的公开 API 后优先复用;未安装模块先核对依赖与配置,不能因 Skill 已存在就假定已启用。框架不适用时说明具体限制与选用方案,不为覆盖清单引入无关模块。
|
|
25
|
+
- 按已安装版本的公开类型确认模块契约:生命周期模块按 init → use → close;core/serv/kit、纯函数/工厂与流按实际签名处理。返回 HaiResult 的操作先检查 success,不以 try/catch 代替判断;事务失败明确触发回滚。
|
|
26
|
+
- 边界输入做 schema 校验,服务端验证身份、租户与资源权限;SQL 动态值参数化,文件路径防逃逸。密钥不进入 PUBLIC_/VITE_ 变量、客户端代码和日志;敏感 token 不写 localStorage。
|
|
27
|
+
- 禁止 any、无说明的 as unknown as、console.log 和硬编码密钥;从包公开入口导入。注释中文、结构化日志英文并脱敏,用户文本走现有 i18n 并同步所有 locale。
|
|
28
|
+
- 完成时说明实际复用的框架能力、未采用的相关能力及原因、门禁结果;跨边界同步类型、配置、调用方、文档和测试。
|
|
29
|
+
|
|
30
|
+
先读 README、package.json、相关实现/测试和所需 .agents/skills;不要加载整个 skill 树。新增抽象前确认复用路径与真实需求;保留用户改动。跨文件任务简述影响和验证计划,无须固定规模标签或重复问卷。
|
|
31
|
+
|
|
32
|
+
- 直接影响:哪些 `apps/*-contract`、`apps/*-serv`、config、README、测试会变。
|
|
33
|
+
- 间接影响:哪些 typed client、部署脚本、环境变量说明和断言需要同步。
|
|
34
|
+
|
|
35
|
+
## 项目定位
|
|
36
|
+
|
|
37
|
+
本项目是 hai-framework API workspace:`apps/<project>-contract` 提供 typed contract,`apps/<project>-serv` 提供 `@h-ai/serv` 实现,无 UI 页面和前端 i18n。
|
|
38
|
+
|
|
39
|
+
## 架构边界
|
|
40
|
+
|
|
41
|
+
- API 输入输出必须由 `apps/*-contract/src/**` 中的 Zod schema 与 contract 定义统一约束。
|
|
42
|
+
- 当前 Service 通过 `@h-ai/serv` + `@h-ai/api-contract` 装配 HTTP App;保留此架构时不混入 SvelteKit API routes,需求要求迁移时同步入口、contract、调用方与脚本。
|
|
43
|
+
- Typed client / contract / service 三者保持同一份路径与类型定义,不要复制粘贴接口。
|
|
44
|
+
- 纯 API 需求不生成用户页面或引入 UI 专属依赖;需求增加前端时,按实际架构补充应用及其文案和验证。
|
|
45
|
+
- 配置和密钥来自 `apps/*-serv/config/` 与环境变量,禁止硬编码。
|
|
46
|
+
|
|
47
|
+
## 工作流程
|
|
48
|
+
|
|
49
|
+
1. 先搜索现有 contract、procedures、init、config 和测试。
|
|
50
|
+
2. 修改 contract、响应格式、安全策略或配置时,同步 README、typed client 调用方与测试。
|
|
51
|
+
3. 按改动范围验证,修复本次引入的失败;已有问题与未运行项明确报告。
|
|
52
|
+
|
|
53
|
+
## 代码注释与示例
|
|
54
|
+
|
|
55
|
+
- 尽可能补充有信息量的中文 JSDoc:所有 export 的函数/类/方法、核心算法与业务流程、所有数据库表/列、接口/type/schema 及其字段都必须说明用途、单位、约束和关联关系。核心逻辑解释决策原因、边界、权限与失败路径,不逐行复述代码。
|
|
56
|
+
- 函数按实际契约写 @param、@returns,仅确实抛错时写 @throws;异步、HaiResult 与事务失败行为须说明。类型/表结构说明字段含义、可空性、默认值、主外键和唯一约束。
|
|
57
|
+
- 上述函数和结构的 JSDoc 均提供可理解的 @example:函数给调用及结果判断,结构给合法数据,表给典型行或查询示例。省略上下文要标明,不使用真实凭据。示例随实现同步,不能只堆叠没有信息量的注释。
|
|
58
|
+
- 调用及结构示例见 [.agents/skills/hai-app-create/development.md](.agents/skills/hai-app-create/development.md) 的 JSDoc 注释一节。
|
|
59
|
+
|
|
60
|
+
## 质量门禁
|
|
61
|
+
|
|
62
|
+
先核对 package.json,按 [分轮验证与集中修复](.agents/skills/hai-app-tests/validation.md) 收集适用检查与日志,再归并修复、复测失败及受影响项;普通失败不中断独立检查,真实前置阻塞才暂停依赖项。文档检查引用,UI/路由变更加 E2E,未运行项说明原因。
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
pnpm typecheck
|
|
66
|
+
pnpm lint
|
|
67
|
+
pnpm build
|
|
68
|
+
pnpm test
|
|
69
|
+
pnpm test:e2e
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 完成条件
|
|
73
|
+
|
|
74
|
+
- 修改 contract、procedure、配置或环境变量说明后,同步测试、README 和调用方。
|
|
75
|
+
- 最终回复说明门禁状态、已更新 contract / service / 配置 / 文档与未完成项。
|
|
76
|
+
|
|
77
|
+
## 优先 Skills
|
|
78
|
+
|
|
79
|
+
- `hai-build`、`hai-app-create`、`hai-app-review`、`hai-app-tests`
|
|
80
|
+
- `hai-serv`、`hai-api-contract`、`hai-api-client`
|
|
81
|
+
- `hai-core`、`hai-reldb`、`hai-cache`、`hai-iam`、`hai-crypto`
|
|
82
|
+
|
|
83
|
+
工作流技能按 hai-领域-动作 命名,能力使用类沿用领域名。需求、验收、发现与当前版本证据按 [工作交接契约](.agents/skills/hai-spec-implement/handoff.md) 传递,沿既有清单恢复任务。
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
Fullstack 多包工程入口。先读 README、根 workspace 脚本与相关 package/app;模块用法按需读取 `.agents/skills/*/SKILL.md` 及其引用。
|
|
4
|
+
|
|
5
|
+
## 需求与模板
|
|
6
|
+
|
|
7
|
+
- 业务行为以用户当前明确要求及其指定的需求/设计文档为准。本文件、README、skills、示例、生成代码及其测试中的模板默认行为是起点,不是不可变的业务约束;角色代码、权限模型、页面流程、字段、限额、存储方式与架构均可按实际需求调整。
|
|
8
|
+
- 需求与模板不同,审查时记录为模板适配项,不据此判定需求错误或阻塞审查,也不要求用户额外授权“覆盖模板”;实施时在已有授权范围内修改或移除冲突逻辑,并同步 contract、鉴权、数据迁移、界面、配置、测试、文档及本文件中的过期规则。
|
|
9
|
+
- 未说明的行为可参考现有实现并注明假设,不能升级为强制需求。只有业务要求自身矛盾、与已确认项目决策的优先级不明,或存在真实技术/安全障碍时才提出具体问题;已明确的规则不重复要求选择。
|
|
10
|
+
- 业务规则与技术契约分别判断:可用 API 以当前安装版本的公开类型为准;输入校验、服务端授权、资源隔离和密钥保护仍须落实。需求涉及替换技术方案时说明影响并同步迁移,不能用保留模板默认值代替解决问题。
|
|
11
|
+
|
|
12
|
+
## 行为契约
|
|
13
|
+
|
|
14
|
+
涉及框架结构、配置、核心流程或模块边界变更时,先按 [变更影响与方案确认](.agents/skills/hai-change-plan/SKILL.md) 说明影响并等待用户决定;已确认且未扩大的方案继续执行。
|
|
15
|
+
|
|
16
|
+
需求/设计文档审查或从文档生成代码时,读取 [hai-spec-review](.agents/skills/hai-spec-review/SKILL.md),严格确认完备性、歧义、技术正确性与命名一致性;影响行为的问题未解决前不判定文档可生成。普通小改动不重审无关文档。
|
|
17
|
+
|
|
18
|
+
升级 hai-framework 到最新/指定版本、比较版本差异或同步框架 skills 时,先读 [框架升级与同步 Skill](.agents/skills/hai-framework-sync/SKILL.md),执行版本发现、差异分析、用户选择/阻塞处理、迁移与验证;仅要求比较时不修改应用。
|
|
19
|
+
|
|
20
|
+
根据文档规划、实施、继续、返修或按已提交文档变更同步实现时,读取 [hai-spec-implement](.agents/skills/hai-spec-implement/SKILL.md):维护 docs 清单与任务记录,比较已验收与目标文档 Git 快照,更新原任务或新建任务,每项独立分支 TDD、验证并本地合并;全部差异与整体验收通过后才推进基线。返修复用原任务与分支。仅规划不实施,指定任务先核验依赖。
|
|
21
|
+
|
|
22
|
+
普通新增、修改、修复任务开始前,先读 [应用开发 Skill](.agents/skills/hai-app-create/SKILL.md) 和 [开发规范与框架能力路由](.agents/skills/hai-app-create/development.md);再按任务读取模块 Skill 及其相邻参考文件。架构/构建、审查、测试分别读取 hai-build、hai-app-review、hai-app-tests,不加载整个 skill 树。
|
|
23
|
+
|
|
24
|
+
- 对当前需求逐项检索 hai-framework 能力和已有实现,确认适用的公开 API 后优先复用;未安装模块先核对依赖与配置,不能因 Skill 已存在就假定已启用。框架不适用时说明具体限制与选用方案,不为覆盖清单引入无关模块。
|
|
25
|
+
- 按已安装版本的公开类型确认模块契约:生命周期模块按 init → use → close;core/serv/kit、纯函数/工厂与流按实际签名处理。返回 HaiResult 的操作先检查 success,不以 try/catch 代替判断;事务失败明确触发回滚。
|
|
26
|
+
- 边界输入做 schema 校验,服务端验证身份、租户与资源权限;SQL 动态值参数化,文件路径防逃逸。密钥不进入 PUBLIC_/VITE_ 变量、客户端代码和日志;敏感 token 不写 localStorage。
|
|
27
|
+
- 禁止 any、无说明的 as unknown as、console.log 和硬编码密钥;从包公开入口导入。注释中文、结构化日志英文并脱敏,用户文本走现有 i18n 并同步所有 locale。
|
|
28
|
+
- 完成时说明实际复用的框架能力、未采用的相关能力及原因、门禁结果;跨边界同步类型、配置、调用方、文档和测试。
|
|
29
|
+
|
|
30
|
+
- 修改前检索实现、调用方、测试和文档,优先复用现有 contract、procedure、共享组件与脚本。
|
|
31
|
+
- 跨包变更先明确受影响的 contract、serv、shared、前端及交付流程,再同步调用方;不必输出固定问卷。
|
|
32
|
+
|
|
33
|
+
## 初始架构
|
|
34
|
+
|
|
35
|
+
- 页面统一继承公共 header/footer;新增 SPA 页面放 `packages/{{projectName}}-shared/src/lib/pages/**/*.svelte`,由 `HashRouter` 自动发现。菜单只维护业务入口,不维护路由表。
|
|
36
|
+
|
|
37
|
+
以下为生成时的目录和分层;需求调整架构时同步相关包、脚本与说明,按调整后的实际结构工作。
|
|
38
|
+
|
|
39
|
+
| 路径 | 职责 |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| `packages/{{projectName}}-contract` | API contract、Zod schema 与共享类型 |
|
|
42
|
+
| `packages/{{projectName}}-serv` | 使用 `@h-ai/serv` 实现后端业务 API |
|
|
43
|
+
| `packages/{{projectName}}-shared` | 共享 UI Shell、主题、i18n 和 typed API client |
|
|
44
|
+
| `apps/{{projectName}}-web` | Svelte 5 + Vite Web 前端,按选择生成 |
|
|
45
|
+
| `apps/{{projectName}}-app` | Svelte 5 + Vite + Capacitor 移动端 SPA,按选择生成 |
|
|
46
|
+
| `apps/{{projectName}}-desktop` | Svelte 5 + Vite + Tauri v2 桌面端,按选择生成 |
|
|
47
|
+
| `apps/{{projectName}}-miniapp` | 选择 miniapp 时生成的预留说明与文案,当前不是可运行应用 |
|
|
48
|
+
|
|
49
|
+
- 前端负责 UI 与请求编排;后端业务放 serv,共享能力放 shared。保留当前 Vite SPA 架构时,不混入 SvelteKit load / route 结构;需要迁移时成套调整。
|
|
50
|
+
- 用户文本按 shared 跨端文案与各 app 专属文案分工,同步现有 locale。
|
|
51
|
+
- 本样板默认启用 IAM、reldb、cache、audit、storage 和 crypto,复用现有初始化与关闭顺序;新增模块前先检查依赖、配置与公开契约。
|
|
52
|
+
- 应用名称、版本、环境、日志与 locale 配置通过 core 统一获取;浏览器显示来自服务端 `app.info`,不另写硬编码副本或将私有配置注入客户端。
|
|
53
|
+
|
|
54
|
+
## 初始管理业务
|
|
55
|
+
|
|
56
|
+
这些是可运行示例的默认行为,按实际需求选择保留、修改或移除;不是 hai-framework 对所有应用的要求。
|
|
57
|
+
|
|
58
|
+
- 初始使用 `admin` / `user` 两种角色:管理员进入用户、角色和审计管理,普通用户进入个人设置。角色代码、数量、权限粒度及可访问页面由业务需求决定;更换模型时同步服务端授权、资源范围与各端入口。
|
|
59
|
+
- 初始角色页维护说明并显示人数,用户页分配角色;示例防止管理员自删除、自禁用、自降级及移除最后管理员。是否采用这些流程和保护由需求确定,保留的业务不变量需覆盖并发管理请求。
|
|
60
|
+
- 默认头像接受 PNG/JPEG/WebP,最大 512 KiB;普通用户更新自己的头像,管理员可替用户更新。格式、限额和操作主体可调整,contract、客户端和服务端保持一致;仍需验证文件内容及资源访问权限,storage key 由服务端生成。
|
|
61
|
+
- 默认用户与审计列表使用页码分页:`page >= 1`、`pageSize` 为 1–100、每页 20 条。分页方式、筛选和上限可按需求调整,同步 schema、procedure、store 和测试。
|
|
62
|
+
- 默认将语言与主题偏好保存到当前用户 metadata,审计采用操作字段和资源标识。偏好来源、审计字段、保留期及失败策略按需求确定,敏感数据按实际用途脱敏。
|
|
63
|
+
|
|
64
|
+
## 当前传输与安全契约
|
|
65
|
+
|
|
66
|
+
- JSON 业务请求与响应经 typed api-client 和 serv 的 crypto transport 加解密,包含登录与刷新;健康/就绪检查和公开头像二进制资源使用既有例外。新增 API 沿用当前管道;需求调整传输方案时同步客户端、服务端及测试,不能静默绕过仍生效的安全契约。
|
|
67
|
+
- Web 使用内存 access token 和 HttpOnly refresh Cookie;App 原生端装配 `createCapacitorTokenStorage`,浏览器预览沿用 Cookie;Desktop 原生端使用内存 TokenStorage,重启后重新登录。原生 body 刷新通道同时验证 `X-HAI-Token-Transport: body`、端对应的 `x-request-client` 与受信完整 Origin,刷新请求沿用这些头。调整会话方案时保持凭据保护和通道校验;敏感 token 不写 localStorage 或普通配置文件。
|
|
68
|
+
- 服务端依据实际权限模型验证每个受保护操作,个人操作绑定当前会话,代他人操作验证对应权限;不能只靠隐藏导航保护资源。SQL 动态值参数化,日志与审计不泄露密码、token 或密钥。
|
|
69
|
+
|
|
70
|
+
## 代码注释与示例
|
|
71
|
+
|
|
72
|
+
- 尽可能补充有信息量的中文 JSDoc:所有 export 的函数/类/方法、核心算法与业务流程、所有数据库表/列、接口/type/schema 及其字段都必须说明用途、单位、约束和关联关系。核心逻辑解释决策原因、边界、权限与失败路径,不逐行复述代码。
|
|
73
|
+
- 函数按实际契约写 @param、@returns,仅确实抛错时写 @throws;异步、HaiResult 与事务失败行为须说明。类型/表结构说明字段含义、可空性、默认值、主外键和唯一约束。
|
|
74
|
+
- 上述函数和结构的 JSDoc 均提供可理解的 @example:函数给调用及结果判断,结构给合法数据,表给典型行或查询示例。省略上下文要标明,不使用真实凭据。示例随实现同步,不能只堆叠没有信息量的注释。
|
|
75
|
+
- 调用及结构示例见 [.agents/skills/hai-app-create/development.md](.agents/skills/hai-app-create/development.md) 的 JSDoc 注释一节。
|
|
76
|
+
|
|
77
|
+
## 质量门禁
|
|
78
|
+
|
|
79
|
+
按 [分轮验证与集中修复](.agents/skills/hai-app-tests/validation.md) 收集一轮适用门禁及日志,汇总后集中修复、复测失败及受影响项;普通失败不中断独立检查,真实前置阻塞才暂停依赖项。跨包契约从根工作区验证:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pnpm typecheck
|
|
83
|
+
pnpm lint
|
|
84
|
+
pnpm build
|
|
85
|
+
pnpm test
|
|
86
|
+
pnpm test:e2e
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
发布或原生壳改动另检查 Capacitor/Tauri 配置、根脚本,并按目标平台执行 `pnpm compile`、`pnpm package`。浏览器测试不能代替原生包验证。
|
|
90
|
+
|
|
91
|
+
## 完成条件
|
|
92
|
+
|
|
93
|
+
- 同步受影响的 contract、serv procedure、shared client、各端调用方、README、messages、skills 和测试。
|
|
94
|
+
- 报告实际门禁结果、受影响 package/app、未执行项及原因;不得将跳过或失败写成通过。
|
|
95
|
+
|
|
96
|
+
## 优先 Skills
|
|
97
|
+
|
|
98
|
+
构建与验收:`hai-build`、`hai-app-review`、`hai-app-tests`。管理业务按需读取 `hai-iam`、`hai-reldb`、`hai-cache`、`hai-audit`、`hai-storage`、`hai-crypto`;配置与跨端读取 `hai-core`、`hai-ui`、`hai-serv`、`hai-api-contract`、`hai-api-client`、`hai-capacitor`。
|
|
99
|
+
|
|
100
|
+
前端页面先按 [hai-ui-design](.agents/skills/hai-ui-design/SKILL.md) 确定任务、布局、状态与组件映射,使用 [hai-ui](.agents/skills/hai-ui/SKILL.md) 实现,再由 [hai-ui-review](.agents/skills/hai-ui-review/SKILL.md) 检查真实页面。窄范围修改复用已有设计;按实际语言/主题/尺寸验证。
|
|
101
|
+
|
|
102
|
+
工作流技能按 hai-领域-动作 命名,能力使用类沿用领域名。需求、验收、发现与当前版本证据按 [工作交接契约](.agents/skills/hai-spec-implement/handoff.md) 传递,沿既有清单恢复任务。
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
> H5 移动端项目 AI 编程助手入口。优先结合 `README.md`、`.agents/skills/`、`src/routes/`、`messages/*` 与移动端测试工作。
|
|
4
|
+
|
|
5
|
+
## 需求与模板
|
|
6
|
+
|
|
7
|
+
- 业务行为以用户当前明确要求及其指定的需求/设计文档为准。本文件、README、skills、示例、生成代码及其测试中的模板默认行为是起点,不是不可变的业务约束;角色代码、权限模型、页面流程、字段、限额、存储方式与架构均可按实际需求调整。
|
|
8
|
+
- 需求与模板不同,审查时记录为模板适配项,不据此判定需求错误或阻塞审查,也不要求用户额外授权“覆盖模板”;实施时在已有授权范围内修改或移除冲突逻辑,并同步 contract、鉴权、数据迁移、界面、配置、测试、文档及本文件中的过期规则。
|
|
9
|
+
- 未说明的行为可参考现有实现并注明假设,不能升级为强制需求。只有业务要求自身矛盾、与已确认项目决策的优先级不明,或存在真实技术/安全障碍时才提出具体问题;已明确的规则不重复要求选择。
|
|
10
|
+
- 业务规则与技术契约分别判断:可用 API 以当前安装版本的公开类型为准;输入校验、服务端授权、资源隔离和密钥保护仍须落实。需求涉及替换技术方案时说明影响并同步迁移,不能用保留模板默认值代替解决问题。
|
|
11
|
+
|
|
12
|
+
## 行为契约
|
|
13
|
+
|
|
14
|
+
涉及框架结构、配置、核心流程或模块边界变更时,先按 [变更影响与方案确认](.agents/skills/hai-change-plan/SKILL.md) 说明影响并等待用户决定;已确认且未扩大的方案继续执行。
|
|
15
|
+
|
|
16
|
+
需求/设计文档审查或从文档生成代码时,读取 [hai-spec-review](.agents/skills/hai-spec-review/SKILL.md),严格确认完备性、歧义、技术正确性与命名一致性;影响行为的问题未解决前不判定文档可生成。普通小改动不重审无关文档。
|
|
17
|
+
|
|
18
|
+
升级 hai-framework 到最新/指定版本、比较版本差异或同步框架 skills 时,先读 [框架升级与同步 Skill](.agents/skills/hai-framework-sync/SKILL.md),执行版本发现、差异分析、用户选择/阻塞处理、迁移与验证;仅要求比较时不修改应用。
|
|
19
|
+
|
|
20
|
+
根据文档规划、实施、继续、返修或按已提交文档变更同步实现时,读取 [hai-spec-implement](.agents/skills/hai-spec-implement/SKILL.md):维护 docs 清单与任务记录,比较已验收与目标文档 Git 快照,更新原任务或新建任务,每项独立分支 TDD、验证并本地合并;全部差异与整体验收通过后才推进基线。返修复用原任务与分支。仅规划不实施,指定任务先核验依赖。
|
|
21
|
+
|
|
22
|
+
普通新增、修改、修复任务开始前,先读 [应用开发 Skill](.agents/skills/hai-app-create/SKILL.md) 和 [开发规范与框架能力路由](.agents/skills/hai-app-create/development.md);再按任务读取模块 Skill 及其相邻参考文件。架构/构建、审查、测试分别读取 hai-build、hai-app-review、hai-app-tests,不加载整个 skill 树。
|
|
23
|
+
|
|
24
|
+
- 对当前需求逐项检索 hai-framework 能力和已有实现,确认适用的公开 API 后优先复用;未安装模块先核对依赖与配置,不能因 Skill 已存在就假定已启用。框架不适用时说明具体限制与选用方案,不为覆盖清单引入无关模块。
|
|
25
|
+
- 按已安装版本的公开类型确认模块契约:生命周期模块按 init → use → close;core/serv/kit、纯函数/工厂与流按实际签名处理。返回 HaiResult 的操作先检查 success,不以 try/catch 代替判断;事务失败明确触发回滚。
|
|
26
|
+
- 边界输入做 schema 校验,服务端验证身份、租户与资源权限;SQL 动态值参数化,文件路径防逃逸。密钥不进入 PUBLIC_/VITE_ 变量、客户端代码和日志;敏感 token 不写 localStorage。
|
|
27
|
+
- 禁止 any、无说明的 as unknown as、console.log 和硬编码密钥;从包公开入口导入。注释中文、结构化日志英文并脱敏,用户文本走现有 i18n 并同步所有 locale。
|
|
28
|
+
- 完成时说明实际复用的框架能力、未采用的相关能力及原因、门禁结果;跨边界同步类型、配置、调用方、文档和测试。
|
|
29
|
+
|
|
30
|
+
先读 README、package.json、相关实现/测试和所需 .agents/skills;不要加载整个 skill 树。新增抽象前确认复用路径与真实需求;保留用户改动。跨文件任务简述影响和验证计划,无须固定规模标签或重复问卷。
|
|
31
|
+
|
|
32
|
+
- 直接影响:哪些页面、layout、导航、API、messages、README、测试会变。
|
|
33
|
+
- 间接影响:哪些移动端流程、权限入口、共享组件和接口断言需要同步。
|
|
34
|
+
|
|
35
|
+
## 项目定位
|
|
36
|
+
|
|
37
|
+
本项目是 hai-framework H5 模板,面向移动浏览器,重点是触屏布局、移动端导航、i18n、API 调用与端到端流程。
|
|
38
|
+
|
|
39
|
+
## 架构边界
|
|
40
|
+
|
|
41
|
+
- 使用移动端友好的布局和 `@h-ai/ui` 移动组件。
|
|
42
|
+
- 页面文本走 i18n,同步中英日文 messages。
|
|
43
|
+
- API 输入必须校验,业务错误按 HaiResult 传递。
|
|
44
|
+
- `+server.ts` 只能导出 handler 和 SvelteKit 允许的配置项;helper 放到 `src/lib/**`。
|
|
45
|
+
- 敏感 token 不要写入不安全存储;优先复用模板已有的鉴权与请求模式。
|
|
46
|
+
- 本样板默认不以 `@h-ai/serv`、`@h-ai/api-contract`、`@h-ai/api-client`、`@h-ai/capacitor` 作为主架构。
|
|
47
|
+
|
|
48
|
+
## 工作流程
|
|
49
|
+
|
|
50
|
+
1. 先搜索现有移动端页面、导航、messages、API 和测试。
|
|
51
|
+
2. 修改导航、触屏交互、API 或认证流程时,同步 README、i18n 和测试。
|
|
52
|
+
3. 按改动范围验证,修复本次引入的失败;已有问题与未运行项明确报告。
|
|
53
|
+
|
|
54
|
+
页面统一继承根布局的 header/footer;新增页面沿用 SvelteKit 自动文件路由,刷新定位及服务端 load/鉴权保持一致。
|
|
55
|
+
|
|
56
|
+
## 代码注释与示例
|
|
57
|
+
|
|
58
|
+
- 尽可能补充有信息量的中文 JSDoc:所有 export 的函数/类/方法、核心算法与业务流程、所有数据库表/列、接口/type/schema 及其字段都必须说明用途、单位、约束和关联关系。核心逻辑解释决策原因、边界、权限与失败路径,不逐行复述代码。
|
|
59
|
+
- 函数按实际契约写 @param、@returns,仅确实抛错时写 @throws;异步、HaiResult 与事务失败行为须说明。类型/表结构说明字段含义、可空性、默认值、主外键和唯一约束。
|
|
60
|
+
- 上述函数和结构的 JSDoc 均提供可理解的 @example:函数给调用及结果判断,结构给合法数据,表给典型行或查询示例。省略上下文要标明,不使用真实凭据。示例随实现同步,不能只堆叠没有信息量的注释。
|
|
61
|
+
- 调用及结构示例见 [.agents/skills/hai-app-create/development.md](.agents/skills/hai-app-create/development.md) 的 JSDoc 注释一节。
|
|
62
|
+
|
|
63
|
+
## 质量门禁
|
|
64
|
+
|
|
65
|
+
先核对 package.json,按 [分轮验证与集中修复](.agents/skills/hai-app-tests/validation.md) 收集适用检查与日志,再归并修复、复测失败及受影响项;普通失败不中断独立检查,真实前置阻塞才暂停依赖项。文档检查引用,UI/路由变更加 E2E,未运行项说明原因。
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm typecheck
|
|
69
|
+
pnpm lint
|
|
70
|
+
pnpm build
|
|
71
|
+
pnpm test
|
|
72
|
+
pnpm test:e2e
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 完成条件
|
|
76
|
+
|
|
77
|
+
- 页面、导航、API、i18n 与测试保持一致。
|
|
78
|
+
- 最终回复说明门禁状态、已更新移动端流程 / 文档与未完成项。
|
|
79
|
+
|
|
80
|
+
## 优先 Skills
|
|
81
|
+
|
|
82
|
+
- `hai-build`、`hai-app-create`、`hai-app-review`、`hai-app-tests`
|
|
83
|
+
- `hai-kit`、`hai-ui`、`hai-reldb`、`hai-cache`
|
|
84
|
+
- 其它 `hai-*` 模块按需读取
|
|
85
|
+
|
|
86
|
+
前端页面先按 [hai-ui-design](.agents/skills/hai-ui-design/SKILL.md) 确定任务、布局、状态与组件映射,使用 [hai-ui](.agents/skills/hai-ui/SKILL.md) 实现,再由 [hai-ui-review](.agents/skills/hai-ui-review/SKILL.md) 检查真实页面。窄范围修改复用已有设计;按实际语言/主题/尺寸验证。
|
|
87
|
+
|
|
88
|
+
工作流技能按 hai-领域-动作 命名,能力使用类沿用领域名。需求、验收、发现与当前版本证据按 [工作交接契约](.agents/skills/hai-spec-implement/handoff.md) 传递,沿既有清单恢复任务。
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
> Capacitor Mobile App 项目 AI 编程助手入口。优先结合 `README.md`、`.agents/skills/`、`src/`、`messages/*` 与移动端测试工作。
|
|
4
|
+
|
|
5
|
+
## 需求与模板
|
|
6
|
+
|
|
7
|
+
- 业务行为以用户当前明确要求及其指定的需求/设计文档为准。本文件、README、skills、示例、生成代码及其测试中的模板默认行为是起点,不是不可变的业务约束;角色代码、权限模型、页面流程、字段、限额、存储方式与架构均可按实际需求调整。
|
|
8
|
+
- 需求与模板不同,审查时记录为模板适配项,不据此判定需求错误或阻塞审查,也不要求用户额外授权“覆盖模板”;实施时在已有授权范围内修改或移除冲突逻辑,并同步 contract、鉴权、数据迁移、界面、配置、测试、文档及本文件中的过期规则。
|
|
9
|
+
- 未说明的行为可参考现有实现并注明假设,不能升级为强制需求。只有业务要求自身矛盾、与已确认项目决策的优先级不明,或存在真实技术/安全障碍时才提出具体问题;已明确的规则不重复要求选择。
|
|
10
|
+
- 业务规则与技术契约分别判断:可用 API 以当前安装版本的公开类型为准;输入校验、服务端授权、资源隔离和密钥保护仍须落实。需求涉及替换技术方案时说明影响并同步迁移,不能用保留模板默认值代替解决问题。
|
|
11
|
+
|
|
12
|
+
## 行为契约
|
|
13
|
+
|
|
14
|
+
涉及框架结构、配置、核心流程或模块边界变更时,先按 [变更影响与方案确认](.agents/skills/hai-change-plan/SKILL.md) 说明影响并等待用户决定;已确认且未扩大的方案继续执行。
|
|
15
|
+
|
|
16
|
+
需求/设计文档审查或从文档生成代码时,读取 [hai-spec-review](.agents/skills/hai-spec-review/SKILL.md),严格确认完备性、歧义、技术正确性与命名一致性;影响行为的问题未解决前不判定文档可生成。普通小改动不重审无关文档。
|
|
17
|
+
|
|
18
|
+
升级 hai-framework 到最新/指定版本、比较版本差异或同步框架 skills 时,先读 [框架升级与同步 Skill](.agents/skills/hai-framework-sync/SKILL.md),执行版本发现、差异分析、用户选择/阻塞处理、迁移与验证;仅要求比较时不修改应用。
|
|
19
|
+
|
|
20
|
+
根据文档规划、实施、继续、返修或按已提交文档变更同步实现时,读取 [hai-spec-implement](.agents/skills/hai-spec-implement/SKILL.md):维护 docs 清单与任务记录,比较已验收与目标文档 Git 快照,更新原任务或新建任务,每项独立分支 TDD、验证并本地合并;全部差异与整体验收通过后才推进基线。返修复用原任务与分支。仅规划不实施,指定任务先核验依赖。
|
|
21
|
+
|
|
22
|
+
普通新增、修改、修复任务开始前,先读 [应用开发 Skill](.agents/skills/hai-app-create/SKILL.md) 和 [开发规范与框架能力路由](.agents/skills/hai-app-create/development.md);再按任务读取模块 Skill 及其相邻参考文件。架构/构建、审查、测试分别读取 hai-build、hai-app-review、hai-app-tests,不加载整个 skill 树。
|
|
23
|
+
|
|
24
|
+
- 对当前需求逐项检索 hai-framework 能力和已有实现,确认适用的公开 API 后优先复用;未安装模块先核对依赖与配置,不能因 Skill 已存在就假定已启用。框架不适用时说明具体限制与选用方案,不为覆盖清单引入无关模块。
|
|
25
|
+
- 按已安装版本的公开类型确认模块契约:生命周期模块按 init → use → close;core/serv/kit、纯函数/工厂与流按实际签名处理。返回 HaiResult 的操作先检查 success,不以 try/catch 代替判断;事务失败明确触发回滚。
|
|
26
|
+
- 边界输入做 schema 校验,服务端验证身份、租户与资源权限;SQL 动态值参数化,文件路径防逃逸。密钥不进入 PUBLIC_/VITE_ 变量、客户端代码和日志;敏感 token 不写 localStorage。
|
|
27
|
+
- 禁止 any、无说明的 as unknown as、console.log 和硬编码密钥;从包公开入口导入。注释中文、结构化日志英文并脱敏,用户文本走现有 i18n 并同步所有 locale。
|
|
28
|
+
- 完成时说明实际复用的框架能力、未采用的相关能力及原因、门禁结果;跨边界同步类型、配置、调用方、文档和测试。
|
|
29
|
+
|
|
30
|
+
先读 README、package.json、相关实现/测试和所需 .agents/skills;不要加载整个 skill 树。新增抽象前确认复用路径与真实需求;保留用户改动。跨文件任务简述影响和验证计划,无须固定规模标签或重复问卷。
|
|
31
|
+
|
|
32
|
+
- 直接影响:哪些页面、store、原生桥接、messages、README、测试和打包脚本会变。
|
|
33
|
+
- 间接影响:哪些 Android/iOS 权限、API 调用方、构建/打包流程和共享组件需要同步。
|
|
34
|
+
|
|
35
|
+
## 项目概述
|
|
36
|
+
|
|
37
|
+
本项目是 hai-framework Mobile/Capacitor 模板:直接使用 Svelte 5 + Vite 输出 SPA,Capacitor 负责 Android/iOS 原生壳和设备能力。
|
|
38
|
+
|
|
39
|
+
## 架构边界
|
|
40
|
+
|
|
41
|
+
- 页面统一继承公共 header/footer;新增 SPA 页面放 `src/lib/pages/**/*.svelte`,由 `HashRouter` 自动发现。菜单只维护业务入口,不维护路由表。
|
|
42
|
+
|
|
43
|
+
- 当前客户端使用 Vite SPA;保留此架构时不混入 SvelteKit 路由、server hooks 或 `@h-ai/kit`。
|
|
44
|
+
- 需求迁移到 SvelteKit 时同步运行环境、路由、初始化、构建与原生壳集成;不能仅添加 `+page.svelte` 等文件就视为完成迁移。
|
|
45
|
+
- 原生能力通过 `@h-ai/capacitor` 使用;token 原生端使用 Capacitor 安全存储,Web 预览仅使用内存存储。
|
|
46
|
+
- API 调用使用 `@h-ai/api-client`,业务错误按 HaiResult 处理。
|
|
47
|
+
- 页面文本走 i18n,同步中英日文 messages。
|
|
48
|
+
- 原生桥接与设备调用放在 `src/lib/capacitor.ts` 或 service,避免散落在页面模板中。
|
|
49
|
+
- 本样板默认不使用 `@h-ai/core`、`@h-ai/kit`、`@h-ai/serv`、`@h-ai/api-contract` 作为主架构。
|
|
50
|
+
|
|
51
|
+
## 常用命令
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
pnpm build
|
|
55
|
+
pnpm cap:sync:android
|
|
56
|
+
pnpm cap:run:android
|
|
57
|
+
pnpm cap:build:android:debug
|
|
58
|
+
pnpm cap:build:android:release
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 工作流程
|
|
62
|
+
|
|
63
|
+
1. 先搜索现有页面、stores、原生桥接、API client、messages 和测试。
|
|
64
|
+
2. 修改原生能力、权限、登录态或 API 流程时,同步 README、i18n 和测试。
|
|
65
|
+
3. 按改动范围验证,修复本次引入的失败;已有问题与未运行项明确报告。
|
|
66
|
+
|
|
67
|
+
## 代码注释与示例
|
|
68
|
+
|
|
69
|
+
- 尽可能补充有信息量的中文 JSDoc:所有 export 的函数/类/方法、核心算法与业务流程、所有数据库表/列、接口/type/schema 及其字段都必须说明用途、单位、约束和关联关系。核心逻辑解释决策原因、边界、权限与失败路径,不逐行复述代码。
|
|
70
|
+
- 函数按实际契约写 @param、@returns,仅确实抛错时写 @throws;异步、HaiResult 与事务失败行为须说明。类型/表结构说明字段含义、可空性、默认值、主外键和唯一约束。
|
|
71
|
+
- 上述函数和结构的 JSDoc 均提供可理解的 @example:函数给调用及结果判断,结构给合法数据,表给典型行或查询示例。省略上下文要标明,不使用真实凭据。示例随实现同步,不能只堆叠没有信息量的注释。
|
|
72
|
+
- 调用及结构示例见 [.agents/skills/hai-app-create/development.md](.agents/skills/hai-app-create/development.md) 的 JSDoc 注释一节。
|
|
73
|
+
|
|
74
|
+
## 质量门禁
|
|
75
|
+
|
|
76
|
+
先核对 package.json,按 [分轮验证与集中修复](.agents/skills/hai-app-tests/validation.md) 收集适用检查与日志,再归并修复、复测失败及受影响项;普通失败不中断独立检查,真实前置阻塞才暂停依赖项。文档检查引用,UI/路由变更加 E2E,未运行项说明原因。
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
pnpm typecheck
|
|
80
|
+
pnpm lint
|
|
81
|
+
pnpm build
|
|
82
|
+
pnpm test
|
|
83
|
+
pnpm test:e2e
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 完成条件
|
|
87
|
+
|
|
88
|
+
- 页面、原生桥接、API、i18n 与测试保持一致。
|
|
89
|
+
- 若改动影响打包 / 原生权限 / 设备能力,README 与脚本说明必须同步更新。
|
|
90
|
+
- 最终回复说明门禁状态、已更新移动端流程 / 文档与未完成项。
|
|
91
|
+
|
|
92
|
+
## 优先 Skills
|
|
93
|
+
|
|
94
|
+
- `hai-build`、`hai-app-review`、`hai-app-tests`
|
|
95
|
+
- `hai-ui`、`hai-api-client`、`hai-capacitor`
|
|
96
|
+
- 其它 `hai-*` 模块按需读取
|
|
97
|
+
|
|
98
|
+
前端页面先按 [hai-ui-design](.agents/skills/hai-ui-design/SKILL.md) 确定任务、布局、状态与组件映射,使用 [hai-ui](.agents/skills/hai-ui/SKILL.md) 实现,再由 [hai-ui-review](.agents/skills/hai-ui-review/SKILL.md) 检查真实页面。窄范围修改复用已有设计;按实际语言/主题/尺寸验证。
|
|
99
|
+
|
|
100
|
+
工作流技能按 hai-领域-动作 命名,能力使用类沿用领域名。需求、验收、发现与当前版本证据按 [工作交接契约](.agents/skills/hai-spec-implement/handoff.md) 传递,沿既有清单恢复任务。
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
> 企业官网项目 AI 编程助手入口。优先结合 `README.md`、`.agents/skills/`、`src/routes/`、`messages/*` 与测试工作。
|
|
4
|
+
|
|
5
|
+
## 需求与模板
|
|
6
|
+
|
|
7
|
+
- 业务行为以用户当前明确要求及其指定的需求/设计文档为准。本文件、README、skills、示例、生成代码及其测试中的模板默认行为是起点,不是不可变的业务约束;角色代码、权限模型、页面流程、字段、限额、存储方式与架构均可按实际需求调整。
|
|
8
|
+
- 需求与模板不同,审查时记录为模板适配项,不据此判定需求错误或阻塞审查,也不要求用户额外授权“覆盖模板”;实施时在已有授权范围内修改或移除冲突逻辑,并同步 contract、鉴权、数据迁移、界面、配置、测试、文档及本文件中的过期规则。
|
|
9
|
+
- 未说明的行为可参考现有实现并注明假设,不能升级为强制需求。只有业务要求自身矛盾、与已确认项目决策的优先级不明,或存在真实技术/安全障碍时才提出具体问题;已明确的规则不重复要求选择。
|
|
10
|
+
- 业务规则与技术契约分别判断:可用 API 以当前安装版本的公开类型为准;输入校验、服务端授权、资源隔离和密钥保护仍须落实。需求涉及替换技术方案时说明影响并同步迁移,不能用保留模板默认值代替解决问题。
|
|
11
|
+
|
|
12
|
+
## 行为契约
|
|
13
|
+
|
|
14
|
+
涉及框架结构、配置、核心流程或模块边界变更时,先按 [变更影响与方案确认](.agents/skills/hai-change-plan/SKILL.md) 说明影响并等待用户决定;已确认且未扩大的方案继续执行。
|
|
15
|
+
|
|
16
|
+
需求/设计文档审查或从文档生成代码时,读取 [hai-spec-review](.agents/skills/hai-spec-review/SKILL.md),严格确认完备性、歧义、技术正确性与命名一致性;影响行为的问题未解决前不判定文档可生成。普通小改动不重审无关文档。
|
|
17
|
+
|
|
18
|
+
升级 hai-framework 到最新/指定版本、比较版本差异或同步框架 skills 时,先读 [框架升级与同步 Skill](.agents/skills/hai-framework-sync/SKILL.md),执行版本发现、差异分析、用户选择/阻塞处理、迁移与验证;仅要求比较时不修改应用。
|
|
19
|
+
|
|
20
|
+
根据文档规划、实施、继续、返修或按已提交文档变更同步实现时,读取 [hai-spec-implement](.agents/skills/hai-spec-implement/SKILL.md):维护 docs 清单与任务记录,比较已验收与目标文档 Git 快照,更新原任务或新建任务,每项独立分支 TDD、验证并本地合并;全部差异与整体验收通过后才推进基线。返修复用原任务与分支。仅规划不实施,指定任务先核验依赖。
|
|
21
|
+
|
|
22
|
+
普通新增、修改、修复任务开始前,先读 [应用开发 Skill](.agents/skills/hai-app-create/SKILL.md) 和 [开发规范与框架能力路由](.agents/skills/hai-app-create/development.md);再按任务读取模块 Skill 及其相邻参考文件。架构/构建、审查、测试分别读取 hai-build、hai-app-review、hai-app-tests,不加载整个 skill 树。
|
|
23
|
+
|
|
24
|
+
- 对当前需求逐项检索 hai-framework 能力和已有实现,确认适用的公开 API 后优先复用;未安装模块先核对依赖与配置,不能因 Skill 已存在就假定已启用。框架不适用时说明具体限制与选用方案,不为覆盖清单引入无关模块。
|
|
25
|
+
- 按已安装版本的公开类型确认模块契约:生命周期模块按 init → use → close;core/serv/kit、纯函数/工厂与流按实际签名处理。返回 HaiResult 的操作先检查 success,不以 try/catch 代替判断;事务失败明确触发回滚。
|
|
26
|
+
- 边界输入做 schema 校验,服务端验证身份、租户与资源权限;SQL 动态值参数化,文件路径防逃逸。密钥不进入 PUBLIC_/VITE_ 变量、客户端代码和日志;敏感 token 不写 localStorage。
|
|
27
|
+
- 禁止 any、无说明的 as unknown as、console.log 和硬编码密钥;从包公开入口导入。注释中文、结构化日志英文并脱敏,用户文本走现有 i18n 并同步所有 locale。
|
|
28
|
+
- 完成时说明实际复用的框架能力、未采用的相关能力及原因、门禁结果;跨边界同步类型、配置、调用方、文档和测试。
|
|
29
|
+
|
|
30
|
+
先读 README、package.json、相关实现/测试和所需 .agents/skills;不要加载整个 skill 树。新增抽象前确认复用路径与真实需求;保留用户改动。跨文件任务简述影响和验证计划,无须固定规模标签或重复问卷。
|
|
31
|
+
|
|
32
|
+
- 直接影响:哪些页面、layout、表单/API、messages、README、测试会变。
|
|
33
|
+
- 间接影响:哪些导航入口、SEO 标签、部署脚本和共享组件需要同步。
|
|
34
|
+
|
|
35
|
+
## 项目定位
|
|
36
|
+
|
|
37
|
+
本项目是 hai-framework 企业官网模板,重点是 SvelteKit 页面、SEO、i18n、表单/API 边界和可部署构建产物。
|
|
38
|
+
|
|
39
|
+
## 架构边界
|
|
40
|
+
|
|
41
|
+
- 页面内容与导航文案全部走 i18n,同步中英日文 messages。
|
|
42
|
+
- 表单和 API 输入必须 Zod 校验。
|
|
43
|
+
- UI 组件优先使用 `@h-ai/ui`,不要重复实现已有组件。
|
|
44
|
+
- `+server.ts` 只能导出 handler 和 SvelteKit 允许的配置项;helper 放到 `src/lib/**`。
|
|
45
|
+
- SEO 元信息、路由结构和消息文案要一起维护。
|
|
46
|
+
- 本样板默认不以 `@h-ai/serv`、`@h-ai/api-contract`、`@h-ai/api-client`、`@h-ai/capacitor` 作为主架构。
|
|
47
|
+
|
|
48
|
+
## 工作流程
|
|
49
|
+
|
|
50
|
+
1. 先搜索现有页面、layout、组件、messages、表单/API 和测试。
|
|
51
|
+
2. 修改页面时同步 README、i18n、测试和 SEO 相关元信息。
|
|
52
|
+
3. 按改动范围验证,修复本次引入的失败;已有问题与未运行项明确报告。
|
|
53
|
+
|
|
54
|
+
页面统一继承根布局的 header/footer;新增页面沿用 SvelteKit 自动文件路由,刷新定位及服务端 load/鉴权保持一致。
|
|
55
|
+
|
|
56
|
+
## 代码注释与示例
|
|
57
|
+
|
|
58
|
+
- 尽可能补充有信息量的中文 JSDoc:所有 export 的函数/类/方法、核心算法与业务流程、所有数据库表/列、接口/type/schema 及其字段都必须说明用途、单位、约束和关联关系。核心逻辑解释决策原因、边界、权限与失败路径,不逐行复述代码。
|
|
59
|
+
- 函数按实际契约写 @param、@returns,仅确实抛错时写 @throws;异步、HaiResult 与事务失败行为须说明。类型/表结构说明字段含义、可空性、默认值、主外键和唯一约束。
|
|
60
|
+
- 上述函数和结构的 JSDoc 均提供可理解的 @example:函数给调用及结果判断,结构给合法数据,表给典型行或查询示例。省略上下文要标明,不使用真实凭据。示例随实现同步,不能只堆叠没有信息量的注释。
|
|
61
|
+
- 调用及结构示例见 [.agents/skills/hai-app-create/development.md](.agents/skills/hai-app-create/development.md) 的 JSDoc 注释一节。
|
|
62
|
+
|
|
63
|
+
## 质量门禁
|
|
64
|
+
|
|
65
|
+
先核对 package.json,按 [分轮验证与集中修复](.agents/skills/hai-app-tests/validation.md) 收集适用检查与日志,再归并修复、复测失败及受影响项;普通失败不中断独立检查,真实前置阻塞才暂停依赖项。文档检查引用,UI/路由变更加 E2E,未运行项说明原因。
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm typecheck
|
|
69
|
+
pnpm lint
|
|
70
|
+
pnpm build
|
|
71
|
+
pnpm test
|
|
72
|
+
pnpm test:e2e
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 完成条件
|
|
76
|
+
|
|
77
|
+
- 页面、表单、SEO、i18n 与测试保持一致。
|
|
78
|
+
- 最终回复说明门禁状态、已更新页面 / 表单 / 文档与未完成项。
|
|
79
|
+
|
|
80
|
+
## 优先 Skills
|
|
81
|
+
|
|
82
|
+
- `hai-build`、`hai-app-create`、`hai-app-review`、`hai-app-tests`
|
|
83
|
+
- `hai-kit`、`hai-ui`、`hai-reldb`、`hai-cache`
|
|
84
|
+
- 其它 `hai-*` 模块按需读取
|
|
85
|
+
|
|
86
|
+
前端页面先按 [hai-ui-design](.agents/skills/hai-ui-design/SKILL.md) 确定任务、布局、状态与组件映射,使用 [hai-ui](.agents/skills/hai-ui/SKILL.md) 实现,再由 [hai-ui-review](.agents/skills/hai-ui-review/SKILL.md) 检查真实页面。窄范围修改复用已有设计;按实际语言/主题/尺寸验证。
|
|
87
|
+
|
|
88
|
+
工作流技能按 hai-领域-动作 命名,能力使用类沿用领域名。需求、验收、发现与当前版本证据按 [工作交接契约](.agents/skills/hai-spec-implement/handoff.md) 传递,沿既有清单恢复任务。
|