Skills kronan-cli

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/arnif/kronan" ~/.claude/skills/clawdbot-skills-kronan-cli && rm -rf "$T"
manifest: skills/arnif/kronan/SKILL.md
source content

kronan-cli

CLI tool for shopping at Krónan.is, Iceland's grocery store chain. Uses the official Krónan Public API. Designed for both humans and AI agents.

Prerequisites

Install

gh repo clone arnif/kronan-cli /tmp/kronan-cli && bash /tmp/kronan-cli/install.sh

What this does: clones the repo to

/tmp/kronan-cli
, then
install.sh
downloads a pre-built binary from the latest GitHub release and places it at
~/.local/bin/kronan
(override with
INSTALL_DIR
).

To build from source instead:

gh repo clone arnif/kronan-cli && cd kronan-cli
bun install && bun build --compile src/index.ts --outfile kronan
mv kronan ~/.local/bin/

Security and privacy

  • Install script:
    install.sh
    executes on your machine and downloads a binary. Audit the repository and the script before running.
  • Token storage: Access tokens are stored at
    ~/.kronan/token
    . These are credentials for the Krónan Public API. Ensure the file is only readable by your user (
    chmod 600 ~/.kronan/token
    ).
  • PII:
    kronan me
    outputs your identity information (name and type - user or customer group). Be careful when sharing this output.
  • API Access: Tokens are created in your Krónan account settings and can be revoked at any time at https://kronan.is/adgangur/adgangslyklar

Authentication

First, create an access token:

  1. Go to https://kronan.is/adgangur/adgangslyklar
  2. Log in with Auðkenni (Icelandic e-ID)
  3. Create a new access token

Then save it with the CLI:

kronan token <your-access-token>

The token will be validated and saved locally.

kronan logout    # Clear stored token
kronan status    # Check authentication status

Commands

Search products

kronan search "mjolk"
kronan search "epli" --limit 5
kronan search "braud" --json

Product details

kronan product <sku>
kronan product 02500188 --json

Browse by category

kronan categories                    # List all categories
kronan category 01-01-02-epli        # Browse products in category

Cart management

kronan cart                         # View cart
kronan cart add <sku> [quantity]    # Add item to cart
kronan cart clear                   # Clear all items from cart

Order history and modifications

kronan orders                # Recent orders
kronan orders --json         # JSON output for parsing
kronan order <token>         # Specific order details (use order token, not ID)

# Modify orders (before fulfillment)
kronan order delete-lines <token> <lineId1> [lineId2...]
kronan order lower-quantity <token> <lineIds...> --quantity N
kronan order toggle-substitution <token> <lineIds...>

Product lists (full CRUD)

kronan lists                                    # List all product lists
kronan lists create <name> [--description "..."] # Create new list
kronan lists view <token>                       # View list details
kronan lists delete <token> [--force]           # Delete a list
kronan lists add <list-token> <sku> [qty]       # Add item to list
kronan lists remove <list-token> <sku>          # Remove item from list
kronan lists clear <token> [--force]            # Clear all items

Shopping notes (Skundalisti)

kronan notes                                    # View shopping note
kronan notes add [--text "..."] [--sku SKU] [--quantity N]
kronan notes update <line-token> [--text "..."] [--quantity N]
kronan notes remove <line-token>                # Remove item
kronan notes toggle <line-token>               # Mark complete/incomplete
kronan notes clear [--force]                   # Clear all items
kronan notes archived                          # View completed items

Purchase statistics

kronan stats [--limit N] [--offset N]          # View purchase history
kronan stats --include-ignored                 # Include hidden products
kronan stats ignore <id>                       # Hide product from stats
kronan stats unignore <id>                     # Unhide product

User identity

kronan me              # Show current identity (user or customer group)
kronan me --json

AI Agent Usage

All commands support

--json
for structured output. This makes kronan-cli suitable as a tool for AI agents managing grocery shopping.

Important: Commands that change state can modify the user's real data. Agents must ask for explicit user confirmation before running any state-changing command.

State-changing commands:

  • cart add
    ,
    cart clear
  • order delete-lines
    ,
    order lower-quantity
    ,
    order toggle-substitution
  • lists create
    ,
    lists delete
    ,
    lists add
    ,
    lists remove
    ,
    lists clear
  • notes add
    ,
    notes update
    ,
    notes remove
    ,
    notes toggle
    ,
    notes clear
  • stats ignore
    ,
    stats unignore

