Commit graph

21 commits

Author SHA1 Message Date
94d4e707db 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
2026-06-23 10:02:26 +02:00
e17134ee9b refactor(linkedin-studio): S31c descriptive-%-scrub — platform-norm percentages asserted as fact -> SSOT
24 edits / 12 files (+26/-26). Unsourced platform/algorithm/audience percentages reconciled to
SSOT vocabulary (figure/proportion/multiplier unverified). Catalog + new sibling clusters
(64% follow-up x5, wrong-window 70% x4, Stage-2 6-10% x2) + borderlines (70% retention, 70%
mobile) + the ~3% save-worthy straggler (surfaced, not silent). The SSOT-sourced ~70% reach
figure is KEPT; only the wrong window corrected (60min/1h -> first 15-30 min). Sourced/computed
benchmarks kept (Buffer 178%/247%, Socialinsider 11%). KEPT C1: ~45% AI-comment figure (already
hedged correlational/medium-confidence). Gate 81/0/0 exit 0, counts 29/19/26 + v0.5.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qgzo6rxthw7KuxHjn5vyE
2026-06-20 09:54:44 +02:00
9e5695286d refactor(linkedin-studio): S29e terminology-scrub — rename thought-leadership-angles.md -> content-angles.md + all pointers
Final sub-pass of the S29 plugin-wide terminology scrub. The canonical reference file is
renamed and every functional pointer updated atomically in one commit. The file's in-file
title/headers were already FORM A-scrubbed in S29c (H1 reads "Content Angles"), so S29e is a
pure rename + pointer update — no FORM A remained in the file.

Rename: references/thought-leadership-angles.md -> references/content-angles.md (git mv).

Pointers updated (17 files, 29 occurrences) — token "thought-leadership-angles" -> "content-angles":
- references/ (2): ai-content-framework, glossary
- agents/ (7): content-repurposer, strategy-advisor, network-builder, content-planner,
  trend-spotter, video-scripter, differentiation-checker
- commands/ (6): pipeline, video, post, competitive, react, batch
- skills/ (1): linkedin-content-creation/SKILL
- docs/ (1, forward-looking): integration-test-guide

Left URØRT per the standing S29 decision (history = honest record of a past state, not a
runtime load): CHANGELOG.md, docs/hardening/log.md, docs/hardening/plan.md. STATE.md untouched
here (rewritten at session end).

Verify: no thought-leadership-angles* file remains; references/content-angles.md present; zero
residual "thought-leadership-angles" in commands/agents/references/skills/integration-test-guide;
structure gate scripts/test-runner.sh 81/0/0 exit 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qgzo6rxthw7KuxHjn5vyE
2026-06-20 06:39:49 +02:00
d15ffa4e03 fix(linkedin-studio): S29d terminology-scrub — "thought leadership" → neutral (skills/config/assets/hooks-test)
Fourth sub-pass of the S29 plugin-wide terminology scrub: the banned brand phrase
"thought leadership" (FORM A) removed from the remaining surfaces — skills, a config template,
shipped assets, and a test fixture. 8 edits across 6 files. Vocabulary consistent with
S29a-S29c: "thought leadership angle(s)" -> "content angle(s)"; the "Value Test" family ->
"Authority Value Test"; "Standard Thought Leadership Post" -> "Standard Post" (matches the
S29a/S29c "Standard Post Structure" equivalent).

Edits: skills/linkedin-content-creation (3) "Identify Thought Leadership Angles" -> "Content
Angles", "Standard Thought Leadership Post" -> "Standard Post", "The 8 Thought Leadership
Angles" -> "The 8 Content Angles"; skills/linkedin-strategy:176 phase-focus cell "Thought
leadership, cross-platform" -> "Signature content, ..." (avoids the Authority-phase column
echo); config/user-profile.template:35 "Build thought leadership & authority" -> "Build
authority & influence"; assets/checklists/quality-scorecard:136 "Passes thought leadership
test" -> "Passes Authority Value Test"; assets/case-studies/case-study-template:173 "Best for:
Thought leadership" -> "Authority content"; hooks/scripts/__tests__/clipboard-helper.test:61
unicode fixture "Thought leadership" -> "Authority" (emoji + arrow retained; coverage unchanged).

