@riverbankcms/sdk 0.6.1 → 0.7.2

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 (172) hide show
  1. package/README.md +175 -0
  2. package/dist/cli/index.js +42 -95
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/init-docs/content/agents-section.md +50 -0
  5. package/dist/cli/init-docs/content/cli-reference.md +574 -0
  6. package/dist/cli/init-docs/content/content-management.md +384 -0
  7. package/dist/cli/init-docs/content/context-brand.md +125 -0
  8. package/dist/cli/init-docs/content/context-brief.md +77 -0
  9. package/dist/cli/init-docs/content/context-knowledge.md +111 -0
  10. package/dist/cli/init-docs/content/getting-started.md +130 -0
  11. package/dist/cli/init-docs/content/site-workflows-readme.md +96 -0
  12. package/dist/cli/init-docs/content/workflow-add-block.md +228 -0
  13. package/dist/cli/init-docs/content/workflow-create-page.md +193 -0
  14. package/dist/cli/init-docs/content/workflow-publish.md +280 -0
  15. package/dist/client/client.d.mts +2 -2
  16. package/dist/client/client.d.ts +2 -2
  17. package/dist/client/client.js +536 -71
  18. package/dist/client/client.js.map +1 -1
  19. package/dist/client/client.mjs +536 -78
  20. package/dist/client/client.mjs.map +1 -1
  21. package/dist/client/hooks.d.mts +2 -2
  22. package/dist/client/hooks.d.ts +2 -2
  23. package/dist/client/usePage-C9tJpuKa.d.mts +6813 -0
  24. package/dist/client/usePage-Db9kzA41.d.ts +6813 -0
  25. package/dist/server/{Layout-wBtJLTVX.d.ts → Layout-Ce7PU9I5.d.ts} +1 -1
  26. package/dist/server/{Layout-B7cvis7r.d.mts → Layout-WllR8Zug.d.mts} +1 -1
  27. package/dist/server/{chunk-I7ZR2WO3.mjs → chunk-5JT452F2.mjs} +537 -76
  28. package/dist/server/chunk-5JT452F2.mjs.map +1 -0
  29. package/dist/server/{chunk-Z5ZA6Q4D.mjs → chunk-74XUVNOO.mjs} +5 -3
  30. package/dist/server/chunk-74XUVNOO.mjs.map +1 -0
  31. package/dist/server/{chunk-3B364WO2.js → chunk-7BVRA5MY.js} +4 -49
  32. package/dist/server/chunk-7BVRA5MY.js.map +1 -0
  33. package/dist/server/chunk-AET56TQX.mjs +45 -0
  34. package/dist/server/chunk-AET56TQX.mjs.map +1 -0
  35. package/dist/server/chunk-ARNCLSQT.mjs +52 -0
  36. package/dist/server/chunk-ARNCLSQT.mjs.map +1 -0
  37. package/dist/server/chunk-BNQV3PXP.js +69 -0
  38. package/dist/server/chunk-BNQV3PXP.js.map +1 -0
  39. package/dist/server/{chunk-IVHIQFJH.js → chunk-HMENX4Y7.js} +543 -82
  40. package/dist/server/chunk-HMENX4Y7.js.map +1 -0
  41. package/dist/server/{chunk-I2D7KOEA.js → chunk-JWRNMNWI.js} +5 -3
  42. package/dist/server/chunk-JWRNMNWI.js.map +1 -0
  43. package/dist/server/chunk-LQUKXIW7.mjs +13 -0
  44. package/dist/server/chunk-LQUKXIW7.mjs.map +1 -0
  45. package/dist/server/{chunk-XXFF4RVR.mjs → chunk-RBJFXNDM.mjs} +1 -46
  46. package/dist/server/chunk-RBJFXNDM.mjs.map +1 -0
  47. package/dist/server/chunk-SWYWZT3L.mjs +69 -0
  48. package/dist/server/chunk-SWYWZT3L.mjs.map +1 -0
  49. package/dist/server/chunk-T26N3P26.js +52 -0
  50. package/dist/server/chunk-T26N3P26.js.map +1 -0
  51. package/dist/server/chunk-VODFQMUW.js +45 -0
  52. package/dist/server/chunk-VODFQMUW.js.map +1 -0
  53. package/dist/server/chunk-WYNEYDXO.js +13 -0
  54. package/dist/server/chunk-WYNEYDXO.js.map +1 -0
  55. package/dist/server/{components-CICSJyp_.d.ts → components--LT61IKp.d.ts} +2 -2
  56. package/dist/server/{components-CMMwDXTW.d.mts → components-RPzRQve6.d.mts} +2 -2
  57. package/dist/server/components.d.mts +4 -4
  58. package/dist/server/components.d.ts +4 -4
  59. package/dist/server/components.js +5 -4
  60. package/dist/server/components.js.map +1 -1
  61. package/dist/server/components.mjs +5 -4
  62. package/dist/server/config-validation.js +0 -1
  63. package/dist/server/config-validation.js.map +1 -1
  64. package/dist/server/config-validation.mjs +0 -1
  65. package/dist/server/config.js +0 -1
  66. package/dist/server/config.js.map +1 -1
  67. package/dist/server/config.mjs +0 -1
  68. package/dist/server/config.mjs.map +1 -1
  69. package/dist/server/data.d.mts +1 -1
  70. package/dist/server/data.d.ts +1 -1
  71. package/dist/server/data.js +0 -1
  72. package/dist/server/data.js.map +1 -1
  73. package/dist/server/data.mjs +0 -1
  74. package/dist/server/env.d.mts +23 -0
  75. package/dist/server/env.d.ts +23 -0
  76. package/dist/server/env.js +7 -0
  77. package/dist/server/env.js.map +1 -0
  78. package/dist/server/env.mjs +7 -0
  79. package/dist/server/index-BL66CU6d.d.mts +130 -0
  80. package/dist/server/{index-Bucs6UqG.d.mts → index-Bkva0WAj.d.mts} +1 -1
  81. package/dist/server/index-CJk9iQQW.d.ts +130 -0
  82. package/dist/server/{index-Cp7tJuRt.d.ts → index-CSBWKA3r.d.ts} +1 -1
  83. package/dist/server/index.d.mts +3 -3
  84. package/dist/server/index.d.ts +3 -3
  85. package/dist/server/index.js +2 -3
  86. package/dist/server/index.js.map +1 -1
  87. package/dist/server/index.mjs +1 -2
  88. package/dist/server/index.mjs.map +1 -1
  89. package/dist/server/{loadContent-Buvmudee.d.ts → loadContent-CXUWMuzY.d.ts} +11 -3
  90. package/dist/server/{loadContent-BS-3wesN.d.mts → loadContent-F_tAS0Nl.d.mts} +11 -3
  91. package/dist/server/{loadPage-IDGVDFBB.js → loadPage-6I7F6GRF.js} +1 -2
  92. package/dist/server/loadPage-6I7F6GRF.js.map +1 -0
  93. package/dist/server/{loadPage-B8mQUUSo.d.mts → loadPage-CxlYLe5K.d.mts} +1 -1
  94. package/dist/server/{loadPage-DNQTTRHL.mjs → loadPage-JI2SML4M.mjs} +1 -2
  95. package/dist/server/{loadPage-DP3nrHBi.d.ts → loadPage-i2r-X5b9.d.ts} +1 -1
  96. package/dist/server/metadata.d.mts +8 -135
  97. package/dist/server/metadata.d.ts +8 -135
  98. package/dist/server/metadata.js +4 -65
  99. package/dist/server/metadata.js.map +1 -1
  100. package/dist/server/metadata.mjs +4 -65
  101. package/dist/server/metadata.mjs.map +1 -1
  102. package/dist/server/navigation.js +0 -1
  103. package/dist/server/navigation.js.map +1 -1
  104. package/dist/server/navigation.mjs +0 -1
  105. package/dist/server/next/revalidate.d.mts +66 -0
  106. package/dist/server/next/revalidate.d.ts +66 -0
  107. package/dist/server/next/revalidate.js +59 -0
  108. package/dist/server/next/revalidate.js.map +1 -0
  109. package/dist/server/next/revalidate.mjs +59 -0
  110. package/dist/server/next/revalidate.mjs.map +1 -0
  111. package/dist/server/next/tags.d.mts +78 -0
  112. package/dist/server/next/tags.d.ts +78 -0
  113. package/dist/server/next/tags.js +34 -0
  114. package/dist/server/next/tags.js.map +1 -0
  115. package/dist/server/next/tags.mjs +34 -0
  116. package/dist/server/next/tags.mjs.map +1 -0
  117. package/dist/server/next.d.mts +432 -0
  118. package/dist/server/next.d.ts +432 -0
  119. package/dist/server/next.js +217 -0
  120. package/dist/server/next.js.map +1 -0
  121. package/dist/server/next.mjs +217 -0
  122. package/dist/server/next.mjs.map +1 -0
  123. package/dist/server/rendering/server.d.mts +3 -3
  124. package/dist/server/rendering/server.d.ts +3 -3
  125. package/dist/server/rendering/server.js +5 -4
  126. package/dist/server/rendering/server.js.map +1 -1
  127. package/dist/server/rendering/server.mjs +5 -4
  128. package/dist/server/rendering.d.mts +6 -6
  129. package/dist/server/rendering.d.ts +6 -6
  130. package/dist/server/rendering.js +7 -6
  131. package/dist/server/rendering.js.map +1 -1
  132. package/dist/server/rendering.mjs +9 -8
  133. package/dist/server/routing.d.mts +2 -2
  134. package/dist/server/routing.d.ts +2 -2
  135. package/dist/server/routing.js +2 -4
  136. package/dist/server/routing.js.map +1 -1
  137. package/dist/server/routing.mjs +1 -3
  138. package/dist/server/routing.mjs.map +1 -1
  139. package/dist/server/server.d.mts +4 -4
  140. package/dist/server/server.d.ts +4 -4
  141. package/dist/server/server.js +4 -5
  142. package/dist/server/server.js.map +1 -1
  143. package/dist/server/server.mjs +5 -6
  144. package/dist/server/theme-bridge.js +0 -1
  145. package/dist/server/theme-bridge.js.map +1 -1
  146. package/dist/server/theme-bridge.mjs +0 -1
  147. package/dist/server/theme-bridge.mjs.map +1 -1
  148. package/dist/server/theme.js +1 -3
  149. package/dist/server/theme.js.map +1 -1
  150. package/dist/server/theme.mjs +0 -2
  151. package/dist/server/theme.mjs.map +1 -1
  152. package/dist/server/{types-BvcJU7zk.d.ts → types-DnkRh0UL.d.ts} +118 -9
  153. package/dist/server/{types-1cLz0vnq.d.mts → types-MF2AWoKv.d.mts} +118 -9
  154. package/dist/server/webhooks.d.mts +75 -0
  155. package/dist/server/webhooks.d.ts +75 -0
  156. package/dist/server/webhooks.js +11 -0
  157. package/dist/server/webhooks.js.map +1 -0
  158. package/dist/server/webhooks.mjs +11 -0
  159. package/dist/server/webhooks.mjs.map +1 -0
  160. package/package.json +33 -1
  161. package/dist/server/chunk-3B364WO2.js.map +0 -1
  162. package/dist/server/chunk-BJTO5JO5.mjs +0 -11
  163. package/dist/server/chunk-DGUM43GV.js +0 -11
  164. package/dist/server/chunk-DGUM43GV.js.map +0 -1
  165. package/dist/server/chunk-I2D7KOEA.js.map +0 -1
  166. package/dist/server/chunk-I7ZR2WO3.mjs.map +0 -1
  167. package/dist/server/chunk-IVHIQFJH.js.map +0 -1
  168. package/dist/server/chunk-XXFF4RVR.mjs.map +0 -1
  169. package/dist/server/chunk-Z5ZA6Q4D.mjs.map +0 -1
  170. package/dist/server/loadPage-IDGVDFBB.js.map +0 -1
  171. /package/dist/server/{chunk-BJTO5JO5.mjs.map → env.mjs.map} +0 -0
  172. /package/dist/server/{loadPage-DNQTTRHL.mjs.map → loadPage-JI2SML4M.mjs.map} +0 -0
