[object Object]

← back to Cli Printing Press

feat(skills): add onboarding briefing and showcase novel features at absorb gate (#96)

8311b137915be706046c0e17dcc7ef00e8274ca5 · 2026-03-31 19:28:35 -0700 · Matt Van Horn

Adds two improvements to the printing-press skill UX:

1. Orientation & Briefing (before Setup):
   - No-argument NUX explains what the tool does and asks what to build
   - With-argument briefing sets expectations (process, time, output),
     collects upfront context (vision, API keys, logged-in sessions),
     and wires user context into Phase 1 brief and auto-brainstorm

2. Phase Gate 1.5 restructured:
   - Shows absorbed features and novel ideas separately
   - Showcases top 3 novel features with scores and evidence
   - Reframes "Add your own ideas" as collaborative, not sole-source
   - References user briefing context when available

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 8311b137915be706046c0e17dcc7ef00e8274ca5
Author: Matt Van Horn <mvanhorn@users.noreply.github.com>
Date:   Tue Mar 31 19:28:35 2026 -0700

    feat(skills): add onboarding briefing and showcase novel features at absorb gate (#96)
    
    Adds two improvements to the printing-press skill UX:
    
    1. Orientation & Briefing (before Setup):
       - No-argument NUX explains what the tool does and asks what to build
       - With-argument briefing sets expectations (process, time, output),
         collects upfront context (vision, API keys, logged-in sessions),
         and wires user context into Phase 1 brief and auto-brainstorm
    
    2. Phase Gate 1.5 restructured:
       - Shows absorbed features and novel ideas separately
       - Showcases top 3 novel features with scores and evidence
       - Reframes "Add your own ideas" as collaborative, not sole-source
       - References user briefing context when available
    
    Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
    Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 skills/printing-press/SKILL.md | 127 ++++++++++++++++++++++++++++++++++++++---
 1 file changed, 118 insertions(+), 9 deletions(-)

diff --git a/skills/printing-press/SKILL.md b/skills/printing-press/SKILL.md
index 3f2a0c34..1b7ab348 100644
--- a/skills/printing-press/SKILL.md
+++ b/skills/printing-press/SKILL.md
@@ -90,6 +90,85 @@ See the `printing-press-polish` skill for details. It runs diagnostics, fixes ve
 - YAML, JSON, local paths, and URLs are all valid spec inputs for the verification tools.
 - Maximum 2 verification fix loops unless the user explicitly asks for more.
 
+## Orientation & Briefing
+
+Before setup, check whether the user provided arguments. Handle two cases:
+
+### No Arguments: Orientation
+
+If the user typed `/printing-press` with no arguments (no API name, no `--spec`, no `--har`, no URL), print an orientation and ask what they'd like to build:
+
+> The Printing Press generates a fully functional CLI for any API. You give it an API name, a spec file, or a URL. It researches the landscape, catalogs every feature that exists in any competing tool, invents novel features of its own, then generates a Go CLI that matches and beats everything out there — with offline search, agent-native output, and a local SQLite data layer.
+>
+> By the end, you'll have a working CLI in `~/printing-press/library/` that you can use for yourself, distribute within your company, or publish to the printing-press library.
+>
+> The process takes 10-40 minutes depending on API complexity. Simple APIs with official specs (Stripe, GitHub) are faster. Undocumented APIs that need discovery (ESPN, Domino's) take longer.
+
+Then present examples and ask via `AskUserQuestion`:
+
+> "What API would you like to build a CLI for?"
+
+Options:
+1. **I'll type it** — (User provides the API name, URL, or spec path via the automatic "Other" option)
+
+Show example invocations alongside:
+```
+/printing-press Notion
+/printing-press Discord codex
+/printing-press --spec ./openapi.yaml
+/printing-press --har ./capture.har --name MyAPI
+/printing-press https://postman.com
+```
+
+After receiving the answer, set it as the argument and proceed to the briefing below.
+
+### With Arguments: Briefing
+
+When the user provided an argument (API name, `--spec`, `--har`, or URL), print a brief process overview before the setup contract runs. This sets expectations and collects any upfront context.
+
+Print as prose (in Victorian voice):
+
+> Very well. Setting the type for `<API>`.
+>
+> **Here is how this will proceed:**
+> 1. I shall research `<API>` across the internet: official docs, community wrappers, competing CLIs, MCP servers, and npm/PyPI packages
+> 2. I shall catalog every feature that exists in any tool, then devise novel features of my own that no existing tool offers
+> 3. I shall present what I found and what I invented — you will have a chance to add your own ideas or adjust the plan before I build
+> 4. I shall generate a Go CLI, build every feature from the plan, then verify quality through dogfood, runtime verification, and scoring
+>
+> **What you will have at the end:** A fully functional CLI at `~/printing-press/library/<api>-pp-cli` that you can use yourself, share within your company, or publish to the printing-press library.
+>
+> **Time:** 10-40 minutes depending on API complexity.
+>
+> **Things that help if you have them:**
+> - An API key (for live smoke testing at the end)
+> - A logged-in browser session (for discovering authenticated endpoints)
+> - A spec file or HAR capture (skips discovery)
+
+If the user provided `--spec`, adapt: "You have provided a spec, so I shall skip discovery and proceed directly to analysis and generation. Should be faster."
+
+If the user provided `--har`, adapt: "You have provided a HAR capture, so I shall generate a spec from your traffic and skip browser sniffing."
+
+Then ask via `AskUserQuestion`:
+
+**question:** "Anything you want me to know before I begin? A vision for what this CLI should do, specific features you care about, or context I should have?"
+
+**options:**
+1. **No, let's go** — "Start the process with default intelligence"
+2. **I have context to share** — "Tell me your vision, priorities, or specific features you care about"
+3. **I have an API key or I'm logged in** — "Share auth context now so I can plan for authenticated discovery and testing"
+
+If the user selects **"No, let's go"**, proceed to Setup immediately.
+
+If the user selects **"I have context to share"**, capture their free-text response as `USER_BRIEFING_CONTEXT`. This context will be:
+- Added to the Phase 1 Research Brief under a `## User Vision` section
+- Used as a 4th self-brainstorm question in Phase 1.5c.5: "Based on the user's stated vision, what features directly serve their stated goals that the absorbed features don't cover?"
+- Referenced at the Phase Gate 1.5 absorb gate: "You mentioned [summary] at the start. Want to add more, or does the manifest already cover it?"
+
+If the user selects **"I have an API key or I'm logged in"**, ask which one and capture it. Set `AUTH_CONTEXT` fields so the API Key Gate (Phase 0.5) and Pre-Sniff Auth Intelligence (Phase 1.6, if implemented) do not re-ask.
+
+---
+
 ## Setup
 
 Read and apply [references/voice.md](references/voice.md) for this session.
@@ -397,6 +476,9 @@ Suggested shape:
 - Sync cursor:
 - FTS/search:
 
+## User Vision
+- [USER_BRIEFING_CONTEXT if provided, otherwise omit this section]
+
 ## Product Thesis
 - Name:
 - Why it should exist:
@@ -958,10 +1040,11 @@ Analyze these 5 categories using data already gathered — do NOT run new search
 
 5. **Agent workflow gaps** — What would an AI agent using this CLI wish it could do in one command instead of multiple? (e.g., "show me everything about X" commands, bulk operations, pre-flight checks)
 
-6. **Self-brainstorm** — Answer these 3 questions using the research context gathered so far. Do NOT ask the user — answer them yourself from the research brief, absorb manifest, and ecosystem findings:
+6. **Self-brainstorm** — Answer these questions using the research context gathered so far. Do NOT ask the user — answer them yourself from the research brief, absorb manifest, and ecosystem findings:
    - Based on the research brief's top workflows and user profiles, what workflows does the typical power user of this API do that aren't covered in the absorbed features?
    - Based on competitor repo issues, community pain points, and ecosystem gaps found in Phase 1/1.5, what are the most annoying limitations that a CLI with SQLite could fix?
    - Based on the NOI and domain archetype, what single "killer feature" would make a power user install this CLI over any alternative?
+   - (Only when `USER_BRIEFING_CONTEXT` is non-empty) Based on the user's stated vision, what features directly serve their stated goals that the absorbed features don't already cover?
 
 #### Generate and Score Candidates
 
@@ -996,21 +1079,47 @@ The manifest now includes compound use cases (Step 1.5c) and auto-suggested + au
 
 ### Phase Gate 1.5
 
-**STOP.** Present the absorb manifest to the user via `AskUserQuestion`:
+**STOP.** Present the absorb manifest to the user in two parts: a prose showcase, then a question.
 
-"Found [N] features across [X] tools (MCPs, skills, CLIs, scripts). Our CLI will absorb all [N] and add [M] transcendence features (auto-suggested and brainstormed with scores). Total: [N+M] features. This is [Z]% more than the best existing tool."
+**Part 1: Prose showcase (print before the AskUserQuestion)**
+
+Print as regular text output:
+
+> ## Absorb Summary
+>
+> I cataloged **[N] features** across [X] tools ([tool names]). Our CLI will match every one of them with offline search, --json output, and agent-native flags.
+>
+> ## Novel Features (my ideas, not found in any existing tool)
+>
+> Beyond absorbing what exists, I came up with [M] features that no existing tool has. Here are the top 3:
+>
+> 1. **[Feature name]** ([score]/10) — [one-line description]. Evidence: [what research finding inspired this].
+> 2. **[Feature name]** ([score]/10) — [one-line description]. Evidence: [source].
+> 3. **[Feature name]** ([score]/10) — [one-line description]. Evidence: [source].
+>
+> Plus [M-3] more in the full manifest.
+>
+> Total: [N+M] features, [Z]% more than [best existing tool name] ([best tool feature count]).
+
+If fewer than 3 novel features scored >= 5/10, show all qualifying features instead of "top 3." If 0 qualified, note: "No novel features scored high enough to recommend. The absorbed features cover the landscape well."
+
+**Part 2: AskUserQuestion**
+
+> "Ready to generate with the full [N+M]-feature manifest? Or do you have ideas to add?"
 
 Options:
-1. **Approve - generate now** — Start CLI generation with the full manifest
-2. **Add your own feature ideas** — Add features from your personal experience that research couldn't surface
-3. **Review the research** — Show me the full brief and manifest before deciding
+1. **Approve — generate now** — Start CLI generation with the full manifest
+2. **I have ideas to add** — Tell me features from your experience, then we'll generate
+3. **Review full manifest** — Show me every absorbed and novel feature before deciding
 4. **Trim scope** — The feature count is too ambitious, let's focus on a subset
 
-If user selects **"Add your own feature ideas"**, ask 3 structured questions targeting personal knowledge the research couldn't surface:
+If user selects **"I have ideas to add"**, ask 3 structured questions targeting personal knowledge the research couldn't surface:
 
-1. "What workflows do YOU personally use `<API>` for that we might have missed?"
+1. "Beyond the [M] ideas above, what workflows do YOU use `<API>` for that we might have missed?"
 2. "What frustrates YOU about this API that the research didn't surface?"
-3. "What's YOUR killer feature - something only you'd think of?"
+3. "What's YOUR killer feature — something only you'd think of?"
+
+If `USER_BRIEFING_CONTEXT` is non-empty, acknowledge it: "You mentioned [summary of their vision] at the start. Want to add more, or does the manifest already cover it?"
 
 Each answer that produces a concrete feature → score and add to the transcendence table. After the brainstorm, return to this gate with the updated manifest.
 WAIT for approval. Do NOT generate until approved.

← 129cdea2 feat(skills): add Victorian printing press operator voice (#  ·  back to Cli Printing Press  ·  feat(skills): add proactive auth intelligence and session tr 63970f8f →