Scope (operator-locked, inherits S29a-S29c): FORM A only. FORM B = 8 untouched -- the 5
buzzword-denylist entries MUST list the banned word ("thought leader"), plus 3 role usages
(linkedin-networking x2, README "niche thought leaders"). The 21 thought-leadership-angles.md
filename pointers deferred to S29e. No anchor links to the changed headers anywhere in the
plugin. Forward-looking docs already clean.

Verify: FORM A in scope = NONE; FORM B unchanged (8); filename pointers unchanged (21);
clipboard-helper test 13/0; gate 81/0/0; counts 29/19/26/6 + v0.5.0 unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016qgzo6rxthw7KuxHjn5vyE
2026-06-20 06:19:10 +02:00
8275159aad test(linkedin-studio): M0-16 — lint: EXPECT_REFS=26 + no-bare-path + no-pin + SC2 dry-run (R1) + drop 5 ANALYTICS_ROOT pins it caught 2026-06-18 13:11:50 +02:00
6bd263144f docs(linkedin-studio): M0-15 — repoint remaining prose families + route ab-tests/plans 2026-06-18 13:04:18 +02:00
c0abb82d9c docs(linkedin-studio): M0-14 — D3 path-convention + voice-readers prototype 2026-06-18 12:38:17 +02:00
be8c9b01fb fix(linkedin-studio): S11 — model-name declaration drift + model-consistency lint guard
Cold full-brief re-review (S10) reached a class the S7->S9 algorithm-stat lens
never did:

BLOCKER — post-feedback-monitor published as Haiku in four surfaces
(README:259, skills/linkedin-studio:159 with wrong color Green too,
skills/linkedin-analytics:41, agents-capability-matrix:20) while
agents/post-feedback-monitor.md runs Opus. v4.0.0's Opus promotion never
reached the user-facing tables. Synced all to Opus/Lime. Refreshed
agents-capability-matrix.md (frozen at the v2.0 14-agent era): header 14->19,
+5 missing longform agents, tier counts Opus 2->8 / Haiku 1->0, longform-gate
diagram updated to the real 8-Opus-agent chain.

MAJOR — de-branded docs/plan-fullspektrum-innholdsmotor.md:70 (model brand +
jan-2026 asserted as fact -> no-name/no-month relevance-model phrasing). It was
the only tracked survivor; the rest live in gitignored ROADMAP.md /
.claude/research/ (not shipped, out of honesty scope).

