[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71JBWT68YNFQG32YH48HKP5":3,"skill-same:01M71JBWT68YNFQG32YH48HKP5":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M71JBWT68YNFQG32YH48HKP5","session-state",null,"Track implementation decisions and progress in specs\u002Fstate.yaml to prevent context rot. Use at the start of a session to load context, and whenever a significant decision is made or a milestone is reached.","danielvm-git\u002Fbigpowers","danielvm-git","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1020864?v=4","01M71H1N1CTQ529S0KN7KETVG6","Daniel V M","01M71H1N218Y3S8WHCJ58NPRSW",289,"MIT","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fsession-state\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"session","state","session state","decision","milestone","track","haiku","progress","at","start","context","use","load","decisions","yaml","implementation","2026-11-10 10:12:30",false,"---\nname: session-state\nmodel: haiku\ndescription: \"Track implementation decisions and progress in specs\u002Fstate.yaml to prevent context rot. Use at the start of a session to load context, and whenever a significant decision is made or a milestone is reached.\"\n---\n\n\u003C!-- story: e45s23 -->\n\n# Session State\n> **HARD GATE** — **HARD GATE** — Session state must be synchronized with git state. If state.yaml conflicts with the working tree, halt and ask for clarification. Do NOT assume state is correct.\n\n\nTrack the current state of implementation, including decisions made, pending tasks, and open questions, to ensure continuity across session boundaries and prevent \"context rot.\"\n\nSession-state implements the **isolate** strategy from the context-engineering framework (docs\u002Freferences\u002Fcontext-engineering.md): each agent gets exactly the context it needs — no more — by recording decisions so the next agent can cold-start without replaying history. The four strategies (write, select, compress, isolate) work together: session-state handles isolation, terse-mode handles compression, survey-context handles selection, and CONVENTIONS.md ensures token-efficient writing.\n\n## Goal\n\nMaintain a single source of truth for the *current* session in `specs\u002Fstate.yaml`. This complements long-term docs in `specs\u002Ftech-architecture\u002F` and delivery detail in `specs\u002Fepics\u002F` + `specs\u002Frelease-plan.yaml`.\n\nLegacy markdown (`specs\u002Farchive\u002FSTATE.md`, `RELEASE-PLAN.md`) is **not** SoT when YAML exists — use `specs\u002Fstate.yaml` only.\n\nWhen a story modifies existing behavior, patch only between matching marker pairs in `CLAUDE.md` \u002F `AGENTS.md` `learned-preferences` fence — see e45s21.\n\n## Handoff block (cold start)\n\nWhen ending a session or before a context-heavy spawn, update `handoff` in `state.yaml`:\n\n```yaml\nhandoff:\n  last_step_completed: \"e02s01 verify-work passed\"\n  open_decisions:\n    - \"Use folder mode for e07 (>5 stories)\"\n  required_reading:\n    - CONVENTIONS.md\n    - specs\u002Fepics\u002Fe02-verification\u002Fepic.yaml\n  next_skill: develop-tdd\n```\n\n## Strategic compaction\n\n| Trigger | Action |\n|---------|--------|\n| Phase transition (Plan → Build → Verify) | Compact handoff; archive verbose decisions to ADR |\n| Context > 70% estimated | Run terse-mode for status only; move detail to specs\u002F |\n| Before `dispatch-agents` wave | `state.yaml` only channel between spawns |\n\n## Workflow\n\n### 1. Initialize (Session Start)\n\nIf `specs\u002Fstate.yaml` does not exist, or if starting a new major phase:\n\n- [ ] Read `specs\u002Frelease-plan.yaml` and `specs\u002Fproduct\u002FSCOPE_LATEST.yaml`.\n- [ ] Get git metadata: `git branch --show-current` and `git rev-parse --short HEAD`.\n- [ ] Create `specs\u002Fstate.yaml` with active flow, git, handoff, and epic cycle if in build.\n\n### 2. Load (Context Refresh)\n\nWhen starting a new session or after a significant context flush:\n\n- [ ] Read `specs\u002Fstate.yaml` to understand where the previous agent left off.\n- [ ] Read `specs\u002Fexecution-status.yaml` for story progress (do not infer from release-plan).\n- [ ] Verify git matches `state.yaml` `git.branch` \u002F `git.hash`.\n\n### 3. Update (Decision Point\u002FMilestone)\n\nWhenever a significant decision is made or a milestone is reached:\n\n- [ ] Patch via `bash scripts\u002Fbp-yaml-set.sh specs\u002Fstate.yaml git.hash \u003Chash>` (or edit directly).\n- [ ] Patch `handoff` and `learned_preferences` \u002F `workspace_facts` in `CLAUDE.md` fenced block when durable user preferences or repo facts crystallize (e45s23).\n- [ ] Update `handoff.open_decisions` with rationale.\n- [ ] Update `epic_cycle` when advancing `ship-epic` steps.\n- [ ] Record open questions under `handoff.open_decisions` or an ADR.\n\n→ verify: `bash scripts\u002Fvalidate-specs-yaml.sh`\n\n## Universal checkpoint pattern\n\nEvery multi-step flow (>3 steps) in bigpowers uses a cycle counter in `state.yaml`:\n\n| Flow | Cycle key | Step field | Phases\u002FSteps |\n|------|-----------|------------|-------------|\n| build-epic | `epic_cycle` | `current_step` | 8 (survey → release) |\n| fix-bug | `bug_cycle` | `current_step` | 5 (investigate → release) |\n| orchestrate-project | `project_cycle` | `current_phase` | 6 (discover → release) |\n\n**Checkpoint:** After each step\u002Fphase completes, increment the counter in `state.yaml` and update `handoff.next_skill`.\n\n**Resume:** On session start, read the current step\u002Fphase from the cycle key — continue from there, not from step 1.\n\n**Completed steps:** Track completed steps in `completed_steps` (comma-separated string) for audit trail.\n\n## Strategic compaction\n\nPrint the current session state: `cat specs\u002Fstate.yaml`, then display `active_flow` and `handoff.next_skill` for quick reference.\n\n### reset-state (absorbed)\n\nClear ephemeral session state. Set `active_epic_id`, `active_story_id`, and `epic_cycle.current_step` to `null` in `specs\u002Fstate.yaml`. Use when ending a phase or starting a new project context.\n\n### compact-state (absorbed)\n\nArchive verbose decisions before a context transition. Move all entries from `handoff.open_decisions` to their appropriate location:\n\n- **System-wide decisions** → `specs\u002Fadr\u002FNNNN-slug.md` (global Architectural Decision Records)\n- **Epic-scoped decisions** → `specs\u002Fepics\u002F\u003Cactive_epic_id>-\u003Cslug>\u002Fadr\u002FNNNN-slug.md` (epic-local ADRs, archived with epic)\n\nAfter archiving, reset `handoff.open_decisions` to an empty list.\n\n## File Format: specs\u002Fstate.yaml\n\n```yaml\nactive_flow: build_epic       # planning | build_epic | fix_bug\nactive_epic_id: e02\nactive_story_id: e02s01       # required when epic mode: folder\nactive_bug_id: null           # BUG-2026-06-01T143022 when fix_bug\nrelease:\n  target_version: null         # NOT tracked manually — semantic-release decides at merge\n  last_tag: v2.28.0            # mirror of `gh release view`, reference only\n  last_publish: null\nepic_cycle:\n  current_step: develop-tdd\n  next_skill: develop-tdd\n  completed_steps: [kickoff-branch]\nbug_cycle:\n  current_step: null\n  completed_steps: []\ngit:\n  branch: feat\u002Fe02-verify\n  hash: abc1234\nhandoff:\n  last_step_completed: null\n  open_decisions: []\n  next_skill: survey-context\n```\n\n## Anti-Patterns\n\n- **Duplicate Plan**: Don't copy `release-plan.yaml` or epic shards into `state.yaml`.\n- **Stale State**: Forgetting to update `state.yaml` after a major refactor or decision.\n- **Status in release-plan**: Story\u002Fepic status lives only in `execution-status.yaml`.\n\n\n\u003C!-- story: e03s03 -->\n\u003C!-- story: e04s01 -->\n","\u003C!-- story: e45s23 -->\n\n# Session State\n> **HARD GATE** — **HARD GATE** — Session state must be synchronized with git state. If state.yaml conflicts with the working tree, halt and ask for clarification. Do NOT assume state is correct.\n\n\nTrack the current state of implementation, including decisions made, pending tasks, and open questions, to ensure continuity across session boundaries and prevent \"context rot.\"\n\nSession-state implements the **isolate** strategy from the context-engineering framework (docs\u002Freferences\u002Fcontext-engineering.md): each agent gets exactly the context it needs — no more — by recording decisions so the next agent can cold-start without replaying history. The four strategies (write, select, compress, isolate) work together: session-state handles isolation, terse-mode handles compression, survey-context handles selection, and CONVENTIONS.md ensures token-efficient writing.\n\n## Goal\n\nMaintain a single source of truth for the *current* session in `specs\u002Fstate.yaml`. This complements long-term docs in `specs\u002Ftech-architecture\u002F` and delivery detail in `specs\u002Fepics\u002F` + `specs\u002Frelease-plan.yaml`.\n\nLegacy markdown (`specs\u002Farchive\u002FSTATE.md`, `RELEASE-PLAN.md`) is **not** SoT when YAML exists — use `specs\u002Fstate.yaml` only.\n\nWhen a story modifies existing behavior, patch only between matching marker pairs in `CLAUDE.md` \u002F `AGENTS.md` `learned-preferences` fence — see e45s21.\n\n## Handoff block (cold start)\n\nWhen ending a session or before a context-heavy spawn, update `handoff` in `state.yaml`:\n\n```yaml\nhandoff:\n  last_step_completed: \"e02s01 verify-work passed\"\n  open_decisions:\n    - \"Use folder mode for e07 (>5 stories)\"\n  required_reading:\n    - CONVENTIONS.md\n    - specs\u002Fepics\u002Fe02-verification\u002Fepic.yaml\n  next_skill: develop-tdd\n```\n\n## Strategic compaction\n\n| Trigger | Action |\n|---------|--------|\n| Phase transition (Plan → Build → Verify) | Compact handoff; archive verbose decisions to ADR |\n| Context > 70% estimated | Run terse-mode for status only; move detail to specs\u002F |\n| Before `dispatch-agents` wave | `state.yaml` only channel between spawns |\n\n## Workflow\n\n### 1. Initialize (Session Start)\n\nIf `specs\u002Fstate.yaml` does not exist, or if starting a new major phase:\n\n- [ ] Read `specs\u002Frelease-plan.yaml` and `specs\u002Fproduct\u002FSCOPE_LATEST.yaml`.\n- [ ] Get git metadata: `git branch --show-current` and `git rev-parse --short HEAD`.\n- [ ] Create `specs\u002Fstate.yaml` with active flow, git, handoff, and epic cycle if in build.\n\n### 2. Load (Context Refresh)\n\nWhen starting a new session or after a significant context flush:\n\n- [ ] Read `specs\u002Fstate.yaml` to understand where the previous agent left off.\n- [ ] Read `specs\u002Fexecution-status.yaml` for story progress (do not infer from release-plan).\n- [ ] Verify git matches `state.yaml` `git.branch` \u002F `git.hash`.\n\n### 3. Update (Decision Point\u002FMilestone)\n\nWhenever a significant decision is made or a milestone is reached:\n\n- [ ] Patch via `bash scripts\u002Fbp-yaml-set.sh specs\u002Fstate.yaml git.hash \u003Chash>` (or edit directly).\n- [ ] Patch `handoff` and `learned_preferences` \u002F `workspace_facts` in `CLAUDE.md` fenced block when durable user preferences or repo facts crystallize (e45s23).\n- [ ] Update `handoff.open_decisions` with rationale.\n- [ ] Update `epic_cycle` when advancing `ship-epic` steps.\n- [ ] Record open questions under `handoff.open_decisions` or an ADR.\n\n→ verify: `bash scripts\u002Fvalidate-specs-yaml.sh`\n\n## Universal checkpoint pattern\n\nEvery multi-step flow (>3 steps) in bigpowers uses a cycle counter in `state.yaml`:\n\n| Flow | Cycle key | Step field | Phases\u002FSteps |\n|------|-----------|------------|-------------|\n| build-epic | `epic_cycle` | `current_step` | 8 (survey → release) |\n| fix-bug | `bug_cycle` | `current_step` | 5 (investigate → release) |\n| orchestrate-project | `project_cycle` | `current_phase` | 6 (discover → release) |\n\n**Checkpoint:** After each step\u002Fphase completes, increment the counter in `state.yaml` and update `handoff.next_skill`.\n\n**Resume:** On session start, read the current step\u002Fphase from the cycle key — continue from there, not from step 1.\n\n**Completed steps:** Track completed steps in `completed_steps` (comma-separated string) for audit trail.\n\n## Strategic compaction\n\nPrint the current session state: `cat specs\u002Fstate.yaml`, then display `active_flow` and `handoff.next_skill` for quick reference.\n\n### reset-state (absorbed)\n\nClear ephemeral session state. Set `active_epic_id`, `active_story_id`, and `epic_cycle.current_step` to `null` in `specs\u002Fstate.yaml`. Use when ending a phase or starting a new project context.\n\n### compact-state (absorbed)\n\nArchive verbose decisions before a context transition. Move all entries from `handoff.open_decisions` to their appropriate location:\n\n- **System-wide decisions** → `specs\u002Fadr\u002FNNNN-slug.md` (global Architectural Decision Records)\n- **Epic-scoped decisions** → `specs\u002Fepics\u002F\u003Cactive_epic_id>-\u003Cslug>\u002Fadr\u002FNNNN-slug.md` (epic-local ADRs, archived with epic)\n\nAfter archiving, reset `handoff.open_decisions` to an empty list.\n\n## File Format: specs\u002Fstate.yaml\n\n```yaml\nactive_flow: build_epic       # planning | build_epic | fix_bug\nactive_epic_id: e02\nactive_story_id: e02s01       # required when epic mode: folder\nactive_bug_id: null           # BUG-2026-06-01T143022 when fix_bug\nrelease:\n  target_version: null         # NOT tracked manually — semantic-release decides at merge\n  last_tag: v2.28.0            # mirror of `gh release view`, reference only\n  last_publish: null\nepic_cycle:\n  current_step: develop-tdd\n  next_skill: develop-tdd\n  completed_steps: [kickoff-branch]\nbug_cycle:\n  current_step: null\n  completed_steps: []\ngit:\n  branch: feat\u002Fe02-verify\n  hash: abc1234\nhandoff:\n  last_step_completed: null\n  open_decisions: []\n  next_skill: survey-context\n```\n\n## Anti-Patterns\n\n- **Duplicate Plan**: Don't copy `release-plan.yaml` or epic shards into `state.yaml`.\n- **Stale State**: Forgetting to update `state.yaml` after a major refactor or decision.\n- **Status in release-plan**: Story\u002Fepic status lives only in `execution-status.yaml`.\n\n\n\u003C!-- story: e03s03 -->\n\u003C!-- story: e04s01 -->\n",{"name":5,"model":25,"description":7},"main","72f5e4c8b43f60cf86b37078ad8cd7e22daf67aa",".opencode\u002Fskills\u002Fsession-state",24,"https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers","https:\u002F\u002Fdanielvm-git.github.io\u002Fbigpowers\u002F","https:\u002F\u002Fgithub.com\u002Fdanielvm-git","danielvm.net","2026-11-10 01:18:54",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add danielvm-git\u002Fbigpowers --skill session-state",{"tool":55,"command":56},"bunx","bunx skills add danielvm-git\u002Fbigpowers --skill session-state",{"tool":58,"command":59},"pnpm","pnpm dlx skills add danielvm-git\u002Fbigpowers --skill session-state","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fsession-state\u002FSKILL.md",true,[],[64,85,92,121,143,164],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":75,"publishedAt":35},"01M71KBG9F8X644MJB16H4V8M7","skill-verify-fail-open-fixture","Negative-path fixture for run-skill-verify.sh — must never PASS.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fskill-verify-fail-open\u002FSKILL.md",[70],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[76,77,78,79,80,81,82,83,84],"fixture","open","verify","skill verify fail open fixture","skill verify","path","run","for","never",{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":35},"01M71KBE3BKEMKNE0C5DGVDWZH","negative-path","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fspecs\u002Fverifications\u002Ffixtures\u002Fnegative-path\u002FSKILL.md",[],[91,81],"negative path",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":101,"publishedAt":35},"01M71KBBGF7Y4EB4AMHBZ8CJFC","write-document","Write, organize, and sync high-integrity technical documents using the BMAD methodology. Ensures every document is Bold, Minimal, Actionable, and Durable. Use when creating architectural docs, technical guides, or organizing the specs\u002F directory.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-document\u002FSKILL.md",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000002","文档处理",[102,103,104,105,106,107,108,109,110,111,30,112,113,114,115,116,117,118,119,120],"write","write document","document","documents","actionable","technical","methodology","high","bmad","standard","when","minimal","bold","sonnet","integrity","organize","sync","directory","guides",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":35},"01M71KB8TM089JJD5AY5KAFSDM","wire-observability","Add structured JSON logging, observability commands, and idempotent setup scripts to a project. Use when a project needs production-readiness instrumentation, when user wants structured logging, or as a production-readiness gate at any phase of development.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwire-observability\u002FSKILL.md",[],[128,129,130,111,131,30,132,133,134,135,115,136,27,137,138,139,140,112,141,142],"observability","wire observability","readiness","commands","development","as","logging","add","instrumentation","structured logging","production-readiness","idempotent","phase","project","scripts",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":35},"01M71KB6CNRANP449DQA3NJZ96","wire-ci","CI pipeline setup with bundled, forge-neutral templates and local validation. Detects the forge from the git remote, generates workflows for supported forges, and skips honestly for the rest. The CI equivalent of wire-observability.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fwire-ci\u002FSKILL.md",[],[150,151,152,153,154,155,156,157,158,159,160,111,161,83,128,115,162,163],"wire ci","ci","remote","local","pipeline","forge","validation","setup","templates","REST","with","ci pipeline setup","git","workflows",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":181,"publishedAt":35},"01M71KB2ZV98P03X88QR8MT9F1","visual-dashboard","Start a browser-based dashboard that visualizes architecture, implementation plans, and project status. Persists artifacts in .bigpowers\u002Fdashboard\u002F. Reads specs\u002Fstate.yaml, release-plan.yaml, epics, and planning-status via HTTP API or opencode panel.","https:\u002F\u002Fgithub.com\u002Fdanielvm-git\u002Fbigpowers\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-dashboard\u002FSKILL.md",[170,173,178],{"categoryNo":171,"categoryName":172,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":174,"categoryName":175,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":179,"categoryName":180,"taxonomyType":176,"taxonomyTypeDesc":177},"01JBSEEDCAT000000000000033","数据分析师",[182,183,184,185,186,187,188,189,190,115,28,191,192,193,194,195,196,141,197,198],"dashboard","visual","visual dashboard","status","artifacts","http","plans","planning","panel","release","opencode","plan","browser","api","architecture","project status","http api"]