Skip to content

Session Handover — App Content Production System

Last updated: 2026-06-05 · Status: Phase 1 copilot build, skill-by-skill. Uncommitted working note — not part of the repo's doc set; overwrite/delete freely.


What this workstream is

Building the content-production system for the Naluma app (coach conversations, sessions incl. insight, sounds). Two layers:

  1. Phase 0 foundations — repo spine, authoring standards, publishing rails (in naluma-app-content).
  2. Phase 1 copilot — the naluma-app-editor-copilot plugin (in naluma-ai-marketplace), an editor copilot built skill by skill, test-first per superpowers:writing-skills.

Master plan: docs/superpowers/specs/2026-06-04-app-content-production-master-plan.md.

Content flow: naluma-app-contentnaluma-directus (CMS) → Supabase (content.*) → naluma-app.


Copilot plugin status (naluma-app-editor-copilot)

Built skill-by-skill, each via brainstorm → spec → plan → TDD-for-skills (RED→GREEN→REFACTOR) → ship via the naluma-workflow gates. Skills live in naluma-ai-marketplace/plugins/naluma-app-editor-copilot/skills/.

Skill Status Notes
research ✅ Shipped (PR #109) 7-field dossier. Educational mode reads finished content-automation Neon articles (articles.final_content+faq_items_json+citations); technique mode reads repo IP/protocol docs + license-free web. Verified live against Neon 2026-06-05.
write-session ✅ Shipped (PR #110) Dossier → schema-shaped session draft (8 template_types). Maps dossier values verbatim + # FLAG; never invents citations; _editor_confirm on placement fields.
review NEXT Factuality + style gates (fills gate_scores). Start here next session.
humanize ⬜ Planned Apply docs/authoring/ai-patterns-*.md.
publish ⬜ Planned Self-contained MCP publish to Directus (validate vs schemas → POST). Refactor to compose Directus skills later.
naluma-context ⬜ Planned (shared) Surfaces standards/schemas/programme-map centrally.
coach-conversation authoring ⬜ Planned (separate) Composition of items[] chat trees. NOT write-session.

Sounds get no write skill — authored from docs/authoring/standards/sound.md, checked in publish.


Phase 0 status (all merged)

  • A — repo spine + content map: docs/content-lifecycle.md, programme-map.yaml, docs/templates/item-frontmatter.md (now includes placement fields category/segment_affinity/pain_points/_editor_confirm — issue #10 closed).
  • B — authoring standards: docs/authoring/voice.md, ai-patterns-en.md/ai-patterns-de.md, 10 per-type standards in docs/authoring/standards/. Standards reference the Directus reference-manifest for shape (no local schema mirror).
  • C — publishing rails: docs/publishing.md runbook. Live smoke-test still pending (see below).
  • D — voice casting: not started.

Open / blocked items

  1. Directus smoke-test (Phase 0 C) — ✅ RAN 2026-06-05 (dev, Directus MCP loaded). create+read PASS; delete BLOCKED (MCP role is CRU-only — "Delete actions are disabled"); gate FAILcoach-content-validate does not fire on the live publish path (hook binds to content.coach_conversations.items.create but the live collection is unprefixed and items[] lives on *_translations). Filed naluma-directus#90 (Bug/High/Low). Result recorded in docs/publishing.md via naluma-app-content PR #13. Two follow-ups: (a) Jens must delete the throwaway dev rows manually (conv 56303f78-adfb-484f-a1c4-c7be873f1b63 + 2 translations, then module c15b1098-d2cc-40f7-a6e0-5ea4abba45a3); (b) the Phase 1 publish skill must self-validate against the JSON schemas until #90 is fixed.
  2. review skill — the next build. Brainstorm scope first (what factuality checks, what style gate, how gate_scores are written back to the draft frontmatter).

Environment / connections (as of 2026-06-05)

  • Neon — authenticated. Project "Naluma" steep-shape-20762977 = content-automation DB (201 published articles). Read-only for research.
  • Supabase — connected (full tool suite). This is the app DB (content.*).
  • Directus MCP — loaded & verified (dev cmsdev.naluma.space). Role is CRU-only (no delete).
  • PostHog — connected, project "Naluma App" (133642).

Conventions & gotchas (don't relearn these)

  • rtk Bash hook is lossy on OUTPUT — use native Read/Grep for exact strings; trust grep match-counts, not displayed lines. (See the saved memory.)
  • The Directus schema is authoritative, not a skill's illustrative table. Per-type session content keys differ (e.g. experiment = intro_h4+intro_body+prompts+alert, NOT a plain intro). Live schemas: naluma-directus/schemas/session-content/<type>.schema.json.
  • The outer Tinnitus App/ dir IS the naluma-root repo. /naluma-root/ is gitignored now to block accidental nested clones. Sub-repos are gitignored siblings.
  • Ship discipline (/naluma-workflow:ship-change): re-run gate after review fixes; STOP for approval; never push/PR/merge without explicit consent. Squash-merge; conventional commits; commit trailer Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>.
  • Agent config edits are gated — committing .claude/settings.json needs explicit per-action approval (the auto classifier blocks it). The user can commit it themselves via !git ....
  • naluma-ai-marketplace default branch is main (verified 2026-06-09: gh repo view + merged PRs #120–#122 target main; an earlier note said master — stale). Version bumps: update both plugins/<p>/.claude-plugin/plugin.json AND .claude-plugin/marketplace.json.

PRs this session (all merged unless noted)

  • naluma-ai-marketplace #110write-session skill (merged babcfc5).
  • naluma-app-content #11 — frontmatter placement fields (closed issue #10).
  • naluma-app-content #12 — install Directus .mcp.json.
  • naluma-root #31 — root cleanup (8 stray docs + gitignore + settings.json).
  • naluma-root #32 — prod-launch doc (rescued from the removed nested clone).

Repos are clean and synced: naluma-ai-marketplace main, naluma-app-content main, naluma-root main.