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 +4 -4
- data/README.md +14 -119
- data/docs/presentation-methods.md +125 -0
- data/lib/slidict/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a3503f228ae40ed391b92b3d4c94b68fbfa85a70febbc9668d226fadbe8e02a1
|
|
4
|
+
data.tar.gz: 81bccfc1d02703a14eb3fa1bcc5a58cf722b0fd7bf1b1cd3de2eee1e4aa4040c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
244
|
+
## License
|
|
346
245
|
|
|
347
|
-
|
|
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.
|
data/lib/slidict/version.rb
CHANGED
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.
|
|
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://
|
|
98
|
+
homepage: https://slidict.com
|
|
98
99
|
licenses:
|
|
99
100
|
- MIT
|
|
100
101
|
metadata:
|
|
101
|
-
homepage_uri: https://
|
|
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
|