Install
openclaw skills install pocketclawHousehold memory vault for group chat agents. Tracks gift cards, coupons, store credit, grocery habits, and standing arrangements. Use when someone mentions a gift card, coupon, store credit, shopping, groceries, recurring purchases, cleaning lady, babysitter, or any household arrangement. Triggers on phrases like "I have a gift card", "save this coupon", "we usually buy", "the cleaner comes on", "do we have any coupons for", "what's the Castro card balance", "add store credit".
openclaw skills install pocketclawHousehold memory vault. Stores gift cards, coupons, grocery preferences, and standing arrangements so nothing gets lost.
Data files live in the agent's workspace root (same directory as MEMORY.md, AGENTS.md):
wallet.json — gift cards, coupons, store creditgrocery-history.json — recurring items, brand preferences, usual storesarrangements.json — standing appointments (cleaner, babysitter, etc.)Use the exact paths the agent already uses for MEMORY.md — same directory.
Gift card fields: store, balance, currency (default ILS), code, expiry, link, added_date Coupon fields: store, code, discount, discount_type (percent|amount), expiry, conditions, valid (default true), added_date Store credit fields: store, balance, currency (default ILS), expiry, added_date Arrangement fields: what, when, contact, notes, added_date Grocery fields:
Use scripts/save.py for all writes — never write files directly.
The save.py CLI handles all file operations deterministically:
# skill_dir = directory containing SKILL.md (this file)
python3 {skill_dir}/scripts/save.py <command> --workspace {workspace} [args]
Gift card:
python3 {skill_dir}/scripts/save.py gift_card --workspace {workspace} \
--store "Castro" --balance 200 --currency ILS --code ABC123 --expiry 12/26 --link null
Coupon:
python3 {skill_dir}/scripts/save.py coupon --workspace {workspace} \
--store "Zara" --code SAVE20 --discount 20 --discount-type percent --expiry 2026-06-01
Store credit:
python3 {skill_dir}/scripts/save.py store_credit --workspace {workspace} \
--store "H&M" --balance 50 --currency ILS
Grocery item:
python3 {skill_dir}/scripts/save.py grocery --workspace {workspace} \
--item "חלב תנובה 3%" --store "סופר באבא" --frequency weekly
Brand preference:
python3 {skill_dir}/scripts/save.py brand_pref --workspace {workspace} \
--category milk --brand "תנובה 3%"
Arrangement:
python3 {skill_dir}/scripts/save.py arrangement --workspace {workspace} \
--what "cleaning lady" --when "every Thursday" --contact null --notes null
Update balance (after use):
python3 {skill_dir}/scripts/save.py update_balance --workspace {workspace} \
--store Castro --type gift_card --new-balance 150
Recall (returns JSON):
python3 {skill_dir}/scripts/save.py recall --workspace {workspace} --type gift_cards
python3 {skill_dir}/scripts/save.py recall --workspace {workspace} --type all
# Types: gift_cards, coupons, store_credit, wallet, grocery, arrangements, all
Write commands return human-readable confirmation:
saved: Castro ₪200, code ABC123, expires 12/26updated: Castro gift card ₪200 → ₪150saved: Zara coupon SAVE20 (20%), expires 2026-06-01Recall commands return JSON for parsing.
When user provides a new item:
Identify type:
gift_card or store_creditcoupongroceryarrangementExtract fields from message. Handle missing fields based on criticality:
Critical fields (ask ONCE if missing):
--code null.Non-critical fields (pass null or omit, don't ask):
When user provides partial data then follows up with more details (code, expiry, etc.) in the next message, call save.py again with the same store — it will update the existing entry rather than creating a duplicate.
save.py recall --type <type> to get JSONupdate_balance commandgift_card, arrangement) — dedup logic will update existing entryCommon updates:
update_balance --new-balance <current-50>valid: false (or just note in response for now)arrangement --what "cleaning lady" --when "every Wednesday"Call save.py recall --type <type> and format output:
--type gift_cards--type coupons--type arrangements--type groceryThe save.py script automatically keeps the wallet table in MEMORY.md synced:
## Gift Cards & Wallet
| Store | Type | Balance/Discount | Code | Expiry |
|-------|------|------------------|------|--------|
| Castro | gift_card | ₪200 | ABC123 | 12/26 |
| Zara | coupon | 20% | SAVE20 | 2026-06-01 |
No manual MEMORY.md updates needed — save.py handles it.
See schemas/ for empty seed files with structure notes and examples.