linkedin-studio/.gitignore
Kjell Tore Guttormsen be21788321 feat(linkedin-studio): trends store — research-engine inventory (§5 slice 1)
[skip-docs] internal plumbing — standalone store, no command/agent/pipeline
surface change until slice 2 wiring (mirrors specifics-bank slice 2). CLAUDE.md
"Telling"/counts untouched; lint stays 84/0/0.

Research-engine §5 (foundation layer) slice 1: the deterministic STORE half of
the persistent trend store — a topic-tagged, provenance-bearing inventory of
trend signals captured over time, so the research engine accumulates HISTORY
instead of starting amnesiac each session. Trend-side twin of the lived-specifics
bank (same store/dedup/query discipline; dedupe key is normalized title+URL, not
free-text content). Generic by architecture: nothing niche-specific lives here —
topics and source are free-form, decided upstream via config/profile.

scripts/trends/ (sibling to specifics-bank, same tsx convention):
- src/types.ts — TrendRecord/TrendStore schema (schemaVersion 1), minimal
  generic core: title, url, source, capturedAt, topics[], optional summary
- src/store.ts — pure store: normalizeField, title+url-hash id (= dedupe key),
  load/save, addTrend (dedupe + topic union on re-capture; first-sighting
  source/capturedAt kept), queryByTopic (overlap-ranked then recency), history
  (time-scoped, since/limit)
- src/cli.ts — add / query / list; default store under
  ${LINKEDIN_STUDIO_DATA:-~/.claude/linkedin-studio}/trends/ so trend history
  survives plugin upgrades/reinstalls (M0 data-path seam)
- tests/store.test.ts — 21/21 green; tsc clean
- README + .gitignore for node_modules/build

Capture/scoring agent + MCP-first routing land in slice 2; the CI binding guard
is deferred to wiring, mirroring the specifics-bank timeline.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 19:08:21 +02:00

80 lines
1.8 KiB
Text

# Secrets and sensitive files
.mcp.json
.env
.env.*
# Local configuration
*.local.md
# Real voice profile is personal data — adopters keep theirs local; the tracked
# authentic-voice-samples.md ships as a sentinel placeholder. (Already matched by
# *.local.md above; listed explicitly so the intent is unmissable.)
assets/voice-samples/authentic-voice-samples.local.md
# Session state (personal activity, auto-initialized from template)
REMEMBER.md
# Credentials
credentials.json
*-secret*
*.pem
*.key
# OS files
.DS_Store
Thumbs.db
# IDE
.idea/
.vscode/
*.swp
*.swo
# Temporary files
*.tmp
*.bak
# Draft content (personal posts)
assets/drafts/queue.json
assets/drafts/week-*/
# Analytics data (personal performance data)
assets/analytics/exports/
assets/analytics/posts/
assets/analytics/weekly-reports/
assets/analytics/content-history.md
# Internal development files (not for public release)
BACKLOG.md
docs/DEVELOPMENT-LOG.md
# Generated annotation/review artifacts (regenerable; annotations live in browser localStorage)
docs/review/
docs/**/*.html
# Voyage executor bookmarks (local continuity, not tracked)
docs/**/.session-state.local.json
*.local.json
# Node.js
scripts/analytics/node_modules/
scripts/analytics/build/
scripts/contract-gate/node_modules/
scripts/contract-gate/build/
scripts/specifics-bank/node_modules/
scripts/specifics-bank/build/
scripts/trends/node_modules/
scripts/trends/build/
# --- session/local state ---
# STATE.md is LOCAL-ONLY (gitignored): no private remote exists and STATE must
# never reach the public open/ mirror. Deliberate deviation from the global
# "STATE tracked" rule, justified by the absence of any private remote.
STATE.md
REMEMBER.md
ROADMAP.md
TODO.md
NEXT-SESSION-PROMPT*.local.md
*.local.md
*.local.json
*.local.sh
.DS_Store
.claude/