Read-only commands are safe to run without confirmation:

  • search
    ,
    product
    ,
    categories
    ,
    category
  • orders
    ,
    order
    (view)
  • cart
    (view)
  • lists
    (view)
  • notes
    (view),
    notes archived
  • stats
    (view)
  • me
    ,
    status

Example agent workflows

Build a weekly cart from frequently purchased items:

# 1. Get purchase statistics to find frequently bought items
kronan stats --limit 50 --json

# 2. Add top items to cart at their typical quantities
kronan cart add 100224198 6    # Nýmjólk x6
kronan cart add 02200946 1     # Heimilisbrauð

# 3. Review the cart
kronan cart --json

Create a shopping list for a recipe:

# 1. Create a new list
kronan lists create "Pizza Night" --description "Ingredients for homemade pizza"

# 2. Search for products and add to list
kronan search "mozzarella" --json
kronan lists add <list-token> 100246180 2

kronan search "pizzasósa" --json
kronan lists add <list-token> 100221958 1

# 3. View the completed list
kronan lists view <list-token>

Manage shopping with notes (Skundalisti):

# 1. Add items to shopping note
kronan notes add --text "Mjólk"
kronan notes add --sku 100224198 --quantity 2

# 2. Mark items as you shop
kronan notes toggle <line-token>

# 3. View remaining items
kronan notes

# 4. View completed items
kronan notes archived

Analyze and optimize purchases:

# View purchase frequency for all products
kronan stats --json

# Hide irrelevant products from stats
kronan stats ignore <id>

Flags

FlagDescription
--json
Structured JSON output (for AI agents)
--page <n>
Page number (search, category)
--limit <n>
Results per page
--offset <n>
Offset for pagination
--include-ignored
Include ignored products in stats
--force
Skip confirmation for destructive operations
--text "..."
Text for shopping note item
--sku SKU
Product SKU
--quantity N
Quantity (default: 1)
--description "..."
Description for product list

API Reference

The CLI uses the official Krónan Public API at

https://api.kronan.is/api/v1/
.

API Documentation:

Key endpoints:

EndpointMethodAuthDescription
/products/search/
POSTYesProduct search
/products/{sku}/
GETYesProduct detail
/categories/
GETYesCategory tree
/categories/{slug}/products/
GETYesCategory products
/checkout/
GETYesView checkout/cart
/checkout/lines/
POSTYesAdd/replace checkout lines
/orders/
GETYesOrder history
/orders/{token}/
GETYesOrder details
/orders/{token}/delete-lines/
POSTYesDelete order lines
/orders/{token}/lower-quantity-lines/
POSTYesLower line quantity
/orders/{token}/lines-toggle-substitution/
POSTYesToggle substitution
/me/
GETYesCurrent identity
/product-lists/
GET/POSTYesList/create product lists
/product-lists/{token}/
GET/PATCH/DELETEYesProduct list CRUD
/product-lists/{token}/update-item/
POSTYesAdd/update list item
/shopping-notes/
GETYesView shopping note
/shopping-notes/add-line/
POSTYesAdd note line
/shopping-notes/change-line/
PATCHYesUpdate note line
/shopping-notes/delete-line/
DELETEYesDelete note line
/shopping-notes/toggle-complete-on-line/
PATCHYesToggle completion
/product-purchase-stats/
GETYesPurchase statistics
/product-purchase-stats/{id}/set-ignored/
PATCHYesIgnore/unignore product

Auth header format:

Authorization: AccessToken {token}

Migration from v0.1.x

If you were using the previous version with Cognito authentication:

  1. Remove old tokens:
    rm ~/.kronan/tokens.json
  2. Get a new access token from https://kronan.is/adgangur/adgangslyklar
  3. Run
    kronan token <new-token>
  4. Update any scripts using
    kronan login
    to use
    kronan token
    instead

Note: Order IDs in the new API are tokens (UUIDs), not numeric IDs.

Version History

  • v0.3.0 - Added comprehensive commands: categories, order modifications, product lists CRUD, shopping notes, purchase statistics
  • v0.2.0 - Migrated to Krónan Public API with AccessToken authentication
  • v0.1.0 - Initial release with Cognito authentication