Startup Memo Generator
Build gated, design-forward memo pages on zo.space while preserving source material and tracking stakeholder engagement.
Required Dependencies
Before using this skill, verify these skills exist on the target Zo:
Skills/teach-impeccable/SKILL.mdSkills/frontend-design/SKILL.mdSkills/clarify/SKILL.mdSkills/arrange/SKILL.mdSkills/typeset/SKILL.mdSkills/polish/SKILL.mdSkills/adapt/SKILL.mdSkills/harden/SKILL.md
Run teach-impeccable first for the target company/project so .impeccable.md exists and reflects the founder's local brand context.
Core Rules
- Do not rewrite source wording unless the user explicitly authorizes rewriting.
- Preserve a generation-time source snapshot before rendering a memo.
- Keep private runtime data outside
Skills/, defaulting toN5/data/startup-memo-generator/. - Use one route per memo:
/investor-memos/<human-slug>-<uuidv7>or/customer-memos/<human-slug>-<uuidv7>. - Use 4-digit stable PINs per email until reset.
- Use Pulse only for major template/functionality overhauls, not ordinary memo generation.
- Show a configurable analytics disclosure on memo pages.
Quick Start
python3 Skills/startup-memo-generator/scripts/memo.py doctor
python3 Skills/startup-memo-generator/scripts/memo.py setup --org "ACME Inc" --gmail-sender "founder@acme.example"
python3 Skills/startup-memo-generator/scripts/memo.py create-memo --title "Seed Memo" --category investor-memos --source /path/to/source.md
python3 Skills/startup-memo-generator/scripts/memo.py add-stakeholder --memo-id <memo-id> --email investor@example.com --name "Investor Name" --role investor
python3 Skills/startup-memo-generator/scripts/memo.py reset-pin --memo-id <memo-id> --email investor@example.com
python3 Skills/startup-memo-generator/scripts/memo.py email-pin --memo-id <memo-id> --email investor@example.com --pin <visible-pin-from-reset>
python3 Skills/startup-memo-generator/scripts/memo.py gate --memo-id <memo-id>
python3 Skills/startup-memo-generator/scripts/memo.py generate-route-bundle --memo-id <memo-id>
Use --dry-run on write commands to preview changes.
Workflow
- Install check: run
doctorand resolve missing dependencies. - Setup: configure org name, Gmail sender, runtime data path, replay retention, and disclosure text.
- Create memo: snapshot the source, create memo/version metadata, and generate the intended route path.
- Manage stakeholders: add, approve, block, reset PINs, or revoke access.
- Email access: generate the email body with
email-pin, then send through the target Zo's Gmail integration from the designated sender. - Generate route bundle: use templates in
assets/zo-space/as the basis for zo.space page/API routes. - Run gates: hard-block dead links, broken auth configuration, missing source snapshot, and broken route rendering; warn on PII/PR-sensitive content.
- Publish: create/update zo.space routes only after gates pass.
- Review analytics: inspect local JSONL logs and private admin dashboard.
Access Modes
whitelist-only: approved stakeholders only.email+pin: approved stakeholder enters email plus stable PIN.pin-only-with-email-capture: unknown viewers can enter email and PIN, receive the default version, and appear ascandidatein admin.
Revoking or blocking a stakeholder must invalidate active sessions for that email.
Data Model
Read references/data-model.md before modifying schemas or storage behavior.
Runtime data should be outside the skill package:
N5/data/startup-memo-generator/
├── config.json
├── memos/
├── sources/
├── analytics/
├── replay/
└── audit.jsonl
Templates
zo.space route templates live in assets/zo-space/:
memo-page.tsxadmin-page.tsxapi-auth.tsapi-content.tsapi-analytics.ts
These are templates, not active routes. Adapt them through Zo Space route tools when publishing to a specific Zo.
Generated route bundles include a manifest.json with suggested zo.space paths.
Distribution
The working skill lives in Skills/startup-memo-generator/. Use Skills/skill-export/ for a public-safe export bundle after license-chain verification and sanitization.
Before public publication, verify:
- Impeccable license and attribution obligations.
- Upstream frontend-design provenance.
- No runtime data inside the package.
- No hardcoded private email, org, source, PIN, or analytics data.