-
Notifications
You must be signed in to change notification settings - Fork 1
[Slice 4] new-blog-post end-to-end (multimode) #25
Copy link
Copy link
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestready-for-agentScoped, dependencies clear, acceptance criteria explicit — grabbable by an AFK agentScoped, dependencies clear, acceptance criteria explicit — grabbable by an AFK agent
Milestone
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or requestready-for-agentScoped, dependencies clear, acceptance criteria explicit — grabbable by an AFK agentScoped, dependencies clear, acceptance criteria explicit — grabbable by an AFK agent
Type
Fields
Give feedbackNo fields configured for issues without a type.
Parent
#21
What to build
Add the
blog postcontent type end-to-end. Uses the team cross-ref from #24 to validateauthor. This is the highest-volume content type at Ocobo, so adoption of the publishing flow hinges on this slice.Concretely:
scripts/schemas/blog-post.schema.js— Zod schema withtitle,author(team slug),description,date,image,exerpt?(encode the typo as-is, with a code comment pointing to the future fix issue),read?,podcastId?,tags?[].scripts/cross-ref-resolver.jsto validateauthorexists in the team registry.scripts/validate-content.jsto validateblog/fr/(andblog/en/if non-empty)..claude/skills/new-blog-post/SKILL.md— multimode. Interview: slug-first conflict check, author picker (active team members only), autocomplete tags from existing values with warn-but-allow for new ones, optional fields batched, preview before write, cover image via drag&drop intoassets/posts/<slug>/.docs/notion-templates/blog-post.md— property mapping + NotionAI prompt for the Blog Posts DB.Acceptance criteria
pnpm validatecoversblog/fr/and passes on current data (or reports specific violations).blog-post.schema.jsand the extendedcross-ref-resolver.jspass./new-blog-post <notion-url>imports a Notion page, validates theauthoragainst the team registry, and refuses on a broken reference with a clear message./new-blog-post(no arg) runs the interview; the author picker lists only active team members.exerpt:(notexcerpt:) and the schema comment references the typo cleanup issue.Blocked by