@doxbrix/doxloop 0.1.4 → 0.2.0

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 (357) hide show
  1. package/CHANGELOG.md +1153 -0
  2. package/README.md +422 -226
  3. package/assets/doxbrix-preview.css +77 -15
  4. package/contracts/agent-events-v1.schema.json +1 -0
  5. package/contracts/coverage-v1.schema.json +59 -0
  6. package/contracts/drift-v1.schema.json +1 -0
  7. package/contracts/evaluation-v1.schema.json +62 -0
  8. package/contracts/quality-codes-v1.json +1 -0
  9. package/contracts/quality-report-v1.schema.json +1 -0
  10. package/contracts/validation-v1.schema.json +1 -0
  11. package/dist/agent-failure.d.ts +36 -0
  12. package/dist/agent-failure.js +98 -0
  13. package/dist/agent-isolation.d.ts +17 -0
  14. package/dist/agent-isolation.js +94 -0
  15. package/dist/agent-log.d.ts +197 -0
  16. package/dist/agent-log.js +1094 -0
  17. package/dist/agent-process.d.ts +63 -0
  18. package/dist/agent-process.js +128 -0
  19. package/dist/agent-reply.d.ts +47 -0
  20. package/dist/agent-reply.js +315 -0
  21. package/dist/agents.d.ts +40 -4
  22. package/dist/agents.js +115 -11
  23. package/dist/api-coverage.d.ts +11 -0
  24. package/dist/api-coverage.js +72 -0
  25. package/dist/application-probe.d.ts +28 -0
  26. package/dist/application-probe.js +93 -0
  27. package/dist/application-url.d.ts +14 -0
  28. package/dist/application-url.js +26 -0
  29. package/dist/args.js +15 -0
  30. package/dist/artifact-deploy.d.ts +9 -0
  31. package/dist/artifact-deploy.js +28 -8
  32. package/dist/assets.d.ts +72 -0
  33. package/dist/assets.js +382 -0
  34. package/dist/auth.d.ts +10 -0
  35. package/dist/auth.js +38 -9
  36. package/dist/author.d.ts +206 -4
  37. package/dist/author.js +1650 -52
  38. package/dist/authoring-batches.d.ts +190 -0
  39. package/dist/authoring-batches.js +489 -0
  40. package/dist/authoring-postpass.d.ts +79 -0
  41. package/dist/authoring-postpass.js +1289 -0
  42. package/dist/authoring-progress.d.ts +95 -0
  43. package/dist/authoring-progress.js +269 -0
  44. package/dist/autosync.d.ts +56 -0
  45. package/dist/autosync.js +442 -0
  46. package/dist/batch-artifacts.d.ts +81 -0
  47. package/dist/batch-artifacts.js +412 -0
  48. package/dist/batch-limits.d.ts +37 -0
  49. package/dist/batch-limits.js +80 -0
  50. package/dist/branding.d.ts +41 -0
  51. package/dist/branding.js +229 -0
  52. package/dist/bundle-upload.d.ts +26 -0
  53. package/dist/bundle-upload.js +99 -0
  54. package/dist/capture-auth.d.ts +95 -0
  55. package/dist/capture-auth.js +204 -0
  56. package/dist/capture.d.ts +48 -0
  57. package/dist/capture.js +20 -1
  58. package/dist/cli.js +839 -32
  59. package/dist/content-links.d.ts +10 -0
  60. package/dist/content-links.js +49 -0
  61. package/dist/contract-validation.d.ts +4 -0
  62. package/dist/contract-validation.js +25 -0
  63. package/dist/coverage-actions.d.ts +8 -0
  64. package/dist/coverage-actions.js +71 -0
  65. package/dist/coverage-resolutions.d.ts +16 -0
  66. package/dist/coverage-resolutions.js +58 -0
  67. package/dist/db.d.ts +37 -0
  68. package/dist/db.js +288 -0
  69. package/dist/demo.d.ts +12 -0
  70. package/dist/demo.js +122 -0
  71. package/dist/deploy-credentials.d.ts +7 -0
  72. package/dist/deploy-credentials.js +76 -0
  73. package/dist/deploy-targets/github-pages.d.ts +3 -0
  74. package/dist/deploy-targets/github-pages.js +100 -0
  75. package/dist/deploy-targets/index.d.ts +8 -0
  76. package/dist/deploy-targets/index.js +78 -0
  77. package/dist/deploy-targets/netlify.d.ts +3 -0
  78. package/dist/deploy-targets/netlify.js +49 -0
  79. package/dist/deploy-targets/types.d.ts +32 -0
  80. package/dist/deploy-targets/types.js +2 -0
  81. package/dist/deploy-targets/vercel.d.ts +3 -0
  82. package/dist/deploy-targets/vercel.js +95 -0
  83. package/dist/deploy.d.ts +9 -0
  84. package/dist/deploy.js +87 -13
  85. package/dist/deterministic-capture.d.ts +90 -0
  86. package/dist/deterministic-capture.js +435 -0
  87. package/dist/direct-edit.d.ts +40 -0
  88. package/dist/direct-edit.js +159 -0
  89. package/dist/docs-crawl.d.ts +86 -0
  90. package/dist/docs-crawl.js +536 -0
  91. package/dist/docs-site.d.ts +49 -0
  92. package/dist/docs-site.js +233 -0
  93. package/dist/doctor.js +8 -0
  94. package/dist/documentation-collections.d.ts +23 -0
  95. package/dist/documentation-collections.js +191 -0
  96. package/dist/documentation-plan.d.ts +253 -0
  97. package/dist/documentation-plan.js +2563 -0
  98. package/dist/doxbrix-build.d.ts +19 -0
  99. package/dist/doxbrix-build.js +167 -0
  100. package/dist/doxbrix-markdown.d.ts +9 -0
  101. package/dist/doxbrix-markdown.js +115 -14
  102. package/dist/drift.d.ts +10 -0
  103. package/dist/drift.js +164 -0
  104. package/dist/evaluation.d.ts +46 -0
  105. package/dist/evaluation.js +113 -0
  106. package/dist/evidence-pack.d.ts +47 -0
  107. package/dist/evidence-pack.js +358 -0
  108. package/dist/evidence.d.ts +25 -0
  109. package/dist/evidence.js +175 -0
  110. package/dist/fs.d.ts +8 -2
  111. package/dist/fs.js +41 -11
  112. package/dist/generator-api.d.ts +89 -0
  113. package/dist/generator-preflight.d.ts +27 -0
  114. package/dist/generator-preflight.js +105 -0
  115. package/dist/generator-runtime.d.ts +7 -0
  116. package/dist/generator-runtime.js +17 -1
  117. package/dist/generators.d.ts +24 -2
  118. package/dist/generators.js +54 -1
  119. package/dist/git-delivery.d.ts +17 -0
  120. package/dist/git-delivery.js +123 -0
  121. package/dist/globs.d.ts +16 -0
  122. package/dist/globs.js +65 -0
  123. package/dist/glossary.d.ts +26 -0
  124. package/dist/glossary.js +179 -0
  125. package/dist/history.d.ts +106 -0
  126. package/dist/history.js +600 -0
  127. package/dist/html-markdown.d.ts +46 -0
  128. package/dist/html-markdown.js +423 -0
  129. package/dist/interactive.js +16 -15
  130. package/dist/job-events.d.ts +74 -0
  131. package/dist/job-events.js +377 -0
  132. package/dist/keep-awake.d.ts +50 -0
  133. package/dist/keep-awake.js +123 -0
  134. package/dist/local-source-snapshot.d.ts +20 -0
  135. package/dist/local-source-snapshot.js +61 -0
  136. package/dist/mintlify-detect.d.ts +3 -0
  137. package/dist/mintlify-detect.js +18 -0
  138. package/dist/mintlify-import.d.ts +75 -0
  139. package/dist/mintlify-import.js +190 -0
  140. package/dist/navigation.d.ts +98 -0
  141. package/dist/navigation.js +310 -0
  142. package/dist/openapi.d.ts +60 -0
  143. package/dist/openapi.js +439 -0
  144. package/dist/page-editor-bridge.d.ts +3 -0
  145. package/dist/page-editor-bridge.js +109 -0
  146. package/dist/page-editor-preview.d.ts +10 -0
  147. package/dist/page-editor-preview.js +55 -0
  148. package/dist/page-extension.d.ts +9 -0
  149. package/dist/page-extension.js +15 -0
  150. package/dist/page-metadata.d.ts +28 -0
  151. package/dist/page-metadata.js +166 -0
  152. package/dist/page-operations.d.ts +34 -0
  153. package/dist/page-operations.js +215 -0
  154. package/dist/page-routes.d.ts +4 -0
  155. package/dist/page-routes.js +61 -0
  156. package/dist/pages.d.ts +20 -0
  157. package/dist/pages.js +184 -0
  158. package/dist/plan-generator.d.ts +3 -0
  159. package/dist/plan-generator.js +21 -0
  160. package/dist/plan-navigation.d.ts +11 -0
  161. package/dist/plan-navigation.js +30 -0
  162. package/dist/planning-captures.d.ts +20 -0
  163. package/dist/planning-captures.js +143 -0
  164. package/dist/planning-research.d.ts +135 -0
  165. package/dist/planning-research.js +472 -0
  166. package/dist/planning-triage.d.ts +23 -0
  167. package/dist/planning-triage.js +131 -0
  168. package/dist/preview.d.ts +24 -0
  169. package/dist/preview.js +280 -29
  170. package/dist/project-detect.d.ts +36 -0
  171. package/dist/project-detect.js +251 -0
  172. package/dist/project-import.d.ts +54 -0
  173. package/dist/project-import.js +157 -0
  174. package/dist/project-lock.d.ts +6 -0
  175. package/dist/project-lock.js +96 -0
  176. package/dist/project-registry.d.ts +25 -0
  177. package/dist/project-registry.js +79 -0
  178. package/dist/project.d.ts +35 -3
  179. package/dist/project.js +388 -38
  180. package/dist/prompts.d.ts +9 -0
  181. package/dist/prompts.js +33 -4
  182. package/dist/proposal-replay.d.ts +32 -0
  183. package/dist/proposal-replay.js +99 -0
  184. package/dist/quality-claims.d.ts +8 -0
  185. package/dist/quality-claims.js +168 -0
  186. package/dist/quality-config.d.ts +5 -0
  187. package/dist/quality-config.js +84 -0
  188. package/dist/quality-contract.d.ts +37 -0
  189. package/dist/quality-contract.js +46 -0
  190. package/dist/quality-examples.d.ts +4 -0
  191. package/dist/quality-examples.js +233 -0
  192. package/dist/quality-gates.d.ts +16 -0
  193. package/dist/quality-gates.js +192 -0
  194. package/dist/quality-links.d.ts +7 -0
  195. package/dist/quality-links.js +149 -0
  196. package/dist/quality-lint.d.ts +6 -0
  197. package/dist/quality-lint.js +124 -0
  198. package/dist/quality-rendered.d.ts +11 -0
  199. package/dist/quality-rendered.js +222 -0
  200. package/dist/quality-schema.d.ts +3 -0
  201. package/dist/quality-schema.js +71 -0
  202. package/dist/release-notes.d.ts +44 -0
  203. package/dist/release-notes.js +183 -0
  204. package/dist/remote-monitor.d.ts +16 -0
  205. package/dist/remote-monitor.js +74 -0
  206. package/dist/remote-source.d.ts +34 -0
  207. package/dist/remote-source.js +426 -0
  208. package/dist/review-diff.d.ts +82 -0
  209. package/dist/review-diff.js +400 -0
  210. package/dist/review-learning.d.ts +11 -0
  211. package/dist/review-learning.js +60 -0
  212. package/dist/review-render.d.ts +38 -0
  213. package/dist/review-render.js +224 -0
  214. package/dist/review-report.d.ts +9 -0
  215. package/dist/review-report.js +89 -0
  216. package/dist/review-ui.d.ts +14 -0
  217. package/dist/review-ui.js +1248 -0
  218. package/dist/schedule.d.ts +78 -0
  219. package/dist/schedule.js +480 -0
  220. package/dist/screen-capture-provider.d.ts +52 -0
  221. package/dist/screen-capture-provider.js +218 -0
  222. package/dist/screenshot-workflow.d.ts +167 -0
  223. package/dist/screenshot-workflow.js +1237 -0
  224. package/dist/settings.d.ts +1 -1
  225. package/dist/settings.js +95 -7
  226. package/dist/site-export.d.ts +18 -0
  227. package/dist/site-export.js +87 -0
  228. package/dist/source-connectors.d.ts +33 -0
  229. package/dist/source-connectors.js +268 -0
  230. package/dist/source-discovery.d.ts +132 -0
  231. package/dist/source-discovery.js +823 -0
  232. package/dist/source-intelligence.d.ts +9 -0
  233. package/dist/source-intelligence.js +306 -0
  234. package/dist/sync-review.d.ts +28 -0
  235. package/dist/sync-review.js +264 -0
  236. package/dist/sync-runs.d.ts +192 -0
  237. package/dist/sync-runs.js +2244 -0
  238. package/dist/sync.d.ts +35 -0
  239. package/dist/sync.js +298 -32
  240. package/dist/text-diff.d.ts +9 -0
  241. package/dist/text-diff.js +59 -0
  242. package/dist/types.d.ts +946 -1
  243. package/dist/ui/assets/doxloop-logo-light-De7Nx7j7.png +0 -0
  244. package/dist/ui/assets/index-BHBYU2aG.css +1 -0
  245. package/dist/ui/assets/index-Cq3RPQiC.js +33 -0
  246. package/dist/ui/index.html +18 -0
  247. package/dist/ui-server.d.ts +83 -0
  248. package/dist/ui-server.js +3532 -0
  249. package/dist/usage-budget.d.ts +28 -0
  250. package/dist/usage-budget.js +90 -0
  251. package/dist/validation.d.ts +25 -1
  252. package/dist/validation.js +312 -26
  253. package/dist/workspace-tools.d.ts +54 -0
  254. package/dist/workspace-tools.js +123 -0
  255. package/docs/agent-compatibility.md +50 -28
  256. package/docs/ci-and-automation.md +105 -66
  257. package/docs/doxbrix-http-api.md +8 -1
  258. package/docs/existing-documentation.md +80 -0
  259. package/docs/generation-performance.md +108 -0
  260. package/docs/generator-authoring.md +68 -5
  261. package/docs/generator-selection.md +50 -13
  262. package/docs/mintlify-import.md +71 -0
  263. package/docs/openapi-security.md +25 -0
  264. package/docs/project-format.md +331 -36
  265. package/docs/release-quality.md +158 -0
  266. package/docs/releasing.md +72 -0
  267. package/docs/review-workflows.md +51 -0
  268. package/docs/security-model.md +102 -39
  269. package/docs/troubleshooting.md +226 -93
  270. package/package.json +46 -15
  271. package/scripts/test-auto-screenshot.mjs +172 -0
  272. package/skills/doxloop-authoring/SKILL.md +242 -361
  273. package/skills/doxloop-authoring/references/existing-documentation.md +94 -0
  274. package/skills/doxloop-authoring/references/navigation-architecture.md +18 -7
  275. package/skills/doxloop-authoring/references/page-depth.md +169 -0
  276. package/skills/doxloop-authoring/references/project-format.md +106 -7
  277. package/skills/doxloop-authoring/references/quality.md +10 -0
  278. package/skills/doxloop-authoring/references/screenshot-manifest.md +113 -0
  279. package/skills/doxloop-authoring/references/screenshots.md +149 -235
  280. package/skills/doxloop-authoring/references/workflows.md +76 -0
  281. package/skills/doxloop-doxbrix/SKILL.md +38 -22
  282. package/skills/doxloop-doxbrix/references/api-endpoints.md +15 -14
  283. package/skills/doxloop-doxbrix/references/components.md +30 -3
  284. package/skills/doxloop-doxbrix/references/manifest.md +3 -2
  285. package/vendor/doxbrix-import/LICENSE +202 -0
  286. package/vendor/doxbrix-import/README.md +17 -0
  287. package/vendor/doxbrix-import/UPSTREAM.json +47 -0
  288. package/vendor/doxbrix-import/dist/docs/frontmatter.d.ts +13 -0
  289. package/vendor/doxbrix-import/dist/docs/frontmatter.js +83 -0
  290. package/vendor/doxbrix-import/dist/docs/import.d.ts +21 -0
  291. package/vendor/doxbrix-import/dist/docs/import.js +147 -0
  292. package/vendor/doxbrix-import/dist/docs/manifest.d.ts +163 -0
  293. package/vendor/doxbrix-import/dist/docs/manifest.js +64 -0
  294. package/vendor/doxbrix-import/dist/docs/project.d.ts +25 -0
  295. package/vendor/doxbrix-import/dist/docs/project.js +77 -0
  296. package/vendor/doxbrix-import/dist/docs/starter.d.ts +4 -0
  297. package/vendor/doxbrix-import/dist/docs/starter.js +11 -0
  298. package/vendor/doxbrix-import/dist/importer.d.ts +227 -0
  299. package/vendor/doxbrix-import/dist/importer.js +1567 -0
  300. package/vendor/doxbrix-import/dist/mintlify-openapi.d.ts +37 -0
  301. package/vendor/doxbrix-import/dist/mintlify-openapi.js +305 -0
  302. package/vendor/doxbrix-import/dist/safe-path.d.ts +9 -0
  303. package/vendor/doxbrix-import/dist/safe-path.js +47 -0
  304. package/dist/agents.d.ts.map +0 -1
  305. package/dist/agents.js.map +0 -1
  306. package/dist/args.d.ts.map +0 -1
  307. package/dist/args.js.map +0 -1
  308. package/dist/artifact-deploy.d.ts.map +0 -1
  309. package/dist/artifact-deploy.js.map +0 -1
  310. package/dist/auth.d.ts.map +0 -1
  311. package/dist/auth.js.map +0 -1
  312. package/dist/author.d.ts.map +0 -1
  313. package/dist/author.js.map +0 -1
  314. package/dist/capture.d.ts.map +0 -1
  315. package/dist/capture.js.map +0 -1
  316. package/dist/cli.d.ts.map +0 -1
  317. package/dist/cli.js.map +0 -1
  318. package/dist/deploy.d.ts.map +0 -1
  319. package/dist/deploy.js.map +0 -1
  320. package/dist/deployment-visibility.d.ts.map +0 -1
  321. package/dist/deployment-visibility.js.map +0 -1
  322. package/dist/doctor.d.ts.map +0 -1
  323. package/dist/doctor.js.map +0 -1
  324. package/dist/doxbrix-markdown.d.ts.map +0 -1
  325. package/dist/doxbrix-markdown.js.map +0 -1
  326. package/dist/errors.d.ts.map +0 -1
  327. package/dist/errors.js.map +0 -1
  328. package/dist/fs.d.ts.map +0 -1
  329. package/dist/fs.js.map +0 -1
  330. package/dist/generator-api.d.ts.map +0 -1
  331. package/dist/generator-api.js.map +0 -1
  332. package/dist/generator-manager.d.ts.map +0 -1
  333. package/dist/generator-manager.js.map +0 -1
  334. package/dist/generator-runtime.d.ts.map +0 -1
  335. package/dist/generator-runtime.js.map +0 -1
  336. package/dist/generators.d.ts.map +0 -1
  337. package/dist/generators.js.map +0 -1
  338. package/dist/interactive.d.ts.map +0 -1
  339. package/dist/interactive.js.map +0 -1
  340. package/dist/preview.d.ts.map +0 -1
  341. package/dist/preview.js.map +0 -1
  342. package/dist/progress.d.ts.map +0 -1
  343. package/dist/progress.js.map +0 -1
  344. package/dist/project.d.ts.map +0 -1
  345. package/dist/project.js.map +0 -1
  346. package/dist/prompts.d.ts.map +0 -1
  347. package/dist/prompts.js.map +0 -1
  348. package/dist/settings.d.ts.map +0 -1
  349. package/dist/settings.js.map +0 -1
  350. package/dist/sync.d.ts.map +0 -1
  351. package/dist/sync.js.map +0 -1
  352. package/dist/types.d.ts.map +0 -1
  353. package/dist/types.js.map +0 -1
  354. package/dist/validation.d.ts.map +0 -1
  355. package/dist/validation.js.map +0 -1
  356. package/dist/version.d.ts.map +0 -1
  357. package/dist/version.js.map +0 -1
