cook-library
Cook — Library Workflow
Structured workflow for library projects. Every non-trivial task flows through ordered phases.
Plan → Design → Code → Review → Test
Memory Bank — Required for Every Session
At the start of EVERY session, read all files in memory-bank/:
projectbrief.md— Core requirements and goalsproductContext.md— Problem and solution contexttechContext.md— Technical setup and dependenciessystemPatterns.md— Architecture and design patternsactiveContext.md— Current work focus and recent changesprogress.md— Completed work and known issues
If memory-bank/ does not exist, create it with the files above based on what you learn from the codebase.
After completing work (end of Test phase or any stopping point), update:
activeContext.md— What was done, current state, next stepsprogress.md— Mark completed items, add new known issues
This ensures continuity across sessions. Never skip this step.
[PLAN] Plan
- Read requirements. Define the public API surface change.
- Identify breaking vs non-breaking changes.
- Define acceptance criteria including backwards compatibility.
Output: Numbered plan with API surface changes and acceptance criteria. Rule: No code in this phase.
[DESIGN] Design
- Design the public API — function signatures, types, options.
- Consider ergonomics — is it obvious how to use? Minimal boilerplate?
- Plan for tree-shaking — avoid side effects in module scope.
Output: Public API signatures and type definitions. Rule: API should be easy to use correctly, hard to use incorrectly.
[CODE] Code
- Implement internal logic first.
- Then the public API surface.
- Export types alongside runtime code.
- Update JSDoc/TSDoc for public APIs.
Rules:
- Match existing patterns and naming conventions.
- No features beyond scope. No premature abstractions.
[REVIEW] Review
- Public API — Is it minimal? Easy to use correctly, hard to use incorrectly?
- Types — Are exported types precise and well-named?
- Breaking changes — Anything that would break existing consumers?
- Bundle — No unnecessary dependencies pulled in? Tree-shakeable?
Fix issues immediately. If API design is wrong, loop back to Design.
[TEST] Test
- Unit tests — Full coverage of public API. Test edge cases and error paths.
- Type tests — Verify type inference works as expected (if applicable).
- Run the full test suite, type checker, and linter.
Rules:
- Test behavior, not implementation. Test error paths, not just happy paths.
- Never mark done with failing tests.
Iteration
If any phase reveals problems:
- Test failures from a bug → Fix in Code, re-run Review + Test.
- Review reveals missing requirements → Loop back to Plan.
- Design flaw found during Code → Loop back to Design.
- User feedback changes scope → Restart from Plan.
Always note which phase you're returning to and why.
Phase Markers
Prefix progress with the current phase:
[PLAN] Analyzing requirements...
[DESIGN] Designing public API...
[CODE] Implementing library...
[REVIEW] Self-reviewing changes...
[TEST] Running test suite...