META — added Section 10 model-consistency guard
(scripts/check-model-consistency.mjs): each agents/*.md model: must match every
surface declaration AND the canonical rosters must list all 19 agents.
Permanent non-vacuity self-test + e2e mutation-proven.

Pre-patch sweep confirmed post-feedback-monitor was the sole drifted agent
(89 model rows, 0 other mismatches). test-runner.sh 68/0/0, node --test 94/94.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 15:05:37 +02:00
0e4466b893 fix(linkedin-studio): S9 — full algorithm-magnitude sweep + lint rebuilt to the criterion
Closes the S8 re-review (BLOCK 3/4/1). The S8 fix patched only the 2 strings S7 named; the re-review found 6 more same-class survivors. Per the systemic read, this is a comprehensive sweep, not a per-line patch.

Reconciled every retired engagement-coefficient + model-fact survivor against the canonical references/algorithm-signals-reference.md (order, not coefficients; comment ≈ 2x a like; no model name/params):
- glossary.md: coefficient table + Save-Signal '10x weight' → canonical ordering (citation now true)
- engagement-frameworks.md, analytics-interpreter.md, content-optimizer.md, pipeline.md, engagement-coach.md: the 10x/8x/7-9x/2.5x/0.2x system (incl. 4 survivors the re-review did not cite) → ordering
- playbook: '15x more algorithmic boost' + video '5x more conversations' → directional, sourced
- profile.md + linkedin-voice/SKILL.md: '150B parameter foundation model' → '2026 relevance-ranking model'
- quality-scorecard.md: '360Brew Validation' → topic-relevance framing
- setup.md: 'thought leadership plugin' → 'LinkedIn Studio plugin'

Lint (MAJOR 4): rebuilt scripts/test-runner.sh STALE_STATS to forbid EVERY retired-class phrasing (not the 2 S7 strings) + widened scope to assets/checklists/. Targets retired phrasings (7-9x, (10x), '10x weight', '5x more conversations'), NOT bare 10x/15x/5x (legit 5x5x5 / cadence / pixel-dims / '10x your reach' hyperbole). Proven non-vacuous: catches all 10 retired strings, ignores all 10 legit uses.

Tests (MAJOR 7): added no-anchor fall-through tests for recordFirstHourPlan + recordOutreachContact (date scalar not written/reported, section still appended). MINOR 8: reflowed newsletter.md content-repurposer wiring onto one line.

test-runner.sh 66/0/0; node --test 94/94 (was 92, +2). NO push until /trekreview re-clears the gate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 09:56:49 +02:00
0e04bbc662 docs(linkedin-studio): reconcile discoverability surfaces + skill naming
Wave 3 / Step 12 of the remediation plan (Phase 1 — usable by a non-author).

Fix the discoverability defects the audit flagged:
- skills/linkedin-studio/SKILL.md (the auto-activating router): self-naming 'the
  LinkedIn thought leadership plugin' -> 'LinkedIn Studio' (v3.0 rename leftover);
  the 'All Agents' table corrected from 14 to the real 19 (added editorial-reviewer,
  voice-scrubber, content-reviewer, language-reviewer, fact-reviewer); the 'All
  Commands' table completed to 26 (added headless-review, pivot, carousel) so it
  routes to newsletter/headless-review/pivot/react.
- commands/onboarding.md: '25 commands' -> '26 commands' (x2); pillar count '3-5
  expertise areas' -> '5 expertise areas' (reconciles onboarding's 3-5 with
  setup.md's '5 core topics' and the CLAUDE.md '5 core expertise areas' rule).
- commands/linkedin.md: router table + numbered option list gain headless-review
  and pivot.

Scope note (operator decision, this session): the plan's Verify grep
'grep -rni "thought leadership" skills/ -> no matches' is broader than the brief's
actual criterion (which targets only the router skill's self-naming). 'thought
leadership' is a plugin-wide DOMAIN term — the '8 Thought Leadership Angles'
framework lives in references/thought-leadership-angles.md and is referenced by ~40
files (glossary, agents, post/video/batch commands). Renaming it only inside skills/
would create cross-file inconsistency; renaming it plugin-wide is a separate
vocabulary migration outside Step 12's discoverability scope. Per operator choice,
the router SELF-NAMING is fixed (brief criterion met) and the 4 remaining skills/
hits (linkedin-content-creation headings + one linkedin-strategy phase cell) are
legitimate domain usage kept consistent with the rest of the tree.

setup.md needed no edit: its pillar number was already '5'; reconciliation was a
one-sided fix in onboarding.

Verify: router no longer says 'thought leadership plugin'; grep -nc 'headless-review'
commands/linkedin.md -> 2; onboarding pillar count '5' matches setup.md; SKILL.md
agent table 19 rows, command table 26 rows; structural lint exit 0 (61 passed).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 01:05:19 +02:00
3dd8f40c31 fix(linkedin-studio): propagate reconciled algorithm numbers, cite-not-restate
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 20:32:17 +02:00
52fa87a255 refactor(linkedin)!: rename plugin linkedin-thought-leadership → linkedin-studio (v3.0.0)
BREAKING CHANGE: the marketplace slug, the agent namespace
(linkedin-studio:<agent>), and the runtime state-file path
(~/.claude/linkedin-studio.local.md) all change. Reinstall required;
existing state migrated in place (post metrics, streak, history preserved).
The /linkedin:* commands are unchanged — the command namespace is set
per-command in frontmatter and was always independent of the plugin slug.
Functionality is byte-identical to v2.4.0; this release is pure identity.

- dir + manifests: plugins/linkedin-studio + plugin.json + root marketplace.json
- agent namespace updated in commands/newsletter.md (only functional invoker)
- state path updated in 4 hook scripts + topic-rotation prompt + state template
- catch-all skill dir renamed skills/linkedin-studio (5 functional skills unchanged)
- docs + version bump to 3.0.0 across README badge, CHANGELOG, root README/CLAUDE.md
- historical records (CHANGELOG past entries, docs/ build artifacts,
  config-audit v5.0.0 snapshots) intentionally retain the old slug

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-29 11:32:02 +02:00
c7c09edb39 refactor(linkedin): merge analytics + engagement agents 2→1 each (S19)
- analytics-interpreter absorbs performance-reporter (interpret/report modes,
  identical data sources): mode-selector + both output templates kept inline.
- engagement-coach absorbs comment-strategist (5x5x5 + first-hour + CEA
  commenting + target selection + scoring + quality scorecard + daily
  routine). Self-ref at engagement-coach.md:24 rewritten — target is now
  in-file. Model upgraded from haiku to sonnet (absorbed deeper work);
  tools union: Read, Glob, WebSearch.
- 7 ref-files reconciled: commands/linkedin.md (router rules merged),
  skills/linkedin-analytics (row dropped), skills/linkedin-thought-leadership
  (2 rows merged), skills/linkedin-networking (row dropped), CLAUDE.md
  (agents table 16→14, merged rows), README.md (agents table, flow diagram,
  intent table, analytics consumers line), references/glossary.md (3 'Used in'
  refs), scripts/test-runner.sh (EXPECTED_AGENTS list reconciled to current
  14 — also closed lingering S5/S6 gaps for fact-checker/persona-reviewer/
  video-scripter, removed already-deleted content-tracker/personalization-scorer),
  docs/agents-capability-matrix.md (full restructure: header count 16→14,
  agent table, capability grid columns + capabilities, pipeline diagram,
  intent table, model selection table — fixed STATE residual #1 on the
  tracker/pers-scorer stale columns in the same pass).
- Q2 decision (video-scripter → content-repurposer?): KEEP separate.
  Distinct invocation paths (/linkedin:video vs format conversion), distinct
  outputs (timed video script with pacing+captions vs format-translation
  artifact), and newsletter.md already uses content-repurposer for prose
  drafting independently of video-scripter. Net agents/ 16→14.
- agents/README.md dropped from Files (moved to docs/agents-capability-matrix.md
  in S14); literal Verify exits 2 on missing path (logged), corrected Verify
  passes 4/4 predicates. Manifest audit: 2/2 expected paths exist, 13 'CEA'
  occurrences in engagement-coach.md.
- gitleaks: clean.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 06:19:20 +02:00
fba5a2b5bd refactor(linkedin): absorb authority into strategy + profile canon (S18)
- commands/strategy.md: extend frontmatter with authority triggers; insert
  Step 3.6 Authority Building (signature content map, greatest hits, derivative
  planning, content + network signals, action plan, monthly scorecard); add
  algorithm-signals-reference.md to Reference Files.
- commands/audit.md: Step 5.5 trajectory-review and Step 7 report-block
  trajectory section now route to /linkedin:strategy (the canon); Step 6
  profile-alignment routes to /linkedin:profile (the canon); drop
  trajectory-strategy-adjustments.md + algorithm-signals-reference.md from
  loaded references (canons own them).
- commands/analyze.md: 'If Profile-Content Mismatch' subsection routes to
  /linkedin:profile for the per-section checklist; quick-triage list kept.
- commands/authority.md: removed (absorbed by strategy.md).
- commands/linkedin.md: drop authority table row, merge 'Build authority'
  into AskUser item #10 (Growth strategy & authority), renumber 14-23 to
  13-22, broaden strategy routing trigger keywords, drop standalone
  authority routing rule.
- skills/linkedin-strategy/SKILL.md, skills/linkedin-thought-leadership/SKILL.md,
  CLAUDE.md, README.md: drop /linkedin:authority rows; widen /linkedin:strategy
  descriptions to reflect new scope.

Verification:
- Literal Verify (plan.md:704) exits 1 (expected inversion).
- Corrected predicate (test ! -f && ! grep -rqn …) exits 0 — clean.
- Manifest: commands/strategy.md present; [Aa]uthority match count = 24.
- Hooks: python3 hooks/scripts/compile-hooks.py --check → clean.
- Command count: 25 → 24.
- End-to-end Verification §849 (templates|publish|authority|collab|speaking)
  grep across commands/ agents/ skills/ hooks/ README.md CLAUDE.md → empty.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 06:01:43 +02:00
21919dad5f refactor(linkedin): merge collab + speaking into outreach (S17)
Step 18 (fasit S17): merged commands/collab.md + commands/speaking.md
into a single commands/outreach.md covering both tracks under one
outreach/pitch paradigm. Structural twins: same outreach/pitch flow
(readiness → identify → score → format/abstract → outreach by
temperature → production/portfolio → engagement-pod warning →
pipeline tracker → network/progression → results dashboard) with
track-specific detail at each step.

Capability checklist: every function of both predecessors preserved:
- Collab: 5-item readiness, partner search + 25-pt rubric,
  12 formats across 4 maturity tiers, cold/warm/established outreach,
  DM amplification protocol, 5-phase co-creation workflow,
  shared drafting ground rules, pipeline board, health signals,
  Inner Circle tiers, long-term partnership framework.
- Speaking: 100-pt readiness scorecard, event/CFP search +
  research template, Nordic/European tech conference calendar,
  4 talk abstract templates, speaker positioning content calendar,
  demo reel strategy, speaker bio variants (50/100/200 words),
  CFP cover note + organizer outreach (cold/warm),
  post-speaking follow-up sequence, pipeline tracker,
  progression ladder (4 levels).
- Both: engagement-pod warning (post-Mar-2025), quarterly results
  dashboard with both tracks.

Removed commands/collab.md, commands/speaking.md.

Reconciled all 16 route-refs across plugin (collab 8, speaking 8):
- commands/linkedin.md: table row, priority list (items 16-17 → 16),
  routing rules (lines 177-178 → one rule), removed 'outreach' keyword
  from network-builder agent suggestion (now belongs to /linkedin:outreach).
- skills/linkedin-thought-leadership/SKILL.md: pillar table + all-commands
  table (lines 30, 140, 142).
- skills/linkedin-networking/SKILL.md: commands table (lines 29-30).
- CLAUDE.md: commands table (lines 63-64).
- README.md: feature bullet (line 68), commands table (lines 168-169),
  skills pillar table (line 289), ToS table (line 514).

Verify: corrected predicate (test ! -f X && test ! -f Y && ! grep -rqn)
exit 0. Literal Verify (plan.md:681) exit 1 due to the same exit-inversion
bug observed at Step 16/17 — logged for plan-pass at Step 21.

Manifest audit PASS: commands/outreach.md present; [Ss]peaking 40 hits;
min_file_count=1 satisfied; forbidden/bash checks vacuous.

Net commands/: 26 → 25 (matches plan).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 05:41:09 +02:00
9dd45d33f2 refactor(linkedin): merge publish into calendar — reconcile hook refs (S16)
Step 17 of voyage-build (S16 in plan). publish.md absorbed into calendar.md
as an inline action (Mark as Published flow: queue update, state update,
first-hour battle plan) reusing the same queue-manager.mjs + state-updater.mjs
primitives that publish.md called. calendar.md frontmatter triggers extended
with the publish trigger words; quick-routing block jumps straight to the
publish action when the user prompt names it.

All 21 route-refs reconciled across the 9 expected files, with the 9
hook-script refs (5 in session-start.mjs, 2 in posting-reminder.mjs, 1 in
user-prompt-context.mjs, 1 in hooks/prompts/state-update-reminder.md)
rewritten to call /linkedin:calendar so the runtime guidance no longer
points at a dead command. compile-hooks.py --check reports clean (no
type: prompt hook changes touched hooks.json).

Verify (intent: zero stray refs, file gone): exit 0. Literal Verify in
plan.md:727 logged exit 1 (same exit-inverted && pattern as S15 plan.md:635
— logged for plan-pass at Step 21).

Manifest audit: PASS (expected_paths=calendar.md present; must_contain
[Pp]ublish: 17 matches in calendar.md).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 05:27:36 +02:00
46f02d0e2a refactor(linkedin): merge templates into quick (S15) 2026-05-28 00:07:09 +02:00
476256a09d refactor(linkedin): single newsletter entry + skill trigger + router row (S11) 2026-05-27 22:08:16 +02:00
0e85effa3b refactor(linkedin): edition-state schema + retire 2 deterministic agents to scripts (S6)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 20:26:14 +02:00
Kjell Tore Guttormsen
c596c00fbe chore(privacy): scrub real-org references from plugin internals (phase 2)
Same bulk replacement applied to plugin-internal KB, examples, fixtures,
tests, and docs. Real organization names, persona names, internal system
identifiers, and domain-specific terms replaced with fictional generic
public-sector entity (DDT) and generic terminology.

Scope:
- okr/ — examples, governance, framework, integrations, sources
- ms-ai-architect/ — KB references (engineering, governance, security,
  infrastructure, advisor), tests/fixtures, agents, docs
- linkedin-thought-leadership/ — voice samples, network-builder,
  examples (genericized identifying headlines to "[your organization]")
- llm-security/ — research notes, scan report

Manual genericization beyond bulk replace:
- okr SKILL.md "Primary user / Domain" — generic Norwegian public sector
- linkedin-voice SKILL.md headline placeholder
- network-builder.md headline placeholder
- high-engagement-posts.md voice sample employer line + hashtag

Phase 3 (factual-attribution review) remains: a few KB files attribute
publicly known transport-sector docs/datasets (e.g. håndbok V440, NVDB)
to the fictional DDT after bulk replace. Needs manual semantic review
to either remove or restore correct citation without re-introducing
affiliation references.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-03 04:28:15 +02:00
Kjell Tore Guttormsen
40986575b6 feat(ultraplan-local): v1.6.0 — /ultraresearch-local deep research command
Add /ultraresearch-local for structured research combining local codebase
analysis with external knowledge via parallel agent swarms. Produces research
briefs with triangulation, confidence ratings, and source quality assessment.

New command: /ultraresearch-local with modes --quick, --local, --external, --fg.
New agents: research-orchestrator (opus), docs-researcher, community-researcher,
security-researcher, contrarian-researcher, gemini-bridge (all sonnet).
New template: research-brief-template.md.

Integration: --research flag in /ultraplan-local accepts pre-built research
briefs (up to 3), enriches the interview and exploration phases. Planning
orchestrator cross-references brief findings during synthesis.

Design principle: Context Engineering — right information to right agent at
right time. Research briefs are structured artifacts in the pipeline:
ultraresearch → brief → ultraplan --research → plan → ultraexecute.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 08:58:35 +02:00