@@ -1,213 +1,152 @@
1
1
  # Application guide screenshots
2
2
 
3
- Use this workflow only for screenshots of the product being documented. The
4
- existing `doxloop capture` command inspects external documentation design
5
- references and is not part of this workflow.
6
-
7
- ## Decide whether capture is enabled
8
-
9
- Capture application screenshots when any of these conditions applies:
10
-
11
- - the task prompt says screenshots are required because `--screenshots` was
12
- supplied;
13
- - the user explicitly asks to include, create, capture, or refresh screenshots;
14
- - `.doxloop/project.json` sets `application.screenshots.policy` to `auto` and
15
- the agreed page is a visible user-interface workflow.
16
-
17
- Do not capture when the task prompt disables screenshots; when the project
18
- policy is `off` and the task prompt does not explicitly require them; when the
19
- request mentions screenshots only negatively or as an example; or when the page
20
- has no meaningful visible application state. An explicit `--screenshots`
21
- requirement overrides project policy for that run. Never add screenshots to API
22
- or CLI procedures merely for decoration.
3
+ In an approved writing batch, use only the saved captures and observed labels
4
+ in the supplied manifest slice. Choose images that prove the reader's steps;
5
+ do not browse, take screenshots, or modify capture status. The capture workflow
6
+ below applies only to a dedicated capture task or a run without an approved plan.
7
+
8
+ Use this workflow only for screenshots of the product being documented (the
9
+ `doxloop capture` command is unrelated design-reference tooling). Capture when the task prompt requires screenshots, the user explicitly
10
+ asks for them, or `application.screenshots.policy` is `auto` and the page is a
11
+ visible UI workflow. Do not capture when the prompt disables screenshots, when
12
+ the policy is `off` and the prompt does not require them, or when the page has
13
+ no meaningful visible state. Never decorate API or CLI procedures with images.
23
14
 
