A Claude Code skill that transforms idea seeds (memos, URLs, sparks) into structured hypotheses and supports daily PM activities as a thinking companion.
bochi is a "thinking hub accessible from anywhere" for PMs.
- Thinking Hub: Access the same memory from Discord DM, Mac CLI, or anywhere
- S3 Data Hub: bochi-data → S3 → all environments synced. Data is always current
- Proactive Memo Save: bochi proposes saving valuable conversations without waiting for "save this"
- YouTube/X real-time sources are now first-class in the Phase C ReAct loop. YouTube via
@handle→ channelId → RSS; X vianitter.net/<user>/rss. Verified channels and accounts are append-only-curated inreferences/learned-channels.md(mirrorslearned-sources.md). - Format-specific E-E-A-T caps for video/SNS: single tweet 24/40, thread 32/40, video+transcript 36/40, articles uncapped. Freshness bonus ±2 by hours since publish. SNS-only conclusions carry a
preliminarytag. - Phase D Check #6 — Video/SNS hygiene: written-source pairing required, ISO publish timestamp, transcript citation, >72h flagged as stale.
- Cache-first transcript pipeline: structurally solves YouTube's blanket block of cloud-provider IPs (AWS/GCP/Azure).
~/bochi-data/transcripts/<id>.txtis the shared cache; Mac (residential IP) fetches → S3 sync → all bot environments read it.scripts/fetch_yt_transcript.pyruns cache-first on every host. - Sub-agent summarisation pattern (adopted from pokemon-champions skill): videos longer than ~3 minutes are summarised by a
general-purposesub-agent before being treated as a Phase C signal — used as "why is this trending / practitioner take," not as numerical ground truth.
deploy/setup-cron.shswitched to an idempotent rebuild strategy. Removes legacy--triggercron entries (the flag was removed from Claude Code CLI). Adds S3 sync cron entries, auto-fixes the @reboot path.deploy/bochi-health-check.shpasses shell variables to its embedded Python viaos.environ(no quoting bugs on special-character paths). RecognisesListening for channel messages+ prompt as a healthy idle state to prevent false unresponsive detection.deploy/bochi-tmux-start.shaddsclean_stale_lock()that atomically resets the lock inode viamv, releasing stale flock holders. flock timeout reduced 120s → 30s.
deploy/send-newspaper-to-discord.pyruns0 23 * * *UTC = 8:00 JST every morning, delivering the day's curated brief to the Discord DM. Article-card format, embed-suppressed URLs for clean mobile reading, chunks at the 1900-char limit fromaccess.jsontextChunkLimit.
worker/transcript-proxy/keeps an Innertube-based Worker. YouTube extended its bot detection to Cloudflare edge IPs in 2026, so the Worker is currently inactive, but it can be revived without code change by combining with a residential proxy or a third-party API (Supadata) — setBOCHI_YT_PROXY_URLandBOCHI_YT_PROXY_TOKENand Tier 2c activates automatically.
v2.0-v2.4 changes
- All 14 spec files have Edge Cases, SKILL.md DRY, Session Continuity Protocol, 49 scenario tests
- Mode 1 spec extraction, proactive memo save, CI/CD, DX files, 47 tests
- deploy/lightsail-claude.md, Mode 6 Google Brief, Mode 7 PM Tools, 40 tests
- response-speed-spec (7 techniques), discord-ux-spec, seen-tracking cache
- 5-Mode Router, Context Signal Triggers, Persistent Data Layer, Discord Integration
SCAMPER expansion → ReAct research → E-E-A-T scoring → first-principles critique in a single skill. Neither IDEO Design Thinking (expansion only) nor OpenAI Deep Research (research only) offers this integrated flow.
learned-sources.md + feedback-log.md + PDCA reflections + PostToolUse Hooks auto-record. Research precision improves with use. Miro AI / Juma / Perplexity have no accumulation mechanism.
The PostToolUse Hook (
bochi-feedback-capture.sh) is included in my_dotfiles underclaude/scripts/hooks/and symlinked to~/.claude/scripts/hooks/byset_up.sh.
Fits as the upstream stage (thought expansion) of /brainstorming (design exploration) → /requirements_designer → /speckit-bridge.
Auto-handoff to /pm-discovery-interview-prep connects directly to user validation.
Morning newspaper → commute memos → meeting-gap casual chat → evening memory review.
| Mode | Trigger | Purpose |
|---|---|---|
| 1 Idea | bochiして, URL, thinking verbs + context |
Deep dive + expand + research |
| 2 Newspaper | 新聞, 朝刊, cron 08:00 JST |
Daily curated news by interest |
| 3 Casual Chat | おすすめ, 何か面白い? |
Related updates + serendipity |
| 4 Memory | 記憶整理, 覚えてること教えて |
Search, review, archive |
| 5 Companion | メモある?, 前に話したやつ |
Surface relevant memos during work |
| 6 Google Brief | 今日の予定, メール確認 |
Calendar + Gmail from cache |
| 7 PM Tools | イシュー一覧, チケット作って |
Linear/GitHub Issue delegation |
| 8 Vocab | 単語帳, クイズ, bare English word/phrase |
Vocabulary notebook + SM-2 quiz + bulk add |
# Install
cd ~/.claude/skills && git clone <repo-url> bochi
# Data directory is created on first use at ~/.claude/bochi-data/
# Basic usage — say: "bochiして" or "新聞" or "おすすめ"
# Discord setup (optional) — see references/discord-setup.mdInput (memo or URL)
→ Phase A: Deep Dive — Socratic 8-level questioning (max 5 questions)
→ Phase B: Expand — SCAMPER 7 perspectives, 2-3 proposals
→ Phase C: Research — ReAct loop + E-E-A-T quality scoring
→ Phase D: Critique — First-principles check + bias verification (HARD-GATE)
→ Phase E: Output — Teresa Torres OST structure + user hypotheses
→ Phase F: Next Steps — brainstorming / interview-prep / continue
→ Phase G: Learning — feedback → profile update
~/.claude/bochi-data/
├── index.jsonl # Master search index (JSONL append)
├── user-profile.yaml # Interests, category weights, settings
├── seen.jsonl # Seen article URL tracking (dedup)
├── topics/ # Researched topics (1 file each)
├── memos/ # Cross-context memos (Discord/CLI)
├── newspaper/ # Newspaper archive
├── reflections/ # PDCA daily reflections
├── stats/usage.jsonl # Skill usage stats
├── sources/verified.jsonl # Verified source quality DB
├── cache/ # Performance cache layer
│ ├── newspaper-draft.md # Pre-generated newspaper (06:00 JST cron)
│ ├── trending/*.jsonl # Category trending article pool
│ ├── meta.json # Cache TTL management
│ ├── calendar.md # Google Calendar cache (S3 sync)
│ └── gmail.md # Gmail top 10 cache (S3 sync)
├── errors/ # Error logs + diagnosis reports
│ └── known-patterns.jsonl # Known error pattern DB
└── archive/ # Archived old data (never deleted)
| Layer | Condition | Access |
|---|---|---|
| Active | <90 days or recently referenced | Auto-surface |
| Warm | 90-180 days, no references | Explicit search only |
| Archive | >180 days or user-approved | Archive search only |
| Framework | Phase | Origin |
|---|---|---|
| Socratic Method 8 Levels | Phase A | Socrates / Pedagogy |
| SCAMPER | Phase B | Bob Eberle (1971) |
| ReAct Pattern | Phase C | Yao et al. (2022) |
| E-E-A-T | Phase C/D | Google Search Quality Guidelines |
| First-Principles Thinking | Phase D | Jensen Huang / NVIDIA |
| Opportunity Solution Tree | Phase E | Teresa Torres |
| Mom Test / JTBD | Phase F (handoff) | Rob Fitzpatrick / Clayton Christensen |
| Use Case | Reason | Alternative |
|---|---|---|
| Team brainstorming | Designed for individual PMs | Miro AI, FigJam AI |
| Exhaustive source survey | 3-5 searches have limits | OpenAI Deep Research |
| Requirements already clear | Expansion phase unnecessary | /requirements_designer |
| Quantitative data analysis | Qualitative idea expansion only | /pm-data-analysis |
| Bug fixes for existing product | Not a new idea | /brainstorming |
| Urgent decisions | Full flow takes time | Ask Claude directly |
Based on GAFA Rubric v2 (5 dimensions x 20 points = 100 max).
| Dimension | v2.3 | v2.4 | Notes |
|---|---|---|---|
| Maintainability | 16 | 17 | SKILL.md 350 lines. Mode 2-7 duplicate table removed |
| Reliability | 15 | 17 | Edge Cases 14/14 specs complete. All fallbacks explicit |
| Testing & CI | 14 | 15 | 49 tests. Edge Case tests added. RS-03 differentiated |
| DX | 17 | 18 | Quick Start improved. Session Continuity Protocol added |
| Product | 16 | 17 | S3 scripts verified present. Vision + proactive save + S3 loop documented |
| Total | 78 | 84 | Grade B — practical ceiling without structural changes |
Owner (paired user) gets full interaction + learn + memorize. Others get read-only responses.
- React-first (HARD-GATE): reaction before any text
- Section splitting: each message <=300 chars, reply-reference chains
- Progressive Disclosure: react -> placeholder -> edit -> final reply (push notification)
| Dependency | Required | Purpose |
|---|---|---|
| Discord MCP Plugin | Optional | Discord DM integration |
| Context7 MCP | Optional | Library docs in tech research |
| gog CLI | Optional | Google Calendar/Gmail sync (Mac only) |
| github_project_manager skill | Optional | Mode 7 GitHub Issue delegation |
| Figma MCP | Optional | FigJam diagram generation |
bochi/
├── SKILL.md # Main skill (350 lines, 7-mode router)
├── README.md # Japanese documentation
├── README.en.md # This file
├── CONTRIBUTING.md # [v2.3] Contribution guide
├── CHANGELOG.md # [v2.3] Version history
├── .markdownlint.json # [v2.3] Lint config
├── .github/workflows/quality.yml # [v2.3] CI/CD
├── deploy/
│ ├── lightsail-claude.md # [v2.2] Lightsail CLAUDE.md + [v2.5] File Protection, Quality Standards
│ ├── protect-readonly.sh # [v2.5] PreToolUse hook: blocks writes to protected files
│ └── restart-bot.sh # [v2.5] Safe deploy script (6-point smoke test)
├── tests/ # [v2.5] Infrastructure, data, Discord E2E tests
│ ├── infra-check.sh, data-integrity.sh, s3-sync-test.sh
│ ├── discord-e2e.sh, run-all.sh
│ └── ... # 5 shell scripts total
├── examples/
│ └── mode-1-walkthrough.md # [v2.3] Mode 1 E2E walkthrough
└── references/ # 27 files (specs + data, on-demand load)
├── idea-expansion-spec.md # [v2.3] Mode 1 Phases A-G
├── newspaper-spec.md # Mode 2
├── casual-chat-spec.md # Mode 3
├── memory-spec.md # Mode 4
├── companion-spec.md # Mode 5 + S3 sync loop
├── google-brief-spec.md # [v2.2] Mode 6
├── pm-tools-bridge-spec.md # [v2.2] Mode 7
├── vocab-notebook-spec.md # Mode 8 Vocabulary + SM-2
├── discord-ux-spec.md # [v2.1] Discord UX
├── response-speed-spec.md # [v2.1] Speed optimization (7 techniques)
├── self-healing-spec.md # Self-healing + JSONL recovery
├── scenario-tests.md # [v2.4] 49 scenario tests
└── ... # 15 more spec/data files
All framework copyrights and trademarks belong to their original authors. This skill is independently designed and implemented with reference to these methodologies.