Courses Yerevan City

VérifiéPrudence

Construisez un panier d'épicerie sur yerevan-city.am. Ne passe pas commande, seulement ajout au panier.

Spar Skills Guide Bot
ProductiviteIntermédiaire
26/07/2026
Claude Code
#grocery-ordering#e-commerce#cart-management#armenia#cli

Recommandé pour

Synthèse automatique

Construit un panier de courses sur yerevan-city.am — recherche de produits, gestion des adresses de livraison — sans jamais valider la commande ni effectuer de paiement.

Points forts

  • Sécurité par conception : le skill s'arrête au panier, le checkout et le paiement restent dans le navigateur ou l'app de l'utilisateur
  • Gère les deux régimes du catalogue (produits à la pièce via --count, produits au poids via --grams) en respectant minimumWeight et weightStep
  • Vérifie systématiquement isMissing après chaque ajout et retire les produits indisponibles en signalant le stock partiel
  • Script Python en bibliothèque standard uniquement, aucune installation, et réutilisation automatique d'une session yerevan-city-mcp existante

Limites

  • Limité à une seule enseigne et à sa zone de livraison (Erevan) : aucune comparaison avec d'autres magasins
  • La connexion exige un numéro arménien et la saisie manuelle du code SMS reçu, avec un risque d'envoi répété de SMS réels
  • Les adresses doivent être géocodées (lat/lng) au préalable, souvent via un service externe comme Nominatim
Quand l'utiliser

À utiliser quand l'utilisateur veut faire ses courses sur yerevan-city.am : chercher un produit, gérer une adresse de livraison ou remplir son panier.

Quand l'éviter

À éviter pour passer réellement commande, payer, comparer plusieurs enseignes ou livrer en dehors de la zone desservie par Yerevan City.

Analyse de sécurité

Prudence
Score qualité88/100

The SKILL.md itself is well-behaved: no destructive commands, no curl|sh, no obfuscation, no secret exfiltration, and it deliberately stops short of checkout/payment. However it invokes an unauditable Python script via Bash that makes authenticated network calls to a shop API, handles phone numbers/SMS codes, and persists session tokens to disk — legitimate but powerful, hence caution rather than safe.

Points d'attention
  • •Uses Bash + Read with a Python helper script (scripts/yerevan_city.py) whose source is not included in SKILL.md, so the actual network calls, credential handling, and file writes cannot be audited from this file alone.
  • •Handles personal data: user's Armenian phone number and one-time SMS code, plus a persisted session in ~/.yerevan-city-skill/session.json and reuse of an existing yerevan-city-mcp session (session credentials written to disk).
  • •Sends the user's delivery address to a third-party geocoding service (Nominatim/OpenStreetMap) as part of the address-add flow.
  • •Login instructions warn against guessing codes or spamming login-request, and the skill explicitly refuses to place orders or pay — reducing financial risk.
Comment cette analyse est faite

Exemples

Weekly groceries to a saved address
Order 2 litres of milk, a loaf of bread and 1 kg of tomatoes from yerevan-city to my Tumanyan 1 apartment.
Inspect the current cart
What's in my yerevan-city cart right now?
Weight-based item with minimum
Find fresh tomatoes on yerevan-city.am and add 500 g to my cart — tell me if there's a minimum weight.

name: yerevan-city description: Order groceries from yerevan-city.am — search products, manage delivery addresses, build a cart. Use when the user asks to order groceries, buy food in Yerevan, add products to their yerevan-city cart, or mentions yerevan-city.am / City Supermarket. allowed-tools: [Bash, Read]

Yerevan City Grocery Skill

Build a grocery cart on yerevan-city.am from conversation.

Safe by design: never places an order or pays — only builds the cart. Checkout and payment always stay with the user, in their own browser or app.

When to Use

  • "Order milk and bread" / "добавь молоко в корзину"
  • "What's in my yerevan-city cart?"
  • "Find tomatoes on yerevan-city"
  • Any grocery shopping request for Yerevan City / City Supermarket

Setup

All commands run through one script (Python 3 stdlib only, no install needed):

SCRIPT="$CLAUDE_PROJECT_DIR/scripts/yerevan_city.py"   # or path where this skill is installed
python3 "$SCRIPT" --help

If the skill is installed under ~/.claude/skills/yerevan-city/, use python3 ~/.claude/skills/yerevan-city/scripts/yerevan_city.py.

Login Flow (one-time)

Session persists in ~/.yerevan-city-skill/session.json; an existing yerevan-city-mcp session is reused automatically. Only log in when a command fails with "No active yerevan-city.am session".

  1. Ask the user for their Armenian phone number.
  2. python3 "$SCRIPT" login-request --phone +37441234567
  3. Ask the user for the SMS code they received.
  4. python3 "$SCRIPT" login-confirm --phone +37441234567 --code 1234