24
15
  ## Use the user-managed application
25
16
 
26
- Assume the user has already started and prepared the application. Never start,
27
- restart, stop, seed, reset, or reconfigure it. Never run a project startup,
28
- setup, database, or authentication command. Use `application.baseUrl` when it
29
- is configured; otherwise use the application URL supplied by the user or
30
- already open in the approved in-app browser. If no reachable application
31
- surface is available, finish the text guide without broken image links and
32
- report that screenshots could not be captured.
33
-
34
- Capture only the agreed application origin and its required public assets.
35
- Never use a real customer or production environment, change shared data, or
17
+ The user has already started and prepared the application. Never start,
18
+ restart, stop, seed, reset, or reconfigure it, and never run a startup, setup,
19
+ database, or authentication command. Resolve every path against
20
+ `application.baseUrl`. Use the Doxloop-provided `doxloop_capture` browser:
21
+ its snapshot and interaction tools establish state, and its screenshot tool
22
+ saves each image at the manifest's project-relative filename. That tool
23
+ resolves the filename against the documentation project root and does not
24
+ create directories: a missing parent folder fails with `ENOENT` and writes
25
+ nothing. Doxloop pre-creates the guide directories for an approved plan; create
26
+ any other parent yourself first, and read the result of every screenshot call —
27
+ an error means no image exists.
28
+
29
+ Capture only the agreed application origin with a demo or test account and
30
+ synthetic data. Never use a production environment, change shared data, or
36
31
  operate outside the workflow being documented.