@@ -0,0 +1,50 @@
1
+ ## RiverbankCMS SDK Context
2
+
3
+ This repository is a site using **RiverbankCMS** as a headless CMS via the `@riverbankcms/sdk` package.
4
+
5
+ ### What This Means
6
+
7
+ - Content (pages, entries, blocks, navigation) is managed in RiverbankCMS
8
+ - The SDK CLI syncs content between local files and the CMS
9
+ - Configuration lives in `riverbank.config.ts`
10
+ - You work with local content files, then push changes to the CMS
11
+
12
+ ### Key Configuration Files
13
+
14
+ - `riverbank.config.ts` - Site schema, custom blocks, field extensions
15
+ - `.env.local` - Local CMS credentials (never commit)
16
+
17
+ ### Agent Documentation
18
+
19
+ Detailed documentation is available in `.riverbank/docs/`:
20
+
21
+ - `getting-started.md` - Quick orientation for working with this site
22
+ - `cli-reference.md` - Full SDK CLI command reference
23
+ - `content-management.md` - Content model and sync workflows
24
+ - `schema.md` - Site-specific schema (auto-generated from config)
25
+ - `block-types.md` - Available block types (auto-generated)
26
+ - `workflows/` - Step-by-step guides for common tasks
27
+ - `site-workflows/` - Site-specific workflows and customizations
28
+
29
+ ### Quick Commands
30
+
31
+ ```bash
32
+ riverbankcms pull # Download all content from CMS
33
+ riverbankcms push --dry-run # Preview what would be pushed
34
+ riverbankcms push # Push local changes to CMS
35
+ riverbankcms push-config # Sync riverbank.config.ts to CMS
36
+ ```
37
+
38
+ ### Working with Content
39
+
40
+ 1. **Pull latest**: `riverbankcms pull` downloads content to `content/` directory
41
+ 2. **Make changes**: Edit JSON files or use CLI commands
42
+ 3. **Preview**: `riverbankcms push --dry-run` shows what would change
43
+ 4. **Push**: `riverbankcms push` applies changes to CMS
44
+
45
+ ### Code Quality Guidelines
46
+
47
+ - Prefer functional, composable helpers over large classes
48
+ - Keep changes small and focused
49
+ - Use typed content from the SDK where available
50
+ - Follow existing patterns in the codebase
@@ -0,0 +1,574 @@
1
+ # SDK CLI Reference
2
+
3
+ The RiverbankCMS SDK CLI (`riverbankcms`) manages content synchronization between local files and the CMS.
4
+
5
+ ## Global Options
6
+
7
+ All commands support these options:
8
+
9
+ | Option | Description |
10
+ |--------|-------------|
11
+ | `--json` | Output in JSON format for machine parsing |
12
+ | `--quiet` | Minimal output (suppress non-essential messages) |
13
+ | `--remote` | Use remote/production environment instead of local |
14
+
15
+ ## Environment Variables
16
+
17
+ ### Local Environment (default)
18
+
19
+ ```bash
20
+ RIVERBANK_LOCAL_SITE_ID=your-site-id
21
+ RIVERBANK_LOCAL_DASHBOARD_URL=http://localhost:4000
22
+ RIVERBANK_LOCAL_MGMT_API_KEY=bld_mgmt_sk_...
23
+ ```
24
+
25
+ ### Remote Environment (--remote)
26
+
27
+ ```bash
28
+ RIVERBANK_REMOTE_SITE_ID=your-site-id
29
+ RIVERBANK_REMOTE_DASHBOARD_URL=https://your-dashboard.riverbankcms.com
30
+ RIVERBANK_REMOTE_MGMT_API_KEY=bld_mgmt_sk_...
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Content Sync Commands
36
+
37
+ ### pull
38
+
39
+ Download content from the CMS to local files.
40
+
41
+ ```bash
42
+ # Pull all content
43
+ riverbankcms pull
44
+
45
+ # Pull from production
46
+ riverbankcms pull --remote
47
+
48
+ # Pull specific content types
49
+ riverbankcms pull entries # All entries
50
+ riverbankcms pull entries blog-post # Specific content type
51
+ riverbankcms pull pages # All pages with blocks
52
+ riverbankcms pull navigation # Navigation menus
53
+ riverbankcms pull settings # Site settings
54
+
55
+ # Custom output directory
56
+ riverbankcms pull --output ./src/content
57
+ ```
58
+
59
+ **Options:**
60
+
61
+ | Option | Description |
62
+ |--------|-------------|
63
+ | `--output <dir>` | Output directory (default: ./content) |
64
+ | `--force` | Overwrite existing files without prompting |
65
+ | `--yes` | Skip confirmation prompt |
66
+
67
+ ### push
68
+
69
+ Push local content changes to the CMS.
70
+
71
+ ```bash
72
+ # Push all content
73
+ riverbankcms push
74
+
75
+ # Preview changes without applying
76
+ riverbankcms push --dry-run
77
+
78
+ # Push to production (requires --yes)
79
+ riverbankcms push --remote --yes
80
+
81
+ # Push specific content types
82
+ riverbankcms push entries # All entries
83
+ riverbankcms push entries blog-post # Specific content type
84
+ riverbankcms push pages # All pages with blocks
85
+ riverbankcms push navigation # Navigation menus
86
+
87
+ # JSON diff output for agents
88
+ riverbankcms push --dry-run --json-diff=summary
89
+ riverbankcms push --dry-run --json-diff=full
90
+ ```
91
+
92
+ **Options:**
93
+
94
+ | Option | Description |
95
+ |--------|-------------|
96
+ | `--content-dir <dir>` | Content directory (overrides config) |
97
+ | `--dry-run` | Show changes without applying |
98
+ | `--yes` | Skip confirmation (required for --remote) |
99
+ | `--force` | Push even if remote is newer (skip stale check) |
100
+ | `--json-diff [mode]` | Output JSON diff: `summary` or `full` |
101
+
102
+ **Sync Behavior** (configured in `riverbank.config.ts`):
103
+
104
+ ```typescript
105
+ export default defineConfig({
106
+ siteId: '...',
107
+ sync: {
108
+ existingEntries: 'update', // 'skip' (default) or 'update'
109
+ contentTarget: 'draft', // 'draft' (default) or 'publish'
110
+ },
111
+ });
112
+ ```
113
+
114
+ ### push-config
115
+
116
+ Push SDK configuration to the CMS dashboard.
117
+
118
+ ```bash
119
+ riverbankcms push-config
120
+ riverbankcms push-config --remote
121
+ riverbankcms push-config --config ./src/riverbank.config.ts
122
+ ```
123
+
124
+ This syncs:
125
+ - Custom blocks
126
+ - Block field extensions
127
+ - Block field options
128
+ - Content type definitions
129
+ - Content scaffolding (pages, entries, navigation)
130
+
131
+ **Options:**
132
+
133
+ | Option | Description |
134
+ |--------|-------------|
135
+ | `--api-key <key>` | Management API key |
136
+ | `--dashboard <url>` | Dashboard URL |
137
+ | `--config <path>` | Config file path |
138
+
139
+ ---
140
+
141
+ ## Entry Commands
142
+
143
+ Manage content entries.
144
+
145
+ ### entry upsert
146
+
147
+ Create or update an entry.
148
+
149
+ ```bash
150
+ # With inline JSON data
151
+ riverbankcms entry upsert <type> <identifier> --data '{"title": "Hello World"}'
152
+
153
+ # With JSON file
154
+ riverbankcms entry upsert <type> <identifier> --file ./data.json
155
+
156
+ # With individual fields
157
+ riverbankcms entry upsert blog-post my-post \
158
+ --slug my-post \
159
+ --title "My Blog Post"
160
+ ```
161
+
162
+ **Arguments:**
163
+ - `<type>` - Content type key (e.g., `blog-post`, `product`)
164
+ - `<identifier>` - Unique identifier for the entry
165
+
166
+ **Options:**
167
+
168
+ | Option | Description |
169
+ |--------|-------------|
170
+ | `--data <json>` | Entry data as JSON string |
171
+ | `--file <path>` | Path to JSON file with entry data |
172
+ | `--slug <slug>` | Entry slug |
173
+ | `--title <title>` | Entry title |
174
+
175
+ ### entry publish
176
+
177
+ Publish an entry.
178
+
179
+ ```bash
180
+ riverbankcms entry publish <type> <identifier>
181
+ riverbankcms entry publish blog-post my-post
182
+ ```
183
+
184
+ ### entry unpublish
185
+
186
+ Unpublish an entry (revert to draft).
187
+
188
+ ```bash
189
+ riverbankcms entry unpublish <type> <identifier>
190
+ riverbankcms entry unpublish blog-post my-post
191
+ ```
192
+
193
+ ### entry get
194
+
195
+ Retrieve a single entry.
196
+
197
+ ```bash
198
+ riverbankcms entry get <type> <identifier>
199
+ riverbankcms entry get blog-post my-post
200
+ riverbankcms entry get blog-post my-post --json
201
+ ```
202
+
203
+ ### entry list
204
+
205
+ List entries for a content type.
206
+
207
+ ```bash
208
+ riverbankcms entry list <type>
209
+ riverbankcms entry list blog-post
210
+ riverbankcms entry list blog-post --limit 10 --page 2
211
+ riverbankcms entry list blog-post --json
212
+ ```
213
+
214
+ **Options:**
215
+
216
+ | Option | Description |
217
+ |--------|-------------|
218
+ | `--limit <n>` | Number of entries per page |
219
+ | `--page <n>` | Page number (1-indexed) |
220
+
221
+ ---
222
+
223
+ ## Page Commands
224
+
225
+ Manage pages.
226
+
227
+ ### page upsert
228
+
229
+ Create or update a page.
230
+
231
+ ```bash
232
+ riverbankcms page upsert <identifier> --title "Page Title" --path /url-path
233
+
234
+ # Full example
235
+ riverbankcms page upsert about \
236
+ --title "About Us" \
237
+ --path /about \
238
+ --seo-title "About Us | Company Name" \
239
+ --seo-description "Learn more about our company"
240
+ ```
241
+
242
+ **Arguments:**
243
+ - `<identifier>` - Unique identifier for the page
244
+
245
+ **Options:**
246
+
247
+ | Option | Description |
248
+ |--------|-------------|
249
+ | `--title <title>` | Page title |
250
+ | `--path <path>` | URL path (e.g., `/about`) |
251
+ | `--seo-title <title>` | SEO title tag |
252
+ | `--seo-description <desc>` | SEO meta description |
253
+
254
+ ### page publish
255
+
256
+ Publish a page.
257
+
258
+ ```bash
259
+ riverbankcms page publish <identifier>
260
+ riverbankcms page publish about
261
+ ```
262
+
263
+ ### page unpublish
264
+
265
+ Unpublish a page (revert to draft).
266
+
267
+ ```bash
268
+ riverbankcms page unpublish <identifier>
269
+ riverbankcms page unpublish about
270
+ ```
271
+
272
+ ### page get
273
+
274
+ Retrieve a single page with its blocks.
275
+
276
+ ```bash
277
+ riverbankcms page get <identifier>
278
+ riverbankcms page get about
279
+ riverbankcms page get about --json
280
+ ```
281
+
282
+ ### page list
283
+
284
+ List all pages.
285
+
286
+ ```bash
287
+ riverbankcms page list
288
+ riverbankcms page list --limit 10 --page 1
289
+ riverbankcms page list --json
290
+ ```
291
+
292
+ ---
293
+
294
+ ## Block Commands
295
+
296
+ Manage blocks within pages.
297
+
298
+ ### block upsert
299
+
300
+ Create or update a block on a page.
301
+
302
+ ```bash
303
+ # Basic usage
304
+ riverbankcms block upsert <page-id> <block-id> --kind <block-kind> --data '<json>'
305
+
306
+ # Examples
307
+ riverbankcms block upsert home hero-main \
308
+ --kind block.hero \
309
+ --data '{"heading": "Welcome", "subheading": "to our site"}'
310
+
311
+ # With JSON file
312
+ riverbankcms block upsert home hero-main \
313
+ --kind block.hero \
314
+ --file ./hero-content.json
315
+
316
+ # With position
317
+ riverbankcms block upsert home new-section \
318
+ --kind block.bodyText \
319
+ --data '{"content": "<p>Hello</p>"}' \
320
+ --position 0
321
+ ```
322
+
323
+ **Arguments:**
324
+ - `<page-id>` - Page identifier
325
+ - `<block-id>` - Block identifier (unique within the page)
326
+
327
+ **Options:**
328
+
329
+ | Option | Description |
330
+ |--------|-------------|
331
+ | `--kind <kind>` | Block type (e.g., `block.hero`, `block.bodyText`) |
332
+ | `--data <json>` | Block content as JSON string |
333
+ | `--file <path>` | Path to JSON file with block content |
334
+ | `--position <n>` | Position in the block list (0-indexed) |
335
+
336
+ ### block reorder
337
+
338
+ Reorder blocks on a page.
339
+
340
+ ```bash
341
+ riverbankcms block reorder <page-id> <block-id-1> <block-id-2> ...
342
+
343
+ # Example: Put hero first, then intro, then features
344
+ riverbankcms block reorder home hero-main intro-text features-grid
345
+ ```
346
+
347
+ ### block get
348
+
349
+ Retrieve a specific block.
350
+
351
+ ```bash
352
+ riverbankcms block get <page-id> <block-id>
353
+ riverbankcms block get home hero-main
354
+ riverbankcms block get home hero-main --json
355
+ ```
356
+
357
+ ### block list
358
+
359
+ List all blocks on a page.
360
+
361
+ ```bash
362
+ riverbankcms block list <page-id>
363
+ riverbankcms block list home
364
+ riverbankcms block list home --json
365
+ ```
366
+
367
+ ---
368
+
369
+ ## Navigation Commands
370
+
371
+ Manage navigation menus.
372
+
373
+ ### navigation upsert
374
+
375
+ Create or update a navigation menu.
376
+
377
+ ```bash
378
+ # With inline JSON
379
+ riverbankcms navigation upsert <menu-name> --data '[{"label": "Home", "url": "/"}]'
380
+
381
+ # With JSON file
382
+ riverbankcms navigation upsert main --file ./main-nav.json
383
+ ```
384
+
385
+ **Example menu structure:**
386
+
387
+ ```json
388
+ [
389
+ { "label": "Home", "url": "/" },
390
+ { "label": "About", "url": "/about" },
391
+ {
392
+ "label": "Products",
393
+ "url": "/products",
394
+ "children": [
395
+ { "label": "Category A", "url": "/products/a" },
396
+ { "label": "Category B", "url": "/products/b" }
397
+ ]
398
+ }
399
+ ]
400
+ ```
401
+
402
+ ### navigation get
403
+
404
+ Retrieve a navigation menu.
405
+
406
+ ```bash
407
+ riverbankcms navigation get <menu-name>
408
+ riverbankcms navigation get main
409
+ riverbankcms navigation get main --json
410
+ ```
411
+
412
+ ### navigation list
413
+
414
+ List all navigation menus.
415
+
416
+ ```bash
417
+ riverbankcms navigation list
418
+ riverbankcms navigation list --json
419
+ ```
420
+
421
+ ---
422
+
423
+ ## Delete Commands
424
+
425
+ Delete content from the CMS.
426
+
427
+ ### delete entry
428
+
429
+ Delete an entry.
430
+
431
+ ```bash
432
+ riverbankcms delete entry <type> <identifier> --yes
433
+ riverbankcms delete entry blog-post old-post --yes
434
+ ```
435
+
436
+ ### delete block
437
+
438
+ Delete a block from a page.
439
+
440
+ ```bash
441
+ riverbankcms delete block <page-id> <block-id> --yes
442
+ riverbankcms delete block home old-section --yes
443
+ ```
444
+
445
+ **Note:** The `--yes` flag is required to confirm deletion.
446
+
447
+ ---
448
+
449
+ ## Utility Commands
450
+
451
+ ### preview
452
+
453
+ Render a block preview.
454
+
455
+ ```bash
456
+ # Print HTML to terminal
457
+ riverbankcms preview <kind> --data '<json>'
458
+
459
+ # Open in browser
460
+ riverbankcms preview block.hero --data '{"heading": "Test"}' --open
461
+
462
+ # Capture screenshot
463
+ riverbankcms preview block.hero --data '{"heading": "Test"}' --screenshot
464
+
465
+ # With custom CSS
466
+ riverbankcms preview block.hero --data '...' --css ./styles.css
467
+
468
+ # From JSON file
469
+ riverbankcms preview block.hero --file ./hero-data.json
470
+ ```
471
+
472
+ **Options:**
473
+
474
+ | Option | Description |
475
+ |--------|-------------|
476
+ | `--data <json>` | Block content as JSON |
477
+ | `--file <path>` | Path to JSON file |
478
+ | `--terminal` | Print HTML to terminal (default) |
479
+ | `--open` | Open in browser |
480
+ | `--screenshot` | Capture screenshot |
481
+ | `--output <path>` | Screenshot output path |
482
+ | `--css <paths...>` | Additional CSS files |
483
+ | `--validation <mode>` | `strict` or `lenient` |
484
+ | `--preview-stage <stage>` | `published` or `preview` |
485
+
486
+ ### identifiers backfill
487
+
488
+ Generate identifiers for content created before the SDK.
489
+
490
+ ```bash
491
+ riverbankcms identifiers backfill
492
+ riverbankcms identifiers backfill --remote
493
+ ```
494
+
495
+ Use this when migrating existing content to use SDK identifiers.
496
+
497
+ ### init-docs
498
+
499
+ Scaffold agent documentation (this command).
500
+
501
+ ```bash
502
+ riverbankcms init-docs
503
+ riverbankcms init-docs --path ./custom-path
504
+ riverbankcms init-docs --config ./riverbank.config.ts
505
+ ```
506
+
507
+ ---
508
+
509
+ ## Common Patterns
510
+
511
+ ### Creating New Content
512
+
513
+ ```bash
514
+ # 1. Pull latest
515
+ riverbankcms pull
516
+
517
+ # 2. Create entry
518
+ riverbankcms entry upsert blog-post new-post --data '{"title": "New Post"}'
519
+
520
+ # 3. Create page
521
+ riverbankcms page upsert new-page --title "New Page" --path /new-page
522
+
523
+ # 4. Add blocks
524
+ riverbankcms block upsert new-page hero --kind block.hero --data '{"heading": "Welcome"}'
525
+ riverbankcms block upsert new-page body --kind block.bodyText --data '{"content": "<p>...</p>"}'
526
+
527
+ # 5. Preview
528
+ riverbankcms preview block.hero --data '{"heading": "Welcome"}' --open
529
+
530
+ # 6. Publish
531
+ riverbankcms page publish new-page
532
+ ```
533
+
534
+ ### Updating Existing Content
535
+
536
+ ```bash
537
+ # 1. Pull latest
538
+ riverbankcms pull
539
+
540
+ # 2. Edit local JSON files in ./content/
541
+ # ... make changes ...
542
+
543
+ # 3. Preview changes
544
+ riverbankcms push --dry-run
545
+
546
+ # 4. Push changes
547
+ riverbankcms push
548
+ ```
549
+
550
+ ### Agent-Friendly JSON Output
551
+
552
+ ```bash
553
+ # Get entry list as JSON
554
+ riverbankcms entry list blog-post --json
555
+
556
+ # Preview push diff as JSON
557
+ riverbankcms push --dry-run --json-diff=summary
558
+
559
+ # Get page with blocks as JSON
560
+ riverbankcms page get home --json
561
+ ```
562
+
563
+ ### Working with Production
564
+
565
+ ```bash
566
+ # Pull from production
567
+ riverbankcms pull --remote
568
+
569
+ # Preview production push
570
+ riverbankcms push --remote --dry-run
571
+
572
+ # Push to production (requires confirmation)
573
+ riverbankcms push --remote --yes
574
+ ```