Agent skill

ontology-objecttype

ObjectType Definition Assistant for Ontology-Driven-Architecture (ODA) migration. Analyzes existing codebases to identify ObjectType candidates through interactive workflow. Uses L1/L2/L3 Progressive Disclosure for analysis results.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/ontology-objecttype

SKILL.md

/ontology-objecttype - ObjectType Definition Assistant

Version: 3.0.0 | Model: opus


Overview

Aspect Description
Purpose Analyze codebases and define ObjectTypes for ODA migration
Output L1: Candidate summary / L2: Per-class analysis / L3: Full YAML definitions
Reference .claude/rules/ontology.md for naming conventions

Cross-Skill Integration

Skill Relationship
/ontology-core Validates generated ObjectType definitions
/ontology-why Called for "why?" questions about design decisions
/ontology-linktype (Planned) LinkType definition after ObjectType completion

Commands

Command Description
analyze <path> Analyze project/file for ObjectType candidates
resume <session-id> Resume previous analysis session
help Show usage information

Detection Patterns

Pattern Detection Method Example
Python class class ClassName: class Employee:
SQLAlchemy ORM Base or declarative_base() class User(Base):
Django ORM models.Model class Article(models.Model):
Pydantic BaseModel class Config(BaseModel):

Interactive Workflow (Phase 1-4)

Phase 1: Context Clarification

Purpose: Clarify source type and business domain

python
AskUserQuestion(questions=[
    {
        "question": "What is your source for this ObjectType definition?",
        "header": "Source Type",
        "options": [
            {"label": "Existing source code", "description": "Python, Java, TypeScript"},
            {"label": "Database schema", "description": "SQL DDL, ORM models"},
            {"label": "Business requirements", "description": "Requirements documents"},
            {"label": "Manual definition", "description": "New domain model"}
        ]
    }
])

Validation Gate: source_validity

Phase 2: Entity Discovery

Purpose: Extract entities + PK strategy + Property type mapping

  1. Scan source code for entity candidates
  2. Select Primary Key strategy (single_column / composite / composite_hashed)
  3. Map Python types to Foundry DataTypes

Validation Gates: candidate_extraction, pk_determinism

Phase 3: Link Definition

Purpose: Detect relationships and define cardinality

Cardinality FK Location Backing Table
ONE_TO_ONE Either side No
ONE_TO_MANY "Many" side No
MANY_TO_ONE "Many" side No
MANY_TO_MANY - Yes (required)

Validation Gate: link_integrity

Phase 4: Validation & Output

Purpose: Final validation and YAML generation

Validation Gate: semantic_consistency


Validation Gates

Gate Phase Description
source_validity 1 Source path accessible, domain context provided
candidate_extraction 2 At least one entity with class name and properties
pk_determinism 2 PK is STRING, required, follows determinism rules
link_integrity 3 M:N has join table, FK references valid targets
semantic_consistency 4 API names follow conventions, all types valid

PK Strategy Options

Strategy Description Use Case
single_column Use existing unique column employee_id, user_uuid
composite Combine columns with separator company_id + dept_id
composite_hashed SHA256 hash of combined columns Long composite keys

DataType Mapping

Category Types
Primitive STRING, INTEGER, LONG, FLOAT, DOUBLE, BOOLEAN, DECIMAL
Temporal DATE, TIMESTAMP, DATETIME, TIMESERIES
Complex ARRAY (requires itemType), STRUCT (requires fields), JSON
Spatial GEOPOINT, GEOSHAPE
Media MEDIA_REFERENCE, BINARY, MARKDOWN
AI/ML VECTOR (requires dimension)

Output Format

L1 - Candidate Summary

Found 12 Entity Candidates
  ObjectType candidates (8): Employee, Department, Project...
  Review needed (2): DTO/Mixin patterns
  Excluded (2): Helper/Config classes

L2 - Per-Class Analysis

yaml
entity_name: Employee
pk_strategy: single_column
pk_column: employee_id
properties:
  - api_name: employeeId
    data_type: STRING
    required: true
    is_pk: true

L3 - Full YAML Definition

yaml
# objecttype-Employee.yaml
api_name: Employee
display_name: Employee
primary_key:
  source_columns: [employee_id]
  strategy: single_column
properties:
  - api_name: employeeId
    data_type: STRING
    required: true
links:
  - link_type_name: EmployeeToDepartment
    target_object_type: Department
    cardinality: MANY_TO_ONE

Session State

json
{
  "session_id": "obj-a1b2c3",
  "target_path": "/home/palantir/my-project",
  "current_phase": "phase_2_entity",
  "phase_results": {
    "phase_1_context": { "status": "completed" },
    "phase_2_entity": { "status": "in_progress" },
    "phase_3_link": { "status": "pending" },
    "phase_4_output": { "status": "pending" }
  }
}

Reference System

Local Reference (ontology-definition package)

/home/palantir/park-kyungchan/palantir/Ontology-Definition/
├── ontology_definition/types/    # Type definitions
├── ontology_definition/core/     # Enums, base classes
└── tests/                        # Usage examples

External References (WebSearch/WebFetch)

Trusted sources only:

  • palantir.com/docs/* (Official documentation)
  • github.com/palantir/* (Official repositories)
  • Palantir case studies and conference materials

Error Handling

Error Recovery
Path not found Prompt for correct path
No Python files Show available file types
No classes found Suggest manual definition
Session expired Start new or resume with --resume

Version History

Version Change
1.0.0 Initial ObjectType definition assistant
1.1.0 Phase 1-4 interactive workflow, L1/L2/L3 output
3.0.0 Frontmatter normalization, MCP tool inclusion, duplicate removal

End of Skill Definition

Didn't find tool you were looking for?

Be as detailed as possible for better results