37
32
 
38
- ## Reuse in-app browser authentication
39
-
40
- Keep authentication in the in-app browser controlled by Codex, Claude, or the
41
- selected agent. Do not add authentication settings to `.doxloop/project.json`
42
- and do not create login scripts, storage-state files, credential files, or
43
- environment-variable requirements.
44
-
45
- 1. Open the application in the approved in-app browser and inspect the visible
46
- state.
47
- 2. If an authenticated application page is already visible, reuse that session
48
- and continue without mentioning login.
49
- 3. If the application redirects to login, first allow the browser's existing
50
- session or password-manager autofill to work. The agent may select a sign-in
51
- control after autofill, but must never inspect, copy, reveal, or log an
52
- autofilled value.
53
- 4. If user interaction is required, keep the login page open and ask the user
54
- once to complete login, MFA, SSO, passkey, or browser confirmation directly
55
- in that browser. Never ask for a password, token, OTP, cookie, recovery code,
56
- or secret in chat.
57
- 5. After login, verify a stable authenticated state such as the expected page,
58
- account menu, workspace name, or application heading before capture.
59
- 6. Keep the same browser session and context for the entire capture manifest.
60
- Do not clear cookies, local storage, cache, or site data and do not open the
61
- workflow in an isolated browser context.
62
- 7. If the session expires, preserve the current manifest row, return to the
63
- login checkpoint once, verify authentication again, and resume that row
64
- rather than restarting or taking screenshots of the login page.
65
-
66
- Use a demo, test, or other non-production account with synthetic data. Treat
67
- login and account-selection screens as private operational states: exclude
68
- them from the guide unless the agreed reader task is specifically about login.
69
-
70
- ## Plan the visual story
71
-
72
- Finish and fact-check the ordered text procedure before operating the
73
- application. Make every UI step atomic: one primary reader action followed by
74
- one observable result. Do not capture while improvising the guide.
75
-
76
- Create a capture manifest before taking the first image. Give every published
77
- UI step a stable step ID, including steps that intentionally have no image:
78
-
79
- | Step ID | Published action | Expected visible state | Capture? | Target | Filename | Alt text | Status |
80
- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
81
- | 01 | Open **Team settings**. | Team settings page is visible. | yes | page heading | `01-team-settings.png` | Team settings page with the heading marked as step 1 | planned |
82
- | 02 | Copy the workspace ID. | ID is copied; no durable visual change. | no | — | — | — | text-only |
83
- | 03 | Select **Invite member**. | Invitation form is open. | yes | Invite member button | `03-invite-form.png` | Invitation form opened from the Invite member button marked as step 3 | planned |
84
-
85
- The manifest is the source of truth for capture order, filenames, step marker
86
- numbers, alt text, and placement. Never choose screenshots opportunistically
87
- from whatever page happens to be open. Do not renumber captures to hide an
88
- intentionally text-only step: the image prefix and visual marker must match the
89
- published step number.
90
-
91
- For each guide step, record:
92
-
93
- 1. the reader action immediately before the image;
94
- 2. the stable visible state that proves the action succeeded;
95
- 3. the control or region that needs attention, if any;
96
- 4. the image filename, alternative text, and optional caption.
97
-
98
- When the user asks for a screenshot for every step, capture every step that has
99
- a meaningful visible UI state. Mark non-UI steps and actions with no durable
100
- visible change as `text-only` in the manifest and explain that decision in the
101
- completion summary. Otherwise capture only when an image reduces ambiguity or
102
- confirms an important state. Keep the application chrome and nearby labels when
103
- they help readers orient themselves. Prefer a viewport screenshot or a
104
- carefully cropped stable region; avoid very tall full-page screenshots for task
105
- steps.
106
-
107
- ## Operate and verify the workflow
108
-
109
- Prefer stable accessible roles, labels, visible text, and product test IDs over
110
- fragile CSS structure. Reuse verified Playwright, Cypress, or other UI tests as
111
- workflow evidence when available, but do not modify or submit destructive
112
- production data. Process the manifest strictly from the lowest step ID to the
113
- highest. For each planned image:
114
-
115
- 1. reset or establish the expected fixture state;
116
- 2. perform the documented actions in their published order;
117
- 3. wait for the expected visible outcome, not an arbitrary delay alone;
118
- 4. dismiss only transient UI that a normal reader would not see;
119
- 5. inspect the viewport for secrets, personal data, unstable timestamps,
120
- unrelated notifications, and accidental browser content;
121
- 6. add contextual highlighting when it materially helps;
122
- 7. capture the image to its manifest filename;
123
- 8. open the saved file and verify that it is the expected step, has the correct
124
- marker, is legible, contains no sensitive or transient content, and is not a
125
- duplicate of another step;
126
- 9. mark the manifest row `verified` only after that inspection, then remove the
127
- overlay and continue.
128
-
129
- If a capture is wrong, replace that file immediately and repeat the same
130
- manifest row. Do not continue and plan to sort screenshots out later. Do not
131
- reuse one screenshot for multiple steps unless those steps intentionally refer
132
- to exactly the same visible state and the prose makes that explicit.
133
-
134
- If browser automation is unavailable or the application cannot be reached,
135
- finish a complete text guide, do not create placeholder images or broken image
136
- links, and report the capture limitation.
137
-
138
- ## Highlight the relevant context
139
-
140
- When `application.screenshots.highlight` is not `false`, highlight the control
141
- or result a reader should notice. Use a temporary browser overlay rather than
142
- editing product source or permanently changing application styles:
143
-
144
- - draw a 3 px high-contrast ring with 4–6 px clearance around the target;
145
- - add a small numbered marker matching the corresponding guide step;
146
- - optionally dim the rest of the viewport by no more than 18 percent;
147
- - keep the target, its label, validation message, and surrounding orientation
148
- visible;
149
- - never use color alone: the numbered marker and nearby prose must identify the
150
- target;
151
- - remove the overlay before continuing to the next application action.
152
-
153
- When the browser supports script evaluation, inject the packaged
154
- [highlight helper](../assets/screenshot-highlight.js), call
155
- `__doxloopScreenshotHighlight({ selector, step, dim })` immediately before the
156
- screenshot, and call `__doxloopRemoveScreenshotHighlight()` immediately after.
157
- Choose `selector` from a verified stable test ID, accessible label relationship,
158
- or other stable product evidence. The helper returns the measured target bounds
159
- for the capture record and never mutates product source.
160
-
161
- The ring and marker should be baked into the PNG so they work in every
162
- documentation generator. Do not draw arrows or labels over interactive text,
163
- form values, error details, or other information the reader needs.
164
-
165
- ## Store and embed screenshots
166
-
167
- Follow the selected generator skill for its native public asset directory and
168
- image syntax. Group images under a stable guide-specific directory and use
169
- ordered, descriptive filenames, for example:
170
-
171
- ```text
172
- assets/guides/invite-team-member/
173
- 01-team-settings.png
174
- 02-invite-form.png
175
- 03-invitation-sent.png
176
- ```
177
-
178
- Use these default committed locations unless the existing project has an
179
- established equivalent:
180
-
181
- | Generator | Screenshot directory | Public/reference prefix |
182
- | --- | --- | --- |
183
- | Doxbrix | `<contentDir>/assets/guides/<guide>/` | `/assets/guides/<guide>/` |
184
- | Docusaurus | `static/img/guides/<guide>/` | `/img/guides/<guide>/` |
185
- | MkDocs | `docs/assets/guides/<guide>/` | page-relative `assets/guides/` |
186
- | Sphinx | `<contentDir>/_static/guides/<guide>/` | `/_static/guides/<guide>/` |
187
- | Hugo | `static/images/guides/<guide>/` | `/images/guides/<guide>/` |
188
- | VitePress | `docs/public/images/guides/<guide>/` | `/images/guides/<guide>/` |
189
- | Markdoc | `assets/guides/<guide>/` | `/assets/guides/<guide>/` |
190
- | Nextra | `public/images/guides/<guide>/` | `/images/guides/<guide>/` |
191
- | Starlight | `public/images/guides/<guide>/` | `/images/guides/<guide>/` |
192
- | Jekyll | `assets/images/guides/<guide>/` | `relative_url` from `/assets/images/guides/<guide>/` |
193
- | Static HTML | `site/assets/guides/<guide>/` | `/assets/guides/<guide>/` |
194
-
195
- Respect any configured base path when the generator requires relative or
196
- base-aware URLs. Verify the final built output contains each image; source-file
197
- existence alone is not sufficient.
198
-
199
- Guide screenshots are committed documentation assets. Never put them under
200
- `.doxloop/cache/reference/`. Embed each verified image before capturing the
201
- next step. Insert it inside the same ordered-list item, immediately after the
202
- instruction or expected-result sentence that the image proves. Do not collect
203
- step screenshots at the beginning or end of the guide, place an image between
204
- two unrelated steps, or let Markdown indentation terminate the ordered list.
205
- Add concise alternative text describing the useful visible state, not phrases
206
- such as "screenshot of". Use a caption for orientation or consequence that is
207
- not already obvious from the prose. Keep all essential instructions and values
208
- in text outside the image.
209
-
210
- For Doxbrix, prefer a captioned frame:
33
+ ## Authentication checkpoint
34
+
35
+ Doxloop owns sign-in material. The prompt says which kind is available; never
36
+ add authentication settings to `.doxloop/project.json` or create login scripts,
37
+ storage-state files, credential files, or environment requirements.
38
+
39
+ - **Recorded browser session.** `doxloop_capture` starts signed in. If a login
40
+ page appears, the session expired: record the affected steps as text-only
41
+ with the reason "saved browser session expired" and tell the user to sign in
42
+ again under **Settings → Visual evidence**. Do not try to sign in.
43
+ - **Saved credentials.** On the sign-in form, type the literal names
44
+ `DOXLOOP_APP_USERNAME` and `DOXLOOP_APP_PASSWORD` into the username and
45
+ password fields with the browser type or fill-form tools; the server
46
+ substitutes and redacts the real values. Never guess, print, or reconstruct
47
+ them, type them anywhere else, or capture the filled form.
48
+ - **Neither.** Open the application. If it redirects to login, record the steps
49
+ that need a signed-in screen as text-only and tell the user once that they
50
+ can sign in or save credentials under **Settings → Visual evidence**. Never
51
+ ask for a password, token, OTP, cookie, or secret in chat.
52
+
53
+ After sign-in, confirm a stable authenticated state (expected page, account
54
+ menu, workspace name) before capturing. Keep one browser session for the whole
55
+ manifest; never clear cookies, storage, or site data. If the session expires
56
+ mid-run with credentials available, sign in once more and resume the same
57
+ manifest row. Login and account-selection screens are private states: exclude
58
+ them unless the reader task is login itself.
59
+
60
+ ## Follow the manifest
61
+
62
+ Doxloop has already written `.doxloop/screenshot-manifest.json` for an approved
63
+ plan, with every guide and its steps staged as `status: "planned"`. Steps
64
+ already marked `verified` with a `file` were captured by Doxloop: keep them and
65
+ embed those images. Fill the rest in as you capture. Never delete a guide, drop
66
+ a step, renumber captures, or rebuild the file from the images you took; a
67
+ guide left `planned` fails the run. Each page's `visuals.startPath`,
68
+ `visuals.workflow`, and `visuals.captureSequence` are the boundary and the
69
+ required visual story: follow the items in order and do not collapse a
70
+ multi-state sequence into one final-state image. If they are missing,
71
+ contradictory, unsafe, or no longer match the application, stop capture for
72
+ that guide and report the blocking detail.
73
+
74
+ Without a plan, finish and fact-check the text procedure first, then write the
75
+ manifest yourself before the first image (schema in
76
+ [screenshot-manifest.md](screenshot-manifest.md)). Read that file otherwise
77
+ only if Doxloop reports a manifest shape problem.
78
+
79
+ Every step that changes what is on screen gets its own image: the entry screen,
80
+ each dialog, drawer, tab, or expanded section a step opens, the form filled
81
+ with safe example values, and the visible result. Steps that leave the screen
82
+ unchanged — typing into a visible field, scrolling, focusing, hovering — share
83
+ the previous image and are recorded as text-only. Never save the same screen
84
+ twice inside one guide to reach a planned count; Doxloop hashes images and
85
+ rejects repeats. Two guides may show the same screen when both document it.
86
+
87
+ ## Navigate, verify, capture
88
+
89
+ Open each guide's `startPath` in the capture browser before forming any
90
+ opinion about it; never conclude from source or another page's snapshot that a
91
+ screen is empty or not distinct. An empty or unconfigured screen is still what
92
+ the reader meets. Process steps from the lowest ID upward. For each planned
93
+ image:
94
+
95
+ 1. establish the expected fixture state and perform the documented actions in
96
+ published order;
97
+ 2. wait for the named content, not an arbitrary delay: most applications render
98
+ on the client, and a capture taken straight after navigation shows a splash
99
+ or skeleton that Doxloop rejects as a near-blank image;
100
+ 3. snapshot only when the next action needs an element reference or a dialog,
101
+ menu, or drawer must be confirmed open — not as a separate check before
102
+ every image, never after one; a successful navigation or click already
103
+ confirms the state;
104
+ 4. dismiss transient UI a reader would not see, and inspect the viewport for
105
+ secrets, personal data, unstable timestamps, and unrelated notifications;
106
+ 5. when `application.screenshots.highlight` is not `false`, inject the packaged
107
+ [highlight helper](../assets/screenshot-highlight.js), call
108
+ `__doxloopScreenshotHighlight({ selector, step, dim })` on a stable test ID
109
+ or accessible-label selector, capture, then call
110
+ `__doxloopRemoveScreenshotHighlight()`; the 3 px ring and numbered step
111
+ marker are baked into the PNG and must not cover labels or values;
112
+ 6. capture to the manifest filename, confirm the call succeeded, mark the row
113
+ `verified`, embed the image, and move to the next row.
114
+
115
+ Prefer a viewport or cropped stable region over a very tall full page and keep
116
+ the chrome and labels that orient the reader. If a capture is wrong, replace it
117
+ immediately and repeat the same row. You are not expected to
118
+ open the saved PNG afterwards — Doxloop checks readability, size, blank or
119
+ loading screens, duplicates, and embedding itself — and being unable to view an
120
+ image is never a reason to downgrade a real capture to text-only.
121
+
122
+ ## Text-only rules
123
+
124
+ `text-only` means a state you could not reach: sign-in required, seeded data
125
+ missing, a workflow you cannot safely advance, or a planned item that turned
126
+ out not to change the screen. Record a specific `textOnlyReason`, keep complete
127
+ text instructions, and never save the screen you happen to be on under the
128
+ name of a state you did not reach. If the browser or application is
129
+ unavailable, finish a complete text guide with no placeholder images or broken
130
+ links and report the limitation.
131
+
132
+ ## Name, store, and embed
133
+
134
+ Group images under a stable guide directory with ordered, descriptive names
135
+ (`01-team-settings.png`, `03-invite-form.png`); the number matches the
136
+ published step, so an intentionally text-only step leaves a gap rather than
137
+ renumbering. Doxbrix stores guide images at `<contentDir>/assets/guides/<guide>/`
138
+ referenced as `/assets/guides/<guide>/…`; other generators use the table in
139
+ [screenshot-manifest.md](screenshot-manifest.md). Guide screenshots are
140
+ committed documentation assets, never `.doxloop/cache/reference/`.
141
+
142
+ Embed each verified image immediately after the instruction or result it
143
+ proves — inside the same ordered-list item or, with a step component such as
144
+ Doxbrix `<Steps>`/`<Step>`, inside that step's own body, never collected after
145
+ the block or between unrelated steps. Every verified capture must appear
146
+ exactly once in its guide; delete an image that earns no place and record the
147
+ step text-only. Alt text names the useful visible state, never "screenshot
148
+ of"; a caption adds orientation or consequence the prose lacks; every
149
+ essential instruction and value stays in text. For Doxbrix:
211
150
 
