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:
- Phase 0 foundations — repo spine, authoring standards, publishing rails (in
naluma-app-content). - Phase 1 copilot — the
naluma-app-editor-copilotplugin (innaluma-ai-marketplace), an editor copilot built skill by skill, test-first persuperpowers:writing-skills.
Master plan: docs/superpowers/specs/2026-06-04-app-content-production-master-plan.md.
Content flow: naluma-app-content → naluma-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 fieldscategory/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 indocs/authoring/standards/. Standards reference the Directus reference-manifest for shape (no local schema mirror). - C — publishing rails:
docs/publishing.mdrunbook. Live smoke-test still pending (see below). - D — voice casting: not started.
Open / blocked items¶
- 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 FAIL —coach-content-validatedoes not fire on the live publish path (hook binds tocontent.coach_conversations.items.createbut the live collection is unprefixed anditems[]lives on*_translations). Filed naluma-directus#90 (Bug/High/Low). Result recorded indocs/publishing.mdvia naluma-app-content PR #13. Two follow-ups: (a) Jens must delete the throwaway dev rows manually (conv56303f78-adfb-484f-a1c4-c7be873f1b63+ 2 translations, then modulec15b1098-d2cc-40f7-a6e0-5ea4abba45a3); (b) the Phase 1publishskill must self-validate against the JSON schemas until #90 is fixed. reviewskill — the next build. Brainstorm scope first (what factuality checks, what style gate, howgate_scoresare written back to the draft frontmatter).
Environment / connections (as of 2026-06-05)¶
- Neon — authenticated. Project "Naluma"
steep-shape-20762977= content-automation DB (201 publishedarticles). Read-only forresearch. - 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)¶
rtkBash 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
contentkeys differ (e.g.experiment=intro_h4+intro_body+prompts+alert, NOT a plainintro). Live schemas:naluma-directus/schemas/session-content/<type>.schema.json. - The outer
Tinnitus App/dir IS thenaluma-rootrepo./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 trailerCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>. - Agent config edits are gated — committing
.claude/settings.jsonneeds 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 targetmain; an earlier note saidmaster— stale). Version bumps: update bothplugins/<p>/.claude-plugin/plugin.jsonAND.claude-plugin/marketplace.json.
PRs this session (all merged unless noted)¶
- naluma-ai-marketplace #110 —
write-sessionskill (mergedbabcfc5). - 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.