Commit graph

23 commits

Author SHA1 Message Date
Alireza Rezvani
22149f4c34
Merge branch 'dev' into codex/pulse-local-x-exports 2026-08-25 08:34:47 +02:00
Claude
08740d4ec2
fix(stream): post-merge required changes for PRs #895/#926/#942/#943/#944/#965 + counter true-up + #964 guard + #954 doc drift
Applies every pre-merge required change from audit/pr-stream-2026-08/ that
could not land on contributor forks, plus the stream's cross-cutting fixes:

- stock-analysis (#944): description trimmed 1463 -> 1001 chars; Anti-Patterns
  + Cross-References sections added; security-auditor false positive at
  holdco-assetmgr.md:58 suppressed inline (auditor:ignore-line) -> strict PASS
- deepread (#965): renamed research/dsh-deepread -> research/deepread; H1 and
  name updated; research-summarizer cross-ref path-qualified; 12 cited sources
  added across both references; plugin.json + marketplace entry; routed in the
  research orchestrator (SKILL.md registry + SIGNALS + classifier.py in
  lockstep, verified: 'deeply read this pdf' -> deepread, 3 signals)
- business-name-fit (#926): 'Use whenever' -> 'Use when' (validator trigger
  regex); +2 cited sources (USPTO TMEP §1209, Usunier & Shaner 2002) -> 5
- embedded-iot-mentor (#942): references/hardware-selection.md (7 sources,
  datasheet-anchored) + worked mini-example; validator length gate now passes
- swedish-mentor (#943): references/swedish-resources.md (6 sources, stable
  official URLs only); session recipes, milestones, learner situations,
  worked example; mandated opener softened to guidance; plugin.json +
  marketplace entry; validator length gate now passes
- Related Projects (#895): LinkedIn Skills row trued up (10 -> 11 skills,
  hardcoded star count dropped)
- check_plugin_json.py: marketplace description <= 1024 guard added to --all
  (the #964 regression guard; commercial-skills sits at 1021/1024)
- #954 doc drift: quality_gates_for_skills.md, cs-skill-author.md,
  security-guidance SKILL.md now point attribution at authoring-notes.json
- Counter true-up after the 6-skill merge batch: 370 skills / 672 tools /
  809 refs / 92 plugins across README.md badge+table, CLAUDE.md, marketplace
  metadata (derive_counters.py --check passes)

All gates green locally: frontmatter 0 errors, model freshness 0 findings,
dual-publish 0 drifted, paths 0, smoke 0 failed, plugin-json 0 FAIL.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017Bzm6Pafyxja6g4jUDPcei
2026-08-21 09:01:24 +00:00
kriptoburak
8f280faf5b fix(pulse): import local X research exports 2026-08-21 11:56:17 +03:00
Alireza Rezvani
32b63e36cc
Merge pull request #965 from xiehuan123/feature/dsh-deepread
feat(research): add dsh-deepread skill
2026-08-21 10:47:26 +02:00
Alireza Rezvani
4570768781
Merge pull request #936 from benrfairless/fix/frontmatter-yaml-validation
fix(frontmatter): repair 14 unloadable YAML blocks + add gate G10
2026-08-21 10:43:35 +02:00
Claude
43e9d3984a
style: place INSTALLATION.md Windows Notes where its ToC entry says; PEP 8 blank lines in encoding-fix scripts
Review follow-up on PR #972: the Windows Notes section now sits between
Verification & Testing and Troubleshooting, matching the Table of Contents
order, and the four scripts patched for #969 are back to exactly two blank
lines after the reconfigure block.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
2026-08-21 06:02:06 +00:00
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
xiehuan123
65e3ee5be5 feat(research): add dsh-deepread skill 2026-08-17 19:46:06 +08:00
Ben Fairless
02c04e3d32
fix(frontmatter): repair 14 unloadable YAML blocks
Twelve files had frontmatter that yaml.safe_load rejects, all from the same
cause: an unquoted plain scalar containing ": " inside description. Claude Code
responds by loading the body with empty metadata, so the skill keeps working
via /name but has no description for the model to match against, and the seven
affected agents (where name and description are required) may not load at all.

Eleven are fixed by quoting the existing scalar, leaving the text
byte-identical. design-system carries both ' and " so quoting would defeat the
repo's regex extractors in generate-docs.py and sync-codex-skills.py; its one
colon-space is reworded instead ("Precedence:" -> "Precedence is").

Two agents had no frontmatter at all and were being listed with a placeholder
description; both now declare name and description. tools is deliberately
omitted so they keep inheriting the full set, as before.

Assisted-by: Claude Code:claude-opus-5
2026-08-03 08:55:36 +08:00
Claude
358f3a3005
docs(deep-research): review follow-ups from #872 (merged before fixes landed)
#872 merged before these automated-review fixes were pushed, so applying them
as a fresh follow-up:
- README: research (academic) domain row 8 -> 9 and add deep-research to the
  8-specialist list + the intro-paragraph research stack (the global counters
  were bumped in #872 but the per-domain row wasn't — derive_counters --check
  only validates headline aggregates, not per-domain rows).
- research router SKILL.md: add a deep-research escalation note after the
  Specialist Registry so router users learn about the high-stakes path
  (router = fast, deep-research = heavyweight).
- cs-deep-research agent: fix the cs-research Related-Agents link (was a bare
  directory, now points at the actual agent file).

Methodology-only scope retained per maintainer decision (no scripts added).
2026-07-01 05:57:49 +00:00
Claude
8d6213280c
feat(research): add deep-research skill (hardened from #851)
Adds a disciplined multi-source meta-research skill — the heavyweight,
rigor-first alternative to the fast research router. 9-phase pipeline
(reframe into falsifiable hypotheses -> plan -> capability discovery ->
parallel sub-agent fan-out -> score & triangulate -> synthesize + adversarial
pass -> verify -> refresh targets), triangulation against >=3 independent
differently-typed sources, per-source files with verbatim quotes, and a
hard no-fabricated-citations rule.

Concept + SKILL.md contributed by @Socialpranker in PR #851. Hardened for the
research/ per-skill-plugin convention (the PR shipped only the SKILL.md):
- Packaged as a full plugin to match every sibling (pulse/litreview/dossier/...):
  added .claude-plugin/plugin.json, marketplace.json entry, cs-deep-research
  agent, /cs:deep-research command, and README.
- Dropped a dangling claude-api cross-reference (not a repo skill); the other
  cross-refs (research router, competitive-teardown, litreview/dossier/patent)
  are all real.
- Preserved the contributed SKILL.md + references/full-catalog.md (the upstream
  source-catalog pointer) verbatim otherwise; attribution + upstream link in
  plugin.json and README.

Counters trued up via scripts/derive_counters.py --check (passes):
354 skills, 722 references, 96 agents, 102 commands, 82 plugins.

Co-authored-by: Socialpranker <273312799+Socialpranker@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kmw1eZQoSMDr2diHbCcUkF
2026-07-01 05:46:54 +00:00
Claude
11415a614e
feat(research): free keyless search lane + routing guard (audit PR-4)
litreview: paid Consensus MCP dependency converted to an optional enhancement
lane; PubMed E-utilities + OpenAlex (both keyless) are now the default search
lane with exact URL templates and JSON field maps; brittle plan-tier detection
(marketing-copy parsing) deleted in favor of a one-line runtime availability
check; new stdlib scripts/free_search.py (--source pubmed|openalex|both,
--json, graceful exit 2 offline). Fixes the audit OPTIMIZE finding and brings
the skill into compliance with ClawHub publishing rule #3 (no paid-service
dependencies). Mirrored across README/agent/command/plugin.json/references.

research orchestrator: bare-noun signals (funding/fda/patent/grant) no longer
silent-route — single bare-noun match now returns ask + recommended specialist;
silent-route requires >=2 signals or one strong multi-word phrase (SKILL.md and
classifier.py updated in lockstep, sync verified programmatically); the
un-executable 'auto-proceeds after 5s' affordance removed everywhere; SKILL.md
trimmed 319 -> 247 lines preserving routing tables and transparency protocol.

Live classifier proof: CRISPR meta-analysis -> litreview (silent); Acme
due-diligence -> dossier (silent); 'research Microsoft' -> fallback; bare
'funding'/'fda' -> ask (recommended: grants).

Counters reconciled (+1 tool = 580); gates green: paths 0, dual-publish 0,
smoke 584/584, counters match.

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-12 05:33:50 +00:00
Claude
aecfb8e0bb
feat(skills): wave-3 optimization — domain overhauls per newgen audit
marketing: context-file unified on .claude/product-marketing-context.md;
ai-seo merged into aeo (2 new cited references, folder deleted); index +
marketing-ops routers rebuilt honestly; 24 orphan scripts wired with exact
CLIs; prompt-engineer-toolkit stub references rewritten with cited content;
Meta 20%-rule + GA4 terminology freshness; 5 zips + 3 planning docs removed

c-level-advisor: role registry 9->14 across all 6 routing surfaces; decision
memory unified on ~/.claude/decisions/{raw,approved}; onboarding schema
canonicalized; 12 phantom commands resolved; index repaired (33/37/68 real
counts); ma-playbook sourced + verification loop; 28 trigger descriptions

engineering(+team): agent-designer 279->76 lines and rag-architect 318->71
lines rebuilt around their tools (stale ada-002/pricing gone); release-manager
merged into changelog-generator (version_bumper + hotfix refs moved, crashing
release_planner dropped); 6 skills' orphan scripts wired; ms365 tools gained
real CLIs; 5 brochure skills de-filled; 4 unreferenced zips removed;
bundle counts trued (25->37, 23->32); 18 trigger descriptions

product/research/compliance/bizops: apple-hig-expert rebuilt around
hig_checker's real CLI with web-verified facts; notebooklm re-verified against
live product; 5 index skills converted to honest routers; research-summarizer
repaired with explicit lane statement; 8 over-1024 descriptions compressed;
9 sub-skills gained fenced CLI examples; GDPR one-month (Art. 12(3)) with
calendar-month deadline math; MDR PSUR table per Art. 86(1); 12 ra-qm zips
removed; 24 trigger descriptions

Verified: check_paths 0 findings; check_dual_publish 0 drifted; smoke 581/581;
check_plugin_json 77 OK; compileall rc=0; all descriptions <=1024 chars

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-11 03:58:41 +00:00
Claude
a088c8ba77
fix: phantom-path sweep — 888 unresolvable references to zero
A directory reorg added a skills/ path segment; hundreds of references never
followed. This sweep repoints every path-like reference in SKILL.md, agents,
commands, orchestration, and templates to verified on-disk targets:

- 30 root commands + 19 root agents: missing skills/ segment inserted
- 7 c-level persona agents: 17 hallucinated reference filenames substituted
  with the real files (e.g. okr_execution.md -> process_frameworks.md)
- 5 research skills: phantom scripts/office/validate.py step replaced with a
  runnable stdlib zip-integrity check
- email agents: skills frontmatter corrected to productivity/email
- orchestration/ORCHESTRATION.md + templates: stale paths fixed;
  agent-template now requires trigger phrasing in descriptions (root cause)
- 76 more files across engineering, c-level-advisor, compliance-os,
  research-ops, ra-qm, marketing, productivity; dual-publish pairs mirrored
- dead refs dropped/replaced where no target ever existed (REGISTRY.md,
  trend_analyzer.py, cursor-microinteractions.md)

New: scripts/check_paths.py linter (CI gate G1) + narrow allowlist for
teaching examples. Verified: 540 files scanned, 0 unresolvable.

https://claude.ai/code/session_019AJddAL1NADWMXsy1qNPQF
2026-06-10 14:33:00 +00:00
Claude
3db7dab15f
chore(versioning): unify remaining 20 plugins to 2.9.0
PR #756 normalized most marketplace versions to 2.9.0, but 20 newer
plugins (added after the normalization pass) remained on their own
versions on both marketplace.json and their plugin.json. Bump them all
to 2.9.0 so the registry advertises one unified release version, with
marketplace.json and every plugin.json fully in sync (62/62 at 2.9.0).

https://claude.ai/code/session_01JGwZR83iSg59EAtpTSCBjH
2026-05-27 14:25:08 +00:00
Claude
6e45e578b5
release(v2.7.0): version bumps + CHANGELOG + plugin.json schema doc
Final polish for v2.7.0 release.

Changes:
- All 12 v2 plugin.json files bumped 1.0.0 → 2.7.0 (release alignment)
- CHANGELOG.md: new v2.7.0 section documenting the 13 skills,
  3 new domain folders, marketplace + codex sync, Path-B convention,
  and 8-phase audit verification results
- CLAUDE.md: 'Current Version' bumped 2.6.1 → 2.7.0 with v2.7.0 highlights
  block (13 skills, Path-B pattern, verification summary)
- CLAUDE.md: ClawHub plugin.json schema clarified — `source` and `attribution`
  formally accepted as approved extension fields (consistent with existing
  pattern across 13 new v2 skills + 3 engineering Matt-Pocock-derivative
  plugins). Stripped at ClawHub-publish time if/when stripping pipeline lands.
- CLAUDE.md: ClawHub rule #6 version reference bumped 2.2.0+ → 2.7.0+

Audit verification before release:
- 39/39 scripts pass --help across all 13 v2 skills
- Spot-check audit (pulse/litreview/notebooklm): all 86.4/GOOD structure,
  3/3 scripts, 0 critical/high security findings
- Bulk audit (9 remaining skills): all 79.5-86.4 structure, 0 critical/high
  security findings (1 false positive in syllabus: hardcoded user-facing
  error message string contains 'npm install docx' — not runtime install)
- Cross-skill consistency: 7/7 research-pack siblings carry the Agent
  Integrity Rules block; orchestrator disambiguation present in 5 places

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 10:11:33 +00:00
Alireza Rezvani
c63822c579
Merge pull request #669 from alirezarezvani/claude/build-skills-notebooklm-browser-auto 2026-05-16 11:13:11 +02:00
Claude
4803bb8180
feat(research): orchestrator — Path-B hybrid router + fallback from megaprompt 13
Slice 7 (final v2 megaprompt). Architecture C: deterministic SIGNALS
classification → specialist delegation (≥2 signals OR single weak match)
OR own 8-step plan-decompose-search-synthesize-cite fallback.

Routing transparency is mandatory — never delegates silently. Always
states the decision + accepts override. Override is logged.

Distinct from engineering/autoresearch-agent (Karpathy's file-optimization
loop) — completely different use case. README + plugin.json + SKILL.md
all call out the disambiguation explicitly.

After this merges: ALL 13 v2 megaprompts shipped.

11 files, 1,659 lines:
- .claude-plugin/plugin.json (with distinct_from autoresearch-agent)
- README.md (disambiguation table + routing target table)
- agents/cs-research.md (router persona, routing-transparency enforcer)
- commands/cs-research.md (/cs:research <question>)
- skills/research/SKILL.md (full Path-B converted spec)
- skills/research/references/hybrid_router_architecture.md (8 sources)
- skills/research/references/deterministic_classification_canon.md (7 sources)
- skills/research/references/fallback_workflow_canon.md (7 sources)
- skills/research/scripts/classifier.py (stdlib, SIGNALS map + scoring)
- skills/research/scripts/routing_transparency_logger.py (stdlib, JSON audit)
- skills/research/scripts/fallback_decomposer.py (stdlib, 3-5 sub-questions)

All 3 scripts smoke-tested:
- classifier --sample → litreview routed (3 signals: pico + systematic review + meta-analysis)
- classifier "research microsoft" → fallback (0 signals — correct, generic "research X" must not auto-route)
- classifier "FTO landscape" → patent routed (weak: 1 signal, single specialist)
- logger --sample → 4-event sequence (decision → delegation → decision → override) persisted to ~/.research_sessions/sample.json
- decomposer --sample → 5 sub-questions via what/why/how/who/what's next framework

Path-B fidelity: SIGNALS map preserved verbatim from post-PR-#657 audit
(no bracketed placeholders; verb-noun pairs only). All anti-patterns from
the megaprompt encoded in SKILL.md.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 08:41:41 +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
Claude
6d9630f83c
chore(cleanup): move pulse + capture to proper domain folders
Surgical move PR — resolves the two domain warts accumulated during
the v2 megaprompt build sweep:

  engineering/pulse/   → research/pulse/     (research-pack — pulse is
                                              the first research skill;
                                              now joins litreview, grants,
                                              dossier, patent, syllabus)
  engineering/capture/ → productivity/capture/ (productivity — capture
                                                 is brain-dump organizer,
                                                 not engineering tooling)

WHY THIS PR

When Slice 1 (capture) shipped in PR #659, the productivity/ domain
folder didn't yet exist. When Slice 2 (pulse) shipped in PR #660, the
research/ folder didn't yet exist either. Both were placed in
engineering/ as the catch-all.

After Slices 3-5 established the productivity/, marketing/, and
research/ top-level domain folders, those two early skills were left
in engineering/ as warts. This PR resolves them BEFORE Slice 7
(13-research orchestrator) so the orchestrator can reference
research/pulse/ as its routing target without further path churn.

WHAT MOVED

Two directories moved via `git mv` (preserves rename history):
  - engineering/pulse → research/pulse (11 files)
  - engineering/capture → productivity/capture (11 files)

INTERNAL REFERENCES UPDATED

Inside the moved directories:
  - .claude-plugin/plugin.json homepage URLs (engineering/X → new path)
  - agents/cs-*.md `skills:` frontmatter field

CROSS-SKILL REFERENCES UPDATED

6 external files reference pulse and/or capture as sibling skills.
All updated via sed:

  productivity/email/agents/cs-inbox-setup.md   (capture ref)
  productivity/email/agents/cs-inbox-triage.md  (pulse + capture refs)
  research/grants/agents/cs-grants.md           (pulse ref)
  research/litreview/agents/cs-litreview.md     (pulse ref + stale
                                                 "will move in cleanup
                                                 PR" caveat removed)
  research/dossier/agents/cs-dossier.md         (pulse ref)
  marketing/landing/agents/cs-landing.md        (pulse + capture refs)

CODEX SYMLINKS RE-POINTED

.codex/skills/{capture,pulse} symlinks updated to point at new
locations. Verified resolution to SKILL.md files works.

.codex/skills-index.json still references the old paths — this file
is auto-regenerated by the codex-sync workflow on every merge to dev
(prior commits: 9a47d85, bf5d4c2, f0176e0). Will regenerate fully
when this PR merges.

VERIFIED CLEAN

- `grep -rn 'engineering/pulse\|engineering/capture'` returns zero
  results outside .codex/skills-index.json (which auto-regenerates).
- Moved scripts smoke-tested from new locations:
    productivity/capture/skills/capture/scripts/workspace_inventory.py
      --sample → returns inventory correctly
    research/pulse/skills/pulse/scripts/citation_tracker.py
      --action list → returns empty (no sessions) as expected
- Symlinks resolve: `.codex/skills/capture/SKILL.md` and
  `.codex/skills/pulse/SKILL.md` both readable.

POST-CLEANUP STATE

Domain folders contain only domain-appropriate skills:

  engineering/       — software-engineering tools (Matt Pocock skills,
                       agenthub, caveman, grill-me, grill-with-docs,
                       handoff, write-a-skill, 20+ other engineering
                       skills)
  productivity/      — capture (new), email pair (inbox-setup +
                       inbox-triage)
  marketing/         — landing
  research/          — pulse (new), litreview, grants, dossier,
                       patent, syllabus

This matches the CLAUDE.md navigation map's domain definitions and
removes the two cumulative warts.

REMAINING WORK (after this merges)

  ☐ Slice 6: notebooklm (browser-automation, last shape)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent reconciliation
  ☐ Slice 8: 02-reflect (productivity sibling of capture)

9 of 13 v2 megaprompts shipped. 3 remaining + this cleanup.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 05:08:10 +00:00
Claude
50b5b1b9ed
feat(research): patent + syllabus — Path-B batch 3 (specialty research-pack variants)
Slice 5 batch 3 — final two research-pack siblings. Specialty variants:
  - patent: 5-sub-use-case routing (novelty/FTO/landscape/diligence/litigation)
  - syllabus: BUNDLED-JS-DOCX-GENERATOR pattern (first in repo)

After this merges: ALL 6 research-pack siblings shipped (pulse + litreview
+ grants + dossier + patent + syllabus). 9 of 13 v2 megaprompts complete.

SOURCE SPECS

- megaprompts/11-patent-megaprompt.md (PR #657)
- megaprompts/10-syllabus-megaprompt.md (PR #657)

PATENT (Prior-Art + Landscape Intelligence)

Refuses generic "patent help". Q2 forces commitment to ONE of 5 sub-use-cases:

  novelty       → narrow + claim-text focused; verdict NOVEL/POTENTIALLY/NOT NOVEL
  FTO           → active patents only, jurisdiction-filtered; CLEAR/FLAGGED/HIGH RISK per jurisdiction
  landscape     → CPC trends + filer tally; CONCENTRATED/COMPETITIVE/EMERGING
  diligence     → assignee + assignment chain + family resolution; PORTFOLIO VERIFIED/PARTIAL/RISK
  litigation    → adjacent art before priority date; KNOCK-OUT/STRONG/WEAK/NO MATERIAL ART

Each sub-use-case uses fundamentally different search strategy (enforced by
sub_use_case_router.py). DOCX section emphasis varies per sub-use-case.

Key Path-B preserved elements:
- 6-Q grill-me intake with Q2 mandatory commitment + Q3-Q6 conditional skips
- 4 sources: Google Patents (workhorse) + Espacenet + USPTO + Lens.org BYOK
- CPC/IPC class follow-up after initial keyword search (catches keyword-missed art)
- Family resolution across jurisdictions (deduplicates same-invention filings)
- Date discipline (filing/priority/publication/grant — surface legally-relevant)
- Mandatory legal disclaimer for novelty + FTO (Q6 triggers)
- Out-of-scope flagging (trademark/copyright/trade-secret)
- 8-section DOCX with sub-use-case-specific emphasis

Scripts:
- citation_tracker.py: multi-source three-count (Google Patents + Espacenet +
  USPTO + Lens.org) + 1s sequential discipline + Lens BYOK tracking
- family_resolver.py: 3-pass clustering (family_id → priority_number →
  heuristic with 80% Jaccard on assignee + inventor + matching priority_date)
- sub_use_case_router.py: deterministic strategy from 5 sub-use-cases →
  query plan + ranking heuristic + DOCX emphasis flags + legal disclaimer flag

References (7+ sources each):
- sub_use_case_routing.md: MPEP, 35 USC 102/103, WIPO PCT, EPO Guidelines,
  USPTO PPS docs, Google Patents docs, Lens.org API
- cpc_classification_canon.md: CPC scheme, WIPO IPC, Mowery/Nelson/Sampat,
  WIPO PATENTSCOPE, Cohen/Nelson/Walsh, MPEP §901, Lemley/Sampat
- legal_disclaimer_discipline.md: MPEP §1.4-§1.5, AIPLA Code of Ethics,
  35 USC §282/§271, EPO Guidelines, PCT Article 39, Fischer/Henkel on PAEs

SYLLABUS (Course Supplementary Reading List)

Bundled-JS variant — generates .docx via scripts/generate_reading_list.js
(Node.js + docx package, ~395 lines) rather than inlining 300+ lines of
DOCX layout in SKILL.md.

Key Path-B preserved elements:
- 3-Q grill-me intake (input format + audience + year range)
- Group-and-confirm checkpoint after Phase 2 (proceed/merge/split/add/remove)
- Applied-domain weaving (e.g., "enzyme kinetics food processing" not just
  "enzyme kinetics" — boosts relevance dramatically)
- Audience calibration (undergrad-intro defines every term; grad-doctoral
  assumes technical fluency)
- Bloom higher-order discussion questions (apply/analyze/evaluate, NOT recall)
- Sequential Consensus 1 q/sec
- Source discipline + three-count tracking
- Bundled JS for DOCX (token-efficient + reusable + maintainable)

Scripts:
- citation_tracker.py: Consensus three-count + per-section breakdown +
  1s sequential discipline
- topic_grouper.py: greedy clustering of extracted topics into 6-12 sections
  via shared-keyword detection (≥2 significant words shared → same section);
  auto-merge smallest if >12, auto-split largest if <6
- discussion_question_validator.py: Bloom-level classification per question;
  flags BELOW-audience FAIL with verb-replacement suggestions; flags
  ABOVE-audience WARN
- generate_reading_list.js: BUNDLED Node.js DOCX generator (~395 lines).
  Multi-location require fallback for `docx` package. JSON input → .docx
  output. Title page + intro + learning outcomes box + numbered papers
  per section + audit log + footer.

References (7+ sources each):
- applied_domain_weaving.md: Bloom 1956, Mayer multimedia learning, Fink
  significant learning, Donald disciplinary thinking, Lave/Wenger situated
  learning, Chickering/Gamson 7 principles, Boyer scholarship of application
- audience_calibration.md: Bloom/Anderson-Krathwohl revised taxonomy, Marzano
  new taxonomy, Hattie visible learning, Bain great teachers, Walvoord/Anderson
  effective grading, Brookfield/Preskill discussion, Bjork desirable difficulty
- bundled_script_pattern.md: Karpathy-coder discipline, CLAUDE.md anti-patterns,
  docx Node.js package, CommonJS module resolution, Twelve-Factor App,
  Kernighan/Plauger Software Tools, McIlroy/Unix philosophy

REPO STRUCTURE

Both plugins in research/. Patent uses standard 11-file layout. Syllabus
uses 12-file layout (extra file: scripts/generate_reading_list.js bundled JS).

VERIFIED CLEAN

All 7 scripts pass smoke tests:

Patent:
- sub_use_case_router: FTO with US+EP → 8 queries with jurisdiction
  scaling; novelty (no jurisdictions) → 6 queries with claim-focused
  ranking
- family_resolver: 6 sample hits → correctly resolves to 3 unique families
  (Acme: 3 jurisdictions; Beta: 2 jurisdictions; Gamma: 1). Deduplication
  savings: 3
- citation_tracker: lifecycle works, multi-source counts (Google Patents
  + Espacenet + USPTO + Lens) tracked separately, audit block matches
  DOCX Section 8 format

Syllabus:
- topic_grouper: 19 sample topics → 12 sections, headings derived from
  shared keywords ("Plant + Physiology", "Animal + Anatomy", etc.)
- discussion_question_validator: 5 sample questions correctly classified.
  "What did authors find?" → recall, OK for undergrad_intro, FAIL for
  grad_doctoral with verb-replacement suggestions. "Design a follow-up
  study..." → create, OK for grad_doctoral.
- citation_tracker: lifecycle works with per-section breakdown
- generate_reading_list.js: syntax valid (node --check passes)

All scripts: --output json valid. 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 (this PR)
  ☐ Slice 6: notebooklm (browser-automation, last shape)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent reconciliation
  ☐ Slice 8: 02-reflect (productivity)
  ☐ Cleanup PR: move engineering/pulse + engineering/capture

9 of 13 skills shipped after this merge. ALL research-pack siblings
complete (6 of 6 in research/). Only 3 special-shape skills remain:
notebooklm (browser-auto), 13-research (orchestrator), 02-reflect
(productivity).

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json: separate concern
- .codex/skills/ symlinks: auto-sync on merge
- engineering/pulse + engineering/capture: cleanup PR queued

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 02:06:56 +00:00
Claude
24a0bcd9f7
feat(research): grants + dossier — Path-B batch 2 (research-pack siblings)
Slice 5 batch 2: two research-pack siblings from megaprompts 08 + 12.
Same shape as litreview (Slice 5 batch 1) with domain-specific variants:
- grants: multi-source (Consensus + RePORTER POST + NOSI), 9-section DOCX
- dossier: hypothesis-testing variant (Q4 mandatory, ≥30% disconfirming
  rule enforced), source-tier discipline (primary/secondary/tertiary)

SOURCE SPECS

- megaprompts/08-grants-megaprompt.md
- megaprompts/12-dossier-megaprompt.md

(Both PR #657. Canonical specs.)

GRANTS (NIH Funding Intelligence)

For clinical researchers — 6-Q grill-me (research idea + career stage +
prelim + environment + posture + institutes) → 5-facet Consensus
positioning → RePORTER POST institute mapping → NOSI fetches →
9-section .docx with MANDATORY program officer recommendation.

Key Path-B preserved elements:
- RePORTER POST-only constraint (web_fetch is GET — must use
  bash_tool + curl). Documented prominently in SKILL.md + reference +
  command.
- Dynamic fiscal year computation (Oct 1 = new FY).
- Scope-aware mechanism matching (NOT career stage alone — common
  failure mode).
- Mandatory program officer recommendation (single highest-leverage
  pre-submission step).
- Plan-tier detection from Consensus "Found N, showing top M" pattern.
- 9 DOCX sections including Audit Log.

Scripts:
- citation_tracker.py: multi-source three-count audit (Consensus
  sent/shown/cited + RePORTER projects/cited + NOSI fetches with
  success/total) + 1s sequential discipline enforcement
- fiscal_year_calculator.py: Oct-boundary-aware FY computation,
  no hardcoded years
- mechanism_matcher.py: 3D lookup (career × scope × prelim) with
  environment override (R15 for resource-constrained), warnings for
  common mismatches

References (7+ sources each):
- nih_mechanism_matching.md: Sackett, Rockey, Robertson, NIH RePORTER,
  Mehrotra, NRSA guidelines, Heggeness
- reporter_post_patterns.md: RePORTER API v2 docs, NIH Guide for
  Grants, praw etiquette, Cohen backoff, curl docs, Maynez on
  hallucinated citations, Susskind audit-log
- docx_9_sections.md: docx lib, NIH OER writing strategies, Russell
  & Morrison Grant Writers' Workbook, PRISMA, RePORTER, Heggeness,
  Strunk & White

DOSSIER (Decision-Grade Entity Research)

Hypothesis-testing variant — refuses to be "tell me about Microsoft".
Q4 (your hypothesis) is MANDATORY; ≥30% of search budget allocated
to disconfirming queries. Source-tier discipline (primary/secondary/
tertiary) on every flag.

Key Path-B preserved elements:
- Non-generic framing prominently in SKILL.md ("the forcing Q4 is
  what makes this skill non-generic")
- Q4 mandatory with implicit-fallback flag if user refuses after one
  push-back
- ≥30% disconfirming rule documented + enforced via stdlib tool
- Subject-type routing (person/company/nonprofit/gov source matrices)
- Source-tier on every flag in DOCX
- 9 DOCX sections including verdict (SUPPORTED/PARTIALLY/DISPROVEN/
  INCONCLUSIVE)
- Conversation hooks finding-tied, not generic
- BYOK MCP usage flagged in audit log
- Sensitivity exclusions (Q6) honored

Scripts:
- citation_tracker.py: three-count + supporting/disconfirming
  classification per query + source-tier per citation + tier-weighted
  verdict computation + BYOK MCP tracking
- disconfirming_evidence_balance.py: enforces ≥30% rule with
  PASS/WARN/FAIL verdicts + antonym-pivot suggestions for adding
  disconfirming queries (antonym pivots like consolidating →
  diversifying, growing → shrinking, hiring → laying off)
- source_tier_classifier.py: URL → tier via comprehensive domain
  pattern matching (SEC/court/.gov primary, NYT/WSJ/TechCrunch
  secondary, Reddit/HN/Glassdoor tertiary, blog hosting platforms
  pattern-matched, company-official heuristic via subject keywords)

References (7+ sources each):
- hypothesis_testing_discipline.md: Popper Logic of Scientific
  Discovery, Kahneman, Tetlock Superforecasting, Dawes, Taleb Black
  Swan, Popper Conjectures & Refutations, Levitin
- subject_type_source_matrix.md: SEC EDGAR docs, ProPublica
  Nonprofit Explorer, FIPS/open-data, Pickering progressive
  enhancement, Schneier provenance, OWASP, Charity Navigator
- conversation_hook_quality.md: Carnegie, Cialdini, Voss calibrated
  questions, Goleman EI, Lencioni trust, Gallo TED rhetoric, Schein
  humble inquiry

REPO STRUCTURE

Both plugins in research/ (the new domain folder from Slice 5 batch
1). Mirrors litreview's structure exactly: plugin.json + README +
agents/cs-* + commands/cs-* + skills/<name>/SKILL.md + 3 refs + 3
scripts = 11 files per skill, 22 total.

VERIFIED CLEAN

All 6 scripts pass smoke tests:

Grants:
- fiscal_year_calculator: Oct 2026 → FY 2027 ✓; Sep 2026 → FY 2026 ✓
- mechanism_matcher: --sample (early career + pilot) returns 4
  K-series mechanisms with full rationale + budget + best-for. With
  resource-constrained env, correctly leads with R15 (the targeted
  mechanism).
- citation_tracker: lifecycle works. Sequential discipline enforced.
  Multi-source counts (Consensus + RePORTER + NOSI) correctly
  aggregated. Audit-block output matches DOCX Section 9 format.

Dossier:
- source_tier_classifier: 11 sample URLs correctly tiered
  (SEC/Microsoft official/ProPublica/Scholar/FederalRegister =
  primary; NYT/TechCrunch = secondary; HN/Glassdoor/Medium =
  tertiary; unknown blog = secondary with low-confidence note).
- disconfirming_evidence_balance: sample (80% supporting / 20%
  disconfirming) correctly returns WARN with antonym-pivot
  suggestions ("consolidating → diversifying"). FAIL threshold
  triggers at <20%.
- citation_tracker: lifecycle works. Supporting/disconfirming
  classification tracked. Source-tier per citation. Verdict computed
  (INCONCLUSIVE on <3 cited). BYOK MCP usage tracked.

All 6 scripts: --output json valid. plugin.json validates.

VERTICAL-SLICE STATUS

  ✓ Slice 1: capture (light prompt-flow, PR #659)
  ✓ Slice 2: pulse (research-pack, PR #660)
  ✓ Slice 3: email pair (workflow-pair, PR #661)
  ✓ Slice 4: landing (generator, PR #662)
  ✓ Slice 5 batch 1: litreview (academic research, PR #663)
  ✓ Slice 5 batch 2: grants + dossier (this PR)
  ☐ Slice 5 batch 3: patent + syllabus (specialty variants)
  ☐ Slice 6: notebooklm (browser-automation)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent
    reconciliation
  ☐ Slice 8: 02-reflect (productivity)
  ☐ Cleanup PR: move engineering/pulse + engineering/capture

7 of 13 skills shipped after this merge.

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json: separate concern, after all 13 ship
- .codex/skills/ symlinks: auto-sync workflow on merge
- engineering/pulse + engineering/capture: cleanup PR queued

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-15 20:50:42 +00:00
Claude
a4bb1fc648
feat(research): litreview skill — Path-B research-pack sibling from megaprompt 09
Slice 5 batch 1 of N: first research-pack sibling after pulse (Slice 2).
Establishes the academic-literature variant of the research-pack shape +
introduces the research/ top-level domain folder.

SOURCE SPEC

megaprompts/09-litreview-megaprompt.md (PR #657). Canonical.

DOMAIN FOLDER DECISION (research/ — new)

Pulse currently lives in engineering/ (placed before the domain-folder
discipline crystallized). The right home for academic-research skills is
research/ — parallel to productivity/, marketing/. This PR creates that
folder; pulse + capture moves are deferred to a coordinated cleanup PR.

Cumulative folder warts:
  - engineering/capture/ → productivity/capture/ (Slice 1 wart)
  - engineering/pulse/   → research/pulse/      (Slice 2 wart)

Cleanup PR will address both before Slice 5 (orchestrator) lands.

WHY ONE SKILL PER PR (NOT BATCH 6)

User recommended batching 6 research-pack siblings. Doing 1 in this PR
instead, with rationale: each megaprompt is dense (litreview alone is
266 lines with 8 DOCX sections, 3-tier search budget logic, cross-search
intelligence trackers). 33-66 files of unfocused conversion risks Path-B
fidelity. Subsequent PRs will ratchet up to 2 skills each now that the
academic-literature pattern is validated.

WHAT THE SKILL DOES

Turns a research question into a strategically planned mini literature
review delivered as an 8-section .docx. Grill-me intake (question +
framework + tentative depth) before reconnaissance; second forcing
checkpoint after Phase 2 confirms framework + sub-areas + final depth.
Sequential Consensus searches at 1 q/sec, budget-allocated by tier
(5/10/20). Cross-search intelligence (repeat-hits, recurring-authors,
citations-per-year) feeds the "Start Here" + "Key Research Groups"
DOCX sections. Output is a "launching pad" — orientation guide, not
a finished review.

PATH-B FIDELITY (megaprompt → SKILL.md)

- Frontmatter description preserved verbatim from megaprompt.
- 10-step workflow structure preserved 1:1 (Agent Integrity Rules →
  Error Handling → Phase 0 intake → Phase 1 recon → Phase 2 framework
  → Checkpoint → Phase 3 searches → Phase 4 DOCX → Doc structure →
  Technical requirements).
- All 3 grill-me intake questions preserved verbatim with rationale.
- All 5 Agent Integrity Rules preserved verbatim per PR #657 audit.
- All 3 search budget tiers fully allocated (5/10/20 with explicit
  query breakdown per tier).
- All 8 DOCX sections fully specified.
- Interactive checkpoint described as forcing-options moment (not
  free-text).
- Three frameworks (PICO/SPIDER/Decomposition) + Hybrid documented
  with examples.
- Anti-patterns + error-handling table + validation checklist preserved.

RESEARCH-PACK CONVENTION MARKERS (in SKILL.md per PR #657 audit)

  Agent Integrity Rules: 2     sequential: 5
  three-count: 1               plan-tier: 3
  1 query/sec: 2               checkpoint: 9
  retry once: 2                Source discipline: 1
  3 consecutive: 2

All markers present multiple times.

REPO STRUCTURE

research/litreview/
├── .claude-plugin/plugin.json     ← source.spec → megaprompts/09
├── README.md
├── agents/cs-litreview.md          ← sequential-Consensus + checkpoint enforcer
├── commands/cs-litreview.md        ← /cs:litreview <research-question>
└── skills/litreview/
    ├── SKILL.md                    ← Path-B converted
    ├── references/
    │   ├── framework_selection.md       ← PICO/SPIDER/Decomp/Hybrid + 7 sources
    │   │                                  (Sackett, Cooke et al., Booth, PRISMA,
    │   │                                  Cochrane, Hewitt-Taylor, JBI)
    │   ├── search_budget_allocation.md  ← 5/10/20 + cross-search + 7 sources
    │   │                                  (Consensus docs, Cochrane, Greenhalgh,
    │   │                                  PRISMA, Sandelowski, Lawani, AWS)
    │   └── docx_8_sections.md            ← 8-section guide + 7 sources (docx lib,
    │                                       OOXML, PRISMA, Cochrane, Lipsey, Tufte,
    │                                       Strunk)
    └── scripts/
        ├── citation_tracker.py            ← stdlib: three-count + 1s rate-limit
        │                                    discipline enforcement
        ├── framework_recommender.py        ← stdlib: keyword heuristic PICO/SPIDER/
        │                                    Decomp/Hybrid recommendation
        └── cross_search_aggregator.py      ← stdlib: repeat-hits, recurring-authors,
                                              citations-per-year ranking

11 files, 2,020 lines. Slightly heavier than pulse (1,643) due to:
- Denser SKILL.md (251 lines vs pulse 258 — comparable)
- Heaviest reference: docx_8_sections.md at 287 lines (8 sections × ~35
  lines each spec)
- citation_tracker.py is heavier than pulse's (258 vs 251) because it
  enforces the 1s sequential gap explicitly

VERIFIED CLEAN

- citation_tracker.py: full lifecycle works. Sequential discipline
  enforced — second search at 0.04s correctly REJECTED with "wait
  0.96s more"; after 1.1s sleep, accepted. Three-count audit block
  output matches PR #657 audit format.
- framework_recommender.py:
    PICO question (clinical reasoning vs physicians) → recommends PICO
    SPIDER question (qualitative burnout study) → recommends SPIDER
      with high confidence (3 signals)
    Decomposition question (RAG systems benchmarks) → recommends
      Decomposition (after plural-aware regex fix; was originally
      missed due to "systems" not matching "system")
- cross_search_aggregator.py: sample with overlapping searches:
    Repeat-hits: Med-PaLM benchmark correctly flagged (3 sub-areas)
    Recurring authors: Singhal correctly top (4 appearances)
    Citations-per-year: USMLE benchmark paper top at 266/yr
- All 3 with --output json: valid JSON
- plugin.json validates; conforms to repo schema

NOT-YET-DONE (for upcoming PRs)

- Slice 5 batch 2: grants + dossier (next PR; same shape as litreview)
- Slice 5 batch 3: patent + syllabus (specialty variants — patent has
  sub-use-case routing, syllabus has bundled JS DOCX generator)
- Slice 6: notebooklm (browser-automation shape, separate slice)
- Slice 7: 13-research orchestrator + autoresearch-agent reconciliation
- Slice 8: 02-reflect productivity
- Cleanup PR: move engineering/pulse + engineering/capture to their
  proper domain folders

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-15 18:27:15 +00:00