slidict 0.5.0 → 0.5.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcb8c90bc5cd08ea0215119e5b04eb6fbe7e9ed44c8ee5f6d5ef2a7aaaa884de
4
- data.tar.gz: cef002ffa756fa6a30af65df47cd1c157ceb1187cc021b31ced01de41e73f2c1
3
+ metadata.gz: d9219a4421ee2daa082652c0967bbc585fff8aadf8ba90becbee2d3293597252
4
+ data.tar.gz: e1d4fa02a468b3b51d28681168151983cf89464d1dfb9e309d3c8b2a5e56dbee
5
5
  SHA512:
6
- metadata.gz: fa541a9126446303bf5e4b8ef0e1cc852311e6d1d9d022db1446594e49e76a7a56fd379100c727296c70cdf09c2379b954cb057cdea63902716d1d153573d58f
7
- data.tar.gz: 9119b310faaa5442a01c716b79e804f9f5f9e90c2d9cd8cb06977905e9d976d45b915e2d1138775ddc36c8306c1528b96a8402e0e3045058d9c66d0c849da15d
6
+ metadata.gz: b17f7f5c07ebb337c964e14a0884e2cd8502da2664cbe3d3f8553296596e3cbc40497c2b659fd494dd778effae1ce4c51b9b714266b6527fd2cbc9b233dd5fa9
7
+ data.tar.gz: 273809d25f6adf3551113f9bd2d7a7d664d3fb58a8e8bac1634dff46e4c41d0c873925537012c1b8c3f7f3e30af18a12b3a497a65835d83c1c4eebc8941d30b5
data/README.md CHANGED
@@ -6,6 +6,14 @@ Slidict is a CLI tool that helps you turn rough ideas into presentations through
6
6
 
7
7
  Unlike traditional slide generators, Slidict focuses on communication before slide creation.
8
8
 
