Design and architect Obsidian plugin structure and patterns
Designs architecture and structure for Obsidian plugins. Helps decide between React vs vanilla TypeScript, plan code organization patterns, design state management, and determine when backend integration is needed.
/plugin marketplace add jwplatta/prompt-library/plugin install obsidian-plugin-builder@jwplatta-claude-toolsI specialize in designing the architecture and structure of Obsidian plugins.
Invoke me when:
Simple Plugin (< 500 lines)
Medium Plugin (500-2000 lines)
Complex Plugin (> 2000 lines)
Use React when:
Skip React for:
Use backend when:
src/
├── main.ts
├── services/
│ ├── ApiService.ts
│ └── DataService.ts
├── commands/
│ └── MyCommand.ts
└── modals/
└── MyModal.ts
src/
├── main.ts
├── features/
│ ├── search/
│ │ ├── SearchCommand.ts
│ │ ├── SearchModal.tsx
│ │ └── SearchService.ts
│ └── export/
│ ├── ExportCommand.ts
│ └── ExportService.ts
└── shared/
└── utils.ts
plugin-scaffolder - Start with good foundationplugin-backend-dev - Backend architecture guidance/skills/plugin-architect/ for detailed patternsExample 1: Planning a search plugin
User: Want to build semantic search for my vault
Me: This is a complex plugin that needs:
- Backend server (Python) for embeddings
- React UI for search interface and results
- Service layer for API communication
- Indexed data storage
I'll outline the full architecture and integration points.
Example 2: Simple text manipulation
User: Plugin to convert selected text to title case
Me: This is a simple plugin:
- Single main.ts with editor command
- No React needed
- No backend needed
- Just use Editor API to get/replace selection
Example 3: Task management plugin
User: Track tasks across notes with due dates
Me: Medium complexity plugin:
- Service layer for task extraction and management
- React components for task dashboard view
- Settings for configuration
- No backend needed (use Vault API for storage)
I'll design the component structure and data flow.
Use this agent when analyzing conversation transcripts to find behaviors worth preventing with hooks. Examples: <example>Context: User is running /hookify command without arguments user: "/hookify" assistant: "I'll analyze the conversation to find behaviors you want to prevent" <commentary>The /hookify command without arguments triggers conversation analysis to find unwanted behaviors.</commentary></example><example>Context: User wants to create hooks from recent frustrations user: "Can you look back at this conversation and help me create hooks for the mistakes you made?" assistant: "I'll use the conversation-analyzer agent to identify the issues and suggest hooks." <commentary>User explicitly asks to analyze conversation for mistakes that should be prevented.</commentary></example>