slidict 0.6.2 → 0.7.0

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: 31c1ca403d68f971c84728e80c5aafda7af449fa5d7b9b7be6202c49472c615f
4
- data.tar.gz: 363578c6cfd6c0da50346204b124d10fa5779e7a0f73b262b0a3f1bd2854266c
3
+ metadata.gz: ab47129a915cbf21d2a573c0f1d3f9f9b654eb86a6a4226261a94fc44a60ba16
4
+ data.tar.gz: f0ab819d3077c1bfa36f268dc06939c7f02bd483649be86d360d5558a2dded34
5
5
  SHA512:
6
- metadata.gz: d58f207c65c0b1e0ea8d0e9369aa40dce69af3e54bcedb56b0932a1b77d32238152e15194bcadfba824442c1bf47550e381ecefde58dc3525838ac42a4ae35d4
7
- data.tar.gz: 41cb0a82175bdc62be2369dbe4ef65a3f0a9cf4716b6b0b044bbb8ca0a6aa2c767cf8b829a6f1a8704944b5fd1f5df610b1d3294a7478aa5dd5cd461290d459b
6
+ metadata.gz: 173dc71c06cf303b382fe7527ec27c8ddb61a9c3ced94563914fe2b56121af308b8d3f6290597800c32086d6ba6b51e8dc91dc1128a6776abf8358e0e1a113dc
7
+ data.tar.gz: e76f87bdd14452ce271dfa20cf5f8af65c5f82a3b687b53958d8e8a2cf45f022b79ba0ee2dd2dc753a02b1dcb44c4032bee8bfcebb2adbaf7512e77dcba7d68a
@@ -0,0 +1,22 @@
1
+ ## Summary
2
+
3
+ <!-- What does this PR change, and why? -->
4
+
5
+ ## Version bump
6
+
7
+ This repository follows [Semantic Versioning](https://semver.org/) (see `AGENTS.md`).
8
+ Every PR is expected to update `lib/slidict/version.rb`, and CI fails when it does not.
9
+
10
+ - [ ] <!-- skip-version-check --> This PR does not require a version bump
11
+
12
+ <!--
13
+ Leave the box above unchecked and bump `lib/slidict/version.rb` in this PR.
14
+ Check it only when no release is needed (docs-only, CI-only, test-only changes, etc.).
15
+ Keep the `skip-version-check` comment intact — the CI check looks for it.
16
+ -->
17
+
18
+ ## Checklist
19
+
20
+ - [ ] `bundle exec rspec` passes
21
+ - [ ] `bundle exec rubocop` passes
22
+ - [ ] `README.md` updated if user-facing behavior changed
@@ -0,0 +1,70 @@
1
+ name: Version Check
2
+
3
+ on:
4
+ pull_request:
5
+ types:
6
+ - opened
7
+ - reopened
8
+ - synchronize
9
+ - edited
10
+ - ready_for_review
11
+
12
+ permissions:
13
+ contents: read
14
+ pull-requests: read
15
+
16
+ jobs:
17
+ version-file:
18
+ name: Require version.rb update
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - name: Require version.rb update or an explicit skip
23
+ env:
24
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25
+ REPO: ${{ github.repository }}
26
+ PR_NUMBER: ${{ github.event.pull_request.number }}
27
+ PR_BODY: ${{ github.event.pull_request.body }}
28
+ PR_ACTOR: ${{ github.event.pull_request.user.login }}
29
+ VERSION_FILE: lib/slidict/version.rb
30
+ run: |
31
+ set -euo pipefail
32
+
33
+ # Dependency update PRs are opened by bots that cannot fill in the
34
+ # pull request template, so they are exempt from this check.
35
+ case "$PR_ACTOR" in
36
+ 'dependabot[bot]' | 'github-actions[bot]')
37
+ echo "::notice::Skipping version check for bot author '${PR_ACTOR}'."
38
+ exit 0
39
+ ;;
40
+ esac
41
+
42
+ # The pull request template ships a checkbox carrying the
43
+ # `skip-version-check` marker, unchecked by default.
44
+ if printf '%s\n' "${PR_BODY:-}" |
45
+ grep -qiE '^[[:space:]]*[-*+][[:space:]]+\[[[:space:]]*x[[:space:]]*\].*skip-version-check'; then
46
+ echo "::notice::'${VERSION_FILE}' is not required: the skip-version-check box is checked."
47
+ exit 0
48
+ fi
49
+
50
+ changed_files="$(gh api --paginate "repos/${REPO}/pulls/${PR_NUMBER}/files" --jq '.[].filename')"
51
+
52
+ if printf '%s\n' "$changed_files" | grep -qxF "$VERSION_FILE"; then
53
+ echo "::notice::'${VERSION_FILE}' is updated in this pull request."
54
+ exit 0
55
+ fi
56
+
57
+ echo "::error::'${VERSION_FILE}' is not updated in this pull request."
58
+ {
59
+ echo "### Version check failed"
60
+ echo
61
+ echo "This pull request does not update \`${VERSION_FILE}\`."
62
+ echo
63
+ echo "Do one of the following:"
64
+ echo
65
+ echo "- Bump \`VERSION\` in \`${VERSION_FILE}\` following [SemVer](https://semver.org/) (see \`AGENTS.md\`), or"
66
+ echo "- Check the \"This PR does not require a version bump\" box in the pull request description."
67
+ echo
68
+ echo "Editing the description re-runs this check automatically."
69
+ } >> "$GITHUB_STEP_SUMMARY"
70
+ exit 1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.7.0] - 2026-07-30
4
+
5
+ - Add built-in SDS, DESC, AIDMA, TAPS, and FABE presentation methods.
3
6
  - Add source-text slide generation through `--text`, `--text-file`, and the reusable
