Class: Sharekit::Cli::Init

Inherits:
Object
  • Object
show all
Defined in:
lib/sharekit/cli/init.rb

Overview

Scaffolds a publishable sharekit profile: sharekit.toml, a claude/ CLAUDE.md, a cursor/.cursorrules, an empty shared/, and any requested skill directories — copied from the caller's own AI-tooling config, so the result becomes an install target for sharekit install <user>.

Defined Under Namespace

Classes: Result, SourceFile

Constant Summary collapse

STANDARD_FILES =
[
  SourceFile.new(source: [".claude", "CLAUDE.md"], dest: %w[claude CLAUDE.md],
                 placeholder: "# My AI coding instructions\n"),
  SourceFile.new(source: [".cursor", ".cursorrules"], dest: %w[cursor .cursorrules],
                 placeholder: "# Cursor IDE rules\n")
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(profile_dir:, skill_names:, source_root:, force:) ⇒ Init

Returns a new instance of Init.



19
20
21
22
23
24
25
26
# File 'lib/sharekit/cli/init.rb', line 19

def initialize(profile_dir:, skill_names:, source_root:, force:)
  @profile_dir = profile_dir
  @skill_names = skill_names
  @source_root = source_root
  @force = force
  @findings = []
  @created = []
end

Class Method Details

.call(profile_dir:, skill_names: [], source_root: ENV.fetch("HOME", Dir.pwd), force: false) ⇒ Object



15
16
17
# File 'lib/sharekit/cli/init.rb', line 15

def self.call(profile_dir:, skill_names: [], source_root: ENV.fetch("HOME", Dir.pwd), force: false)
  new(profile_dir:, skill_names:, source_root:, force:).call
end

Instance Method Details

#callObject



35
36
37
38
39
40
41
42
43
# File 'lib/sharekit/cli/init.rb', line 35

def call
  prepare_profile_dir
  write_manifest
  STANDARD_FILES.each { |file| scaffold(file) }
  scaffold_shared
  @skill_names.each { |name| scaffold_skill(name) }

  Result.new(profile_dir: @profile_dir, findings: @findings, created: @created)
end