Help us improve
Share bugs, ideas, or general feedback.
From line
Selects and executes highest-priority ready task (or specified ID) with completion guardrails, claims via bd tool, and shows next step.
npx claudepluginhub smileynet/line-cook --plugin lineHow this command is triggered — by the user, by Claude, or both
Slash command
/line:cookThis command is limited to the following tools:
The summary Claude sees in its command listing — used to decide when to auto-load this command
## Summary **Execute a task with guardrails ensuring completion.** Part of prep → cook → serve → tidy. **Arguments:** `$ARGUMENTS` (optional) - Specific task ID to execute **STOP after completing.** Show NEXT STEP and wait for user. --- ## Process ### Step 1: Select Task **If the user provided a task ID:** - Use that task ID directly **Otherwise:** - Call kitchen-equipment.py without a task ID to fetch ready task list - Select the highest priority task (lowest P number) - Call kitchen-equipment.py again with the selected task ID **Gather task context (epic check, prior context, too...
/just-do-itExecutes all remaining Groundwork tasks in sequence until completion, stopping on first failure. Resolves monorepo project context and shows model recommendations.
Share bugs, ideas, or general feedback.
Execute a task with guardrails ensuring completion. Part of prep → cook → serve → tidy.
Arguments: $ARGUMENTS (optional) - Specific task ID to execute
STOP after completing. Show NEXT STEP and wait for user.
If the user provided a task ID:
Otherwise:
Gather task context (epic check, prior context, tools):
Locate kitchen-equipment.py:
Plugin installation (most common):
Glob(pattern="**/scripts/kitchen-equipment.py", path="~/.claude/plugins")
Usually: ~/.claude/plugins/cache/line-cook-marketplace/line/<version>/scripts/kitchen-equipment.py
Current project (for development):
Glob(pattern="**/scripts/kitchen-equipment.py")
# Without <id>: returns ready_list for task selection
# With <id>: returns full task context (epic check, prior context, tools)
CONTEXT=$(python3 <path-to-kitchen-equipment.py> <id> --json 2>/dev/null)
echo "$CONTEXT"
The JSON output includes: task, is_epic, epic_children, prior_context, tools, and planning_context.
If is_epic is true, the epic itself has no work to execute. Instead:
Use epic_children from the kitchen-equipment.py output (already fetched)
Find the first ready (unblocked, open) child and select that instead
Output epic context:
EPIC SELECTED: <epic-id> - <epic-title>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Epics contain no direct work. Selecting first ready child:
Children (<open>/<total>):
○ <id>: <title> [P<n>] ← selected
○ <id>: <title> [P<n>] (blocked by above)
✓ <id>: <title> (closed)
Proceeding with: <selected-task-id>
Continue with the selected child task
If no actionable tasks available (e.g., only P4 parking lot items or research tasks):
Output the idle signal and stop:
╔══════════════════════════════════════════════════════════════╗
║ KITCHEN IDLE ║
╚══════════════════════════════════════════════════════════════╝
No actionable tasks available.
Available: <count> items (all P4 parking lot or research)
Signal: KITCHEN_IDLE
<phase_complete>DONE</phase_complete>
Once a regular task is selected, claim it:
# Claim the task and display details
bd show <id>
bd update <id> --status=in_progress
bd comments add <id> "PHASE: COOK
Status: started"
The kitchen-equipment.py output from Step 1 already includes prior_context with:
prior_context.serve_comments: extracted PHASE: SERVE feedback (capped at 2000 chars)prior_context.serve_comments_truncated: whether comments were truncatedprior_context.retry_context: structured retry data from .line-cook/retry-context.jsonprior_context.has_rework: true if any rework signals foundUse this data directly — no additional subprocess calls needed.
If review findings exist (NEEDS_CHANGES):
Output format:
REWORK MODE: <id> - <title>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Previous review found issues to address:
- [major] <issue 1>
- [minor] <issue 2>
Addressing review findings first.
If retry-context.json exists: This file contains structured feedback from the previous serve review, including:
verdict: The serve verdict (NEEDS_CHANGES)summary: Brief assessment of the changesissues: Array of issues with severity, location, problem, and suggestionattempt: Which retry attempt this ishistory: Rolling window of prior attempts (up to 5), each with verdict, summary, and issuesPrioritize issues from the context file over bead comments, as they're more structured and reliable.
Pattern detection from history (CRITICAL for retries):
Output format:
╔══════════════════════════════════════════════════════════════╗
║ RETRY MODE - Attempt <N> ║
╚══════════════════════════════════════════════════════════════╝
Task: <id> - <title>
Previous verdict: NEEDS_CHANGES
Attempt history:
#1: <verdict> — <summary> (<issue count> issues)
#2: <verdict> — <summary> (<issue count> issues)
Persistent issues (same problem in 2+ attempts → change strategy):
[critical] <location>: <problem>
→ Previous fix didn't work, trying: <new approach>
Issues to address:
[critical] <location>: <problem>
→ <suggestion>
[major] <location>: <problem>
→ <suggestion>
[minor] <location>: <problem>
Summary: <assessment from serve>
Addressing issues in priority order (critical → major → minor).
Add issues to TodoWrite in severity order: critical → major → minor.
If no prior context exists: Continue normally with Step 2.
The task details (the recipe) are already in the kitchen-equipment.py output from Step 1.
Review task.description, acceptance criteria, and any dependencies.
Load relevant context files and documentation (the ingredients):
planning_context from the kitchen-equipment.py output (already fetched in Step 1)README.md (always) and architecture.md (for patterns/constraints)Use Read, Glob, and Grep tools to gather necessary context before starting implementation.
Break the task into steps using TodoWrite:
For complex tasks, use explore-plan-code workflow or ask clarifying questions.
Process TodoWrite items systematically with TDD guardrails:
in_progress when startingcompleted immediately when donein_progress at a timeFor code changes, follow TDD cycle:
RED: Write failing test
<test command> # e.g., pytest, go test, npm test
# Should FAIL
Automatic test quality review (CRITICAL):
Use Task tool to invoke taster subagent:
Task(description="Review test code for quality", prompt="Review test code for <package> for quality, checking:
- Tests are isolated, fast, repeatable
- Clear test names and error messages
- Proper structure (Setup-Execute-Validate-Cleanup)
- No anti-patterns
Report any critical issues that must be addressed before proceeding.", subagent_type="taster")
Address critical issues before GREEN phase. The taster agent will:
GREEN: Implement minimal code
<implementation>
<test command>
# Should PASS
REFACTOR: Clean up code
<refactoring>
<test command>
# All tests should PASS
Output format during execution:
COOKING: <id> - <title>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[1/N] <todo item> ... ✓
[2/N] <todo item> ... ✓
[3/N] <todo item> ... in progress
Progress: 2/N complete
TDD Phase: RED/GREEN/REFACTOR
Collecting findings: As you execute, note (but do NOT file yet) using structured format:
These will be triaged in tidy phase as [FIX], [DEFER], or [RETRO] (see tidy.md Finding Filing Strategy).
Before marking the task done, verify ALL guardrails pass:
Kitchen equipment checklist:
<test command> (e.g., go test ./..., pytest, npm test)<build command> (e.g., go build ./..., npm run build)<lint command> (if applicable, e.g., npm run lint)If any guardrail fails:
in_progressOnly after all guardrails pass:
bd comments add <id> "PHASE: COOK
Status: completed
SEMANTIC CONTEXT (for tidy summary):
Intent: <why this change was made, from task description>
Before: <previous state - what existed/didn't work>
After: <new state - what's now possible/fixed>
Files: <count> changed
Findings:
- <title> | <file:line> | <severity> | <impact>
- <title> | <file:line> | <severity> | <impact>"
Note: The bead remains in_progress until tidy phase closes it after creating the git commit. This ensures beads are only closed when corresponding commits exist.
Completion output format:
╔══════════════════════════════════════════════════════════════╗
║ KITCHEN COMPLETE ║
╚══════════════════════════════════════════════════════════════╝
Task: <id> - <title>
Parent: <parent-id> - <parent-title> (or "none")
Tests: ✓ All passing
Build: ✓ Successful
Signal: KITCHEN_COMPLETE
INTENT:
<1-2 sentences from task description>
Goal: <deliverable or acceptance criteria>
BEFORE → AFTER:
<previous state> → <new state>
<what couldn't be done> → <what can be done now>
Files changed:
M src/foo.ts
A src/bar.ts
Verification:
[✓] All todos complete
[✓] Code compiles
[✓] Tests pass
Findings (to triage in tidy as [FIX]/[DEFER]/[RETRO]):
- "<title>" | <file:line> | <severity> — <impact>
- "<title>" | <file:line> | <severity> — <impact>
NEXT STEP: /line:serve
<phase_complete>DONE</phase_complete>
Phase completion signal: The <phase_complete>DONE</phase_complete> tag signals to the line-loop orchestrator that this phase has completed its work and can be terminated early. This avoids waiting for natural exit or timeout. Always emit this signal at the very end of successful completion output.
/line:tidy, not filed during cookIf execution is blocked:
⚠️ KITCHEN BLOCKED: <description>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Reason: <why it failed>
Progress: <what was completed>
Options:
1. <recovery option>
2. <alternative>
Task remains in_progress. Run /line:tidy to save partial progress.
/line:cook # Pick highest priority ready task
/line:cook lc-042 # Execute specific task