@agent-native/core 0.44.4 → 0.45.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 (165) hide show
  1. package/dist/action.d.ts +8 -1
  2. package/dist/action.d.ts.map +1 -1
  3. package/dist/action.js +20 -10
  4. package/dist/action.js.map +1 -1
  5. package/dist/cli/app-skill.d.ts +3 -1
  6. package/dist/cli/app-skill.d.ts.map +1 -1
  7. package/dist/cli/app-skill.js +50 -8
  8. package/dist/cli/app-skill.js.map +1 -1
  9. package/dist/cli/connect.d.ts +2 -1
  10. package/dist/cli/connect.d.ts.map +1 -1
  11. package/dist/cli/connect.js +224 -10
  12. package/dist/cli/connect.js.map +1 -1
  13. package/dist/cli/create.d.ts.map +1 -1
  14. package/dist/cli/create.js +9 -7
  15. package/dist/cli/create.js.map +1 -1
  16. package/dist/cli/index.js +69 -10
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli/mcp-config-writers.d.ts +10 -0
  19. package/dist/cli/mcp-config-writers.d.ts.map +1 -1
  20. package/dist/cli/mcp-config-writers.js +60 -6
  21. package/dist/cli/mcp-config-writers.js.map +1 -1
  22. package/dist/cli/mcp.d.ts.map +1 -1
  23. package/dist/cli/mcp.js +4 -6
  24. package/dist/cli/mcp.js.map +1 -1
  25. package/dist/cli/plan-local.d.ts +43 -0
  26. package/dist/cli/plan-local.d.ts.map +1 -0
  27. package/dist/cli/plan-local.js +490 -0
  28. package/dist/cli/plan-local.js.map +1 -0
  29. package/dist/cli/plan-publish-store.d.ts +17 -7
  30. package/dist/cli/plan-publish-store.d.ts.map +1 -1
  31. package/dist/cli/plan-publish-store.js +33 -8
  32. package/dist/cli/plan-publish-store.js.map +1 -1
  33. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  34. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  35. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  36. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  37. package/dist/cli/recap.d.ts +225 -3
  38. package/dist/cli/recap.d.ts.map +1 -1
  39. package/dist/cli/recap.js +1267 -27
  40. package/dist/cli/recap.js.map +1 -1
  41. package/dist/cli/skills.d.ts +26 -11
  42. package/dist/cli/skills.d.ts.map +1 -1
  43. package/dist/cli/skills.js +810 -1365
  44. package/dist/cli/skills.js.map +1 -1
  45. package/dist/cli/templates-meta.d.ts.map +1 -1
  46. package/dist/cli/templates-meta.js +3 -2
  47. package/dist/cli/templates-meta.js.map +1 -1
  48. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
  49. package/dist/client/blocks/library/AnnotatedCodeBlock.js +41 -10
  50. package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
  51. package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -1
  52. package/dist/client/blocks/library/DiffBlock.js +54 -23
  53. package/dist/client/blocks/library/DiffBlock.js.map +1 -1
  54. package/dist/client/blocks/library/annotation-rail.d.ts +27 -8
  55. package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
  56. package/dist/client/blocks/library/annotation-rail.js +64 -27
  57. package/dist/client/blocks/library/annotation-rail.js.map +1 -1
  58. package/dist/client/blocks/library/code-filename-label.d.ts +8 -0
  59. package/dist/client/blocks/library/code-filename-label.d.ts.map +1 -0
  60. package/dist/client/blocks/library/code-filename-label.js +15 -0
  61. package/dist/client/blocks/library/code-filename-label.js.map +1 -0
  62. package/dist/client/blocks/library/code.d.ts.map +1 -1
  63. package/dist/client/blocks/library/code.js +3 -2
  64. package/dist/client/blocks/library/code.js.map +1 -1
  65. package/dist/client/blocks/library/diff.config.d.ts +1 -1
  66. package/dist/client/blocks/library/diff.config.js.map +1 -1
  67. package/dist/client/blocks/library/html.d.ts.map +1 -1
  68. package/dist/client/blocks/library/html.js +3 -1
  69. package/dist/client/blocks/library/html.js.map +1 -1
  70. package/dist/client/blocks/library/narrow-container.d.ts +4 -4
  71. package/dist/client/blocks/library/narrow-container.d.ts.map +1 -1
  72. package/dist/client/blocks/library/narrow-container.js +10 -10
  73. package/dist/client/blocks/library/narrow-container.js.map +1 -1
  74. package/dist/client/blocks/library/question-form.d.ts.map +1 -1
  75. package/dist/client/blocks/library/question-form.js +4 -1
  76. package/dist/client/blocks/library/question-form.js.map +1 -1
  77. package/dist/client/blocks/library/tabs.d.ts.map +1 -1
  78. package/dist/client/blocks/library/tabs.js +7 -2
  79. package/dist/client/blocks/library/tabs.js.map +1 -1
  80. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  81. package/dist/client/composer/TiptapComposer.js +4 -1
  82. package/dist/client/composer/TiptapComposer.js.map +1 -1
  83. package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
  84. package/dist/client/db-admin/TableEditor.js +3 -1
  85. package/dist/client/db-admin/TableEditor.js.map +1 -1
  86. package/dist/db/client.d.ts +8 -0
  87. package/dist/db/client.d.ts.map +1 -1
  88. package/dist/db/client.js +23 -2
  89. package/dist/db/client.js.map +1 -1
  90. package/dist/db/migrations.d.ts.map +1 -1
  91. package/dist/db/migrations.js +2 -1
  92. package/dist/db/migrations.js.map +1 -1
  93. package/dist/deploy/build.d.ts.map +1 -1
  94. package/dist/deploy/build.js +8 -0
  95. package/dist/deploy/build.js.map +1 -1
  96. package/dist/extensions/html-shell.js +1 -1
  97. package/dist/extensions/html-shell.js.map +1 -1
  98. package/dist/extensions/routes.d.ts +18 -0
  99. package/dist/extensions/routes.d.ts.map +1 -1
  100. package/dist/extensions/routes.js +30 -8
  101. package/dist/extensions/routes.js.map +1 -1
  102. package/dist/jobs/scheduler.d.ts.map +1 -1
  103. package/dist/jobs/scheduler.js +5 -1
  104. package/dist/jobs/scheduler.js.map +1 -1
  105. package/dist/mcp/build-server.d.ts +1 -0
  106. package/dist/mcp/build-server.d.ts.map +1 -1
  107. package/dist/mcp/build-server.js +7 -3
  108. package/dist/mcp/build-server.js.map +1 -1
  109. package/dist/mcp/oauth-route.d.ts.map +1 -1
  110. package/dist/mcp/oauth-route.js +56 -19
  111. package/dist/mcp/oauth-route.js.map +1 -1
  112. package/dist/mcp/oauth-store.d.ts +1 -0
  113. package/dist/mcp/oauth-store.d.ts.map +1 -1
  114. package/dist/mcp/oauth-store.js +9 -0
  115. package/dist/mcp/oauth-store.js.map +1 -1
  116. package/dist/mcp/server.d.ts.map +1 -1
  117. package/dist/mcp/server.js +9 -4
  118. package/dist/mcp/server.js.map +1 -1
  119. package/dist/mcp-client/errors.js +3 -3
  120. package/dist/mcp-client/errors.js.map +1 -1
  121. package/dist/oauth-tokens/store.d.ts.map +1 -1
  122. package/dist/oauth-tokens/store.js +42 -5
  123. package/dist/oauth-tokens/store.js.map +1 -1
  124. package/dist/scripts/db/index.d.ts.map +1 -1
  125. package/dist/scripts/db/index.js +1 -0
  126. package/dist/scripts/db/index.js.map +1 -1
  127. package/dist/scripts/db/migrate-encrypt-oauth-tokens.d.ts +28 -0
  128. package/dist/scripts/db/migrate-encrypt-oauth-tokens.d.ts.map +1 -0
  129. package/dist/scripts/db/migrate-encrypt-oauth-tokens.js +164 -0
  130. package/dist/scripts/db/migrate-encrypt-oauth-tokens.js.map +1 -0
  131. package/dist/scripts/db/scoping.d.ts.map +1 -1
  132. package/dist/scripts/db/scoping.js +7 -5
  133. package/dist/scripts/db/scoping.js.map +1 -1
  134. package/dist/secrets/index.d.ts +1 -0
  135. package/dist/secrets/index.d.ts.map +1 -1
  136. package/dist/secrets/index.js +4 -0
  137. package/dist/secrets/index.js.map +1 -1
  138. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  139. package/dist/server/agent-chat-plugin.js +3 -1
  140. package/dist/server/agent-chat-plugin.js.map +1 -1
  141. package/dist/server/agent-teams.d.ts.map +1 -1
  142. package/dist/server/agent-teams.js +10 -2
  143. package/dist/server/agent-teams.js.map +1 -1
  144. package/dist/server/auth.d.ts.map +1 -1
  145. package/dist/server/auth.js +7 -3
  146. package/dist/server/auth.js.map +1 -1
  147. package/dist/server/recap-image-route.d.ts.map +1 -1
  148. package/dist/server/recap-image-route.js +3 -6
  149. package/dist/server/recap-image-route.js.map +1 -1
  150. package/dist/server/sentry.d.ts.map +1 -1
  151. package/dist/server/sentry.js +12 -5
  152. package/dist/server/sentry.js.map +1 -1
  153. package/dist/server/social-og-image.d.ts.map +1 -1
  154. package/dist/server/social-og-image.js +3 -1
  155. package/dist/server/social-og-image.js.map +1 -1
  156. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  157. package/dist/sharing/actions/set-resource-visibility.js +4 -1
  158. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  159. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +22 -6
  160. package/docs/content/plan-plugin.md +39 -7
  161. package/docs/content/pr-visual-recap.md +89 -13
  162. package/docs/content/skills-guide.md +13 -0
  163. package/docs/content/template-plan.md +62 -7
  164. package/package.json +5 -1
  165. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +22 -6