212
151
  ```mdx
213
152
  <Frame caption="The highlighted Invite member control opens the invitation form.">
@@ -217,35 +156,10 @@ For Doxbrix, prefer a captioned frame:
217
156
  </Frame>
218
157
  ```
219
158
 
220
- Use native caption or figure syntax supplied by other generators. Plain
221
- Markdown images are the portable fallback.
222
-
223
- ## Run the screenshot completeness gate
224
-
225
- Do not finish a screenshot-enabled guide until all of these checks pass:
226
-
227
- 1. Compare the final ordered procedure with the manifest row by row.
228
- 2. Confirm every published UI step has exactly one `verified` image or an
229
- explicit `text-only` reason.
230
- 3. Confirm every verified manifest filename exists exactly once in the guide
231
- and immediately follows its matching step.
232
- 4. Confirm the filename prefix, highlighted marker, prose step number, visible
233
- state, and alt text all refer to the same step.
234
- 5. Confirm there are no unreferenced captures, broken paths, duplicate images,
235
- stale screenshots, or screenshot links outside the guide-specific folder.
236
- 6. Build the selected generator, then inspect the rendered guide from top to
237
- bottom at desktop and narrow widths. Verify list numbering, image order,
238
- cropping, legibility, captions, and the association between each step and
239
- image.
240
-
241
- Any mismatch is a blocking defect. Fix the procedure, manifest, capture, or
242
- placement and rerun the entire gate; do not report the guide as complete.
243
-
244
- ## Refresh without churn
245
-
246
- During update, recapture only when the documented workflow, visible label,
247
- layout, theme, or expected outcome changed, or when the user explicitly asks.
248
- Preserve filenames when the semantic step is unchanged so links and review
249
- history remain stable. Remove an old image only after all page references to it
250
- are removed. Run `doxloop test` and the generator build to catch missing assets,
251
- then review the rendered guide at desktop and narrow widths.
159
+ ## Resume and refresh
160
+
161
+ On a resumed run the prompt lists manifest progress per guide: keep every
162
+ verified row, file, and placement and work only on the unfinished steps. During
163
+ update, recapture only when the workflow, label, layout, theme, or outcome
164
+ changed or the user asks; keep filenames for unchanged steps and remove an old
165
+ image only after its references are gone.
@@ -0,0 +1,76 @@
1
+ # Workflows for runs without an approved plan
2
+
3
+ Use these procedures only when no approved `.doxloop/documentation-plan.json`
4
+ scopes the run. Every reading list in `SKILL.md` still applies.
5
+
6
+ ## Create
7
+
8
+ Read, in addition to the start-of-task references, [references/documentation-types.md](documentation-types.md),
9
+ [references/page-depth.md](page-depth.md), and
10
+ [references/branding.md](branding.md).
11
+
12
+ 1. **Discover.** Inspect enough source to understand the reader-visible
13
+ product: entry points, commands, routes, configuration schemas, runtime
14
+ requirements, tests and fixtures that show supported workflows,
15
+ authentication, permissions, errors, limits, recovery paths, theme tokens
16
+ and public brand assets, and existing documentation that still matches.
17
+ Classify the product, readers, first-success path, capabilities, workflows,
18
+ and operational concerns, recording evidence for each conclusion.
19
+ 2. **Consult once.** Present a concise discovery summary (expert profile,
20
+ identity, pages grouped as must have / next / later with reasons, navigation
21
+ outline) as a progress update. Ask once, with at most three decisions, only
22
+ when a material decision is unresolved; otherwise state assumptions and
23
+ continue in the same run — a plan alone is never a finished create run.
24
+ Never ask what inspection can answer. Then update only the `documentation`
25
+ object in `.doxloop/project.json`.
26
+ 3. **Plan coverage.** Map reader jobs and capabilities to types, pages,
27
+ evidence, and gaps. Comprehensive means complete for the agreed scope, not
28
+ the largest page count; no filler or placeholder trees.
29
+ 4. **Author.** Improve a page that already has the right purpose; create one per
30
+ distinct reader job. Cover overview and a verified first-success path,
31
+ prerequisites and configuration, each important workflow, needed concepts,
32
+ public interfaces, evidence-backed troubleshooting, limitations, and next
33
+ steps. Add every page to native navigation, apply the identity through
34
+ native theme configuration, replace every generated starter page, and remove
35
+ every `doxloop:starter-page` marker. Do not stop after the landing page and
36
+ quickstart when the source supports more. Complete factual, task, editorial,
37
+ and accessibility passes. For a screenshot-enabled guide, finish the text
38
+ procedure first, then capture in manifest order.
39
+
40
+ ## Update
41
+
42
+ 1. Classify the request: source synchronization (use the prompt's change
43
+ summary and `git diff` against the listed baseline), a scoped content
44
+ change, or transformation (inspect existing pages first; an unrelated change
45
+ summary never redefines the scope).
46
+ 2. Find affected pages: read `.doxloop/evidence-map.json` first when it exists,
47
+ verify its candidates against the source, and check for pages it misses.
48
+ 3. Reuse the existing expert profile when valid. Read the routing, domain/type,
49
+ audience, and navigation references only when the update adds a journey,
50
+ changes audience or domain, or restructures IA;
51
+ [references/branding.md](branding.md) when theme tokens or brand
52
+ assets changed; [references/reference-sites.md](reference-sites.md)
53
+ when the design reference changed;
54
+ [references/screenshots.md](screenshots.md) when screenshots are
55
+ enabled and an affected UI workflow, label, layout, or outcome changed —
56
+ refresh only those images.
57
+ 4. Update all affected pages to the depth contract, preserving verified facts,
58
+ examples, routes, and links during transformation; inspect adjacent pages
59
+ for contradictions or new gaps.
60
+ 5. Preserve the brief, terminology, and structure unless the user changes them
61
+ or verified behavior contradicts them. Recommend new pages for gaps; ask
62
+ before broadening scope. Make no edit when the change is entirely internal,
63
+ and say why.
64
+
65
+ ## Review
66
+
67
+ Do not edit files. Read
68
+ [references/documentation-types.md](documentation-types.md),
69
+ [references/branding.md](branding.md), and
70
+ [references/quality.md](quality.md), plus the relevant expert
71
+ templates and [references/navigation-architecture.md](navigation-architecture.md)
72
+ when domain correctness, depth, audience fitness, or IA is in scope. Report
73
+ blocking accuracy or usability problems, missing coverage, IA and depth
74
+ problems, smaller clarity improvements, the evidence for each finding, and the
75
+ hard-gate result with the scored rubric. Do not penalize omitting a generic
76
+ topic the product does not support; do not report speculation as fact.
@@ -5,18 +5,22 @@ description: Author and maintain documentation in native Doxbrix format, includi
5
5
 
