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]
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
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
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]
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