@@ -12,9 +12,26 @@ The Agent-Native **Plan** app ships as one installable bundle. A single install
12
12
  One install gives you:
13
13
 
14
14
  - **Two skills** — `/visual-plan` (the canonical entry point) and `/visual-recap`.
15
- - **The Plan MCP connector** — registered against the hosted app at `https://plan.agent-native.com` (MCP endpoint `https://plan.agent-native.com/_agent-native/mcp`, server name `agent-native-plans`).
15
+ - **The Plan MCP connector** — registered against the hosted app at `https://plan.agent-native.com` (MCP endpoint `https://plan.agent-native.com/_agent-native/mcp`, server name `plan`, with legacy alias `agent-native-plans` during migration).
16
16
 
17
- Both skills **always publish to the hosted Plan app** — they create a plan via the MCP connector and hand you a link or inline plan to review. They never dump an inline Markdown/ASCII plan into chat as the deliverable. If a Plan tool returns `needs auth`, `Unauthorized`, or `Session terminated`, authenticate the connector (see each route below) instead of falling back to inline output.
17
+ By default, both skills publish to the hosted Plan app — they create a plan via
18
+ the MCP connector and hand you a link or inline plan to review. They never dump
19
+ an inline Markdown/ASCII plan into chat as the deliverable. If a Plan tool
20
+ returns `needs auth`, `Unauthorized`, or `Session terminated`, authenticate the
21
+ connector (see each route below) instead of falling back to inline output.
22
+
23
+ The exception is explicit **local-files privacy mode**. When you ask for no DB
24
+ writes or set `AGENT_NATIVE_PLANS_MODE=local-files`, the skills must not call
25
+ the Plan MCP connector. They write `plans/<slug>/plan.mdx` plus optional
26
+ `canvas.mdx`, `prototype.mdx`, and `.plan-state.json`, then preview locally with:
27
+
28
+ ```bash
29
+ agent-native plan local preview --dir plans/<slug> --kind plan
30
+ ```
31
+
32
+ This keeps plan content out of the Agent-Native Plan database. Hosted sharing,
33
+ comments, screenshots, and plan history are unavailable until you explicitly
34
+ publish later.
18
35
 
