Commit graph

7 commits

Author SHA1 Message Date
Claude
645c523be1
feat(marketing): add linkedin plugin — organic presence with platform rules in code
Answers discussion #934, which asked for a strategic assistant for growing a
LinkedIn presence organically rather than a post generator.

Six skills under marketing/linkedin/: an orchestrator (context: fork) plus
profile, strategy, content, engagement, and analytics lanes. 17 stdlib-only
tools, 15 references, 2 agents, 8 /cs:* commands.

The design constraint is the differentiator: no LinkedIn credentials, no API
calls, no scraping, nothing auto-sent. Automated posting, connecting, and
commenting are prohibited by LinkedIn's User Agreement 8.2, and a restricted
account ends a compounding asset. linkedin_policy_gate.py runs before any
drafting and refuses seven request classes — automation, scraping, engagement
pods, bulk messaging, fake identity, fabricated proof, named third-party
automation platforms — each carrying the policy anchor and a compliant
substitute, so the gate never just says no.

Refusals are real rather than advisory. A cadence under 90 minutes a week
returns a comment-only plan instead of a schedule that dies in week five. A
newsletter whose six-month cost exceeds the budget is refused before the promise
is made. An experiment needing more posts than a quarter allows is reported
infeasible rather than quietly re-sized. The pattern miner refuses to test
anything below 10 posts and reports NOTHING_SURVIVED as a finding.

Evidence discipline: two widely repeated claims are corrected rather than
propagated. The "personalised note triples acceptance" claim is not supported by
the largest samples (acceptance is near-identical either way, ~26.4%); what a
note moves is the post-accept reply rate (~5.4% to ~9.4%), which is why the
message builder refuses an ask in a first-touch note. The ~19% in-body link
reach reduction has never been confirmed by LinkedIn as a penalty and has a
plausible dwell-time explanation, so it is a warning rather than a block. Every
reference carries per-claim confidence levels.

Accessibility is a blocking lint finding: Unicode pseudo-bold is announced by
screen readers as mathematical symbols and is not indexed by search.

All six SKILL.md files are 6/6 PASS on the write-a-skill checklist. Every tool
supports --help, --sample, and --output json with typed exit codes.

Counters: skills 380 -> 386; plugins 96 -> 97; tools 706 -> 723; refs 823 -> 838;
agents 114 -> 116; commands 138 -> 146 (derive_counters.py --check).

Also syncs three previously-merged skills (agent-memory, hivemind, skill-doctor)
into the .hermes/ and .vibe/ mirror trees, which had drifted behind .codex/.

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

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qgc6RYXWJPr5oW9DHU7zR4
2026-08-21 05:47:37 +00:00
Claude
a088c8ba77
fix: phantom-path sweep — 888 unresolvable references to zero
A directory reorg added a skills/ path segment; hundreds of references never
followed. This sweep repoints every path-like reference in SKILL.md, agents,
commands, orchestration, and templates to verified on-disk targets:

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

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

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

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

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

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

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 10:11:33 +00:00
Claude
6d9630f83c
chore(cleanup): move pulse + capture to proper domain folders
Surgical move PR — resolves the two domain warts accumulated during
the v2 megaprompt build sweep:

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

WHY THIS PR

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

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

WHAT MOVED

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

INTERNAL REFERENCES UPDATED

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

CROSS-SKILL REFERENCES UPDATED

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

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

CODEX SYMLINKS RE-POINTED

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

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

VERIFIED CLEAN

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

POST-CLEANUP STATE

Domain folders contain only domain-appropriate skills:

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

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

REMAINING WORK (after this merges)

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

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

https://claude.ai/code/session_01FEUmeuYhmnxVFq7EZM8ZSw
2026-05-16 05:08:10 +00:00
Claude
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