Back to skills
SKILL.md
Shopping List Planner
ASecurity购物清单——按周采买、搬家、露营、宝宝用品、聚会等场景生成分类清单,按商店动线排序,设预算上限与替代品,出门前先核对库存防重复买。当用户说「帮我列个购物清单」「搬家要买什么」「周末露营带什么」时使用。
- 2 stars
- 0 votes
- 0 copies
- 1 view
- Added October 13, 2026
Security analysis
100/100Pro scans all 6 files and shows the line behind each finding
npx -y skills add po-et/workbuddy-skills --skill shopping-list-planner --agent claude-codeAre you the author of Shopping List Planner?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/po-et-shopping-list-planner)---
name: shopping-list-planner
description: "购物清单——按周采买、搬家、露营、宝宝用品、聚会等场景生成分类清单,按商店动线排序,设预算上限与替代品,出门前先核对库存防重复买。当用户说「帮我列个购物清单」「搬家要买什么」「周末露营带什么」时使用。"
author: Captain
version: 0.1.1
display_name: "购物清单"
display_name_en: "Shopping List"
description_zh: "按场景生成可勾选的分类购物清单:周采买、搬家、露营、宝宝用品、聚会各有骨架;按商店动线排序少走回头路;设预算上限,超支先砍「想要」,贵的写好替代品;出门前用库存核对法防重复买。不推荐任何品牌、店铺或购物平台。"
description_en: "Build a categorized, checkable shopping list for groceries, moving, camping, baby supplies or a party, ordered by store route, capped by budget and checked against what you already have."
tags:
- "购物清单"
- "采购清单"
- "买菜清单"
- "搬家清单"
- "露营清单"
- "宝宝用品"
- "聚会采购"
- "shopping list"
- "checklist"
examples_zh:
- "帮我列个购物清单,两个大人一个小孩,下周五顿晚饭,预算 400"
- "下个月搬家要买什么,新房只有床和衣柜"
- "第一次周末露营带什么,四个人,能租的就不买"
examples_en:
- "Make me a shopping list for two adults and a child, five dinners next week, budget 400"
- "We move next month and the new flat only has a bed and a wardrobe; what do we need to buy?"
- "First weekend camping trip for four; what should we bring, renting whatever we can?"
---
# 购物清单
定位一句话:**好清单不在写得全,在三件事做对:先看家里有什么、按店里怎么走来排、每一项都落在预算里。**
## 何时使用
核心触发词:购物清单、采购清单、买菜清单、「要买什么」「带什么」。适用于每周买菜补货、搬家前后添置、第一次露营、给宝宝备用品、在家办聚会。用户通常这样说:
- 「帮我列个购物清单,两大一小,下周五顿晚饭,预算 400」
- 「下个月搬家要买什么,新房只有床和衣柜」
- 「第一次周末露营带什么,四个人,能租的就不买」
- 「宝宝下个月出生,先备哪些东西」
- 「周六家里请十个朋友吃饭,要买什么」
- 「随便买点菜,帮我列一下」——模糊需求也接:先问最多三个问题,其余按默认值出第一版,见「信息不全或出错时」
不适用:
- **要推荐具体品牌、店铺、平台,比价或代下单**:说明不做,改给挑选标准(容量、尺寸、保质期、适用人数),由用户自己选。
- **家电、家具、汽车等大件怎么选型**:本技能只把它列进清单,并提醒「量好尺寸再买」;选型交给对应的选购类技能,或直接简答。
- **过敏、婴幼儿喂养、用药选什么**:按医生或药师的意见办,清单只留「数量」和「待医生确认」两栏。
## 先判断:五个问题问清再写
1. 场景与时长:哪一类,管几天。
2. 人数与限制:几个大人几个小孩;忌口、过敏、婴儿月龄——过敏与喂养听医生的,这里只照着列。
3. 预算上限:一个总数,再标出哪几项绝对不能省。
4. 在哪买:大超市、菜市场、便利店还是网上下单,决定动线怎么排;网上下单再问一句送货要多久,生鲜隔天才到就先在附近买两天的量。
5. 能存多少:冰箱多大、有没有冷冻空间,决定一次买几天的量。
缺哪个问哪个,一次最多问三个;没给预算就只列物品和数量,不替用户编预算,也不编价格。
## 流程:五步出清单
```
第 1 步 套骨架:从五个场景骨架里取一套,删掉用不上的,补上家里的特殊需求
第 2 步 盘库存:写之前先看,冰箱冷冻、橱柜调料干货、日用品柜三处各看一眼,
每项标「缺」「快用完」「有」,「有」的直接划掉;快过期的食材先排进本周菜单
出门前给冰箱和调料柜各拍一张照片,在店里拿不准「家里有没有」就翻照片
长期办法:同类东西只放一处;新买的放后面、旧的挪到前面;
每类日用品只留一个备用,拆开最后一个时当场记进清单
第 3 步 定数量:周采买按菜单倒推,先定五顿晚饭吃什么,再拆成食材和份量;
聚会按人数,饮品按第一小时每人两杯、之后每小时一杯估(经验值,天热上调),一次性餐具多备两成
肉类买回来按一顿的量分装冷冻,吃一袋化一袋,量才好估
第 4 步 定预算:每项写估价,不知道就标 [待补],合计和上限比,留一成机动别排满;超了按这个顺序砍:
先砍「想要」→ 换替代品 → 减数量 → 最后才动「必需」
单价高的项旁边写一个替代品:当季代反季、大包装代小包装(用得完才算省)、借或租代买、一物多用
多人分摊的(聚会、露营),清单末尾加一栏:谁买哪一区、谁垫付、怎么结
第 5 步 排动线:按店里的走法分区,不按想到的顺序写
超市:日用百货 → 粮油干货调料 → 饮料零食 → 蔬果 → 肉禽水产 → 冷藏乳品 → 冷冻 → 鸡蛋面包
重的先拿垫底,冷的最后拿,易碎的放最上;第一次按常去那家的实际顺序改一遍,以后照用
菜市场:先绕一圈看新鲜度和价钱,再从干货调料买起,肉和水产最后买
网上下单也按这几个分区一次下完;为凑满减加的东西,只能从清单里挑
```
清单超过十来项、又要对照预算时,把清单写成 CSV,用脚本排动线、算合计、列出可砍的候选(只用 Python 标准库,不联网):
```bash
python3 {baseDir}/scripts/list_total.py list.csv --budget 400
python3 {baseDir}/scripts/list_total.py list.csv --budget 400 --out 清单.md
```
估价留空的项输出为 [待补],脚本不替用户编价格;超支时按「想要 → 替代 → 减量 → 必需」列候选,砍哪项由用户定。CSV 的列与写法见 [references/checklist-template.md](references/checklist-template.md)。
## 五个场景的骨架(摘要)
| 场景 | 分组 | 最容易漏或做错的 |
|---|---|---|
| 周采买 | 蔬果、肉蛋奶、主食粮油、调料、早餐、零食饮料、日用清洁 | 叶菜只买前三四天的量;早餐按人头乘天数算 |
| 搬家 | 打包期、搬家当天、入住首晚、入住首周,分三批买 | 证件合同随身带;窗帘、柜子、床垫量好尺寸再买 |
| 露营 | 住、吃、穿、照明、安全 | 水按每人每天 3–4 升估(经验值);大件先租或借;帐篷里不用炉具和炭火 |
| 宝宝用品 | 喂养、睡眠、洗护、换尿布、衣物、出行 | 按月龄分批;安全座椅不买二手;奶粉辅食药品听医生的 |
| 聚会 | 主食与菜、饮品与冰块、餐具纸巾、垃圾袋、开瓶器与剪刀、装饰与游戏 | 冰块、垃圾袋、开瓶器最常被忘;邀请时顺便问忌口和过敏 |
每个场景的完整骨架与数量估法见 [references/scenarios.md](references/scenarios.md);可勾选模板与常备品主清单见 [references/checklist-template.md](references/checklist-template.md)。常备品主清单的用法:家里常买的二三十样写成固定表贴在冰箱上,每周只勾「缺」和「快用完」的;买完把小票实付金额填回去,下次估价就有数了。
## 信息不全或出错时
| 情况 | 怎么处理 | 对用户说的话(一句模板) |
|---|---|---|
| E1 缺关键信息:只说「随便买点菜」「帮我列个清单」 | 先问最多三个:几个人、管几天、预算多少(可以不给);其余按默认值出第一版:周采买骨架、大超市动线、一次买 3–4 天的量;默认值写在清单开头并标 [待确认] | 「几个人吃、管几天?预算不给也行。我先按 2 人、3 天、大超市列一版,这几项标了 [待确认],你改一个数我就重排。」 |
| E2 输入不对或自相矛盾:预算写成 0、负数或「随便」;说「能租就不买」却要买帐篷;估价明显像笔误 | 预算不合法就请用户重给,或按「没给预算」处理;矛盾处指出来,给两种理解让用户选;用户给的数不擅自改,标 [待确认] 并问一句 | 「你说能租就不买,但清单里有买帐篷:是改成租,还是这次就想买?」 |
| E3 超出范围:推荐牌子、店铺、平台,比价,代下单代付,判断过敏或奶粉选哪种 | 说明不做;牌子和店铺改给挑选标准;医疗相关的放进「待医生确认」栏 | 「具体牌子我不推荐,给你三条挑选标准:容量、保质期、适用人数,你在店里对着勾。」 |
| E4 时间紧,只要最小可用版 | 只出「必需」项:按动线分区、每项带数量、末尾一行「家里已有」;估价、替代品、分工回头补;标题行写「状态:最小版」 | 「先给你最小版:只列必需品、按店里的走法排好,马上能出门;预算和替代品回来再补。」 |
| E5 用户坚持越界:一定要我说哪个牌子好、哪家便宜,或帮忙下单 | 守住边界,不改口;把挑选标准写成清单里的勾选项;不索要任何支付信息 | 「这件事我确实不推荐也不比价;我把挑选标准写进清单,到店对着勾就能自己选。」 |
| 用户只给总预算、没有任何估价 | 不编价格:清单照出,估价全部 [待补],状态行写「估价不全,暂不判断是否超支」;请用户按小票或记忆填几项大头 | 「价格我不编,先把肉和水果这几样大头估个数,我帮你对一下会不会超。」 |
脚本出错时:
| 退出码 / 报错 | 原因 | 修正办法 |
|---|---|---|
| 0 | 正常输出清单与核算 | 按状态行决定要不要砍 |
| 1「参数错误」 | `--budget` 不是正数、`--reserve` 不在 0–1 之间、`--out` 与输入同名、参数拼错 | 没预算就不写 `--budget`;按提示的用法重跑 |
| 2「读不到文件 / 读取失败 / 写不了输出文件」 | 路径不对、给的是文件夹、编码无法识别、输出目录不存在 | 核对路径;另存为 UTF-8 的 CSV;`--out` 换到可写目录 |
| 3「清单有误」 | 缺「分区」或「物品」列、估价不是数字或为负数、只有表头 | 按报错里的行号改:估价写成 12 这样的数字,不知道就留空 |
| 130「已中断」 | 按了 Ctrl+C | 直接重跑,不会留下半截文件 |
## 输出契约
交付物按固定顺序输出,某部分没有内容写「无」:
```
0 标题行:购物清单|场景|人数|天数|预算上限|状态:完整版 / 最小版|[待确认] N 项
1 默认值与待确认:没问到、先按默认值写的项
2 分区清单:按动线分区,每项「- [ ] 物品 × 数量|估价|替代」
3 合计|上限|机动一成|余量或超支;超支时按「想要 → 替代 → 减量 → 必需」列候选
4 家里已有、已划掉
5 分工(多人采购时):谁买哪一区、谁垫付、怎么结
6 下次补货
```
- 先问清五个问题;缺预算就只列物品和数量,不编价格。
- 清单按动线分区,每项带数量,单价高的附一个替代品;用可勾选格式,要打印就把「- [ ]」换成「□」。
- 估价只填用户给的数,不引用任何店铺或平台的价格。
- 多人一起采购时按动线分区分工,每人负责一段。
占位符只用三种:[待补]——价格或数量要用户补;[待确认]——没问到、先按默认值写的项;「待医生确认」——过敏、喂养、用药相关,由医生或药师定。
交付前自检(每条答「是」才交):
- [ ] 标题行的场景、人数、天数、预算、状态都填了,默认值都标了 [待确认]?
- [ ] 每一项都有数量,并落在正确的动线分区里?
- [ ] 没有一个价格是替用户编的(用户没给的都是 [待补])?
- [ ] 家里已有的已经划掉并单列?
- [ ] 合计与余量算对了;超支时列出了可砍的候选?
- [ ] 清单里没有任何品牌、店铺、平台名?
## 示例
> 示例:场景为虚构,只演示格式。
用户:「帮我列个购物清单,两个大人一个小孩,下周五顿晚饭,预算 400。」
助手先问:「在哪买,大超市还是菜市场?五顿晚饭有想吃的菜吗?没有我先排一版家常菜单。」用户答:「大超市,菜你定。生抽家里有,垃圾袋快用完了。」
交付:
```
购物清单|场景:周采买|人数:两大一小|天数:五顿晚饭|预算上限:400 元|状态:完整版|[待确认] 1 项
默认值与待确认:菜单由助手排 [待确认]——番茄炒蛋、土豆炖鸡腿、清蒸鱼配凉拌黄瓜、肉末豆腐、青菜鸡蛋面
【1 日用百货】- [ ] 垃圾袋 × 1 卷(快用完)|估价 [待补]
【2 粮油干货调料】- [ ] 挂面 × 1 斤|估价 [待补]
【4 蔬果】- [ ] 番茄 × 4 个 - [ ] 土豆 × 3 个 - [ ] 青菜 × 2 把 - [ ] 黄瓜 × 2 根|估价 [待补]
【5 肉禽水产】- [ ] 鸡腿 × 4 只 - [ ] 鲜鱼 × 1 条(替代:冷冻鱼) - [ ] 肉末 × 300 克|估价 [待补]
【6 冷藏乳品】- [ ] 豆腐 × 2 块|估价 [待补]
【8 鸡蛋面包等易碎】- [ ] 鸡蛋 × 10 个|估价 [待补]
合计:[待补](按小票或自己的估价补)|上限 400 元
家里已有、已划掉:生抽
分工:无(一人采购)
下次补货:无
```
更多示例:[examples/budget-check.md](examples/budget-check.md)(预算偏紧,用脚本核算并决定砍什么,含脚本真实输出);[examples/first-camping.md](examples/first-camping.md)(第一次露营,信息不全时的提问与默认值)。
## 常见问题(FAQ)
**问:预算不够怎么办?**
答:按「先砍想要 → 换替代品 → 减数量 → 最后才动必需」的顺序砍。我把每一步能砍的候选列出来,砍哪项你定。
**问:能直接告诉我哪个牌子好、哪家便宜吗?**
答:不推荐牌子、店铺和平台,也不比价。我给挑选标准(容量、尺寸、保质期、适用人数),写进清单,你到店对着勾。
**问:能帮我在网上下单吗?**
答:不下单、不代付,也不要任何支付信息。清单按分区写好,你照着一次下完;为凑满减加的东西只从清单里挑。
**问:我家冰箱小,一周的菜放不下怎么办?**
答:一次只买 3–4 天的量:叶菜先吃,后几天排根茎类、蛋和冷冻食材;肉按一顿的量分装冷冻,吃一袋化一袋。
**问:每周都要从头列吗?**
答:不用。把常买的二三十样写成常备品主清单存着,下次直接发给我,每周只勾「缺」和「快用完」的。
**问:宝宝的奶粉、辅食买哪种?**
答:听儿科医生的。清单里只写数量,另列「待医生确认」一栏。
**问:清单能打印出来贴冰箱上吗?**
答:能,把「- [ ]」换成「□」再打印;想在手机上点勾,就粘进支持待办勾选的备忘录。
## 常见错误(反模式)
最佳实践先记三条:写之前盘库存;按店里的走法分区;每一项都落在预算里,超了先砍「想要」。
| 错误做法 | 为什么错 | 正确做法 |
|---|---|---|
| 不看库存就写 | 家里还有两瓶酱油又买一瓶 | 写之前盘一次,出门前再对一次 |
| 按想到的顺序写 | 在店里来回跑,还容易漏买 | 按动线分区写 |
| 只有总预算 | 超了不知道砍哪个 | 每项估价,分「必需」和「想要」 |
| 为满减凑单 | 不在清单上的东西,买了不算省钱 | 凑单只从清单里挑 |
| 促销囤货过量 | 囤的量超过保质期内用得完的量,等于提前扔钱 | 只囤保质期内用得完的量 |
| 大件不量就买 | 窗帘、柜子、床垫买回来尺寸不合 | 搬进去量过再买 |
| 一次买齐 | 搬家、露营、宝宝用品买了用不上 | 分批:先买第一批,用过再补 |
| 临时起意多拿 | 清单外的东西最容易超支 | 先放回去,真需要就记进下一张清单 |
| 写得太细,精确到牌子和规格 | 到店缺货就卡住 | 写品类和用量,现场按替代品换 |
| 用户没给价格就自己估一个填上 | 编出来的价格会误导预算判断 | 标 [待补],只算用户给的数 |
## 边界与不做什么
- 不推荐具体品牌、型号、店铺或购物平台,不比价、不下单、不代付,不索要任何支付信息。
- 食物过敏、婴幼儿喂养、特殊饮食与家庭常备药,按医生或药师的意见办,本技能只把他们的要求照着列进清单。
- 野外露营的路线、天气与安全规定不在这里,以营地和当地管理规定为准;高风险户外活动找有资质的领队。
- 不判断商品真伪与质量,不处理退换货与消费纠纷;遇到纠纷先找商家,再找当地消费者权益保护部门。
Files in this skill
- SKILL.md
- examples/budget-check.md
- examples/first-camping.md
- references/checklist-template.md
- references/scenarios.md
- scripts/list_total.py
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.