@agent-native/core 0.101.14 → 0.102.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.
Files changed (316) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/cli/templates-meta.ts +13 -0
  5. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +1 -1
  6. package/corpus/core/src/client/org/OrgSwitcher.tsx +2 -0
  7. package/corpus/templates/analytics/changelog/2026-07-15-fixed-the-agent-discarding-a-successful-dashboard-edit-and-r.md +6 -0
  8. package/corpus/templates/analytics/server/lib/real-data-actions.ts +30 -1
  9. package/corpus/templates/analytics/server/plugins/agent-chat.ts +15 -0
  10. package/corpus/templates/content/actions/_database-source-utils.ts +59 -4
  11. package/corpus/templates/content/actions/prepare-builder-source-review.ts +9 -0
  12. package/corpus/templates/content/actions/preview-builder-source-review.ts +6 -4
  13. package/corpus/templates/content/app/components/editor/DescriptionField.tsx +10 -2
  14. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +4 -0
  15. package/corpus/templates/content/changelog/2026-07-15-page-and-database-descriptions-now-use-a-clean-single-line-f.md +6 -0
  16. package/corpus/templates/content/changelog/2026-07-15-selected-builder-reviews-now-load-only-the-chosen-rows-avoid.md +6 -0
  17. package/corpus/templates/content/shared/api.ts +1 -0
  18. package/corpus/templates/tasks/.agents/commands/visual-plan.md +9 -0
  19. package/corpus/templates/tasks/.agents/commands/visual-recap.md +8 -0
  20. package/corpus/templates/tasks/.agents/skills/actions/SKILL.md +492 -0
  21. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +189 -0
  22. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +76 -0
  23. package/corpus/templates/tasks/.agents/skills/agent-watchdog/README.md +43 -0
  24. package/corpus/templates/tasks/.agents/skills/agent-watchdog/SKILL.md +110 -0
  25. package/corpus/templates/tasks/.agents/skills/agent-watchdog/agents/openai.yaml +4 -0
  26. package/corpus/templates/tasks/.agents/skills/capture-learnings/SKILL.md +89 -0
  27. package/corpus/templates/tasks/.agents/skills/change-summary/SKILL.md +83 -0
  28. package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +221 -0
  29. package/corpus/templates/tasks/.agents/skills/delegate-to-agent/SKILL.md +263 -0
  30. package/corpus/templates/tasks/.agents/skills/efficient-fable/README.md +75 -0
  31. package/corpus/templates/tasks/.agents/skills/efficient-fable/SKILL.md +95 -0
  32. package/corpus/templates/tasks/.agents/skills/efficient-frontier/README.md +53 -0
  33. package/corpus/templates/tasks/.agents/skills/efficient-frontier/SKILL.md +73 -0
  34. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +112 -0
  35. package/corpus/templates/tasks/.agents/skills/plan-arbiter/README.md +41 -0
  36. package/corpus/templates/tasks/.agents/skills/plan-arbiter/SKILL.md +114 -0
  37. package/corpus/templates/tasks/.agents/skills/plan-arbiter/agents/openai.yaml +4 -0
  38. package/corpus/templates/tasks/.agents/skills/plow-ahead/README.md +42 -0
  39. package/corpus/templates/tasks/.agents/skills/plow-ahead/SKILL.md +104 -0
  40. package/corpus/templates/tasks/.agents/skills/plow-ahead/agents/openai.yaml +4 -0
  41. package/corpus/templates/tasks/.agents/skills/quick-recap/README.md +55 -0
  42. package/corpus/templates/tasks/.agents/skills/quick-recap/SKILL.md +54 -0
  43. package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/README.md +54 -0
  44. package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/SKILL.md +126 -0
  45. package/corpus/templates/tasks/.agents/skills/read-the-damn-docs/agents/openai.yaml +4 -0
  46. package/corpus/templates/tasks/.agents/skills/real-time-sync/SKILL.md +232 -0
  47. package/corpus/templates/tasks/.agents/skills/security/SKILL.md +280 -0
  48. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +106 -0
  49. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +95 -0
  50. package/corpus/templates/tasks/.agents/skills/stay-within-limits/README.md +61 -0
  51. package/corpus/templates/tasks/.agents/skills/stay-within-limits/SKILL.md +83 -0
  52. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  53. package/corpus/templates/tasks/.agents/skills/visual-plan/SKILL.md +547 -0
  54. package/corpus/templates/tasks/.agents/skills/visual-plan/agent-native-skill.json +12 -0
  55. package/corpus/templates/tasks/.agents/skills/visual-plan/references/canvas.md +121 -0
  56. package/corpus/templates/tasks/.agents/skills/visual-plan/references/document-quality.md +178 -0
  57. package/corpus/templates/tasks/.agents/skills/visual-plan/references/exemplar.md +62 -0
  58. package/corpus/templates/tasks/.agents/skills/visual-plan/references/wireframe.md +264 -0
  59. package/corpus/templates/tasks/.agents/skills/visual-recap/SKILL.md +634 -0
  60. package/corpus/templates/tasks/.agents/skills/visual-recap/agent-native-skill.json +12 -0
  61. package/corpus/templates/tasks/.agents/skills/visual-recap/references/wireframe.md +264 -0
  62. package/corpus/templates/tasks/.claude/commands/visual-plan.md +9 -0
  63. package/corpus/templates/tasks/.claude/commands/visual-recap.md +8 -0
  64. package/corpus/templates/tasks/.env.example +5 -0
  65. package/corpus/templates/tasks/.ignore +0 -0
  66. package/corpus/templates/tasks/.prettierrc +5 -0
  67. package/corpus/templates/tasks/AGENTS.md +158 -0
  68. package/corpus/templates/tasks/DEVELOPING.md +185 -0
  69. package/corpus/templates/tasks/README.md +16 -0
  70. package/corpus/templates/tasks/actions/bulk-delete-inbox-items.ts +24 -0
  71. package/corpus/templates/tasks/actions/bulk-delete-tasks.ts +21 -0
  72. package/corpus/templates/tasks/actions/bulk-mark-inbox-items-ready.ts +27 -0
  73. package/corpus/templates/tasks/actions/bulk-update-tasks.ts +35 -0
  74. package/corpus/templates/tasks/actions/create-custom-field.ts +22 -0
  75. package/corpus/templates/tasks/actions/create-inbox-item.ts +30 -0
  76. package/corpus/templates/tasks/actions/create-task.ts +33 -0
  77. package/corpus/templates/tasks/actions/delete-custom-field.ts +19 -0
  78. package/corpus/templates/tasks/actions/delete-inbox-item.ts +17 -0
  79. package/corpus/templates/tasks/actions/delete-task.ts +17 -0
  80. package/corpus/templates/tasks/actions/lib/boolean-query-param.ts +30 -0
  81. package/corpus/templates/tasks/actions/list-custom-fields.ts +18 -0
  82. package/corpus/templates/tasks/actions/list-inbox-items.ts +16 -0
  83. package/corpus/templates/tasks/actions/list-tasks.ts +52 -0
  84. package/corpus/templates/tasks/actions/list-visible-task-fields.ts +18 -0
  85. package/corpus/templates/tasks/actions/mark-inbox-item-ready.ts +31 -0
  86. package/corpus/templates/tasks/actions/navigate.ts +51 -0
  87. package/corpus/templates/tasks/actions/reorder-custom-fields.ts +27 -0
  88. package/corpus/templates/tasks/actions/reorder-inbox-items.ts +24 -0
  89. package/corpus/templates/tasks/actions/reorder-tasks.ts +29 -0
  90. package/corpus/templates/tasks/actions/run.ts +2 -0
  91. package/corpus/templates/tasks/actions/update-custom-field.ts +33 -0
  92. package/corpus/templates/tasks/actions/update-inbox-item.ts +24 -0
  93. package/corpus/templates/tasks/actions/update-task.ts +68 -0
  94. package/corpus/templates/tasks/actions/update-visible-task-fields.ts +27 -0
  95. package/corpus/templates/tasks/actions/view-screen-helpers.ts +68 -0
  96. package/corpus/templates/tasks/actions/view-screen.ts +207 -0
  97. package/corpus/templates/tasks/app/components/custom-fields/FieldCreateBar.tsx +121 -0
  98. package/corpus/templates/tasks/app/components/custom-fields/FieldListRow.tsx +116 -0
  99. package/corpus/templates/tasks/app/components/custom-fields/FieldsList.tsx +225 -0
  100. package/corpus/templates/tasks/app/components/custom-fields/FieldsListSkeleton.tsx +18 -0
  101. package/corpus/templates/tasks/app/components/custom-fields/FieldsPage.tsx +42 -0
  102. package/corpus/templates/tasks/app/components/custom-fields/editor/FieldEditorSidebar.tsx +69 -0
  103. package/corpus/templates/tasks/app/components/custom-fields/editor/FieldTitleSection.tsx +32 -0
  104. package/corpus/templates/tasks/app/components/custom-fields/editor/config/CurrencyConfigControl.tsx +49 -0
  105. package/corpus/templates/tasks/app/components/custom-fields/editor/config/FieldConfigControl.tsx +56 -0
  106. package/corpus/templates/tasks/app/components/custom-fields/editor/config/NumberConfigControl.tsx +52 -0
  107. package/corpus/templates/tasks/app/components/custom-fields/editor/config/PercentConfigControl.tsx +30 -0
  108. package/corpus/templates/tasks/app/components/custom-fields/editor/config/SelectConfigControl.tsx +135 -0
  109. package/corpus/templates/tasks/app/components/custom-fields/editor/config/select-colors.ts +23 -0
  110. package/corpus/templates/tasks/app/components/custom-fields/editor/config/utils.ts +52 -0
  111. package/corpus/templates/tasks/app/components/custom-fields/editor/types.ts +7 -0
  112. package/corpus/templates/tasks/app/components/dnd/SortableItem.tsx +72 -0
  113. package/corpus/templates/tasks/app/components/dnd/SortableList.tsx +136 -0
  114. package/corpus/templates/tasks/app/components/dnd/reorder-moving-items.ts +160 -0
  115. package/corpus/templates/tasks/app/components/dnd/sortable-drag-props.ts +60 -0
  116. package/corpus/templates/tasks/app/components/inbox/InboxList.tsx +222 -0
  117. package/corpus/templates/tasks/app/components/inbox/InboxListPage.tsx +39 -0
  118. package/corpus/templates/tasks/app/components/inbox/InboxListRow.tsx +122 -0
  119. package/corpus/templates/tasks/app/components/layout/Header.tsx +55 -0
  120. package/corpus/templates/tasks/app/components/layout/HeaderActions.tsx +84 -0
  121. package/corpus/templates/tasks/app/components/layout/Layout.tsx +134 -0
  122. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +211 -0
  123. package/corpus/templates/tasks/app/components/shared/AddListItemInput.tsx +57 -0
  124. package/corpus/templates/tasks/app/components/shared/AlertDialog.tsx +53 -0
  125. package/corpus/templates/tasks/app/components/shared/BulkDeleteDialog.tsx +76 -0
  126. package/corpus/templates/tasks/app/components/shared/ChipSelect.tsx +240 -0
  127. package/corpus/templates/tasks/app/components/shared/DeleteItemDialog.tsx +40 -0
  128. package/corpus/templates/tasks/app/components/shared/InlineEditable.tsx +166 -0
  129. package/corpus/templates/tasks/app/components/shared/ListEmptyState.tsx +13 -0
  130. package/corpus/templates/tasks/app/components/shared/ListErrorMessage.tsx +15 -0
  131. package/corpus/templates/tasks/app/components/shared/ListViewHeader.tsx +75 -0
  132. package/corpus/templates/tasks/app/components/shared/PageHeader.tsx +25 -0
  133. package/corpus/templates/tasks/app/components/shared/RowActionsMenu.tsx +42 -0
  134. package/corpus/templates/tasks/app/components/shared/SidePanel.tsx +99 -0
  135. package/corpus/templates/tasks/app/components/shared/dnd/ListRowPreview.tsx +37 -0
  136. package/corpus/templates/tasks/app/components/shared/list/List.tsx +63 -0
  137. package/corpus/templates/tasks/app/components/shared/list/ListRow.tsx +159 -0
  138. package/corpus/templates/tasks/app/components/shared/list/ListRowDragHandle.tsx +52 -0
  139. package/corpus/templates/tasks/app/components/shared/list/ListSkeletonRows.tsx +11 -0
  140. package/corpus/templates/tasks/app/components/shared/list/SortableListItemShell.tsx +32 -0
  141. package/corpus/templates/tasks/app/components/shared/list/types.ts +1 -0
  142. package/corpus/templates/tasks/app/components/shared/selection/ListSelectionBar.tsx +158 -0
  143. package/corpus/templates/tasks/app/components/shared/selection/ListSelectionHeaderToggle.tsx +28 -0
  144. package/corpus/templates/tasks/app/components/shared/selection/ListSelectionToolbar.tsx +81 -0
  145. package/corpus/templates/tasks/app/components/shared/selection/get-list-row-selection-ui.ts +41 -0
  146. package/corpus/templates/tasks/app/components/shared/selection/use-list-selection.ts +196 -0
  147. package/corpus/templates/tasks/app/components/tasks/TaskList.tsx +333 -0
  148. package/corpus/templates/tasks/app/components/tasks/TaskListHeaderRow.tsx +46 -0
  149. package/corpus/templates/tasks/app/components/tasks/TaskListPage.tsx +115 -0
  150. package/corpus/templates/tasks/app/components/tasks/TaskListRow.css +49 -0
  151. package/corpus/templates/tasks/app/components/tasks/TaskListRow.tsx +307 -0
  152. package/corpus/templates/tasks/app/components/tasks/fields/TaskFieldsSidebar.tsx +102 -0
  153. package/corpus/templates/tasks/app/components/tasks/fields/TaskTitleSection.tsx +27 -0
  154. package/corpus/templates/tasks/app/components/tasks/fields/controls/DateValueControl.tsx +21 -0
  155. package/corpus/templates/tasks/app/components/tasks/fields/controls/FieldValueControl.tsx +76 -0
  156. package/corpus/templates/tasks/app/components/tasks/fields/controls/MultiSelectValueControl.tsx +52 -0
  157. package/corpus/templates/tasks/app/components/tasks/fields/controls/NumberValueControl.tsx +56 -0
  158. package/corpus/templates/tasks/app/components/tasks/fields/controls/RichTextValueControl.tsx +115 -0
  159. package/corpus/templates/tasks/app/components/tasks/fields/controls/SingleSelectValueControl.tsx +61 -0
  160. package/corpus/templates/tasks/app/components/tasks/fields/controls/TextValueControl.tsx +20 -0
  161. package/corpus/templates/tasks/app/components/tasks/use-task-row-completion-animation.ts +181 -0
  162. package/corpus/templates/tasks/app/components/ui/accordion.tsx +56 -0
  163. package/corpus/templates/tasks/app/components/ui/alert-dialog.tsx +1 -0
  164. package/corpus/templates/tasks/app/components/ui/alert.tsx +1 -0
  165. package/corpus/templates/tasks/app/components/ui/aspect-ratio.tsx +5 -0
  166. package/corpus/templates/tasks/app/components/ui/avatar.tsx +1 -0
  167. package/corpus/templates/tasks/app/components/ui/badge.tsx +1 -0
  168. package/corpus/templates/tasks/app/components/ui/breadcrumb.tsx +115 -0
  169. package/corpus/templates/tasks/app/components/ui/button.tsx +1 -0
  170. package/corpus/templates/tasks/app/components/ui/calendar.tsx +70 -0
  171. package/corpus/templates/tasks/app/components/ui/card.tsx +1 -0
  172. package/corpus/templates/tasks/app/components/ui/carousel.tsx +260 -0
  173. package/corpus/templates/tasks/app/components/ui/chart.tsx +379 -0
  174. package/corpus/templates/tasks/app/components/ui/checkbox.tsx +1 -0
  175. package/corpus/templates/tasks/app/components/ui/collapsible.tsx +1 -0
  176. package/corpus/templates/tasks/app/components/ui/command.tsx +1 -0
  177. package/corpus/templates/tasks/app/components/ui/context-menu.tsx +1 -0
  178. package/corpus/templates/tasks/app/components/ui/dialog.tsx +1 -0
  179. package/corpus/templates/tasks/app/components/ui/drawer.tsx +1 -0
  180. package/corpus/templates/tasks/app/components/ui/dropdown-menu.tsx +1 -0
  181. package/corpus/templates/tasks/app/components/ui/form.tsx +177 -0
  182. package/corpus/templates/tasks/app/components/ui/hover-card.tsx +27 -0
  183. package/corpus/templates/tasks/app/components/ui/input-otp.tsx +69 -0
  184. package/corpus/templates/tasks/app/components/ui/input.tsx +1 -0
  185. package/corpus/templates/tasks/app/components/ui/label.tsx +1 -0
  186. package/corpus/templates/tasks/app/components/ui/menubar.tsx +254 -0
  187. package/corpus/templates/tasks/app/components/ui/navigation-menu.tsx +128 -0
  188. package/corpus/templates/tasks/app/components/ui/pagination.tsx +121 -0
  189. package/corpus/templates/tasks/app/components/ui/popover.tsx +1 -0
  190. package/corpus/templates/tasks/app/components/ui/progress.tsx +1 -0
  191. package/corpus/templates/tasks/app/components/ui/radio-group.tsx +1 -0
  192. package/corpus/templates/tasks/app/components/ui/resizable.tsx +43 -0
  193. package/corpus/templates/tasks/app/components/ui/scroll-area.tsx +1 -0
  194. package/corpus/templates/tasks/app/components/ui/select.tsx +1 -0
  195. package/corpus/templates/tasks/app/components/ui/separator.tsx +1 -0
  196. package/corpus/templates/tasks/app/components/ui/sheet.tsx +1 -0
  197. package/corpus/templates/tasks/app/components/ui/sidebar.tsx +782 -0
  198. package/corpus/templates/tasks/app/components/ui/skeleton.tsx +1 -0
  199. package/corpus/templates/tasks/app/components/ui/slider.tsx +1 -0
  200. package/corpus/templates/tasks/app/components/ui/sonner.tsx +1 -0
  201. package/corpus/templates/tasks/app/components/ui/spinner.tsx +1 -0
  202. package/corpus/templates/tasks/app/components/ui/switch.tsx +1 -0
  203. package/corpus/templates/tasks/app/components/ui/table.tsx +1 -0
  204. package/corpus/templates/tasks/app/components/ui/tabs.tsx +1 -0
  205. package/corpus/templates/tasks/app/components/ui/textarea.tsx +1 -0
  206. package/corpus/templates/tasks/app/components/ui/toast.tsx +1 -0
  207. package/corpus/templates/tasks/app/components/ui/toaster.tsx +1 -0
  208. package/corpus/templates/tasks/app/components/ui/toggle-group.tsx +1 -0
  209. package/corpus/templates/tasks/app/components/ui/toggle.tsx +43 -0
  210. package/corpus/templates/tasks/app/components/ui/tooltip.tsx +1 -0
  211. package/corpus/templates/tasks/app/components/ui/use-toast.ts +3 -0
  212. package/corpus/templates/tasks/app/entry.client.tsx +19 -0
  213. package/corpus/templates/tasks/app/entry.server.tsx +10 -0
  214. package/corpus/templates/tasks/app/global.css +93 -0
  215. package/corpus/templates/tasks/app/hooks/cache.ts +31 -0
  216. package/corpus/templates/tasks/app/hooks/use-custom-fields.ts +93 -0
  217. package/corpus/templates/tasks/app/hooks/use-inbox-items.ts +196 -0
  218. package/corpus/templates/tasks/app/hooks/use-mobile.tsx +21 -0
  219. package/corpus/templates/tasks/app/hooks/use-navigation-state.ts +40 -0
  220. package/corpus/templates/tasks/app/hooks/use-tasks.ts +276 -0
  221. package/corpus/templates/tasks/app/hooks/use-toast.ts +188 -0
  222. package/corpus/templates/tasks/app/hooks/use-visible-task-fields.ts +140 -0
  223. package/corpus/templates/tasks/app/lib/app-config.ts +11 -0
  224. package/corpus/templates/tasks/app/lib/tab-id.ts +1 -0
  225. package/corpus/templates/tasks/app/lib/utils.ts +1 -0
  226. package/corpus/templates/tasks/app/root.tsx +130 -0
  227. package/corpus/templates/tasks/app/routes/_index.tsx +22 -0
  228. package/corpus/templates/tasks/app/routes/extensions.$id.$slug.tsx +2 -0
  229. package/corpus/templates/tasks/app/routes/extensions.$id.tsx +11 -0
  230. package/corpus/templates/tasks/app/routes/extensions._index.tsx +11 -0
  231. package/corpus/templates/tasks/app/routes/extensions.tsx +5 -0
  232. package/corpus/templates/tasks/app/routes/fields.tsx +16 -0
  233. package/corpus/templates/tasks/app/routes/inbox.tsx +16 -0
  234. package/corpus/templates/tasks/app/routes/tasks.tsx +17 -0
  235. package/corpus/templates/tasks/app/routes/team.tsx +17 -0
  236. package/corpus/templates/tasks/app/routes.ts +4 -0
  237. package/corpus/templates/tasks/app/vite-env.d.ts +6 -0
  238. package/corpus/templates/tasks/components.json +20 -0
  239. package/corpus/templates/tasks/data/sync-config.json +1 -0
  240. package/corpus/templates/tasks/docs/features/README.md +81 -0
  241. package/corpus/templates/tasks/docs/features/f1-tasks.mdx +67 -0
  242. package/corpus/templates/tasks/docs/features/f2-custom-fields.mdx +68 -0
  243. package/corpus/templates/tasks/docs/features/f3-projects.mdx +33 -0
  244. package/corpus/templates/tasks/docs/features/f4-inbox.mdx +55 -0
  245. package/corpus/templates/tasks/docs/features/f5-views.mdx +65 -0
  246. package/corpus/templates/tasks/docs/features/f6-search.mdx +43 -0
  247. package/corpus/templates/tasks/docs/features/f7-first-run.mdx +66 -0
  248. package/corpus/templates/tasks/docs/features/f8-chat.mdx +120 -0
  249. package/corpus/templates/tasks/e2e/global-setup.ts +42 -0
  250. package/corpus/templates/tasks/e2e/helpers/inbox.ts +71 -0
  251. package/corpus/templates/tasks/e2e/helpers/tasks.ts +99 -0
  252. package/corpus/templates/tasks/learnings.defaults.md +5 -0
  253. package/corpus/templates/tasks/netlify.toml +10 -0
  254. package/corpus/templates/tasks/package.json +104 -0
  255. package/corpus/templates/tasks/playwright.config.ts +34 -0
  256. package/corpus/templates/tasks/public/agent-native-icon-dark.svg +10 -0
  257. package/corpus/templates/tasks/public/agent-native-icon-light.svg +10 -0
  258. package/corpus/templates/tasks/public/agent-native-logo-dark.svg +21 -0
  259. package/corpus/templates/tasks/public/agent-native-logo-light.svg +21 -0
  260. package/corpus/templates/tasks/public/favicon.svg +1 -0
  261. package/corpus/templates/tasks/public/icon-180.svg +1 -0
  262. package/corpus/templates/tasks/public/icon-192.svg +1 -0
  263. package/corpus/templates/tasks/public/icon-512.svg +1 -0
  264. package/corpus/templates/tasks/public/manifest.json +21 -0
  265. package/corpus/templates/tasks/react-router.config.ts +7 -0
  266. package/corpus/templates/tasks/server/custom-fields/normalize.ts +163 -0
  267. package/corpus/templates/tasks/server/custom-fields/parse.ts +146 -0
  268. package/corpus/templates/tasks/server/custom-fields/schema.ts +147 -0
  269. package/corpus/templates/tasks/server/custom-fields/store.ts +425 -0
  270. package/corpus/templates/tasks/server/custom-fields/task-fields.ts +104 -0
  271. package/corpus/templates/tasks/server/custom-fields/types.ts +98 -0
  272. package/corpus/templates/tasks/server/custom-fields/validate.ts +210 -0
  273. package/corpus/templates/tasks/server/custom-fields/values/store.ts +386 -0
  274. package/corpus/templates/tasks/server/db/bulk-write.ts +30 -0
  275. package/corpus/templates/tasks/server/db/index.ts +5 -0
  276. package/corpus/templates/tasks/server/db/record-utils.ts +7 -0
  277. package/corpus/templates/tasks/server/db/schema.ts +67 -0
  278. package/corpus/templates/tasks/server/db/test-tasks-table.ts +76 -0
  279. package/corpus/templates/tasks/server/db/transaction.ts +6 -0
  280. package/corpus/templates/tasks/server/errors.ts +31 -0
  281. package/corpus/templates/tasks/server/inbox/store.ts +216 -0
  282. package/corpus/templates/tasks/server/middleware/auth.ts +15 -0
  283. package/corpus/templates/tasks/server/plugins/agent-chat.ts +46 -0
  284. package/corpus/templates/tasks/server/plugins/auth.ts +15 -0
  285. package/corpus/templates/tasks/server/plugins/db.ts +90 -0
  286. package/corpus/templates/tasks/server/routes/[...page].get.ts +5 -0
  287. package/corpus/templates/tasks/server/stored-items/store.ts +548 -0
  288. package/corpus/templates/tasks/server/tasks/store.ts +306 -0
  289. package/corpus/templates/tasks/server/user-config/store.ts +138 -0
  290. package/corpus/templates/tasks/shared/app-state-tabs.ts +15 -0
  291. package/corpus/templates/tasks/shared/boolean-param.ts +22 -0
  292. package/corpus/templates/tasks/shared/bulk-limits.ts +7 -0
  293. package/corpus/templates/tasks/shared/list-screen-snapshot.ts +90 -0
  294. package/corpus/templates/tasks/shared/navigation.ts +104 -0
  295. package/corpus/templates/tasks/shared/visible-task-fields.ts +2 -0
  296. package/corpus/templates/tasks/ssr-entry.ts +15 -0
  297. package/corpus/templates/tasks/tsconfig.json +24 -0
  298. package/corpus/templates/tasks/vite.config.ts +19 -0
  299. package/corpus/templates/tasks/vitest.config.ts +8 -0
  300. package/dist/cli/templates-meta.d.ts.map +1 -1
  301. package/dist/cli/templates-meta.js +13 -0
  302. package/dist/cli/templates-meta.js.map +1 -1
  303. package/dist/client/agent-page/AgentTabsPage.js +1 -1
  304. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  305. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  306. package/dist/client/org/OrgSwitcher.js +2 -1
  307. package/dist/client/org/OrgSwitcher.js.map +1 -1
  308. package/dist/collab/routes.d.ts +1 -1
  309. package/dist/collab/struct-routes.d.ts +1 -1
  310. package/dist/notifications/routes.d.ts +2 -2
  311. package/dist/observability/routes.d.ts +5 -5
  312. package/dist/resources/handlers.d.ts +3 -3
  313. package/dist/secrets/routes.d.ts +9 -9
  314. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  315. package/dist/server/transcribe-voice.d.ts +1 -1
  316. package/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: upgrade-agent-native
