Class: RailsSkills::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- RailsSkills::Generators::InstallGenerator
- Includes:
- SymlinkSupport
- Defined in:
- lib/generators/rails_skills/install/install_generator.rb
Instance Method Summary collapse
- #copy_claude_settings ⇒ Object
- #create_claude_directory ⇒ Object
- #create_codex_directory ⇒ Object
- #create_default_agent ⇒ Object
- #create_skills_directory ⇒ Object
- #create_skills_targets ⇒ Object
- #install_default_skills ⇒ Object
- #install_rules_and_commands ⇒ Object
- #link_skills ⇒ Object
- #show_instructions ⇒ Object
Instance Method Details
#copy_claude_settings ⇒ Object
45 46 47 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 45 def copy_claude_settings template "settings.local.json.tt", "#{RailsSkills::CLAUDE_DIR}/settings.local.json" end |
#create_claude_directory ⇒ Object
23 24 25 26 27 28 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 23 def create_claude_directory empty_directory RailsSkills::CLAUDE_DIR empty_directory "#{RailsSkills::CLAUDE_DIR}/commands" empty_directory "#{RailsSkills::CLAUDE_DIR}/rules" empty_directory "#{RailsSkills::CLAUDE_DIR}/agents" unless [:skip_agents] end |
#create_codex_directory ⇒ Object
30 31 32 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 30 def create_codex_directory empty_directory RailsSkills::CODEX_DIR end |
#create_default_agent ⇒ Object
85 86 87 88 89 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 85 def create_default_agent return if [:skip_agents] template "agents/rails-developer.md.tt", "#{RailsSkills::CLAUDE_DIR}/agents/rails-developer.md" end |
#create_skills_directory ⇒ Object
16 17 18 19 20 21 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 16 def create_skills_directory empty_directory RailsSkills::SKILLS_DIR RailsSkills::DEFAULT_CATEGORIES.each do |category| empty_directory "#{RailsSkills::SKILLS_DIR}/#{category}" end end |
#create_skills_targets ⇒ Object
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 34 def create_skills_targets RailsSkills::SKILL_TARGETS.each do |target| dest = File.join(destination_root, target) if File.symlink?(dest) File.delete(dest) say_status :remove, "#{target} (old symlink)", :yellow end empty_directory target end end |
#install_default_skills ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 49 def install_default_skills # services - empty with .keep install_skill_folder("services") # stack - rails, rails_skills skills install_skill("stack/rails") install_skill("stack/rails_skills") # workflows - commit skill install_skill("workflows/commit") end |
#install_rules_and_commands ⇒ Object
79 80 81 82 83 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 79 def install_rules_and_commands install_rule("code-style") install_rule("testing") install_command("quality") end |
#link_skills ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 61 def link_skills skills_root = File.join(destination_root, RailsSkills::SKILLS_DIR) return unless File.directory?(skills_root) Dir.children(skills_root).sort.each do |category| category_dir = File.join(skills_root, category) next unless File.directory?(category_dir) next if category.start_with?(".") Dir.children(category_dir).sort.each do |name| next unless File.directory?(File.join(category_dir, name)) next if name.start_with?(".") create_skill_symlink(name, "#{RailsSkills::SKILLS_DIR}/#{category}/#{name}") end end end |
#show_instructions ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/generators/rails_skills/install/install_generator.rb', line 91 def show_instructions say "" say "RailsSkills installed successfully!", :green say "" say "Directory structure:", :yellow say " skills/" say " services/ <- service-specific skills" say " stack/ <- technology stack skills (rails)" say " workflows/ <- workflow skills (commit)" RailsSkills::SKILL_TARGETS.each do |target| say " #{target}/" say " rails/ -> ../../skills/stack/rails" say " commit/ -> ../../skills/workflows/commit" say " rails_skills/ -> ../../skills/stack/rails_skills" end say "" say "Skills are flattened into #{RailsSkills::SKILL_TARGETS.join(' and ')}", :blue say "" say "Next steps:", :yellow say " rails g rails_skills:skill services/payments # Create a service skill" say " rails g rails_skills:skill stack/postgres # Create a stack skill" say " rails g rails_skills:skill workflows/deploy # Create a workflow skill" say " rails g rails_skills:skill my_folder/my_skill # Custom folders work too" say "" end |