Skill: seed-inventory

## Purpose

7 stars

Best use case

Skill: seed-inventory is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

## Purpose

Teams using Skill: seed-inventory should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/seed-inventory/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/agriculture-farming/seed-inventory/skills/seed-inventory/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/seed-inventory/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How Skill: seed-inventory Compares

Feature / AgentSkill: seed-inventoryStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

## Purpose

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Skill: seed-inventory

## Purpose

Track seed lots, record germination tests, log plantings, manage variety library, and identify which seeds need reordering or disposal. Understand viability calculations and germination thresholds.

## Data Model Quick Reference

### Viability status calculation

```
age_years = (today - purchase_date) / 365.25
fresh:   age_years <= viability_years / 2
aging:   age_years > viability_years / 2 AND age_years <= viability_years
expired: age_years > viability_years
```

### Germination thresholds (category defaults)

| Category | Minimum % |
|----------|-----------|
| vegetables | 75 |
| herbs | 70 |
| flowers | 65 |
| grains | 80 |
| cover_crops | 75 |
| other | 70 |

A variety can have a custom `min_germination_pct` that overrides the category default.

### Lot status values

| Status | Meaning |
|--------|---------|
| active | Normal, plantable |
| depleted | quantity_grams = 0 |
| expired | Past viability date |
| quarantine | Manual hold, do not plant |

### Reorder trigger conditions

A lot appears in the reorder list if:
- `quantity_grams <= variety.reorder_threshold_grams`, OR
- `status = 'expired'`

## API Quick Reference

### Seed Varieties

```
GET    /api/varieties               list; filter: category, subcategory, search
GET    /api/varieties/:id           detail with lot summary
POST   /api/varieties               create: { name, category, ... }
PUT    /api/varieties/:id           update
DELETE /api/varieties/:id           delete (blocked if lots exist - returns 409)
```

#### Variety create body

```json
{
  "name": "Roma Tomato",
  "scientific_name": "Solanum lycopersicum",
  "category": "vegetables",
  "subcategory": "tomato",
  "supplier": "Seeds of Change",
  "viability_years": 3,
  "reorder_threshold_grams": 50,
  "min_germination_pct": null,
  "days_to_germination": 8,
  "days_to_maturity": 75,
  "planting_depth_mm": 6,
  "spacing_cm": 45,
  "notes": "Determinate paste type..."
}
```

### Seed Lots

```
GET    /api/lots                    list; filter: variety_id, status, low_stock=1, expiring_soon=:days
GET    /api/lots/:id                detail with germination tests and planting records
POST   /api/lots                    create lot
PUT    /api/lots/:id                update lot
DELETE /api/lots/:id                delete (blocked if planting records exist - returns 409)
POST   /api/lots/:id/photo          upload photo (multipart/form-data, field: photo, max 5MB)
```

#### Lot create body

```json
{
  "variety_id": "uuid",
  "lot_number": "TOM-2025-01",
  "purchase_date": "2025-07-20",
  "source": "Baker Creek",
  "quantity_grams": 100,
  "price_paid": 8.95,
  "storage_location": "Cool room shelf 1",
  "notes": ""
}
```

#### GET /api/lots response includes computed fields

```json
{
  "id": "uuid",
  "lot_number": "TOM-2025-01",
  "quantity_grams": 84,
  "status": "active",
  "age_days": 127,
  "viability_status": "fresh",
  "germination_rate": 89,
  "germination_flag": "ok",
  "is_low_stock": false
}
```

### Germination Tests

```
GET    /api/germination             list; filter: lot_id, variety_id
GET    /api/germination/:id         single test
POST   /api/germination             record test
DELETE /api/germination/:id         delete test
```

#### Germination test create body

```json
{
  "lot_id": "uuid",
  "test_date": "2025-07-18",
  "seeds_tested": 35,
  "seeds_germinated": 31,
  "days_to_germinate": 8,
  "temperature_c": 22,
  "notes": "Germination paper method"
}
```

Computed rate: `31 / 35 * 100 = 88.57%`. After saving, if this is the most recent test for the lot, the lot's `germination_flag` is updated.

### Planting Records

```
GET    /api/plantings               list; filter: lot_id, field_or_bed, date_from, date_to
GET    /api/plantings/:id           single record
POST   /api/plantings               record planting (subtracts quantity from lot)
DELETE /api/plantings/:id           delete (adds quantity back to lot)
```

#### Planting create body

```json
{
  "lot_id": "uuid",
  "planting_date": "2025-07-20",
  "field_or_bed": "Greenhouse bed 2",
  "quantity_used_grams": 15,
  "area_sqm": 10,
  "transplanted": 1,
  "notes": "Fall crop start"
}
```

Validation: `quantity_used_grams` must not exceed `lot.quantity_grams`. Returns 400 if quantity is insufficient.

After saving: lot `quantity_grams` decreases by `quantity_used_grams`. If resulting quantity = 0, lot `status` becomes `depleted`.

### Analytics

```
GET    /api/analytics/reorder-list            lots needing reorder
GET    /api/analytics/expiring-soon?days=90   lots expiring within N days
GET    /api/analytics/stock-summary           grams per category and variety
GET    /api/analytics/germination-rates       avg rate per variety, flagged if below threshold
GET    /api/analytics/planting-history        grams used per variety per month
```

## Common Workflows

### Check if a lot is safe to plant

1. `GET /api/lots/:id`
2. Verify: `status = 'active'` (not expired, depleted, or quarantine)
3. Verify: `viability_status` is `fresh` or `aging` (not `expired`)
4. Check: `germination_flag` is `ok` (not `poor`)
5. Check: `quantity_grams >= quantity_you_plan_to_use`

### Find all lots that need attention

```
GET /api/analytics/reorder-list
GET /api/analytics/expiring-soon?days=90
GET /api/lots?low_stock=1
```

### Record a complete planting workflow

1. `GET /api/lots/:id` - confirm quantity available
2. `POST /api/plantings` - log the planting with quantity
3. `GET /api/lots/:id` - confirm updated quantity

### Identify poor germination lots

```
GET /api/germination?lot_id=:id
```

If most recent test's rate < variety category minimum, the lot is poor. Consider:
- Re-testing with fresh sample
- Increasing seeding rate by 1.5x as compensation
- Marking lot for disposal if expired and poor

### Calculate days until a lot expires

```
expiry_date = purchase_date + viability_years * 365.25
days_remaining = expiry_date - today
```

Use `GET /api/analytics/expiring-soon?days=90` for a pre-calculated list.

Related Skills

server-inventory

7
from heldernoid/agentic-build-templates

Add and scan remote Linux servers via SSH, collect system facts, and view fleet health in a React dashboard.

db-seed skill

7
from heldernoid/agentic-build-templates

## When to use

Skill: Uptime Monitoring

7
from heldernoid/agentic-build-templates

## Overview

Skill: Status Page

7
from heldernoid/agentic-build-templates

## Overview

Skill: unit-conversion

7
from heldernoid/agentic-build-templates

## Overview

Skill: recipe-scaler

7
from heldernoid/agentic-build-templates

## Overview

reading-list

7
from heldernoid/agentic-build-templates

Operate the reading-list API to save, manage, tag, search, and export articles.

email-digest

7
from heldernoid/agentic-build-templates

Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.

websocket-realtime

7
from heldernoid/agentic-build-templates

Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".

poll-builder

7
from heldernoid/agentic-build-templates

Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.

Skill: personal-finance

7
from heldernoid/agentic-build-templates

## Overview

Skill: csv-import

7
from heldernoid/agentic-build-templates

## Overview