Help us improve
Share bugs, ideas, or general feedback.
From dynamo-expert
Interactive skill for eliciting, formalizing, and persisting DynamoDB access patterns. Use when the user wants to start designing a DynamoDB table, define entities, or document how their application will read and write data. This is Step 1 of a 3-step pipeline: access patterns -> table design -> query interfaces. The output is a structured .md file that feeds into the dynamodb-table-design skill.
npx claudepluginhub walis85300/marketplace --plugin dynamo-expertHow this skill is triggered — by the user, by Claude, or both
Slash command
/dynamo-expert:dynamodb-access-patternsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill guides an interactive conversation to extract, formalize, and persist all access patterns for a DynamoDB single-table design. It is **language-agnostic** and **project-agnostic** -- it works for any application regardless of tech stack.
Reviews DynamoDB table design for access patterns, partition keys, indexes, hot partitions, capacity, and cost. Use when DynamoDB correctness, latency, scaling, or cost depends on table design.
Designs NoSQL data models for MongoDB, DynamoDB, Redis, and Cassandra using access patterns, embedding/referencing decisions, and denormalization trade-offs.
Produces a structured database schema design document covering entity relationships, table definitions, constraints, indexes, and access patterns. Use when designing a new schema or documenting an existing one.
Share bugs, ideas, or general feedback.
This skill guides an interactive conversation to extract, formalize, and persist all access patterns for a DynamoDB single-table design. It is language-agnostic and project-agnostic -- it works for any application regardless of tech stack.
[1. Access Patterns] --> 2. Table Design --> 3. Query Interfaces
(this skill) (dynamodb-table- (dynamodb-query-
design) interfaces)
This skill produces a .md file that is consumed by dynamodb-table-design.
Ask the user to describe their application at a high level. You need to understand:
Ask open-ended questions. Don't assume -- let the user describe their domain.
Example opening:
Before designing the DynamoDB table, I need to understand your domain.
1. What does your application do in one sentence?
2. What are the main entities (things you need to store)?
3. Who or what interacts with these entities?
For each entity the user mentions, gather:
| Field | Description | Example |
|---|---|---|
| Name | Singular name, PascalCase | Order |
| Description | What it represents | "A purchase made by a customer" |
| Attributes | All fields with types | orderId: string, total: number, status: string, createdAt: datetime |
| Relationships | How it relates to other entities | "Belongs to a User. Contains many OrderItems." |
| Cardinality | Expected volume | "~100 orders per user, ~10M total" |
| Lifecycle | Does it expire? Get updated? Deleted? | "Updated when status changes. Archived after 1 year." |
Ask the user about EACH entity systematically. Don't skip attributes -- they affect key design later.
IMPORTANT: Also identify counter/aggregate entities that the user might not think of as entities:
This is the most critical step. For EACH entity, ask:
For [Entity], how will your application access this data?
Think about every screen, API endpoint, or background job that reads or writes this entity.
For each access pattern, capture these fields:
| Field | Description |
|---|---|
| ID | Sequential number (AP-001, AP-002, ...) |
| Entity | Which entity or entities are involved |
| Operation | Read / Write / Update / Delete |
| Description | Plain English description |
| Input Parameters | What the caller provides |
| Result Type | Single item, Collection, or Count |
| Sort Required | None, Ascending, Descending -- and by what field |
| Filters | Any conditions beyond the lookup key |
| Pagination | Yes/No -- is the result set potentially large? |
| Frequency | Hot (>100/s), Warm (1-100/s), Cold (<1/s) |
| Consistency | Eventual (default) or Strong |
| Multi-Entity | Does this pattern need data from multiple entity types in one call? |
Probing questions to uncover hidden patterns:
Review all access patterns and look for cases where multiple entity types are fetched together. These are the most valuable patterns in single-table design.
Ask the user:
Looking at your access patterns, I see some opportunities to fetch related data in a single query:
- [AP-003] and [AP-007] both need User + Orders data
- [AP-012] needs Product + Reviews together
Do these always get fetched together, or only sometimes?
Are there screens/endpoints where you need BOTH in one call?
Mark these patterns explicitly as item collection candidates.
For every write operation, determine:
Example questions:
When you create an Order:
- Do you also need to update the user's order count?
- Do you need to add it to a global "recent orders" list?
- Should it fail if the user doesn't exist?
Before persisting, do a final review with the user:
Here's a summary of what I've captured:
Entities: [list]
Access Patterns: [count] total
- Reads: [count]
- Writes: [count]
- Multi-entity: [count]
Missing anything? Common things people forget:
- Admin/backoffice access patterns
- Search/filtering patterns
- Reporting or analytics queries (these may go to a different system)
- Migration or bulk import patterns
- Audit trail / history patterns
Persist the output as a markdown file. The user chooses the path, but suggest docs/dynamodb/access-patterns.md or a similar location in their project.
Read reference/output-template.md for the exact file structure to use.
string, number, boolean, datetime, list, map. Don't use TypeScript, Python, or Java-specific types.dynamodb-table-design)..md file. This file is the input for the next step.Once the access patterns file is complete, tell the user:
Access patterns are documented at [file path].
The next step is to design the DynamoDB table structure -- partition keys,
sort keys, GSIs, and map each access pattern to a concrete DynamoDB operation.
To continue, use the `dynamodb-table-design` skill with this file as input.