lex-skill-superpowers 0.1.0 → 0.1.1
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 +4 -4
- data/lib/legion/extensions/skill/superpowers/skills/brainstorming.rb +67 -0
- data/lib/legion/extensions/skill/superpowers/skills/executing_plans.rb +34 -0
- data/lib/legion/extensions/skill/superpowers/skills/systematic_debugging.rb +34 -0
- data/lib/legion/extensions/skill/superpowers/skills/test_driven_development.rb +34 -0
- data/lib/legion/extensions/skill/superpowers/skills/writing_plans.rb +34 -0
- data/lib/legion/extensions/skill/superpowers/version.rb +11 -0
- data/lib/{lex → legion/extensions}/skill/superpowers.rb +10 -8
- metadata +8 -8
- data/lib/lex/skill/superpowers/skills/brainstorming.rb +0 -65
- data/lib/lex/skill/superpowers/skills/executing_plans.rb +0 -32
- data/lib/lex/skill/superpowers/skills/systematic_debugging.rb +0 -32
- data/lib/lex/skill/superpowers/skills/test_driven_development.rb +0 -32
- data/lib/lex/skill/superpowers/skills/writing_plans.rb +0 -32
- data/lib/lex/skill/superpowers/version.rb +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2692818209576c80a8497fe1ea1d15d8f908dffa508638f31ec8ca626a9638fe
|
|
4
|
+
data.tar.gz: ec387a9ea02ec85f443e7b776cee51781c544dc692a52f87b858b15913cb4797
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 28d48d81223fde8d83c2e35be720b86e85f13a203239ee8b26e6aecbbfc645597cc2519557fa5d5d61aa45ffc3e7b7d3a03d62e7266771d1f823de117530dc40
|
|
7
|
+
data.tar.gz: 5a32cef512b36a7d638098ad1609dde71fc54167926634d437ac5043c0823494e6c9bf4f16b4606f120c47b0e727b58e34a348d7d8e8d7f7d683df5248570d57
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Skill
|
|
6
|
+
module Superpowers
|
|
7
|
+
module Skills
|
|
8
|
+
class Brainstorming < Legion::LLM::Skills::Base
|
|
9
|
+
skill_name 'brainstorming'
|
|
10
|
+
namespace 'superpowers'
|
|
11
|
+
description 'Collaborative design brainstorming — turns ideas into specs'
|
|
12
|
+
trigger_words 'brainstorm', 'design', 'idea', 'spec'
|
|
13
|
+
|
|
14
|
+
def explore_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
15
|
+
Legion::LLM::Skills::StepResult.new(
|
|
16
|
+
inject: self.class.content,
|
|
17
|
+
gate: nil,
|
|
18
|
+
metadata: { step: 'explore_context' }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def clarify_requirements(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
23
|
+
Legion::LLM::Skills::StepResult.new(
|
|
24
|
+
inject: nil,
|
|
25
|
+
gate: { type: :user_input, prompt: 'What would you like to build?' },
|
|
26
|
+
metadata: { step: 'clarify_requirements' }
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def propose_approaches(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
31
|
+
Legion::LLM::Skills::StepResult.new(
|
|
32
|
+
inject: nil,
|
|
33
|
+
gate: { type: :user_input, prompt: 'Review the approaches above and choose one.' },
|
|
34
|
+
metadata: { step: 'propose_approaches' }
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def present_design(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
39
|
+
Legion::LLM::Skills::StepResult.new(
|
|
40
|
+
inject: nil,
|
|
41
|
+
gate: { type: :user_input, prompt: 'Does this design look correct?' },
|
|
42
|
+
metadata: { step: 'present_design' }
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def write_spec(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
47
|
+
Legion::LLM::Skills::StepResult.new(
|
|
48
|
+
inject: nil,
|
|
49
|
+
gate: nil,
|
|
50
|
+
metadata: { step: 'write_spec', complete: true }
|
|
51
|
+
)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
steps :explore_context, :clarify_requirements, :propose_approaches,
|
|
55
|
+
:present_design, :write_spec
|
|
56
|
+
|
|
57
|
+
class << self
|
|
58
|
+
def content_path
|
|
59
|
+
::File.expand_path('../../../../../../content/brainstorming/SKILL.md', __dir__)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Skill
|
|
6
|
+
module Superpowers
|
|
7
|
+
module Skills
|
|
8
|
+
class ExecutingPlans < Legion::LLM::Skills::Base
|
|
9
|
+
skill_name 'executing_plans'
|
|
10
|
+
namespace 'superpowers'
|
|
11
|
+
description 'Execute an implementation plan task-by-task with checkpoint tracking'
|
|
12
|
+
trigger_words 'execute plan', 'run plan', 'implement plan'
|
|
13
|
+
|
|
14
|
+
def inject_execution_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
15
|
+
Legion::LLM::Skills::StepResult.new(
|
|
16
|
+
inject: self.class.content,
|
|
17
|
+
gate: nil,
|
|
18
|
+
metadata: { step: 'inject_execution_context' }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
steps :inject_execution_context
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
def content_path
|
|
26
|
+
::File.expand_path('../../../../../../content/executing_plans/SKILL.md', __dir__)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Skill
|
|
6
|
+
module Superpowers
|
|
7
|
+
module Skills
|
|
8
|
+
class SystematicDebugging < Legion::LLM::Skills::Base
|
|
9
|
+
skill_name 'systematic_debugging'
|
|
10
|
+
namespace 'superpowers'
|
|
11
|
+
description 'Diagnose-first debugging: reproduce, hypothesize, probe, fix'
|
|
12
|
+
trigger_words 'debug', 'diagnose', 'fix bug', 'root cause'
|
|
13
|
+
|
|
14
|
+
def inject_debugging_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
15
|
+
Legion::LLM::Skills::StepResult.new(
|
|
16
|
+
inject: self.class.content,
|
|
17
|
+
gate: nil,
|
|
18
|
+
metadata: { step: 'inject_debugging_context' }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
steps :inject_debugging_context
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
def content_path
|
|
26
|
+
::File.expand_path('../../../../../../content/systematic_debugging/SKILL.md', __dir__)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Skill
|
|
6
|
+
module Superpowers
|
|
7
|
+
module Skills
|
|
8
|
+
class TestDrivenDevelopment < Legion::LLM::Skills::Base
|
|
9
|
+
skill_name 'test_driven_development'
|
|
10
|
+
namespace 'superpowers'
|
|
11
|
+
description 'Red-green-refactor TDD cycle for feature implementation'
|
|
12
|
+
trigger_words 'tdd', 'test-driven', 'write tests', 'implement with tests'
|
|
13
|
+
|
|
14
|
+
def inject_tdd_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
15
|
+
Legion::LLM::Skills::StepResult.new(
|
|
16
|
+
inject: self.class.content,
|
|
17
|
+
gate: nil,
|
|
18
|
+
metadata: { step: 'inject_tdd_context' }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
steps :inject_tdd_context
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
def content_path
|
|
26
|
+
::File.expand_path('../../../../../../content/test_driven_development/SKILL.md', __dir__)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Skill
|
|
6
|
+
module Superpowers
|
|
7
|
+
module Skills
|
|
8
|
+
class WritingPlans < Legion::LLM::Skills::Base
|
|
9
|
+
skill_name 'writing_plans'
|
|
10
|
+
namespace 'superpowers'
|
|
11
|
+
description 'Write bite-sized TDD implementation plans for agentic execution'
|
|
12
|
+
trigger_words 'write plan', 'implementation plan', 'create plan'
|
|
13
|
+
|
|
14
|
+
def inject_planning_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
15
|
+
Legion::LLM::Skills::StepResult.new(
|
|
16
|
+
inject: self.class.content,
|
|
17
|
+
gate: nil,
|
|
18
|
+
metadata: { step: 'inject_planning_context' }
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
steps :inject_planning_context
|
|
23
|
+
|
|
24
|
+
class << self
|
|
25
|
+
def content_path
|
|
26
|
+
::File.expand_path('../../../../../../content/writing_plans/SKILL.md', __dir__)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -7,15 +7,17 @@ require_relative 'superpowers/skills/systematic_debugging'
|
|
|
7
7
|
require_relative 'superpowers/skills/writing_plans'
|
|
8
8
|
require_relative 'superpowers/skills/executing_plans'
|
|
9
9
|
|
|
10
|
-
module
|
|
11
|
-
module
|
|
12
|
-
module
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
module Legion
|
|
11
|
+
module Extensions
|
|
12
|
+
module Skill
|
|
13
|
+
module Superpowers
|
|
14
|
+
def self.runner_modules
|
|
15
|
+
[]
|
|
16
|
+
end
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
def self.skills_required?
|
|
19
|
+
true
|
|
20
|
+
end
|
|
19
21
|
end
|
|
20
22
|
end
|
|
21
23
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-skill-superpowers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matthew Iverson
|
|
@@ -60,13 +60,13 @@ files:
|
|
|
60
60
|
- content/systematic_debugging/SKILL.md
|
|
61
61
|
- content/test_driven_development/SKILL.md
|
|
62
62
|
- content/writing_plans/SKILL.md
|
|
63
|
-
- lib/
|
|
64
|
-
- lib/
|
|
65
|
-
- lib/
|
|
66
|
-
- lib/
|
|
67
|
-
- lib/
|
|
68
|
-
- lib/
|
|
69
|
-
- lib/
|
|
63
|
+
- lib/legion/extensions/skill/superpowers.rb
|
|
64
|
+
- lib/legion/extensions/skill/superpowers/skills/brainstorming.rb
|
|
65
|
+
- lib/legion/extensions/skill/superpowers/skills/executing_plans.rb
|
|
66
|
+
- lib/legion/extensions/skill/superpowers/skills/systematic_debugging.rb
|
|
67
|
+
- lib/legion/extensions/skill/superpowers/skills/test_driven_development.rb
|
|
68
|
+
- lib/legion/extensions/skill/superpowers/skills/writing_plans.rb
|
|
69
|
+
- lib/legion/extensions/skill/superpowers/version.rb
|
|
70
70
|
licenses:
|
|
71
71
|
- Apache-2.0
|
|
72
72
|
metadata:
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lex
|
|
4
|
-
module Skill
|
|
5
|
-
module Superpowers
|
|
6
|
-
module Skills
|
|
7
|
-
class Brainstorming < Legion::LLM::Skills::Base
|
|
8
|
-
skill_name 'brainstorming'
|
|
9
|
-
namespace 'superpowers'
|
|
10
|
-
description 'Collaborative design brainstorming — turns ideas into specs'
|
|
11
|
-
trigger_words 'brainstorm', 'design', 'idea', 'spec'
|
|
12
|
-
|
|
13
|
-
def explore_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
14
|
-
Legion::LLM::Skills::StepResult.new(
|
|
15
|
-
inject: self.class.content,
|
|
16
|
-
gate: nil,
|
|
17
|
-
metadata: { step: 'explore_context' }
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def clarify_requirements(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
22
|
-
Legion::LLM::Skills::StepResult.new(
|
|
23
|
-
inject: nil,
|
|
24
|
-
gate: { type: :user_input, prompt: 'What would you like to build?' },
|
|
25
|
-
metadata: { step: 'clarify_requirements' }
|
|
26
|
-
)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def propose_approaches(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
30
|
-
Legion::LLM::Skills::StepResult.new(
|
|
31
|
-
inject: nil,
|
|
32
|
-
gate: { type: :user_input, prompt: 'Review the approaches above and choose one.' },
|
|
33
|
-
metadata: { step: 'propose_approaches' }
|
|
34
|
-
)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def present_design(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
38
|
-
Legion::LLM::Skills::StepResult.new(
|
|
39
|
-
inject: nil,
|
|
40
|
-
gate: { type: :user_input, prompt: 'Does this design look correct?' },
|
|
41
|
-
metadata: { step: 'present_design' }
|
|
42
|
-
)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def write_spec(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
46
|
-
Legion::LLM::Skills::StepResult.new(
|
|
47
|
-
inject: nil,
|
|
48
|
-
gate: nil,
|
|
49
|
-
metadata: { step: 'write_spec', complete: true }
|
|
50
|
-
)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
steps :explore_context, :clarify_requirements, :propose_approaches,
|
|
54
|
-
:present_design, :write_spec
|
|
55
|
-
|
|
56
|
-
class << self
|
|
57
|
-
def content_path
|
|
58
|
-
::File.expand_path('../../../../../../../content/brainstorming/SKILL.md', __dir__)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lex
|
|
4
|
-
module Skill
|
|
5
|
-
module Superpowers
|
|
6
|
-
module Skills
|
|
7
|
-
class ExecutingPlans < Legion::LLM::Skills::Base
|
|
8
|
-
skill_name 'executing_plans'
|
|
9
|
-
namespace 'superpowers'
|
|
10
|
-
description 'Execute an implementation plan task-by-task with checkpoint tracking'
|
|
11
|
-
trigger_words 'execute plan', 'run plan', 'implement plan'
|
|
12
|
-
|
|
13
|
-
def inject_execution_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
14
|
-
Legion::LLM::Skills::StepResult.new(
|
|
15
|
-
inject: self.class.content,
|
|
16
|
-
gate: nil,
|
|
17
|
-
metadata: { step: 'inject_execution_context' }
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
steps :inject_execution_context
|
|
22
|
-
|
|
23
|
-
class << self
|
|
24
|
-
def content_path
|
|
25
|
-
::File.expand_path('../../../../../../../content/executing_plans/SKILL.md', __dir__)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lex
|
|
4
|
-
module Skill
|
|
5
|
-
module Superpowers
|
|
6
|
-
module Skills
|
|
7
|
-
class SystematicDebugging < Legion::LLM::Skills::Base
|
|
8
|
-
skill_name 'systematic_debugging'
|
|
9
|
-
namespace 'superpowers'
|
|
10
|
-
description 'Diagnose-first debugging: reproduce, hypothesize, probe, fix'
|
|
11
|
-
trigger_words 'debug', 'diagnose', 'fix bug', 'root cause'
|
|
12
|
-
|
|
13
|
-
def inject_debugging_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
14
|
-
Legion::LLM::Skills::StepResult.new(
|
|
15
|
-
inject: self.class.content,
|
|
16
|
-
gate: nil,
|
|
17
|
-
metadata: { step: 'inject_debugging_context' }
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
steps :inject_debugging_context
|
|
22
|
-
|
|
23
|
-
class << self
|
|
24
|
-
def content_path
|
|
25
|
-
::File.expand_path('../../../../../../../content/systematic_debugging/SKILL.md', __dir__)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lex
|
|
4
|
-
module Skill
|
|
5
|
-
module Superpowers
|
|
6
|
-
module Skills
|
|
7
|
-
class TestDrivenDevelopment < Legion::LLM::Skills::Base
|
|
8
|
-
skill_name 'test_driven_development'
|
|
9
|
-
namespace 'superpowers'
|
|
10
|
-
description 'Red-green-refactor TDD cycle for feature implementation'
|
|
11
|
-
trigger_words 'tdd', 'test-driven', 'write tests', 'implement with tests'
|
|
12
|
-
|
|
13
|
-
def inject_tdd_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
14
|
-
Legion::LLM::Skills::StepResult.new(
|
|
15
|
-
inject: self.class.content,
|
|
16
|
-
gate: nil,
|
|
17
|
-
metadata: { step: 'inject_tdd_context' }
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
steps :inject_tdd_context
|
|
22
|
-
|
|
23
|
-
class << self
|
|
24
|
-
def content_path
|
|
25
|
-
::File.expand_path('../../../../../../../content/test_driven_development/SKILL.md', __dir__)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Lex
|
|
4
|
-
module Skill
|
|
5
|
-
module Superpowers
|
|
6
|
-
module Skills
|
|
7
|
-
class WritingPlans < Legion::LLM::Skills::Base
|
|
8
|
-
skill_name 'writing_plans'
|
|
9
|
-
namespace 'superpowers'
|
|
10
|
-
description 'Write bite-sized TDD implementation plans for agentic execution'
|
|
11
|
-
trigger_words 'write plan', 'implementation plan', 'create plan'
|
|
12
|
-
|
|
13
|
-
def inject_planning_context(context: {}) # rubocop:disable Lint/UnusedMethodArgument
|
|
14
|
-
Legion::LLM::Skills::StepResult.new(
|
|
15
|
-
inject: self.class.content,
|
|
16
|
-
gate: nil,
|
|
17
|
-
metadata: { step: 'inject_planning_context' }
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
steps :inject_planning_context
|
|
22
|
-
|
|
23
|
-
class << self
|
|
24
|
-
def content_path
|
|
25
|
-
::File.expand_path('../../../../../../../content/writing_plans/SKILL.md', __dir__)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|