@agent-native/core 0.152.1 → 0.153.1
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/corpus/README.md +1 -1
- package/corpus/templates/analytics/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/analytics/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +6 -4
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/analytics/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/analytics/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/analytics/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/analytics/actions/data-source-status.ts +4 -1
- package/corpus/templates/analytics/actions/migrate-first-party-analytics-to-bigquery.ts +2 -2
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +7 -2
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +7 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +30 -32
- package/corpus/templates/analytics/app/components/layout/layout-route-policy.ts +10 -0
- package/corpus/templates/analytics/app/global.css +5 -1
- package/corpus/templates/analytics/app/lib/data-source-status.ts +3 -3
- package/corpus/templates/analytics/app/lib/resource-access.ts +6 -1
- package/corpus/templates/analytics/app/pages/DataSources.tsx +79 -51
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -0
- package/corpus/templates/analytics/changelog/2026-08-12-analytics-sidebar-ask-toggle-and-compact-rail.md +6 -0
- package/corpus/templates/analytics/changelog/2026-08-12-data-source-statuses-now-distinguish-workspace-access-from-c.md +6 -0
- package/corpus/templates/analytics/server/jobs/analytics-bigquery-backfill.ts +559 -147
- package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +79 -5
- package/corpus/templates/analytics/server/plugins/db.ts +84 -0
- package/corpus/templates/assets/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/assets/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/assets/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/assets/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/assets/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/assets/app/components/asset/AssetPreviewDialog.tsx +13 -5
- package/corpus/templates/assets/app/lib/asset-urls.ts +13 -0
- package/corpus/templates/assets/app/routes/asset.$id.tsx +16 -6
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +1 -0
- package/corpus/templates/assets/app/routes/library.tsx +336 -78
- package/corpus/templates/assets/shared/api.ts +1 -1
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/brain/.agents/skills/brain/SKILL.md +8 -6
- package/corpus/templates/brain/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +7 -0
- package/corpus/templates/brain/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/brain/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/brain/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/brain/AGENTS.md +2 -1
- package/corpus/templates/brain/actions/ask-brain.ts +19 -16
- package/corpus/templates/brain/actions/create-source.ts +11 -2
- package/corpus/templates/brain/actions/import-markdown-files.ts +237 -0
- package/corpus/templates/brain/actions/resanitize-captures.ts +3 -1
- package/corpus/templates/brain/actions/test-slack-connection.ts +12 -3
- package/corpus/templates/brain/actions/update-source.ts +10 -1
- package/corpus/templates/brain/app/components/brain/Surface.tsx +1 -11
- package/corpus/templates/brain/app/i18n-data.ts +111 -0
- package/corpus/templates/brain/app/lib/brain.ts +23 -1
- package/corpus/templates/brain/app/routes/knowledge.tsx +0 -2
- package/corpus/templates/brain/app/routes/ops.tsx +0 -2
- package/corpus/templates/brain/app/routes/review.tsx +0 -2
- package/corpus/templates/brain/app/routes/search.tsx +0 -2
- package/corpus/templates/brain/app/routes/sources.tsx +354 -6
- package/corpus/templates/brain/server/lib/brain-response-guard.ts +63 -1
- package/corpus/templates/brain/server/lib/brain.ts +9 -6
- package/corpus/templates/brain/server/lib/connectors.ts +20 -6
- package/corpus/templates/brain/server/lib/search.ts +9 -1
- package/corpus/templates/brain/server/lib/source-credentials.ts +95 -57
- package/corpus/templates/brain/server/plugins/agent-chat.ts +5 -2
- package/corpus/templates/brain/server/plugins/auth.ts +2 -0
- package/corpus/templates/calendar/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/calendar/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/calendar/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/calendar/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/calendar/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/calendar/app/components/calendar/DayView.tsx +3 -2
- package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +3 -2
- package/corpus/templates/calendar/app/lib/event-layout.ts +16 -35
- package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +1 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/chat/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/chat/AGENTS.md +4 -5
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/clips/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/clips/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/clips/actions/add-comment.ts +1 -2
- package/corpus/templates/clips/actions/delete-comment.ts +2 -0
- package/corpus/templates/clips/actions/get-recording-insights.ts +9 -8
- package/corpus/templates/clips/actions/get-recording-player-data.ts +4 -1
- package/corpus/templates/clips/actions/react-to-comment.ts +1 -1
- package/corpus/templates/clips/actions/react-to-recording.ts +1 -1
- package/corpus/templates/clips/actions/reply-to-comment.ts +1 -1
- package/corpus/templates/clips/actions/resolve-comment.ts +1 -2
- package/corpus/templates/clips/actions/update-comment.ts +1 -1
- package/corpus/templates/clips/app/components/editor/editor-layout.tsx +1 -0
- package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +59 -16
- package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +27 -44
- package/corpus/templates/clips/app/components/player/comments-panel.tsx +88 -39
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +84 -41
- package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +3 -1
- package/corpus/templates/clips/app/components/player/video-player.tsx +1 -1
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +20 -7
- package/corpus/templates/clips/app/i18n/en-US.ts +2 -1
- package/corpus/templates/clips/app/lib/public-meeting.ts +1 -1
- package/corpus/templates/clips/app/lib/thumbnail-capture.ts +71 -0
- package/corpus/templates/clips/app/lib/thumbnail-picker-state.ts +93 -0
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -1
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +25 -19
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -0
- package/corpus/templates/clips/changelog/2026-07-23-meeting-recording-meters-and-dismissed-prompts.md +1 -1
- package/corpus/templates/clips/changelog/2026-08-11-clips-asks-to-take-notes-again-when-you-join-an-adhoc-zoom-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +1 -1
- package/corpus/templates/clips/desktop/src/styles.css +10 -2
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +166 -14
- package/corpus/templates/clips/desktop/src-tauri/src/call_activity.rs +146 -0
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +2 -2
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -0
- package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +2 -122
- package/corpus/templates/clips/desktop/src-tauri/src/util.rs +1 -1
- package/corpus/templates/clips/server/lib/recording-page-access.ts +6 -1
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +5 -0
- package/corpus/templates/clips/shared/share-meta.ts +19 -3
- package/corpus/templates/content/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/content/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/content/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/content/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/content/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/content/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/content/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/content/actions/_database-utils.ts +10 -0
- package/corpus/templates/content/actions/add-comment.ts +1 -1
- package/corpus/templates/content/actions/attach-content-database-source.ts +158 -61
- package/corpus/templates/content/actions/create-document.ts +1 -0
- package/corpus/templates/content/actions/delete-comment.ts +1 -1
- package/corpus/templates/content/actions/get-document.ts +9 -1
- package/corpus/templates/content/actions/import-content-source.ts +8 -0
- package/corpus/templates/content/actions/list-documents.ts +10 -1
- package/corpus/templates/content/actions/update-comment.ts +1 -1
- package/corpus/templates/content/actions/update-document.ts +11 -0
- package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +52 -29
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +13 -8
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +62 -2
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +163 -53
- package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +16 -0
- package/corpus/templates/content/app/components/editor/database/settings.tsx +22 -13
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +7 -7
- package/corpus/templates/content/app/hooks/use-documents.ts +2 -0
- package/corpus/templates/content/app/i18n-data.ts +10 -0
- package/corpus/templates/content/app/root.tsx +1 -21
- package/corpus/templates/content/changelog/2026-08-05-connect-sources-from-add-column.md +6 -0
- package/corpus/templates/content/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/content/shared/api.ts +7 -1
- package/corpus/templates/crm/.agents/skills/actions/SKILL.md +146 -0
- package/corpus/templates/crm/.agents/skills/actions/references/action-fields.md +136 -0
- package/corpus/templates/crm/.agents/skills/actions/references/examples.md +94 -0
- package/corpus/templates/crm/.agents/skills/actions/references/provider-apis.md +95 -0
- package/corpus/templates/crm/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/crm/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/crm/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/corpus/templates/crm/.agents/skills/frontend-design/SKILL.md +296 -0
- package/corpus/templates/crm/.agents/skills/frontend-design/references/visual-direction.md +99 -0
- package/corpus/templates/crm/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/crm/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/crm/.agents/skills/security/SKILL.md +324 -0
- package/corpus/templates/crm/.agents/skills/self-modifying-code/SKILL.md +123 -0
- package/corpus/templates/crm/.agents/skills/shadcn-ui/SKILL.md +123 -0
- package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/crm/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/crm/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/design/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/design/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/design/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/design/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/design/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/design/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/design/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/design/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +16 -2
- package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +6 -18
- package/corpus/templates/design/app/i18n/en-US.ts +1 -1
- package/corpus/templates/design/app/i18n-data.ts +40 -0
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +153 -131
- package/corpus/templates/design/app/pages/DesignSystems.tsx +7 -61
- package/corpus/templates/design/app/pages/Present.tsx +8 -2
- package/corpus/templates/design/app/pages/Templates.tsx +1 -0
- package/corpus/templates/design/app/pages/design-editor/tool-state.ts +4 -1
- package/corpus/templates/design/app/pages/design-editor/types.ts +6 -1
- package/corpus/templates/design/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/dispatch/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/dispatch/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/dispatch/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/dispatch/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/dispatch/actions/apply-workspace-connection-setup.ts +97 -15
- package/corpus/templates/dispatch/actions/connection-permissions.ts +77 -0
- package/corpus/templates/dispatch/actions/delete-workspace-connection.ts +12 -2
- package/corpus/templates/dispatch/actions/list-workspace-user-groups.ts +19 -0
- package/corpus/templates/dispatch/actions/plan-workspace-connection-setup.ts +9 -2
- package/corpus/templates/dispatch/actions/set-workspace-connection-grant.ts +21 -2
- package/corpus/templates/dispatch/actions/upsert-workspace-connection.ts +66 -1
- package/corpus/templates/dispatch/actions/upsert-workspace-user-group.ts +27 -0
- package/corpus/templates/dispatch/app/chat-first-pages.ts +84 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +3989 -3527
- package/corpus/templates/dispatch/app/routes/integrations.tsx +1568 -685
- package/corpus/templates/dispatch/app/routes/settings.tsx +14 -9
- package/corpus/templates/dispatch/changelog/2026-08-12-search-and-pin-workspace-apps-from-the-app-catalog.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-08-12-workspace-integration-access-now-shows-exactly-which-apps-ca.md +6 -0
- package/corpus/templates/dispatch/server/lib/app-roles.ts +5 -0
- package/corpus/templates/dispatch/shared/app-roles.ts +1 -0
- package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/factory/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/factory/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/factory/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/factory/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/factory/AGENTS.md +10 -1
- package/corpus/templates/factory/README.md +18 -7
- package/corpus/templates/factory/actions/list-triage-items.ts +10 -4
- package/corpus/templates/factory/actions/poll-github-sources.ts +53 -14
- package/corpus/templates/factory/actions/poll-sentry-errors.ts +31 -13
- package/corpus/templates/factory/actions/poll-slack-channel.ts +41 -5
- package/corpus/templates/factory/actions/provider-api-catalog.ts +13 -0
- package/corpus/templates/factory/actions/provider-api-docs.ts +11 -0
- package/corpus/templates/factory/actions/provider-api-request.ts +17 -0
- package/corpus/templates/factory/actions/save-triage-config.ts +87 -38
- package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +14 -12
- package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +60 -77
- package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +66 -125
- package/corpus/templates/factory/app/components/layout/Header.tsx +1 -0
- package/corpus/templates/factory/app/components/layout/Layout.tsx +8 -3
- package/corpus/templates/factory/app/components/layout/Sidebar.tsx +9 -5
- package/corpus/templates/factory/app/components/ui/input.tsx +15 -1
- package/corpus/templates/factory/app/components/ui/popover.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/switch.tsx +1 -0
- package/corpus/templates/factory/app/components/ui/textarea.tsx +20 -1
- package/corpus/templates/factory/app/hooks/use-navigation-state.ts +5 -3
- package/corpus/templates/factory/app/i18n/en-US.ts +17 -0
- package/corpus/templates/factory/app/routes/_index.tsx +5 -87
- package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -1
- package/corpus/templates/factory/app/routes/chat.tsx +91 -0
- package/corpus/templates/factory/app/routes/factory.tsx +554 -430
- package/corpus/templates/factory/app/routes/settings.tsx +1 -1
- package/corpus/templates/factory/server/connectors/credentials.ts +25 -0
- package/corpus/templates/factory/server/lib/provider-api.ts +34 -0
- package/corpus/templates/factory/server/plugins/agent-chat.ts +15 -3
- package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +96 -24
- package/corpus/templates/factory/server/triage/review-state.ts +33 -0
- package/corpus/templates/factory/server/triage/slack-poller.ts +1 -0
- package/corpus/templates/forms/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/forms/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/forms/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/forms/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/forms/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +1 -0
- package/corpus/templates/forms/shared/types.ts +1 -1
- package/corpus/templates/macros/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/macros/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/macros/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/macros/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/macros/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/macros/.agents/skills/self-modifying-code/SKILL.md +123 -0
- package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/macros/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/macros/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/mail/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/mail/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/mail/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/mail/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/mail/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/mail/actions/send-email.ts +9 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +4 -4
- package/corpus/templates/mail/changelog/2026-08-12-agent-sent-messages-appear-immediately.md +6 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/plan/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/plan/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/plan/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/plan/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/plan/actions/delete-plan-comment.ts +6 -0
- package/corpus/templates/plan/actions/reply-to-plan-comment.ts +7 -1
- package/corpus/templates/plan/actions/resolve-plan-comment.ts +7 -1
- package/corpus/templates/plan/actions/update-visual-plan.ts +6 -0
- package/corpus/templates/plan/app/hooks/use-plans.ts +1 -1
- package/corpus/templates/plan/app/pages/PlansPage.tsx +51 -23
- package/corpus/templates/plan/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/plan/server/plans.ts +2 -2
- package/corpus/templates/plan/shared/types.ts +1 -1
- package/corpus/templates/slides/.agents/skills/adding-a-feature/SKILL.md +208 -0
- package/corpus/templates/slides/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +6 -0
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/slides/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/slides/.agents/skills/real-time-sync/SKILL.md +232 -0
- package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/slides/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/slides/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/slides/AGENTS.md +4 -0
- package/corpus/templates/slides/actions/add-slide-comment.ts +1 -1
- package/corpus/templates/slides/actions/delete-slide-comment.ts +1 -1
- package/corpus/templates/slides/actions/get-layout-overflows.ts +67 -2
- package/corpus/templates/slides/actions/update-slide-comment.ts +1 -1
- package/corpus/templates/slides/actions/view-screen.ts +76 -26
- package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +30 -8
- package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -1
- package/corpus/templates/slides/app/components/editor/AlignmentGuides.tsx +75 -0
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +81 -81
- package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +28 -25
- package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +175 -10
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +256 -69
- package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +1 -1
- package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +3 -3
- package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +218 -0
- package/corpus/templates/slides/app/context/DeckContext.tsx +56 -30
- package/corpus/templates/slides/app/hooks/use-deck-role.ts +13 -5
- package/corpus/templates/slides/app/hooks/use-design-systems.ts +1 -1
- package/corpus/templates/slides/app/i18n/en-US.ts +6 -2
- package/corpus/templates/slides/app/lib/create-deck-generation.ts +1 -0
- package/corpus/templates/slides/app/lib/pending-deck-changes.ts +32 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +85 -4
- package/corpus/templates/slides/app/pages/Index.tsx +65 -66
- package/corpus/templates/slides/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
- package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/corpus/templates/tasks/.agents/skills/context-awareness/SKILL.md +206 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +73 -80
- package/corpus/templates/tasks/.agents/skills/portability/SKILL.md +107 -0
- package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +339 -0
- package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +1 -0
- package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/corpus/templates/tasks/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/corpus/templates/tasks/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/corpus/templates/tasks/app/components/custom-fields/FieldsPage.tsx +1 -4
- package/corpus/templates/tasks/app/components/inbox/InboxList.tsx +0 -1
- package/corpus/templates/tasks/app/components/inbox/InboxListPage.tsx +0 -1
- package/corpus/templates/tasks/app/components/shared/ListViewHeader.tsx +0 -3
- package/corpus/templates/tasks/app/components/shared/PageHeader.tsx +1 -4
- package/corpus/templates/tasks/app/components/tasks/TaskList.tsx +0 -1
- package/corpus/templates/tasks/app/components/tasks/TaskListPage.tsx +0 -1
- package/dist/agent/engine/ai-sdk-engine.js +5 -0
- package/dist/agent/engine/anthropic-engine.js +8 -0
- package/dist/agent/engine/registry.js +24 -19
- package/dist/agent/engine/translate-anthropic.js +16 -1
- package/dist/agent/production-agent.d.ts +8 -0
- package/dist/agent/production-agent.js +25 -2
- package/dist/agent/run-manager.js +13 -3
- package/dist/automations/service.d.ts +2 -0
- package/dist/automations/service.js +5 -1
- package/dist/chat-threads/schema.d.ts +2 -2
- package/dist/cli/changelog.js +21 -4
- package/dist/cli/create.d.ts +12 -1
- package/dist/cli/create.js +99 -11
- package/dist/cli/index.js +6 -6
- package/dist/cli/process.d.ts +7 -0
- package/dist/cli/process.js +12 -0
- package/dist/cli/workspace-skill-policy.d.ts +15 -0
- package/dist/cli/workspace-skill-policy.js +62 -0
- package/dist/cli/workspacify.js +36 -0
- package/dist/client/AgentPanel.d.ts +14 -2
- package/dist/client/AgentPanel.js +44 -26
- package/dist/client/AssistantChat.js +90 -182
- package/dist/client/FeedbackButton.js +15 -2
- package/dist/client/RouteTransitionIndicator.d.ts +14 -2
- package/dist/client/RouteTransitionIndicator.js +16 -5
- package/dist/client/agent-page/AgentTabsPage.js +19 -6
- package/dist/client/app-config.d.ts +3 -0
- package/dist/client/app-config.js +6 -0
- package/dist/client/app-providers.js +2 -1
- package/dist/client/changelog/Changelog.d.ts +2 -1
- package/dist/client/changelog/Changelog.js +7 -5
- package/dist/client/chat/markdown-renderer.d.ts +3 -1
- package/dist/client/chat/markdown-renderer.js +24 -24
- package/dist/client/chat/message-components.d.ts +23 -0
- package/dist/client/chat/message-components.js +27 -44
- package/dist/client/chat/tool-call-display.d.ts +2 -2
- package/dist/client/chat/tool-call-display.js +6 -3
- package/dist/client/chat-first/app-open-actions.d.ts +28 -0
- package/dist/client/chat-first/app-open-actions.js +25 -0
- package/dist/client/chat-first/index.d.ts +1 -0
- package/dist/client/chat-first/index.js +1 -0
- package/dist/client/chat-first/primary-nav.d.ts +2 -1
- package/dist/client/chat-first/primary-nav.js +12 -5
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +14 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -0
- package/dist/client/error-format.js +32 -3
- package/dist/client/extensions/EmbeddedExtension.js +1 -0
- package/dist/client/extensions/ExtensionViewer.js +3 -1
- package/dist/client/extensions/InlineExtensionFrame.js +1 -0
- package/dist/client/extensions/iframe-bridge.d.ts +3 -2
- package/dist/client/extensions/iframe-bridge.js +4 -2
- package/dist/client/i18n.js +28 -5
- package/dist/client/integrations/IntegrationConnectionChoice.d.ts +11 -0
- package/dist/client/integrations/IntegrationConnectionChoice.js +6 -0
- package/dist/client/integrations/IntegrationGrid.d.ts +23 -0
- package/dist/client/integrations/IntegrationGrid.js +12 -0
- package/dist/client/integrations/IntegrationsPanel.js +92 -26
- package/dist/client/integrations/index.d.ts +2 -0
- package/dist/client/integrations/index.js +2 -0
- package/dist/client/onboarding/FirstRunOnboarding.d.ts +3 -1
- package/dist/client/onboarding/FirstRunOnboarding.js +26 -16
- package/dist/client/onboarding/first-run-enabled.js +1 -5
- package/dist/client/onboarding/first-run-startup-gate.d.ts +5 -0
- package/dist/client/onboarding/first-run-startup-gate.js +51 -0
- package/dist/client/onboarding/first-run-status.d.ts +7 -0
- package/dist/client/onboarding/first-run-status.js +26 -0
- package/dist/client/onboarding/index.d.ts +3 -0
- package/dist/client/onboarding/index.js +3 -0
- package/dist/client/onboarding/use-onboarding.d.ts +1 -0
- package/dist/client/onboarding/use-onboarding.js +13 -11
- package/dist/client/org/TeamPage.js +174 -28
- package/dist/client/org/WorkspaceNotice.js +7 -4
- package/dist/client/resources/McpConnectionSuggestion.js +29 -72
- package/dist/client/resources/McpIntegrationDialog.d.ts +3 -1
- package/dist/client/resources/McpIntegrationDialog.js +176 -51
- package/dist/client/resources/index.d.ts +1 -0
- package/dist/client/resources/index.js +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts +8 -0
- package/dist/client/resources/mcp-integration-catalog.js +28 -0
- package/dist/client/settings/ExtensionsSettingsContent.js +2 -2
- package/dist/client/settings/SettingsPanel.d.ts +6 -0
- package/dist/client/settings/SettingsPanel.js +21 -8
- package/dist/client/settings/SettingsRow.d.ts +3 -1
- package/dist/client/settings/SettingsRow.js +4 -2
- package/dist/client/settings/SettingsSkeleton.js +5 -3
- package/dist/client/settings/SettingsTabsPage.js +2 -2
- package/dist/client/settings/UsageSection.d.ts +4 -1
- package/dist/client/settings/UsageSection.js +187 -93
- package/dist/client/settings/agent-settings-search.js +6 -2
- package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +1 -1
- package/dist/client/setup-connections/useBuilderConnectCardController.js +2 -2
- package/dist/client/sharing/ShareButton.d.ts +4 -2
- package/dist/client/sharing/ShareButton.js +26 -14
- package/dist/client/sharing/ShareDialog.d.ts +1 -1
- package/dist/client/sharing/ShareDialog.js +17 -11
- package/dist/client/sharing/useShareButtonController.d.ts +2 -1
- package/dist/client/sharing/useShareButtonController.js +8 -0
- package/dist/client/sharing/useShareDialogController.d.ts +1 -1
- package/dist/client/sharing/useShareDialogController.js +2 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.js +53 -0
- package/dist/dashboard-storage/schema.d.ts +2 -2
- package/dist/data-programs/schema.d.ts +2 -2
- package/dist/extensions/actions.js +2 -1
- package/dist/extensions/html-shell.d.ts +2 -2
- package/dist/extensions/routes.js +4 -1
- package/dist/extensions/schema.d.ts +2 -2
- package/dist/file-upload/pre-upload-attachments.js +1 -1
- package/dist/framework-tools.js +3 -0
- package/dist/history/types.d.ts +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/jobs/background-automation-runner.d.ts +1 -0
- package/dist/jobs/background-automation-runner.js +4 -2
- package/dist/jobs/frontmatter.d.ts +4 -0
- package/dist/jobs/frontmatter.js +16 -0
- package/dist/jobs/run-history.js +1 -1
- package/dist/jobs/tools.js +9 -5
- package/dist/localization/default-messages.d.ts +27 -0
- package/dist/localization/default-messages.js +28 -1
- package/dist/notifications/routes.d.ts +6 -6
- package/dist/onboarding/plugin.js +17 -2
- package/dist/org/context.js +16 -0
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +8 -8
- package/dist/review/actions/create-review-comment.js +1 -1
- package/dist/review/actions/delete-review-comment.js +4 -1
- package/dist/review/actions/list-review-comments.js +4 -2
- package/dist/review/actions/reply-review-comment.js +1 -1
- package/dist/review/types.d.ts +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/action-discovery.js +29 -0
- package/dist/server/agent-chat/plugin-options.d.ts +7 -0
- package/dist/server/agent-chat-plugin.d.ts +2 -0
- package/dist/server/agent-chat-plugin.js +12 -4
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth.js +18 -4
- package/dist/server/better-auth-instance.js +8 -1
- package/dist/server/builder-browser.js +31 -0
- package/dist/server/magic-link-attribution.d.ts +21 -0
- package/dist/server/magic-link-attribution.js +115 -0
- package/dist/server/onboarding-html.js +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/server/workspace-provider-oauth.js +38 -26
- package/dist/setup-connections/index.d.ts +1 -1
- package/dist/setup-connections/index.js +1 -1
- package/dist/shared/first-run-onboarding.d.ts +6 -0
- package/dist/shared/first-run-onboarding.js +6 -0
- package/dist/sharing/access.d.ts +1 -1
- package/dist/sharing/access.js +4 -1
- package/dist/sharing/actions/share-resource.d.ts +1 -1
- package/dist/sharing/actions/share-resource.js +2 -2
- package/dist/sharing/registry.d.ts +2 -2
- package/dist/sharing/schema.d.ts +5 -5
- package/dist/sharing/schema.js +9 -6
- package/dist/styles/agent-native.css +21 -0
- package/dist/styles/chat-history-list.css +1 -1
- package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/dist/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
- package/dist/templates/chat/.agents/skills/portability/SKILL.md +107 -0
- package/dist/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
- package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/dist/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
- package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/dist/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/dist/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/dist/templates/chat/AGENTS.md +4 -5
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/dist/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
- package/dist/templates/default/.agents/skills/portability/SKILL.md +107 -0
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/dist/templates/default/.agents/skills/sharing/SKILL.md +233 -0
- package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/dist/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/dist/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/dist/templates/default/AGENTS.md +17 -2
- package/dist/templates/default/agent-native.config.ts +6 -0
- package/dist/templates/default/app/i18n/ar-SA.ts +2 -0
- package/dist/templates/default/app/i18n/de-DE.ts +2 -0
- package/dist/templates/default/app/i18n/en-US.ts +3 -1
- package/dist/templates/default/app/i18n/es-ES.ts +2 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +2 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +2 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +2 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +2 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +2 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +2 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +2 -0
- package/dist/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/dist/templates/headless/.agents/skills/security/SKILL.md +324 -0
- package/dist/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
- package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
- package/dist/templates/workspace-core/AGENTS.md +9 -3
- package/dist/templates/workspace-root/AGENTS.md +26 -1
- package/dist/templates/workspace-root/agent-native.config.ts +8 -0
- package/dist/triggers/actions.js +2 -2
- package/dist/usage/actions/get-usage-alerts.d.ts +5 -0
- package/dist/usage/actions/get-usage-alerts.js +16 -0
- package/dist/usage/actions/get-usage-metrics.d.ts +7 -0
- package/dist/usage/actions/get-usage-metrics.js +26 -0
- package/dist/usage/actions/manage-usage-alert.d.ts +14 -0
- package/dist/usage/actions/manage-usage-alert.js +48 -0
- package/dist/usage/alerts-store.d.ts +78 -0
- package/dist/usage/alerts-store.js +592 -0
- package/dist/usage/metrics-store.d.ts +95 -0
- package/dist/usage/metrics-store.js +386 -0
- package/dist/usage/store.js +10 -0
- package/dist/vite/action-types-plugin.js +28 -0
- package/dist/vite/agent-native-config-loader.d.ts +6 -0
- package/dist/vite/agent-native-config-loader.js +54 -2
- package/dist/vite/client.js +11 -5
- package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.d.ts +6 -0
- package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.js +24 -0
- package/dist/workspace-connections/actions/delete-workspace-user-group.d.ts +7 -0
- package/dist/workspace-connections/actions/delete-workspace-user-group.js +29 -0
- package/dist/workspace-connections/actions/list-workspace-user-groups.d.ts +2 -0
- package/dist/workspace-connections/actions/list-workspace-user-groups.js +13 -0
- package/dist/workspace-connections/actions/upsert-workspace-user-group.d.ts +6 -0
- package/dist/workspace-connections/actions/upsert-workspace-user-group.js +22 -0
- package/dist/workspace-connections/credential-key-aliases.d.ts +3 -0
- package/dist/workspace-connections/credential-key-aliases.js +31 -0
- package/dist/workspace-connections/credentials.js +1 -25
- package/dist/workspace-connections/groups.d.ts +32 -0
- package/dist/workspace-connections/groups.js +288 -0
- package/dist/workspace-connections/index.d.ts +3 -1
- package/dist/workspace-connections/index.js +3 -1
- package/dist/workspace-connections/store.d.ts +9 -0
- package/dist/workspace-connections/store.js +68 -8
- package/docs/content/components.mdx +2 -2
- package/docs/content/sharing.mdx +2 -1
- package/package.json +10 -2
- package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/src/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
- package/src/templates/chat/.agents/skills/portability/SKILL.md +107 -0
- package/src/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
- package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/src/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
- package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/src/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/src/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/src/templates/chat/AGENTS.md +4 -5
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/src/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
- package/src/templates/default/.agents/skills/portability/SKILL.md +107 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/src/templates/default/.agents/skills/sharing/SKILL.md +233 -0
- package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/src/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/src/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
- package/src/templates/default/AGENTS.md +17 -2
- package/src/templates/default/agent-native.config.ts +6 -0
- package/src/templates/default/app/i18n/ar-SA.ts +2 -0
- package/src/templates/default/app/i18n/de-DE.ts +2 -0
- package/src/templates/default/app/i18n/en-US.ts +3 -1
- package/src/templates/default/app/i18n/es-ES.ts +2 -0
- package/src/templates/default/app/i18n/fr-FR.ts +2 -0
- package/src/templates/default/app/i18n/hi-IN.ts +2 -0
- package/src/templates/default/app/i18n/ja-JP.ts +2 -0
- package/src/templates/default/app/i18n/ko-KR.ts +2 -0
- package/src/templates/default/app/i18n/pt-BR.ts +2 -0
- package/src/templates/default/app/i18n/zh-CN.ts +2 -0
- package/src/templates/default/app/i18n/zh-TW.ts +2 -0
- package/src/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
- package/src/templates/headless/.agents/skills/security/SKILL.md +324 -0
- package/src/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
- package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
- package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
- package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
- package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
- package/src/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
- package/src/templates/workspace-core/AGENTS.md +9 -3
- package/src/templates/workspace-root/AGENTS.md +26 -1
- package/src/templates/workspace-root/agent-native.config.ts +8 -0
- package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/analytics/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/analytics/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/assets/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/assets/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/brain/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/brain/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/calendar/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/calendar/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/clips/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/clips/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/content/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/content/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/design/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/design/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/dispatch/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/dispatch/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/forms/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/forms/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/macros/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/mail/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/mail/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/plan/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/plan/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/slides/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/slides/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/corpus/templates/tasks/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +0 -195
- package/corpus/templates/tasks/.agents/skills/feature-flags/SKILL.md +0 -169
- package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/dist/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
- package/dist/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
- package/dist/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/dist/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
- package/dist/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
- package/dist/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
- package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
- package/dist/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
- package/dist/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
- package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
- package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
- package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
- package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
- package/dist/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
- package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
- package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
- package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
- package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
- package/dist/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
- package/dist/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
- package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
- package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
- package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
- package/dist/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
- package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
- package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
- package/dist/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
- package/dist/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
- package/dist/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
- package/dist/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
- package/dist/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
- package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/dist/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
- package/dist/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
- package/dist/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
- package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
- package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
- package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
- package/dist/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
- package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
- package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
- package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
- package/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
- package/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
- package/src/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/src/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
- package/src/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
- package/src/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
- package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
- package/src/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
- package/src/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
- package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
- package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
- package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
- package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
- package/src/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
- package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
- package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
- package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
- package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
- package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
- package/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
- package/src/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
- package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
- package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
- package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
- package/src/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
- package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
- package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
- package/src/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
- package/src/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
- package/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
- package/src/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
- package/src/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
- package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
- package/src/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
- package/src/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
- package/src/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
- package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
- package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
- package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
- package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
- package/src/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
- package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
- package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
- package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
- package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: performance
|
|
3
|
-
description: >-
|
|
4
|
-
Keep apps and templates loading fast. Read when adding a data model, a
|
|
5
|
-
list/read action, a page or sidebar that loads data, or when something loads
|
|
6
|
-
slowly, or when adding a dependency to the deployed server bundle. Covers
|
|
7
|
-
column projection, indexing hot-path queries, avoiding N+1 and round-trip
|
|
8
|
-
waterfalls, cheap polling, not recomputing on every read, and cold-start
|
|
9
|
-
artifact size.
|
|
10
|
-
scope: dev
|
|
11
|
-
metadata:
|
|
12
|
-
internal: true
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
# Performance — Keep Loads Fast
|
|
16
|
-
|
|
17
|
-
## Rule
|
|
18
|
-
|
|
19
|
-
Treat every list, every read, and every page load as a latency budget. Two
|
|
20
|
-
things dominate it: **how much data crosses the wire**, and **how many
|
|
21
|
-
round-trips and table scans it takes**. On a hosted/serverless SQL backend each
|
|
22
|
-
query is a network round-trip, and an unindexed filter scans the whole — often
|
|
23
|
-
shared and growing — table. So default to **projected columns**, **indexed
|
|
24
|
-
hot-path queries**, and **parallel/batched** fetches. These rules are
|
|
25
|
-
provider-agnostic: they hold on SQLite, Postgres, or any managed SQL backend.
|
|
26
|
-
|
|
27
|
-
This skill is about the data and load path. See the `storing-data` skill for the schema
|
|
28
|
-
and migration mechanics it references, and the `real-time-sync` skill for how updates
|
|
29
|
-
already reach the UI without polling.
|
|
30
|
-
|
|
31
|
-
## 1. Project columns — never `SELECT *` on a list
|
|
32
|
-
|
|
33
|
-
A list/index query should select only the columns the list actually renders.
|
|
34
|
-
|
|
35
|
-
- **Never return heavy columns in a list**: large JSON/text blobs such as
|
|
36
|
-
document bodies, rendered HTML, `config`/`layout`/`spec`/`data`/`tracks`,
|
|
37
|
-
tool results, or base64 attachments. Pulling them for every row is the single
|
|
38
|
-
most common cause of a slow list.
|
|
39
|
-
- Heavy/full columns belong on the **single-item GET/detail** path only.
|
|
40
|
-
- Need a preview from a big column? Select a **truncated substring at the DB**,
|
|
41
|
-
not the whole column — and it stays portable:
|
|
42
|
-
|
|
43
|
-
```ts
|
|
44
|
-
// Drizzle — project, and truncate the heavy column for the preview
|
|
45
|
-
const rows = await db
|
|
46
|
-
.select({
|
|
47
|
-
id: docs.id,
|
|
48
|
-
title: docs.title,
|
|
49
|
-
updatedAt: docs.updatedAt,
|
|
50
|
-
// substr/length work on both SQLite and Postgres
|
|
51
|
-
preview: sql<string>`substr(${docs.content}, 1, 400)`,
|
|
52
|
-
})
|
|
53
|
-
.from(docs)
|
|
54
|
-
.where(accessFilter(docs, docShares))
|
|
55
|
-
.orderBy(desc(docs.updatedAt));
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
- After narrowing the projection, update the row mapper and its return type so a
|
|
59
|
-
dropped column is provably unused on the list path. If the list genuinely
|
|
60
|
-
renders a heavy column (a thumbnail, an inline preview the UI shows), keep it —
|
|
61
|
-
don't break behavior to chase a payload win.
|
|
62
|
-
|
|
63
|
-
## 2. Index the hot paths
|
|
64
|
-
|
|
65
|
-
Indexes are added through the **versioned migration array** in
|
|
66
|
-
`server/plugins/db.ts` as `CREATE INDEX IF NOT EXISTS …` — not through a
|
|
67
|
-
schema-level `index()` helper (the framework applies indexes via migrations; see
|
|
68
|
-
the `storing-data` skill). Add an index for any column a hot query **filters or sorts**
|
|
69
|
-
on. The recurring ones:
|
|
70
|
-
|
|
71
|
-
- **Ownable tables** → `(owner_email, org_id, <the list's ORDER BY column>)`.
|
|
72
|
-
Access scoping filters by owner/org and lists sort by `updated_at`/`created_at`.
|
|
73
|
-
- **Shares tables** (`{resource}_shares`) → `(resource_id, principal_type, principal_id)`.
|
|
74
|
-
Access checks run correlated `EXISTS` subqueries against these on every list.
|
|
75
|
-
- **Child / foreign-key columns** used to load children (e.g. `responses.form_id`,
|
|
76
|
-
`comments.parent_id`, an events log's `*_id`) → index the FK, plus its sort
|
|
77
|
-
column when the children are ordered. An unindexed FK means a full scan of the
|
|
78
|
-
child table on every parent open. **A foreign-key reference does not create an
|
|
79
|
-
index automatically** — add it explicitly.
|
|
80
|
-
- **Status-filtered lists** → match the real `WHERE`, e.g. `(owner_email, status)`
|
|
81
|
-
or `(status, <sort>)`.
|
|
82
|
-
|
|
83
|
-
Keep index DDL **dialect-agnostic and idempotent**:
|
|
84
|
-
|
|
85
|
-
```sql
|
|
86
|
-
CREATE INDEX IF NOT EXISTS forms_owner_org_updated_idx ON forms (owner_email, org_id, updated_at)
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
No `DESC`, no partial `WHERE`, no provider-specific syntax — it then runs on
|
|
90
|
-
SQLite and Postgres alike, is safe to re-run, and applies on next startup.
|
|
91
|
-
Indexes mostly bite **as data grows** and on **unbounded child tables** (a
|
|
92
|
-
seq-scan of 10 rows is instant; of a shared, ever-growing log it is not), so
|
|
93
|
-
index the growing tables first.
|
|
94
|
-
|
|
95
|
-
## 3. Don't fan out queries — batch and parallelize
|
|
96
|
-
|
|
97
|
-
- **No N+1.** Never loop issuing one query per item. Load children for many
|
|
98
|
-
parents in one `inArray(child.parentId, ids)` query, then group in memory.
|
|
99
|
-
- **Count in SQL** (`count()`), never "select all rows then `.length`".
|
|
100
|
-
- **Parallelize independent queries** with `Promise.all` rather than sequential
|
|
101
|
-
`await`s — each `await` is another round-trip.
|
|
102
|
-
- Prefer **one composed endpoint** over several dependent calls.
|
|
103
|
-
|
|
104
|
-
For provider wrappers, inspect the upstream API before building a list-then-
|
|
105
|
-
enrich flow. Prefer the richest endpoint that can apply the real filters and
|
|
106
|
-
return the needed associations or participants in one paginated operation.
|
|
107
|
-
Cursor pagination is already serial; adding a serial detail/enrichment request
|
|
108
|
-
to every page doubles its critical path. Exhaustive records belong in corpus
|
|
109
|
-
recipes or data programs with explicit coverage, not one agent tool call per
|
|
110
|
-
page or item.
|
|
111
|
-
|
|
112
|
-
First-class provider actions should represent one stable conceptual operation.
|
|
113
|
-
Keep arbitrary endpoint, filter, and pagination access in the provider API
|
|
114
|
-
substrate; do not turn a convenience action into a capability ceiling or
|
|
115
|
-
duplicate the provider transport, auth, quota, and cache implementation.
|
|
116
|
-
|
|
117
|
-
## 4. Avoid client-side waterfalls
|
|
118
|
-
|
|
119
|
-
- Don't gate query B on query A's result unless B truly needs it. Fire
|
|
120
|
-
independent `useActionQuery` / `useQuery` hooks **in parallel**; never make the
|
|
121
|
-
loading skeleton wait on a serial chain.
|
|
122
|
-
- Load the visible page from one read where possible, and **lazy-load**
|
|
123
|
-
secondary / below-the-fold data after first paint.
|
|
124
|
-
|
|
125
|
-
## 5. Poll cheaply; compute once
|
|
126
|
-
|
|
127
|
-
- Updates already reach the UI through the `real-time-sync` skill (`useDbSync` / SSE).
|
|
128
|
-
Don't add an aggressive `refetchInterval` that re-runs a heavy list/read every
|
|
129
|
-
couple of seconds. If you must poll, use a **wide interval** and a **cheap**
|
|
130
|
-
endpoint.
|
|
131
|
-
- **Never do expensive per-request work on a read that runs on every load/poll**:
|
|
132
|
-
re-rendering HTML/markdown, pretty-printing, re-parsing / migrating /
|
|
133
|
-
normalizing / sanitizing stored JSON. Do that work at **write time** (store the
|
|
134
|
-
result) or compute it **lazily only for the caller that needs it**. Reads on
|
|
135
|
-
the hot path must be cheap.
|
|
136
|
-
- Data the UI doesn't display (export formats, alternate renderings) belongs in a
|
|
137
|
-
separate on-demand action, not baked into the hot read.
|
|
138
|
-
|
|
139
|
-
## 6. SSR shell caching — load-bearing, do not undo
|
|
140
|
-
|
|
141
|
-
Every SSR HTML page and React Router `.data` response is one impersonal,
|
|
142
|
-
public shell, hard-cached at the CDN and served identically to every visitor —
|
|
143
|
-
logged in or not. This is the single biggest lever on first-response latency:
|
|
144
|
-
one shared cache entry serves the whole site instead of a per-user render on
|
|
145
|
-
every request. Adding `private`, `no-store`, `Vary: Cookie`, a session read, or
|
|
146
|
-
an auth branch to the SSR path defeats the cache for **every visitor**, not
|
|
147
|
-
just one.
|
|
148
|
-
|
|
149
|
-
If you're debugging a slow first response, check whether something
|
|
150
|
-
re-personalized the shell before concluding the render itself is slow — the
|
|
151
|
-
fix is client-side data loading after the shell paints, never per-user SSR. If
|
|
152
|
-
the shell is clean and a cold miss is still seconds long, the cost is upstream
|
|
153
|
-
of the render: see §9.
|
|
154
|
-
See the `authentication` skill for the full model and `guard:ssr-cache-shell`
|
|
155
|
-
plus `ssr-handler.spec.ts` (`packages/core/src/server/ssr-handler.ts`) for the
|
|
156
|
-
enforced contract.
|
|
157
|
-
|
|
158
|
-
**Never route mutation-fresh reads through SSR loader data.** Data that changes
|
|
159
|
-
when a user acts belongs in an action, read from the client with
|
|
160
|
-
`useActionQuery` / `useActionMutation` and kept live by `useDbSync()` polling —
|
|
161
|
-
that path never touches the SSR shell cache. A `useRevalidator()` after a
|
|
162
|
-
mutation re-fetches `.data` with a plain GET and can legitimately be served the
|
|
163
|
-
cached copy. SSR loaders render the public shell; the client resolves anything
|
|
164
|
-
that must be fresh.
|
|
165
|
-
|
|
166
|
-
The one supported knob is the deployment-wide `AGENT_NATIVE_SSR_CACHE` env var:
|
|
167
|
-
unset/`on` keeps the default, `off` sends `no-store`, and a duration such as
|
|
168
|
-
`30s` / `5m` shortens freshness. It is for deployments whose host does not purge
|
|
169
|
-
its CDN on deploy, or whose loaders genuinely serve mutable public data. It
|
|
170
|
-
changes cache duration only — cookies are still stripped before render, so
|
|
171
|
-
turning it off does not make SSR personalized. There is deliberately no
|
|
172
|
-
per-route or per-request override; that is how one visitor's payload lands in
|
|
173
|
-
another visitor's shared CDN entry.
|
|
174
|
-
|
|
175
|
-
## 7. Big payloads and long lists
|
|
176
|
-
|
|
177
|
-
- **Paginate or window** unbounded lists (messages, responses, events, activity).
|
|
178
|
-
Don't load the entire history on open; load a recent window and fetch older on
|
|
179
|
-
demand.
|
|
180
|
-
- Don't store **unbounded blobs inline** in a row that a list/load pulls.
|
|
181
|
-
Reference large content separately so opening the parent stays cheap.
|
|
182
|
-
- Never inline binary payloads in columns a list, poll, or `view-screen` summary
|
|
183
|
-
reads. Images, PDFs, audio/video, archives, screenshots, and base64
|
|
184
|
-
attachments belong in file/blob storage; SQL rows should hold URLs, asset ids,
|
|
185
|
-
storage keys, or opaque blob refs.
|
|
186
|
-
- **Virtualize** very long rendered lists on the client so off-screen rows aren't
|
|
187
|
-
parsed/rendered every update.
|
|
188
|
-
|
|
189
|
-
## 8. Don't do data work at startup
|
|
190
|
-
|
|
191
|
-
A server plugin's body is not "once per deploy." These apps run as serverless
|
|
192
|
-
functions, so it runs **once per cold start** — on the critical path of whichever
|
|
193
|
-
user's request woke the process, and again on the next cold start. An in-process
|
|
194
|
-
`let done = false` memo does not help: the new isolate starts with `false`.
|
|
195
|
-
|
|
196
|
-
This has already cost real outages and sustained slowness here, not hypothetical
|
|
197
|
-
ones — Slides startup slowness, Analytics paying startup cost on API calls, and a
|
|
198
|
-
production incident. The shape that did it:
|
|
199
|
-
|
|
200
|
-
```ts
|
|
201
|
-
// templates/<app>/server/plugins/db.ts — every cold start pays all of this
|
|
202
|
-
export default async (nitroApp) => {
|
|
203
|
-
await migrations(nitroApp);
|
|
204
|
-
await retypeBooleanColumnsOnPostgres(); // rewrites tables on Postgres
|
|
205
|
-
await backfillLegacyTables();
|
|
206
|
-
await syncWorkspacesToOrganizations();
|
|
207
|
-
await backfillRecordingOrgId();
|
|
208
|
-
};
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Schema DDL is **not** exempt, though it reads like it should be. Measured on a
|
|
212
|
-
180-table production database: the migration "fast path" (`SELECT MAX(version)`)
|
|
213
|
-
took **5.5s** and the `information_schema` probe **8.3s** — paid on every cold
|
|
214
|
-
start, until health checks timed out and the app was down. Bounded is not the
|
|
215
|
-
same as fast, and "it short-circuits cheaply" is an assumption until someone
|
|
216
|
-
measures it on the largest database you have.
|
|
217
|
-
|
|
218
|
-
The same applies doubly to **work whose cost grows with the data** — backfills, retypes, aggregations, recomputes, re-syncs,
|
|
219
|
-
sweeps, cache warming, index rebuilds. Those have three better homes, all of
|
|
220
|
-
which already exist:
|
|
221
|
-
|
|
222
|
-
- a **scheduled job** (`recurring-jobs`, `automations` skills),
|
|
223
|
-
- a **one-off CLI or release-time script**, run deliberately, once,
|
|
224
|
-
- **lazily behind the first caller that needs it**, memoized — accepting that
|
|
225
|
-
the memo is per-isolate, so the work must be small enough to repeat.
|
|
226
|
-
|
|
227
|
-
If it truly must complete before the app can serve a correct response, it is a
|
|
228
|
-
migration, not a backfill — say so on the line and keep it bounded:
|
|
229
|
-
|
|
230
|
-
```ts
|
|
231
|
-
await backfillOneRow(); // guard:allow-boot-data-work — single row, bounded
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
`guard:no-boot-data-work` fails on new boot-time data work, scoped to lines this
|
|
235
|
-
branch adds. It cannot see everything — a helper that hides the work one call
|
|
236
|
-
deeper reads as innocent — so the rule matters more than the check.
|
|
237
|
-
|
|
238
|
-
## 9. Cold start is the artifact, not just the work it does
|
|
239
|
-
|
|
240
|
-
§8 covers what the process does at boot. This covers how much there is to boot.
|
|
241
|
-
Measured in production: a cold cache miss on `www.agent-native.com` returned in
|
|
242
|
-
**4.5–6.0s** while the in-handler `server-timing: app;dur` was only **~2100ms** —
|
|
243
|
-
the other ~2900ms is platform init, spent before any of our code evaluates. A
|
|
244
|
-
different app with a healthy database measured **13.4s** TTFB on its first cold
|
|
245
|
-
request with `app;dur=1338`, so ~12s of init. Platform init scales with the size
|
|
246
|
-
of the deployed artifact. Every app pays it, and no query tuning can reach it.
|
|
247
|
-
|
|
248
|
-
- **The `/*` page function is the one every visitor's cache miss wakes.** Nothing
|
|
249
|
-
belongs in it that a page render cannot call. Headless browsers, ffmpeg, image
|
|
250
|
-
rasterizers, and other heavy runtimes belong in the function that actually
|
|
251
|
-
invokes them, or behind a job — not in the default handler. PR #2684, titled
|
|
252
|
-
"Harden auth and cold-start data paths", put 78MB of headless Chromium into
|
|
253
|
-
every page function; nothing in the diff looked like a performance change.
|
|
254
|
-
- **Each extra emitted function is a full second copy of the bundle.** Netlify
|
|
255
|
-
copies the whole server directory per function, so splitting out a
|
|
256
|
-
`-background` or per-route function multiplies existing weight rather than
|
|
257
|
-
dividing it. Trim the artifact before you split it.
|
|
258
|
-
- **Already-compressed binaries do not shrink again in the deploy zip.** A
|
|
259
|
-
Brotli-packed browser or a static ffmpeg build costs close to its full size in
|
|
260
|
-
upload and in cold-start extraction. Budget from bytes on disk, never from an
|
|
261
|
-
assumption that compression will absorb it.
|
|
262
|
-
- **Never resolve a copied dependency by walking ancestor `node_modules`.** In a
|
|
263
|
-
monorepo that walk does not fail — it finds a sibling app's copy and ships
|
|
264
|
-
that. Resolve from the app's own dependency root and throw when it is missing;
|
|
265
|
-
a silently-found wrong package is precisely the indistinguishable-from-success
|
|
266
|
-
failure this repo bans.
|
|
267
|
-
|
|
268
|
-
`packages/core/src/deploy/build.ts` is what decides all of this: the
|
|
269
|
-
platform/arch filter at `:2384-2410` and the per-preset copy list at
|
|
270
|
-
`:4499-4504`. Adding a package there adds it to every page function.
|
|
271
|
-
|
|
272
|
-
**Measure a built bundle by timing the import and forcing exit.** Never measure
|
|
273
|
-
by waiting for the process to exit — module scope starts timers and opens
|
|
274
|
-
handles, so process lifetime measures those, not boot cost. That exact mistake
|
|
275
|
-
produced a wrong number during the investigation behind this section.
|
|
276
|
-
|
|
277
|
-
```sh
|
|
278
|
-
node -e 'const t=Date.now();import(process.argv[1]).then(()=>{console.log(`${Date.now()-t}ms`);process.exit(0)})' \
|
|
279
|
-
./.netlify/functions-internal/server/main.mjs
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
## Checklist — run before shipping a list/read or a new table
|
|
283
|
-
|
|
284
|
-
- [ ] List selects only displayed columns; heavy blobs excluded or `substr`-truncated.
|
|
285
|
-
- [ ] Every hot-path `WHERE` / `ORDER BY` column is indexed (owner/org/sort,
|
|
286
|
-
shares `resource_id`, child FKs, status filters) via a `db.ts` migration.
|
|
287
|
-
- [ ] No N+1; independent queries parallelized; counts via SQL `count()`.
|
|
288
|
-
- [ ] Client fires independent queries in parallel, not a waterfall.
|
|
289
|
-
- [ ] No heavy recompute on every read; no aggressive polling of heavy endpoints.
|
|
290
|
-
- [ ] Unbounded lists are paginated/windowed; large blobs aren't inlined on the hot path.
|
|
291
|
-
- [ ] SSR HTML/`.data` path stays session-blind and cacheable — no `private`,
|
|
292
|
-
`no-store`, `Vary: Cookie`, or auth branch added to it.
|
|
293
|
-
- [ ] No data work added to a server plugin body / module scope — backfills,
|
|
294
|
-
aggregations and re-syncs run on every cold start there (see §8).
|
|
295
|
-
- [ ] Mutation-fresh reads go through actions + `useActionQuery`, not SSR loader
|
|
296
|
-
data.
|
|
297
|
-
- [ ] No heavy runtime (browser, ffmpeg, rasterizer) added to what the `/*` page
|
|
298
|
-
function ships, and no new copied dependency resolved by walking ancestor
|
|
299
|
-
`node_modules` (see §9).
|
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: qa
|
|
3
|
-
description: >-
|
|
4
|
-
Autonomous multi-app QA sweep that drives template apps with Playwright MCP.
|
|
5
|
-
Use only when the user explicitly runs /qa or asks for an end-to-end QA sweep.
|
|
6
|
-
Do not load it for ordinary feature work, single-page checks, or one-off bug
|
|
7
|
-
fixes.
|
|
8
|
-
user-invocable: true
|
|
9
|
-
scope: dev
|
|
10
|
-
metadata:
|
|
11
|
-
internal: true
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# QA Testing
|
|
15
|
-
|
|
16
|
-
Autonomous QA testing that spins up template apps, tests them with Playwright in parallel, fixes issues, retests, and reports findings. Only alerts the user when blocked.
|
|
17
|
-
|
|
18
|
-
This is an explicitly requested sweep, not a default verification step. Do not run any part of it — dev servers, browser automation, tester agents — as follow-up to a normal code change.
|
|
19
|
-
|
|
20
|
-
## Usage
|
|
21
|
-
|
|
22
|
-
```
|
|
23
|
-
/qa # test mail, calendar, content, forms
|
|
24
|
-
/qa --apps mail,forms # test specific apps
|
|
25
|
-
/qa --focus "test form submission and compose" # prioritize specific flows
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Browser MCP Readiness
|
|
29
|
-
|
|
30
|
-
QA can use the framework's built-in browser MCP capabilities instead of a hand-written `mcp.config.json`. The built-ins are off by default and are toggled through `/_agent-native/mcp/builtin`.
|
|
31
|
-
|
|
32
|
-
- Prefer `browser-playwright` for automated QA sweeps: it runs `npx -y @playwright/mcp@0.0.75`.
|
|
33
|
-
- Use `browser-chrome-devtools` only when the test specifically needs to attach to a live Chrome session. It runs `npx -y chrome-devtools-mcp@0.26.0 --autoConnect --no-usage-statistics` and requires Chrome 144+ with remote debugging enabled. Do not assume it signs into the user's Chrome profile.
|
|
34
|
-
- Browser built-ins are exclusive per scope: enabling Chrome disables Playwright and enabling Playwright disables Chrome.
|
|
35
|
-
- `computer-use` runs `npx -y computer-use-mcp@1.8.0` and is macOS-only.
|
|
36
|
-
|
|
37
|
-
**Args:**
|
|
38
|
-
|
|
39
|
-
- `--apps` — comma-separated app names (default: `mail,calendar,content,forms`)
|
|
40
|
-
- `--focus` — natural language guidance for what to prioritize
|
|
41
|
-
|
|
42
|
-
## Orchestrator Steps
|
|
43
|
-
|
|
44
|
-
You (the agent running this skill) are the orchestrator. Follow these steps in order.
|
|
45
|
-
|
|
46
|
-
### Step 1: Parse Args
|
|
47
|
-
|
|
48
|
-
Parse the user's invocation to determine:
|
|
49
|
-
|
|
50
|
-
- **apps**: which apps to test (default: mail, calendar, content, forms)
|
|
51
|
-
- **focus**: optional test priority guidance
|
|
52
|
-
|
|
53
|
-
### Step 2: Check Credential Readiness
|
|
54
|
-
|
|
55
|
-
For each app, check if required credentials exist:
|
|
56
|
-
|
|
57
|
-
| App | Check | Can test without? |
|
|
58
|
-
| -------- | -------------------------------------------------------- | ----------------- |
|
|
59
|
-
| forms | No credentials needed | Yes |
|
|
60
|
-
| content | No credentials needed (Notion is opt-in) | Yes |
|
|
61
|
-
| calendar | `templates/calendar/.env` has `GOOGLE_CLIENT_ID` present | Partially — local events work, Google sync won't |
|
|
62
|
-
| mail | `templates/mail/.env` has `GOOGLE_CLIENT_ID` present | Partially — UI renders, Gmail features won't |
|
|
63
|
-
|
|
64
|
-
Read each app's `.env` file (if it exists) only to check whether required names
|
|
65
|
-
are present. Never print, copy, summarize, paste, or pass `.env` values into
|
|
66
|
-
tester prompts, reports, screenshots, logs, or chat. If credentials are missing:
|
|
67
|
-
|
|
68
|
-
- Still test the app — many features work without external APIs
|
|
69
|
-
- Include in the tester's instructions: "No Google credentials found. Test local features. Flag any feature that crashes without credentials as 'needs credentials' rather than a bug."
|
|
70
|
-
- Only alert the user (via SendMessage to team lead or AskUserQuestion) if the app **cannot start at all**
|
|
71
|
-
|
|
72
|
-
### Step 3: Start Dev Servers
|
|
73
|
-
|
|
74
|
-
Start each app's dev server on a dedicated port using `run_in_background`:
|
|
75
|
-
|
|
76
|
-
| App | Port | Command |
|
|
77
|
-
|----------|------|---------|
|
|
78
|
-
| mail | 9201 | `cd templates/mail && PORT=9201 pnpm dev` |
|
|
79
|
-
| calendar | 9202 | `cd templates/calendar && PORT=9202 pnpm dev` |
|
|
80
|
-
| content | 9203 | `cd templates/content && PORT=9203 pnpm dev` |
|
|
81
|
-
| forms | 9204 | `cd templates/forms && PORT=9204 pnpm dev` |
|
|
82
|
-
|
|
83
|
-
Start all servers in parallel (multiple Bash calls with `run_in_background: true`).
|
|
84
|
-
|
|
85
|
-
Then verify each server is ready by polling with curl:
|
|
86
|
-
|
|
87
|
-
```bash
|
|
88
|
-
for i in {1..30}; do curl -s -o /dev/null -w "%{http_code}" http://localhost:9201 && break; sleep 1; done
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
If a server fails to start within 30 seconds, skip that app and note it in the report.
|
|
92
|
-
|
|
93
|
-
### Step 4: Generate Test Plans
|
|
94
|
-
|
|
95
|
-
For each app, read these files to understand what to test:
|
|
96
|
-
|
|
97
|
-
1. `templates/<app>/app/routes/` or `templates/<app>/app/routes.ts` — discover all pages
|
|
98
|
-
2. `templates/<app>/CLAUDE.md` — features, API routes, data model
|
|
99
|
-
3. `templates/<app>/actions/` — domain operations the UI and agent share
|
|
100
|
-
4. `templates/<app>/server/routes/api/` — route-only endpoints such as uploads, streaming, webhooks, and OAuth callbacks
|
|
101
|
-
|
|
102
|
-
Combine with any `--focus` guidance to produce a test plan. The test plan is a numbered list of user-facing flows to verify. Example:
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
1. Home page loads without errors
|
|
106
|
-
2. Create a new item via the UI
|
|
107
|
-
3. Edit an existing item
|
|
108
|
-
4. Delete an item
|
|
109
|
-
5. Check all navigation links work
|
|
110
|
-
6. Verify no console errors on any page
|
|
111
|
-
7. Verify no failed network requests
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Step 5: Create Team and Spawn Testers
|
|
115
|
-
|
|
116
|
-
Create a team and spawn one tester agent per app, all in parallel:
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
TeamCreate: name="qa", description="QA testing sweep"
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Create one task per app:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
TaskCreate: subject="QA test <app> on port <port>", description="<test plan>"
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Then spawn tester agents in parallel using the Agent tool. Each agent gets:
|
|
129
|
-
|
|
130
|
-
- `name`: `qa-<app>` (e.g., `qa-mail`)
|
|
131
|
-
- `team_name`: `qa`
|
|
132
|
-
- `mode`: `auto`
|
|
133
|
-
- The full tester prompt (see Tester Agent Prompt below)
|
|
134
|
-
|
|
135
|
-
### Step 6: Monitor and Alert
|
|
136
|
-
|
|
137
|
-
After spawning testers, wait for their idle notifications and task updates.
|
|
138
|
-
|
|
139
|
-
- When a tester completes its task, note its findings
|
|
140
|
-
- When a tester reports being blocked (missing credentials, app won't start, needs user input), relay that to the user via AskUserQuestion
|
|
141
|
-
- When all testers are done, proceed to Step 7
|
|
142
|
-
|
|
143
|
-
### Step 7: Compile Report and Shutdown
|
|
144
|
-
|
|
145
|
-
Gather all tester reports from their task updates. Print a compiled summary:
|
|
146
|
-
|
|
147
|
-
```markdown
|
|
148
|
-
# QA Summary — <date>
|
|
149
|
-
|
|
150
|
-
## Apps Tested: N
|
|
151
|
-
## Total Issues Found: N
|
|
152
|
-
## Fixed: N
|
|
153
|
-
## Needs Review: N
|
|
154
|
-
|
|
155
|
-
### Mail App
|
|
156
|
-
[tester report]
|
|
157
|
-
|
|
158
|
-
### Forms App
|
|
159
|
-
[tester report]
|
|
160
|
-
|
|
161
|
-
...
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
Then shut down all teammates:
|
|
165
|
-
|
|
166
|
-
```
|
|
167
|
-
SendMessage to each tester: { type: "shutdown_request" }
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Tester Agent Prompt
|
|
173
|
-
|
|
174
|
-
Use this as the prompt when spawning each tester agent via the Agent tool. Fill in the `{{placeholders}}`:
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
**START OF TESTER PROMPT**
|
|
179
|
-
|
|
180
|
-
You are a QA tester for the **{{app_name}}** app running at `http://localhost:{{port}}`.
|
|
181
|
-
|
|
182
|
-
## Your Mission
|
|
183
|
-
|
|
184
|
-
Test the app thoroughly using Playwright MCP tools. Find bugs, fix them, retest. Report your findings.
|
|
185
|
-
|
|
186
|
-
## Team Context
|
|
187
|
-
|
|
188
|
-
You are on team "qa". Your name is "qa-{{app_name}}".
|
|
189
|
-
|
|
190
|
-
- Use TaskUpdate to mark your task as `in_progress` when you start
|
|
191
|
-
- Use TaskUpdate to mark your task as `completed` when done, with your report in the description
|
|
192
|
-
- If you are blocked and need user input, send a message to the team lead explaining what you need
|
|
193
|
-
|
|
194
|
-
## Credential Status
|
|
195
|
-
|
|
196
|
-
{{credential_status}}
|
|
197
|
-
|
|
198
|
-
## Test Plan
|
|
199
|
-
|
|
200
|
-
{{test_plan}}
|
|
201
|
-
|
|
202
|
-
## How to Test
|
|
203
|
-
|
|
204
|
-
Use these Playwright MCP tools:
|
|
205
|
-
|
|
206
|
-
1. **Navigate**: `browser_navigate` to `http://localhost:{{port}}<path>`
|
|
207
|
-
2. **See the page**: `browser_snapshot` — returns an accessibility tree showing all visible elements with `ref` attributes
|
|
208
|
-
3. **Click**: `browser_click` with `ref` from the snapshot
|
|
209
|
-
4. **Type**: `browser_type` with `ref` and `text`
|
|
210
|
-
5. **Fill forms**: `browser_fill_form` with `ref` and `values`
|
|
211
|
-
6. **Check console**: `browser_console_messages` — look for errors
|
|
212
|
-
7. **Check network**: `browser_network_requests` — look for failed requests (4xx, 5xx)
|
|
213
|
-
8. **Wait**: `browser_wait_for` when you need to wait for content to appear
|
|
214
|
-
9. **Screenshot**: `browser_take_screenshot` when you want to capture the visual state
|
|
215
|
-
|
|
216
|
-
### Testing Loop
|
|
217
|
-
|
|
218
|
-
For each test in your plan:
|
|
219
|
-
|
|
220
|
-
1. Navigate to the relevant page
|
|
221
|
-
2. Take a snapshot to see what's on screen
|
|
222
|
-
3. Check console messages for errors
|
|
223
|
-
4. Check network requests for failures
|
|
224
|
-
5. Interact with the page — click buttons, fill forms, navigate flows
|
|
225
|
-
6. If something is broken:
|
|
226
|
-
a. Document: what page, what's wrong
|
|
227
|
-
b. Read the relevant source files to understand the issue
|
|
228
|
-
c. Fix the code
|
|
229
|
-
d. Wait 2-3 seconds for Vite HMR to hot-reload
|
|
230
|
-
e. Retest by taking a new snapshot
|
|
231
|
-
f. If still broken after 3 attempts, mark as "needs human review" and move on
|
|
232
|
-
7. Move to the next test
|
|
233
|
-
|
|
234
|
-
After completing all tests, do **one more pass** on any pages where you found issues to verify fixes didn't break other things.
|
|
235
|
-
|
|
236
|
-
**Maximum 2 full passes.** Don't loop forever.
|
|
237
|
-
|
|
238
|
-
### Start by navigating to the home page
|
|
239
|
-
|
|
240
|
-
Always start by navigating to `http://localhost:{{port}}/` and taking a snapshot to verify the app is running.
|
|
241
|
-
|
|
242
|
-
If the app shows an error page or fails to load, check the dev server output and try to diagnose. If it's a missing dependency or config issue, report it and stop — don't spend time debugging infrastructure.
|
|
243
|
-
|
|
244
|
-
## Isolation Rules
|
|
245
|
-
|
|
246
|
-
**CRITICAL:** You may ONLY modify files within `templates/{{app_name}}/`. If a bug requires changes to `packages/core/` or any other template, report it as a finding but do NOT fix it.
|
|
247
|
-
|
|
248
|
-
After modifying any source file, run:
|
|
249
|
-
```bash
|
|
250
|
-
npx prettier --write <file>
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
## What Counts as a Bug
|
|
254
|
-
|
|
255
|
-
- Page crashes or shows error overlay
|
|
256
|
-
- Console errors (not warnings — errors only)
|
|
257
|
-
- Network requests returning 4xx or 5xx
|
|
258
|
-
- Buttons/links that don't work
|
|
259
|
-
- Forms that don't submit
|
|
260
|
-
- Data that doesn't save or display
|
|
261
|
-
- Layout severely broken (overlapping text, invisible elements)
|
|
262
|
-
- Features described in CLAUDE.md that don't work
|
|
263
|
-
|
|
264
|
-
What is NOT a bug:
|
|
265
|
-
- Minor styling preferences
|
|
266
|
-
- Missing features that aren't described in CLAUDE.md
|
|
267
|
-
- Warnings in console
|
|
268
|
-
- Slow loading (unless > 10 seconds)
|
|
269
|
-
|
|
270
|
-
## Report Format
|
|
271
|
-
|
|
272
|
-
When you're done, update your task (via TaskUpdate) with status `completed` and set the description to your report:
|
|
273
|
-
|
|
274
|
-
```markdown
|
|
275
|
-
## QA Report: {{app_name}}
|
|
276
|
-
|
|
277
|
-
### Summary: N found, N fixed, N needs review
|
|
278
|
-
|
|
279
|
-
#### Fixed
|
|
280
|
-
1. **Short description** — What file you changed and why
|
|
281
|
-
|
|
282
|
-
#### Needs Review
|
|
283
|
-
1. **Short description** — Why you couldn't fix it
|
|
284
|
-
|
|
285
|
-
#### Skipped (needs credentials)
|
|
286
|
-
1. **Feature name** — What credential is needed
|
|
287
|
-
|
|
288
|
-
#### Pages Tested
|
|
289
|
-
- /path (page name) — status (OK, N issues fixed, N needs review)
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
**END OF TESTER PROMPT**
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Troubleshooting
|
|
297
|
-
|
|
298
|
-
### Port already in use
|
|
299
|
-
|
|
300
|
-
Kill the process on the port before starting:
|
|
301
|
-
|
|
302
|
-
```bash
|
|
303
|
-
lsof -ti :9201 | xargs kill -9 2>/dev/null; true
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### Dev server won't start
|
|
307
|
-
|
|
308
|
-
Common causes:
|
|
309
|
-
|
|
310
|
-
- Missing `node_modules` — run `pnpm install` from root first
|
|
311
|
-
- Missing `.env` file — some apps need one even if empty. Check `.env.example`
|
|
312
|
-
- Port conflict — kill stale processes (see above)
|
|
313
|
-
- Build error in core — run `pnpm --filter @agent-native/core build` first
|
|
314
|
-
|
|
315
|
-
### Playwright MCP not responding
|
|
316
|
-
|
|
317
|
-
The Playwright MCP server must be configured in Claude Code's MCP settings. If browser tools aren't available, the tester agent should report "Playwright MCP tools not available" and stop.
|
|
318
|
-
|
|
319
|
-
### HMR not picking up changes
|
|
320
|
-
|
|
321
|
-
After editing a file, wait 2-3 seconds. If the page doesn't update, try a hard refresh by navigating away and back. Vite HMR sometimes misses changes in server-side files — restart the dev server if needed.
|
|
322
|
-
|
|
323
|
-
### App shows "credentials not configured" when they are
|
|
324
|
-
|
|
325
|
-
This is a known issue. The tester should:
|
|
326
|
-
|
|
327
|
-
1. Check the `.env` file exists and has the right variable names
|
|
328
|
-
2. Check if the app reads from `.env` or `data/.env`
|
|
329
|
-
3. Check the server plugin that loads credentials
|
|
330
|
-
4. Try to fix the credential detection logic
|
|
331
|
-
5. If unfixable, report as "needs review" with details about what the app expects vs. what's configured
|
|
332
|
-
|
|
333
|
-
Only report variable names and presence/absence. Do not include secret values.
|