Commit graph

919 commits

Author SHA1 Message Date
Alireza Rezvani
f7bb1f86bc
chore(ci): block "./skills" regression — validator + CI gate (#686 follow-up) (#690)
Issue #686 was the second round of the same Claude Code path-validator
tightening: v2.1.107 rejected bare "./" (fixed in #539 by moving to
"./skills"), then v2.1.133 also rejected "./skills". The validator that
codified the #539 fix was still recommending "./skills" verbatim — so a
future round 3 would have hit the same trap.

This commit makes the validator catch the regression and runs it in CI:

- scripts/check_plugin_json.py
  - Reject any "skills" string starting with "./" (catches both
    "./skills" and "./skills/sub" patterns)
  - Update docstring + error message to point at the layout-correct
    forms instead of the now-broken "./skills"
  - Recognize "source" and "attribution" as approved extension fields
    (already documented in CLAUDE.md but not in the validator), so the
    21 pre-existing false-positives go away and CI can run blocking
  - Drop the "./" rejection inside arrays — CLAUDE.md says ["./"] is
    the correct single-skill-at-root form

- .github/workflows/ci-quality-gate.yml
  - Add blocking "Validate plugin.json manifests" step that runs the
    validator on every PR

- CLAUDE.md
  - Add an Enforcement note pointing at the validator and the lockstep
    rule: when CC tightens its path validator again, update validator
    rules and CLAUDE.md together

Verified: 69/69 manifests pass; 6-case smoke test confirms validator
rejects all three known-broken forms ("./skills", "./", "./skills/sub")
and accepts all three documented-valid forms ("skills", ["./"],
explicit array).

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-19 05:54:56 +02:00
Alireza Rezvani
daa88bb299
Merge pull request #689 from alirezarezvani/claude/fix-issue-686-5zYHm 2026-05-19 05:44:39 +02:00
Claude
663bc8afa2
fix(plugin.json): drop "./" prefix from skills field to clear /doctor warning (#686)
Claude Code 2.1.133+ rejects "skills": "./skills" with a "Path escapes
plugin directory" warning, even though ./skills resolves to a valid
subdirectory inside the plugin root. Per the upstream docs example, the
correct value is "skills" (no ./ prefix), which works across all CC
versions and other tools (Codex, Gemini CLI, etc.).

Applied to all 47 plugin.json files that used "./skills"; updated
CLAUDE.md ClawHub publishing constraints to document the new convention
and reference the issue.
2026-05-19 03:43:34 +00:00
Alireza Rezvani
f96e771354
Merge pull request #688 from alirezarezvani/claude/skills-plugins-framework-XjTjh 2026-05-19 05:40:46 +02:00
Claude
7947638b31
feat(v2.8.0-sprint1): add business-operations + commercial top-level domains
Two new top-level domain folders expanding the repo from 313 → 319 production
skills across 14 domains. Path-B 11-file contract per skill, stdlib-only Python
tools, Matt Pocock grill-with-docs discipline baked into every SKILL.md.

## New domains

- business-operations/ — internal-ops skills for BizOps leads, COO direct
  reports, vendor management, IT ops. Sprint 1 ships 3 skills:
  - business-operations-skills (orchestrator, context: fork)
  - process-mapper (BPMN + bottleneck + cycle-time, 4 industry profiles,
    Lean/TOC canon)
  - vendor-management (scorecard + SLA + 3rd-party risk, 4 industry profiles,
    Shared Assessments SIG-Lite, NIST SP 800-161, ISO/IEC 27036)

- commercial/ — per-deal-and-packaging skills. Sprint 1 ships 3 skills:
  - commercial-skills (orchestrator, context: fork)
  - pricing-strategist (5-model picker, Van Westendorp PSM with OPP/IDP/PMC/PME,
    packaging with 7 anti-pattern detectors, Ramanujam/Skok/Tunguz canon)
  - deal-desk (5-dim scorer, discount approval router, 10-pattern terms redliner,
    never auto-approves — every verdict names the human approver)

## Chaining via context: fork

Both domain orchestrators set context: fork in frontmatter so heavy ingestion
(vendor catalogs, RFP docs, process transcripts) stays out of the parent
session. Sub-skills opt into fork only when they ingest large artifacts
(vendor-management does, pricing-strategist and deal-desk do not).

## Matt Pocock grill discipline

Every Sprint 1 SKILL.md ships a "Forcing-question library" section: 5-7
questions, walked one at a time by the orchestrator (or /cs:grill-bizops,
/cs:grill-commercial), each with a recommended answer + canon citation.
Discipline derived from engineering/grill-me + engineering/grill-with-docs
(Matt Pocock, MIT).

## Hard rules per domain

- BizOps: every output is a recommendation, never an auto-decision.
- Commercial: pricing outputs model+range (never a single number); deal outputs
  route to a named human approver (never auto-approve); forecasts surface the
  conversion assumption explicitly.

## Agents + commands

- cs-bizops-orchestrator agent ("Where does the work spend most of its time
  waiting?")
- cs-commercial-orchestrator agent ("What's the margin on this deal at full
  discount?")
- 8 new slash commands: /cs:bizops, /cs:commercial, /cs:grill-bizops,
  /cs:grill-commercial, /cs:process-map, /cs:vendor-review, /cs:pricing-strategy,
  /cs:deal-review

## Verification

- All 12 new Python tools (4 skills × 3 each) pass --help and --sample
  smoke tests, exit 0
- Stdlib-only across the board
- 12 reference docs each cite ≥ 7 authoritative sources
- Marketplace registry: 57 → 59 plugins

## Sprint 2 (not in this PR)

- BizOps: capacity-planner, internal-comms, knowledge-ops, procurement-optimizer
- Commercial: partnerships-architect, channel-economics, commercial-policy,
  rfp-responder, commercial-forecaster

## Files

50 new files: 6 SKILL.md (2 orchestrators + 4 leaf) + 12 Python tools + 12
references + 4 asset templates + 2 plugin.json + 2 CLAUDE.md + 2 README.md +
2 cs-* agents + 8 slash commands + 1 master plan doc + marketplace.json +
root CLAUDE.md update.

Master plan: documentation/implementation/bizops-commercial-expansion-plan.md

https://claude.ai/code/session_015bBb4HzWCf5HH5QK2TGtnW
2026-05-19 03:36:04 +00:00
Alireza Rezvani
4fb2f2ebbe
Merge pull request #685 from alirezarezvani/claude/audit-contributor-prs-89CK2 2026-05-18 15:34:03 +02:00
Claude
4ac4444206
feat(codex): add plugin icon for Codex marketplace display
Closes #665. Adds 500x500 PNG icon at assets/icon.png and wires it
through composerIcon in .codex-plugin/plugin.json so the plugin renders
in the awesome-codex-plugins marketplace browser.

Note: A separate PR to hashgraph-online/awesome-codex-plugins is still
needed to set the icon field on their marketplace.json entry.
2026-05-18 13:28:47 +00:00
Alireza Rezvani
baf9ab0d97
Merge pull request #684 from TemaDeveloper/fix/inspect-assets-help-without-pillow 2026-05-18 15:18:18 +02:00
Alireza Rezvani
4774fc0c87
Merge pull request #681 from alirezarezvani/dev 2026-05-18 08:21:53 +02:00
Artemii Fridriksen
5fa5150060 fix(engineering-team): make inspect-assets.py --help work without Pillow
Move PIL import from module-level to inside analyse_image() so argparse
help text displays without requiring Pillow installed. Add proper argparse
with --json support per project conventions.

Fixes #653
2026-05-17 18:23:53 -04:00
alirezarezvani
779bb26bcd chore: sync codex skills symlinks [automated]
Some checks are pending
Sync Codex Skills Symlinks / sync (push) Waiting to run
2026-05-17 08:01:48 +00:00
Alireza Rezvani
b3ca6da303
Merge pull request #680 from alirezarezvani/claude/v2.7.3-release-docs-audit 2026-05-17 10:01:38 +02:00
Claude
7c54a72d94
chore(v2.7.3): release prep — docs sync + audit fixes + CHANGELOG
Post-merge sync of v2.7.3 (#679 already in dev). Three things in one
commit:

## 1. /update-docs pipeline (Steps 1-7)

Cross-platform sync verified clean across 3 platforms (.codex 305 /
.gemini 355 / .hermes 305 — aeo + security-guidance present in all
three indexes). 401 → 403 MkDocs pages generated.

**Files refreshed to v2.7.3 / 313 / 46+ / 60+ counts:**

- `.claude-plugin/marketplace.json` — top-level description + metadata
  description + metadata.version (was 2.7.0).
- `CLAUDE.md` — Current Scope line, new v2.7.3 Highlights section,
  footer (Last Updated + Version + Status).
- `README.md` — tagline, badges, Skills Overview row counts (Engineering
  POWERFUL 44 → 45, Marketing 44 → 45 w/ 8 pods), Python Tools count,
  FAQ counts. Hermes footnote ticked v2.7.2 → v2.7.3.
- `docs/index.md` — title, meta description, hero subtitle, grid card.
- `docs/getting-started.md` — meta description, FAQ count.
- `mkdocs.yml` — site_description + 3 nav entries (skill + agent + cmd).
- `marketing-skill/.claude-plugin/plugin.json` — 44 → 45 skills, 7 → 8
  pods, v2.2.3 → v2.7.3.
- `marketing-skill/CLAUDE.md` — 43 → 45 skill count, 32 → 58 Python
  tools, 7 → 8 pods. Added AEO skill to skill map.

## 2. /plugin-audit on both new skills (full 8-phase pipeline)

**aeo (marketing-skill/skills/aeo/)** — PASS WITH WARNINGS:
- Phase 2 Structure: 86.4/GOOD (after auto-fix of YAML frontmatter
  parse error — colon in description value needed quote-wrapping)
- Phase 3 Quality: 52.4/D (validator expects legacy fields v2.7 skills
  don't use — repo-wide pattern, not a defect)
- Phase 4 Scripts: 3/3 PASS
- Phase 5 Security: 2 HIGH NET-EXFIL findings on urllib.request — same
  known false-positive as sister seo-audit skill (URL fetch is core
  functionality for content-audit-by-URL tools, not exfiltration)
- Phase 6 Marketplace: plugin.json valid (v2.7.3, all required fields)
- Phase 7 Ecosystem: indexed in all 3 platforms
- Phase 8 Code Review: 22 workflow sections, refs cite 8/17/37 sources
  (≥7 floor met), 0 broken links, attribution present

**security-guidance (engineering/security-guidance/)** — PASS WITH
WARNINGS:
- Phase 2/3/4: low scores due to hook-plugin layout mismatch with
  script-plugin validators (hook plugins use `hooks/` not `scripts/`
  per Claude Code spec — fundamental structural mismatch, not a defect)
- Phase 5: 6 CRITICAL + 4 HIGH findings are all recursive false-
  positives — auditor detects the hook's OWN pattern-detection strings
  (`"exec("`, `"eval("`, `"yaml.load("` are substring literals used as
  detection rules, NOT actual calls). Verified zero real exec/eval
  calls in the file.
- Phase 6/7: clean (plugin.json valid, hooks.json valid, indexed in
  all 3 platforms, mkdocs nav entry added)
- Phase 8: 291 LOC, syntax valid, clear exit-code contract (0=clean,
  2=block per Claude Code hook spec), session-state caching @ lines
  158-191, 30-day cleanup @ line 163, attribution full, live smoke
  test (`eval(input())` in Write → exit 2 + warning) PASS
- **Real defects: 0.**

## 3. Layout fix (Phase 7 audit catch)

The /plugin-audit Phase 7 caught a real layout bug: cs-aeo.md placed
at `marketing-skill/agents/cs-aeo.md` and `marketing-skill/commands/
cs-aeo.md` was unreachable by `scripts/generate-docs.py` (which only
walks root `agents/<domain>/` and root `commands/`). Result: docs/
pages for cs-aeo agent + /cs:aeo command were never generated.

**Moved to repo-canonical locations:**
- `marketing-skill/agents/cs-aeo.md` → `agents/marketing/cs-aeo.md`
- `marketing-skill/commands/cs-aeo.md` → `commands/cs-aeo.md`

Cleaned empty `marketing-skill/agents/` + `marketing-skill/commands/`
directories. Re-ran `scripts/generate-docs.py`: 401 → 403 pages
(73 agents + 34 commands — both new entries present).

## CHANGELOG.md

Added [2.7.3] - 2026-05-17 entry with full Added / Changed / Layout
fix / Cross-platform sync / Honest audit results / PRs / Verification
sections. Audit results documented verbatim including the known
false-positives — no claims of clean security where the auditor flagged
patterns it can't disambiguate.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-17 07:44:02 +00:00
alirezarezvani
a9f36f191e chore: sync codex skills symlinks [automated] 2026-05-17 07:13:31 +00:00
Alireza Rezvani
2a51042df0
Merge pull request #679 from alirezarezvani/claude/v2.7.3-hermes-install-guide-and-aeo-box 2026-05-17 09:13:19 +02:00
Claude
218b973f81
feat(v2.7.3): port aeo-box — AEO skill + security-guidance hook + master prompt preserved
The user asked us to move everything from alirezarezvani/aeo-box into this
repo, audit every part, rebuild improved, polish for human users.

Audit identified 4 distinct components in aeo-box:

1. **AEO Skill** (`answer-engine-optimization/`) — 9 Python modules, 2,464
   LOC, comprehensive SKILL.md. Real value: Answer Engine Optimization is
   its own discipline distinct from SEO.

2. **Security-guidance hook** — David Dworken's MIT-licensed PreToolUse
   hook catching 9 security anti-patterns in Edit/Write/MultiEdit. Hook-
   based plugin pattern we don't have in our repo yet.

3. **Agentic AEO master prompt** — 1,579-line spec for a multi-agent
   AEO application using Claude Agent SDK. Future-work spec.

4. **Generic dev infra** — 11 generic agents + 9 generic commands +
   GH workflows + TS scripts. We already have equivalents; not worth
   porting.

**This PR delivers 1, 2, and 3** (skipping 4 as planned).

## 1. AEO Skill — `marketing-skill/skills/aeo/`

Distilled 9-module Python toolkit into 3 stdlib CLI tools per
claude-skills convention:

- `aeo_audit.py` (445 LOC) — E-E-A-T + structure scoring across 4
  dimensions + structure. Composite 0-100 with letter grade. 8 industries
  with calibrated thresholds (healthcare/finance/legal 85+ for YMYL;
  saas/b2b/media 70; ecommerce 65). Industry-aware top-fix
  recommendations.

- `aeo_optimizer.py` (252 LOC) — Generates AEO-improved variants in 3
  modes: conservative (schema + footer only), balanced (citation markers
  + heading restructure + schema), aggressive (fact-first lede + full
  restructure). Schema.org Article + FAQPage JSON-LD auto-generated.

- `citation_tracker.py` (310 LOC) — Local-first citation ledger at
  ~/.aeo-data/citations.json. add/list/report/export actions. Computes
  per-URL stats: citation count, LLM coverage, velocity, top queries,
  verdict (EARLY/EMERGING/STRONG).

Plus:
- `SKILL.md` — Path-B-style spec with workflow, industry table,
  anti-patterns, dependencies
- 3 references citing 8 sources each:
  - `aeo_eeat_canon.md` — E-E-A-T methodology for AI citation
  - `llm_citation_patterns.md` — per-LLM citation behavior
    (Perplexity, ChatGPT, Claude, Gemini, Mistral)
  - `aeo_vs_seo.md` — strategic choice between disciplines
- `cs-aeo` agent persona — pragmatic content strategist; refuses fake
  authority signals; insists on real first-person evidence
- `/cs:aeo` command with audit/optimize/track/report/export actions

All 3 scripts smoke-tested:
- aeo_audit --sample → 43/100 (F) on intentionally-weak sample content
- aeo_optimizer --sample → schema injected + corrections footer added
  + bold-paragraphs promoted to H3 + 1 citation marker
- citation_tracker --sample → 4-event sequence (add → list → report
  → export), verdict EMERGING with 4 citations across 3 LLMs

## 2. Security-guidance hook — `engineering/security-guidance/`

PreToolUse hook ported from David Dworken's MIT implementation. Preserves
the 9 upstream patterns verbatim + adds 3 new patterns:

| Pattern | Upstream | Added |
|---|:-:|:-:|
| GitHub Actions workflow injection | ✓ | |
| child_process.exec / execSync | ✓ | |
| new Function | ✓ | |
| eval() | ✓ | |
| dangerouslySetInnerHTML | ✓ | |
| document.write | ✓ | |
| .innerHTML = | ✓ | |
| pickle | ✓ | |
| os.system | ✓ | |
| subprocess shell=True | | ✓ |
| SQL via f-string or .format | | ✓ |
| yaml.unsafe_load | | ✓ |

Modifications from upstream:
- Debug log moved from /tmp to ~/.claude/security-warnings-log.txt
  (persists across reboots)
- Restructured as claude-skills plugin with `attribution` block in
  plugin.json (matches caveman/grill-me/grill-with-docs pattern)
- Added comprehensive reference doc: pretooluse_hook_canon.md
  (8 sources on hook design discipline)

Hook smoke-tested:
- eval(input()) in Write → exits 2 (BLOCK) with stderr warning ✓
- json.loads(input()) in Write → exits 0 (clean) ✓
- subprocess.run(cmd, shell=True) fresh session → exits 2 ✓
- subprocess.run(cmd, shell=True) cached session → exits 0 ✓
  (correct UX: warned once, don't nag)

## 3. Master prompt preserved — `megaprompts/14-aeo-agentic-megaprompt.md`

The 1,579-line multi-agent AEO application spec preserved verbatim as
megaprompts/14 — the next slot after 13-research-megaprompt.md. Path-B
option open for future "build the full agentic AEO app" work.

## Cross-platform sync

- marketplace.json: 55 → 57 plugins (`aeo` + `security-guidance`)
- .codex/skills-index.json: 303 → 305 entries (both new skills indexed)
- .codex/skills/: aeo + security-guidance symlinks created
- .gemini/skills-index.json: 353 → 355 entries
- .gemini/skills/aeo, .gemini/skills/security-guidance: directory mirrors
- .hermes/skills/claude-skills/: re-synced (now includes both new skills
  with relative symlinks)

## What's NOT ported (intentional)

- 11 generic agents from aeo-box .claude/agents/ — we have equivalents
  (cs-code-reviewer, cs-senior-engineer, cs-skill-author)
- 9 generic commands from .claude/commands/ — we have /git:cm /git:cp
  /cs:write-a-skill, etc.
- GitHub workflow YAMLs — repo-specific
- TS scripts (auto-close-duplicates, backfill-duplicate-comments) — GH
  issue management, not a skill

Documented this skip-list in the AEO SKILL.md `Source` block + the
security-guidance plugin.json `attribution` block.

## Honest BYO-sync clarifier for Hermes (folded in from prior work)

Earlier merged PR #678 upgraded Hermes Agent integration to first-class
technical support (committed .hermes/ tree, fixed sync script, relative
symlinks). The earlier docs sweep added an install/configure walkthrough
that wasn't in scope for that PR but caught a user-flagged gap. That doc
section is also in this commit (137 lines added to docs/integrations.md
covering: Hermes-itself install steps, first-run walkthrough,
configuration tips, 6 troubleshooting Q&A).

Verification:
- All 3 AEO scripts pass --help and --sample
- Security hook correctly exits 2 on detection, 0 on cached/clean
- All 3 cross-platform syncs ran clean
- marketplace.json: 57 plugins, all required fields, no duplicates
- 13 v2.7.0 + 13 new files for AEO + 6 new files for security-guidance
  + 1 megaprompt + 1 docs update

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-17 06:27:57 +00:00
Claude
c111c01477
docs(hermes): add install + configure walkthrough — fixes user-flagged gap
The user flagged that nowhere in the documentation do we guide users
through installing and configuring Hermes Agent itself with our skills.
PR #678 covered the technical integration but missed this user-facing
step.

Additions to docs/integrations.md Hermes Agent section:

**Step 1 — Install Hermes Agent itself (NEW)**
- macOS/Linux: 5-step setup (clone → venv → deps → .env → first run)
- Windows: WSL2 guidance
- Docker: one-liner with $HOME/.hermes volume mount
- Provider note: works with Nous, OpenAI, Anthropic, or any
  OpenAI-compatible endpoint (no Nous account required)

**Step 3 — First-run walkthrough (NEW)**
- Complete dry-run from cold install to first skill invocation
- Examples: /skills, /research <query>, /skill_view, /skills search
- Shows how our orchestrator routing surfaces in Hermes UX

**Configuration tips (NEW)**
- Sample ~/.hermes/config.yaml block with our skill paths
- auto_load recommendations (karpathy-coder always-on, grill-me sparingly)
- display: show_category for grouping by claude-skills/<domain>/

**Troubleshooting (NEW — 6 Q&A entries)**
1. /skills shows 0 results after sync (target path + permissions)
2. Symlinks point to wrong path (cross-machine portability — relative
   symlinks per v2.7.2+)
3. Slash command collisions (Hermes built-ins vs claude-skills)
4. ModuleNotFoundError on Python tools (3.10+ requirement)
5. SKILL.md not found despite file existing (nested-plugin flatten via
   sync script)
6. How to unsync (rm -rf ~/.hermes/skills/claude-skills/)

Also bumped verify count: 198+ → 303 (v2.7.2+) so the post-sync
sanity check now expects accurate numbers.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-17 05:54:29 +00:00
Alireza Rezvani
ec488fe4d7
Merge pull request #678 from alirezarezvani/claude/v2.7.2-hermes-firstclass
Some checks failed
Sync Codex Skills Symlinks / sync (push) Has been cancelled
2026-05-17 07:52:03 +02:00
Claude
e8a718ce30
feat(hermes): upgrade Hermes Agent integration to first-class
The user flagged that we advertise Hermes Agent as a tier-1 supported
platform in the "Works with:" list, but the actual integration was
significantly thinner than Codex/Gemini/OpenClaw:

- No committed .hermes/ tree (other platforms ship pre-generated trees)
- sync-hermes-skills.py DOMAIN_DIRS missing the 3 v2.7.0 top-level
  domains (productivity, marketing, research) — running it today would
  silently skip all 13 v2.7.0 skills
- Discover function only handled the flat `<domain>/<skill>/` pattern,
  missing the nested-plugin pattern `<domain>/<plugin>/skills/<skill>/`
  used by all v2.7.0 skills + many older plugins
- Doc count stale at "198+ skills" / "246 skills"
- 35 Hermes mentions vs Codex 1010 / Gemini 622 / OpenClaw 572 —
  under-documented relative to the marketing claim

This commit upgrades Hermes to first-class technical support while
labeling it BYO-sync in marketing (honest about the workflow:
pre-generated tree shipped, but user runs sync into ~/.hermes/ once).

**scripts/sync-hermes-skills.py changes:**

1. DOMAIN_DIRS extended with `productivity`, `marketing`, `research`
   (the 3 v2.7.0 top-level domains)
2. `discover_skills()` rewritten to handle all 3 SKILL.md location
   patterns (same logic as sync-codex-skills.py):
   - Pattern 1: `<domain>/<skill>/SKILL.md` (flat legacy)
   - Pattern 2: `<domain>/skills/<skill>/SKILL.md` (flat with skills/)
   - Pattern 3: `<domain>/<plugin>/skills/<skill>/SKILL.md` (nested plugin)
   Dedupes by SKILL.md path.
3. `sync_skill()` now creates RELATIVE symlinks (via os.path.relpath)
   instead of absolute. Critical for committed .hermes/ tree to work
   across machines. Falls back to absolute if cross-device.

**.hermes/skills/claude-skills/ tree committed:**

- 289 relative symlinks across 12 domains
- skills-index.json (303 skills documented with descriptions)
- All v2.7.0 skills present: productivity (4), marketing (1),
  research (8)

**Documentation refresh:**

- docs/integrations.md:
  - Header count: 246 → 311 skills
  - Hermes section: NEW "Tier: BYO-sync" tip box explaining the
    pre-generated tree + the one-line install step
  - Install table: "198+ skills" → "303 skills (12 domains)"
- README.md:
  - Hermes Agent entry in "Works with:" line now flagged with [^hermes]
    footnote explicitly labeling it BYO-sync tier with link to the
    sync script

Verification:
- Script smoke-test: `python3 sync-hermes-skills.py --target .hermes/skills --verbose`
  → 303 skills discovered, 289 new symlinks, 14 skipped (pre-existing)
- All v2.7.0 symlinks resolve correctly:
  `.hermes/skills/claude-skills/research/research → ../../../../research/research/skills/research`
- 12 domains present in tree (was 9 before)

Per CLAUDE.md ClawHub rules: this PR does NOT update marketplace.json
(Hermes is not on ClawHub). The .hermes/ tree is repo-side
infrastructure only.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-17 05:47:32 +00:00
Alireza Rezvani
0d477a0658
Merge pull request #677 from alirezarezvani/dev
Some checks failed
Deploy Documentation to Pages / build (push) Has been cancelled
Sync Codex Skills Symlinks / sync (push) Has been cancelled
Deploy Documentation to Pages / deploy (push) Has been cancelled
2026-05-17 07:39:16 +02:00
Alireza Rezvani
c71b51a748
Merge pull request #676 from alirezarezvani/claude/v2.7.1-fix-plugins-page 2026-05-17 00:52:39 +02:00
Claude
1872ed0e61
fix(docs): plugins page — refresh stale counts to v2.7.0 reality
The docs/plugins/index.md page was severely outdated, still showing
v2.1.x-era counts: 28 plugins, 9 domains, 177 skills, with a hardcoded
list of 10 standalone plugins. Missed entirely during PR #675's v2.7.0
docs sweep because it wasn't on the 7-step pipeline checklist.

Refreshed all numbers + content to current marketplace.json reality:
- 28 → 55 plugins
- 9 → 12 domains (added Productivity, Marketing top-level, Research)
- 177 → 311 skills
- v2.1.2 → v2.7.0 (Plugin Structure example + FAQ)

Plugin Architecture mermaid:
- Updated total to 55 plugins
- Added "v2.7.0 New Plugins" subgraph (12 standalone: 3 productivity,
  1 marketing, 8 research incl. orchestrator)
- Renamed "Standalone (10)" → "Other Standalone (46 total)"

Content additions:
- New section: "v2.7.0 Standalone Plugins ✨" with 3 sub-tables
  (Productivity / Marketing / Research) — all 12 new plugins with
  install commands and one-line descriptions
- "Other Standalone Plugins" — now a programmatically-generated table
  of 34 non-v2.7.0 standalones grouped by category (was hardcoded list
  of 10 — many obsolete: content-creator, demand-gen, fullstack-engineer,
  aws-architect, product-manager were never in marketplace.json)
- "All 55 Plugins at a Glance" — full table from marketplace.json data,
  marks v2.7.0 entries with ✨

Domain Bundles section:
- Skill counts refreshed (engineering-skills 24→32, marketing-skills
  43→44, ra-qm-skills 12→14, product-skills 12→13, pm-skills 6→9,
  business-growth-skills 4→5, finance-skills 2→3)
- Engineering POWERFUL bundle now mentions 4 Matt Pocock skills
- C-Level Advisory bundle now mentions all 14 C-suite roles (was 9)
- RA/QM bundle now mentions EU AI Act + ISO 42001

FAQ additions:
- "What are the v2.7.0 plugins?" — explains the 12 new plugin scope
- "What is the research orchestrator?" — explains hybrid router pattern
  + distinct_from autoresearch-agent disambiguation

Plugin Structure section:
- Added documentation of the two approved extension fields per
  CLAUDE.md ClawHub rule #5: `source` (Path-B provenance) and
  `attribution` (MIT external derivatives)

Verification:
- MkDocs build PASSES (no plugins-related errors or warnings)
- 0 stale references remaining (28 plugins, 9 Domains, 177 Skills,
  v2.1.2 all cleaned)
- 464 lines, 22 sections, all 55 plugins now represented

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 21:49:55 +00:00
Alireza Rezvani
41804460b3
Merge pull request #674 from alirezarezvani/dev 2026-05-16 20:38:55 +02:00
alirezarezvani
9c17f74c60 chore: sync codex skills symlinks [automated] 2026-05-16 18:33:04 +00:00
Alireza Rezvani
6c2aec5ae3
Merge pull request #675 from alirezarezvani/claude/v2.7.0-docs-update 2026-05-16 20:32:55 +02:00
Claude
637210b340
docs(v2.7.0): MkDocs + GitHub Pages + cross-platform CLI sync update
Comprehensive documentation sync for v2.7.0 across all surfaces.

**Files updated:**

Documentation:
- CLAUDE.md: Current Scope line (272 → 311 skills, 9 → 12 domains,
  v2.7.0 Path-B additions noted)
- README.md: hero count + badge counts + Skills Overview table (3 new
  domain rows: Productivity, Marketing top-level, Research)
- docs/index.md: hero + grid cards + meta description (311 skills, 12
  domains, v2.7.0 Path-B additions)
- docs/getting-started.md: meta description + FAQ counts
- mkdocs.yml: site_description + nav (3 new domain sections with 13
  new skill pages)
- .claude-plugin/marketplace.json: top-level description + metadata
  bumped 2.6.1 → 2.7.0

Cross-platform sync (Step 2 of the post-creation pipeline):
- .codex/skills-index.json: 290 → 303 entries
- .gemini/skills-index.json: 351 → 353 items (grill-with-docs added)
- Codex script (scripts/sync-codex-skills.py): SKILL_DOMAINS extended
  with productivity/marketing/research top-level folders (committed in
  PR #673 — verified working in this sync)

Generator extension:
- scripts/generate-docs.py: DOMAINS dict extended with productivity,
  marketing, research entries (with SEO suffix + description context).
  Generator now emits 294 skill pages across 12 domains (was 281
  across 9). Total pages: 399 (was 373).

Generated doc pages (21 new):
- docs/skills/productivity/{capture, email-inbox-setup,
  email-inbox-triage, reflect, index}.md
- docs/skills/marketing/{landing, index}.md
- docs/skills/research/{research, pulse, litreview, grants, dossier,
  patent, syllabus, notebooklm, index}.md
- docs/agents/{cs-capture, cs-grants, cs-litreview, cs-dossier,
  cs-pulse, cs-patent, cs-syllabus, cs-notebooklm, cs-research,
  cs-reflect, cs-landing, cs-inbox-setup, cs-inbox-triage,
  cs-grill-with-docs}.md

Verification:
- MkDocs build: PASSED (16.03s, 448 HTML pages generated)
- Consistency check: all 5 core doc files now reference 311 skills
- Path validation: all 55 marketplace.json source paths valid
- Frontmatter check: 13/13 new SKILL.md files have valid YAML

Known minor: 3 unrelated pre-existing duplicate-path symlinks
(review/run/status) flipped target during codex sync. These are skill
name collisions across multiple folders; sync script now picks one
consistent canonical path. Same churn would happen on any sync run.

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 11:57:12 +00:00
alirezarezvani
aa433b8fe4 chore: sync codex skills symlinks [automated] 2026-05-16 10:22:58 +00:00
Alireza Rezvani
f3b862c94b
Merge pull request #673 from alirezarezvani/claude/v2.7.0-release-prep 2026-05-16 12:22:47 +02: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
Claude
d36ec93d3b
chore(v2.7.0): register 12 v2 skills in marketplace + codex sync
Resolves the two follow-ups left after the v2 megaprompt sweep.

**marketplace.json (.claude-plugin/):** +12 plugin entries for the new v2
skills across 3 categories. Categories added: productivity (3), research (8).

| Plugin | Source | Category |
|---|---|---|
| capture-skill | ./productivity/capture | productivity |
| email-pair | ./productivity/email | productivity |
| reflect-skill | ./productivity/reflect | productivity |
| landing | ./marketing/landing | marketing |
| pulse | ./research/pulse | research |
| litreview | ./research/litreview | research |
| grants | ./research/grants | research |
| dossier | ./research/dossier | research |
| patent | ./research/patent | research |
| syllabus | ./research/syllabus | research |
| notebooklm | ./research/notebooklm | research |
| research-orchestrator | ./research/research | research |

Per CLAUDE.md ClawHub rules: cs- prefix not used in repo registry
(reserved for ClawHub when slug conflicts arise). 12 entries cover 13
skills (email-pair holds inbox-setup + inbox-triage).

Total plugins in marketplace: 43 → 55.

**.codex sync:** Manually created 11 missing symlinks under .codex/skills/
(capture + pulse already existed from prior auto-sync). Added 13 entries
to .codex/skills-index.json with category metadata. Total skills: 290 → 303.

**scripts/sync-codex-skills.py:** Added productivity/, marketing/, and
research/ to SKILL_DOMAINS so future automated sync runs pick up the new
top-level domains (previously only domain folders were registered).

Manual symlink creation deliberately avoids the script's full
--dry-run-flagged 16 [UPDATED] symlinks on pre-existing duplicate-path
skills (chief-ai-officer-advisor, chaos-engineering, etc., which have
both nested-plugin and flat paths in the repo). That churn belongs in
a separate cleanup PR — not in this release-prep PR.

Validation:
- marketplace.json: 55 plugins, all 7 required fields, no duplicates
- skills-index.json: 303 entries across 11 categories
- all 13 megaprompt symlinks resolve correctly
- 8-phase plugin audit on research/research: PASS WITH WARNINGS
  (Phase 2 structure 84.1/GOOD, Phase 5 security PASS, scripts 3/3)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 10:05:38 +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
Alireza Rezvani
575805aa99
Merge pull request #671 from alirezarezvani/claude/skills-library-megaprompts-c1sQy 2026-05-16 11:12:27 +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
Alireza Rezvani
f2cd5f2dda
Merge pull request #668 from alirezarezvani/claude/build-skills-reflect-productivity 2026-05-16 09:08:57 +02:00
Claude
7bdc98e517
feat(productivity): reflect skill — Path-B light-prompt-flow sibling of capture
Slice 8: productivity light-prompt-flow sibling. Same shape as capture
(11 files, max-1-question intake, fast-to-action), different mode —
capture organizes external dumps; reflect re-examines internal
conversation state.

After this merges: 10 of 13 v2 megaprompts shipped.

SOURCE SPEC

megaprompts/02-reflect-megaprompt.md (PR #657).

WHAT THE SKILL DOES

Mid-conversation reflection. Pauses execution, re-reads the FULL
conversation from original goal forward (not just recent turns),
runs the 5-dimension analysis framework:
  - Macro Perspective (original goal vs current; drift detection)
  - Gap Analysis (assumptions / stakeholders / constraints /
    alternatives / external factors)
  - Reflective Inquiry (right problem? simpler path? harder valuable
    path avoided?)
  - Bias Check (confirmation / sunk cost / anchoring / complexity /
    recency — each with recognition cues)
  - Contextual Alignment (does direction serve actual goals + best
    use of time + external factors)

Delivers flowing prose (NO headers, NO bullets). Ends with mandatory
directional recommendation: Continue / Pivot to {X} / Pause for {Q}.

KEY PATH-B PRESERVED ELEMENTS

- Re-read FULL conversation from original goal (not just recent turns)
  — the discipline that distinguishes real reflection from local
  summary
- Halt-current-thread stop directive (reflection is a pause, not a
  side-quest)
- Honest-output discipline: NO manufactured problems when path is
  solid; NO vague reassurance ("looks good!") instead of specific
  reasoning
- 5-dimension framework preserved verbatim
- 5 biases preserved (confirmation, sunk cost, anchoring, complexity,
  recency) with recognition cues
- Flowing prose enforced (no headers, no bullets in body)
- Closing recommendation mandatory (Continue / Pivot to X / Pause
  for Q)
- Low-intake: max 1 optional clarifier (only when context is thin);
  default to no questions
- No name references (generic second-person throughout)
- Implicit triggers OFFER reflection, never auto-invoke (10+ detail
  turns / frustration / dead-ends → ask user if they want to step
  back, don't unilaterally run)

PURE-REASONING SKILL

No external APIs. No DOCX generation. No file-system writes beyond
audit. Most portable v2 skill — works in Claude Code CLI + Claude.ai
web natively, no MCP dependencies, no Node.js, no Consensus account
required.

REPO STRUCTURE (mirrors capture 1:1)

productivity/reflect/
├── .claude-plugin/plugin.json
├── README.md
├── agents/cs-reflect.md         ← reflection persona, honest-output enforcer
├── commands/cs-reflect.md       ← /cs:reflect (or auto-triggers on phrases)
└── skills/reflect/
    ├── SKILL.md
    ├── references/
    │   ├── cognitive_bias_canon.md         ← 5 biases + recognition cues
    │                                          (7 sources: Tversky/Kahneman,
    │                                          Wason, Arkes/Blumer,
    │                                          Russo/Schoemaker, Tetlock,
    │                                          Karpathy)
    │   ├── honest_output_discipline.md     ← anti-manufactured-problems
    │                                          (7 sources: Yegge, Gawande,
    │                                          Deming, Russell, Kim Scott,
    │                                          Bret Victor, skill spec)
    │   └── conversation_reflection_practice.md ← Schön reflective practice
    │                                          (7 sources: Schön 1983 + 1987,
    │                                          Argyris/Schön, Kolb, Polanyi,
    │                                          Kahneman/Tversky, Victor)
    └── scripts/
        ├── bias_pattern_detector.py        ← stdlib: regex scan for 5-bias
        │                                     signal patterns
        ├── conversation_depth_analyzer.py  ← stdlib: turn count + implicit
        │                                     trigger signal detection
        └── directional_recommendation_validator.py  ← stdlib: verify output
                                              ends with Continue/Pivot/Pause +
                                              specific evidence + flowing prose

11 files, 1,554 lines. Comparable to capture (1,560 lines).

VERIFIED CLEAN

All 3 scripts pass smoke tests:

- bias_pattern_detector --sample (notification system + sunk cost +
  anchoring + complexity scenario): correctly detects 3 biases
  (sunk_cost via "we've invested", anchoring via "sticking with",
  complexity via 9 "what about X" hits). Correctly clears confirmation
  + recency (no strong signals).
- conversation_depth_analyzer --sample (19-turn debugging conversation
  with stuck-ness markers): correctly verdicts OFFER_REFLECT based on
  frustration (8 hits) + dead-ends (4 hits). Note: "skill should OFFER
  reflection, not auto-invoke" — honors design intent.
- directional_recommendation_validator --sample-pass (honest validation
  output with 16 specific-evidence references): PASS 6/6.
- directional_recommendation_validator --sample-fail (vague
  reassurance with bullets, no recommendation, no evidence): FAIL with
  4 specific issues caught (missing closing recommendation, 2 vague
  phrases, 3 bullets, 0 specific-evidence refs).

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 (this PR)
  ☐ Slice 6: notebooklm (browser-automation, last shape)
  ☐ Slice 7: 13-research orchestrator + autoresearch-agent reconciliation

10 of 13 v2 megaprompts shipped after this merge. 3 remaining:
notebooklm (browser-automation), 13-research (orchestrator), 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/reflect symlink not added (auto-sync workflow handles
  on merge per existing pattern)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 05:37:30 +00:00
alirezarezvani
bc487ee041 chore: sync codex skills symlinks [automated]
Some checks are pending
Sync Codex Skills Symlinks / sync (push) Waiting to run
2026-05-16 05:17:36 +00:00
Alireza Rezvani
7ebbb52cc2
Merge pull request #667 from alirezarezvani/claude/cleanup-move-pulse-capture 2026-05-16 07:17:25 +02: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
Alireza Rezvani
f0176e0bd9
Merge pull request #666 from alirezarezvani/claude/build-skills-research-batch-3 2026-05-16 07:00:13 +02: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
Alireza Rezvani
0bb96856ea
Merge pull request #664 from alirezarezvani/claude/build-skills-research-batch-2 2026-05-16 03:42:46 +02: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
Alireza Rezvani
71a683e00d
Merge pull request #663 from alirezarezvani/claude/build-skills-research-batch-1 2026-05-15 21:28:46 +02: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
Alireza Rezvani
2fa288e835
Merge pull request #662 from alirezarezvani/claude/build-skills-landing-generator-slice 2026-05-15 18:55:15 +02:00
Claude
8690081a04
feat(marketing): landing skill — Path-B generator slice from megaprompt 04
Slice 4 of 13: generator shape. Validates the Path-B conversion pattern
for skills that produce a single artifact (HTML file) with motion-design
discipline. Also introduces the marketing/ domain folder (parallel to
productivity/, separate from the existing structured marketing-skill/
folder that houses the 44 pod-based marketing skills).

SOURCE SPEC

megaprompts/04-landing-megaprompt.md (PR #657). The megaprompt is the
canonical spec; this plugin is the working implementation.

WHAT THE SKILL DOES

Premium single-file HTML landing page generator. Outputs one polished
.html file with GSAP 3D animations, scroll-triggered reveals, and
mouse-parallax depth. All CSS inline, all JS inline; only externals
are Google Fonts (Inter) + GSAP via CDN.

Phase 0: 4 forcing intake questions (one at a time):
  Q1 — product/service (refuses vague pitches)
  Q2 — audience register (technical/business/consumer/internal)
  Q3 — brand overrides (HEX vars, or "default")
  Q4 — tone (professional/playful/authoritative/minimal)

Then generates a single .html with three sections (Hero, Features,
Closing CTA), GSAP entrance timeline, mouse-parallax handler,
ScrollTrigger feature reveals, CSS floating shapes, scroll indicator.

DOMAIN FOLDER DECISION (marketing/ — new)

The existing marketing-skill/ folder houses 44 pod-based marketing
skills with its own internal structure. v2 megaprompt-derived
landing skill is a single self-contained plugin — placing it
inside marketing-skill/ would disrupt that folder's pod structure.
Creating marketing/ alongside it, parallel to the new productivity/
folder, gives the v2 megaprompt slices a clean visually-parallel
home. Both folders coexist.

DISAMBIGUATION FROM EXISTING landing-page-generator

The repo already has product-team/skills/landing-page-generator/ —
the v2.1.2 work that outputs Next.js TSX + Tailwind for
conversion-optimized lead-gen with copy frameworks (PAS/AIDA/BAB).

The v2 megaprompt 04 is a DIFFERENT skill: single-file HTML with
GSAP for premium visual one-pagers. Different output (HTML vs TSX),
different optimization target (visual premium vs conversion), different
animation approach (GSAP vs static).

Both skills coexist. README.md disambiguates clearly. Pick by use case:
  visual premium one-pager → marketing/landing/
  conversion lead-gen      → product-team/skills/landing-page-generator/

PATH-B CONVERSION DISCIPLINE

- Frontmatter description preserved verbatim from megaprompt spec.
- Workflow structure (megaprompt lines 28-43) became SKILL.md
  section ordering 1:1.
- All 4 grill-me intake questions preserved verbatim with "why I'm
  asking" rationale.
- All 5 animation patterns preserved (Hero Entrance / Mouse Parallax /
  ScrollTrigger Reveals / CSS Floats / Scroll Indicator).
- Default brand palette preserved verbatim (--navy / --teal / --teal-glow
  / --amber / --off-white / --text-muted / --card-bg / --card-border).
- All 3 sections (Hero, Features, Closing CTA) preserved with full
  spec.
- Required CDN dependencies preserved verbatim.
- Anti-patterns + error-handling table + validation checklist
  preserved.

REPO STRUCTURE

marketing/landing/
├── .claude-plugin/plugin.json    ← source.spec field points at megaprompt
├── README.md                      ← disambig from landing-page-generator
├── agents/cs-landing.md           ← landing generator persona, FOUC enforcer
├── commands/cs-landing.md         ← /cs:landing
└── skills/landing/
    ├── SKILL.md                    ← Path-B converted from megaprompt 04
    ├── references/
    │   ├── brand_system_design.md         ← color theory + WCAG + algorithmic
    │   │                                    derivation (7 sources: WCAG 2.2,
    │   │                                    Refactoring UI, Material Design,
    │   │                                    IBM Carbon, APCA, Tailwind, etc.)
    │   ├── gsap_animation_patterns.md     ← 5 animation patterns canon (7 sources:
    │   │                                    GSAP docs, Val Head, Rachel Nabors,
    │   │                                    Sarah Drasner, GPU-accel CSS, Material
    │   │                                    motion, WCAG 2.3.3)
    │   └── single_file_html_discipline.md ← inline + CDN-only rationale (7 sources:
    │                                        MDN, Inclusive Components, Resilient
    │                                        Web Design, no-build advocacy, etc.)
    └── scripts/
        ├── brand_palette_validator.py     ← stdlib: HEX validation + WCAG contrast
        │                                    + algorithmic palette derivation in HSL
        ├── kebab_slug_generator.py        ← stdlib: name → kebab + duplicate detection
        └── html_validator.py              ← stdlib: 11-rule structural post-gen check

11 files, 1,979 lines. Slightly heavier than capture (1,560) and
pulse (1,643) due to denser SKILL.md (346 lines — full CSS + JS code
blocks for all 5 animation patterns) and heavier html_validator.py
(11 rules vs the simpler 7-rule checks in other slices).

VERIFIED CLEAN

- brand_palette_validator.py: sample (orange primary + teal accent +
  near-black bg) correctly surfaces real WCAG issue: white text on
  #FF6B35 = 2.64:1 (FAILs body-text 4.5:1 threshold). Real-world
  validation working as designed. Algorithmic palette derivation
  produces full var set in HSL space.
- kebab_slug_generator.py: "Quill AI — Async Standup Tool" → kebab
  slug correctly handling em-dash. Duplicate detection + timestamp
  suffix suggestion.
- html_validator.py: 17/17 PASS on clean sample; correctly catches
  9 FAILs + 6 WARNs on violation sample (missing viewport, external
  CSS file, external JS file, missing 2 of 3 sections, missing
  gsap.set() before timeline, missing both responsive breakpoints,
  div with onclick, duplicate H1).
- All 3 with --output json: valid JSON.
- plugin.json validates; conforms to repo schema with source +
  distinct_from attribution.

MEGAPROMPT FIDELITY MARKERS (in SKILL.md)

  Phase 0: 1            Hero: 18              900px: 3
  gsap.set: 6           Features: 5           580px: 3
  mouse parallax: 3     Closing CTA: 1        OUTPUT_DIR: 3
  ScrollTrigger: 4      GSAP: 25              kebab: 4
  CSS keyframes: 1      Google Fonts: 5       FOUC: 3

All megaprompt-mandated terms surface multiple times.

VERTICAL-SLICE STATUS

  ✓ Slice 1: capture (light prompt-flow, PR #659 merged)
  ✓ Slice 2: pulse (research-pack, PR #660 merged)
  ✓ Slice 3: email-pair (workflow-pair, PR #661 merged)
  ✓ Slice 4: landing (generator — this PR; introduces marketing/)
  ☐ Slice 5: orchestrator/router (13-research) — last shape; must
    reconcile with existing engineering/autoresearch-agent/

After Slice 5, all 5 shapes are validated. The remaining 8 megaprompts
(02-reflect light prompt-flow + 6 research-pack siblings + 03-notebooklm
which is research-flavored) can be batched in larger PRs grouped by
shape.

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json not updated (separate concern; done
  after all 13 ship)
- .codex/skills/landing symlink not added (auto-sync workflow handles
  on merge per existing pattern)
- engineering/capture/ NOT moved to productivity/capture/ (would break
  anyone who installed from current path; address in separate cleanup PR)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-15 16:39:29 +00:00
Alireza Rezvani
6483349a7a
Merge pull request #661 from alirezarezvani/claude/build-skills-email-workflow-pair 2026-05-15 18:26:08 +02:00
Claude
a2e9e48eb2
feat(productivity): email pair (inbox-setup + inbox-triage) — Path-B workflow-pair slice
Slice 3 of 13: workflow-pair shape. Validates the Path-B conversion pattern
for two coupled skills sharing a strict 7-file KB contract. Also introduces
the productivity/ domain folder per the navigation-map distinction in
CLAUDE.md (engineering/ = software-engineering scope; productivity/ =
generic productivity workflows).

DOMAIN FOLDER DECISION

CLAUDE.md defines engineering/ as "Engineering (POWERFUL) — Agent design,
RAG, MCP, CI/CD, database, observability." Email triage is generic
productivity, not software engineering. New folder: productivity/.

Capture (Slice 1, merged in PR #659) was placed under engineering/ before
this distinction was sharpened. It will move to productivity/ in a separate
cleanup PR — moving a merged plugin in this slice would risk breaking
anyone who installed it from engineering/capture/.

Future productivity slices (02-reflect) will go under productivity/ from
the start.

SOURCE SPECS

- megaprompts/06-inbox-setup-megaprompt.md (PR #657)
- megaprompts/07-inbox-triage-megaprompt.md (PR #657)

The megaprompts are canonical; these plugins are working implementations.
PR #657's cross-skill consistency audit verified the 7 KB filenames
align verbatim between the two megaprompts. This slice preserves that
alignment.

WHAT THE PAIR DOES

Two coupled skills sharing a 7-file KB at ${WORKSPACE}/Email/:

  inbox-setup (run once):
    Interactive 8-section interview (~25-31 grill-me questions) →
    writes 7 KB files (taxonomy, patterns, evaluation-framework,
    rate-card, blocklist, tracker, triage-log/).

  inbox-triage (run recurringly):
    Light-intake (max 2 optional override questions). Reads 7 KB files,
    classifies recent emails, researches new senders, generates
    recommendations (TAKE IT / WORTH / PASS / FLAG), drafts replies
    (NEVER SENDS), delivers report, updates blocklist + tracker, writes
    per-run log. 10 execution steps.

PATH-B CONVERSION DISCIPLINE

- Both megaprompts' frontmatter descriptions preserved verbatim.
- Both workflow structures preserved 1:1 in respective SKILL.md files.
- All 8 setup sections preserved verbatim with per-question structure
  (S{n}.Q{m}) + "why I'm asking" rationale.
- All 10 triage steps preserved verbatim.
- DRAFTS-ONLY rule preserved + amplified (stated in SKILL.md, agent,
  command, AND enforced by draft_safety_validator.py).
- Skip-logic preserved (S4 conditional on S1 surfacing opportunities).
- 7-file KB contract referenced verbatim in both directions.

REPO STRUCTURE — MULTI-SKILL LAYOUT (CLAUDE.md plugin-schema rule)

productivity/email/
├── .claude-plugin/plugin.json    ← skills: ["./skills/inbox-setup", "./skills/inbox-triage"]
├── README.md                      ← pair overview + 7-file contract diagram
├── agents/
│   ├── cs-inbox-setup.md          ← interview persona
│   └── cs-inbox-triage.md         ← recurring-run persona, DRAFTS-ONLY enforcer
├── commands/
│   ├── cs-inbox-setup.md
│   └── cs-inbox-triage.md
└── skills/
    ├── inbox-setup/
    │   ├── SKILL.md               ← 8 sections, 25-31 Q discipline
    │   ├── references/
    │   │   ├── kb_file_contract.md            ← write-side spec
    │   │   ├── grill_me_section_walk.md       ← discipline + skip-logic
    │   │   └── voice_calibration.md           ← sample-extraction theory + 7 sources
    │   └── scripts/
    │       ├── kb_validator.py                 ← stdlib: 7-file contract check
    │       ├── section_progress_tracker.py    ← stdlib: 8-section walk state
    │       └── voice_sample_analyzer.py        ← stdlib: pattern extraction
    └── inbox-triage/
        ├── SKILL.md               ← 10 steps + DRAFTS-ONLY rule
        ├── references/
        │   ├── kb_file_contract.md            ← read-side spec (mirror)
        │   ├── triage_decision_framework.md  ← TAKE/WORTH/PASS/FLAG + 7 sources
        │   └── drafts_only_safety.md         ← NEVER-SEND canon + 7 sources
        └── scripts/
            ├── kb_reader.py                    ← stdlib: parsed KB load + fail-fast
            ├── search_window_calculator.py    ← stdlib: cadence → window
            └── draft_safety_validator.py      ← stdlib: post-run NEVER-SEND check

20 files, 3,710 lines. Roughly 2x a single-skill slice (capture: 1,560,
pulse: 1,643), appropriate for two coupled skills.

VERIFIED CLEAN

Smoke tests on all 6 scripts:

- kb_validator.py: 15/15 PASS on sample (4 core files + h1s + sections +
  conditional file expectations + triage-log/ dir)
- section_progress_tracker.py: full lifecycle (start → record_q → record_
  section_done → record_skip → status). Active section advances correctly
  past S4 skip.
- voice_sample_analyzer.py: 5 samples → register/length/hedging/I-vs-We
  verdicts + opening + sign-off pattern extraction + email-patterns.md
  output block generation.
- kb_reader.py: reads 5/6 sample files (rate-card.md correctly absent),
  PASS verdict, structured parsing.
- search_window_calculator.py: 2x-daily + 14:00 → 9h lookback,
  window_start 05:00, run_label "Afternoon". Provides Gmail/Outlook/IMAP
  query templates.
- draft_safety_validator.py: PASS on clean log; FAIL on log with
  `gmail.users.messages.send` (caught by 2 patterns — defense in depth).
  Action-required guidance fires.

CROSS-SKILL CONTRACT ALIGNMENT (PR #657 audit verbatim alignment preserved)

Each of the 7 KB filenames referenced multiple times on both sides:
  email-taxonomy.md:      setup=5 triage=9
  email-patterns.md:      setup=4 triage=8
  evaluation-framework:   setup=5 triage=7
  rate-card.md:           setup=5 triage=4
  blocklist.md:           setup=4 triage=6
  tracker.md:             setup=4 triage=7
  triage-log:             setup=6 triage=7

VERTICAL-SLICE STATUS

  ✓ Slice 1: capture (light prompt-flow, PR #659 merged)
  ✓ Slice 2: pulse (research-pack, PR #660 merged)
  ✓ Slice 3: email-pair (workflow-pair — this PR; introduces productivity/)
  ☐ Slice 4: generator (04-landing) — validates Next.js code template emission
  ☐ Slice 5: orchestrator/router (13-research) — must reconcile with existing
    engineering/autoresearch-agent/

After Slice 4 validates the generator shape, only the orchestrator shape
remains to be validated. The 6 remaining research-pack skills (litreview,
grants, syllabus, patent, dossier, notebooklm) and 02-reflect can then be
batched in a single PR each.

NOT DONE IN THIS PR (intentional)

- .claude-plugin/marketplace.json not updated (separate concern; done after
  all 13 ship)
- .codex/skills/inbox-setup + .codex/skills/inbox-triage symlinks not added
  (auto-sync workflow handles on merge)
- engineering/capture/ NOT moved to productivity/capture/ (would break
  anyone who installed from current path; address in separate cleanup PR)

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-15 15:28:00 +00:00
alirezarezvani
bf5d4c230f chore: sync codex skills symlinks [automated] 2026-05-15 15:02:51 +00:00