feat(demo): longhand demo + pre-push audit polish (v0.9.2)#8
Merged
Conversation
Audit 2026-05-17 prep for the v0.9.2 second-push: - .gitignore: add defensive Secrets block (.env*, *.key, *.pem, credentials.json, *.token). No such files exist in the repo today, but this prevents an accidental paste landing one in the index during a push session. - outreach/README.md: replace stale 2026-04-17 "What to watch" numbers with today's pre-second-push baseline (175/wk installs vs 733 at peak, −77%) and reframe the sequencing for a release-paired distribution event instead of the original launch. The analytics-2026-04-17.md baseline file referenced from outreach/README is preserved as a historical reference. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New `longhand demo` CLI command lets users try Longhand on a tiny
pre-built sample corpus without touching ~/.claude or ~/.longhand.
The demo creates a sandbox at /tmp/longhand-demo-<timestamp>/,
generates 3 fictional Claude Code sessions covering a realistic
Stripe-webhook bug + Supabase auth migration + downstream 401 fix
on a `demo-shop` project, then walks through three recall surfaces:
1. Cross-session bug retrieval ("the stripe signature bug")
2. Pattern recall ("supabase ssr auth migration")
3. recall_project_status("demo-shop")
Cleans up afterwards; pass --keep to leave the sandbox in place for
further exploration with `LONGHAND_DIR=<path> longhand …`.
### Why
The 2026-05-17 audit identified an onboarding gap: new users had no
way to preview Longhand on safe data before running `longhand setup`
on their real ~/.claude. This closes that gap with a 60-second
walkthrough that exercises the cross-session recall, file history, and
project-status surfaces without modifying anything on disk outside the
sandbox.
### Files
- longhand/demo/__init__.py
- longhand/demo/corpus.py — deterministic 3-session corpus generator
- longhand/demo/runner.py — sandbox setup + walkthrough
- longhand/cli/_commands.py — `@app.command() def demo(...)`
- tests/test_demo.py — 6 tests covering determinism, valid Claude Code
event shape, ingestion into a fresh store, recall surfaces, cleanup
- README.md — "Want to kick the tires first?" quickstart paragraph
- CHANGELOG.md — v0.9.2 entry
### Tests
228 passing (was 222, +6 demo tests). Ruff clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
§§1–7 stay as April launch copy reference. §8 is the fresh angle
paired with this PR's v0.9.2 release:
- Show HN v0.9.2 angle: lead with the new `longhand demo` command
("try it without installing on your real data"), then surface what
shipped since April (live ingestion, plan history, reconciler,
annotations/outputSchema, GLAMA A-tier, SafeSkill 93/100)
- Updated stats everywhere: 19 MCP tools (was 16), 228 tests (was 170)
- mcp.so / mcpservers.org medium copy + awesome-mcp-servers PR bullet
- awesome-claude-code resubmission bullet (prior submission was blocked
on Shipwright issue, eligible after Apr 16)
- X/Twitter 4-tweet follow-up thread
- Newsletter pitch template refreshed with current traction
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two changes, scoped for the v0.9.2 second-push:
longhand demo— new CLI command that runs a sandboxed walkthrough on a fake 3-session corpus, so new users can try Longhand without touching their real~/.claudeor~/.longhand. Closes the onboarding gap identified in the 2026-05-17 audit..gitignorehygiene (defensive secrets block) andoutreach/README.mdtraction refresh (175/wk vs 733 peak baseline, reframed sequencing for a release-paired distribution event).What it looks like
Pass
--keepto leave the sandbox in place for further exploration:Why
The 2026-05-17 runtime audit identified that new users had no safe way to preview Longhand on sample data before running
longhand setupon their real~/.claude. The demo command fills that gap with a 60-second walkthrough that exercises the cross-session recall, file history, and project-status surfaces without modifying anything on disk outside the sandbox.This release is the fresh angle for the second distribution push (April launch decayed from 733 weekly installs to 175). Paired with the existing SafeSkill 93/100 + GLAMA A-tier badges as legitimacy signals.
Files
longhand/demo/__init__.py,corpus.py,runner.py— new packagelonghand/cli/_commands.py—@app.command() def demo(...)tests/test_demo.py— 6 new tests (determinism, valid event shape, ingestion, recall, cleanup)README.md— "Want to kick the tires first?" quickstart paragraphCHANGELOG.md— v0.9.2 entry.gitignore— defensive Secrets block (.env*,*.key,*.pem,credentials.json,*.token)outreach/README.md— traction snapshot refresh + reframed sequencingTest plan
ruff check longhand tests→ cleanpython3 -m pytest -x -q→ 228 passing (was 222, +6 demo tests)python3 -m longhand demo→ all 3 recall calls produce useful narratives, sandbox cleans uppython3 -m longhand demo --keep→ leaves sandbox;LONGHAND_DIR=<path> longhand sessionsshows the 3 seeded sessionspip install --upgrade longhand && longhand demo🤖 Generated with Claude Code