Skip to content

feat: add versioning skill for functions and events#7

Open
ejirocodes wants to merge 5 commits into
inngest:mainfrom
ejirocodes:feat/versioning-skill
Open

feat: add versioning skill for functions and events#7
ejirocodes wants to merge 5 commits into
inngest:mainfrom
ejirocodes:feat/versioning-skill

Conversation

@ejirocodes

@ejirocodes ejirocodes commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Closes #1

  • Add inngest-versioning skill covering patterns for versioning functions and events
  • Covers step memoization, safe deploy patterns (adding/removing/reordering steps), forcing step re-execution, timestamp-based routing for major rewrites, event schema versioning with the v field, gradual rollout, and backward-compatible event evolution
  • Includes migration checklist, expression quick reference, and troubleshooting table
  • All patterns cross-referenced against official Inngest docs at inngest.com/docs/learn/versioning

Test plan

  • Verify all code examples compile with TypeScript
  • Cross-reference patterns against https://inngest.com/docs/learn/versioning
  • Confirm SKILL.md stays under 500-line limit (currently 407 lines)
  • Check cross-links to other skills resolve correctly

Summary by cubic

Adds the inngest-versioning skill with TypeScript examples to help version Inngest functions and events without breaking in-progress runs. Shows safe deploys, side-by-side upgrades, and event schema evolution.

  • New Features

    • Step memoization basics and safe changes (add/remove/reorder steps).
    • Force re-execution by changing step IDs.
    • Major rewrites via timestamp-based routing and event v routing (CEL examples).
    • Event schema versioning guidance; v is metadata only.
    • Gradual rollout pattern; plus migration checklist, expression quick reference, and troubleshooting.
    • Added inngest-versioning to the README skills table.
  • Bug Fixes

    • Restored combined versioning example to three exhaustive handlers: event.v == "2", pre-cutover non‑v2, and post‑cutover fallback (no dropped events).
    • Corrected CEL examples and added resync guidance to the migration checklist.

Written for commit b9de99a. Summary will update on new commits.

Create inngest-versioning skill covering step memoization, safe deploy
patterns, timestamp-based and event version routing for major rewrites,
gradual rollout, and migration best practices.
- Replace event.v == null with event.v != "2" to match official docs
- Clarify that the v field is purely metadata with no platform semantics
- Add resync requirement to migration checklist
- Update troubleshooting table for unversioned event handling

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 1 file

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="skills/inngest-versioning/SKILL.md">

<violation number="1" location="skills/inngest-versioning/SKILL.md:268">
P2: Combined routing example is non-exhaustive and can drop post-cutover non-v2 events with no matching handler.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread skills/inngest-versioning/SKILL.md
Simplify combined pattern to timestamp-only routing (pre-cutover vs
post-cutover) so all events match exactly one handler. Previously,
post-cutover events without v:"2" would match neither function.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="skills/inngest-versioning/SKILL.md">

<violation number="1" location="skills/inngest-versioning/SKILL.md:282">
P2: Combined versioning example no longer enforces `event.v` in routing, so post-cutover non-v2/unversioned events can hit the V2 handler despite claiming version+timestamp control.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread skills/inngest-versioning/SKILL.md Outdated
Use three exhaustive handlers: event.v == "2" for versioned events,
event.v != "2" with timestamp split for unversioned legacy vs fallback.
Ensures no events are dropped while genuinely combining both strategies.
@ejirocodes

Copy link
Copy Markdown
Contributor Author

@djfarrelly this is ready for review when you get a chance

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create versioning skill

1 participant