19
36
  > The plugin (`agent-native-visual-plans`) carries app id `visual-plans`, which is why the Claude Code plugin name and Codex plugin name are both `agent-native-visual-plans`. The Plan app's display name is "Agent-Native Plan".
20
37
 
@@ -32,14 +49,27 @@ npx @agent-native/core@latest skills add visual-plan
32
49
  agent-native skills add visual-plan
33
50
  ```
34
51
 
35
- This installs `visual-plan` plus the companion `visual-recap` skill, then registers the `agent-native-plans` connector and runs auth (OAuth prompt for hosted/account-backed sharing). Useful flags:
52
+ This installs `visual-plan` plus the companion `visual-recap` skill, then registers the `plan` connector and its legacy `agent-native-plans` alias, then runs auth (OAuth prompt for hosted/account-backed sharing). Useful flags:
36
53
 
37
54
  - `--client codex|claude-code|claude-code-cli|cowork|all` — which local agents to write the MCP config for (default `codex`).
38
55
  - `--no-connect` — register the connector without authenticating; run `agent-native connect https://plan.agent-native.com` later.
39
56
  - `--mcp-url <url>` — point the connector at a custom origin (an ngrok tunnel, a local dev server, or a self-hosted deployment) instead of the hosted default.
40
57
  - `--with-github-action` — also write the PR Visual Recap GitHub Action (see [PR Visual Recap](/docs/pr-visual-recap)).
41
58
 
42
- After it finishes, restart or reload the agent client so the new skills and tools load, then run `/visual-plan`.
59
+ Interactive installs also offer the PR Visual Recap Action when no workflow is
60
+ present. Say yes to add it during skill setup, or run the command above later
61
+ with `--with-github-action`. After the workflow is written, run:
62
+
63
+ ```bash
64
+ agent-native recap setup
65
+ agent-native recap doctor
66
+ ```
67
+
68
+ `recap setup` configures the GitHub Action secrets and variables where possible,
69
+ and `recap doctor` verifies the workflow, local publish token, GitHub repo
70
+ access, and required Actions configuration. After install finishes, restart or
71
+ reload the agent client so the new skills and tools load, then run
72
+ `/visual-plan`.
43
73
 
44
74
  > Note: the bare `npx skills add BuilderIO/agent-native --skill visual-plan` (Vercel/open Skills CLI) installs **instructions only** — it does not register the MCP connector. Use the Agent-Native CLI above when you want the connector wired up too.
45
75
 
@@ -65,10 +95,12 @@ The same repo is a Codex plugin marketplace. Add it, install the plugin, then au
65
95
  ```bash
66
96
  codex plugin marketplace add BuilderIO/agent-native
67
97
  codex plugin add agent-native-visual-plans@agent-native-apps
68
- codex mcp login agent-native-plans # OAuth in the browser
98
+ codex mcp login plan # OAuth in the browser
99
+ # Existing installs may already be authenticated as:
100
+ codex mcp login agent-native-plans
69
101
  ```
70
102
 
