claude-skills/marketing/linkedin/skills/linkedin-analytics
Claude c4f1d33987
fix(linkedin): judge every occurrence on its own merits, band a flat centre honestly
Three findings from the fourth review round on this PR.

1. The policy gate de-duplicated matches by snippet TEXT before deciding whether
   an exemption applied, so the second use of a generic word inherited the first
   one's fate. "automate posting via linkedin's native scheduler, and also
   automate direct messaging to my whole network" excused the first "automate"
   (native scheduling is endorsed), then skipped the second as a duplicate - so
   the mass-DM half was never evaluated and the request returned ALLOW. Each
   occurrence is now judged at its own position; de-duplication is for the
   display lists only. Verified: this case and two variants move ALLOW -> REFUSE
   on P1-AUTOMATION with the same word in both `matched` and `exempted`, which is
   the fix itself firing rather than another rule covering for it.

2. The analyzer treated iqr == 0 as "nothing is an outlier" and labelled every
   post TYPICAL. A flat middle 50% is a realistic export shape - many similar
   posts plus a couple of viral ones - so that hid genuine breakouts, trading one
   honesty problem for another. A degenerate centre now ranks against the median:
   equal is TYPICAL, above is BREAKOUT, below is WEAK. All-identical input still
   returns 12 TYPICAL; flat centre plus two viral posts returns 10 TYPICAL and
   2 BREAKOUT.

3. P5's group pattern listed "communities" twice; the second alternative is now
   "forums?", which the rule could not previously match.

Verified: 18-case adversarial battery (12 refuse, 6 allow) all correct, with
refusals attributed to the specific rule rather than assumed; pre-fix control
confirms 3 of the 4 automation cases returned ALLOW before this change. Blocking
gates green - compileall, check_paths, check_frontmatter, check_dual_publish,
check_model_freshness, check_skill_names, check_plugin_json --all,
derive_counters --check, smoke_scripts 696/696. Pinned sample outputs unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BswsZp5zrJWFAGU6KWNA1s
2026-08-26 14:52:39 +00:00
..
assets feat(marketing): add linkedin plugin — organic presence with platform rules in code 2026-08-25 07:32:30 +00:00
references feat(marketing): add linkedin plugin — organic presence with platform rules in code 2026-08-25 07:32:30 +00:00
scripts fix(linkedin): judge every occurrence on its own merits, band a flat centre honestly 2026-08-26 14:52:39 +00:00
SKILL.md feat(marketing): add linkedin plugin — organic presence with platform rules in code 2026-08-25 07:32:30 +00:00