feat: build juozas auto site
This commit is contained in:
114
.claude/skills/adding-juozas-auto-listing/SKILL.md
Normal file
114
.claude/skills/adding-juozas-auto-listing/SKILL.md
Normal file
@@ -0,0 +1,114 @@
|
||||
---
|
||||
name: adding-juozas-auto-listing
|
||||
description: Use when adding, improving, publishing, or replacing a Juozas Auto car listing, especially when photos, vehicle details, Lithuanian copy, content collection fields, or post-add verification are involved.
|
||||
---
|
||||
|
||||
# Adding Juozas Auto Listing
|
||||
|
||||
## Overview
|
||||
|
||||
Add listings as conversion assets, not data entry. A superb listing has complete facts, strong real photos, calm Lithuanian copy, valid content schema, correct slug, and a verified build before commit or push.
|
||||
|
||||
## Before Editing
|
||||
|
||||
Ask only for missing facts. Do not invent vehicle details.
|
||||
|
||||
Required facts:
|
||||
- Make, model, year, city, price, mileage.
|
||||
- Fuel, transmission, body type, color.
|
||||
- At least one photo, with cover photo identified.
|
||||
- Publish date. Use today's date only if the user agrees or asks to publish now.
|
||||
|
||||
Allowed schema values:
|
||||
- Fuel: `benzinas`, `dyzelinas`, `hibridas`, `elektra`, `dujos`.
|
||||
- Transmission: `mechaninė`, `automatinė`.
|
||||
- Body type: `sedanas`, `universalas`, `hečbekas`, `visureigis`, `kupė`, `kabrioletas`, `vienatūris`.
|
||||
- Drivetrain: `priekiniai`, `galiniai`, `visi`.
|
||||
|
||||
High-value facts to ask when missing:
|
||||
- Power in kW, engine size in liters, drivetrain.
|
||||
- First registration month, VIN visibility, service history, known defects.
|
||||
- Recent maintenance, tire set, ownership/import history.
|
||||
- What should be emphasized in the first 2 sentences.
|
||||
- Whether plates, faces, documents, or location clues need blurring before publish.
|
||||
|
||||
If the user has photos but they are not in the workspace, ask where they are. If the photos are poor, say what is missing: exterior front three-quarter, rear, interior, odometer, tires, service book, visible defects.
|
||||
|
||||
## File Locations
|
||||
|
||||
Use this exact structure:
|
||||
|
||||
```text
|
||||
src/content/cars/<slug>.md
|
||||
src/content/cars/_photos/<slug>/01.jpg
|
||||
src/content/cars/_photos/<slug>/02.jpg
|
||||
```
|
||||
|
||||
Slug format:
|
||||
|
||||
```text
|
||||
${make}-${model}-${year}-${city}
|
||||
```
|
||||
|
||||
Lowercase, ASCII-folded Lithuanian diacritics, words separated by hyphens. Example: `skoda-octavia-2020-siauliai`.
|
||||
|
||||
Before creating files, check whether `src/content/cars/<slug>.md` or `src/content/cars/_photos/<slug>/` already exists. If it does, ask whether this is an update or create a collision-free slug only with user approval.
|
||||
|
||||
For trim/body naming, keep the model as the buyer would search it, for example `A6 Avant` may use model `A6 Avant` and body type `universalas`. Do not hide meaningful trim names just to simplify the slug.
|
||||
|
||||
## Listing Quality Bar
|
||||
|
||||
Frontmatter must satisfy `src/content/config.ts` exactly. `photos` must contain at least one local image path. Keep optional fields absent if unknown rather than guessing.
|
||||
|
||||
Description pattern:
|
||||
- Paragraph 1: the buyer-facing summary in Lithuanian, 1-2 calm sentences.
|
||||
- Paragraph 2: condition, service, ownership, or usage context.
|
||||
- Paragraph 3: transparent caveats or viewing/contact note if useful.
|
||||
|
||||
Tone: quiet, premium, honest. No hype, emojis, fake urgency, or all-caps selling.
|
||||
|
||||
## Photo Workflow
|
||||
|
||||
1. Put originals in `src/content/cars/_photos/<slug>/`.
|
||||
2. Name the best cover image `01.jpg` when the source is JPEG. If the user provides PNG, WebP, HEIC, or another format, either preserve the real extension in frontmatter or convert intentionally with a normal image tool. Do not rename a non-JPEG file to `.jpg` without conversion.
|
||||
3. Use meaningful order: exterior, interior, dashboard/odometer, wheels, defects.
|
||||
4. Prefer landscape photos. Do not add synthetic stock photos for real listings unless the user explicitly requests placeholders.
|
||||
5. If editing photos is needed, preserve originals outside the final committed set or use clearly named processed files.
|
||||
|
||||
## Verification
|
||||
|
||||
Run after adding or changing a listing:
|
||||
|
||||
```sh
|
||||
npm test
|
||||
npm run build
|
||||
```
|
||||
|
||||
Also inspect the generated or dev listing at 375px width. Confirm:
|
||||
- Price is visible quickly.
|
||||
- Call or WhatsApp is reachable without hunting.
|
||||
- Photos look credible and premium.
|
||||
- Markdown renders cleanly.
|
||||
- SEO title, OG image, and JSON-LD still build.
|
||||
|
||||
## Commit And Push
|
||||
|
||||
Only commit and push when explicitly requested. Stage only intended listing, photo, and related documentation changes unless the user asked to include everything.
|
||||
|
||||
Use a conventional message:
|
||||
|
||||
```sh
|
||||
git commit -m "feat: add <make> <model> listing"
|
||||
```
|
||||
|
||||
If pushing directly to `main`, first verify the branch and remote state with `git status --short --branch`.
|
||||
|
||||
## Common Mistakes
|
||||
|
||||
| Mistake | Fix |
|
||||
|---|---|
|
||||
| Creating a slug without city | Include city to match route convention. |
|
||||
| Guessing specs | Ask or omit optional fields. |
|
||||
| Referencing photos outside `src/content/cars/_photos` | Move photos into the content photo folder so Astro can optimize them. |
|
||||
| Using loud sales copy | Rewrite as calm Lithuanian buyer guidance. |
|
||||
| Skipping build | Build catches schema and image path failures. |
|
||||
Reference in New Issue
Block a user