--- name: workflows:work description: Execute work plans efficiently while maintaining quality and finishing features argument-hint: "[plan file, specification, or todo file path]" --- # Work Plan Execution Command Execute a work plan efficiently while maintaining quality and finishing features. ## Introduction This command takes a work document (plan, specification, or todo file) and executes it systematically. The focus is on **shipping complete features** by understanding requirements quickly, following existing patterns, and maintaining quality throughout. ## Input Document #$ARGUMENTS ## Execution Workflow ### Phase 1: Quick Start 1. **Read Plan and Clarify** - Read the work document completely - Review any references or links provided in the plan - If anything is unclear or ambiguous, ask clarifying questions now - Get user approval to proceed - **Do not skip this** - better to ask questions now than build the wrong thing 2. **Setup Environment** First, check the current branch: ```bash current_branch=$(git branch --show-current) default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@') # Fallback if remote HEAD isn't set if [ -z "$default_branch" ]; then default_branch=$(git rev-parse --verify origin/main >/dev/null 2>&1 && echo "main" || echo "master") fi ``` **If already on a feature branch** (not the default branch): - Ask: "Continue working on `[current_branch]`, or create a new branch?" - If continuing, proceed to step 3 - If creating new, follow Option A or B below **If on the default branch**, choose how to proceed: **Option A: Create a new branch** ```bash git pull origin [default_branch] git checkout -b feature-branch-name ``` Use a meaningful name based on the work (e.g., `feat/user-authentication`, `fix/email-validation`). **Option B: Use a worktree (recommended for parallel development)** ```bash skill: git-worktree # The skill will create a new branch from the default branch in an isolated worktree ``` **Option C: Continue on the default branch** - Requires explicit user confirmation - Only proceed after user explicitly says "yes, commit to [default_branch]" - Never commit directly to the default branch without explicit permission **Recommendation**: Use worktree if: - You want to work on multiple features simultaneously - You want to keep the default branch clean while experimenting - You plan to switch between branches frequently 3. **Create Todo List** - Use TodoWrite to break plan into actionable tasks - Include dependencies between tasks - Prioritize based on what needs to be done first - Include testing and quality check tasks - Keep tasks specific and completable ### Phase 2: Execute 1. **Task Execution Loop** For each task in priority order: ``` while (tasks remain): - Mark task as in_progress in TodoWrite - Read any referenced files from the plan - Look for similar patterns in codebase - Implement following existing conventions - Write tests for new functionality - Run tests after changes - Mark task as completed in TodoWrite - Mark off the corresponding checkbox in the plan file ([ ] → [x]) - Evaluate for incremental commit (see below) ``` **IMPORTANT**: Always update the original plan document by checking off completed items. Use the Edit tool to change `- [ ]` to `- [x]` for each task you finish. This keeps the plan as a living document showing progress and ensures no checkboxes are left unchecked. 2. **Incremental Commits** After completing each task, evaluate whether to create an incremental commit: | Commit when... | Don't commit when... | |----------------|---------------------| | Logical unit complete (model, service, component) | Small part of a larger unit | | Tests pass + meaningful progress | Tests failing | | About to switch contexts (backend → frontend) | Purely scaffolding with no behavior | | About to attempt risky/uncertain changes | Would need a "WIP" commit message | **Heuristic:** "Can I write a commit message that describes a complete, valuable change? If yes, commit. If the message would be 'WIP' or 'partial X', wait." **Commit workflow:** ```bash # 1. Verify tests pass (use project's test command) # Examples: bin/rails test, npm test, pytest, go test, etc. # 2. Stage only files related to this logical unit (not `git add .`) git add # 3. Commit with conventional message git commit -m "feat(scope): description of this unit" ``` **Handling merge conflicts:** If conflicts arise during rebasing or merging, resolve them immediately. Incremental commits make conflict resolution easier since each commit is small and focused. **Note:** Incremental commits use clean conventional messages without attribution footers. The final Phase 4 commit/PR includes the full attribution. 3. **Follow Existing Patterns** - The plan should reference similar code - read those files first - Match naming conventions exactly - Reuse existing components where possible - Follow project coding standards (see CLAUDE.md) - When in doubt, grep for similar implementations 4. **Test Continuously** - Run relevant tests after each significant change - Don't wait until the end to test - Fix failures immediately - Add new tests for new functionality 5. **Figma Design Sync** (if applicable) For UI work with Figma designs: - Implement components following design specs - Use figma-design-sync agent iteratively to compare - Fix visual differences identified - Repeat until implementation matches design 6. **Track Progress** - Keep TodoWrite updated as you complete tasks - Note any blockers or unexpected discoveries - Create new tasks if scope expands - Keep user informed of major milestones ### Phase 3: Quality Check 1. **Run Core Quality Checks** Always run before submitting: ```bash # Run full test suite (use project's test command) # Examples: bin/rails test, npm test, pytest, go test, etc. # Run linting (per CLAUDE.md) # Use linting-agent before pushing to origin ``` 2. **Consider Reviewer Agents** (Optional) Use for complex, risky, or large changes: - **code-simplicity-reviewer**: Check for unnecessary complexity - **kieran-rails-reviewer**: Verify Rails conventions (Rails projects) - **performance-oracle**: Check for performance issues - **security-sentinel**: Scan for security vulnerabilities - **cora-test-reviewer**: Review test quality (CORA projects) Run reviewers in parallel with Task tool: ``` Task(code-simplicity-reviewer): "Review changes for simplicity" Task(kieran-rails-reviewer): "Check Rails conventions" ``` Present findings to user and address critical issues. 3. **Final Validation** - All TodoWrite tasks marked completed - All tests pass - Linting passes - Code follows existing patterns - Figma designs match (if applicable) - No console errors or warnings ### Phase 4: Ship It 1. **Create Commit** ```bash git add . git status # Review what's being committed git diff --staged # Check the changes # Commit with conventional format git commit -m "$(cat <<'EOF' feat(scope): description of what and why Brief explanation if needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude EOF )" ``` 2. **Capture and Upload Screenshots for UI Changes** (REQUIRED for any UI work) For **any** design changes, new views, or UI modifications, you MUST capture and upload screenshots: **Step 1: Start dev server** (if not running) ```bash bin/dev # Run in background ``` **Step 2: Capture screenshots with agent-browser CLI** ```bash agent-browser open http://localhost:3000/[route] agent-browser snapshot -i agent-browser screenshot output.png ``` See the `agent-browser` skill for detailed usage. **Step 3: Upload using imgup skill** ```bash skill: imgup # Then upload each screenshot: imgup -h pixhost screenshot.png # pixhost works without API key # Alternative hosts: catbox, imagebin, beeimg ``` **What to capture:** - **New screens**: Screenshot of the new UI - **Modified screens**: Before AND after screenshots - **Design implementation**: Screenshot showing Figma design match **IMPORTANT**: Always include uploaded image URLs in PR description. This provides visual context for reviewers and documents the change. 3. **Create Pull Request** ```bash git push -u origin feature-branch-name gh pr create --title "Feature: [Description]" --body "$(cat <<'EOF' ## Summary - What was built - Why it was needed - Key decisions made ## Testing - Tests added/modified - Manual testing performed ## Before / After Screenshots | Before | After | |--------|-------| | ![before](URL) | ![after](URL) | ## Figma Design [Link if applicable] --- [![Compound Engineered](https://img.shields.io/badge/Compound-Engineered-6366f1)](https://github.com/kieranklaassen/compound-engineering-plugin) 🤖 Generated with [Claude Code](https://claude.com/claude-code) EOF )" ``` 4. **Notify User** - Summarize what was completed - Link to PR - Note any follow-up work needed - Suggest next steps if applicable --- ## Key Principles ### Start Fast, Execute Faster - Get clarification once at the start, then execute - Don't wait for perfect understanding - ask questions and move - The goal is to **finish the feature**, not create perfect process ### The Plan is Your Guide - Work documents should reference similar code and patterns - Load those references and follow them - Don't reinvent - match what exists ### Test As You Go - Run tests after each change, not at the end - Fix failures immediately - Continuous testing prevents big surprises ### Quality is Built In - Follow existing patterns - Write tests for new code - Run linting before pushing - Use reviewer agents for complex/risky changes only ### Ship Complete Features - Mark all tasks completed before moving on - Don't leave features 80% done - A finished feature that ships beats a perfect feature that doesn't ## Quality Checklist Before creating PR, verify: - [ ] All clarifying questions asked and answered - [ ] All TodoWrite tasks marked completed - [ ] Tests pass (run project's test command) - [ ] Linting passes (use linting-agent) - [ ] Code follows existing patterns - [ ] Figma designs match implementation (if applicable) - [ ] Before/after screenshots captured and uploaded (for UI changes) - [ ] Commit messages follow conventional format - [ ] PR description includes summary, testing notes, and screenshots - [ ] PR description includes Compound Engineered badge ## When to Use Reviewer Agents **Don't use by default.** Use reviewer agents only when: - Large refactor affecting many files (10+) - Security-sensitive changes (authentication, permissions, data access) - Performance-critical code paths - Complex algorithms or business logic - User explicitly requests thorough review For most features: tests + linting + following patterns is sufficient. ## Common Pitfalls to Avoid - **Analysis paralysis** - Don't overthink, read the plan and execute - **Skipping clarifying questions** - Ask now, not after building wrong thing - **Ignoring plan references** - The plan has links for a reason - **Testing at the end** - Test continuously or suffer later - **Forgetting TodoWrite** - Track progress or lose track of what's done - **80% done syndrome** - Finish the feature, don't move on early - **Over-reviewing simple changes** - Save reviewer agents for complex work