slidict 0.5.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcb8c90bc5cd08ea0215119e5b04eb6fbe7e9ed44c8ee5f6d5ef2a7aaaa884de
4
- data.tar.gz: cef002ffa756fa6a30af65df47cd1c157ceb1187cc021b31ced01de41e73f2c1
3
+ metadata.gz: a3503f228ae40ed391b92b3d4c94b68fbfa85a70febbc9668d226fadbe8e02a1
4
+ data.tar.gz: 81bccfc1d02703a14eb3fa1bcc5a58cf722b0fd7bf1b1cd3de2eee1e4aa4040c
5
5
  SHA512:
6
- metadata.gz: fa541a9126446303bf5e4b8ef0e1cc852311e6d1d9d022db1446594e49e76a7a56fd379100c727296c70cdf09c2379b954cb057cdea63902716d1d153573d58f
7
- data.tar.gz: 9119b310faaa5442a01c716b79e804f9f5f9e90c2d9cd8cb06977905e9d976d45b915e2d1138775ddc36c8306c1528b96a8402e0e3045058d9c66d0c849da15d
6
+ metadata.gz: f2c22bf077b111d67e2b0680c093a8d48f00b6f977155683f4ebeb217b4edc8ad6562ae7f3740ebb906eaa9ff3acca62e8cba7dfba042ed409232c5dc72a77d0
7
+ data.tar.gz: 2878c9cb641a3b60d79be3c1849d27055e463b438dbf9bf59be39bea90a12224ec7c0fd0d2e15c5a9362bf379979f765cd2b064954856cb265de67dd8bdcac39
data/README.md CHANGED
@@ -215,137 +215,32 @@ Slides
215
215
 
216
216
  We optimize for communication, not decoration.
217
217
 
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
218
  ## Presentation methods
230
219
 
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.
220
+ Use `--method` to generate slides with a specific narrative structure, such as SCQA, PREP, or Pyramid Principle.
234
221
 
235
222
  ```bash
236
- bin/slidict new --method prep --topic "New onboarding flow"
237
223
  bin/slidict --method scqa --topic "Database migration plan"
238
- bin/slidict --method pyramid --topic "FY roadmap recommendation"
239
224
  bin/slidict list-methods
240
225
  bin/slidict show-method scqa
241
226
  ```
242
227
 
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`.
324
-
325
- Example plugin layout:
228
+ See [Presentation methods](docs/presentation-methods.md) for the YAML schema, plugin layout, and contribution workflow.
326
229
 
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.
230
+ ## Project resources
335
231
 
336
- ### Future localization
232
+ - [Presentation method guide](docs/presentation-methods.md)
233
+ - [Changelog](CHANGELOG.md)
234
+ - [Code of conduct](CODE_OF_CONDUCT.md)
235
+ - [License](LICENSE)
337
236
 
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.
237
+ ## Roadmap
342
238
 
343
- ### OSS contribution workflow
239
+ - [x] Interactive CLI
240
+ - [x] Slide generation
241
+ - [x] OpenAI Compatible API support (configurable base URL, so Ollama, LM Studio, and other compatible servers work out of the box)
242
+ - [x] Presentation structure linter (`slidict lint`)
344
243
 
345
- To propose a new presentation method:
244
+ ## License
346
245
 
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.
246
+ MIT
@@ -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.1"
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.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke Abe
@@ -75,6 +75,7 @@ files:
75
75
  - data/slidict/methods/prep.yml
76
76
  - data/slidict/methods/pyramid.yml
77
77
  - data/slidict/methods/scqa.yml
78
+ - docs/presentation-methods.md
78
79
  - lib/slidict.rb
79
80
  - lib/slidict/cli/app.rb
80
81
  - lib/slidict/cli/lint.rb
@@ -94,13 +95,13 @@ files:
94
95
  - lib/slidict/output/renderer.rb
95
96
  - lib/slidict/presentation_method.rb
96
97
  - lib/slidict/version.rb
97
- homepage: https://labs.slidict.io/slidict/
98
+ homepage: https://slidict.com
98
99
  licenses:
99
100
  - MIT
100
101
  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
102
+ homepage_uri: https://slidict.com
103
+ source_code_uri: https://github.com/slidict/slidict-cli
104
+ changelog_uri: https://github.com/slidict/slidict-cli/releases
104
105
  rdoc_options: []
105
106
  require_paths:
106
107
  - lib