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.
- {synthkit-0.2.0 → synthkit-0.4.0}/.claude-plugin/plugin.json +2 -2
- {synthkit-0.2.0 → synthkit-0.4.0}/PKG-INFO +94 -25
- synthkit-0.4.0/README.md +250 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/pyproject.toml +2 -2
- synthkit-0.4.0/skills/boardroom/SKILL.md +224 -0
- synthkit-0.4.0/skills/explore-with-me/SKILL.md +103 -0
- synthkit-0.4.0/skills/explore-with-me/references/structured-elicitation.md +65 -0
- synthkit-0.4.0/skills/init-discovery/SKILL.md +135 -0
- synthkit-0.4.0/skills/init-discovery/references/structured-discovery.md +140 -0
- synthkit-0.2.0/README.md +0 -181
- synthkit-0.2.0/skills/explore-with-me/SKILL.md +0 -207
- {synthkit-0.2.0 → synthkit-0.4.0}/.gitignore +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/hooks/hooks.json +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2docx/SKILL.md +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2email/SKILL.md +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2html/SKILL.md +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/skills/md2pdf/SKILL.md +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/__init__.py +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/base.py +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/cli.py +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/doc.py +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/email.py +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/html.py +0 -0
- {synthkit-0.2.0 → synthkit-0.4.0}/src/synthkit/pdf.py +0 -0
- {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.
|
|
4
|
-
"description": "
|
|
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.
|
|
4
|
-
Summary:
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
195
|
+
| Template | Canonical source | Claude Code shortcut |
|
|
196
|
+
|----------|-----------------|----------------------|
|
|
197
|
+
| `structured-discovery.md` | `skills/init-discovery/references/` | `/synthkit:init-discovery` |
|
|
134
198
|
|
|
135
|
-
|
|
199
|
+
### Guidelines
|
|
136
200
|
|
|
137
|
-
|
|
201
|
+
The `guidelines/` directory contains reference standards and methods that can be provided as context to AI models.
|
|
138
202
|
|
|
139
|
-
|
|
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/ #
|
|
187
|
-
└── guidelines/ #
|
|
255
|
+
├── prompt-templates/ # Pointers to canonical templates
|
|
256
|
+
└── guidelines/ # Pointers to canonical references
|
|
188
257
|
```
|
|
189
258
|
|
|
190
259
|
## Dependencies
|
synthkit-0.4.0/README.md
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Synthkit
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/synthkit/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/rappdw/synthkit/actions/workflows/tests.yml)
|
|
7
|
+
[](https://github.com/rappdw/synthkit/actions/workflows/tests.yml)
|
|
8
|
+
[](https://github.com/astral-sh/ruff)
|
|
9
|
+
[](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.
|
|
8
|
-
description = "
|
|
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.
|