71
- After install, **start a new Codex thread** so the skills and MCP tools load into the session. The plugin ships a URL-only connector (`[mcp_servers.agent-native-plans]` → `https://plan.agent-native.com/_agent-native/mcp`); `codex mcp login` runs the OAuth flow. The universal CLI route above also works for Codex (`agent-native skills add visual-plan --client codex`) if you prefer one command that installs and authenticates together.
103
+ After install, **start a new Codex thread** so the skills and MCP tools load into the session. The plugin ships URL-only connectors (`[mcp_servers.plan]` and legacy `[mcp_servers.agent-native-plans]` → `https://plan.agent-native.com/_agent-native/mcp`); `codex mcp login` runs the OAuth flow. The universal CLI route above also works for Codex (`agent-native skills add visual-plan --client codex`) if you prefer one command that installs and authenticates together.
72
104
 
73
105
  ## Updates {#updates}
74
106
 
@@ -76,7 +108,7 @@ The plugin routes auto-update — you do not re-pack or re-add the marketplace f
76
108
 
77
109
  - **Claude Code** — the marketplace entry sets `autoUpdate: true` and the plugin uses commit-SHA versioning, so Claude Code pulls new versions from the repo at startup; run `/reload-plugins` to activate. Every push to the repo's default branch reaches installed users automatically.
78
110
  - **Codex** — the plugin `version` embeds a content hash of the bundled skills and MCP endpoint (e.g. `1.0.0+codex.<hash>`), so any skill or endpoint change yields a new version. Codex's startup auto-upgrade re-installs configured git marketplaces on its own; just **start a new thread** to pick up the change. No manual `codex plugin marketplace upgrade` is needed for routine updates.
79
- - **Universal CLI route** — re-run `npx @agent-native/core@latest skills add visual-plan` to refresh the skills and re-register the connector. `@latest` always pulls the current skills from the published `@agent-native/core` package.
111
+ - **Universal CLI route** — run `npx @agent-native/core@latest skills status visual-plan` to check copied skill folders, or `npx @agent-native/core@latest skills update visual-plan` to refresh them in place. Re-running `skills add visual-plan` still works when you also want to re-register/authenticate the connector. `@latest` always pulls the current skills from the published `@agent-native/core` package.
80
112
 
81
113
  The connector points at a **hosted** app, so the Plan app's actions and live tool surface always reflect the deployed version regardless of when you installed; only the bundled skill instructions follow the update mechanisms above.
82
114
 
@@ -1,38 +1,61 @@
1
1
  ---
2
2
  title: "PR Visual Recap"
3
- description: "A GitHub Action that runs your repo's visual-recap skill on every PR. An LLM coding agent reads the diff, publishes an interactive recap plan, and posts it as a sticky PR comment with an inline screenshot. Informational and non-blocking."
3
+ description: "A GitHub Action that runs your repo's visual-recap skill on every PR. An LLM coding agent reads the diff, publishes an interactive recap plan, shows an informational check, and posts a sticky PR comment with an inline screenshot. Informational and non-blocking."
4
4
  ---
5
5
 
6
6
  # PR Visual Recap
7
7
 
8
- PR Visual Recap is a GitHub Action that turns every pull request into a **visual code review**. On each push, an LLM coding agent runs your repo's [`visual-recap`](/docs/template-plan) skill against the PR diff, publishes a structured recap plan to the hosted Plans app, and upserts **one sticky PR comment** that links to the interactive plan with an **inline screenshot** embedded right in the comment.
8
+ PR Visual Recap is a GitHub Action that turns every pull request into a **visual code review**. On each push, an LLM coding agent runs your repo's [`visual-recap`](/docs/template-plan) skill against the PR diff, publishes a structured recap plan to the hosted Plans app, shows an informational `Visual Recap` check while it runs, and upserts **one sticky PR comment** that links to the interactive plan with an **inline screenshot** embedded right in the comment.
9
9
 
10
10
  This is not a deterministic diff renderer. The action invokes a real coding agent (Claude Code CLI by default, or OpenAI Codex CLI) that reads the change, decides what matters, and authors the recap by calling the Plans MCP tool `create-visual-recap` — the same tool the `/visual-recap` slash command uses. You get a high-altitude, schema/API/before-after view of the change instead of a wall of raw diff.
11
11
 
12
- The recap is **informational and non-blocking**. It is not a required check, it never blocks the PR, and it never replaces reading the actual diff. The sticky comment is a review aid, not a sign-off.
12
+ The recap is **informational and non-blocking**. It creates a check row so reviewers can see that generation is in progress, but it is not a required check, it never blocks the PR, and it never replaces reading the actual diff. The sticky comment is a review aid, not a sign-off.
13
13
 
14
14
  ## What it does
15
15
 
16
16
  On each PR push, the workflow:
17
17
 
18
18
  1. Collects a bounded diff between the PR base and head.
