Push Workflow
The push workflow is the fastest way to iterate on your content model. Edit your schemas, run one command, and the changes are live in Contentful. No migration files, no history tracking.
How it works
Section titled “How it works”edit schema → push- Edit your schema — modify or create files in
schemas/. - Push — ctkit diffs local vs. remote and applies changes directly.
That’s it. Two steps.
Step by step
Section titled “Step by step”1. Edit your schema
Section titled “1. Edit your schema”Create or modify a schema file:
import { contentType, fields } from '@ctkit/core';
export const blogPost = contentType('blogPost', { name: 'Blog Post', fields: { title: fields.symbol({ name: 'Title', required: true, }), body: fields.richText({ name: 'Body', }), },});2. Push to Contentful
Section titled “2. Push to Contentful”ctkit pushctkit shows a summary of what will change and asks for confirmation:
+ blogPost (new content type) + title Symbol (required) + body RichText
Apply these changes? (y/n)To skip the confirmation prompt:
ctkit push --forceTo preview without applying:
ctkit push --dry-runWhat push does NOT do
Section titled “What push does NOT do”- No migration files — nothing is written to
migrations/. - No execution history — ctkit doesn’t record what changed or when.
- No reproducibility — you can’t replay the same changes against another environment.
This is intentional. Push trades traceability for speed.
When to use this workflow
Section titled “When to use this workflow”| Scenario | Push workflow? |
|---|---|
| Solo development | Yes |
| Experimenting with content models | Yes |
| Throwaway or sandbox environments | Yes |
| Hackathons, spikes, proof of concepts | Yes |
| Team collaboration | No — use migration |
| Production deployments | No — use migration |
Switching to migrations later
Section titled “Switching to migrations later”You can start with push and switch to the migration workflow at any point. There’s no lock-in.
When you’re ready:
- Stop using
ctkit push. - Start using
ctkit generate+ctkit migrate. - Your first generated migration will capture whatever differs between your local schemas and the current remote state.
The migrations/ directory starts fresh — ctkit doesn’t need prior migration history to begin tracking changes.