synthkit 0.2.0__tar.gz → 0.4.0__tar.gz

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.
Files changed (25) hide show
  1. {synthkit-0.2.0 → synthkit-0.4.0}/.claude-plugin/plugin.json +2 -2
  2. {synthkit-0.2.0 → synthkit-0.4.0}/PKG-INFO +94 -25
  3. synthkit-0.4.0/README.md +250 -0
  4. {synthkit-0.2.0 → synthkit-0.4.0}/pyproject.toml +2 -2
  5. synthkit-0.4.0/skills/boardroom/SKILL.md +224 -0
  6. synthkit-0.4.0/skills/explore-with-me/SKILL.md +103 -0
  7. synthkit-0.4.0/skills/explore-with-me/references/structured-elicitation.md +65 -0
  8. synthkit-0.4.0/skills/init-discovery/SKILL.md +135 -0
  9. synthkit-0.4.0/skills/init-discovery/references/structured-discovery.md +140 -0
  10. synthkit-0.2.0/README.md +0 -181
  11. synthkit-0.2.0/skills/explore-with-me/SKILL.md +0 -207
  12. {synthkit-0.2.0 → synthkit-0.4.0}/.gitignore +0 -0
  13. {synthkit-0.2.0 → synthkit-0.4.0}/hooks/hooks.json +0 -0
  14. {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2docx/SKILL.md +0 -0
  15. {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2email/SKILL.md +0 -0
  16. {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2html/SKILL.md +0 -0
  17. {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2pdf/SKILL.md +0 -0
  18. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/__init__.py +0 -0
  19. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/base.py +0 -0
  20. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/cli.py +0 -0
  21. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/doc.py +0 -0
  22. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/email.py +0 -0
  23. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/html.py +0 -0
  24. {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/pdf.py +0 -0
  25. {synthkit-0.2.0 → synthkit-0.4.0}/style.css +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "synthkit",
3
- "version": "0.2.0",
4
- "description": "Document synthesis toolkitguided exploration, markdown to PDF/DOCX/HTML/email conversion",
3
+ "version": "0.4.0",
4
+ "description": "Thinking tools and production tools for AI structured exploration, strategic debate, and document conversion",
5
5
  "author": {
6
6
  "name": "rappdw",
7
7
  "url": "https://github.com/rappdw"
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synthkit
3
- Version: 0.2.0
4
- Summary: Convert AI-generated Markdown into production-ready documents
3
+ Version: 0.4.0
4
+ Summary: Thinking tools and production tools for working with AI structured exploration, strategic debate, and document conversion
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.10
7
7
  Requires-Dist: click
@@ -27,12 +27,7 @@ Description-Content-Type: text/markdown
27
27
 
28
28
  Synthkit was born from building [Satori](https://www.proofpoint.com/us/platform/satori) — a platform that deploys AI agents to scale security operations. When AI generates content at volume, you need tooling to bridge the gap between raw output and what the organization actually needs. Synthkit is that bridge.
29
29
 
30
- A "last-mile" toolkit for working with generative AI. Synthkit bridges the gap between raw LLM output and production-ready deliverables through:
31
-
32
- - **Document conversion** — Transform AI-generated Markdown into Word, HTML, PDF, or clipboard-ready email
33
- - **Structured exploration** — Guided discovery sessions that draw out your domain knowledge before generating anything
34
- - **Prompt templates** — Curated templates for structured AI interactions (reports, emails, analysis)
35
- - **Guidelines** — Reference standards and style guides to steer AI output quality
30
+ A toolkit for amplifying what you can do with AI. Synthkit combines thinking tools (structured exploration, strategic debate) with production tools (document conversion, project scaffolding) into a single package — usable from the command line, from Claude Code, or both.
36
31
 
37
32
  ## Installation
38
33
 
@@ -57,19 +52,82 @@ Synthkit is also available as a [Claude Code](https://claude.ai/code) plugin, ad
57
52
  /plugin install synthkit
58
53
  ```
59
54
 
60
- This gives you slash commands inside Claude Code:
55
+ ## Skills
56
+
57
+ Skills are Claude Code slash commands that give Claude specialized capabilities. Install the plugin and invoke them with `/synthkit:<skill-name>`.
58
+
59
+ ### Thinking Tools
60
+
61
+ These skills help you think through problems before committing to solutions.
62
+
63
+ #### `/synthkit:explore-with-me` — Structured Exploration
64
+
65
+ Claude acts as an interviewer, not a generator. It draws out your domain knowledge through focused questions, structures your thinking, identifies gaps, and pressure-tests assumptions — only writing findings after validating them with you.
66
+
67
+ **When to use:** You have a decision to make, a problem to diagnose, a risk to assess, or a strategy to shape — and you know more about the situation than the AI does. The exploration typically resolves in a single conversation (5-15 rounds).
68
+
69
+ **Examples:** "Help me think through whether we should migrate to GraphQL." "I need to figure out why our deploy pipeline keeps breaking." "Let's explore the tradeoffs of hiring contractors vs. full-time."
70
+
71
+ **Output:** A markdown file with context, key findings, constraints, tensions, and recommendations.
72
+
73
+ #### `/synthkit:init-discovery` — Discovery Project Scaffolding
74
+
75
+ Sets up a multi-session exploration project. Claude interviews you about the initiative, then generates a customized `CLAUDE.md` (so future sessions have full context) plus a working file structure for sustained investigation.
76
+
77
+ **When to use:** The problem is too big for one conversation. You'll be coming back to it over days or weeks, possibly with evolving deliverables and multiple stakeholders. You need Claude to maintain context across sessions.
78
+
79
+ **Examples:** "Set up a discovery project for our Q3 platform migration." "I need to investigate our incident response process over the next few weeks." "Scaffold an exploration of our pricing strategy."
80
+
81
+ **Output:** `CLAUDE.md` + working files (`current-state.md`, `problem-analysis.md`, `requirements.md`, `options/`, `decision-log.md`).
82
+
83
+ #### `/synthkit:boardroom` — Strategic Debate
84
+
85
+ Spin up a board of AI advisors — real people whose strategic thinking you admire — and have them debate your decision in two rounds. Round 1: each advisor argues their position in parallel. Round 2: they read each other's arguments and fight — naming names, quoting each other, changing votes or doubling down.
86
+
87
+ Inspired by [Allie K Miller's boardroom concept](https://x.com/alliekmiller/status/2021578555034149188).
88
+
89
+ **When to use:** You have a high-stakes strategic decision and want to stress-test it from multiple perspectives before committing. Pricing, launches, partnerships, organizational changes, market entry — anything where smart people would disagree.
61
90
 
62
- | Command | Description |
63
- |---------|-------------|
64
- | `/synthkit:explore-with-me` | Guided exploration — Claude interviews you to structure your thinking before writing anything |
65
- | `/synthkit:md2pdf` | Convert markdown to PDF |
66
- | `/synthkit:md2docx` | Convert markdown to Word |
67
- | `/synthkit:md2html` | Convert markdown to HTML |
68
- | `/synthkit:md2email` | Convert markdown to clipboard-ready email |
91
+ **Examples:** `/synthkit:boardroom "Should I price this at $25,000 or $50,000?"` `/synthkit:boardroom "How should we launch the new developer tier?"` `/synthkit:boardroom "Should we build or buy our analytics platform?"`
69
92
 
70
- The **explore-with-me** skill is particularly useful for thinking through architecture decisions, incident postmortems, risk assessments, or any situation where you know more than the AI and premature generation would anchor on the wrong framing.
93
+ **Output:** A folder with three files:
94
+ - `debate.md` — Full transcript with vote tracker, key tensions, and decision framework
95
+ - `debate.html` — Interactive dashboard with assumption sliders that recalculate projections
96
+ - `debate.pdf` — Print-optimized version for sharing with your team
71
97
 
72
- ## Document Conversion
98
+ ### Production Tools
99
+
100
+ These skills convert AI-generated content into deliverable formats.
101
+
102
+ #### `/synthkit:md2pdf` — Markdown to PDF
103
+
104
+ Convert markdown files to PDF using pandoc with weasyprint (CSS-based, no LaTeX needed).
105
+
106
+ **When to use:** You need a polished PDF from a markdown file — reports, proposals, documentation.
107
+
108
+ **Requires system libraries** (pango, cairo) — see [System Dependencies](#system-dependencies-for-pdf).
109
+
110
+ #### `/synthkit:md2docx` — Markdown to Word
111
+
112
+ Convert markdown files to Word (.docx) using pandoc.
113
+
114
+ **When to use:** You need to share a document with people who work in Word, or you need to use Word's review/comment features.
115
+
116
+ #### `/synthkit:md2html` — Markdown to HTML
117
+
118
+ Convert markdown files to standalone HTML using pandoc, with optional CSS styling.
119
+
120
+ **When to use:** You need a self-contained HTML file — for web publishing, email embedding, or portable viewing.
121
+
122
+ #### `/synthkit:md2email` — Markdown to Email
123
+
124
+ Convert a markdown file to formatted email content and copy it to the clipboard. Rich text (RTF) on macOS, HTML elsewhere.
125
+
126
+ **When to use:** You've drafted an email in markdown and want to paste it into your mail client with formatting intact.
127
+
128
+ ## Document Conversion (CLI)
129
+
130
+ The conversion tools are also available as standalone CLI commands, independent of Claude Code.
73
131
 
74
132
  ### System dependencies for PDF
75
133
 
@@ -128,15 +186,24 @@ Each converter looks for optional config files under `~/.config/<toolname>/`:
128
186
  | `html` | `~/.config/md2html/style.css` |
129
187
  | `pdf` | `~/.config/md2pdf/style.css` |
130
188
 
131
- ## Prompt Templates
189
+ ## Reference Materials
190
+
191
+ ### Prompt Templates
192
+
193
+ The `prompt-templates/` directory contains pointers to canonical templates maintained alongside their skills. If you're using Claude Code, the skills fill these in automatically.
132
194
 
133
- The `prompt-templates/` directory contains curated prompt templates for structured AI interactions. These are optimized for Markdown-first responses to ensure compatibility with the document conversion tools.
195
+ | Template | Canonical source | Claude Code shortcut |
196
+ |----------|-----------------|----------------------|
197
+ | `structured-discovery.md` | `skills/init-discovery/references/` | `/synthkit:init-discovery` |
134
198
 
135
- Copy the contents of any template into your LLM of choice (Claude, Gemini, ChatGPT, etc.) to get consistently structured output ready for conversion.
199
+ ### Guidelines
136
200
 
137
- ## Guidelines
201
+ The `guidelines/` directory contains reference standards and methods that can be provided as context to AI models.
138
202
 
139
- The `guidelines/` directory contains reference standards and style guides that can be provided as context to AI models to steer output quality and consistency.
203
+ | Guideline | Purpose |
204
+ |-----------|---------|
205
+ | `structured-elicitation.md` | The Structured Elicitation method (canonical source: `skills/explore-with-me/references/`) |
206
+ | `markdown-conventions.md` | Markdown formatting standards for AI-generated content |
140
207
 
141
208
  ## Testing
142
209
 
@@ -167,7 +234,9 @@ Tests run automatically on push/PR to `main` across Python 3.10-3.13 on Linux, m
167
234
  │ ├── html.py # HTML conversion
168
235
  │ └── pdf.py # PDF conversion (via WeasyPrint)
169
236
  ├── skills/ # Claude Code plugin skills
237
+ │ ├── boardroom/ # Strategic debate with AI advisors
170
238
  │ ├── explore-with-me/ # Structured exploration interviews
239
+ │ ├── init-discovery/ # Multi-session project scaffolding
171
240
  │ ├── md2pdf/ # PDF conversion skill
172
241
  │ ├── md2docx/ # Word conversion skill
173
242
  │ ├── md2html/ # HTML conversion skill
@@ -183,8 +252,8 @@ Tests run automatically on push/PR to `main` across Python 3.10-3.13 on Linux, m
183
252
  │ ├── test_html.py # HTML converter tests
184
253
  │ └── test_pdf.py # PDF converter tests
185
254
  ├── style.css # Default stylesheet
186
- ├── prompt-templates/ # AI interaction prompt templates
187
- └── guidelines/ # Reference guidelines
255
+ ├── prompt-templates/ # Pointers to canonical templates
256
+ └── guidelines/ # Pointers to canonical references
188
257
  ```
189
258
 
190
259
  ## Dependencies
@@ -0,0 +1,250 @@
1
+ # Synthkit
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/synthkit.svg)](https://pypi.org/project/synthkit/)
4
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/downloads/)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](https://opensource.org/licenses/MIT)
6
+ [![Tests](https://github.com/rappdw/synthkit/actions/workflows/tests.yml/badge.svg)](https://github.com/rappdw/synthkit/actions/workflows/tests.yml)
7
+ [![Coverage](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/rappdw/02d0a91962d09fd9473da34fccd76237/raw/synthkit-coverage.json)](https://github.com/rappdw/synthkit/actions/workflows/tests.yml)
8
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
9
+ [![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)
10
+
11
+ Synthkit was born from building [Satori](https://www.proofpoint.com/us/platform/satori) — a platform that deploys AI agents to scale security operations. When AI generates content at volume, you need tooling to bridge the gap between raw output and what the organization actually needs. Synthkit is that bridge.
12
+
13
+ A toolkit for amplifying what you can do with AI. Synthkit combines thinking tools (structured exploration, strategic debate) with production tools (document conversion, project scaffolding) into a single package — usable from the command line, from Claude Code, or both.
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ # Run directly with uvx (no install needed)
19
+ uvx synthkit html document.md
20
+
21
+ # Or install globally
22
+ uv tool install synthkit
23
+
24
+ # Or install with pip
25
+ pip install synthkit
26
+ ```
27
+
28
+ Pandoc is bundled automatically via [`pypandoc_binary`](https://pypi.org/project/pypandoc-binary/) — no separate install needed.
29
+
30
+ ### Claude Code Plugin
31
+
32
+ Synthkit is also available as a [Claude Code](https://claude.ai/code) plugin, adding skills directly into your coding assistant:
33
+
34
+ ```
35
+ /plugin install synthkit
36
+ ```
37
+
38
+ ## Skills
39
+
40
+ Skills are Claude Code slash commands that give Claude specialized capabilities. Install the plugin and invoke them with `/synthkit:<skill-name>`.
41
+
42
+ ### Thinking Tools
43
+
44
+ These skills help you think through problems before committing to solutions.
45
+
46
+ #### `/synthkit:explore-with-me` — Structured Exploration
47
+
48
+ Claude acts as an interviewer, not a generator. It draws out your domain knowledge through focused questions, structures your thinking, identifies gaps, and pressure-tests assumptions — only writing findings after validating them with you.
49
+
50
+ **When to use:** You have a decision to make, a problem to diagnose, a risk to assess, or a strategy to shape — and you know more about the situation than the AI does. The exploration typically resolves in a single conversation (5-15 rounds).
51
+
52
+ **Examples:** "Help me think through whether we should migrate to GraphQL." "I need to figure out why our deploy pipeline keeps breaking." "Let's explore the tradeoffs of hiring contractors vs. full-time."
53
+
54
+ **Output:** A markdown file with context, key findings, constraints, tensions, and recommendations.
55
+
56
+ #### `/synthkit:init-discovery` — Discovery Project Scaffolding
57
+
58
+ Sets up a multi-session exploration project. Claude interviews you about the initiative, then generates a customized `CLAUDE.md` (so future sessions have full context) plus a working file structure for sustained investigation.
59
+
60
+ **When to use:** The problem is too big for one conversation. You'll be coming back to it over days or weeks, possibly with evolving deliverables and multiple stakeholders. You need Claude to maintain context across sessions.
61
+
62
+ **Examples:** "Set up a discovery project for our Q3 platform migration." "I need to investigate our incident response process over the next few weeks." "Scaffold an exploration of our pricing strategy."
63
+
64
+ **Output:** `CLAUDE.md` + working files (`current-state.md`, `problem-analysis.md`, `requirements.md`, `options/`, `decision-log.md`).
65
+
66
+ #### `/synthkit:boardroom` — Strategic Debate
67
+
68
+ Spin up a board of AI advisors — real people whose strategic thinking you admire — and have them debate your decision in two rounds. Round 1: each advisor argues their position in parallel. Round 2: they read each other's arguments and fight — naming names, quoting each other, changing votes or doubling down.
69
+
70
+ Inspired by [Allie K Miller's boardroom concept](https://x.com/alliekmiller/status/2021578555034149188).
71
+
72
+ **When to use:** You have a high-stakes strategic decision and want to stress-test it from multiple perspectives before committing. Pricing, launches, partnerships, organizational changes, market entry — anything where smart people would disagree.
73
+
74
+ **Examples:** `/synthkit:boardroom "Should I price this at $25,000 or $50,000?"` `/synthkit:boardroom "How should we launch the new developer tier?"` `/synthkit:boardroom "Should we build or buy our analytics platform?"`
75
+
76
+ **Output:** A folder with three files:
77
+ - `debate.md` — Full transcript with vote tracker, key tensions, and decision framework
78
+ - `debate.html` — Interactive dashboard with assumption sliders that recalculate projections
79
+ - `debate.pdf` — Print-optimized version for sharing with your team
80
+
81
+ ### Production Tools
82
+
83
+ These skills convert AI-generated content into deliverable formats.
84
+
85
+ #### `/synthkit:md2pdf` — Markdown to PDF
86
+
87
+ Convert markdown files to PDF using pandoc with weasyprint (CSS-based, no LaTeX needed).
88
+
89
+ **When to use:** You need a polished PDF from a markdown file — reports, proposals, documentation.
90
+
91
+ **Requires system libraries** (pango, cairo) — see [System Dependencies](#system-dependencies-for-pdf).
92
+
93
+ #### `/synthkit:md2docx` — Markdown to Word
94
+
95
+ Convert markdown files to Word (.docx) using pandoc.
96
+
97
+ **When to use:** You need to share a document with people who work in Word, or you need to use Word's review/comment features.
98
+
99
+ #### `/synthkit:md2html` — Markdown to HTML
100
+
101
+ Convert markdown files to standalone HTML using pandoc, with optional CSS styling.
102
+
103
+ **When to use:** You need a self-contained HTML file — for web publishing, email embedding, or portable viewing.
104
+
105
+ #### `/synthkit:md2email` — Markdown to Email
106
+
107
+ Convert a markdown file to formatted email content and copy it to the clipboard. Rich text (RTF) on macOS, HTML elsewhere.
108
+
109
+ **When to use:** You've drafted an email in markdown and want to paste it into your mail client with formatting intact.
110
+
111
+ ## Document Conversion (CLI)
112
+
113
+ The conversion tools are also available as standalone CLI commands, independent of Claude Code.
114
+
115
+ ### System dependencies for PDF
116
+
117
+ PDF conversion uses [WeasyPrint](https://weasyprint.org/), which requires system libraries:
118
+
119
+ | Platform | Install command |
120
+ |----------|----------------|
121
+ | **macOS** | `brew install pango` |
122
+ | **Ubuntu/Debian** | `apt install libpango1.0-dev libcairo2-dev libgdk-pixbuf2.0-dev` |
123
+ | **Windows** | See [WeasyPrint docs](https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#windows) |
124
+
125
+ `doc`, `html`, and `email` commands work without these.
126
+
127
+ ### Usage
128
+
129
+ #### Unified CLI
130
+
131
+ ```bash
132
+ synthkit doc report.md # → report.docx
133
+ synthkit html report.md # → report.html
134
+ synthkit pdf report.md # → report.pdf
135
+ synthkit email report.md # → clipboard
136
+
137
+ # Batch processing
138
+ synthkit doc *.md
139
+ synthkit html *.md --hard-breaks
140
+
141
+ # Mermaid diagrams (requires mermaid-filter)
142
+ synthkit html report.md --mermaid
143
+ ```
144
+
145
+ #### Backward-compatible commands
146
+
147
+ ```bash
148
+ md2doc report.md
149
+ md2html report.md
150
+ md2pdf report.md
151
+ md2email report.md
152
+ ```
153
+
154
+ #### Options
155
+
156
+ | Flag | Description |
157
+ |------|-------------|
158
+ | `--hard-breaks` | Preserve line breaks from source markdown |
159
+ | `--mermaid` | Enable Mermaid diagram rendering (requires [`mermaid-filter`](https://github.com/raghur/mermaid-filter)) |
160
+
161
+ ### Configuration
162
+
163
+ Each converter looks for optional config files under `~/.config/<toolname>/`:
164
+
165
+ | Converter | Config Files |
166
+ |-----------|-------------|
167
+ | `doc` | `~/.config/md2doc/reference.docx` |
168
+ | `email` | `~/.config/md2email/style.css` |
169
+ | `html` | `~/.config/md2html/style.css` |
170
+ | `pdf` | `~/.config/md2pdf/style.css` |
171
+
172
+ ## Reference Materials
173
+
174
+ ### Prompt Templates
175
+
176
+ The `prompt-templates/` directory contains pointers to canonical templates maintained alongside their skills. If you're using Claude Code, the skills fill these in automatically.
177
+
178
+ | Template | Canonical source | Claude Code shortcut |
179
+ |----------|-----------------|----------------------|
180
+ | `structured-discovery.md` | `skills/init-discovery/references/` | `/synthkit:init-discovery` |
181
+
182
+ ### Guidelines
183
+
184
+ The `guidelines/` directory contains reference standards and methods that can be provided as context to AI models.
185
+
186
+ | Guideline | Purpose |
187
+ |-----------|---------|
188
+ | `structured-elicitation.md` | The Structured Elicitation method (canonical source: `skills/explore-with-me/references/`) |
189
+ | `markdown-conventions.md` | Markdown formatting standards for AI-generated content |
190
+
191
+ ## Testing
192
+
193
+ ```bash
194
+ # Run tests
195
+ uv run --extra dev pytest
196
+
197
+ # With coverage
198
+ uv run --extra dev pytest --cov=synthkit --cov-report=term-missing
199
+ ```
200
+
201
+ Tests run automatically on push/PR to `main` across Python 3.10-3.13 on Linux, macOS, and Windows.
202
+
203
+ ## Repository Structure
204
+
205
+ ```
206
+ ├── .claude-plugin/ # Claude Code plugin metadata
207
+ │ └── plugin.json
208
+ ├── .github/workflows/
209
+ │ ├── tests.yml # CI: test on push/PR to main
210
+ │ └── publish.yml # CD: publish to PyPI on release
211
+ ├── pyproject.toml
212
+ ├── src/synthkit/ # Python package
213
+ │ ├── cli.py # Click CLI with subcommands
214
+ │ ├── base.py # Shared conversion logic
215
+ │ ├── doc.py # Word conversion
216
+ │ ├── email.py # Email clipboard conversion
217
+ │ ├── html.py # HTML conversion
218
+ │ └── pdf.py # PDF conversion (via WeasyPrint)
219
+ ├── skills/ # Claude Code plugin skills
220
+ │ ├── boardroom/ # Strategic debate with AI advisors
221
+ │ ├── explore-with-me/ # Structured exploration interviews
222
+ │ ├── init-discovery/ # Multi-session project scaffolding
223
+ │ ├── md2pdf/ # PDF conversion skill
224
+ │ ├── md2docx/ # Word conversion skill
225
+ │ ├── md2html/ # HTML conversion skill
226
+ │ └── md2email/ # Email conversion skill
227
+ ├── hooks/ # Claude Code plugin hooks
228
+ │ └── hooks.json # SessionStart dependency check
229
+ ├── tests/ # Test suite (pytest)
230
+ │ ├── conftest.py # Shared fixtures
231
+ │ ├── test_base.py # Base module tests
232
+ │ ├── test_cli.py # CLI + integration tests
233
+ │ ├── test_doc.py # Word converter tests
234
+ │ ├── test_email.py # Email converter tests
235
+ │ ├── test_html.py # HTML converter tests
236
+ │ └── test_pdf.py # PDF converter tests
237
+ ├── style.css # Default stylesheet
238
+ ├── prompt-templates/ # Pointers to canonical templates
239
+ └── guidelines/ # Pointers to canonical references
240
+ ```
241
+
242
+ ## Dependencies
243
+
244
+ | Package | Purpose | Bundled? |
245
+ |---------|---------|----------|
246
+ | [`click`](https://click.palletsprojects.com/) | CLI framework | pip |
247
+ | [`pypandoc_binary`](https://pypi.org/project/pypandoc-binary/) | Pandoc document converter | pip (includes binary) |
248
+ | [`pyperclip`](https://pypi.org/project/pyperclip/) | Cross-platform clipboard | pip |
249
+ | [`weasyprint`](https://weasyprint.org/) | PDF engine | pip (needs system libs) |
250
+ | [`mermaid-filter`](https://github.com/raghur/mermaid-filter) | Mermaid diagrams | Optional, external |
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "synthkit"
7
- version = "0.2.0"
8
- description = "Convert AI-generated Markdown into production-ready documents"
7
+ version = "0.4.0"
8
+ description = "Thinking tools and production tools for working with AI structured exploration, strategic debate, and document conversion"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  license = "MIT"
@@ -0,0 +1,224 @@
1
+ ---
2
+ name: boardroom
3
+ user-invocable: true
4
+ description: >
5
+ Strategic boardroom debate with AI advisors. Use this skill when the user wants to pressure-test
6
+ a decision by having multiple AI-simulated business leaders debate it. Trigger on phrases like
7
+ "boardroom", "get my advisors to debate", "strategic debate", "board of directors", "what would
8
+ X think about", or any request to simulate multiple expert perspectives arguing about a decision.
9
+ Also use when the user says "/boardroom".
10
+ ---
11
+
12
+ # Boardroom
13
+
14
+ Spin up a team of AI advisors — real people whose strategic thinking the user admires — and
15
+ have them debate a decision in two rounds. The result is a folder of deliverables: a markdown
16
+ debate transcript, an interactive HTML with assumption sliders, and a PDF for sharing.
17
+
18
+ ## Setup (First Use)
19
+
20
+ If no advisors are configured yet, interview the user to build their board. This only needs
21
+ to happen once — the advisor profiles persist in `boardroom-config.md` in the current
22
+ directory.
23
+
24
+ ### Selecting Advisors
25
+
26
+ Ask the user:
27
+
28
+ > Before we run your first boardroom, I need to assemble your board of advisors. A few
29
+ > questions:
30
+ >
31
+ > 1. **What's your business/domain?** (This helps me suggest relevant thinkers)
32
+ >
33
+ > 2. **How many advisors do you want?** (4-8 works best — enough diversity without noise)
34
+ > - a) 4 — tight, focused debate
35
+ > - b) 6 — good diversity (recommended)
36
+ > - c) 8 — wide range of perspectives
37
+ >
38
+ > 3. **What kind of board do you want?**
39
+ > - a) Industry experts — people who know your specific domain deeply
40
+ > - b) Cross-domain visionaries — big thinkers from adjacent or unrelated fields
41
+ > - c) Balanced — mix of domain experts, contrarians, and wildcards
42
+ > - d) I have specific people in mind
43
+
44
+ For each advisor, research and create a profile:
45
+ - **Name**
46
+ - **Personality profile** (2-3 sentences): how they think, what they prioritize, what biases
47
+ they bring. Be specific — "focuses on unit economics and payback periods" not just "thinks
48
+ about money."
49
+ - **Role on the board**: what perspective they uniquely bring (e.g., "the pricing hawk",
50
+ "the customer obsessive", "the platform thinker")
51
+
52
+ Write profiles to `boardroom-config.md` in the current directory. Example:
53
+
54
+ ```markdown
55
+ # Boardroom Advisors
56
+
57
+ ## Business Context
58
+ [Brief description of the business — filled in from user interview]
59
+
60
+ ## Advisors
61
+
62
+ ### 1. [Name] — [Role]
63
+ [2-3 sentence personality profile]
64
+
65
+ ### 2. [Name] — [Role]
66
+ [2-3 sentence personality profile]
67
+ ```
68
+
69
+ Also ask if the user has a **business context document** — a markdown file describing their
70
+ business, revenue, team, products, goals, and positioning. If so, note the path in the config.
71
+ If not, interview them to create a brief one.
72
+
73
+ ## Running a Boardroom Session
74
+
75
+ When the user invokes `/boardroom [question]`, run the full debate:
76
+
77
+ ### Round 1: Initial Positions (Parallel)
78
+
79
+ Spin up one agent per advisor, all in parallel. Each agent receives:
80
+ - The advisor's personality profile
81
+ - The business context document (if provided)
82
+ - The user's question
83
+
84
+ Each agent writes their advisor's position:
85
+ - **800-1200 words** arguing their position (more or less as needed to convey 95% of their
86
+ point — don't pad, don't truncate prematurely)
87
+ - A clear **YES / NO / CONDITIONAL** vote
88
+ - **Specific numbers and projections** on cost, revenue, impact, and team joy where relevant
89
+ - Written in first person, in the advisor's voice and thinking style
90
+
91
+ Instruct each agent:
92
+
93
+ ```
94
+ You are roleplaying as [Name]. Here is your profile:
95
+ [profile]
96
+
97
+ Here is the business context:
98
+ [business context]
99
+
100
+ The question before the board is: [question]
101
+
102
+ Write your position in 800-1200 words (more or less as needed). Argue from your specific
103
+ worldview and priorities. Include:
104
+ - Your YES/NO/CONDITIONAL vote
105
+ - Specific numbers, projections, or frameworks that support your position
106
+ - What you think the biggest risk is
107
+ - What you think everyone else will get wrong
108
+
109
+ Write in first person as [Name]. Be direct, be specific, be yourself.
110
+ ```
111
+
112
+ ### Round 2: Rebuttals (Parallel)
113
+
114
+ Collect all Round 1 positions. Spin up agents again in parallel. Each agent receives all
115
+ other advisors' Round 1 positions plus their own.
116
+
117
+ Each agent writes a **400-800 word rebuttal** that includes:
118
+ - **Who they disagree with most** and why, referencing that person's actual argument
119
+ (quote them, name them)
120
+ - **Who made them think** — did anyone shift their perspective?
121
+ - Whether they **changed their mind** (and if so, why — be specific)
122
+ - Their **FINAL vote** (which can differ from Round 1)
123
+
124
+ Instruct each agent:
125
+
126
+ ```
127
+ You are still [Name]. Here is what every advisor argued in Round 1:
128
+
129
+ [all positions]
130
+
131
+ Now write your rebuttal (400-800 words). You MUST:
132
+ - Name the advisor you disagree with most and quote their actual argument
133
+ - Explain why they're wrong or missing something
134
+ - Acknowledge if anyone made a point that shifted your thinking
135
+ - Give your FINAL vote (YES/NO/CONDITIONAL) — it can change from Round 1
136
+
137
+ Be direct. This is a debate, not a seminar. If someone said something wrong, call it out.
138
+ If someone changed your mind, say so and say why.
139
+ ```
140
+
141
+ ### Deliverables
142
+
143
+ Create a folder named after the decision (slugified, e.g., `pricing-25k-vs-50k/`) in the
144
+ current directory. Generate three files:
145
+
146
+ #### 1. `debate.md` — Full Transcript
147
+
148
+ ```markdown
149
+ # Boardroom: [Question]
150
+ *[Date] — [Number] advisors, 2 rounds*
151
+
152
+ ## Vote Tracker
153
+
154
+ | Advisor | Round 1 | Final | Changed? |
155
+ |---------|---------|-------|----------|
156
+ | [Name] | YES | NO | Yes |
157
+ | ... | ... | ... | ... |
158
+
159
+ **Consensus:** [Unanimous YES / Majority YES / Split / Majority NO / Unanimous NO]
160
+
161
+ ## Key Tensions
162
+ - [Tension 1: brief description of the core disagreement]
163
+ - [Tension 2]
164
+
165
+ ## Round 1 Positions
166
+
167
+ ### [Name] — [Role]
168
+ **Vote: [YES/NO/CONDITIONAL]**
169
+ [Full position]
170
+
171
+ ---
172
+ [repeat for each advisor]
173
+
174
+ ## Round 2 Rebuttals
175
+
176
+ ### [Name] — [Role]
177
+ **Final Vote: [YES/NO/CONDITIONAL]** [Changed from: X]
178
+ [Full rebuttal]
179
+
180
+ ---
181
+ [repeat for each advisor]
182
+
183
+ ## Decision Framework
184
+ [Synthesize the key factors that emerged from the debate into a framework
185
+ the user can apply]
186
+ ```
187
+
188
+ #### 2. `debate.html` — Interactive Dashboard
189
+
190
+ Create a self-contained HTML file (all CSS/JS inline) with:
191
+ - **Styled cards** for each advisor showing their position summary and vote
192
+ - **Vote change visualization** — show Round 1 → Final vote with visual indicators
193
+ - **Interactive sliders** for key assumptions that emerged from the debate (price points,
194
+ conversion rates, team size, timeline, etc.) that dynamically recalculate projections
195
+ - **Clean, professional styling** — dark header, card layout, readable typography
196
+ - Brand it as "Boardroom — Strategic Decision Analysis"
197
+
198
+ The sliders should update projected numbers in real-time using JavaScript. Identify the
199
+ 2-5 most important numerical assumptions from the debate and make those the slider inputs.
200
+
201
+ #### 3. `debate.pdf` — Shareable Summary
202
+
203
+ Use `synthkit pdf` (or `md2pdf` if available) to convert a print-optimized version of the
204
+ debate markdown to PDF. If synthkit is not installed, generate the PDF via pandoc directly,
205
+ or note that the user can run `md2pdf debate.md` to create it.
206
+
207
+ ### Synthesis
208
+
209
+ After generating deliverables, present a synthesis to the user:
210
+
211
+ > ## Boardroom Results: [Question]
212
+ >
213
+ > **Final votes:** [tally]
214
+ >
215
+ > **Who changed their mind:** [names and why]
216
+ >
217
+ > **Biggest fight:** [the core disagreement, who vs who]
218
+ >
219
+ > **Sharpest insight:** [the single most valuable point from the debate]
220
+ >
221
+ > **Likely decision:** [what the debate points toward, with caveats]
222
+ >
223
+ > Deliverables saved to `[folder]/` — the HTML version has interactive sliders
224
+ > to test different assumptions.