6
6
  # Doxloop Doxbrix Format
7
7
 
8
- Produce documentation that renders natively in Doxbrix. Use this skill together
9
- with `$doxloop-authoring`; that skill owns discovery, consultation, coverage, and
10
- writing quality.
8
+ Produce documentation that renders natively in Doxbrix. Use it together with
9
+ `$doxloop-authoring`, which owns what to write; this skill owns how Doxbrix
10
+ expresses it. Translate the shared semantic top/left navigation plan into native
11
+ Doxbrix spaces, groups, and page entries; preserve the approved information architecture.
11
12
 
12
13
  ## Read before editing
13
14
 
14
- 1. Read `.doxloop/project.json` and confirm `generator` is `doxbrix` or absent.
15
+ 1. In a batch, use the generator and target in the supplied prompt and plan
16
+ slice. Otherwise read `.doxloop/project.json` and confirm `generator` is
17
+ `doxbrix` or absent.
15
18
  2. Read [references/manifest.md](references/manifest.md).
16
19
  3. Read [references/components.md](references/components.md) before authoring
17
20
  rich layouts.
18
- 4. Inspect existing `docs.json` and pages for established theme, terminology,
19
- paths, and component patterns.
21
+ 4. In a batch, use the assigned page paths and the supplied terminology. Read
22
+ `docs.json` only if assigned site setup. Outside batches, inspect existing
23
+ configuration and pages for established patterns.
20
24
 
