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 +4 -4
- data/README.md +22 -119
- data/docs/demo-methods.gif +0 -0
- data/docs/demo-methods.tape +31 -0
- data/docs/demo.gif +0 -0
- data/docs/demo.tape +27 -0
- data/docs/presentation-methods.md +125 -0
- data/lib/slidict/version.rb +1 -1
- metadata +10 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d9219a4421ee2daa082652c0967bbc585fff8aadf8ba90becbee2d3293597252
|
|
4
|
+
data.tar.gz: e1d4fa02a468b3b51d28681168151983cf89464d1dfb9e309d3c8b2a5e56dbee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
+

|
|
12
|
+
|
|
13
|
+

|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
238
|
+
## Project resources
|
|
326
239
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
252
|
+
## License
|
|
346
253
|
|
|
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.
|
|
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.
|
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.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://
|
|
102
|
+
homepage: https://slidict.com
|
|
98
103
|
licenses:
|
|
99
104
|
- MIT
|
|
100
105
|
metadata:
|
|
101
|
-
homepage_uri: https://
|
|
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
|