9
+ ## Demo
10
+
11
+ ![Slidict conversation-to-slides demo](docs/demo.gif)
12
+
13
+ ![Slidict presentation methods demo](docs/demo-methods.gif)
14
+
15
+ [Read the walkthrough slides on slidict.io](https://slidict.io/slides/140)
16
+
9
17
  ## Features
10
18
 
11
19
  - Interactive CLI conversation
@@ -215,137 +223,32 @@ Slides
215
223
 
216
224
  We optimize for communication, not decoration.
217
225
 
218
- ## Roadmap
219
-
220
- - [x] Interactive CLI
221
- - [x] Slide generation
222
- - [x] OpenAI Compatible API support (configurable base URL, so Ollama, LM Studio, and other compatible servers work out of the box)
223
- - [x] Presentation structure linter (`slidict lint`)
224
-
225
- ## License
226
-
227
- MIT
228
-
229
226
  ## Presentation methods
230
227
 
231
- Slidict supports data-driven presentation methods. A method defines the narrative
232
- technique, slide roles, AI instructions, and review checklist in YAML, while the Ruby
233
- gem only loads, validates, and applies that data.
228
+ Use `--method` to generate slides with a specific narrative structure, such as SCQA, PREP, or Pyramid Principle.
234
229
 
235
230
  ```bash
236
- bin/slidict new --method prep --topic "New onboarding flow"
237
231
  bin/slidict --method scqa --topic "Database migration plan"
238
- bin/slidict --method pyramid --topic "FY roadmap recommendation"
239
232
  bin/slidict list-methods
240
233
  bin/slidict show-method scqa
241
234
  ```
242
235
 
243
- Built-in methods currently include SCQA, PREP, and Pyramid Principle.
244
-
245
- ### Method architecture
246
-
247
- The method system is intentionally data-first:
248
-
249
- 1. YAML files live in `data/slidict/methods/`.
250
- 2. `Slidict::PresentationMethodRegistry` discovers built-in files and plugin-provided files.
251
- 3. `Slidict::PresentationMethod` validates each YAML document and maps it to Ruby objects.
252
- 4. `Slidict::Deck` uses the method's slide roles as the built-in non-LLM outline.
253
- 5. `Slidict::Llm::Client` injects the method description, slide roles, and AI instructions into the generation prompt.
254
-
255
- This keeps contribution review small: a new built-in method is usually one YAML file and no Ruby code.
256
-
257
- ### Directory structure
258
-
259
- ```text
260
- data/slidict/methods/
261
- prep.yml
262
- pyramid.yml
263
- scqa.yml
264
- lib/slidict/presentation_method.rb
265
- ```
266
-
267
- For 100+ methods, keep one method per file and use stable lowercase IDs such as
268
- `scqa`, `prep`, `pyramid`, or `problem-solution`. Categories are free-form labels
269
- that can later drive filtering without changing the file layout.
270
-
271
- ### YAML schema
272
-
273
- Each method file is a single YAML mapping:
274
-
275
- ```yaml
276
- id: scqa
277
- name: SCQA
278
- category: narrative
279
- description: Situation, Complication, Question, Answer structure for building a clear business narrative.
280
- locale: en
281
- suitable_for:
282
- - Strategy updates
283
- - Problem-solving proposals
284
- slides:
285
- - title: Situation
286
- role: Establish the shared context the audience already recognizes.
287
- instructions: Describe the current state with concrete facts.
288
- ai_instructions:
289
- - Use the SCQA sequence exactly.
290
- review_checklist:
291
- - Does the situation establish common ground?
292
- references:
293
- - title: The Pyramid Principle
294
- author: Barbara Minto
295
- ```
296
-
297
- Required fields are `id`, `name`, `category`, `description`, `suitable_for`,
298
- `slides`, `ai_instructions`, and `review_checklist`. `references` and `locale` are
299
- optional; `locale` defaults to `en`. Every slide entry requires `title`, `role`, and
300
- `instructions`.
301
-
302
- ### Ruby class design
303
-
304
- - `Slidict::PresentationMethod` represents one method definition.
305
- - `Slidict::MethodSlide` represents each slide role.
306
- - `Slidict::PresentationMethodRegistry` loads built-in YAML files and plugin YAML files.
307
- - `Slidict::Deck` accepts an optional `presentation_method` and turns method slide roles into a local template when `--no-llm` is used or no LLM is configured.
308
-
309
- Validation happens at load time with `YAML.safe_load_file`. Slidict checks required
310
- fields, requires lowercase method IDs (`a-z`, `0-9`, and `-`), and verifies that each
311
- slide role has the required fields.
312
-
313
- ### CLI design
314
-
315
- - `--method ID` applies a method to generated slides.
316
- - `list-methods` prints every discovered method.
317
- - `show-method ID` prints a method's description, use cases, slide roles, and review checklist.
318
-
319
- ### Plugin design
320
-
321
- External gems can distribute methods without changing Slidict itself. A plugin gem only
322
- needs to place YAML files under `lib/slidict/methods/*.yml` so RubyGems can expose them
323
- through `Gem.find_files`.
236
+ See [Presentation methods](docs/presentation-methods.md) for the YAML schema, plugin layout, and contribution workflow.
324
237
 
325
- Example plugin layout:
238
+ ## Project resources
326
239
 
327
- ```text
328
- slidict-methods-product/
329
- lib/slidict/methods/product-demo.yml
330
- slidict-methods-product.gemspec
331
- ```
332
-
333
- After the plugin gem is installed, Slidict automatically includes those YAML files in
334
- `list-methods`, `show-method`, and `--method` lookup.
240
+ - [Presentation method guide](docs/presentation-methods.md)
241
+ - [Changelog](CHANGELOG.md)
242
+ - [Code of conduct](CODE_OF_CONDUCT.md)
243
+ - [License](LICENSE)
335
244
 
336
- ### Future localization
337
-
338
- Method files include a `locale` field. The recommended future shape is one file per
339
- localized method, for example `scqa.en.yml` and `scqa.ja.yml`, with the same method ID
340
- plus locale-aware lookup. Keeping all user-facing text in YAML means translations can be
341
- reviewed independently from Ruby changes.
245
+ ## Roadmap
342
246
 
343
- ### OSS contribution workflow
247
+ - [x] Interactive CLI
248
+ - [x] Slide generation
249
+ - [x] OpenAI Compatible API support (configurable base URL, so Ollama, LM Studio, and other compatible servers work out of the box)
250
+ - [x] Presentation structure linter (`slidict lint`)
344
251
 
345
- To propose a new presentation method:
252
+ ## License
346
253
 
347
- 1. Copy an existing YAML file in `data/slidict/methods/`.
348
- 2. Change `id`, `name`, `category`, `description`, `suitable_for`, `slides`, `ai_instructions`, and `review_checklist`.
349
- 3. Add `references` when useful.
350
- 4. Run `bundle exec rspec` and `bundle exec rubocop`.
351
- 5. Open a PR with the method file and a short explanation of the communication technique.
254
+ MIT
Binary file
@@ -0,0 +1,31 @@
1
+ Output docs/demo-methods.gif
2
+
3
+ Set Shell "bash"
4
+ Set FontSize 18
5
+ Set Width 1000
6
+ Set Height 600
7
+ Set Theme "Dracula"
8
+
9
+ Type "bin/slidict list-methods"
10
+ Enter
11
+ Sleep 2s
12
+
13
+ Type "bin/slidict --method scqa --framework marp"
14
+ Enter
15
+ Sleep 1s
16
+
17
+ Type "Database migration plan"
18
+ Enter
19
+ Sleep 800ms
20
+
21
+ Type "10 minutes"
22
+ Enter
23
+ Sleep 800ms
24
+
25
+ Type "Engineering leadership"
26
+ Enter
27
+ Sleep 800ms
28
+
29
+ Type "Approve the migration timeline"
30
+ Enter
31
+ Sleep 2s
data/docs/demo.gif ADDED
Binary file
data/docs/demo.tape ADDED
@@ -0,0 +1,27 @@
1
+ Output docs/demo.gif
2
+
3
+ Set Shell "bash"
4
+ Set FontSize 18
5
+ Set Width 1000
6
+ Set Height 600
7
+ Set Theme "Dracula"
8
+
9
+ Type "bin/slidict --framework marp"
10
+ Enter
11
+ Sleep 1s
12
+
13
+ Type "PDF Difference Monitoring Service"
14
+ Enter
15
+ Sleep 800ms
16
+
17
+ Type "5 minutes"
18
+ Enter
19
+ Sleep 800ms
20
+
21
+ Type "Engineering managers"
22
+ Enter
23
+ Sleep 800ms
24
+
25
+ Type "Approve an MVP pilot"
26
+ Enter
27
+ Sleep 2s
@@ -0,0 +1,125 @@
1
+ # Presentation methods
2
+
3
+ Slidict supports data-driven presentation methods. A method defines the narrative
4
+ technique, slide roles, AI instructions, and review checklist in YAML, while the Ruby
5
+ gem only loads, validates, and applies that data.
6
+
7
+ ## Using methods
8
+
9
+ ```bash
10
+ bin/slidict new --method prep --topic "New onboarding flow"
11
+ bin/slidict --method scqa --topic "Database migration plan"
12
+ bin/slidict --method pyramid --topic "FY roadmap recommendation"
13
+ bin/slidict list-methods
14
+ bin/slidict show-method scqa
15
+ ```
16
+
17
+ Built-in methods currently include SCQA, PREP, and Pyramid Principle.
18
+
19
+ ## Architecture
20
+
21
+ The method system is intentionally data-first:
22
+
23
+ 1. YAML files live in `data/slidict/methods/`.
24
+ 2. `Slidict::PresentationMethodRegistry` discovers built-in files and plugin-provided files.
25
+ 3. `Slidict::PresentationMethod` validates each YAML document and maps it to Ruby objects.
26
+ 4. `Slidict::Deck` uses the method's slide roles as the built-in non-LLM outline.
27
+ 5. `Slidict::Llm::Client` injects the method description, slide roles, and AI instructions into the generation prompt.
28
+
29
+ This keeps contribution review small: a new built-in method is usually one YAML file and no Ruby code.
30
+
31
+ ## Directory structure
32
+
33
+ ```text
34
+ data/slidict/methods/
35
+ prep.yml
36
+ pyramid.yml
37
+ scqa.yml
38
+ lib/slidict/presentation_method.rb
39
+ ```
40
+
41
+ For 100+ methods, keep one method per file and use stable lowercase IDs such as
42
+ `scqa`, `prep`, `pyramid`, or `problem-solution`. Categories are free-form labels
43
+ that can later drive filtering without changing the file layout.
44
+
45
+ ## YAML schema
46
+
47
+ Each method file is a single YAML mapping:
48
+
49
+ ```yaml
50
+ id: scqa
51
+ name: SCQA
52
+ category: narrative
53
+ description: Situation, Complication, Question, Answer structure for building a clear business narrative.
54
+ locale: en
55
+ suitable_for:
56
+ - Strategy updates
57
+ - Problem-solving proposals
58
+ slides:
59
+ - title: Situation
60
+ role: Establish the shared context the audience already recognizes.
61
+ instructions: Describe the current state with concrete facts.
62
+ ai_instructions:
63
+ - Use the SCQA sequence exactly.
64
+ review_checklist:
65
+ - Does the situation establish common ground?
66
+ references:
67
+ - title: The Pyramid Principle
68
+ author: Barbara Minto
69
+ ```
70
+
71
+ Required fields are `id`, `name`, `category`, `description`, `suitable_for`,
72
+ `slides`, `ai_instructions`, and `review_checklist`. `references` and `locale` are
73
+ optional; `locale` defaults to `en`. Every slide entry requires `title`, `role`, and
74
+ `instructions`.
75
+
76
+ ## Ruby class design
77
+
78
+ - `Slidict::PresentationMethod` represents one method definition.
79
+ - `Slidict::MethodSlide` represents each slide role.
80
+ - `Slidict::PresentationMethodRegistry` loads built-in YAML files and plugin YAML files.
81
+ - `Slidict::Deck` accepts an optional `presentation_method` and turns method slide roles into a local template when `--no-llm` is used or no LLM is configured.
82
+
83
+ Validation happens at load time with `YAML.safe_load_file`. Slidict checks required
84
+ fields, requires lowercase method IDs (`a-z`, `0-9`, and `-`), and verifies that each
85
+ slide role has the required fields.
86
+
87
+ ## CLI design
88
+
89
+ - `--method ID` applies a method to generated slides.
90
+ - `list-methods` prints every discovered method.
91
+ - `show-method ID` prints a method's description, use cases, slide roles, and review checklist.
92
+
93
+ ## Plugin design
94
+
95
+ External gems can distribute methods without changing Slidict itself. A plugin gem only
96
+ needs to place YAML files under `lib/slidict/methods/*.yml` so RubyGems can expose them
97
+ through `Gem.find_files`.
98
+
99
+ Example plugin layout:
100
+
101
+ ```text
102
+ slidict-methods-product/
103
+ lib/slidict/methods/product-demo.yml
104
+ slidict-methods-product.gemspec
105
+ ```
106
+
107
+ After the plugin gem is installed, Slidict automatically includes those YAML files in
108
+ `list-methods`, `show-method`, and `--method` lookup.
109
+
110
+ ## Future localization
111
+
112
+ Method files include a `locale` field. The recommended future shape is one file per
113
+ localized method, for example `scqa.en.yml` and `scqa.ja.yml`, with the same method ID
114
+ plus locale-aware lookup. Keeping all user-facing text in YAML means translations can be
115
+ reviewed independently from Ruby changes.
116
+
117
+ ## OSS contribution workflow
118
+
119
+ To propose a new presentation method:
120
+
121
+ 1. Copy an existing YAML file in `data/slidict/methods/`.
122
+ 2. Change `id`, `name`, `category`, `description`, `suitable_for`, `slides`, `ai_instructions`, and `review_checklist`.
123
+ 3. Add `references` when useful.
124
+ 4. Run `bundle exec rspec` and `bundle exec rubocop`.
125
+ 5. Open a PR with the method file and a short explanation of the communication technique.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Slidict
4
- VERSION = "0.5.0"
4
+ VERSION = "0.5.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slidict
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke Abe
@@ -75,6 +75,11 @@ files:
75
75
  - data/slidict/methods/prep.yml
76
76
  - data/slidict/methods/pyramid.yml
77
77
  - data/slidict/methods/scqa.yml
78
+ - docs/demo-methods.gif
79
+ - docs/demo-methods.tape
80
+ - docs/demo.gif
81
+ - docs/demo.tape
82
+ - docs/presentation-methods.md
78
83
  - lib/slidict.rb
79
84
  - lib/slidict/cli/app.rb
80
85
  - lib/slidict/cli/lint.rb
@@ -94,13 +99,13 @@ files:
94
99
  - lib/slidict/output/renderer.rb
95
100
  - lib/slidict/presentation_method.rb
96
101
  - lib/slidict/version.rb
97
- homepage: https://labs.slidict.io/slidict/
102
+ homepage: https://slidict.com
98
103
  licenses:
99
104
  - MIT
100
105
  metadata:
101
- homepage_uri: https://labs.slidict.io/slidict/
102
- source_code_uri: https://github.com/slidict/slidict
103
- changelog_uri: https://github.com/slidict/slidict/releases
106
+ homepage_uri: https://slidict.com
107
+ source_code_uri: https://github.com/slidict/slidict-cli
108
+ changelog_uri: https://github.com/slidict/slidict-cli/releases
104
109
  rdoc_options: []
105
110
  require_paths:
106
111
  - lib