Never guess the code. Never trigger login-request repeatedly — each call sends a real SMS.

Commands

python3 "$SCRIPT" search --query "milk" [--page 1]        # free-text catalogue search
python3 "$SCRIPT" account                                  # profile: name, bonus card, default address
python3 "$SCRIPT" addresses                                # saved delivery addresses
python3 "$SCRIPT" address-add --city Yerevan --street Tumanyan --building 1 \
    --apartment 1 --floor 1 --lat 40.1811 --lng 44.5136    # create address (become session default)
python3 "$SCRIPT" address-update --id 45 ...               # same flags as address-add, plus --id
python3 "$SCRIPT" add --product-id 123 --count 2 --address-id 45     # piece-counted product
python3 "$SCRIPT" add --product-id 456 --grams 500 --address-id 45   # weight-based product
python3 "$SCRIPT" remove --product-id 123 --address-id 45
python3 "$SCRIPT" cart --address-id 45
python3 "$SCRIPT" logout

Rules to Follow

  1. Address first. The cart is scoped to a delivery address. Login stores the account's default address in the session automatically; run addresses to check. If the list is empty, ask the user for their address (city, street, building, apartment, floor) and create it with address-add — geocode lat/lng first (e.g. Nominatim: https://nominatim.openstreetmap.org/search?q=<street>+<building>,+Yerevan&format=json). Pass the address id as --address-id to add/remove/cart calls (or rely on the session default).
  2. Count vs grams. Products with isKilogram: false are added with --count (pieces). Products with isKilogram: true are added with --grams; respect minimumWeight and weightStep from search results (both in grams) — fresh meat is typically 1000g minimum, loose produce 300–800g. If the user asks for less than the minimum, tell them the forced minimum and get their OK before adding.
  3. Check isMissing after every add. The API accepts adds for out-of-stock products and only reports it via isMissing on the returned addedItem. If isMissing is true, the product will NOT be delivered: immediately remove it, tell the user it's unavailable (mention availableCount/availableWeight if partial stock exists), and suggest an alternative from search results if there's an obvious one. Never leave an out-of-stock item in the cart silently.
  4. Always report totals. After adding items or showing the cart, state totalPrice and deliveryFee together as the full amount to pay (prices are in Armenian drams, AMD).
  5. Before declaring the cart ready, run cart and clean up any item with isMissing: true via remove.
  6. Never place an order. The script cannot check out, and you must not try to via the website. Tell the user to finish checkout in their own browser or app.

Example Session

User: order 2 bottles of milk and half a kilo of cheese

1. python3 "$SCRIPT" addresses                 → default address id 45
2. python3 "$SCRIPT" search --query "milk"     → pick product, isKilogram false
3. python3 "$SCRIPT" add --product-id 111 --count 2 --address-id 45
   → check addedItem.isMissing, note totalPrice
4. python3 "$SCRIPT" search --query "cheese"   → pick product, isKilogram true
5. python3 "$SCRIPT" add --product-id 222 --grams 500 --address-id 45
6. python3 "$SCRIPT" cart --address-id 45      → verify, report total + delivery fee

Notes

  • Product names come in three languages (nameEn, nameRu, nameArm) — match against whichever language the user used. English queries sometimes miss items that Russian ones find (e.g. "стейк", "чеснок", "вырезка") — retry in another language before concluding a product doesn't exist.
  • The shop API misspells two address fields: buliding and appartment. The script's --building/--apartment flags map to them — don't "fix" the spelling in the API payloads.
  • The user's bonus card lives on the account profile (account command, bonusCardNumber) and applies at checkout automatically — no cart action needed.
  • Unofficial, educational project; not affiliated with Yerevan City / City Supermarket. Non-commercial license — see LICENSE.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/yerevan-city-grocery-ms1aw3sr' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/yerevan-city-grocery-ms1aw3sr/download' --output '.skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md.part' && mv '.skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md.part' '.skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Extrait original : Setup

All commands run through one script (Python 3 stdlib only, no install needed):

SCRIPT="$CLAUDE_PROJECT_DIR/scripts/yerevan_city.py"   # or path where this skill is installed
python3 "$SCRIPT" --help

If the skill is installed under ~/.claude/skills/yerevan-city/, use python3 ~/.claude/skills/yerevan-city/scripts/yerevan_city.py.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md' && test -s '.skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/yerevan-city' && cp -R '.skill-downloads/yerevan-city-grocery-ms1aw3sr' '.claude/skills/yerevan-city'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/yerevan-city-grocery-ms1aw3sr'

openskills read 'yerevan-city-grocery-ms1aw3sr'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/yerevan-city-grocery-ms1aw3sr/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires