SuperAPI AI 工具集

add-feature

编程与开发

查看项目

更新于 10-15 11:46

技能介绍

用途

add-feature 用于在 Activepieces 项目中端到端地实现一个功能,覆盖数据库、API 与前端全栈。当用户要求添加功能、实现某段逻辑,或构建跨越多层的特性时使用;对于多层功能,应始终使用该技能。功能内容由 $ARGUMENTS 描述。

主要能力

该技能按步骤引导实现流程,并在每一步给出需要回答的问题与代码约定:

  • Step 0:确定范围。在写代码前需回答:是 CE、EE 还是两者都要(若两者都要则使用 hooksFactory,CE 默认 + 在 app.ts 中 EE 覆盖);是否需要 plan flag(需加入 PlatformPlan 实体、LicenseKeyEntity 类型以及 shared 中的 plan 常量);是否需要 Permission(需加入 shared 中的 Permission 枚举);是否影响计费/配额(需在 controller 中实施 enforcement);是否必须支持嵌入式(需检查前端的 EmbeddingState);是项目级还是平台级(据此过滤查询)。
  • Step 1:共享类型(packages/core/shared)。在 src/lib/{domain}/ 中定义 Zod schema 与 z.infer 类型;从 src/index.ts barrel 导出;在 package.json 中提升版本(修复用 patch,新增导出用 minor)。
  • Step 2:服务端(packages/server/api)。先阅读 .agents/features/<module-name>.md(例如 tables 模块读 .agents/features/tables.md)。实体使用 EntitySchema + BaseColumnSchemaPart + ApIdSchema,参考 tables/table/table.entity.ts;实体必须在 database-connection.ts 的 getEntities() 中注册(必需,TypeORM 不会自动发现);迁移需阅读 playbook → 创建 class → 在 postgres-connection.ts 中导入 → 加入 getMigrations() → 处理 PGlite;Service 若需要日志则用 Factory (log: FastifyBaseLogger) => ({...}),否则用普通对象,参考 tables/table/table.service.ts;Controller 使用 FastifyPluginAsyncZod,路由配置放在 controller 之后,securityAccess 必需,参考 tables/table/table.controller.ts;若返回项目级数据,需添加 entitiesMustBeOwnedByCurrentProject hook;模块在 app.ts 中注册(CE 或 EE 部分);EE-only 放在 src/app/ee/,用 platformMustHaveFeatureEnabled((p) => p.plan.myFlag) 做门控;若变更会触发事件/webhook,副作用单独放在 *-side-effects.ts 文件。
  • Step 3:Worker(如需排队任务)。在 shared 的 SystemJobName 或 WorkerJobType 枚举中添加;添加 handler,并通过 systemJobHandlers.registerJobHandler() 在 app.ts 中注册。
  • Step 4:前端(packages/web)。功能目录为 src/features/{feature}/api/、hooks/、components/;API 客户端参考 features/tables/api/tables-api.ts;hooks 参考 features/tables/hooks/table-hooks.ts;路由使用 React.lazy() + ProjectRouterWrapper() + RoutePermissionGuard + SuspenseWrapper;翻译仅放在 packages/web/public/locales/en/translation.json;功能开关使用 flagsHooks.useFlag() 或 <FlagGuard>。
  • Step 5:测试。API 测试位于 packages/server/api/test/integration/ce/{feature}.test.ts,使用 setupTestEnvironment() + createTestContext(app)。
  • Step 6:验证。运行 npm run lint-dev 与 npm run test-api。

使用方式

该技能以 $ARGUMENTS 作为功能描述输入,按上述步骤顺序执行。每一步都引用了仓库中的具体参考文件与代码约定,开发者应遵循这些约定进行实现。

适用场景

适用于在 Activepieces 中新增跨数据库、API 与前端的功能,尤其是多层功能。

限制

资料未提供该技能的安装方式、收费信息、平台支持范围或效果保证。