Install
openclaw skills install @aipoch-ai/freezer-sample-locatorTrack and retrieve sample locations in -80°C freezers with hierarchical storage organization. Trigger conditions: User needs to record sample storage positions (freezer ID, level, rack, box, grid position) User requests to search samples by name, project, date, or location User requires sample inventory management and export functionality Input: Sample metadata (name, project, quantity) and storage coordinates Output: Structured sample location records with search and export capabilities Success criteria: Accurate position recording without conflicts Fast search and retrieval (<1 second for 1000+ samples) Data integrity maintained across operations Export in multiple formats (JSON, CSV) Risk level: MEDIUM (Script execution with file system access) Technical difficulty: INTERMEDIATE Version: v1.0 Owner: 研发部 Last updated: 2026-02-06
openclaw skills install @aipoch-ai/freezer-sample-locatorPurpose: Systematically manage and retrieve sample locations in -80°C freezers using hierarchical storage organization.
Classification: Tool/Script型 (本地脚本执行)
Sample location information is stored in JSON files:
{
"samples": [
{
"id": "uuid",
"name": "Sample Name",
"project": "Project Name",
"freezer": "F01",
"level": 1,
"rack": "A",
"box": "01",
"position": "A1",
"quantity": 1,
"date_stored": "2024-01-15",
"notes": "Notes",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}
]
}
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
command | string | - | Yes | Command to execute (add, search, list, update, delete, export, stats) |
--config | string | - | No | Path to configuration file |
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--name | string | - | Yes | Sample name |
--project | string | - | Yes | Project identifier |
--freezer | string | - | Yes | Freezer ID (e.g., F01) |
--level | int | - | Yes | Shelf level number |
--rack | string | - | Yes | Rack identifier |
--box | string | - | Yes | Box number |
--position | string | - | Yes | Position within box (e.g., A1) |
--quantity | int | 1 | No | Sample quantity |
--notes | string | - | No | Additional notes |
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--name | string | - | No | Search by sample name (fuzzy) |
--project | string | - | No | Search by project (exact) |
--freezer | string | - | No | Search by freezer ID |
--id | string | - | No | Search by sample UUID |
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--freezer | string | - | No | Filter by freezer ID |
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--id | string | - | Yes | Sample UUID to update |
--position | string | - | No | New position |
--quantity | int | - | No | New quantity |
--notes | string | - | No | New notes |
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--id | string | - | Yes | Sample UUID to delete |
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
--output, -o | string | - | Yes | Output file path |
--freezer | string | - | No | Filter by freezer ID |
No additional parameters required.
# Add new sample
python scripts/main.py add \
--name "Sample-001" \
--project "Project-A" \
--freezer "F01" \
--level 1 \
--rack "A" \
--box "01" \
--position "A1" \
--quantity 2 \
--notes "Primary culture"
# Search operations
python scripts/main.py search --name "Sample-001" # Name search (fuzzy)
python scripts/main.py search --project "Project-A" # Project search (exact)
python scripts/main.py search --freezer "F01" # Freezer search
python scripts/main.py search --id "uuid-string" # ID search (exact)
# List with optional filtering
python scripts/main.py list # All samples
python scripts/main.py list --freezer "F01" # Specific freezer
# Update sample information
python scripts/main.py update --id "uuid" --position "B2" --quantity 1
# Delete sample record
python scripts/main.py delete --id "uuid"
# Export functionality
python scripts/main.py export --output samples.csv --freezer "F01"
# Statistics
python scripts/main.py stats
from scripts.main import FreezerSampleLocator
# Initialize locator
locator = FreezerSampleLocator()
# Add sample with validation
sample = locator.add_sample(
name="Sample-001",
project="Project-A",
freezer="F01",
level=1,
rack="A",
box="01",
position="A1",
quantity=2,
notes="Primary culture"
)
# Search with multiple criteria
results = locator.search_samples(
name="Sample-001",
project="Project-A"
)
# Get formatted location
location = locator.get_sample_location(sample_id)
print(location["location_str"]) # "F01 > L1 > RA > B01 > A1"
# Export data
locator.export_csv("inventory.csv", freezer="F01")
# Core functionality tests
def test_add_sample():
"""Test sample addition with validation"""
def test_search_operations():
"""Test search by name, project, freezer"""
def test_conflict_prevention():
"""Test duplicate position detection"""
def test_export_functionality():
"""Test CSV/JSON export formats"""
def test_data_integrity():
"""Test concurrent access safety"""
# Verify database integrity
python scripts/main.py stats
# Test search performance
python scripts/main.py search --name "test"
# Export validation
python scripts/main.py export --output test.csv
| Component | Format | Range | Description |
|---|---|---|---|
| Freezer ID | F01, F02, F03... | F01-F99 | Physical freezer unit |
| Level | 1-10 | 1-10 | Vertical level (top to bottom) |
| Rack | A-Z | A-Z | Horizontal rack position |
| Box | 01-99 | 01-99 | Box number within rack |
| Position | A1-H12 | A1-H12 | Grid position (96-well standard) |
{Freezer} > L{Level} > R{Rack} > B{Box} > {Position}
Example: F01 > L1 > RA > B01 > A1
data/ subdirectory within skill folder| Version | Date | Changes | Author |
|---|---|---|---|
| v1.0 | 2026-02-06 | Initial release with core functionality | 研发部 |
freezer-sample-locator/
├── SKILL.md # This file
├── scripts/
│ └── main.py # Core implementation
└── data/
└── samples.json # Sample database (auto-created)
# No additional installation required - uses Python standard library
# Data directory created automatically on first run
Skill Classification: Tool/Script型 (MEDIUM Risk)
Compliance Status: ✅ Approved for production use
Next Review: 2026-05-06
| Risk Indicator | Assessment | Level |
|---|---|---|
| Code Execution | Python/R scripts executed locally | Medium |
| Network Access | No external API calls | Low |
| File System Access | Read input files, write output files | Medium |
| Instruction Tampering | Standard prompt guidelines | Low |
| Data Exposure | Output files saved to workspace | Low |
No additional Python packages required.