plutonium 0.49.1 → 0.51.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 (206) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/skills/plutonium/SKILL.md +85 -102
  3. data/.claude/skills/plutonium-app/SKILL.md +572 -0
  4. data/.claude/skills/plutonium-auth/SKILL.md +163 -300
  5. data/.claude/skills/plutonium-behavior/SKILL.md +838 -0
  6. data/.claude/skills/plutonium-resource/SKILL.md +1176 -0
  7. data/.claude/skills/plutonium-tenancy/SKILL.md +655 -0
  8. data/.claude/skills/plutonium-testing/SKILL.md +6 -5
  9. data/.claude/skills/plutonium-ui/SKILL.md +900 -0
  10. data/CHANGELOG.md +37 -0
  11. data/Rakefile +2 -1
  12. data/app/assets/plutonium.css +1 -11
  13. data/app/assets/plutonium.js +1323 -1184
  14. data/app/assets/plutonium.js.map +4 -4
  15. data/app/assets/plutonium.min.js +50 -49
  16. data/app/assets/plutonium.min.js.map +4 -4
  17. data/app/views/plutonium/_resource_header.html.erb +4 -4
  18. data/app/views/plutonium/_resource_sidebar.html.erb +9 -9
  19. data/app/views/resource/_resource_grid.html.erb +1 -0
  20. data/config/brakeman.ignore +25 -2
  21. data/docs/.vitepress/config.ts +37 -27
  22. data/docs/getting-started/index.md +22 -29
  23. data/docs/getting-started/installation.md +37 -80
  24. data/docs/getting-started/tutorial/index.md +4 -5
  25. data/docs/guides/adding-resources.md +66 -377
  26. data/docs/guides/authentication.md +94 -463
  27. data/docs/guides/authorization.md +124 -370
  28. data/docs/guides/creating-packages.md +94 -296
  29. data/docs/guides/custom-actions.md +121 -441
  30. data/docs/guides/index.md +22 -42
  31. data/docs/guides/multi-tenancy.md +116 -187
  32. data/docs/guides/nested-resources.md +103 -431
  33. data/docs/guides/search-filtering.md +123 -240
  34. data/docs/guides/testing.md +5 -4
  35. data/docs/guides/theming.md +157 -407
  36. data/docs/guides/troubleshooting.md +5 -3
  37. data/docs/guides/user-invites.md +106 -425
  38. data/docs/guides/user-profile.md +76 -243
  39. data/docs/index.md +1 -1
  40. data/docs/reference/app/generators.md +517 -0
  41. data/docs/reference/app/index.md +158 -0
  42. data/docs/reference/app/packages.md +146 -0
  43. data/docs/reference/app/portals.md +377 -0
  44. data/docs/reference/auth/accounts.md +230 -0
  45. data/docs/reference/auth/index.md +88 -0
  46. data/docs/reference/auth/profile.md +185 -0
  47. data/docs/reference/behavior/controllers.md +395 -0
  48. data/docs/reference/behavior/index.md +22 -0
  49. data/docs/reference/behavior/interactions.md +341 -0
  50. data/docs/reference/behavior/policies.md +417 -0
  51. data/docs/reference/index.md +56 -49
  52. data/docs/reference/resource/actions.md +423 -0
  53. data/docs/reference/resource/definition.md +508 -0
  54. data/docs/reference/resource/index.md +50 -0
  55. data/docs/reference/resource/model.md +348 -0
  56. data/docs/reference/resource/query.md +305 -0
  57. data/docs/reference/tenancy/entity-scoping.md +361 -0
  58. data/docs/reference/tenancy/index.md +36 -0
  59. data/docs/reference/tenancy/invites.md +393 -0
  60. data/docs/reference/tenancy/nested-resources.md +267 -0
  61. data/docs/reference/testing/index.md +287 -0
  62. data/docs/reference/ui/assets.md +400 -0
  63. data/docs/reference/ui/components.md +165 -0
  64. data/docs/reference/ui/displays.md +104 -0
  65. data/docs/reference/ui/forms.md +284 -0
  66. data/docs/reference/ui/index.md +30 -0
  67. data/docs/reference/ui/layouts.md +106 -0
  68. data/docs/reference/ui/pages.md +189 -0
  69. data/docs/reference/ui/tables.md +117 -0
  70. data/docs/superpowers/plans/2026-05-07-ui-layout-overhaul.md +841 -0
  71. data/docs/superpowers/plans/2026-05-07-ui-layout-overhaul.md.tasks.json +103 -0
  72. data/docs/superpowers/specs/2026-05-07-ui-layout-overhaul-design.md +270 -0
  73. data/docs/superpowers/specs/2026-05-09-typeahead-endpoint-design.md +203 -0
  74. data/docs/superpowers/specs/2026-05-12-skill-compaction-design.md +99 -0
  75. data/docs/superpowers/specs/2026-05-13-docs-restructure-design.md +186 -0
  76. data/gemfiles/rails_7.gemfile.lock +1 -1
  77. data/gemfiles/rails_8.0.gemfile.lock +1 -1
  78. data/gemfiles/rails_8.1.gemfile.lock +1 -1
  79. data/lib/generators/pu/core/install/templates/config/initializers/plutonium.rb +1 -0
  80. data/lib/generators/pu/invites/install_generator.rb +1 -0
  81. data/lib/generators/pu/lite/rails_pulse/rails_pulse_generator.rb +54 -5
  82. data/lib/plutonium/action/base.rb +44 -1
  83. data/lib/plutonium/action/interactive.rb +1 -1
  84. data/lib/plutonium/configuration.rb +4 -0
  85. data/lib/plutonium/definition/actions.rb +3 -0
  86. data/lib/plutonium/definition/base.rb +8 -0
  87. data/lib/plutonium/definition/index_views.rb +95 -0
  88. data/lib/plutonium/definition/metadata.rb +40 -0
  89. data/lib/plutonium/helpers/turbo_helper.rb +12 -1
  90. data/lib/plutonium/helpers/turbo_stream_actions_helper.rb +14 -0
  91. data/lib/plutonium/interaction/response/redirect.rb +1 -1
  92. data/lib/plutonium/query/base.rb +8 -0
  93. data/lib/plutonium/query/filters/association.rb +30 -8
  94. data/lib/plutonium/query/filters/boolean.rb +5 -0
  95. data/lib/plutonium/resource/controller.rb +1 -0
  96. data/lib/plutonium/resource/controllers/crud_actions.rb +19 -1
  97. data/lib/plutonium/resource/controllers/presentable.rb +11 -2
  98. data/lib/plutonium/resource/controllers/typeahead.rb +180 -0
  99. data/lib/plutonium/resource/definition.rb +42 -0
  100. data/lib/plutonium/resource/policy.rb +7 -0
  101. data/lib/plutonium/resource/query_object.rb +64 -6
  102. data/lib/plutonium/routing/mapper_extensions.rb +15 -0
  103. data/lib/plutonium/testing/resource_definition.rb +2 -2
  104. data/lib/plutonium/ui/action_button.rb +4 -2
  105. data/lib/plutonium/ui/component/kit.rb +12 -0
  106. data/lib/plutonium/ui/component/methods.rb +4 -0
  107. data/lib/plutonium/ui/display/base.rb +3 -1
  108. data/lib/plutonium/ui/display/resource.rb +109 -25
  109. data/lib/plutonium/ui/display/theme.rb +2 -1
  110. data/lib/plutonium/ui/dyna_frame/content.rb +8 -14
  111. data/lib/plutonium/ui/empty_card.rb +1 -1
  112. data/lib/plutonium/ui/form/base.rb +35 -3
  113. data/lib/plutonium/ui/form/components/hidden_wrapper.rb +25 -0
  114. data/lib/plutonium/ui/form/components/json.rb +58 -0
  115. data/lib/plutonium/ui/form/components/resource_select.rb +133 -1
  116. data/lib/plutonium/ui/form/components/secure_association.rb +105 -24
  117. data/lib/plutonium/ui/form/components/sticky_footer.rb +17 -0
  118. data/lib/plutonium/ui/form/concerns/typeahead_attributes.rb +83 -0
  119. data/lib/plutonium/ui/form/resource.rb +45 -10
  120. data/lib/plutonium/ui/form/theme.rb +1 -1
  121. data/lib/plutonium/ui/frame_navigator_panel.rb +7 -4
  122. data/lib/plutonium/ui/grid/card.rb +235 -0
  123. data/lib/plutonium/ui/grid/resource.rb +149 -0
  124. data/lib/plutonium/ui/layout/base.rb +38 -1
  125. data/lib/plutonium/ui/layout/header.rb +1 -2
  126. data/lib/plutonium/ui/layout/icon_rail.rb +212 -0
  127. data/lib/plutonium/ui/layout/resource_layout.rb +10 -3
  128. data/lib/plutonium/ui/layout/sidebar.rb +12 -24
  129. data/lib/plutonium/ui/layout/topbar.rb +100 -0
  130. data/lib/plutonium/ui/modal/base.rb +109 -0
  131. data/lib/plutonium/ui/modal/centered.rb +21 -0
  132. data/lib/plutonium/ui/modal/slideover.rb +26 -0
  133. data/lib/plutonium/ui/page/base.rb +18 -6
  134. data/lib/plutonium/ui/page/edit.rb +13 -1
  135. data/lib/plutonium/ui/page/index.rb +40 -1
  136. data/lib/plutonium/ui/page/interactive_action.rb +8 -39
  137. data/lib/plutonium/ui/page/new.rb +13 -1
  138. data/lib/plutonium/ui/page/show.rb +8 -1
  139. data/lib/plutonium/ui/page_header.rb +8 -13
  140. data/lib/plutonium/ui/panel.rb +10 -19
  141. data/lib/plutonium/ui/sidebar_menu.rb +2 -25
  142. data/lib/plutonium/ui/tab_list.rb +29 -7
  143. data/lib/plutonium/ui/table/base.rb +106 -0
  144. data/lib/plutonium/ui/table/components/bulk_actions_toolbar.rb +12 -4
  145. data/lib/plutonium/ui/table/components/filter_form.rb +171 -0
  146. data/lib/plutonium/ui/table/components/filter_pills.rb +89 -0
  147. data/lib/plutonium/ui/table/components/row_actions_dropdown.rb +13 -12
  148. data/lib/plutonium/ui/table/components/scopes_pills.rb +67 -0
  149. data/lib/plutonium/ui/table/components/selection_column.rb +2 -11
  150. data/lib/plutonium/ui/table/components/toolbar.rb +104 -0
  151. data/lib/plutonium/ui/table/components/view_switcher.rb +81 -0
  152. data/lib/plutonium/ui/table/resource.rb +158 -89
  153. data/lib/plutonium/ui/table/theme.rb +14 -5
  154. data/lib/plutonium/version.rb +1 -1
  155. data/lib/plutonium.rb +14 -0
  156. data/lib/tasks/release.rake +15 -1
  157. data/package.json +10 -10
  158. data/src/css/components.css +304 -131
  159. data/src/css/slim_select.css +4 -0
  160. data/src/css/tokens.css +101 -85
  161. data/src/js/controllers/autosubmit_controller.js +24 -0
  162. data/src/js/controllers/bulk_actions_controller.js +15 -16
  163. data/src/js/controllers/capture_url_controller.js +14 -0
  164. data/src/js/controllers/filter_panel_controller.js +77 -19
  165. data/src/js/controllers/frame_navigator_controller.js +34 -6
  166. data/src/js/controllers/icon_rail_controller.js +22 -0
  167. data/src/js/controllers/icon_rail_flyout_controller.js +128 -0
  168. data/src/js/controllers/register_controllers.js +16 -0
  169. data/src/js/controllers/resource_tab_list_controller.js +56 -3
  170. data/src/js/controllers/row_click_controller.js +21 -0
  171. data/src/js/controllers/slim_select_controller.js +61 -0
  172. data/src/js/controllers/table_column_menu_controller.js +43 -0
  173. data/src/js/controllers/table_header_controller.js +16 -0
  174. data/src/js/controllers/view_switcher_controller.js +29 -0
  175. data/src/js/turbo/turbo_actions.js +33 -0
  176. data/yarn.lock +553 -543
  177. metadata +71 -32
  178. data/.claude/skills/plutonium-assets/SKILL.md +0 -512
  179. data/.claude/skills/plutonium-controller/SKILL.md +0 -396
  180. data/.claude/skills/plutonium-create-resource/SKILL.md +0 -303
  181. data/.claude/skills/plutonium-definition/SKILL.md +0 -1138
  182. data/.claude/skills/plutonium-entity-scoping/SKILL.md +0 -317
  183. data/.claude/skills/plutonium-forms/SKILL.md +0 -465
  184. data/.claude/skills/plutonium-installation/SKILL.md +0 -325
  185. data/.claude/skills/plutonium-interaction/SKILL.md +0 -413
  186. data/.claude/skills/plutonium-invites/SKILL.md +0 -408
  187. data/.claude/skills/plutonium-model/SKILL.md +0 -440
  188. data/.claude/skills/plutonium-nested-resources/SKILL.md +0 -360
  189. data/.claude/skills/plutonium-package/SKILL.md +0 -198
  190. data/.claude/skills/plutonium-policy/SKILL.md +0 -456
  191. data/.claude/skills/plutonium-portal/SKILL.md +0 -410
  192. data/.claude/skills/plutonium-views/SKILL.md +0 -592
  193. data/docs/reference/assets/index.md +0 -496
  194. data/docs/reference/controller/index.md +0 -412
  195. data/docs/reference/definition/actions.md +0 -449
  196. data/docs/reference/definition/fields.md +0 -383
  197. data/docs/reference/definition/index.md +0 -268
  198. data/docs/reference/definition/query.md +0 -351
  199. data/docs/reference/generators/index.md +0 -648
  200. data/docs/reference/interaction/index.md +0 -449
  201. data/docs/reference/model/features.md +0 -248
  202. data/docs/reference/model/index.md +0 -218
  203. data/docs/reference/policy/index.md +0 -456
  204. data/docs/reference/portal/index.md +0 -379
  205. data/docs/reference/views/forms.md +0 -411
  206. data/docs/reference/views/index.md +0 -501
