dj-prefixed-ulids

Configure Stripe-style prefixed ULID primary keys for Django models.

109|6|Updated Apr 4, 2026
One-click install
npx skills add https://github.com/dvf/opinionated-django --skill dj-prefixed-ulids
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: dj-prefixed-ulids
Source: https://github.com/dvf/opinionated-django/tree/main/skills/dj-prefixed-ulids
Command: npx skills add https://github.com/dvf/opinionated-django --skill dj-prefixed-ulids

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Default Django integer or UUID primary keys are difficult to debug in logs, risk exposing ordering or volume information when used in public URLs, and require extra type handling when passing IDs between the ORM, services, APIs, and DTOs.

Core Features & Use Cases

  • Debuggable Prefixed IDs: 3-4 character prefixes immediately identify entity types in logs and traces, eliminating the need for cross-referencing database columns.
  • Time-Sortable & Exposure-Safe: ULIDs sort chronologically by default, and prefixed values leak no sensitive metadata when shared publicly.
  • Consistent Type Across Layers: All IDs are strings end-to-end, eliminating UUID/string coercion at service, API, and DTO boundaries.
  • Use Case: When building a Django e-commerce platform, use this skill to configure prefixed ULIDs for Product, Order, and Item models to speed up debugging and simplify cross-layer type handling.

Quick Start

Use the dj-prefixed-ulids skill to configure prefixed ULID primary keys for all new Django models in your project, including the shared ID generator and model field setup.

Frequently Asked Questions about dj-prefixed-ulids

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I use prefixed ULIDs for primary keys in Django models?

To use prefixed ULIDs for Django primary keys, configure a shared ID generator and model field setup to replace default integer or UUID keys with Stripe-style 3-4 character prefixed ULIDs.

Why use prefixed ULIDs instead of UUIDs for Django public identifiers?

Prefixed ULIDs provide debuggable entity type identification in logs, are time-sortable, and leak no sensitive volume metadata when shared publicly, unlike sequential integers or default UUIDs.

How do I eliminate UUID and string type coercion across Django ORM and API boundaries?

Eliminate UUID and string type coercion across ORM, service, API, and DTO boundaries by implementing prefixed ULID primary keys, which maintain consistent string typing end-to-end throughout all application layers.

Can I add prefixed ULIDs to existing Django models using auto-increment keys?

Yes, you can apply prefixed ULIDs to existing models through a schema review process to replace auto-increment or UUID keys, ensuring exposure-safe, time-sortable public identifiers for your current database structure.

What are the limitations of migrating existing Django database schemas to prefixed ULIDs?

Migrating existing Django schemas to prefixed ULIDs requires careful schema review to replace current primary keys, particularly ensuring referential integrity is maintained when updating established auto-increment or UUID model relationships.