21
25
  When creating or changing HTTP API reference, also read
22
26
  [references/api-endpoints.md](references/api-endpoints.md) and follow its
@@ -27,7 +31,8 @@ skill instead.
27
31
 
28
32
  ## Author native Doxbrix content
29
33
 
30
- - Write `.mdx` when using Doxbrix components.
34
+ - Write every new page as `.mdx`, never `.md`, whether or not it uses
35
+ components; an existing page keeps its file name.
31
36
  - Include `title` and an outcome-focused `description` in frontmatter.
32
37
  - Use standard Markdown for ordinary prose.
33
38
  - Use a rich component only when it communicates the content more clearly.
@@ -48,16 +53,33 @@ skill instead.
48
53
  Do not emit Docusaurus directives such as `:::tip`, Docusaurus theme imports, or
49
54
  `sidebars.js` entries in a Doxbrix project.
50
55
 
56
+ ## Compose professional pages
57
+
58
+ Map the authoring skill's page-depth contract onto Doxbrix components:
59
+
60
+ - Landing page: an opening value statement, a `<CardGroup>` with one card per
61
+ audience, a capability list, a `<Mermaid>` lifecycle diagram, and a closing
62
+ `<CardGroup>` of next steps.
63
+ - Guides: a `<Note>` or `<Info>` for prerequisites, `<Steps>` with one
64
+ `<Step>` per reader action, a `<Frame>` screenshot inside every step that
65
+ changes the screen, a `<Check>` for the success state, `<Tabs>` for UI and
66
+ CLI alternatives, an `<Accordion>` for troubleshooting or edge cases, and a
67
+ closing card or link to the next job.
68
+ - Reference: one heading per command, field, or operation with complete tables
69
+ (type, default, meaning) and a `<CodeGroup>` of realistic examples.
70
+ - Concepts: a `<Mermaid>` diagram or comparison table and links to the tasks
71
+ the concept informs.
72
+
73
+ Use components only where they clarify; never as decoration.
74
+
51
75
  ## Maintain navigation
