Commit graph

2 commits

Author SHA1 Message Date
Claude
7405298b4b
fix: resolve the actionable reported issues (#954, #949, #933, #931, #969, #968, #924, #885)
- #954: strip non-spec source/attribution keys from all 39 plugin.json
  manifests so Claude Code's validator accepts them; metadata preserved in
  new .claude-plugin/authoring-notes.json sidecars; check_plugin_json.py now
  hard-fails manifests carrying those keys and sanity-checks the sidecar;
  CLAUDE.md ClawHub schema section updated to the new rule.
- #949: move the c-level-agents plugin out of c-level-advisor/ to a
  top-level directory so the two marketplace sources no longer overlap;
  updated marketplace.json source, homepage, descriptions, all
  cross-references, docs, harness manifest, mirror-tree symlinks/indexes,
  and rebased the moved files' relative links; domain counters trued up
  (18 -> 19 domains).
- #933: replace dead links to the gitignored maintainer-local megaprompts/
  tree with annotated plain-text references (44 files: SKILL.md, READMEs,
  agents, commands).
- #931: DynamoDB on-demand pricing updated to post-Nov-2024 rates
  ($0.625/M writes, $0.125/M strongly consistent reads).
- #969: skill_security_auditor.py and the three dossier scripts reconfigure
  stdout/stderr to UTF-8 (errors=replace) so legacy Windows codepages no
  longer crash at print time; PYTHONUTF8=1 documented.
- #968: Windows Notes section in INSTALLATION.md + README pointer for the
  core.symlinks mirror-tree checkout caveat.
- #924/#885 residuals: hook commands quote "${CLAUDE_PLUGIN_ROOT}" paths in
  all plugin hooks.json/settings.json (space-safe roots); removed the stale
  pre-rename status/review mirror symlinks and index entries left over from
  the memory-status/memory-review rename.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
2026-08-21 05:47:37 +00:00
Claude
ac6db2fab7
feat(research): notebooklm — Path-B browser-automation slice from megaprompt 03
Slice 6: browser-automation shape — the only such skill in the v2
collection. Distinct from research-pack convention (no Agent Integrity
Rules, no 1 q/sec, no DOCX). Action-routing intake (Q1 picks one of
4 actions).

After this merges: 11 of 13 v2 megaprompts shipped. Only Slice 7
(13-research orchestrator) remains.

SOURCE SPEC

megaprompts/03-notebooklm-megaprompt.md (PR #657).

WHAT THE SKILL DOES

Controls Google NotebookLM via browser automation. 4 core actions:
  1. Read/Extract — chat-based extraction from existing notebook
  2. Add Sources — push URL/text/file/Google Doc/synthesized content
  3. Studio Outputs — 9 types (Audio Overview, Study Guide, Briefing
     Doc, Timeline, FAQ, Table of Contents, Infographic, Slides,
     Mind Map) with MANDATORY custom prompts
  4. Create New Notebook — initialize with title + initial sources

DOMAIN FOLDER

research/. Semantic domain is research (users automate NotebookLM as
part of their research workflow). But technical shape is completely
different from research-pack siblings — distinct enough that the
README + SKILL.md explicitly call out the shape difference.

KEY PATH-B PRESERVED ELEMENTS

- Critical portability notice at top — requires browser automation;
  graceful failure in non-automation contexts (Step 0 check)
- Action-routing intake: Q1 forces 1-of-4 action commitment;
  refuses to start without it
- Q2-Q4 branch per action (per-source-type for Q3, mandatory custom
  prompt for Q4 when Studio)
- Screenshot-first discipline (NotebookLM is dynamic SPA)
- find()-before-click semantic finder discipline
- Tool-agnostic vocabulary (no "Claude Chrome Extension" hardcoding)
- Never auto-handle login (detect login wall → halt, never type
  credentials)
- Async fire-and-notify pattern for slow Studio ops (Audio Overview
  5-10 min, Infographic/Slides/Mind Map 2-5 min)
- Studio customization menu MANDATORY (chevron, not main button —
  defaults produce mediocre output)
- File upload via file-upload tool, NOT native picker

REPO STRUCTURE

research/notebooklm/
├── .claude-plugin/plugin.json
├── README.md
├── agents/cs-notebooklm.md       ← browser-automation persona,
│                                   async-discipline + screenshot
│                                   enforcer
├── commands/cs-notebooklm.md     ← /cs:notebooklm
└── skills/notebooklm/
    ├── SKILL.md
    ├── references/
    │   ├── browser_automation_canon.md         ← screenshot-first +
    │   │                                         find-before-click +
    │   │                                         tool-agnostic (7 sources:
    │   │                                         Anthropic Computer Use,
    │   │                                         Playwright, Selenium,
    │   │                                         WebDriver, MS Power Auto,
    │   │                                         ARIA, Anthropic cookbook)
    │   ├── studio_output_custom_prompts.md     ← per-output-type templates
    │   │                                         (7 sources: NotebookLM
    │   │                                         docs, Anthropic prompt
    │   │                                         eng, Refactoring UI,
    │   │                                         Gallo Talk Like TED,
    │   │                                         Lencioni BLUF, Bloom,
    │   │                                         Tufte)
    │   └── async_action_discipline.md          ← fire-and-notify canon
    │                                             (7 sources: Anthropic API
    │                                             timeouts, NotebookLM
    │                                             timing data, Erlang let-
    │                                             it-crash, AWS Step
    │                                             Functions, Twelve-Factor,
    │                                             Node event loop,
    │                                             Playwright/Selenium)
    └── scripts/
        ├── action_router.py                    ← stdlib: Q1-Q4 → action
        │                                         plan + UI flow + required
        │                                         params + per-source-type
        │                                         and per-studio-type
        │                                         branching + validation
        ├── custom_prompt_template_generator.py ← stdlib: output type +
        │                                         audience + length + angle
        │                                         → starter prompt for 9
        │                                         studio output types
        └── async_action_classifier.py          ← stdlib: action → WAIT
                                                  (with timeout) or
                                                  FIRE_AND_NOTIFY (with
                                                  notify message)

11 files, 2,003 lines.

VERIFIED CLEAN

All 3 scripts pass smoke tests:

- action_router: sample (studio + audio_overview + custom prompt) →
  correctly identifies FIRE_AND_NOTIFY timing, lists 11-step UI flow,
  flags critical rule "ALWAYS open customization menu (chevron) —
  NEVER click main Studio button". Add-source URL action → 3
  screenshots, WAIT timing. Validation: studio without ≥30-char
  custom prompt → FAIL with explicit error.

- custom_prompt_template_generator: sample (audio_overview + executive
  + compact) → produces complete starter prompt naming audience role,
  length, focus, structural requirements. Study_guide + undergraduate
  variant correctly applies "Define every technical term. Assume zero
  specialized background" rule.

- async_action_classifier: audio_overview → FIRE_AND_NOTIFY (5-10
  min, with notify message template). chat_send → WAIT (3-10s, 30s
  timeout, 3s polling). infographic → FIRE_AND_NOTIFY (2-5 min).
  All 16 documented actions routable.

All 3 with --output json: valid JSON.
plugin.json validates.

VERTICAL-SLICE STATUS

  ✓ Slice 1: capture (PR #659)
  ✓ Slice 2: pulse (PR #660)
  ✓ Slice 3: email pair (PR #661)
  ✓ Slice 4: landing (PR #662)
  ✓ Slice 5 batch 1: litreview (PR #663)
  ✓ Slice 5 batch 2: grants + dossier (PR #664)
  ✓ Slice 5 batch 3: patent + syllabus (PR #666)
  ✓ Cleanup PR: move pulse + capture (PR #667)
  ✓ Slice 8: reflect (PR #668)
  ✓ Slice 6: notebooklm (this PR)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent reconciliation

11 of 13 v2 megaprompts shipped after this merge. Only Slice 7
remains, then v2 is complete.

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json not updated (separate concern;
  done after all 13 ship)
- .codex/skills/notebooklm symlink not added (auto-sync workflow
  handles on merge)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 07:19:19 +00:00