| name | work-on-milestone |
| description | Use this skill when asked to work on a milestone. You are not required to complete the milestone when this skill is invoked. |
Working Through a Milestone
Before Starting
- Review the last commit:
git show HEAD - Run tests to see current state:
mise test - Read relevant test files in
testcases/to understand expected behavior - CRITICAL: Assess host interface sufficiency
- Review
src/tclc.h(TclHostOps) to understand available primitives - Determine if the feature can be implemented using existing ops
- If TclHostOps needs to be extended: STOP IMMEDIATELY and inform the user
- Do not proceed until you have received explicit approval and direction
- Review
Implementation Loop
For each failing test:
- Identify what's missing - parse test output to understand the gap
- C interpreter changes (in
src/):- Create new
builtin_*.cfile if adding a command - Add declarations to
internal.h - Register command in
interp.cbuiltins table - Implement using
TclHostOpsprimitives only
- Create new
- Go host changes (in
interp/):- Implement callbacks in
callbacks.go - Add state to
Interpstruct intclc.goif needed - Follow shimmering rules in
interp/CLAUDE.md
- Implement callbacks in
- Run tests:
mise test - Iterate until tests pass
Key Patterns
- List operations mutate: Use
ops->list.from()to copy before iterating - String lengths: Count carefully, don't include null terminator
- Shimmering: Use
Get*()methods in Go for type conversion, never access Object fields directly - Error messages: Match TCL's exact format (check test expectations)
After All Tests Pass
- Run tests multiple times to verify stability
- Commit with detailed message explaining:
- What was implemented
- Key implementation details
- Important learnings for future work
- Use the format from CLAUDE.md (heredoc, co-author line)
File Checklist for New Commands
-
src/builtin_<cmd>.c- implementation -
src/internal.h- declaration -
src/interp.c- registration -
interp/callbacks.go- host callbacks (if new ops needed) -
interp/tclc.go- state/structs (if needed)