Skip to content
Back to skills

Shopping List Planner

ASecurity

购物清单——按周采买、搬家、露营、宝宝用品、聚会等场景生成分类清单,按商店动线排序,设预算上限与替代品,出门前先核对库存防重复买。当用户说「帮我列个购物清单」「搬家要买什么」「周末露营带什么」时使用。

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 13, 2026
ai-agentspythongobash

Security analysis

A100/100

Pro scans all 6 files and shows the line behind each finding

Scanned October 13, 2026

npx -y skills add po-et/workbuddy-skills --skill shopping-list-planner --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Shopping List Planner?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Shopping List Planner
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/po-et-shopping-list-planner/badge)](https://www.skillsdirectory.com/skills/po-et-shopping-list-planner)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.md16.9 KB
  • examples/budget-check.md4.1 KB
  • examples/first-camping.md2.9 KB
  • references/checklist-template.md2.2 KB
  • references/scenarios.md2.4 KB
  • scripts/list_total.py11.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.