rails_claude_skills 0.1.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.
- checksums.yaml +7 -0
- data/.github/ISSUE_TEMPLATE/bug_report.yml +134 -0
- data/.github/ISSUE_TEMPLATE/config.yml +11 -0
- data/.github/ISSUE_TEMPLATE/feature_request.yml +129 -0
- data/.github/ISSUE_TEMPLATE/question.yml +90 -0
- data/.github/dependabot.yml +19 -0
- data/.github/workflows/ci.yml +77 -0
- data/.github/workflows/release.yml +66 -0
- data/.rubocop.yml +52 -0
- data/CHANGELOG.md +94 -0
- data/CLAUDE.md +332 -0
- data/CODE_OF_CONDUCT.md +134 -0
- data/CONTRIBUTING.md +580 -0
- data/LICENSE.txt +21 -0
- data/README.md +544 -0
- data/Rakefile +8 -0
- data/lib/generators/claude/agent/agent_generator.rb +71 -0
- data/lib/generators/claude/agent/templates/agent.md.tt +62 -0
- data/lib/generators/claude/command/command_generator.rb +50 -0
- data/lib/generators/claude/command/templates/command.md.tt +28 -0
- data/lib/generators/claude/commands_library/create-pr.md +27 -0
- data/lib/generators/claude/commands_library/dbchange.md +19 -0
- data/lib/generators/claude/commands_library/quality.md +20 -0
- data/lib/generators/claude/commands_library/stimulus.md +19 -0
- data/lib/generators/claude/commands_library/turbo-feature.md +17 -0
- data/lib/generators/claude/install/install_generator.rb +211 -0
- data/lib/generators/claude/install/templates/README.md.tt +59 -0
- data/lib/generators/claude/install/templates/USAGE +28 -0
- data/lib/generators/claude/install/templates/agents/api-dev.md.tt +46 -0
- data/lib/generators/claude/install/templates/agents/fullstack-dev.md.tt +48 -0
- data/lib/generators/claude/install/templates/agents/rails-developer.md.tt +40 -0
- data/lib/generators/claude/install/templates/settings.local.json.tt +13 -0
- data/lib/generators/claude/rule/rule_generator.rb +175 -0
- data/lib/generators/claude/rule/templates/rule.md.tt +7 -0
- data/lib/generators/claude/rules_library/code-style.md +37 -0
- data/lib/generators/claude/rules_library/database.md +47 -0
- data/lib/generators/claude/rules_library/hotwire.md +56 -0
- data/lib/generators/claude/rules_library/security.md +54 -0
- data/lib/generators/claude/rules_library/testing.md +47 -0
- data/lib/generators/claude/skill/skill_generator.rb +196 -0
- data/lib/generators/claude/skill/templates/SKILL.md.tt +27 -0
- data/lib/generators/claude/skills_library/create-task-files/SKILL.md +311 -0
- data/lib/generators/claude/skills_library/create-task-files/templates/bug.md +60 -0
- data/lib/generators/claude/skills_library/create-task-files/templates/epic.md +47 -0
- data/lib/generators/claude/skills_library/create-task-files/templates/issue.md +45 -0
- data/lib/generators/claude/skills_library/create-task-files/templates/user-story.md +57 -0
- data/lib/generators/claude/skills_library/minitest-testing/SKILL.md +398 -0
- data/lib/generators/claude/skills_library/minitest-testing/references/examples.md +889 -0
- data/lib/generators/claude/skills_library/plan-feature/SKILL.md +253 -0
- data/lib/generators/claude/skills_library/rails-api-controllers/SKILL.md +1041 -0
- data/lib/generators/claude/skills_library/rails-api-controllers/references/api-documentation.md +422 -0
- data/lib/generators/claude/skills_library/rails-api-controllers/references/serialization.md +456 -0
- data/lib/generators/claude/skills_library/rails-auth-with-devise/SKILL.md +191 -0
- data/lib/generators/claude/skills_library/rails-auth-with-devise/references/advanced.md +331 -0
- data/lib/generators/claude/skills_library/rails-auth-with-devise/references/api-auth.md +266 -0
- data/lib/generators/claude/skills_library/rails-auth-with-devise/references/omniauth.md +194 -0
- data/lib/generators/claude/skills_library/rails-authorization-cancancan/SKILL.md +603 -0
- data/lib/generators/claude/skills_library/rails-authorization-cancancan/references/api-authorization.md +543 -0
- data/lib/generators/claude/skills_library/rails-authorization-cancancan/references/complex-permissions.md +572 -0
- data/lib/generators/claude/skills_library/rails-authorization-cancancan/references/multi-tenancy.md +373 -0
- data/lib/generators/claude/skills_library/rails-controllers/SKILL.md +514 -0
- data/lib/generators/claude/skills_library/rails-debugging/SKILL.md +260 -0
- data/lib/generators/claude/skills_library/rails-deployment/SKILL.md +437 -0
- data/lib/generators/claude/skills_library/rails-deployment/references/examples.md +901 -0
- data/lib/generators/claude/skills_library/rails-hotwire/SKILL.md +367 -0
- data/lib/generators/claude/skills_library/rails-jobs/MISSION_CONTROL_SETUP.md +639 -0
- data/lib/generators/claude/skills_library/rails-jobs/SKILL.md +704 -0
- data/lib/generators/claude/skills_library/rails-mailers/SKILL.md +549 -0
- data/lib/generators/claude/skills_library/rails-models/SKILL.md +379 -0
- data/lib/generators/claude/skills_library/rails-pagination-kaminari/SKILL.md +622 -0
- data/lib/generators/claude/skills_library/rails-pagination-kaminari/references/api-pagination.md +523 -0
- data/lib/generators/claude/skills_library/rails-pagination-kaminari/references/custom-themes.md +498 -0
- data/lib/generators/claude/skills_library/rails-pagination-kaminari/references/performance.md +478 -0
- data/lib/generators/claude/skills_library/rails-views/SKILL.md +508 -0
- data/lib/generators/claude/skills_library/refine-requirements/SKILL.md +226 -0
- data/lib/generators/claude/skills_library/refine-requirements/references/examples.md +344 -0
- data/lib/generators/claude/skills_library/refine-requirements/references/reference.md +298 -0
- data/lib/generators/claude/skills_library/rspec-testing/SKILL.md +572 -0
- data/lib/generators/claude/skills_library/rspec-testing/references/better_specs_guide.md +273 -0
- data/lib/generators/claude/skills_library/rspec-testing/references/thoughtbot_patterns.md +407 -0
- data/lib/generators/claude/skills_library/tailwindcss/SKILL.md +371 -0
- data/lib/generators/claude/views/views_generator.rb +113 -0
- data/lib/rails_claude_skills/railtie.rb +16 -0
- data/lib/rails_claude_skills/version.rb +5 -0
- data/lib/rails_claude_skills.rb +27 -0
- data/sig/rails_claude_skills.rbs +4 -0
- metadata +199 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
|
|
5
|
+
module Claude
|
|
6
|
+
module Generators
|
|
7
|
+
class CommandGenerator < Rails::Generators::NamedBase
|
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
|
9
|
+
|
|
10
|
+
class_option :description, type: :string, default: nil,
|
|
11
|
+
desc: "Command description"
|
|
12
|
+
class_option :argument_hint, type: :string, default: nil,
|
|
13
|
+
desc: "Argument hint for command usage"
|
|
14
|
+
class_option :allowed_tools, type: :string, default: "Bash, Read, Edit, Write",
|
|
15
|
+
desc: "Comma-separated list of allowed tools"
|
|
16
|
+
|
|
17
|
+
def create_command_file
|
|
18
|
+
template "command.md.tt", command_path
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def show_instructions
|
|
22
|
+
say "\nCommand '#{file_name}' created successfully!", :green
|
|
23
|
+
say "\nLocation: #{command_path}", :blue
|
|
24
|
+
say "\nUsage: /#{file_name}", :yellow
|
|
25
|
+
say "\nNext steps:", :yellow
|
|
26
|
+
say " 1. Edit #{command_path} to add your command logic"
|
|
27
|
+
say " 2. Test with: /#{file_name}"
|
|
28
|
+
say " 3. The command will be auto-loaded by Claude\n"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def command_path
|
|
34
|
+
".claude/commands/#{file_name}.md"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def command_description
|
|
38
|
+
options[:description] || "#{file_name.titleize} command"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def argument_hint
|
|
42
|
+
options[:argument_hint] || "[arguments]"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def allowed_tools
|
|
46
|
+
options[:allowed_tools]
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: <%= command_description %>
|
|
3
|
+
<% if argument_hint %>argument-hint: <%= argument_hint %><% end %>
|
|
4
|
+
allowed-tools: <%= allowed_tools %>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## <%= file_name.titleize %>
|
|
8
|
+
|
|
9
|
+
Add your command instructions here.
|
|
10
|
+
|
|
11
|
+
Use $ARGUMENTS to reference all arguments passed to the command.
|
|
12
|
+
Use $1, $2, etc. to reference specific arguments by position.
|
|
13
|
+
|
|
14
|
+
### Example Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/<%= file_name %> <%= argument_hint %>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Steps
|
|
21
|
+
|
|
22
|
+
1. Step 1
|
|
23
|
+
2. Step 2
|
|
24
|
+
3. Step 3
|
|
25
|
+
|
|
26
|
+
### Notes
|
|
27
|
+
|
|
28
|
+
Add any important notes or considerations here.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Create a branch, commit changes, and open a pull request
|
|
3
|
+
argument-hint: [branch_name] [commit_message] [pr_title]
|
|
4
|
+
allowed-tools: Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create a pull request workflow for: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Steps:
|
|
10
|
+
1. ✅ Check for uncommitted changes
|
|
11
|
+
2. ✅ Create and checkout new branch
|
|
12
|
+
3. ✅ Stage all changes
|
|
13
|
+
4. ✅ Create commit with descriptive message
|
|
14
|
+
5. ✅ Push to remote
|
|
15
|
+
6. ✅ Create pull request using gh CLI
|
|
16
|
+
7. ✅ Display PR URL
|
|
17
|
+
|
|
18
|
+
Commit message format:
|
|
19
|
+
```
|
|
20
|
+
{commit_message}
|
|
21
|
+
|
|
22
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
|
23
|
+
|
|
24
|
+
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Note: Requires GitHub CLI (`gh`) to be installed and authenticated.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate a database migration with safety checks
|
|
3
|
+
argument-hint: [migration_description]
|
|
4
|
+
allowed-tools: Bash, Read, Edit
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Generate a migration: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Safety checklist:
|
|
10
|
+
1. ✅ Use reversible migrations when possible
|
|
11
|
+
2. ✅ Add indexes for foreign keys
|
|
12
|
+
3. ✅ Use `change` method instead of up/down when possible
|
|
13
|
+
4. ✅ Consider data migration needs
|
|
14
|
+
5. ✅ Add comments for complex changes
|
|
15
|
+
|
|
16
|
+
After generation:
|
|
17
|
+
- Review the migration file
|
|
18
|
+
- Check for potential downtime issues
|
|
19
|
+
- Suggest background migration if needed for large tables
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run RuboCop, Brakeman, and security audits
|
|
3
|
+
allowed-tools: Bash
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## Current Code Quality
|
|
7
|
+
|
|
8
|
+
**RuboCop (Style):**
|
|
9
|
+
!`bundle exec rubocop`
|
|
10
|
+
|
|
11
|
+
**Brakeman (Security):**
|
|
12
|
+
!`bundle exec brakeman -q`
|
|
13
|
+
|
|
14
|
+
**Bundler Audit (Gem Vulnerabilities):**
|
|
15
|
+
!`bundle exec bundler-audit check --update`
|
|
16
|
+
|
|
17
|
+
Analyze the results above and:
|
|
18
|
+
1. Summarize any violations or vulnerabilities
|
|
19
|
+
2. Suggest fixes for critical issues
|
|
20
|
+
3. Offer to auto-fix RuboCop issues if needed
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate a new Stimulus controller with proper setup
|
|
3
|
+
argument-hint: [controller_name]
|
|
4
|
+
allowed-tools: Bash, Write, Edit, Read
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Generate a Stimulus controller: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Steps:
|
|
10
|
+
1. Generate the controller: `rails g stimulus $ARGUMENTS`
|
|
11
|
+
2. Add example actions and targets
|
|
12
|
+
3. Show usage example in HTML
|
|
13
|
+
4. Follow Stimulus naming conventions
|
|
14
|
+
|
|
15
|
+
Best practices:
|
|
16
|
+
- Use data-controller for registration
|
|
17
|
+
- Use data-action for event bindings
|
|
18
|
+
- Use data-*-target for element references
|
|
19
|
+
- Keep controllers focused and single-purpose
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Build a new feature using Hotwire (Turbo + Stimulus)
|
|
3
|
+
argument-hint: [feature_description]
|
|
4
|
+
allowed-tools: Write, Edit, Read, Bash, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Build a new Hotwire-powered feature: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
Requirements:
|
|
10
|
+
1. Use Turbo Frames for navigation and forms
|
|
11
|
+
2. Use Turbo Streams for real-time updates
|
|
12
|
+
3. Add Stimulus controllers only when Turbo isn't sufficient
|
|
13
|
+
4. Style with Tailwind CSS utility classes
|
|
14
|
+
5. Follow RESTful routing conventions
|
|
15
|
+
6. Include tests
|
|
16
|
+
|
|
17
|
+
Analyze the existing codebase patterns first, then implement following Rails + Hotwire best practices.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rails/generators"
|
|
4
|
+
|
|
5
|
+
module Claude
|
|
6
|
+
module Generators
|
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
|
8
|
+
source_root File.expand_path("templates", __dir__)
|
|
9
|
+
|
|
10
|
+
class_option :preset, type: :string, default: "basic",
|
|
11
|
+
desc: "Preset bundle (basic, fullstack, api)"
|
|
12
|
+
class_option :skip_agents, type: :boolean, default: false,
|
|
13
|
+
desc: "Don't create default agents"
|
|
14
|
+
class_option :skip_readme, type: :boolean, default: false,
|
|
15
|
+
desc: "Don't create README"
|
|
16
|
+
|
|
17
|
+
def create_claude_directory
|
|
18
|
+
empty_directory ".claude"
|
|
19
|
+
empty_directory ".claude/skills"
|
|
20
|
+
empty_directory ".claude/agents" unless options[:skip_agents]
|
|
21
|
+
empty_directory ".claude/commands"
|
|
22
|
+
empty_directory ".claude/rules"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def copy_settings
|
|
26
|
+
template "settings.local.json.tt", ".claude/settings.local.json"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def copy_readme
|
|
30
|
+
template "README.md.tt", ".claude/README.md" unless options[:skip_readme]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def install_preset_skills
|
|
34
|
+
case options[:preset]
|
|
35
|
+
when "fullstack"
|
|
36
|
+
install_fullstack_preset
|
|
37
|
+
when "api"
|
|
38
|
+
install_api_preset
|
|
39
|
+
else
|
|
40
|
+
install_basic_preset
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def show_readme
|
|
45
|
+
readme "USAGE" if behavior == :invoke
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
private
|
|
49
|
+
|
|
50
|
+
def install_basic_preset
|
|
51
|
+
say "Installing basic preset...", :green
|
|
52
|
+
install_basic_skills_and_rules
|
|
53
|
+
create_basic_agent unless options[:skip_agents]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def install_fullstack_preset
|
|
57
|
+
say "Installing fullstack preset...", :green
|
|
58
|
+
install_basic_skills_and_rules
|
|
59
|
+
install_skill("rails-hotwire")
|
|
60
|
+
install_skill("tailwindcss")
|
|
61
|
+
install_skill("rspec-testing")
|
|
62
|
+
install_command("quality")
|
|
63
|
+
install_command("turbo-feature")
|
|
64
|
+
install_command("stimulus")
|
|
65
|
+
install_command("create-pr")
|
|
66
|
+
install_rule("hotwire")
|
|
67
|
+
install_rule("security")
|
|
68
|
+
create_fullstack_agent unless options[:skip_agents]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def install_basic_skills_and_rules
|
|
72
|
+
install_skill("rails-models")
|
|
73
|
+
install_skill("rails-controllers")
|
|
74
|
+
install_skill("rails-views")
|
|
75
|
+
install_command("dbchange")
|
|
76
|
+
install_rule("code-style")
|
|
77
|
+
install_rule("testing")
|
|
78
|
+
install_rule("database")
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def install_api_preset
|
|
82
|
+
say "Installing API preset...", :green
|
|
83
|
+
install_skill("rails-models")
|
|
84
|
+
install_skill("rails-api-controllers")
|
|
85
|
+
install_skill("rails-auth-with-devise")
|
|
86
|
+
install_skill("rspec-testing")
|
|
87
|
+
install_command("dbchange")
|
|
88
|
+
install_command("quality")
|
|
89
|
+
install_rule("code-style")
|
|
90
|
+
install_rule("testing")
|
|
91
|
+
install_rule("security")
|
|
92
|
+
install_rule("database")
|
|
93
|
+
create_api_agent unless options[:skip_agents]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def install_skill(skill_name)
|
|
97
|
+
skill_dir = ".claude/skills/#{skill_name}"
|
|
98
|
+
empty_directory skill_dir
|
|
99
|
+
|
|
100
|
+
skill_source = File.expand_path("../skills_library/#{skill_name}", __dir__)
|
|
101
|
+
if File.directory?(skill_source)
|
|
102
|
+
directory skill_source, skill_dir
|
|
103
|
+
else
|
|
104
|
+
create_file "#{skill_dir}/SKILL.md", default_skill_content(skill_name)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def install_command(command_name)
|
|
109
|
+
command_file = ".claude/commands/#{command_name}.md"
|
|
110
|
+
command_source = File.expand_path("../commands_library/#{command_name}.md", __dir__)
|
|
111
|
+
|
|
112
|
+
if File.exist?(command_source)
|
|
113
|
+
copy_file command_source, command_file
|
|
114
|
+
else
|
|
115
|
+
create_file command_file, default_command_content(command_name)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def install_rule(rule_name)
|
|
120
|
+
rule_file = ".claude/rules/#{rule_name}.md"
|
|
121
|
+
rule_source = File.expand_path("../rules_library/#{rule_name}.md", __dir__)
|
|
122
|
+
|
|
123
|
+
if File.exist?(rule_source)
|
|
124
|
+
copy_file rule_source, rule_file
|
|
125
|
+
else
|
|
126
|
+
create_file rule_file, default_rule_content(rule_name)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def create_basic_agent
|
|
131
|
+
template "agents/rails-developer.md.tt", ".claude/agents/rails-developer.md"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def create_fullstack_agent
|
|
135
|
+
template "agents/fullstack-dev.md.tt", ".claude/agents/fullstack-dev.md"
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def create_api_agent
|
|
139
|
+
template "agents/api-dev.md.tt", ".claude/agents/api-dev.md"
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def default_skill_content(skill_name)
|
|
143
|
+
<<~SKILL
|
|
144
|
+
---
|
|
145
|
+
name: #{skill_name}
|
|
146
|
+
description: #{skill_name.titleize} skill
|
|
147
|
+
version: 1.0.0
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
# #{skill_name.titleize}
|
|
151
|
+
|
|
152
|
+
## Quick Reference
|
|
153
|
+
|
|
154
|
+
This skill is not yet implemented.
|
|
155
|
+
|
|
156
|
+
## Usage
|
|
157
|
+
|
|
158
|
+
To customize this skill:
|
|
159
|
+
```bash
|
|
160
|
+
rails g claude:views #{skill_name}
|
|
161
|
+
```
|
|
162
|
+
SKILL
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def default_command_content(command_name)
|
|
166
|
+
<<~COMMAND
|
|
167
|
+
---
|
|
168
|
+
description: #{command_name.titleize} command
|
|
169
|
+
allowed-tools: Bash, Read, Edit, Write
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## #{command_name.titleize}
|
|
173
|
+
|
|
174
|
+
Add your command instructions here.
|
|
175
|
+
|
|
176
|
+
Use $ARGUMENTS to reference command arguments.
|
|
177
|
+
COMMAND
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def default_rule_content(rule_name)
|
|
181
|
+
<<~RULE
|
|
182
|
+
# #{rule_name.titleize} Rules
|
|
183
|
+
|
|
184
|
+
Add your project rules and guidelines here.
|
|
185
|
+
|
|
186
|
+
## Overview
|
|
187
|
+
|
|
188
|
+
Describe the purpose of these rules.
|
|
189
|
+
|
|
190
|
+
## Guidelines
|
|
191
|
+
|
|
192
|
+
- Add specific guidelines
|
|
193
|
+
- Include best practices
|
|
194
|
+
- Document conventions
|
|
195
|
+
RULE
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def app_name
|
|
199
|
+
Rails.application.class.module_parent_name
|
|
200
|
+
rescue StandardError
|
|
201
|
+
"MyApp"
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def rails_version
|
|
205
|
+
Rails::VERSION::STRING
|
|
206
|
+
rescue StandardError
|
|
207
|
+
"7.0"
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Claude Skills for <%= app_name %>
|
|
2
|
+
|
|
3
|
+
This directory contains Claude AI skills and agents for this Rails project.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
- `skills/` - Modular skill definitions
|
|
8
|
+
- `agents/` - Agent configurations that load multiple skills
|
|
9
|
+
- `settings.local.json` - Claude configuration
|
|
10
|
+
|
|
11
|
+
## Installed Preset
|
|
12
|
+
|
|
13
|
+
**<%= options[:preset].titleize %> Preset**
|
|
14
|
+
|
|
15
|
+
Skills are automatically loaded when you use Claude in this project.
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
### Customize a skill
|
|
20
|
+
|
|
21
|
+
To customize an existing skill:
|
|
22
|
+
```bash
|
|
23
|
+
rails g claude:views <skill-name>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Create a new skill
|
|
27
|
+
|
|
28
|
+
To create a custom skill:
|
|
29
|
+
```bash
|
|
30
|
+
rails g claude:skill <skill-name>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Create an agent
|
|
34
|
+
|
|
35
|
+
To create a new agent:
|
|
36
|
+
```bash
|
|
37
|
+
rails g claude:agent <agent-name> --skills=skill1,skill2
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Available Commands
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# List all generators
|
|
44
|
+
rails g --help | grep claude
|
|
45
|
+
|
|
46
|
+
# Get help for specific generator
|
|
47
|
+
rails g claude:install --help
|
|
48
|
+
rails g claude:skill --help
|
|
49
|
+
rails g claude:agent --help
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Learn More
|
|
53
|
+
|
|
54
|
+
- [Rails Claude Skills Documentation](https://github.com/shoebtamboli/rails_claude_skills)
|
|
55
|
+
- [Claude AI Documentation](https://docs.anthropic.com/claude/)
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
Generated with `rails_claude_skills` v<%= RailsClaudeSkills::VERSION %>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
===============================================================================
|
|
2
|
+
|
|
3
|
+
Claude Skills have been installed successfully!
|
|
4
|
+
|
|
5
|
+
Your .claude/ directory has been created with preset-specific skills, commands,
|
|
6
|
+
rules, and a pre-configured agent tailored to your development stack.
|
|
7
|
+
|
|
8
|
+
Next steps:
|
|
9
|
+
|
|
10
|
+
1. Review your skills in .claude/skills/
|
|
11
|
+
|
|
12
|
+
2. Customize any pre-built skill:
|
|
13
|
+
$ rails g claude:views <skill-name>
|
|
14
|
+
|
|
15
|
+
3. Create custom skills for your domain:
|
|
16
|
+
$ rails g claude:skill <skill-name>
|
|
17
|
+
|
|
18
|
+
4. Create custom agents:
|
|
19
|
+
$ rails g claude:agent <agent-name>
|
|
20
|
+
|
|
21
|
+
5. Create custom commands (slash commands):
|
|
22
|
+
$ rails g claude:command <command-name>
|
|
23
|
+
|
|
24
|
+
Documentation: https://github.com/shoebtamboli/rails_claude_skills
|
|
25
|
+
|
|
26
|
+
Happy coding with AI! 🚀
|
|
27
|
+
|
|
28
|
+
===============================================================================
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-dev
|
|
3
|
+
description: Rails API development agent
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: green
|
|
6
|
+
skills:
|
|
7
|
+
- rails-models
|
|
8
|
+
- rails-api-controllers
|
|
9
|
+
- rails-serializers
|
|
10
|
+
- rails-authentication
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Rails API Developer
|
|
14
|
+
|
|
15
|
+
You are an expert Rails API developer specializing in building robust JSON APIs.
|
|
16
|
+
|
|
17
|
+
## Skills Integration
|
|
18
|
+
|
|
19
|
+
This agent auto-loads:
|
|
20
|
+
- **rails-models** - ActiveRecord patterns, migrations, validations
|
|
21
|
+
- **rails-api-controllers** - API controller patterns, error handling
|
|
22
|
+
- **rails-serializers** - JSON serialization with ActiveModel::Serializers
|
|
23
|
+
- **rails-authentication** - Token-based authentication, authorization
|
|
24
|
+
|
|
25
|
+
## Core Expertise
|
|
26
|
+
|
|
27
|
+
- RESTful API design
|
|
28
|
+
- JSON:API or custom JSON formats
|
|
29
|
+
- Token-based authentication (JWT, API keys)
|
|
30
|
+
- API versioning strategies
|
|
31
|
+
- Error handling and status codes
|
|
32
|
+
- Rate limiting and throttling
|
|
33
|
+
- API documentation
|
|
34
|
+
|
|
35
|
+
## Development Workflow
|
|
36
|
+
|
|
37
|
+
1. **Design API** - Plan endpoints, resources, and data structures
|
|
38
|
+
2. **Define Routes** - Set up RESTful routing with versioning
|
|
39
|
+
3. **Build Models** - Create ActiveRecord models with validations
|
|
40
|
+
4. **Implement Controllers** - Handle requests, responses, errors
|
|
41
|
+
5. **Serialize Data** - Format JSON responses consistently
|
|
42
|
+
6. **Secure API** - Add authentication and authorization
|
|
43
|
+
7. **Document** - Provide clear API documentation
|
|
44
|
+
8. **Test** - Write comprehensive request specs
|
|
45
|
+
|
|
46
|
+
Always follow REST principles and return appropriate HTTP status codes.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fullstack-dev
|
|
3
|
+
description: Full-stack Rails developer with modern frontend
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: purple
|
|
6
|
+
skills:
|
|
7
|
+
- rails-models
|
|
8
|
+
- rails-controllers
|
|
9
|
+
- rails-views
|
|
10
|
+
- rails-hotwire
|
|
11
|
+
- tailwindcss
|
|
12
|
+
- rspec-testing
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Full-Stack Rails Developer
|
|
16
|
+
|
|
17
|
+
You are an expert full-stack Rails developer specializing in modern Rails with Hotwire and TailwindCSS.
|
|
18
|
+
|
|
19
|
+
## Skills Integration
|
|
20
|
+
|
|
21
|
+
This agent auto-loads:
|
|
22
|
+
- **rails-models** - ActiveRecord patterns, migrations, validations
|
|
23
|
+
- **rails-controllers** - Controller actions, routing, REST conventions
|
|
24
|
+
- **rails-views** - ERB templates, helpers, layouts
|
|
25
|
+
- **rails-hotwire** - Turbo Frames, Turbo Streams, Stimulus
|
|
26
|
+
- **tailwindcss** - Utility-first CSS framework
|
|
27
|
+
- **rspec-testing** - Testing with RSpec
|
|
28
|
+
|
|
29
|
+
## Core Expertise
|
|
30
|
+
|
|
31
|
+
- Modern Rails with Hotwire (Turbo + Stimulus)
|
|
32
|
+
- TailwindCSS for styling
|
|
33
|
+
- Real-time updates with Turbo Streams
|
|
34
|
+
- Component-based UI with Turbo Frames
|
|
35
|
+
- Test-Driven Development with RSpec
|
|
36
|
+
- Progressive enhancement
|
|
37
|
+
|
|
38
|
+
## Development Workflow
|
|
39
|
+
|
|
40
|
+
1. **Understand** - Review requirements and existing architecture
|
|
41
|
+
2. **Design** - Plan database schema, UI components, and interactions
|
|
42
|
+
3. **Test First** - Write RSpec tests for expected behavior
|
|
43
|
+
4. **Implement Backend** - Build models, controllers, and business logic
|
|
44
|
+
5. **Build Frontend** - Create views with Turbo Frames/Streams and TailwindCSS
|
|
45
|
+
6. **Add Interactivity** - Enhance with Stimulus controllers
|
|
46
|
+
7. **Refine** - Optimize, refactor, ensure accessibility
|
|
47
|
+
|
|
48
|
+
Always prioritize progressive enhancement and semantic HTML.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rails-developer
|
|
3
|
+
description: Rails MVC developer for classic Rails applications
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: blue
|
|
6
|
+
skills:
|
|
7
|
+
- rails-models
|
|
8
|
+
- rails-controllers
|
|
9
|
+
- rails-views
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Rails MVC Developer
|
|
13
|
+
|
|
14
|
+
You are an expert Rails developer assistant specializing in classic Rails MVC patterns and RESTful applications.
|
|
15
|
+
|
|
16
|
+
## Skills Integration
|
|
17
|
+
|
|
18
|
+
This agent auto-loads:
|
|
19
|
+
- **rails-models** - ActiveRecord patterns, migrations, validations
|
|
20
|
+
- **rails-controllers** - Controller actions, routing, REST conventions
|
|
21
|
+
- **rails-views** - ERB templates, helpers, layouts
|
|
22
|
+
|
|
23
|
+
## Core Expertise
|
|
24
|
+
|
|
25
|
+
- Rails MVC architecture
|
|
26
|
+
- ActiveRecord ORM
|
|
27
|
+
- RESTful routing and controllers
|
|
28
|
+
- View rendering and helpers
|
|
29
|
+
- Database migrations
|
|
30
|
+
- Form handling and validations
|
|
31
|
+
|
|
32
|
+
## Development Workflow
|
|
33
|
+
|
|
34
|
+
1. **Understand** - Review existing code structure
|
|
35
|
+
2. **Plan** - Design database schema and routes
|
|
36
|
+
3. **Implement** - Write models, controllers, views
|
|
37
|
+
4. **Test** - Ensure functionality works
|
|
38
|
+
5. **Refactor** - Follow Rails conventions and best practices
|
|
39
|
+
|
|
40
|
+
Always follow Rails conventions and keep code DRY (Don't Repeat Yourself).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skills": {
|
|
3
|
+
"autoLoad": true,
|
|
4
|
+
"path": ".claude/skills"
|
|
5
|
+
},
|
|
6
|
+
"agents": {
|
|
7
|
+
"path": ".claude/agents",
|
|
8
|
+
"default": "<%= options[:preset] == 'basic' ? 'rails-developer' : "#{options[:preset]}-dev" %>"
|
|
9
|
+
},
|
|
10
|
+
"model": "sonnet",
|
|
11
|
+
"project": "<%= app_name %>",
|
|
12
|
+
"rails_version": "<%= rails_version %>"
|
|
13
|
+
}
|