19
- 2. Runs the configured coding agent against that diff. The agent reads your repo's `visual-recap` skill and authors a recap, publishing it with `create-visual-recap`.
20
- 3. Reads the published plan URL the agent wrote to `recap-url.txt`.
21
- 4. Opens that URL in headless Chrome and screenshots the rendered plan.
22
- 5. Uploads the PNG to a signed public image route on the Plans app.
23
- 6. Upserts a single sticky PR comment that embeds the screenshot **inline** (served through GitHub's camo image proxy) next to the link to the interactive recap.
19
+ 2. Creates an informational `Visual Recap` GitHub check with `Review in progress`.
20
+ 3. Runs the configured coding agent against that diff. The agent reads your repo's `visual-recap` skill and authors a recap, publishing it with `create-visual-recap`.
21
+ 4. Reads the published plan URL the agent wrote to `recap-url.txt`.
22
+ 5. Opens that URL in headless Chrome and screenshots the rendered plan.
23
+ 6. Uploads the PNG to a signed public image route on the Plans app.
24
+ 7. Upserts a single sticky PR comment that embeds the screenshot **inline** (served through GitHub's camo image proxy) next to the link to the interactive recap.
25
+ 8. Completes the `Visual Recap` check as success, skipped, or neutral.
24
26
 
25
27
  A re-push updates the same plan and the same sticky comment in place — no orphaned plans, no comment spam.
26
28
 
27
29
  ## Installing it
28
30
 
29
- The Agent-Native CLI writes the workflow into your repository and prints the secrets to set:
31
+ When you install Plans interactively, the Agent-Native CLI asks whether to add
32
+ automatic PR Visual Recaps. Say yes to write the GitHub Action, or add it
33
+ explicitly at any time:
30
34
 
31
35
  ```bash
32
36
  agent-native skills add visual-plan --with-github-action
33
37
  ```
34
38
 
35
- This installs the `visual-plan` skill (which includes the `visual-recap` skill the action runs) and writes `.github/workflows/pr-visual-recap.yml` into your repo. The workflow calls **published CLI subcommands** — `agent-native recap scan|build-prompt|shot|comment` — so nothing is copied into your repo as helper scripts. Commit the generated workflow file, set the secrets below, and open a PR to see it run.
39
+ This installs the `visual-plan` skill (which includes the `visual-recap` skill the action runs) and writes `.github/workflows/pr-visual-recap.yml` into your repo. The workflow calls **published CLI subcommands** — `agent-native recap scan|build-prompt|shot|comment` — so nothing is copied into your repo as helper scripts.
40
+
41
+ Then run the guided setup helper:
42
+
43
+ ```bash
44
+ agent-native recap setup
45
+ agent-native recap doctor
46
+ ```
47
+
48
+ `recap setup` refreshes the workflow, uses `gh` to set GitHub Actions
49
+ secrets/variables when values are available from env or the local Plans
50
+ publish-token store, and prints exact missing commands for anything it cannot
51
+ set. Secret values are sent to `gh` through stdin, not command arguments. Commit
52
+ the generated workflow file and open a PR to see it run.
53
+
54
+ By default, the workflow builds its agent prompt from the latest bundled
55
+ `visual-recap` guidance in `@agent-native/core@latest`, including any sibling
56
+ reference files the skill ships with. If your repo intentionally customizes and
57
+ pins its committed `visual-recap` folder, set the repository variable
58
+ `VISUAL_RECAP_SKILL_SOURCE=repo`.
36
59
 
37
60
  ## Backend selection
38
61
 
@@ -51,6 +74,7 @@ Beyond the backend, two repository variables tune _how_ the agent runs:
51
74
 
52
75
  - **`VISUAL_RECAP_MODEL`** pins the model passed to the CLI (`--model`) — for example `gpt-5.5` for Codex, or a Claude model id. Leave it unset to use the CLI's own default model.
53
76
  - **`VISUAL_RECAP_REASONING`** sets the reasoning depth: `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. It applies to the Codex backend; Claude's reasoning is model-driven, so this variable is ignored there.
77
+ - **`VISUAL_RECAP_SKILL_SOURCE`** controls prompt freshness: `auto`/unset uses the latest bundled skill guidance, while `repo` pins to the committed repo-local `visual-recap` skill folder.
54
78
 
55
79
  For example, to run the recap on Codex with GPT-5.5 at high reasoning, set the repository variables `VISUAL_RECAP_AGENT=codex`, `VISUAL_RECAP_MODEL=gpt-5.5`, and `VISUAL_RECAP_REASONING=high`.
56
80
 
@@ -65,7 +89,18 @@ Set these in your repository's **Settings → Secrets and variables → Actions*
65
89
  | `PLAN_RECAP_TOKEN` | Per-user, revocable token minted by `agent-native connect`. Authorizes publishing the recap plan and the screenshot upload. |
66
90
  | `ANTHROPIC_API_KEY` | The LLM key for the default Claude Code backend. |
67
91
 
68
- Mint `PLAN_RECAP_TOKEN` with `agent-native connect` against your Plans app, then paste the printed token into the secret. Use a placeholder like `plan_recap_xxxxxxxxxxxxxxxx` only for examples — never commit a real token.
92
+ Mint `PLAN_RECAP_TOKEN` with `agent-native connect` against your Plans app. For
93
+ the hosted app, this also writes a local publish-token file that
94
+ `agent-native recap setup` can read:
95
+
96
+ ```bash
97
+ agent-native connect https://plan.agent-native.com --client codex
98
+ agent-native recap setup
99
+ ```
100
+
101
+ If you prefer manual setup, paste the token into the GitHub secret. Use a
102
+ placeholder like `plan_recap_xxxxxxxxxxxxxxxx` only for examples — never commit a
103
+ real token.
69
104
 
70
105
  ### Optional (only if you change defaults)
71
106
 
@@ -89,12 +124,53 @@ The workflow uses the plain `pull_request` trigger, **not** `pull_request_target
89
124
 
90
125
  This also means you can merge the workflow file **before** the secrets exist: with no token configured, every run is a quiet no-op until you set the secrets.
91
126
 
127
+ ## Self-modifying guard (sensitive paths)
128
+
129
+ The workflow's gate job skips the recap entirely if a PR touches any of the following paths, so a PR can never rewrite what the trusted recap job runs and exfiltrate secrets:
130
+
131
+ | Path pattern | Reason |
132
+ | ------------------------------------------ | --------------------------------------------------------- |
133
+ | `.github/workflows/pr-visual-recap.yml` | The workflow itself |
134
+ | `**/skills/visual-(recap\|plan\|plans)/**` | The visual-recap skill the agent follows |
135
+ | `**/.claude/**` | Agent settings the runner loads |
136
+ | `**/CLAUDE.md` | Agent instructions the runner loads |
137
+ | `**/AGENTS.md` | Agent instructions the runner loads |
138
+ | `**/.mcp.json` | MCP server config the runner loads |
139
+ | `packages/core/**` | Recap CLI source _(BuilderIO/agent-native monorepo only)_ |
140
+
141
+ The `packages/core/**` rule applies only in the `BuilderIO/agent-native` monorepo where `packages/core` is the recap CLI source. In consumer repos an unrelated `packages/core/` directory does not trigger the guard.
142
+
143
+ ## Local-files privacy mode
144
+
145
+ The GitHub Action is designed for hosted, shareable PR review. If you want a
146
+ recap without sending recap content to the Agent-Native Plan database, run the
147
+ same helper flow locally in local-files mode instead:
148
+
149
+ ```bash
150
+ agent-native recap collect-diff --base main --head HEAD --out recap.diff --stat recap.stat
151
+ agent-native recap scan --diff recap.diff
152
+ agent-native recap build-prompt --pr 123 --diff recap.diff --stat recap.stat --local-files --local-dir plans/pr-123-visual-recap
153
+ ```
154
+
155
+ Give the generated `recap-prompt.md` to your coding agent. In local-files mode
156
+ the prompt instructs the agent to write `plans/pr-123-visual-recap/plan.mdx`
157
+ plus optional visual files and then run:
158
+
159
+ ```bash
160
+ agent-native plan local preview --dir plans/pr-123-visual-recap --kind recap
161
+ ```
162
+
163
+ The returned `file://` preview, or `/local-plans/pr-123-visual-recap` in a local
164
+ Plan app using the same `PLAN_LOCAL_DIR`, is the review link. This mode disables
165
+ the hosted sticky PR comment, inline screenshot upload, usage attachment, and
166
+ browser comments until you explicitly publish.
167
+
92
168
  ## It's informational, not a gate
93
169
 
94
170
  The recap is a review aid layered on top of the normal PR flow:
95
171
 
96
- - It is **never a required check** and never blocks merging.
97
- - A generation or publish failure surfaces as an explanatory sticky comment, not a red X on unrelated code.
172
+ - It shows a `Visual Recap` check row for visibility, but it is **never a required check** and never blocks merging.
173
+ - A generation or publish failure completes neutrally and surfaces as an explanatory sticky comment, not a red X on unrelated code.
98
174
  - The recap and its screenshot **do not imply the diff has been reviewed**. Reviewers still need to read the actual changed lines.
99
175
 
100
176
  ## Related
@@ -132,6 +132,19 @@ Plan app is published this way as a ready-to-add marketplace at the repo root
132
132
  see [Plan plugin & marketplace](/docs/plan-plugin) for the end-to-end install
133
133
  and auto-update flow.
134
134
 
135
+ For users who install copied skills through the universal CLI instead of a
136
+ plugin marketplace, use the CLI freshness commands:
137
+
138
+ ```bash
139
+ npx @agent-native/core@latest skills status visual-plan
140
+ npx @agent-native/core@latest skills update visual-plan
141
+ ```
142
+
143
+ `skills update` scans known Codex/Claude project and user skill folders, compares
144
+ the copied folder hash to the latest bundled skill, and rewrites stale folders in
145
+ place. Newly copied Agent Native skills include an `agent-native-skill.json`
146
+ marker so future status output can identify the source and hash.
147
+
135
148
  ## Creating custom skills {#creating-skills}
136
149
 
137
150
  Create a skill when:
@@ -7,8 +7,8 @@ description: "Agent-Native Plans turns your coding agent's plan into a structure
7
7
 
8
8
  Agent-Native Plans is visual plan mode for coding agents. It turns an ordinary
9
9
  Codex, Claude Code, Markdown, or pasted implementation plan into a structured
10
- review surface with rich text, diagrams, wireframes, implementation maps,
11
- annotations, comments, and shareable links.
10
+ review surface with rich text, diagrams, wireframes, annotated code walkthroughs
11
+ and file trees, annotations, comments, and shareable links.
12
12
 
13
13
  It comes down to two commands. `/visual-plan` builds a plan **before** the agent
14
14
  writes code. `/visual-recap` turns a change that **already** happened — a PR,
@@ -45,6 +45,10 @@ agent-native skills add visual-plan
45
45
 
46
46
  The command installs both commands: `/visual-plan` and `/visual-recap`.
47
47
 
48
+ If you are using a chat-based host that accepts MCP connector URLs directly
49
+ (rather than a CLI-configured client), connect the hosted Plans connector at
50
+ `https://plan.agent-native.com/_agent-native/mcp` — see [MCP Clients](/docs/mcp-clients) for client-specific setup.
51
+
48
52
  Authentication is a one-time browser sign-in at setup — this is intended, and it
49
53
  is what lets the agent persist and share the plans it generates. What the auth
50
54
  step does depends on your client:
@@ -79,6 +83,10 @@ see [PR Visual Recap](/docs/pr-visual-recap).
79
83
  npx @agent-native/core@latest skills add visual-plan --with-github-action
80
84
  ```
81
85
 
86
+ After the workflow is written, run `agent-native recap setup` to configure
87
+ GitHub Actions secrets/variables where possible and `agent-native recap doctor`
88
+ to verify the repo is ready.
89
+
82
90
  If you only want the portable instruction file through the open Skills CLI, use:
83
91
 
84
92
  ```bash
@@ -99,8 +107,8 @@ After installation, ask your agent for the command that fits the work:
99
107
 
100
108
  - `/visual-plan` creates a structured plan **before** implementation — for
101
109
  architecture, backend, refactor, UI, or mixed product work — pulling in
102
- diagrams, wireframes, mockups, clickable prototypes, and implementation maps
103
- as the work calls for them.
110
+ diagrams, wireframes, mockups, clickable prototypes, and annotated code
111
+ walkthroughs and file trees as the work calls for them.
104
112
  - `/visual-recap` creates a high-altitude **review** of a change that already
105
113
  happened — a PR, commit, branch, or git diff — as schema, API, file, and
106
114
  before/after blocks instead of a wall of raw diff.
@@ -121,8 +129,8 @@ it to the agent starts a revision turn against the existing plan.
121
129
  ## What you can do with it
122
130
 
123
131
  - **Review before implementation.** React to diagrams, wireframes, option tabs,
124
- Open Questions forms, risk notes, file maps, and code previews before the
125
- agent edits files.
132
+ Open Questions forms, risk notes, annotated code walkthroughs, and code
133
+ previews before the agent edits files.
126
134
  - **Comment directly on the plan.** Pin feedback to text, images, wireframes, or
127
135
  canvas locations; choose whether the comment is for the agent or a human
128
136
  reviewer; @mention teammates with inline chips; and resolve comments as the
@@ -162,6 +170,50 @@ Sharing and commenting are the workflows that need an account:
162
170
  The hosted Plans connector lives at `https://plan.agent-native.com/_agent-native/mcp`.
163
171
  Never put shared secrets in skill files.
164
172
 
173
+ ## Local-files privacy mode {#local-files}
174
+
175
+ For privacy-focused work, ask for local-files mode:
176
+
177
+ ```text
178
+ Use /visual-plan in local-files mode. Do not write this plan to the Plan DB.
179
+ ```
180
+
181
+ or set the convention for your agent environment:
182
+
183
+ ```bash
184
+ export AGENT_NATIVE_PLANS_MODE=local-files
185
+ ```
186
+
187
+ In this mode the agent writes a local MDX folder under `plans/<slug>/` and must
188
+ not call the hosted Plan MCP tools. The durable files are:
189
+
190
+ - `plan.mdx`
191
+ - optional `canvas.mdx`
192
+ - optional `prototype.mdx`
193
+ - optional `.plan-state.json`
194
+
195
+ After writing the folder, the agent validates and previews it locally:
196
+
197
+ ```bash
198
+ agent-native plan local preview --dir plans/<slug> --kind plan
199
+ ```
200
+
201
+ If you run the Plan app locally with the same `PLAN_LOCAL_DIR`, you can open the
202
+ read-only app route:
203
+
204
+ ```text
205
+ http://localhost:<port>/local-plans/<slug>
206
+ ```
207
+
208
+ Local-files mode prevents plan or recap content from going to the Agent-Native
209
+ Plan database. It also disables hosted sharing, browser comments, plan history,
210
+ and publish/export receipts until you explicitly opt into publishing. To move a
211
+ local plan into the hosted database, call `publish-visual-plan` with the local
212
+ MDX folder path; this uploads the plan, assigns it a hosted ID, enables sharing
213
+ and commenting, and returns the hosted URL. It does
214
+ not automatically make your coding agent's LLM local; choose a local or approved
215
+ model if that privacy boundary matters too.
216
+
165
217
  ## Useful prompts
166
218
 
167
219
  - "Use `/visual-plan` before changing the auth flow."
@@ -169,6 +221,7 @@ Never put shared secrets in skill files.
169
221
  - "Use `/visual-plan` on the Markdown plan below and make it easier to review."
170
222
  - "Run `/visual-recap` on this PR so I can review the shape of the change first."
171
223
  - "Use `/visual-recap` on the diff between `main` and this branch."
224
+ - "Use `/visual-recap` in local-files mode so no recap content is written to the Plan DB."
172
225
 
173
226
  ## Recovering from auth errors {#auth-errors}
174
227
 
@@ -205,7 +258,9 @@ persistence, or running a fully self-hosted review surface.
205
258
  For fully offline, no-account use, you can run the Plans app locally and sync
206
259
  your plans to your repo as MDX. This local mode is a separate, advanced path —
207
260
  not the default hosted flow — and is best when you need everything to stay on
208
- your machine and in version control.
261
+ your machine and in version control. For the stricter no-DB path, use
262
+ [local-files privacy mode](#local-files), which reads from MDX folders instead
263
+ of creating local SQL rows.
209
264
 
210
265
  ## What's next
211
266
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.44.4",
3
+ "version": "0.45.1",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=22"
@@ -72,6 +72,7 @@
72
72
  "./resources/metadata": "./dist/resources/metadata.js",
73
73
  "./oauth-tokens": "./dist/oauth-tokens/index.js",
74
74
  "./secrets": "./dist/secrets/index.js",
75
+ "./secrets/crypto": "./dist/secrets/crypto.js",
75
76
  "./org": "./dist/org/index.js",
76
77
  "./client/org": "./dist/client/org/index.js",
77
78
  "./client/db-admin": "./dist/client/db-admin/index.js",
@@ -240,6 +241,9 @@
240
241
  "vite": ">=5",
241
242
  "ws": ">=8"
242
243
  },
244
+ "optionalDependencies": {
245
+ "playwright": "^1.60.0"
246
+ },
243
247
  "peerDependenciesMeta": {
244
248
  "ai": {
245
249
  "optional": true
@@ -95,9 +95,9 @@ For local stdio proxying, Codex/Cowork compatibility, or clients without
95
95
  remote MCP OAuth, use the hosted connect fallback:
96
96
 
97
97
  ```bash
98
- npx @agent-native/core connect https://dispatch.agent-native.com
98
+ npx @agent-native/core@latest connect https://dispatch.agent-native.com
99
99
  # or, for an isolated app:
100
- npx @agent-native/core connect https://mail.agent-native.com
100
+ npx @agent-native/core@latest connect https://mail.agent-native.com
101
101
  ```
102
102
 
103
103
  The command opens the app in the browser, the user clicks **Authorize**, and a
@@ -111,6 +111,19 @@ Claude bearer-token entry is the migration path: the CLI replaces
111
111
  `Authorization` headers with URL-only OAuth config and tells the user to
112
112
  authenticate from `/mcp`.
113
113
 
114
+ To re-authenticate an already-installed local/fallback client without
115
+ reinstalling skills or connectors, use:
116
+
117
+ ```bash
118
+ npx @agent-native/core@latest reconnect https://dispatch.agent-native.com --client codex
119
+ # or:
120
+ npx @agent-native/core@latest connect reconnect https://dispatch.agent-native.com --client codex
121
+ ```
122
+
123
+ With no URL, `reconnect` searches the selected client config for the existing
124
+ Agent Native MCP entry. Pass `--name <serverName>` when the config has multiple
125
+ entries or a custom server name.
126
+
114
127
  Under the hood: a logged-in browser session mints an `A2A_SECRET`-signed JWT
115
128
  carrying the caller's `sub` + `org_domain` and a unique `jti`, so tool runs
116
129
  stay tenant-scoped via `runWithRequestContext`. The existing
@@ -339,14 +352,17 @@ and mutating actions are filtered out (`filterPublicAgentActions`). The full
339
352
  surface appears when authenticated as a real caller: a deployed /
340
353
  `AGENT_MODE=production` app, or a local app reached through `connect` /
341
354
  `agent-native mcp install` (which provisions an identity-bearing token). A
342
- sparse `tools/list` means you are hitting an unauthenticated dev endpoint —
343
- connect or present a token rather than assuming the action is missing.
355
+ sparse or empty `tools/list` is diagnostic, not proof of auth failure: check
356
+ OAuth scopes, compact-catalog filtering, and the client/server auth status
357
+ before telling the user they are unauthenticated.
344
358
 
345
359
  ## Do
346
360
 
347
361
  - Do connect local/fallback clients to Dispatch with
348
- `npx @agent-native/core connect https://dispatch.agent-native.com`; use a
349
- direct app URL only when the host should be isolated to one app.
362
+ `npx @agent-native/core@latest connect https://dispatch.agent-native.com`;
363
+ use `npx @agent-native/core@latest reconnect ...` for reauth without
364
+ reinstalling; use a direct app URL only when the host should be isolated to
365
+ one app.
350
366
  - Do add a `link` builder to any action that produces or lists a navigable
351
367
  resource (draft, event, dashboard, document).
352
368
  - Do add `mcpApp` when a UI-capable MCP host should render an inline review or