{"id":"d1519061-bc67-4ebf-a2f2-481baa36d71c","shortId":"yG69nS","kind":"skill","title":"harness-step3-session-management","tagline":"Harness Engineering 第二阶段：建立跨 session 状态管理，解决 agent 每次对话失忆的问题。\n创建 tasks.json（任务清单）、progress.md（进度记录）、init.sh（环境初始化脚本）三个文件。\n\n当用户说\"建立任务管理\"、\"让 agent 记住进度\"、\"创建 tasks.json\"、\"跨 session 保持状态\"、\n\"agent 每次都不记得上次做了什么\"、\"建立 progress 文件\"、\"初始化状态管理\"时，立即使用此 skill。\n\n前置条件：harness-step1 和 harness-ste","description":"# Harness Step 3: 建立跨 Session 状态管理\n\n## 目标\n\n创建三个文件，让 agent 在任何新 session 开始时能在 30 秒内恢复工作状态：\n\n- `init.sh`：环境初始化脚本，验证项目可以正常启动\n- `tasks.json`：当前任务清单，agent 的工作指令来源\n- `progress.md`：人类可读的进度摘要，记录每次 session 的关键信息\n\n**核心原则**：状态靠文件传递，不靠 agent 的记忆。git log 是主记录，这三个文件是辅助。\n\n---\n\n## 执行步骤\n\n### Step 1：扫描项目启动方式\n\n在写 `init.sh` 之前，先确认项目如何启动和测试：\n\n```bash\n# 读 package.json 的 scripts（Node.js 项目）\ncat package.json 2>/dev/null | grep -A 20 '\"scripts\"'\n\n# 或读 Makefile（多语言项目）\ncat Makefile 2>/dev/null | head -40\n\n# 或读 pyproject.toml（Python 项目）\ncat pyproject.toml 2>/dev/null | grep -A 20 '\\[tool.poetry.scripts\\]'\n\n# 确认现有 AGENTS.md 里的启动命令\ngrep -A 5 '启动命令\\|start\\|dev\\|run' AGENTS.md 2>/dev/null\n```\n\n收集：\n- 开发服务器启动命令\n- 测试命令\n- 类型检查/lint 命令（如果有）\n- 有没有需要先跑的初始化步骤（如数据库迁移）\n\n---\n\n### Step 2：创建 `init.sh`\n\n`init.sh` 的作用：每次 session 开始时运行，**快速验证环境是否正常**，不正常就立即修复再继续。\n\n```bash\n#!/bin/bash\n# init.sh — 每次 session 开始时运行\n# 验证开发环境处于可工作状态\n\nset -e  # 任何步骤失败就停止\n\necho \"=== 检查环境 ===\"\n\n# 1. 确认在正确目录\necho \"工作目录: $(pwd)\"\n\n# 2. 安装依赖（如果 node_modules 不存在）\n# [根据技术栈选择，以下是示例]\n# Node.js:\nif [ ! -d \"node_modules\" ]; then\n  echo \"安装依赖...\"\n  npm install\nfi\n\n# 3. 冒烟测试：验证项目能正常启动\n# [根据项目实际情况写，目标是用最快的方式验证基本功能正常]\n# 示例：跑一个最快的测试\n# npm run test -- --testPathPattern=smoke 2>/dev/null || echo \"警告：冒烟测试失败，请先修复\"\n\necho \"=== 环境检查完成，可以开始工作 ===\"\necho \"提示：运行 'git log --oneline -10' 查看最近工作历史\"\n```\n\n**写作要求**：\n- 根据扫描到的实际启动命令填写，不要留示例注释\n- 冒烟测试要快（< 30秒），目的是快速发现环境问题，不是跑完整测试套件\n- 如果项目有数据库，加一步检查数据库连接是否正常\n- 写完后实际运行一遍，确认脚本无报错：`bash init.sh`\n\n---\n\n### Step 3：创建 `tasks.json`\n\n**结构设计**：\n\n```json\n{\n  \"project\": \"[项目名]\",\n  \"last_updated\": \"[今天日期，格式 YYYY-MM-DD]\",\n  \"current_focus\": \"[当前最重要的一件事，一句话]\",\n  \"tasks\": [\n    {\n      \"id\": \"[模块缩写]-[序号]\",\n      \"title\": \"[任务标题]\",\n      \"description\": \"[具体做什么，1-3句话]\",\n      \"status\": \"pending | in_progress | done | blocked\",\n      \"priority\": \"high | medium | low\",\n      \"blocked_by\": \"[阻塞原因，仅 blocked 状态时填写]\",\n      \"verify\": \"[如何验证这个任务完成了]\",\n      \"requires_eval\": false\n    }\n  ]\n}\n```\n\n**字段说明**（每次新增任务时必须逐字段填写，不能省略）：\n\n| 字段 | 是否必填 | 说明 |\n|------|----------|------|\n| `id` | 必填 | 模块缩写 + 序号，如 `auth-01`、`ui-03`，简短可读 |\n| `title` | 必填 | 任务标题，一句话 |\n| `description` | 必填 | 具体做什么，1-3 句话 |\n| `status` | 必填 | 初始值为 `pending`，由 agent 工作时更新 |\n| `priority` | 必填 | `high / medium / low` |\n| `blocked_by` | 仅 blocked 时填 | 阻塞原因 |\n| `verify` | 必填 | 如何验证完成，必须是可执行的步骤（命令或操作） |\n| `requires_eval` | 必填 | 是否需要独立 Evaluator 评审，默认 `false`，见判断标准 |\n\n**`requires_eval` 判断标准**（新增任务时必须对照判断，不能不加思考直接填 false）：\n\n设为 `true` 的条件，满足任意一条即需要评审：\n- 这是一个新功能（不只是修 bug 或改配置）\n- 涉及安全、权限、数据校验相关逻辑\n- 预计会修改 3 个以上文件\n- 任务描述里有\"重构\"或\"架构调整\"\n\n设为 `false` 的条件（以下全部满足才可以跳过评审）：\n- 纯 bug 修复，改动范围明确\n- 文档更新、注释补充\n- 配置调整、环境变量修改\n- 单元测试补充\n\n**如何确定初始任务列表**：\n\n优先从以下来源提取：\n1. `docs/exec-plans/active/` 里的计划文件（如果有）\n2. `docs/exec-plans/tech-debt-tracker.md` 里的高优先级债务\n3. README 里提到的 TODO 或路线图\n4. 询问用户：「当前最想推进的 3-5 个任务是什么？」\n\n**写作要求**：\n- `verify` 字段必须是可执行的步骤，不能写\"确认功能正常\"这种废话\n- 任务粒度：一个任务应该在 1-2 小时内完成，太大的拆分\n- 初始状态：所有任务都是 `pending`，由 agent 工作时更新\n\n**询问用户**（如果无法从现有文档推断任务）：\n\n> 我已经扫描了项目，准备创建任务清单。请告诉我：\n> 当前最想推进的 3-5 个任务是什么？\n> 每个任务用一句话描述就行。\n\n---\n\n### Step 4：创建 `progress.md`\n\n初始内容：\n\n```markdown\n# 项目进度记录\n\n> 每次 session 完成任务后，在顶部追加记录。不要删除历史。\n> 格式：## [日期] [任务名]\n\n---\n\n## [今天日期] 初始化 Harness\n\n- 完成 harness-step1：建立 docs/ 骨架\n- 完成 harness-step2：填充知识库内容\n- 完成 harness-step3：建立状态管理\n- tasks.json 初始任务数：[N] 个\n- 下次从这里开始：读 tasks.json，选 priority=high 且 status=pending 的任务开始\n```\n\n---\n\n### Step 4b：更新 `AGENTS.md` —— 写入任务管理规则\n\n找到 `AGENTS.md` 里 step2 写入的\"每次完成一个任务后\"部分，**替换**为以下内容：\n\n```markdown\n### 新增任务时，必须：\n1. 填写 tasks.json 里的所有字段，不能省略\n2. 对照以下标准判断 `requires_eval`，不能默认填 false 不加思考：\n   - 新功能 / 涉及安全权限 / 改动超过 3 个文件 / 重构 → true\n   - 纯 bug 修复 / 文档更新 / 配置调整 → false\n\n### 每次完成一个任务后，必须按顺序执行：\n1. 执行 `tasks.json` 里该任务 `verify` 字段描述的验证步骤\n2. 若该任务 `requires_eval` 为 `true`：填写 `sprint_output.md`，等待 Evaluator 评审通过后才能标记 `done`\n   若该任务 `requires_eval` 为 `false`：验证通过即可标记 `done`\n3. git commit，格式：`type(scope): 做了什么，遗留了什么（如有）`\n4. 在 `progress.md` 顶部追加本次记录\n\n**禁止**：跳过 verify 步骤自行判断任务已完成。\n**禁止**：不经判断直接把 `requires_eval` 设为 false。\n```\n\n---\n\n### Step 5：验证整体联动\n\n三个文件创建完后，模拟一次完整的 session 启动流程，验证联动是否正常：\n\n```bash\n# 模拟 agent 新 session 开始的操作序列\necho \"=== 模拟新 session 启动 ===\"\n\n# 1. 跑 init.sh\nbash init.sh\n\n# 2. 看 git log\ngit log --oneline -10\n\n# 3. 读 progress.md（确认文件存在且可读）\nhead -20 progress.md\n\n# 4. 读 tasks.json（确认格式正确）\ncat tasks.json | python3 -m json.tool > /dev/null && echo \"tasks.json 格式正确\" || echo \"tasks.json 格式有误\"\n```\n\n全部通过才算完成。\n\n---\n\n## 质量检验\n\n- [ ] `init.sh` 实际运行无报错？\n- [ ] `tasks.json` JSON 格式合法？每个任务都有 `verify` 和 `requires_eval` 字段？\n- [ ] 每个任务的 `requires_eval` 是否对照判断标准填写，而非默认 false？\n- [ ] `progress.md` 有初始记录？\n- [ ] `AGENTS.md` 里是否包含新增任务和完成任务的两条规则？\n\n---\n\n## 完成后告知用户\n\n输出摘要：\n\n**创建的文件**：\n- `init.sh`：[描述做了什么检查]\n- `tasks.json`：[N] 个任务，其中需要 Evaluator 评审的 [N] 个\n- `progress.md`：已初始化\n\n**如何使用**：\n> 现在你可以把项目交给 Claude Code 了。它每次启动时会自动读这三个文件 + git log，\n> 恢复工作状态。你不需要每次都解释\"上次做到哪里了\"。\n\n**需要你做的事**：\n- 检查 `tasks.json` 里的任务列表是否符合你的预期，可以手动增删\n- 确认 `requires_eval` 的判断是否合理\n- 如果 `init.sh` 有步骤失败，告诉我，我来修复\n\n**下一步**：\n- Harness 地基已完成（step1 + step2 + step3）\n- 可以开始正式使用 Claude Code 开发\n- 遇到 agent 反复违反代码规范时，运行 `harness-step4-linter`，把规则变成机械约束\n- 遇到 agent 自评不可信时，运行 `harness-step5-evaluator`，引入独立评审","tags":["harness","step3","session","management","book2skills","simbajigege","agent-skills","agentskills","anthropic","anthropic-claude","growth-investing","investing"],"capabilities":["skill","source-simbajigege","skill-harness-step3-session-management","topic-agent-skills","topic-agentskills","topic-anthropic","topic-anthropic-claude","topic-book2skills","topic-growth-investing","topic-investing","topic-investing-skills","topic-skills","topic-stock-analysis"],"categories":["book2skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/simbajigege/book2skills/harness-step3-session-management","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add simbajigege/book2skills","source_repo":"https://github.com/simbajigege/book2skills","install_from":"skills.sh"}},"qualityScore":"0.468","qualityRationale":"deterministic score 0.47 from registry signals: · indexed on github topic:agent-skills · 36 github stars · SKILL.md body (5,113 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T12:56:54.094Z","embedding":null,"createdAt":"2026-04-18T22:22:00.082Z","updatedAt":"2026-05-01T12:56:54.094Z","lastSeenAt":"2026-05-01T12:56:54.094Z","tsv":"'-01':305 '-03':307 '-10':226,607 '-2':417 '-20':613 '-3':270,317 '-40':117 '-5':406,433 '/bin/bash':164 '/dev/null':104,115,125,142,212,624 '/lint':147 '1':88,175,269,316,390,416,502,529,595 '2':103,114,124,141,153,180,211,394,507,535,600 '20':107,128 '3':52,199,242,369,397,405,432,517,554,608 '30':63 '30秒':232 '4':402,437,563,615 '4b':486 '5':135,578 'agent':13,26,33,59,70,80,324,424,587,705,714 'agents.md':131,140,488,491,652 'auth':304 'bash':94,163,239,585,598 'block':277,282,286,331,334 'bug':363,380,522 'cat':101,112,122,619 'claud':671,701 'code':672,702 'commit':556 'current':257 'd':190 'dd':256 'descript':267,313 'dev':138 'doc':459 'docs/exec-plans/active':391 'docs/exec-plans/tech-debt-tracker.md':395 'done':276,546,553 'e':171 'echo':173,177,194,213,217,220,591,625,628 'engin':7 'eval':291,343,352,510,538,549,574,642,646,687 'evalu':346,544,663,720 'fals':292,349,356,376,512,526,551,576,649 'fi':198 'focus':258 'git':82,223,555,602,604,675 'grep':105,126,133 'har':2,6,44,48,50,453,456,463,468,695,709,718 'harness-st':47 'harness-step1':43,455 'harness-step2':462 'harness-step3':467 'harness-step3-session-management':1 'harness-step4-linter':708 'harness-step5-evaluator':717 'head':116,612 'high':279,328,480 'id':262,299 'init.sh':20,65,91,155,156,165,240,597,599,633,657,690 'instal':197 'json':246,636 'json.tool':623 'last':249 'linter':711 'log':83,224,603,605,676 'low':281,330 'm':622 'makefil':110,113 'manag':5 'markdown':441,499 'medium':280,329 'mm':255 'modul':184,192 'n':473,660,665 'node':183,191 'node.js':99,188 'npm':196,206 'onelin':225,606 'package.json':96,102 'pend':273,322,422,483 'prioriti':278,326,479 'progress':36,275 'progress.md':18,72,439,565,610,614,650,667 'project':247 'pwd':179 'pyproject.toml':119,123 'python':120 'python3':621 'readm':398 'requir':290,342,351,509,537,548,573,641,645,686 'run':139,207 'scope':559 'script':98,108 'session':4,10,31,54,61,75,159,167,444,582,589,593 'set':170 'skill':41 'skill-harness-step3-session-management' 'smoke':210 'source-simbajigege' 'sprint_output.md':542 'start':137 'status':272,319,482 'ste':49 'step':51,87,152,241,436,485,577 'step1':45,457,697 'step2':464,493,698 'step3':3,469,699 'step4':710 'step5':719 'task':261 'tasks.json':16,29,68,244,471,477,504,531,617,620,626,629,635,659,682 'test':208 'testpathpattern':209 'titl':265,309 'todo':400 'tool.poetry.scripts':129 'topic-agent-skills' 'topic-agentskills' 'topic-anthropic' 'topic-anthropic-claude' 'topic-book2skills' 'topic-growth-investing' 'topic-investing' 'topic-investing-skills' 'topic-skills' 'topic-stock-analysis' 'true':358,520,540 'type':558 'ui':306 'updat':250 'verifi':288,337,409,533,569,639 'yyyi':254 'yyyy-mm-dd':253 '一个任务应该在':415 '一句话':260,312 '三个文件':22 '三个文件创建完后':580 '上次做到哪里了':679 '下一步':694 '下次从这里开始':475 '不加思考':513 '不只是修':362 '不存在':185 '不是跑完整测试套件':234 '不正常就立即修复再继续':162 '不经判断直接把':572 '不能不加思考直接填':355 '不能写':411 '不能省略':295,506 '不能默认填':511 '不要删除历史':447 '不要留示例注释':230 '不靠':79 '且':481 '个':474,666 '个以上文件':370 '个任务':661 '个任务是什么':407,434 '个文件':518 '为':539,550 '为以下内容':498 '之前':92 '了':673 '人类可读的进度摘要':73 '仅':285,333 '今天日期':251,451 '以下全部满足才可以跳过评审':378 '以下是示例':187 '任何步骤失败就停止':172 '任务名':450 '任务描述里有':371 '任务标题':266,311 '任务清单':17 '任务粒度':414 '优先从以下来源提取':389 '你不需要每次都解释':678 '保持状态':32 '修复':381,523 '做了什么':560 '先确认项目如何启动和测试':93 '全部通过才算完成':631 '其中需要':662 '具体做什么':268,315 '冒烟测试':200 '冒烟测试失败':215 '冒烟测试要快':231 '写作要求':228,408 '写入任务管理规则':489 '写入的':494 '写完后实际运行一遍':237 '准备创建任务清单':429 '创建':15,28,154,243,438 '创建三个文件':57 '创建的文件':656 '初始任务数':472 '初始值为':321 '初始内容':440 '初始化':452 '初始化状态管理':38 '初始状态':420 '判断标准':353 '前置条件':42 '加一步检查数据库连接是否正常':236 '单元测试补充':387 '反复违反代码规范时':706 '句话':271,318 '可以开始工作':219 '可以开始正式使用':700 '可以手动增删':684 '启动':594 '启动命令':136 '启动流程':583 '告诉我':692 '命令':148 '命令或操作':341 '和':46,640 '在':564 '在任何新':60 '在写':90 '在顶部追加记录':446 '地基已完成':696 '填充知识库内容':465 '填写':503,541 '多语言项目':111 '太大的拆分':419 '如':303 '如何使用':669 '如何确定初始任务列表':388 '如何验证完成':339 '如何验证这个任务完成了':289 '如数据库迁移':151 '如有':562 '如果':182,689 '如果无法从现有文档推断任务':427 '如果有':149,393 '如果项目有数据库':235 '字段':296,643 '字段必须是可执行的步骤':410 '字段描述的验证步骤':534 '字段说明':293 '它每次启动时会自动读这三个文件':674 '安装依赖':181,195 '完成':454,461,466 '完成任务后':445 '完成后告知用户':654 '实际运行无报错':634 '对照以下标准判断':508 '小时内完成':418 '工作时更新':325,425 '工作目录':178 '已初始化':668 '序号':264,302 '建立':35,458 '建立任务管理':24 '建立状态管理':470 '建立跨':9,53 '开发':703 '开发服务器启动命令':144 '开始时能在':62 '开始时运行':160,168 '开始的操作序列':590 '引入独立评审':721 '当前任务清单':69 '当前最想推进的':404,431 '当前最重要的一件事':259 '当用户说':23 '必填':300,310,314,320,327,338,344 '必须':501 '必须按顺序执行':528 '必须是可执行的步骤':340 '快速验证环境是否正常':161 '恢复工作状态':677 '我已经扫描了项目':428 '我来修复':693 '或':373 '或改配置':364 '或读':109,118 '或路线图':401 '所有任务都是':421 '执行':530 '执行步骤':86 '扫描项目启动方式':89 '找到':490 '把规则变成机械约束':712 '描述做了什么检查':658 '提示':221 '收集':143 '改动范围明确':382 '改动超过':516 '数据校验相关逻辑':367 '文件':37 '文档更新':383,524 '新':588 '新功能':514 '新增任务时':500 '新增任务时必须对照判断':354 '日期':449 '时':39 '时填':335 '是主记录':84 '是否对照判断标准填写':647 '是否必填':297 '是否需要独立':345 '更新':487 '替换':497 '有初始记录':651 '有步骤失败':691 '有没有需要先跑的初始化步骤':150 '权限':366 '架构调整':374 '查看最近工作历史':227 '核心原则':77 '根据扫描到的实际启动命令填写':229 '根据技术栈选择':186 '根据项目实际情况写':202 '格式':252,448,557 '格式合法':637 '格式有误':630 '格式正确':627 '检查':681 '检查环境':174 '模块缩写':263,301 '模拟':586 '模拟一次完整的':581 '模拟新':592 '步骤自行判断任务已完成':570 '每个任务用一句话描述就行':435 '每个任务的':644 '每个任务都有':638 '每次':158,166,443 '每次完成一个任务后':495,527 '每次对话失忆的问题':14 '每次新增任务时必须逐字段填写':294 '每次都不记得上次做了什么':34 '注释补充':384 '测试命令':145 '涉及安全':365 '涉及安全权限':515 '满足任意一条即需要评审':360 '状态时填写':287 '状态管理':11,55 '状态靠文件传递':78 '环境初始化脚本':21,66 '环境变量修改':386 '环境检查完成':218 '现在你可以把项目交给':670 '由':323,423 '的':97 '的任务开始':484 '的作用':157 '的关键信息':76 '的判断是否合理':688 '的工作指令来源':71 '的条件':359,377 '的记忆':81 '目标':56 '目标是用最快的方式验证基本功能正常':203 '目的是快速发现环境问题':233 '看':601 '确认':685 '确认功能正常':412 '确认在正确目录':176 '确认文件存在且可读':611 '确认格式正确':618 '确认现有':130 '确认脚本无报错':238 '示例':204 '禁止':567,571 '秒内恢复工作状态':64 '立即使用此':40 '第二阶段':8 '等待':543 '简短可读':308 '类型检查':146 '纯':379,521 '结构设计':245 '而非默认':648 '自评不可信时':715 '若该任务':536,547 '见判断标准':350 '解决':12 '警告':214 '让':25,58 '记住进度':27 '记录每次':74 '设为':357,375,575 '评审':347 '评审的':664 '评审通过后才能标记':545 '询问用户':403,426 '说明':298 '请先修复':216 '请告诉我':430 '读':95,476,609,616 '质量检验':632 '跑':596 '跑一个最快的测试':205 '跨':30 '跳过':568 '输出摘要':655 '运行':222,707,716 '这三个文件是辅助':85 '这是一个新功能':361 '这种废话':413 '进度记录':19 '选':478 '遇到':704,713 '遗留了什么':561 '部分':496 '配置调整':385,525 '里':492 '里提到的':399 '里是否包含新增任务和完成任务的两条规则':653 '里的任务列表是否符合你的预期':683 '里的启动命令':132 '里的所有字段':505 '里的计划文件':392 '里的高优先级债务':396 '里该任务':532 '重构':372,519 '阻塞原因':284,336 '需要你做的事':680 '顶部追加本次记录':566 '项目':100,121 '项目名':248 '项目进度记录':442 '预计会修改':368 '验证开发环境处于可工作状态':169 '验证整体联动':579 '验证联动是否正常':584 '验证通过即可标记':552 '验证项目可以正常启动':67 '验证项目能正常启动':201 '骨架':460 '默认':348","prices":[{"id":"4e2e57e1-40e7-448d-ae7d-b8e68592324a","listingId":"d1519061-bc67-4ebf-a2f2-481baa36d71c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"simbajigege","category":"book2skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:22:00.082Z"}],"sources":[{"listingId":"d1519061-bc67-4ebf-a2f2-481baa36d71c","source":"github","sourceId":"simbajigege/book2skills/harness-step3-session-management","sourceUrl":"https://github.com/simbajigege/book2skills/tree/main/skills/harness-step3-session-management","isPrimary":false,"firstSeenAt":"2026-04-18T22:22:00.082Z","lastSeenAt":"2026-05-01T12:56:54.094Z"}],"details":{"listingId":"d1519061-bc67-4ebf-a2f2-481baa36d71c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"simbajigege","slug":"harness-step3-session-management","github":{"repo":"simbajigege/book2skills","stars":36,"topics":["agent-skills","agentskills","anthropic","anthropic-claude","book2skills","growth-investing","investing","investing-skills","skills","stock-analysis"],"license":"mit","html_url":"https://github.com/simbajigege/book2skills","pushed_at":"2026-04-30T05:08:07Z","description":"Create best skills based on best books","skill_md_sha":"c7502dea38eaa9fa4a8c2093cb36573011e75b31","skill_md_path":"skills/harness-step3-session-management/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/simbajigege/book2skills/tree/main/skills/harness-step3-session-management"},"layout":"multi","source":"github","category":"book2skills","frontmatter":{"name":"harness-step3-session-management","description":"Harness Engineering 第二阶段：建立跨 session 状态管理，解决 agent 每次对话失忆的问题。\n创建 tasks.json（任务清单）、progress.md（进度记录）、init.sh（环境初始化脚本）三个文件。\n\n当用户说\"建立任务管理\"、\"让 agent 记住进度\"、\"创建 tasks.json\"、\"跨 session 保持状态\"、\n\"agent 每次都不记得上次做了什么\"、\"建立 progress 文件\"、\"初始化状态管理\"时，立即使用此 skill。\n\n前置条件：harness-step1 和 harness-step2 已完成（项目有 AGENTS.md 和 docs/ 知识库）。"},"skills_sh_url":"https://skills.sh/simbajigege/book2skills/harness-step3-session-management"},"updatedAt":"2026-05-01T12:56:54.094Z"}}