4
7
  `Slidict::Generator` integration API.
5
8
  - Add `slidict init` to create a `.env` file (for `SLIDICT_LLM_*`, `SLIDICT_FRAMEWORK`,
data/README.md CHANGED
@@ -299,10 +299,12 @@ We optimize for communication, not decoration.
299
299
 
300
300
  ## Presentation methods
301
301
 
302
- Use `--method` to generate slides with a specific narrative structure, such as SCQA, PREP, or Pyramid Principle.
302
+ Use `--method` to generate slides with a specific narrative structure. Built-in methods include SDS, PREP, DESC,
303
+ AIDMA, TAPS, FABE, SCQA, and Pyramid Principle.
303
304
 
304
305
  ```bash
305
306
  bin/slidict --method scqa --topic "Database migration plan"
307
+ bin/slidict --method aidma --topic "Product launch"
306
308
  bin/slidict list-methods
307
309
  bin/slidict show-method scqa
308
310
  ```
@@ -0,0 +1,35 @@
1
+ id: aidma
2
+ name: AIDMA
3
+ category: marketing
4
+ description: Attention, Interest, Desire, Memory, Action structure for guiding an audience from awareness to action.
5
+ locale: en
6
+ suitable_for:
7
+ - Marketing presentations
8
+ - Product and service pitches
9
+ - Campaign or launch proposals
10
+ slides:
11
+ - title: Attention
12
+ role: Capture attention with an audience-relevant hook.
13
+ instructions: Open with a striking fact, question, or situation connected to the audience's needs.
14
+ - title: Interest
15
+ role: Build interest by showing why the subject is relevant.
16
+ instructions: Connect the offer or idea to a recognizable problem, opportunity, or aspiration.
17
+ - title: Desire
18
+ role: Turn interest into a preference for the proposed solution.
19
+ instructions: Show concrete benefits and help the audience imagine the improved outcome.
20
+ - title: Memory
21
+ role: Make the key message easy to recall.
22
+ instructions: Reinforce one distinctive promise with memorable evidence, phrasing, or imagery.
23
+ - title: Action
24
+ role: Prompt the audience to take a clear next step.
25
+ instructions: State one specific action, remove ambiguity, and explain what happens next.
26
+ ai_instructions:
27
+ - Move through the AIDMA stages in order without asking for action too early.
28
+ - Frame benefits from the audience's point of view.
29
+ - Keep the memorable promise consistent with the evidence and call to action.
30
+ review_checklist:
31
+ - Does the opening earn the target audience's attention?
32
+ - Does interest develop into a concrete desire?
33
+ - Is the central promise distinctive and memorable?
34
+ - Is the requested action specific and easy to understand?
35
+ references: []
@@ -0,0 +1,32 @@
1
+ id: desc
2
+ name: DESC
3
+ category: assertive-communication
4
+ description: Describe, Express, Specify, Consequences structure for proposing a constructive change or resolving conflict.
5
+ locale: en
6
+ suitable_for:
7
+ - Feedback and difficult conversations
8
+ - Conflict resolution
9
+ - Requests for behavioral or process change
10
+ slides:
11
+ - title: Describe
12
+ role: Describe the situation or behavior objectively.
13
+ instructions: State observable facts without blame, assumptions, or judgment.
14
+ - title: Express
15
+ role: Explain the impact and the speaker's perspective or feelings.
16
+ instructions: Use specific first-person language to show why the situation matters.
17
+ - title: Specify
18
+ role: Request a concrete and achievable change.
19
+ instructions: Define the desired behavior, owner, and timing so the request is actionable.
20
+ - title: Consequences
21
+ role: Clarify the positive outcomes of the change and the implications of inaction.
22
+ instructions: Emphasize realistic benefits and consequences rather than threats.
23
+ ai_instructions:
24
+ - Separate observable facts from interpretations and emotions.
25
+ - Keep the tone respectful, direct, and solution-oriented.
26
+ - Make the requested change specific enough to act on.
27
+ review_checklist:
28
+ - Is the description factual and nonjudgmental?
29
+ - Is the impact expressed clearly from the speaker's perspective?
30
+ - Is the requested change concrete and achievable?
31
+ - Are the consequences realistic and constructive?
32
+ references: []
@@ -0,0 +1,32 @@
1
+ id: fabe
2
+ name: FABE
3
+ category: sales
4
+ description: Features, Advantages, Benefits, Evidence structure for connecting an offering's capabilities to credible customer value.
5
+ locale: en
6
+ suitable_for:
7
+ - Sales presentations
8
+ - Product demonstrations
9
+ - Solution comparisons
10
+ slides:
11
+ - title: Features
12
+ role: Introduce the relevant capabilities or attributes of the offering.
13
+ instructions: Select only features connected to the audience's needs and describe them precisely.
14
+ - title: Advantages
15
+ role: Explain how those features perform better or differently.
16
+ instructions: Compare the capabilities with the current approach or alternatives without unsupported claims.
17
+ - title: Benefits
18
+ role: Translate the advantages into outcomes the audience values.
19
+ instructions: State tangible functional or emotional value in the audience's terms.
20
+ - title: Evidence
21
+ role: Prove the promised benefits with credible support.
22
+ instructions: Use relevant data, demonstrations, testimonials, or case results and identify their context.
23
+ ai_instructions:
24
+ - Maintain a clear chain from each feature to its advantage, benefit, and evidence.
25
+ - Prioritize audience value over a long inventory of specifications.
26
+ - Avoid claims that the evidence does not substantiate.
27
+ review_checklist:
28
+ - Are the selected features relevant to the audience's needs?
29
+ - Are advantages differentiated clearly and fairly?
30
+ - Are benefits expressed as audience outcomes?
31
+ - Is every important claim supported by credible evidence?
32
+ references: []
@@ -0,0 +1,28 @@
1
+ id: sds
2
+ name: SDS
3
+ category: concise-communication
4
+ description: Summary, Details, Summary structure for communicating a message clearly and memorably.
5
+ locale: en
6
+ suitable_for:
7
+ - Short presentations and status updates
8
+ - Explanations that need a clear takeaway
9
+ - Messages for time-constrained audiences
10
+ slides:
11
+ - title: Summary
12
+ role: State the central message or conclusion at the outset.
13
+ instructions: Give the audience a concise overview of what they should understand or remember.
14
+ - title: Details
15
+ role: Support the opening summary with the essential facts, reasoning, or examples.
16
+ instructions: Present only the details needed to substantiate the central message, in a logical order.
17
+ - title: Summary Revisited
18
+ role: Reinforce the central message after the supporting detail.
19
+ instructions: Restate the takeaway in fresh, concise language and connect it to the desired response.
20
+ ai_instructions:
21
+ - Preserve the Summary, Details, Summary sequence.
22
+ - Keep the opening and closing summaries consistent while avoiding word-for-word repetition.
23
+ - Include only details that directly support the central message.
24
+ review_checklist:
25
+ - Is the central message clear in the opening summary?
26
+ - Do all details support that message?
27
+ - Does the closing summary reinforce the intended takeaway?
28
+ references: []
@@ -0,0 +1,32 @@
1
+ id: taps
2
+ name: TAPS
3
+ category: problem-solving
4
+ description: To Be, As Is, Problem, Solution structure for defining a desired state and the change needed to reach it.
5
+ locale: en
6
+ suitable_for:
7
+ - Improvement proposals
8
+ - Transformation roadmaps
9
+ - Problem-solving presentations
10
+ slides:
11
+ - title: To Be
12
+ role: Define the desired future state and its success criteria.
13
+ instructions: Describe a concrete, audience-relevant outcome rather than a vague aspiration.
14
+ - title: As Is
15
+ role: Establish the current state with objective evidence.
16
+ instructions: Show the present performance or behavior using facts that can be compared with the desired state.
17
+ - title: Problem
18
+ role: Identify the gap and the factors preventing progress.
19
+ instructions: Explain the most important root cause or barrier, not merely its symptoms.
20
+ - title: Solution
21
+ role: Present the actions that will close the gap.
22
+ instructions: Connect each proposed action to the identified problem and specify the immediate next step.
23
+ ai_instructions:
24
+ - Make the gap between To Be and As Is explicit and measurable where possible.
25
+ - Distinguish root causes from symptoms.
26
+ - Ensure the solution directly addresses the stated problem.
27
+ review_checklist:
28
+ - Is the desired state concrete and relevant?
29
+ - Is the current state supported by evidence?
30
+ - Does the problem explain the gap between the two states?
31
+ - Does the solution address the root cause and define a next step?
32
+ references: []
@@ -10,11 +10,13 @@ gem only loads, validates, and applies that data.
10
10
  bin/slidict new --method prep --topic "New onboarding flow"
11
11
  bin/slidict --method scqa --topic "Database migration plan"
12
12
  bin/slidict --method pyramid --topic "FY roadmap recommendation"
13
+ bin/slidict --method fabe --topic "Customer analytics platform"
13
14
  bin/slidict list-methods
14
15
  bin/slidict show-method scqa
15
16
  ```
16
17
 
17
- Built-in methods currently include SCQA, PREP, and Pyramid Principle.
18
+ Built-in methods currently include SDS, PREP, DESC, AIDMA, TAPS, FABE, SCQA,
19
+ and Pyramid Principle.
18
20
 
19
21
  ## Architecture
20
22
 
@@ -32,9 +34,14 @@ This keeps contribution review small: a new built-in method is usually one YAML
32
34
 
33
35
  ```text
34
36
  data/slidict/methods/
37
+ aidma.yml
38
+ desc.yml
39
+ fabe.yml
35
40
  prep.yml
36
41
  pyramid.yml
37
42
  scqa.yml
43
+ sds.yml
44
+ taps.yml
38
45
  lib/slidict/presentation_method.rb
39
46
  ```
40
47
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Slidict
4
- VERSION = "0.6.2"
4
+ VERSION = "0.7.0"
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.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke Abe
@@ -60,11 +60,13 @@ extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
62
  - ".github/dependabot.yml"
63
+ - ".github/pull_request_template.md"
63
64
  - ".github/release-drafter.yml"
64
65
  - ".github/workflows/bump-version.yml"
65
66
  - ".github/workflows/changelog.yml"
66
67
  - ".github/workflows/gem-push.yml"
67
68
  - ".github/workflows/test.yml"
69
+ - ".github/workflows/version-check.yml"
68
70
  - AGENTS.md
69
71
  - CHANGELOG.md
70
72
  - CODE_OF_CONDUCT.md
@@ -72,9 +74,14 @@ files:
72
74
  - LICENSE.txt
73
75
  - README.md
74
76
  - Rakefile
77
+ - data/slidict/methods/aidma.yml
78
+ - data/slidict/methods/desc.yml
79
+ - data/slidict/methods/fabe.yml
75
80
  - data/slidict/methods/prep.yml
76
81
  - data/slidict/methods/pyramid.yml
77
82
  - data/slidict/methods/scqa.yml
83
+ - data/slidict/methods/sds.yml
84
+ - data/slidict/methods/taps.yml
78
85
  - docs/demo-methods.gif
79
86
  - docs/demo-methods.tape
80
87
  - docs/demo.gif