52
76
 
53
- Implement the semantic top/left navigation plan composed by
54
- `$doxloop-authoring`. Map major reader surfaces to Doxbrix spaces or supported
55
- site links and map left-navigation groups to nested `docs.json` nodes. Preserve
56
- the planned labels, order, hierarchy, and routes unless Doxbrix requires a
57
- documented adaptation; do not copy empty template groups.
77
+ Map major reader surfaces to Doxbrix spaces or supported site links and
78
+ left-navigation groups to nested `docs.json` nodes; do not create empty groups.
58
79
 
59
- Treat `docs/docs.json` as the canonical manifest for new Doxloop projects.
60
- Legacy projects may keep `docs.json` at the project root. Add every
80
+ Treat `docs.json` at the project root as the canonical manifest for new native
81
+ Doxbrix projects. Existing projects with a non-empty `contentDir` keep the
82
+ manifest inside that directory, such as `docs/docs.json`. Add every
61
83
  reader-facing page exactly once under a relevant space and navigation group.
62
84
  Assign meaningful named icons to spaces and primary group, page, link, and API
63
85
  nodes. Choose icons by reader meaning, keep the vocabulary consistent, and
@@ -66,8 +88,8 @@ Preserve supported link, label, divider, and API nodes.
66
88
 
67
89
  ## Apply captured branding
68
90
 
69
- Use the identity and any confirmed external design profile gathered through
70
- `$doxloop-authoring` and [references/manifest.md](references/manifest.md):
91
+ Write the confirmed application identity as [references/manifest.md](references/manifest.md)
92
+ describes:
71
93
 
72
94
  - write colors, mode, fonts, logos, favicon, and backgrounds under `theme`;
73
95
  - copy public logos and licensed local font files into the documentation content
@@ -77,9 +99,3 @@ Use the identity and any confirmed external design profile gathered through
77
99
 
78
100
  Do not invent missing brand values or reference files outside the documentation
79
101
  project.
80
-
81
- ## Verify
82
-
83
- Run `doxloop test` and `doxloop preview --open`. Confirm rich blocks, navigation,
84
- page title, description, code highlighting, and responsive layout render in the
85
- Doxbrix preview.