원클릭으로
data-architecture
Generate data architecture and persistence layer documentation with data model diagram
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Generate data architecture and persistence layer documentation with data model diagram
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generate API and service communication contracts with sequence diagram
Generate architecture diagram with component relationship details from project analysis
Run application assessment for a single repository
Generate core business workflow documentation with sequence diagram
Generate comprehensive configuration and externalized settings inventory
Create a modernization plan to migrate the project to Azure
| name | data-architecture |
| description | Generate data architecture and persistence layer documentation with data model diagram |
Analyze the project to document database configuration, entity models, data ownership boundaries, repository interfaces, and caching strategies. Generate a Mermaid ER diagram showing entity relationships. Save to .github/modernize/assessment/engines/facts/data-architecture.md.
workspace-path (optional): Path to the project to analyze (defaults to current directory)This skill is part of a set of four complementary assessment skills. To avoid content duplication across their output documents, observe these scope rules:
spring.jpa.hibernate.ddl-auto, spring.sql.init.*) are owned by the configuration-inventory skill. In the Database Configuration table, describe the behavior (e.g., "Hibernate does not manage schema; SQL scripts are authoritative") but do NOT list raw property key-value pairs. Reference configuration-inventory.md for the full property inventory.api-service-contracts skill. Do NOT list controller endpoints or HTTP paths. Repository methods are in scope for this skill; controller routes are not.business-workflows skill. Do NOT describe multi-step business processes or enumerate validation constraints. When documenting entity relationships (cascade, fetch), focus on the persistence/ORM implications, not the business process flow.configuration-inventory skill. Mention database profiles only in the Database Configuration table to identify which DB is used per profile — do NOT describe Docker Compose services, K8s manifests, or deployment targets in detail.Extract database configuration from project files, per profile/environment, and produce the complete ## Database Configuration section:
default/dev in-memory testing, MySQL for production/mysql profile)mysql-connector-java for production, hsqldb for development)spring.jpa.hibernate.ddl-auto), schema versioning, initial schema scriptsdata.sql, import.sql, seed migration files, or programmatic data seedingDetermine table/entity ownership across modules/services and produce the complete ## Data Ownership per Service section. Scope is strictly the per-service ownership table — high-level data boundary discussion belongs in Step 6.
For each module/service, identify:
Do NOT include shared-vs-isolated data store summary, cross-service data access patterns, or read/write/CQRS observations here — those belong in the
## Data Ownership Boundariessection (Step 6).
Scan source code for data access patterns and ORM entities, then produce the complete ## Entity Model section:
Analysis:
@Entity, @Table), Spring Data repositories (JpaRepository, CrudRepository), MyBatis mappers, JDBC templatesDbContext, EF Core entities, Dapper, ADO.NETIdentify:
@Transactional, TransactionScope, etc.)owner.addPet(pet) establishing parent-child links)Diagram — Mermaid erDiagram:
||--o{ (one-to-many), ||--|| (one-to-one), }o--o{ (many-to-many)Example:
erDiagram
Owner ||--o{ Pet : "has"
Pet ||--o{ Visit : "has"
Pet }o--|| PetType : "is of"
Vet }o--o{ Specialty : "has"
Owner {
int id PK
string firstName
string lastName
string address
string city
string telephone
}
Pet {
int id PK
string name
date birthDate
int ownerId FK
int typeId FK
}
PetType {
int id PK
string name
}
Visit {
int id PK
int petId FK
date visitDate
string description
}
Vet {
int id PK
string firstName
string lastName
}
Specialty {
int id PK
string name
}
For each service/module, document the key repository interfaces and produce the complete ## Key Repository Methods section:
findByPetIdIn(Collection<Integer>)) used for cross-service aggregation@Query-annotated methodsIdentify caching layers and configuration and produce the complete ## Caching Strategy section:
@Cacheable, @CacheEvict), MemoryCache, IDistributedCachecache-api usage and provider bindingDocument data-store topology and cross-service access semantics, plus data classification, then produce the complete ## Data Ownership Boundaries section (including the ### Data Classification & Sensitivity subsection):
Boundaries:
findByPetIdIn(...) that enable gateway-level aggregation)Data Classification & Sensitivity (### Data Classification & Sensitivity subsection):
Save to .github/modernize/assessment/engines/facts/data-architecture.md with this exact structure:
# Data Architecture & Persistence Layer
A brief introduction (1-2 sentences) summarizing the data layer.
## Database Configuration
[Table: Service/Module | DB Type | Profile | Driver | Connection | Migration Tool]
## Data Ownership per Service
[Table: Service | Tables Owned | ORM Framework | Caching | Notes]
## Entity Model
< Mermaid erDiagram here >
## Key Repository Methods
[Table: Service | Repository | Notable Methods | Purpose]
## Caching Strategy
[Table or description of caching layers, providers, TTL, patterns, and rationale]
## Data Ownership Boundaries
[Description of shared vs isolated data stores, cross-service data access patterns, and aggregation enablers]
### Data Classification & Sensitivity
[Table: Entity | Sensitive Fields | Classification (PII/PHI/PCI/None) | Controls in Place]
[If no sensitive data found: "No PII, PHI, or PCI data detected in entity model."]
Use erDiagram. The diagram must parse cleanly under the official Mermaid grammar — anything outside it crashes the whole diagram, not just the offending line. Stay inside the minimal legal subset below.
Every attribute line inside an entity body MUST follow exactly this shape:
<type> <name> [<key>] ["<description>"]
<type> and <name>: single tokens, plain text (letters, digits, underscore). No spaces, no backticks, no @#$%&.<key>: optional. Exactly one of PK, FK, UK — never two, never combined. Compound tokens like PK_FK, PKFK, PK/FK are not part of the grammar.<description>: optional, must be a double-quoted string. The description is free text BUT must not contain {, }, or unescaped double quotes.int Id PK
string Name
int OwnerId FK
int InstructorId PK "also FK to Person (shared PK)"
int CourseId PK "composite PK; FK to Course"
int StudentId PK "composite PK; FK to Person"
string Email UK "unique"
decimal Budget "money column"
bytes RowVersion "concurrency token"
Rule of thumb for composite primary keys whose columns are also foreign keys (join tables like CourseAssignment, shared-PK one-to-one tables like OfficeAssignment): mark every column as PK only, and note the FK role in the quoted description. The FK relationship itself is already conveyed by the cardinality arrows between entities — duplicating it as a second key marker is what crashes the parser.
<left>--<right>, where each side independently picks one of:
|| — exactly one|o / o| — zero or one}o / o{ — zero or many}| / |{ — one or many
The "open" side of o/}/{ always faces inward (toward the --). All resulting combinations are legal, e.g. ||--o{ (one-to-many), ||--|| (one-to-one), }o--o{ (many-to-many), }o--|| (many-to-one), |o--o{ (zero-or-one to many), ||--o| (one to zero-or-one).Owner ||--o{ Pet : "has".{, }, or unescaped double quotes.{ or } inside any quoted description or label. Mermaid's ER parser treats { as the entity-body opener even inside quotes. Use <...> for placeholders, or rephrase in plain words.
string Key PK "Redis key /basket/{BuyerId}"string Key PK "Redis key /basket/<BuyerId>"@#$%&) in entity names, attribute names, or types.\n anywhere in the diagram. The literal \n escape was removed in modern Mermaid (>= 9.x) and triggers "Syntax error in text". Keep every quoted description on a single line; if you need to express more, shorten the prose or split it across multiple attributes.
string Roles "comma-separated\nROLE_USER, ROLE_ADMIN"string Roles "comma-separated; ROLE_USER, ROLE_ADMIN"Before writing the ```mermaid block, walk every attribute line and verify it matches <type> <name> [<key>] ["<description>"] with at most one key token. Walk every quoted string and verify it contains no { or }. If a description needs to express two key roles (e.g., composite PK that is also FK), encode the second role as plain text inside the quoted description — never as a second token before the quote.
> ERROR: Unsupported project type. This skill supports Java, .NET, JavaScript, and TypeScript projects only.> ERROR: No recognized data access patterns or entities found at {workspace-path}. Verify the path is correct.> Note: Some entities or relationships could not be fully identified..github/modernize/assessment/engines/facts/data-architecture.md