3
+ description: >-
4
+ Bring an older Agent Native app or workspace current. Use when updating
5
+ @agent-native/core, fixing a broken upgrade, or when tempted to patch or
6
+ override core/dispatch packages to make an old branch run.
7
+ scope: dev
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Upgrade Agent Native
13
+
14
+ ## Rule
15
+
16
+ When an older Agent Native app/branch needs to run on current packages, use
17
+ `agent-native upgrade`. Never "fix" upgrade breakage with
18
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
+ edits under `node_modules/@agent-native/*` — especially not against
20
+ `@agent-native/core` or `@agent-native/dispatch`.
21
+
22
+ ## Why
23
+
24
+ Agents often respond to a failed core bump by inventing framework patches and
25
+ dispatch behavior overrides. That hides the real app-level break, drifts from
26
+ upstream, and makes the next upgrade worse. The supported path is bump →
27
+ install → refresh scaffold skills → verify, then fix **app** code only.
28
+
29
+ ## How
30
+
31
+ 1. **Doctor first (optional but recommended)**
32
+
33
+ ```bash
34
+ npx @agent-native/core@latest upgrade check
35
+ ```
36
+
37
+ This reports framework overrides/patches and pending `@agent-native/*`
38
+ bumps. If overrides/patches are present, remove them before continuing.
39
+
40
+ 2. **Run the upgrade**
41
+
42
+ ```bash
43
+ npx @agent-native/core@latest upgrade
44
+ ```
45
+
46
+ Or from an already-installed CLI: `pnpm exec agent-native upgrade` /
47
+ `agent-native upgrade`.
48
+
49
+ What it does:
50
+
51
+ - Blocks (unless `--force`) when `@agent-native/*` overrides/patches exist
52
+ - Rewrites non-local `@agent-native/*` dependency pins to `latest`
53
+ - Runs the package manager install
54
+ - Runs `skills update scaffold --project`
55
+ - Runs `typecheck` when the project has that script
56
+
57
+ 3. **If upgrade or typecheck fails**
58
+
59
+ - Read the concrete error
60
+ - Fix **app** source, actions, config, or env — not framework packages
61
+ - Re-run `agent-native upgrade` or `pnpm typecheck`
62
+ - Stop and ask the user if you cannot fix the app-level error
63
+
64
+ 4. **Dry-run / partial runs**
65
+
66
+ ```bash
67
+ agent-native upgrade --dry-run
68
+ agent-native upgrade --skip-verify
69
+ agent-native upgrade --skip-install # package.json bumps only
70
+ ```
71
+
72
+ ## Don't
73
+
74
+ - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
75
+ `patchedDependencies` for any `@agent-native/*` package
76
+ - Don't edit `node_modules/@agent-native/core` or
77
+ `node_modules/@agent-native/dispatch`
78
+ - Don't invent local "dispatch behavior" shims to paper over version skew
79
+ - Don't keep iterating with more framework patches after a failed install
80
+ - Don't skip `skills update scaffold --project` after a core bump (the
81
+ upgrade command does this for you)
82
+
83
+ ## Related Skills
84
+
85
+ - **self-modifying-code** — Tier 4: framework packages are off limits
86
+ - **agent-native-docs** — version-matched docs after the bump
87
+ - **portability** — keep app code provider-agnostic across upgrades
@@ -0,0 +1,547 @@
1
+ ---
2
+ name: visual-plan
3
+ description: >-
4
+ Turn ordinary text plans into rich interactive visual plans with diagrams,
5
+ file maps, annotated code, open questions, and UI/prototype review when
6
+ useful.
7
+ metadata:
8
+ visibility: exported
9
+ ---
10
+
11
+ ## Installed Mode
12
+
13
+ Default storage for this installation: local files. Create and update plans and
14
+ recaps as MDX folders under `plans/<slug>/` when they should be checked in, or
15
+ under a repo-ignored/temp folder when they should stay private scratch. Before
16
+ authoring structured MDX, run
17
+ `npx @agent-native/core@latest plan blocks --out plan-blocks.md` and read the
18
+ no-auth block catalog; it sends no plan content. Then run
19
+ `npx @agent-native/core@latest plan local check --dir plans/<slug>`, then
20
+ `npx @agent-native/core@latest plan local serve --dir plans/<slug> --kind plan|recap --open`,
21
+ and report the local bridge URL from stdout or `plans/<slug>/.plan-url`. Treat
22
+ `.plan-url` as a local token file and do not commit it. It opens the hosted Plan
23
+ UI but reads from the localhost bridge on this machine, so it is not shareable
24
+ across machines. On macOS, use Chrome/Chromium if Safari blocks the localhost
25
+ bridge; run `plan local verify --dir plans/<slug> --kind plan|recap` for
26
+ headless diagnostics. No sharing, all local. Use a hosted or self-hosted Plan MCP
27
+ connector only if the user explicitly asks to publish or share.
28
+
29
+
30
+ # Agent-Native Plans
31
+
32
+ Agent-Native Plans is structured visual planning mode for coding agents. Build
33
+ the plan you would normally write in Markdown, but as a scannable document with
34
+ editable blocks mixed in: inline diagrams, code snippets,
35
+ open questions, and an optional top visual review area (wireframe canvas, live
36
+ prototype, or both in tabs). Architecture and backend plans stay document-only;
37
+ UI and product plans start with the top canvas/prototype (the Visual Surface
38
+ Choice section owns that rule).
39
+
40
+ `/visual-plan` is the packaged command and main entry point. Choose the review
41
+ mode from the task: UI-first when the work is primarily product UI and review
42
+ should start with screens, prototype-first when review should start with a
43
+ functional live prototype, design-first when review needs full-fidelity branded
44
+ screens, or visual-intake when the user explicitly wants a questionnaire before
45
+ planning. When a Codex, Claude Code, Markdown, or pasted plan already exists,
46
+ `/visual-plan` uses that source plan as the starting point and builds the review
47
+ surface from it instead of starting over.
48
+
49
+ ## When To Use
50
+
51
+ Create or adapt a visual plan whenever the plan would be better as a reviewable
52
+ artifact than a chat paragraph. This includes modest work such as a single UI
53
+ surface with states, a small workflow, a before/after product change, or a
54
+ component/API/data-shape decision that needs alignment, plus larger multi-file,
55
+ ambiguous, long-running, risky, or UI-heavy work. Use it when architecture /
56
+ data flow / UI direction / options / open questions would benefit from inline
57
+ diagrams or structured blocks, when the user needs to react to a direction
58
+ before you implement, or when an existing text plan needs a richer review
59
+ surface.
60
+
61
+ ## Plan Discipline
62
+
63
+ - **Gate thoughtfully.** A visual plan is a richer review surface, not only a
64
+ tool for giant projects. Use it when the user needs to see, compare, comment
65
+ on, or approve a direction before code, even for a modest UI/state/workflow
66
+ change. Skip it for truly trivial, unambiguous work — typos, one-line fixes, a
67
+ single well-specified function, anything whose diff you could describe in one
68
+ sentence — and just make the change. Never pad a plan with filler and never
69
+ ship a single-step plan.
70
+ - **Research before you draft.** Read the real files, actions, schema, and
71
+ patterns first; name actual files, symbols, and data shapes instead of
72
+ inventing them. Check existing `actions/` before proposing endpoints and prefer
73
+ named client helpers over raw fetch. Delegate wide exploration to a sub-agent.
74
+ Lead with reuse: for each step, name what it reuses — existing actions, schema,
75
+ components, helpers — before what it adds, so the plan explains the genuinely new
76
+ delta instead of redescribing what already exists.
77
+ - **Decide the hard-to-reverse bets first.** For non-trivial backend, data, or API
78
+ work, sketch where the feature is headed, then call out the decisions that are
79
+ expensive to undo once data or callers depend on them — wire format, public ids,
80
+ data-model shape, auth and ownership boundaries — and get those right in the plan
81
+ even if most of the feature ships later. Then scope to the smallest first cut that
82
+ proves the approach without foreclosing it, stating both what is in and what is
83
+ explicitly deferred.
84
+ - **Keep examples at the right altitude.** When the user's idea is a broad
85
+ framework, product, or operating-model change, do not collapse it into the
86
+ first concrete example, provider, or sync path they mention. Separate the core
87
+ abstraction from motivating examples and app/provider adapters. Use examples
88
+ to make the plan legible, but label them as examples unless they are the whole
89
+ requested scope.
90
+ - **Publish standalone plans.** If the user pasted, referenced, or already has a
91
+ Codex / Claude Code / Markdown plan, treat it as source material, but rewrite
92
+ the published plan as a clean standalone proposal. Preserve the source plan's
93
+ useful intent and codebase facts, label inferred visuals as inferred, and avoid
94
+ revision language such as "preserve the prior plan", "do not drop the old
95
+ idea", "unlike the previous version", or "this revision changes...". A reader
96
+ who never saw the chat or earlier drafts should understand the plan.
97
+ - **Make the first read concrete.** If the plan is meant to be shared with
98
+ someone outside the chat, or if the concept is abstract, lead near the top with
99
+ one concrete product example before mode tables, architecture, or roadmaps. For
100
+ UI-capable concepts, that usually means a top-canvas app state that shows the
101
+ real user workflow in product terms. Do not rely on phrases that only make
102
+ sense in conversation, and do not frame the plan as "not the old idea"; state
103
+ the positive model directly.
104
+ - **Planning is read-only.** Make no source edits while building or reviewing the
105
+ plan. Start editing only after the user approves the direction.
106
+ - **Clarify vs. assume.** Do not ask how to build it — explore and present the
107
+ approach and options in the plan. Ask a clarifying question only when an
108
+ ambiguity would change the design and you cannot resolve it from the code; use
109
+ the host agent's normal ask-user-question flow and batch 2-4 high-leverage
110
+ questions before finalizing. Do not call `create-visual-questions` for
111
+ ordinary clarification or preflight; reserve it for the visual-intake mode when
112
+ the user explicitly asks for a visual intake questionnaire. Otherwise state the
113
+ assumption explicitly and proceed, and keep anything unresolved in the plan's
114
+ single bottom `question-form` Open Questions block. For complex plans, do a
115
+ final open-question pass before handoff: if a decision would affect
116
+ architecture, scope, UX, data shape, or rollout, either decide it in the plan
117
+ with rationale or put it in that bottom form with a recommended default.
118
+ - **The plan is the approval gate.** After surfacing it, ask the user to review
119
+ and approve before you write code, and name which files/areas the work touches.
120
+ Presenting the plan and requesting sign-off is the approval step — do not ask a
121
+ separate "does this look good?" question.
122
+ - **The document is the source of truth, not the chat.** When scope shifts,
123
+ update the plan with `update-visual-plan` rather than only changing course in
124
+ chat, and make the updated document stand alone. Do not describe the update as
125
+ a correction to an earlier draft inside the plan itself. Re-read the approved
126
+ plan before major steps.
127
+
128
+ ## Create A Structured Agent-Native Plan — Never Inline
129
+
130
+ The deliverable is ALWAYS a structured Agent-Native Plan, not a chat-only plan.
131
+ The hosted Plan MCP connector (`plan` server, or legacy `agent-native-plans`) is
132
+ the default collaboration and commenting surface; it is not a reason to reject
133
+ the planning pattern as an external dependency or rented layer. Plans are
134
+ portable source artifacts (`plan.mdx`, optional `canvas.mdx` /
135
+ `prototype.mdx`, JSON, and HTML export), and ownership-sensitive workflows can
136
+ use local-files mode or a self-hosted/custom Plan app URL without abandoning the
137
+ skill's review discipline. Do not advise the user to skip `/visual-plan` because
138
+ the default surface is hosted; choose the right Plan mode for the user's
139
+ ownership, privacy, sharing, and branding needs.
140
+
141
+ By default, create the plan via the Plan MCP connector. NEVER hand the plan over
142
+ as inline chat content — no Markdown prose, ASCII sketch, table, or fenced
143
+ wireframe. Some clients lazy-load connector tools through a deferred tool
144
+ registry instead of showing the `plan` namespace upfront; before declaring the
145
+ connector missing, search/load tools with the host's discovery surface
146
+ (`tool_search` when available) for `create_visual_plan`, `create_ui_plan`, or
147
+ `get_plan_blocks`, then use the Plan MCP tools it exposes. If the connector's
148
+ tools are still missing after discovery, do NOT fall back to inline output: the
149
+ usual cause is a connector that did not finish connecting this session (it
150
+ registers zero tools), not auth. Stop and give the user the exact restore step
151
+ for their current client: in Codex/Codex Desktop run
152
+ `npx -y @agent-native/core@latest reconnect https://plan.agent-native.com --client codex`
153
+ and start a new Codex session; in Claude Code run `/mcp` and choose
154
+ Authenticate/Reconnect (or run the same reconnect command with
155
+ `--client claude-code` and restart Claude). Auth is stored per client
156
+ config/session, so one client's reconnect does not make another running client
157
+ load tools. Never reinstall from scratch just to fix auth. Publish once the tool
158
+ is reachable. Local-files privacy mode (after Tool Guidance) is the exception.
159
+
160
+ ## Core Workflow
161
+
162
+ This section describes the default hosted Plan MCP workflow. If
163
+ `AGENT_NATIVE_PLANS_MODE=local-files` is set, or the user asks for fully local
164
+ files/no hosted Plan writes, use **Local-Files Privacy Mode** instead; carry
165
+ forward only the code-research and plan-composition guidance here.
166
+
167
+ 1. Follow the host agent's normal planning flow: inspect the codebase, delegate
168
+ wide exploration when useful, gather the info needed, and ask native
169
+ clarifying questions as needed before generating the plan. If a source plan
170
+ already exists, gather its exact text from the user's paste, a referenced
171
+ file, or recent visible agent context; do not invent source text.
172
+ 2. Call `get-plan-blocks` for the authoritative block catalog — do not author
173
+ from memorized tags. Then call the mode-matched create tool:
174
+ `create-visual-plan` for document-first plans (architecture, backend, data,
175
+ refactor, API), `create-ui-plan` for UI-first plans, `create-prototype-plan`
176
+ for prototype-first plans, `create-plan-design` for design-first plans,
177
+ `create-visual-questions` only when the user explicitly asks for a visual
178
+ intake questionnaire. When a source plan already exists,
179
+ pass it as `planText` and preserve the original plan's useful intent while
180
+ producing a standalone plan document, not a revision memo.
181
+ 3. For UI/product plans, compose the top canvas first with the primary
182
+ wireframes and annotated states, then write the document with native blocks
183
+ (see `references/canvas.md` and `references/document-quality.md`). For
184
+ broad product architecture plans with a user-facing implication, add a
185
+ concrete "what this looks like in the app" visual before the abstract
186
+ architecture or mode tables. Keep the document close to the standalone
187
+ Markdown plan the agent would normally output. If an existing plan was
188
+ provided, carry forward the right facts and decisions without referring to
189
+ the previous draft or explaining how this version differs. For non-visual
190
+ plans, skip the top visual surface (Visual Surface Choice below owns the rule)
191
+ and put `diagram`, `data-model`,
192
+ `api-endpoint`, `diff`, `file-tree`, `code`, and `annotated-code` blocks
193
+ directly next to the relevant prose.
194
+ Wide document layout is renderer-owned and intentionally allowlisted: only
195
+ literal code-review surfaces (`diff`, `annotated-code`) and `tabs` blocks
196
+ with vertical orientation or diff-like children break out wider than prose.
197
+ Keep `api-endpoint`, `openapi-spec`, `data-model`, `json-explorer`,
198
+ `wireframe`, question, and `custom-html` blocks in normal document flow unless
199
+ their own renderer says otherwise.
200
+ 4. Surface the returned Plans link or inline MCP App and ask the user to review.
201
+ Always include the actual URL in chat so the next step is a click in CLI or
202
+ other text-only hosts. When the host exposes an embedded browser/preview panel
203
+ and a tool can open arbitrary URLs there, open the returned plan URL
204
+ automatically for convenient review — a convenience and smoke test, never the
205
+ only handoff or the access
206
+ model. Plans should load out of the box for the local agent and local browser
207
+ session; if a signed-in embedded browser cannot read a local plan that an
208
+ anonymous/tool check can read, fix the app/action ownership or access path
209
+ rather than patching one plan by hand. For high-stakes plans (architecture,
210
+ backend, data, multi-file, or risky), also kick off the self-review pass in
211
+ **Self-Review Before Handoff** while the user reads, instead of blocking the
212
+ handoff on it.
213
+ 5. For hosted plans, call `get-plan-feedback` before editing, after review,
214
+ after any long pause,
215
+ and before the final response. Treat `anchorDetails`, resolver intent, recent
216
+ review events, and any focused screenshots from browser handoff as the source
217
+ of truth for exactly what changed and exactly what each comment points at.
218
+ 6. For hosted plans, apply changes with `update-visual-plan`, preferring
219
+ targeted `contentPatches`.
220
+ Treat the top-level `content` payload as a full replacement, not a merge; do
221
+ not send a partial `content` object to add a canvas or one block. If a full
222
+ replacement is unavoidable, first read the complete plan source/content, carry
223
+ forward every existing block and visual surface, and verify the source/export
224
+ afterward so the document body was not truncated. When the user wants
225
+ source-control friendly edits, use `patch-visual-plan-source` against the MDX
226
+ files instead of regenerating the plan.
227
+ 7. For hosted plans, export with `export-visual-plan` only when the user wants a
228
+ shareable receipt or repo-check-in artifacts.
229
+
230
+ ## Self-Review Before Handoff
231
+
232
+ For high-stakes plans — architecture, backend, data-model, migration, multi-file,
233
+ or otherwise risky work — run one adversarial self-review pass before treating the
234
+ plan as final. Skip it for small, UI-only, or single-decision plans where the cost
235
+ outweighs the value. Keep the pass cheap and non-blocking:
236
+
237
+ - **Surface the plan first, review concurrently.** Post the link and let the user
238
+ start reading, then run the review in parallel — never make the user wait on it.
239
+ - **Review the written plan; do not re-research.** Critique the plan text and its
240
+ own blocks. The grounding was already done while drafting, so the review checks
241
+ the output instead of re-exploring the repo.
242
+ - **Spawn one skeptical reviewer** whose only job is to find what is weak, missing,
243
+ or wrong — not to praise. Point it at: hard-to-reverse decisions made implicitly
244
+ or not at all (wire format, public ids, data-model shape, auth, ownership); steps
245
+ not anchored in real files or symbols; a menu of options where the plan should
246
+ commit to one; obvious missing decisions ("what happens when X?", "why not Y?");
247
+ and padding or single-step filler.
248
+ - **Fix vs. ask.** Apply clear-cut fixes yourself with `update-visual-plan`
249
+ `contentPatches` — vague non-goals, unanchored claims, an obvious missing
250
+ decision. Route genuine judgment calls back to the user instead: add them to the
251
+ bottom `question-form` Open Questions block or batch them into the normal
252
+ ask-user-question flow. Do not silently decide them.
253
+ - **Do not surprise the user mid-read.** On a large plan, apply the patches before
254
+ the editor loads; otherwise note briefly that a self-review is running so the
255
+ plan changing under them is expected. When you next respond, summarize what the
256
+ review changed and what it surfaced for the user to decide.
257
+
258
+ ## Visual Surface Choice
259
+
260
+ Choose the surface before creating the plan or after reading the source plan. Do
261
+ not add visual chrome by default:
262
+
263
+ For UI/product plans, the top canvas is usually the primary review surface. Put
264
+ the first meaningful wireframes there, not buried as document-body blocks. Use
265
+ multiple canvas artboards when states matter, such as the default view, an
266
+ overflow menu or popover, a side panel, loading, or error. Put short annotations
267
+ beside frames with `targetId` plus `placement`; keep implementation details,
268
+ tradeoffs, file maps, data contracts, risks, and verification in the document
269
+ body below the canvas.
270
+
271
+ When the user asks for a flow, storyboard, journey, wireframe, canvas, or "what
272
+ this looks like", treat that as a canvas-first request. Make one artboard per
273
+ user-visible state, connect only adjacent transitions, and use short canvas
274
+ annotations for the product notes. Do not substitute a document-body `diagram`
275
+ block for the requested storyboard just because HTML diagrams are faster to
276
+ write; diagrams belong below the canvas for backend mechanics, architecture, or
277
+ data-flow explanation.
278
+
279
+ Keep product wireframes and explanatory/meta diagrams separate. Start with pure
280
+ screens that look like the app state under discussion, without callout prose or
281
+ architecture notes embedded inside the UI. Put arrows, labels, contracts, data
282
+ flow, and mode explanations in separate annotations, separate canvas diagrams,
283
+ or the document body.
284
+
285
+ When the plan touches an existing app, inspect the current shell/components
286
+ before drawing. The first artboard should look like the real app at the same
287
+ density: existing sidebars, toolbar placement, overflow menus, app chrome, and
288
+ framework agent chrome stay in their real places. Model secondary surfaces as
289
+ separate states, such as a top-right overflow popover, sheet, panel, loading
290
+ state, or separate AgentSidebar, rather than inventing a permanent inspector or
291
+ folding framework chrome into the product UI.
292
+
293
+ - **No visual surface** for architecture-only, backend-only, data migration,
294
+ copy-only, or otherwise non-visual plans. Do not use the top canvas for
295
+ architecture diagrams, dependency maps, file plans, API contracts, or
296
+ data-flow-only reviews. Use a strong document with local inline diagrams
297
+ only when relationships need a visual explanation, usually one spatial diagram
298
+ per recommendation or decision. Prefer grouped regions, layers, quadrants,
299
+ matrices, or before/after panels over a single-axis chain unless the
300
+ relationship is truly sequential.
301
+ - **Canvas only** for one static screen, a before/after comparison, a component
302
+ state, a small popover, or a visual direction that does not require clicking.
303
+ Put those wireframes in `content.canvas` and omit `content.prototype`.
304
+ - **Canvas + prototype** for multi-step UI flows, onboarding, wizards,
305
+ review/approval flows, navigation changes, or anything where the reviewer
306
+ needs to operate the behavior. Keep the static wireframes in
307
+ `content.canvas`, add the aligned functional prototype in
308
+ `content.prototype`, and rely on the top visual tabs to switch between them.
309
+ - **Prototype-first** when the user asks to operate the UI or when interaction is
310
+ the main question. Use `create-prototype-plan`, which still preserves static
311
+ mocks where useful.
312
+
313
+ For mixed canvas + prototype plans, reuse the same real labels, app statuses,
314
+ and screen ids across both surfaces. The canvas is the inspectable static reference;
315
+ the prototype is the interactive version of that same flow, not a separate
316
+ design direction.
317
+
318
+ ## Wireframe quality — read `references/wireframe.md`
319
+
320
+ UI recap/plan wireframes must meet a strict quality bar — full-width chrome,
321
+ pinned bottom bars, real product content, before/after comparability, the right
322
+ `surface` preset, `--wf-*` tokens instead of hex, and no `<html>`/`<style>`/font
323
+ tags. Before authoring ANY wireframe / `<Screen>` / `WireframeBlock`, READ
324
+ `references/wireframe.md` in this skill directory — it is the single source of
325
+ truth for HTML wireframe quality, shared word for word with `/visual-plan`
326
+ and `/visual-recap`. Do not author wireframes from memory.
327
+
328
+ ## Canvas — read `references/canvas.md`
329
+
330
+ The canvas is the single source of truth for static UI mockups: the `surface`
331
+ locks each artboard's footprint, mixed surfaces lay out
332
+ in lanes, annotations are plain-text designer notes anchored by
333
+ `targetId`/`placement`, and edits are surgical `contentPatches`. Before
334
+ authoring or editing ANY canvas, artboard, or annotation, READ
335
+ `references/canvas.md` in this skill directory — it is the single source of truth
336
+ for canvas/artboard mechanics. Do not author canvas layouts from memory.
337
+ Canvas artboards use the same HTML wireframe path as document-body
338
+ `WireframeBlock` screens: author `<Screen surface="..." html={...} />` with a
339
+ semantic HTML fragment. Do not author fresh kit-tree children such as
340
+ `<FrameScreen>`, `<Card>`, `<Row>`, or `<Btn>` inside canvas `<Screen>` tags;
341
+ those are legacy compatibility markup for old plans and produce brittle canvas
342
+ layouts.
343
+
344
+ ## Document quality — read `references/document-quality.md`
345
+
346
+ The document is a serious technical plan, not marketing: outcome-first,
347
+ prose-first, self-contained, built from the right native blocks, with open
348
+ questions in a single bottom `question-form` and a pre-handoff visual check.
349
+ Before authoring the plan document, READ `references/document-quality.md` in this
350
+ skill directory — it is the single source of truth for the document quality bar.
351
+ Do not write the document from memory.
352
+
353
+ ## Good vs. bad exemplar — read `references/exemplar.md`
354
+
355
+ For a worked example of the bar — a great UI-first plan and `/visual-plan`, plus
356
+ the anti-patterns to avoid — READ `references/exemplar.md` in this skill
357
+ directory before authoring a plan.
358
+
359
+ ## Tool Guidance
360
+
361
+ - `create-visual-plan`: start one structured visual plan per agent task/run, or
362
+ import an existing text plan by passing `planText`; `content` may include no
363
+ visual surface, canvas only, or canvas + prototype.
364
+ - `create-ui-plan`: start a UI-first plan when the work is primarily product UI.
365
+ - `create-prototype-plan`: start a prototype-first plan with a functional top
366
+ review surface.
367
+ - `create-plan-design`: start a full-fidelity branded Design-tab plan with an
368
+ optional matching Prototype tab.
369
+ - `convert-visual-plan-to-prototype`: convert an existing HTML wireframe canvas
370
+ into a prototype plan.
371
+ - `create-visual-questions`: use only when the user explicitly asks for a visual
372
+ intake questionnaire, not as `/visual-plan` preflight.
373
+ - `update-visual-plan`: revise content, status, or comments with targeted
374
+ `contentPatches` (see Core Workflow step 6).
375
+ - `read-visual-plan-source`: read the normalized plan as `plan.mdx`,
376
+ optional `canvas.mdx`, optional `.plan-state.json`, and JSON.
377
+ - `patch-visual-plan-source`: apply granular MDX AST patches by stable block,
378
+ artboard, annotation, component, or wireframe-node id.
379
+ - `import-visual-plan-source`: create or replace a plan from an MDX folder.
380
+ - `get-visual-plan`: read the current structured plan, exported HTML, and
381
+ annotations; it also returns the MDX folder for source workflows.
382
+ - `get-plan-feedback`: read unconsumed human feedback. Use it frequently; it
383
+ returns grouped threads, exact anchor details, expected resolver, and recent
384
+ review-event payloads so agents can act only on the comments meant for them.
385
+ - `get-plan-blocks`: resolve block tags before authoring — do not memorize tags;
386
+ call this first to get the authoritative tag names, required fields, and prop
387
+ shapes from the live block registry.
388
+ - `export-visual-plan`: export HTML, Markdown fallback, structured JSON, and MDX
389
+ files for repo check-in.
390
+
391
+ When the user critiques a plan's look or structure, fix the renderer or this
392
+ skill — never hand-edit one stored plan. Turn feedback into better guidance.
393
+
394
+ ## Local-Files Privacy Mode
395
+
396
+ Use local-files privacy mode when the user explicitly asks for no DB writes,
397
+ no hosted Plan database writes, no Plan MCP publish, fully local files, offline/private
398
+ planning, repo-owned/source-controlled planning artifacts, or when
399
+ `AGENT_NATIVE_PLANS_MODE=local-files` is set. Also use it when a user or repo
400
+ policy says a plan must stay under their own brand, domain, source control, or
401
+ infrastructure. In this mode the plan data must never be sent to the Plan MCP
402
+ server or Plan app action surface. Schema-only block catalog lookup is allowed
403
+ because it sends no plan content: use the MCP `get-plan-blocks` tool if it is
404
+ already available, or run
405
+ `npx @agent-native/core@latest plan blocks --out plan-blocks.md` and read that
406
+ file before authoring MDX.
407
+
408
+ The local-files contract is:
409
+
410
+ - Read source context from local files and shell commands only.
411
+ - Fetch/read the block catalog before writing structured MDX. The
412
+ `plan blocks` command calls the public no-auth `get-plan-blocks` route and
413
+ writes only registry metadata to disk; use `--format schema` if exact nested
414
+ fields are needed. If network access is unavailable, use the bundled
415
+ references and rely on `plan local check` / `plan local serve` to catch
416
+ invalid tags. For `checklist` and `question-form`, copy the catalog examples
417
+ verbatim: checklist items need `id` and `label`; question-form questions need
418
+ `id`, `title`, and `mode`; and each option needs `id` and `label`. `plan local
419
+ check` validates these required fields against the renderer schema.
420
+ - Write the plan as a local MDX folder: use `plans/<slug>/` when the user
421
+ wants the artifact checked into the repo, or use a repo-ignored/temporary
422
+ folder such as `.agent-native/plans/<slug>/` or `/tmp/agent-native-plans/<slug>/`
423
+ when it should not be checked in. The folder contains `plan.mdx`, optional
424
+ `canvas.mdx`, optional `prototype.mdx`, and optional `.plan-state.json`. Use
425
+ that exact chosen folder as `<plan-dir>` in every local CLI command below.
426
+ - Run `npx @agent-native/core@latest plan local check --dir <plan-dir>` before
427
+ serving, then run
428
+ `npx @agent-native/core@latest plan local serve --dir <plan-dir> --kind plan --open`.
429
+ Report the returned local bridge URL from stdout or `<plan-dir>/.plan-url`.
430
+ Treat `.plan-url` as a local token file and do not commit it. The URL opens
431
+ the hosted Plan UI but reads from the localhost bridge on this machine, so it
432
+ is not shareable across machines. On macOS, `--open` prefers Chromium browsers;
433
+ if Safari opens, switch to Chrome/Chromium because Safari can block the hosted
434
+ HTTPS page from fetching the HTTP localhost bridge. If the Plan app itself is
435
+ running locally with the same `PLAN_LOCAL_DIR`, the `/local-plans/<slug>` route
436
+ is also valid.
437
+ - For headless verification, run
438
+ `npx @agent-native/core@latest plan local verify --dir <plan-dir> --kind plan`.
439
+ It starts the bridge, checks the private-network preflight and JSON payload,
440
+ prints diagnostics, and exits. If the browser hangs on "Loading plan", fetch
441
+ the `bridgeUrl` from the verify/serve JSON to read the concrete validation
442
+ error.
443
+ - Do **not** call `create-visual-plan`, `create-ui-plan`,
444
+ `create-prototype-plan`, `create-plan-design`, `import-visual-plan-source`,
445
+ `update-visual-plan`, `patch-visual-plan-source`, `get-plan-feedback`,
446
+ `export-visual-plan`, or any hosted Plan tool for that plan except the
447
+ schema-only block catalog lookup above.
448
+ - Treat feedback as file or chat feedback: update the MDX files directly, rerun
449
+ the local bridge command, and summarize the new local bridge URL. Hosted
450
+ comments, sharing, history, and publish/export receipts are unavailable until
451
+ the user explicitly opts into publishing.
452
+
453
+ Local-files mode prevents plan content from going to the Agent-Native Plan
454
+ database. It does not by itself make the coding agent's language model local;
455
+ for that stronger privacy boundary, the host agent/model must also be local or
456
+ otherwise approved by the user.
457
+
458
+ ## Interpreting comment anchors
459
+
460
+ This section applies to hosted plans with `get-plan-feedback` /
461
+ `update-visual-plan`. In local-files mode, do not call hosted feedback or update
462
+ tools; interpret file/chat feedback directly, edit the MDX files, rerun the
463
+ local bridge check/serve/verify command, and report the new local URL.
464
+
465
+ `get-plan-feedback` returns rich anchors — read them before acting on any comment.
466
+
467
+ - **Coordinate frames.** `targetX`/`targetY` are percentages *within* the
468
+ element named by `targetSelector`/`targetKind`. Bare `x`/`y` are percentages
469
+ of the whole plan document. `canvasX`/`canvasY` are raw board-world pixels on
470
+ the design canvas (board size given when available).
471
+ - **Wireframe pins.** Anchors on wireframes include `targetNodeId` and
472
+ `targetNodePath` (e.g. `card > list > listItem "Acme Inc"`) identifying the
473
+ exact kit node. Use `targetNodeId` directly with wireframe node patch ops;
474
+ use `data-design-id` values from design artboards with
475
+ `update-design-element-style`. Prefer the node id/path over raw coordinates;
476
+ fall back to coordinates plus the focused screenshot (red ring marks the exact
477
+ point) only when no node id is present.
478
+ - **Text quotes.** Resolve `textQuote` against current prose using
479
+ `contextBefore`/`contextAfter` for disambiguation. If `ambiguous: true`, ask
480
+ the user — do not guess which occurrence is meant.
481
+ - **Detached comments.** `get-plan-feedback` flags threads whose quoted text no
482
+ longer exists as `detached` (in `detachedThreads`). Reconcile these against
483
+ rewritten content — never silently drop them.
484
+ - **Routing.** `resolutionTarget` is the only routing signal: act on `agent`,
485
+ treat `human` as context only. `@mentions` are people to notify, never a
486
+ routing signal.
487
+ - **Two-axis state.** Mark every ingested comment as consumed
488
+ (`consumedCommentIds` on `update-visual-plan`). Set `status=resolved` only on
489
+ agent-targeted comments you actually addressed; leave human-targeted comments
490
+ open.
491
+
492
+ ## Visibility & Sharing
493
+
494
+ Use `set-resource-visibility` to change who can see a plan (e.g. public, login,
495
+ or org-scoped). Use `share-resource` to grant specific users or roles access
496
+ by email or role. Gate visibility before sharing any plan that covers
497
+ unreleased or private work — default to the narrowest scope that meets the
498
+ review need.
499
+
500
+ ## Setup & Authentication
501
+
502
+ There are two ways into Plans.
503
+
504
+ **Coding agent (CLI).** Install once with the Agent-Native CLI. The command
505
+ installs the Plans skills, registers the hosted Plans MCP connector, and runs
506
+ auth/setup for the selected local client(s) in the same step (a one-time browser
507
+ sign-in at setup — this is intended), so the first tool call in that client does
508
+ not hit an OAuth wall:
509
+
510
+ ```bash
511
+ npx @agent-native/core@latest skills add visual-plan
512
+ ```
513
+
514
+ After that, `/visual-plan` and `/visual-recap` are the two installed slash
515
+ commands. The other planning modes (`create-ui-plan`, `create-prototype-plan`,
516
+ `create-plan-design`, `create-visual-questions`) are MCP tools reachable from
517
+ `/visual-plan`, not separate slash commands. Pass `--no-connect` to register
518
+ the connector without authenticating, then run
519
+ `npx @agent-native/core@latest connect https://plan.agent-native.com --client all`
520
+ whenever you are ready, or choose a narrower `--client`. Auth and MCP tool
521
+ loading are per client config/session.
522
+
523
+ **Browser (people you share with).** Open the Plans editor and create & edit
524
+ with no sign-up — you work as a guest. Sign in only when you want to save or
525
+ share; signing in claims the plans you made as a guest into your account.
526
+
527
+ Sharing and commenting require an account: public/shared plans are viewable by
528
+ anyone with the link, but commenting on them needs an agent-native account.
529
+
530
+ For fully offline, no-account use, run the Plans app locally and sync plans to
531
+ your repo as MDX. This local mode is a separate advanced path, not the default
532
+ hosted flow.
533
+
534
+ If a Plans tool returns `needs auth`, `Unauthorized`, or `Session terminated`,
535
+ do not keep retrying the tool. Stop and give the user the reconnect step for the
536
+ client they are using: Codex/Codex Desktop should run
537
+ `npx -y @agent-native/core@latest reconnect https://plan.agent-native.com --client codex`
538
+ and start a new Codex session; Claude Code should run `/mcp` and choose
539
+ Authenticate/Reconnect for the plan connector, or run the reconnect command with
540
+ `--client claude-code` and restart Claude. To refresh every local client config
541
+ that already has the Plan entry, use `--client all`, then restart/reload each
542
+ client. Reconnect re-authenticates WITHOUT reinstalling and finds the entry by
543
+ URL regardless of connector name. Never reinstall from scratch just to fix auth.
544
+ Continue once the connector is available.
545
+
546
+ Hosted default: connect `https://plan.agent-native.com/_agent-native/mcp`. Do
547
+ not put shared secrets in skill files.
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "source": "agent-native",
4
+ "appSkillId": "visual-plans",
5
+ "displayName": "Agent-Native Plan",
6
+ "skillName": "visual-plan",
7
+ "contentHash": "c99dd919b61d7b7e",
8
+ "mcpUrl": "",
9
+ "installedAt": "2026-06-24T09:25:14.733Z",
10
+ "updateCommand": "npx @agent-native/core@latest skills update visual-plan",
11
+ "planMode": "local-files"
12
+ }