component
について
これはライブラリ内の電子部品管理の基盤となるスキルで、新しい部品タイプやメーカーハンドラを作成する際に使用されます。MPN操作、BOMエントリ、および階層型タイプシステムによる部品分類の中核機能を提供します。開発者はこれを基盤として、部品サポートの拡張やメーカー固有のデータ操作を行うべきです。
クイックインストール
Claude Code
推奨/plugin add https://github.com/majiayu000/claude-skill-registrygit clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/componentこのコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします
ドキュメント
Electronic Component Skill
This skill provides guidance for working with electronic components in the lib-electronic-components library.
Core Concepts
Component Type Hierarchy
Components are classified using ComponentType enum with two levels:
- Base types:
RESISTOR,CAPACITOR,MOSFET,OPAMP, etc. - Manufacturer-specific types:
MOSFET_INFINEON,CAPACITOR_CERAMIC_MURATA, etc.
Use getBaseType() to map specific types to their base type.
Key Classes
| Class | Purpose |
|---|---|
ComponentType | Enum of ~200 component types with passive/semiconductor flags |
ComponentManufacturer | Enum of manufacturers with regex patterns |
ManufacturerHandler | Interface for manufacturer-specific MPN parsing |
MPNUtils | Static utilities for MPN normalization, similarity, type detection |
BOMEntry | Component entry in a bill of materials |
Adding a New Manufacturer Handler
- Create handler in
src/main/java/no/cantara/electronic/component/lib/manufacturers/:
public class NewMfrHandler implements ManufacturerHandler {
@Override
public void initializePatterns(PatternRegistry registry) {
registry.registerPattern(ComponentType.RESISTOR,
Pattern.compile("^NMF[0-9]{4}.*", Pattern.CASE_INSENSITIVE));
}
@Override
public String extractPackageCode(String mpn) { /* ... */ }
@Override
public String extractSeries(String mpn) { /* ... */ }
@Override
public boolean isOfficialReplacement(String mpn1, String mpn2) { return false; }
@Override
public Set<ManufacturerComponentType> getManufacturerTypes() { return Set.of(); }
@Override
public Set<ComponentType> getSupportedTypes() {
return Set.of(ComponentType.RESISTOR);
}
}
- Add entry to
ComponentManufacturerenum:
NEW_MFR("(?:NMF)[0-9]", "New Manufacturer", new NewMfrHandler()),
Adding a New Component Type
- Add to
ComponentTypeenum with passive/semiconductor flags:
NEW_TYPE(false, true), // (isPassive, isSemiconductor)
NEW_TYPE_MANUFACTURER(false, true),
- Update
getBaseType()switch to map specific types to base:
case NEW_TYPE_INFINEON, NEW_TYPE_ST -> NEW_TYPE;
- Add patterns in relevant manufacturer handlers
MPN Operations
// Normalize MPN (removes special characters)
String normalized = MPNUtils.normalize("LM358-N"); // "LM358N"
// Strip package suffix to get base part number
String base = MPNUtils.stripPackageSuffix("MAX3483EESA+"); // "MAX3483EESA"
String base2 = MPNUtils.stripPackageSuffix("LTC2053HMS8#PBF"); // "LTC2053HMS8"
// Generate search variations (for datasheet/component searches)
List<String> vars = MPNUtils.getSearchVariations("TJA1050T/CM,118");
// ["TJA1050T/CM,118", "TJA1050T"]
// Check component equivalence (ignoring package suffixes)
boolean equiv = MPNUtils.isEquivalentMPN("LTC2053HMS8#PBF", "LTC2053HMS8#TR"); // true
// Extract package suffix
Optional<String> suffix = MPNUtils.getPackageSuffix("MAX3483EESA+"); // Optional.of("+")
// Detect manufacturer
ComponentManufacturer mfr = ComponentManufacturer.fromMPN("STM32F103C8T6");
// Detect component type
ComponentType type = ComponentType.fromMPN("IRF540N"); // MOSFET
// Calculate similarity
double sim = MPNUtils.calculateSimilarity("LM358", "MC1458"); // 0.9
Package Suffix Support
MPNUtils now supports manufacturer-specific package suffixes:
- Maxim/AD:
+(lead-free) - e.g.,MAX3483EESA+ - Linear Tech:
#PBF,#TR(RoHS, Tape & Reel) - e.g.,LTC2053HMS8#PBF - NXP:
/CM,118(ordering codes) - e.g.,TJA1050T/CM,118 - Various:
,315(ordering codes) - e.g.,NC7WZ04,315
Use cases:
- Datasheet searches: Try both original and base MPN
- Component deduplication: Same base = same component
- BOM validation: Match supplier MPNs to design MPNs
- Inventory matching: Ignore packaging differences
Similarity Calculators
Each component type can have a dedicated similarity calculator in componentsimilaritycalculators/:
ResistorSimilarityCalculator- compares resistance values, tolerances, packagesCapacitorSimilarityCalculator- compares capacitance, voltage, dielectricMosfetSimilarityCalculator- compares Vds, Rds(on), package- etc.
Implement ComponentSimilarityCalculator interface and add to list in MPNUtils.
Testing
Run component-related tests:
mvn test -Dtest=MPNUtilsTest
mvn test -Dtest=ComponentTypeDetectorTest
mvn test -Dtest=MPNExtractionTest
Related Skills
Use specialized skills for specific component types:
/resistor- Resistor patterns and value extraction/capacitor- Capacitor patterns and specifications/semiconductor- Diodes, transistors, MOSFETs/ic- Microcontrollers, op-amps, voltage regulators/connector- Connector manufacturer patterns/memory- Flash, EEPROM, RAM components
See Also
Advanced Skills
/handler-pattern-design- Handler patterns, anti-patterns, and testing strategies/mpn-normalization- MPN suffix handling and normalization patterns/component-type-detection-hierarchy- Type hierarchy, specificity levels, getBaseType() mapping/component-spec-extraction- Spec extraction patterns and naming conventions/manufacturer-detection-from-mpn- Manufacturer regex patterns and detection ordering
Documentation
- HISTORY.md - Handler bug patterns and fixes (PR #89, handler cleanup PRs #73-88)
- .docs/history/HANDLER_IMPLEMENTATION_PATTERNS.md - Detailed handler development patterns
- .docs/history/BUG_FIX_ANALYSIS.md - Critical bugs and prevention strategies
Recording Learnings
Important: When you discover quirks, edge cases, or important patterns while working on components:
- General/cross-cutting learnings → Add to
CLAUDE.mdunder "Learnings & Quirks" - Component-specific learnings → Add to the relevant skill file below
Examples of what to record:
- MPN patterns that don't follow expected conventions
- Manufacturer-specific quirks in part numbering
- Edge cases in similarity calculation
- Test failures that revealed unexpected behavior
- Regex patterns that needed adjustment
Learnings & Quirks
Handler Patterns
- Use
registry.addPattern()notregistry.registerPattern()- the latter requires a compiled Pattern object - Handler order in
ComponentManufacturerenum affects detection priority for ambiguous MPNs
MPN Edge Cases
- Some MPNs contain hyphens that are significant (e.g., Molex
43045-0212) vs decorative (e.g.,LM358-N) - Yageo resistors:
RC0603FR-0710KL- the-07is TCR code, not a separator
GitHub リポジトリ
関連スキル
algorithmic-art
メタThis Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.
subagent-driven-development
開発This skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.
executing-plans
デザインUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
cost-optimization
その他This Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
