Claude-skill-registry plutonium-installation
Installing Plutonium in a Rails application - setup, generators, and configuration
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/installation" ~/.claude/skills/majiayu000-claude-skill-registry-plutonium-installation && rm -rf "$T"
manifest:
skills/data/installation/SKILL.mdsource content
Plutonium Installation
New Rails App (Recommended)
Use the Rails template for a fully configured setup:
rails new myapp -a propshaft -j esbuild -c tailwind \ -m https://radioactive-labs.github.io/plutonium-core/templates/plutonium.rb
This sets up Rails with Propshaft, esbuild, TailwindCSS, and Plutonium in one command.
Existing Rails App
Option 1: Rails Template
bin/rails app:template \ LOCATION=https://radioactive-labs.github.io/plutonium-core/templates/base.rb
Option 2: Manual Installation
# Add to Gemfile gem "plutonium" # Install bundle install rails generate pu:core:install
What Gets Generated
After
pu:core:install:
app/ ├── controllers/ │ ├── plutonium_controller.rb # Base controller │ └── resource_controller.rb # Resource CRUD base ├── definitions/ │ └── resource_definition.rb # Definition base class ├── interactions/ │ └── resource_interaction.rb # Interaction base class ├── models/ │ └── resource_record.rb # Abstract model base ├── policies/ │ └── resource_policy.rb # Policy base class └── views/ └── layouts/ └── resource.html.erb # Base layout config/ ├── initializers/ │ └── plutonium.rb # Configuration └── packages.rb # Package loader packages/ └── .keep
Base Classes
ResourceController
class ResourceController < PlutoniumController include Plutonium::Resource::Controller # Provides: index, show, new, create, edit, update, destroy # Plus: interactive actions, authorization, query handling end
ResourcePolicy
class ResourcePolicy < Plutonium::Resource::Policy def create? true # Override with your logic end def read? true end end
ResourceDefinition
class ResourceDefinition < Plutonium::Resource::Definition # Add app-wide definition defaults here end
ResourceRecord
class ResourceRecord < ApplicationRecord self.abstract_class = true # Models inherit from this for Plutonium features end
Authentication Setup
Install Rodauth
rails generate pu:rodauth:install
Create Account Types
# Basic user account rails generate pu:rodauth:account user # Admin with 2FA, lockout, audit logging rails generate pu:rodauth:admin # Customer with entity association rails generate pu:rodauth:customer customer
Account Options
| Option | Description |
|---|---|
| Enable common features (login, logout, remember, reset_password) |
| Enable all available features |
| Disable public signup |
| Create associated entity model |
Connect Auth to Controllers
# app/controllers/resource_controller.rb class ResourceController < PlutoniumController include Plutonium::Resource::Controller include Plutonium::Auth::Rodauth(:user) # Add this end
Creating Your First Resource
rails generate pu:res:scaffold Post user:belongs_to title:string content:text rails db:migrate
Creating a Portal
rails generate pu:pkg:portal admin
Select authentication when prompted:
- Rodauth account - Use existing auth
- Public access - No authentication
- Bring your own - Custom implementation
Mount the Portal
# config/routes.rb Rails.application.routes.draw do mount AdminPortal::Engine, at: "/admin" end
Connect Resources to Portal
rails generate pu:res:conn Post --dest=admin_portal
Configuration
# config/initializers/plutonium.rb Plutonium.configure do |config| config.load_defaults 1.0 # Custom assets (optional) # config.assets.stylesheet = "custom_stylesheet" # config.assets.script = "custom_script" # config.assets.logo = "custom_logo.png" end
Package System
Packages are loaded from
config/packages.rb:
Dir.glob(File.expand_path("../packages/**/lib/engine.rb", __dir__)) { |package| load package }
Create packages in
packages/ directory:
- Feature packages - Business logic (
)rails g pu:pkg:package blogging - Portal packages - Web interfaces (
)rails g pu:pkg:portal admin
Post-Installation Checklist
-
Install core
rails generate pu:core:install -
Setup authentication (if needed)
rails generate pu:rodauth:install rails generate pu:rodauth:account user -
Create a portal
rails generate pu:pkg:portal admin -
Create resources
rails generate pu:res:scaffold Post title:string content:text -
Connect resources to portal
rails generate pu:res:conn Post --dest=admin_portal -
Run migrations
rails db:migrate -
Mount portal (add to
)config/routes.rbmount AdminPortal::Engine, at: "/admin" -
Start server
rails server
Converting Existing Models
For models that already exist in your app:
-
Include the module:
class Post < ApplicationRecord include Plutonium::Resource::Record end -
Generate supporting files (skips model/migration):
rails g pu:res:scaffold Post -
Connect to portal:
rails g pu:res:conn Post --dest=admin_portal
Generator Reference
| Generator | Purpose |
|---|---|
| Initial Plutonium setup |
| Setup Rodauth authentication |
| Create user account type |
| Create admin account with 2FA |
| Create customer with entity |
| Create feature package |
| Create portal package |
| Create resource (model, policy, definition, controller) |
| Connect resource to portal |
| Eject layout files for customization |
| Sync Claude Code skills to project |
Related Skills
- Resource architecture overviewplutonium-resource
- Authentication setup and configurationplutonium-rodauth
- Feature and portal packagesplutonium-package
- Portal configurationplutonium-portal
- Custom pages, layouts, and Phlex componentsplutonium-views
- TailwindCSS and custom stylingplutonium-assets
- Resource scaffold optionsplutonium-create-resource
- Portal connectionplutonium-connect-resource