@@ -1,325 +0,0 @@
1
- ---
2
- name: plutonium-installation
3
- description: Use BEFORE installing Plutonium in a Rails app, running pu:core:install, or configuring initial Plutonium setup. Covers generators, gemfile, and initial config.
4
- ---
5
-
6
- # Plutonium Installation
7
-
8
- ## 🚨 Critical (read first)
9
- - **Use the generators.** `pu:core:install`, `pu:rodauth:install`, `pu:pkg:portal`, `pu:res:scaffold`, `pu:res:conn` — never hand-write base controllers, policies, or layouts.
10
- - **Use `base.rb`, not `plutonium.rb`, for existing apps.** The `plutonium.rb` template reruns the full bootstrap (dotenv, annotate, solid_*, assets) and clobbers git history. For any pre-existing app, use `base.rb`.
11
- - **Pass `--dest`, `--force`, `--auth`, `--skip-bundle` for unattended runs** so generators don't block on prompts. See `plutonium` index for the full flag matrix.
12
- - **Related skills:** `plutonium` (architecture overview), `plutonium-auth` (Rodauth setup), `plutonium-portal` (portal config), `plutonium-create-resource` (scaffolding resources).
13
-
14
- ## Quick checklist
15
-
16
- Fresh install in a new Rails app:
17
-
18
- 1. Generate the Rails app with `rails new myapp -a propshaft -j esbuild -c tailwind -m https://radioactive-labs.github.io/plutonium-core/templates/plutonium.rb` (greenfield) OR `bin/rails app:template LOCATION=.../base.rb` (existing app).
19
- 2. Run `bundle install` if you added the gem manually.
20
- 3. Run `rails generate pu:core:install` to create base controllers, policies, definitions, and config.
21
- 4. Run `rails generate pu:rodauth:install` + `rails generate pu:rodauth:account user` for auth.
22
- 5. Run `rails generate pu:pkg:portal admin --auth=user` to create a portal.
23
- 6. Run `rails generate pu:res:scaffold Post title:string 'content:text?' --dest=main_app` for a first resource.
24
- 7. Run `rails db:migrate`.
25
- 8. Run `rails generate pu:res:conn Post --dest=admin_portal` to connect the resource.
26
- 9. Mount the portal in `config/routes.rb`: `mount AdminPortal::Engine, at: "/admin"`.
27
- 10. Start the server and visit `/admin`.
28
-
29
- ## New Rails App (Recommended)
30
-
31
- Use the Rails template for a fully configured setup:
32
-
33
- ```bash
34
- rails new myapp -a propshaft -j esbuild -c tailwind \
35
- -m https://radioactive-labs.github.io/plutonium-core/templates/plutonium.rb
36
- ```
37
-
38
- This sets up Rails with Propshaft, esbuild, TailwindCSS, and Plutonium in one command.
39
-
40
- ## Existing Rails App
41
-
42
- > **⚠️ Use `base.rb`, not `plutonium.rb`.** The `plutonium.rb` template is for `rails new` only — it re-runs the full app bootstrap (dotenv, annotate, solid_*, assets) and creates generic "initial commit" commits that clobber history. For any pre-existing app, always use `base.rb`.
43
-
44
- ### Option 1: Rails Template
45
-
46
- ```bash
47
- bin/rails app:template \
48
- LOCATION=https://radioactive-labs.github.io/plutonium-core/templates/base.rb
49
- ```
50
-
51
- ### Option 2: Manual Installation
52
-
53
- ```bash
54
- # Add to Gemfile
55
- gem "plutonium"
56
-
57
- # Install
58
- bundle install
59
- rails generate pu:core:install
60
- ```
61
-
62
- ## What Gets Generated
63
-
64
- After `pu:core:install`:
65
-
66
- ```
67
- app/
68
- ├── controllers/
69
- │ ├── plutonium_controller.rb # Base controller
70
- │ └── resource_controller.rb # Resource CRUD base
71
- ├── definitions/
72
- │ └── resource_definition.rb # Definition base class
73
- ├── interactions/
74
- │ └── resource_interaction.rb # Interaction base class
75
- ├── models/
76
- │ └── resource_record.rb # Abstract model base
77
- ├── policies/
78
- │ └── resource_policy.rb # Policy base class
79
- └── views/
80
- └── layouts/
81
- └── resource.html.erb # Base layout
82
-
83
- config/
84
- ├── initializers/
85
- │ └── plutonium.rb # Configuration
86
- └── packages.rb # Package loader
87
-
88
- packages/
89
- └── .keep
90
- ```
91
-
92
- ## Base Classes
93
-
94
- ### ResourceController
95
-
96
- ```ruby
97
- class ResourceController < PlutoniumController
98
- include Plutonium::Resource::Controller
99
- # Provides: index, show, new, create, edit, update, destroy
100
- # Plus: interactive actions, authorization, query handling
101
- end
102
- ```
103
-
104
- ### ResourcePolicy
105
-
106
- ```ruby
107
- class ResourcePolicy < Plutonium::Resource::Policy
108
- def create?
109
- true # Override with your logic
110
- end
111
-
112
- def read?
113
- true
114
- end
115
- end
116
- ```
117
-
118
- ### ResourceDefinition
119
-
120
- ```ruby
121
- class ResourceDefinition < Plutonium::Resource::Definition
122
- # Add app-wide definition defaults here
123
- end
124
- ```
125
-
126
- ### ResourceRecord
127
-
128
- ```ruby
129
- class ResourceRecord < ApplicationRecord
130
- self.abstract_class = true
131
- # Models inherit from this for Plutonium features
132
- end
133
- ```
134
-
135
- ## Authentication Setup
136
-
137
- ### Install Rodauth
138
-
139
- ```bash
140
- rails generate pu:rodauth:install
141
- ```
142
-
143
- ### Create Account Types
144
-
145
- ```bash
146
- # Basic user account
147
- rails generate pu:rodauth:account user
148
-
149
- # Admin with 2FA, lockout, audit logging
150
- rails generate pu:rodauth:admin admin
151
-
152
- # SaaS user with entity/organization (multi-tenant)
153
- rails generate pu:saas:setup --user Customer --entity Organization
154
- ```
155
-
156
- ### Account Options
157
-
158
- | Option | Description |
159
- |--------|-------------|
160
- | `--defaults` | Enable common features (login, logout, remember, reset_password) |
161
- | `--kitchen_sink` | Enable all available features |
162
- | `--no-allow-signup` | Disable public signup |
163
-
164
- ### Connect Auth to Controllers
165
-
166
- ```ruby
167
- # app/controllers/resource_controller.rb
168
- class ResourceController < PlutoniumController
169
- include Plutonium::Resource::Controller
170
- include Plutonium::Auth::Rodauth(:user) # Add this
171
- end
172
- ```
173
-
174
- ## Creating Your First Resource
175
-
176
- ```bash
177
- rails generate pu:res:scaffold Post user:belongs_to title:string content:text
178
- rails db:migrate
179
- ```
180
-
181
- ## Creating a Portal
182
-
183
- ```bash
184
- rails generate pu:pkg:portal admin
185
- ```
186
-
187
- Select authentication when prompted:
188
- - **Rodauth account** - Use existing auth
189
- - **Public access** - No authentication
190
- - **Bring your own** - Custom implementation
191
-
192
- ### Mount the Portal
193
-
194
- ```ruby
195
- # config/routes.rb
196
- Rails.application.routes.draw do
197
- mount AdminPortal::Engine, at: "/admin"
198
- end
199
- ```
200
-
201
- ### Connect Resources to Portal
202
-
203
- ```bash
204
- rails generate pu:res:conn Post --dest=admin_portal
205
- ```
206
-
207
- ## Configuration
208
-
209
- ```ruby
210
- # config/initializers/plutonium.rb
211
- Plutonium.configure do |config|
212
- config.load_defaults 1.0
213
-
214
- # Custom assets (optional)
215
- # config.assets.stylesheet = "custom_stylesheet"
216
- # config.assets.script = "custom_script"
217
- # config.assets.logo = "custom_logo.png"
218
- end
219
- ```
220
-
221
- ## Package System
222
-
223
- Packages are loaded from `config/packages.rb`:
224
-
225
- ```ruby
226
- Dir.glob(File.expand_path("../packages/**/lib/engine.rb", __dir__)) { |package| load package }
227
- ```
228
-
229
- Create packages in `packages/` directory:
230
- - **Feature packages** - Business logic (`rails g pu:pkg:package blogging`)
231
- - **Portal packages** - Web interfaces (`rails g pu:pkg:portal admin`)
232
-
233
- ## Post-Installation Checklist
234
-
235
- 1. **Install core**
236
- ```bash
237
- rails generate pu:core:install
238
- ```
239
-
240
- 2. **Setup authentication** (if needed)
241
- ```bash
242
- rails generate pu:rodauth:install
243
- rails generate pu:rodauth:account user
244
- ```
245
-
246
- 3. **Create a portal**
247
- ```bash
248
- rails generate pu:pkg:portal admin
249
- ```
250
-
251
- 4. **Create resources**
252
- ```bash
253
- rails generate pu:res:scaffold Post title:string content:text
254
- ```
255
-
256
- 5. **Connect resources to portal**
257
- ```bash
258
- rails generate pu:res:conn Post --dest=admin_portal
259
- ```
260
-
261
- 6. **Run migrations**
262
- ```bash
263
- rails db:migrate
264
- ```
265
-
266
- 7. **Mount portal** (add to `config/routes.rb`)
267
- ```ruby
268
- mount AdminPortal::Engine, at: "/admin"
269
- ```
270
-
271
- 8. **Start server**
272
- ```bash
273
- rails server
274
- ```
275
-
276
- ## Converting Existing Models
277
-
278
- For models that already exist in your app:
279
-
280
- 1. Include the module:
281
- ```ruby
282
- class Post < ApplicationRecord
283
- include Plutonium::Resource::Record
284
- end
285
- ```
286
-
287
- 2. Generate supporting files (skips model/migration):
288
- ```bash
289
- rails g pu:res:scaffold Post
290
- ```
291
-
292
- 3. Connect to portal:
293
- ```bash
294
- rails g pu:res:conn Post --dest=admin_portal
295
- ```
296
-
297
- ## Generator Reference
298
-
299
- | Generator | Purpose |
300
- |-----------|---------|
301
- | `pu:core:install` | Initial Plutonium setup |
302
- | `pu:rodauth:install` | Setup Rodauth authentication |
303
- | `pu:rodauth:account NAME` | Create user account type |
304
- | `pu:rodauth:admin NAME` | Create admin account with 2FA |
305
- | `pu:saas:setup` | Create SaaS user + entity + membership |
306
- | `pu:saas:user NAME` | Create SaaS user account |
307
- | `pu:saas:entity NAME` | Create entity model |
308
- | `pu:saas:membership` | Create membership join table |
309
- | `pu:pkg:package NAME` | Create feature package |
310
- | `pu:pkg:portal NAME` | Create portal package |
311
- | `pu:res:scaffold NAME` | Create resource (model, policy, definition, controller) |
312
- | `pu:res:conn NAME` | Connect resource to portal |
313
- | `pu:eject:layout` | Eject layout files for customization |
314
- | `pu:skills:sync` | Sync Claude Code skills to project |
315
-
316
- ## Related Skills
317
-
318
- - `plutonium` - Resource architecture overview
319
- - `plutonium-auth` - Authentication setup and configuration
320
- - `plutonium-package` - Feature and portal packages
321
- - `plutonium-portal` - Portal configuration
322
- - `plutonium-views` - Custom pages, layouts, and Phlex components
323
- - `plutonium-assets` - TailwindCSS and custom styling
324
- - `plutonium-create-resource` - Resource scaffold options
325
- - `plutonium-portal` - Portal connection