feat(linkedin-studio): de-niche content framework + planner calendar — recast/rename to content-framework.md (B-S2a) [skip-docs]

B-S2a, the constraining-first slice of the de-niche sweep: kill the niche at
its source. B-S1 made trend-spotter pillar-driven, but the agent still READ
references/ai-content-framework.md (and so did differentiation-checker,
voice-trainer, and the content-creation skill) — an AI/Microsoft-specific file
whose very name baked in the niche. So the niche leaked back regardless of how
clean the agents were. This recasts that file domain-general and de-niches the
content-planner seasonal calendar (the other hardcoded beat: MS Build/Ignite as
THE anchors). The principle: vary concreteness, don't sterilize
(plugin-is-domain-general).

- Recast + rename references/ai-content-framework.md -> references/content-framework.md:
  title "AI Content Framework" -> "Content Framework"; the 4 pillars kept as a
  domain-general pattern (News/Implementation/Strategy/Tools) with examples now
  spanning multiple fields instead of AI-only; AI-specific placeholders
  ([AI announcement], [AI system], GPT-X/Claude X) generalized to neutral
  brackets; anti-patterns "AI will change everything" -> "[Field] will change
  everything". The "News Monitoring / Sources by Priority" section (AI sources:
  The Batch, ArXiv, r/MachineLearning, OpenAI/Anthropic blogs) — now duplicated
  by the trend engine's config source-list — is thinned to point at
  config/trends-sources.template.md + the data-dir override, keeping the
  daily/weekly RHYTHM (general) and dropping the baked source list.
- Rename ripple, 6 referrers repointed: trend-spotter, differentiation-checker,
  voice-trainer (reference lines, + dropped "AI" from descriptions), glossary
  (Used-in + de-niched the "Example for AI content" pillar illustration),
  linkedin-content-creation SKILL ("AI-specific angles" -> "Domain content
  pillars + angles"), and test-runner §17 (NEGATIVE17 probe path + comment).
  docs/hardening/log.md left intact — historical record, not a live pointer.
- content-planner.md seasonal calendar de-niched: header "Nordic/Tech Focus" ->
  "rhythm, adapt to your field & region" + intro prompt; Microsoft Build,
  Ignite (x2), Apple/Microsoft launches, NDC, EU AI Act, "Azure AI" example
  pillar, "AI predictions", Nordic/17.mai locale anchors -> domain/region-
  neutral prompts. Global anchors kept (New Year, IWD, Halloween, Black Friday,
  year-end).

Deferred to after the full sweep (per STATE): extending the §17 de-niche guard
to content-planner (and content-framework) — the guard's token set + agent
scope is best designed once the sweep (B-S2b) reflects the final clean surface.

ref count unchanged (27; rename is 1->1). Gate 87/0/0 (§17 self-test green).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RBMKqPSVbvSZHtQ4heM1UY
This commit is contained in:
Kjell Tore Guttormsen 2026-06-23 10:02:26 +02:00
commit 94d4e707db
9 changed files with 379 additions and 414 deletions

View file

@ -708,7 +708,8 @@ echo "--- Trend-Spotter De-Niche ---"
# agents/trend-spotter.md. Scoped to this one agent by design (B-S1); the wider
# de-niche sweep (B-S2) covers the other surfaces. Non-vacuity self-test mirrors
# Sections 8/13: the criterion must catch the beat tokens and ignore generic prose
# (incl. the ai-content-framework.md reference filename, which B-S2 owns).
# (incl. the content-framework.md reference filename — B-S2a recast + renamed it
# from ai-content-framework.md, de-nicheing the file the agent reads).
# Case-insensitive: "Public sector" and "public sector" name the same beat, and a
# future reintroduction could use either case — the positive set locks that in.
NICHE_TOKENS='Microsoft|Azure|Copilot|public sector|offentlig sektor'
@ -734,7 +735,7 @@ done <<'NEGATIVE17'
platform changes in the user's stack
sector milestones in the user's domain
the user's content pillars and expertise areas
references/ai-content-framework.md
references/content-framework.md
major product/model releases
NEGATIVE17
if [ "$TS_SELFTEST_OK" -eq 1 ]; then