.agents/skills/exec-impl-plan-ref/SKILL.md
Use when executing tasks from implementation plans. Provides task selection, parallel execution, progress tracking, and review cycle guidelines.
npx skillsauth add tacogips/claude-code-agent exec-impl-plan-refInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides guidelines for executing implementation plans created by the impl-plan agent.
Apply this skill when:
impl-plans/This skill bridges implementation plans (what to build) and actual code implementation. It provides:
NEVER read all plan files at once. This causes context overflow (>200K tokens).
Use impl-plans/PROGRESS.json instead, which contains:
Workflow:
PROGRESS.json (~2K tokens) to find executable tasksimpl-exec-specific updates the plan file immediatelyPROGRESS.json after impl-exec-specific completesClear ownership to avoid conflicts:
impl-exec-specific agent: Updates plan file (task status, progress log)Lock file path: impl-plans/.progress.lock
Before updating PROGRESS.json:
# Acquire lock (retry if busy)
while [ -f impl-plans/.progress.lock ]; do sleep 1; done
echo "<plan-name>:<TASK-ID>" > impl-plans/.progress.lock
After updating PROGRESS.json:
# Release lock
rm -f impl-plans/.progress.lock
This prevents race conditions when multiple conversations update concurrently.
{
"lastUpdated": "2026-01-06T16:00:00Z",
"phases": {
"1": { "status": "COMPLETED" },
"2": { "status": "READY" },
"3": { "status": "BLOCKED" },
"4": { "status": "BLOCKED" }
},
"plans": {
"session-groups-types": {
"phase": 2,
"status": "Ready",
"tasks": {
"TASK-001": { "status": "Not Started", "parallelizable": true, "deps": [] },
"TASK-002": { "status": "Not Started", "parallelizable": true, "deps": [] },
"TASK-007": { "status": "Not Started", "parallelizable": false, "deps": ["TASK-001"] }
}
}
}
}
"TASK-001" (task in same plan)"session-groups-types:TASK-001" (task in different plan)Two execution modes are available:
impl-exec-auto)Architecture: Analysis-only subagent + Main conversation orchestration via impl-exec-specific.
Claude Code does not support nested subagent spawning (subagents cannot use Task tool). Therefore:
impl-exec-auto agent: Analyzes plans and returns executable task listimpl-exec-specific to execute tasks (NOT direct ts-coding spawning)Cross-Plan Mode (no argument - recommended):
/impl-exec-auto
Analyzes ALL active plans and returns executable tasks across plans.
Single-Plan Mode (with argument):
/impl-exec-auto foundation-and-core
Focuses on one specific plan only.
Use this mode when:
The auto mode workflow:
Step 1: impl-exec-auto agent (analysis only):
impl-plans/PROGRESS.jsonStep 2: Main conversation (orchestration via impl-exec-specific):
impl-exec-specific with task IDs
b. impl-exec-specific handles: ts-coding, check-and-test, ts-review cycle, plan updatesimpl-exec-specific completes:
a. Updates PROGRESS.json status (with lock)
b. Reports completion and newly unblocked tasksWhy impl-exec-specific?
impl-exec-specific)Executes specific tasks by ID:
/impl-exec-specific foundation-and-core TASK-001 TASK-002
Use this mode when:
impl-plans/<plan-name>.mdSelect tasks for execution based on:
| Criterion | Priority | Rationale | |-----------|----------|-----------| | Dependencies satisfied | Required | Cannot start blocked tasks | | Marked as parallelizable | High | Can run concurrently | | Small estimated effort | Medium | Quick wins build momentum | | Foundation/core tasks | High | Unblock other tasks |
Execute tasks one at a time to avoid LLM errors:
run_in_background)CRITICAL: Execute this phase IMMEDIATELY after each task completes. DO NOT batch updates.
Responsibility Split (when using impl-exec-specific):
impl-exec-specific agent: Updates plan file onlyAfter task execution (within impl-exec-specific):
Update task status in the plan file:
Add progress log entry to plan file:
### Session: YYYY-MM-DD HH:MM
**Tasks Completed**: TASK-001, TASK-002
**Tasks In Progress**: TASK-003
**Blockers**: None
**Notes**: Implementation notes and decisions made
Check completion criteria for the overall plan
Update plan status in PROGRESS.json if all tasks done (set to "Completed")
NOTE: PROGRESS.json is updated by main conversation after impl-exec-specific completes. See "Main Conversation Orchestration Protocol" section for details.
No file move is required. PROGRESS.json is the single source of truth for plan status.
When invoking the ts-coding agent for a task:
Task tool parameters:
subagent_type: ts-coding
prompt: |
Purpose: <task description from implementation plan>
Reference Document: impl-plans/<plan-name>.md
Implementation Target: <deliverables list>
Completion Criteria:
- <criterion 1 from task>
- <criterion 2 from task>
- <criterion N from task>
run_in_background: true # For parallel execution of independent tasks
Note: Use run_in_background: true only when executing multiple independent tasks in parallel. Omit for sequential execution.
Extract prompt content from the task structure in the implementation plan:
### TASK-001: Core Interfaces
**Status**: Not Started
**Parallelizable**: Yes
**Deliverables**: <- Use for Implementation Target
- `src/interfaces/filesystem.ts`
- `src/interfaces/process-manager.ts`
**Description**: <- Use for Purpose
Define all core interfaces for abstracting external dependencies.
**Completion Criteria**: <- Use for Completion Criteria
- [ ] FileSystem interface defined
- [ ] ProcessManager interface defined
- [ ] Type checking passes
CRITICAL: Execute tasks ONE AT A TIME to avoid LLM errors.
For each task in the executable tasks list:
1. Invoke ts-coding (without run_in_background):
Task tool parameters:
subagent_type: ts-coding
prompt: |
Purpose: <TASK-001 description>
Reference Document: <implementation-plan-path>
Implementation Target: <TASK-001 deliverables>
Completion Criteria:
- <criterion 1>
- <criterion 2>
2. Wait for ts-coding to complete
3. Run check-and-test-after-modify:
Task tool parameters:
subagent_type: check-and-test-after-modify
prompt: |
Verify changes for TASK-001
4. Run ts-review (up to 3 iterations):
Task tool parameters:
subagent_type: ts-review
prompt: |
Review TASK-001 implementation
5. Update task status in plan
6. Proceed to TASK-002 (repeat steps 1-5)
All tasks run sequentially - each task completes fully (including review) before the next begins.
After each task completes:
Parse dependencies from plan:
**Parallelizable**: No (depends on TASK-001)
or
**Parallelizable**: No (depends on TASK-001, TASK-002)
| Type | Example | Resolution | |------|---------|------------| | Data dependency | Types must exist before using them | Execute sequentially | | File dependency | Interface before implementation | Execute sequentially | | None | Independent modules | Execute in parallel |
TASK-001 (Interfaces) TASK-002 (Errors) TASK-003 (Types)
| | |
+----------+---------------+ |
| |
TASK-004 (Mocks) TASK-007 (Repo Interfaces)
From this graph:
NOTE: To avoid LLM errors, all tasks now execute sequentially regardless of parallelization markers.
The "Parallelizable: Yes" marker is still used to:
When multiple tasks are executable, prefer this order:
| Status | Meaning |
|--------|---------|
| Not Started | Task not yet begun |
| In Progress | Currently being implemented |
| Completed | All completion criteria met |
| Blocked | Waiting on dependencies |
## Module Status
| Module | File Path | Status | Tests |
|--------|-----------|--------|-------|
| Core Interfaces | `src/interfaces/*.ts` | Completed | Pass |
| Error Types | `src/errors.ts` | In Progress | - |
| Mock Implementations | `src/test/mocks/*.ts` | Not Started | - |
### Session: 2026-01-04 14:30
**Tasks Completed**: TASK-001, TASK-002
**Tasks Started**: TASK-004
**Blockers**: None
**Notes**:
- Defined FileSystem, ProcessManager, Clock interfaces
- Added Result type with ok/err helpers
- Discovered need for additional WatchOptions type
A task is complete when:
bun run typecheck)A plan is complete when:
When a plan is complete:
impl-plans/README.md (move plan entry to Completed section if applicable)No file move is required. PROGRESS.json tracks plan completion status.
After task implementation and testing, each task goes through a code review cycle using the ts-review agent.
ts-coding agent (implementation)
|
v
check-and-test-after-modify agent (tests pass)
|
v
ts-review agent (iteration 1)
|
+-- APPROVED --> Task complete
|
+-- CHANGES_REQUESTED --> ts-coding (fixes) --> check-and-test --> ts-review (iteration 2)
|
+-- ... (up to 3 iterations)
The review cycle is limited to 3 iterations per task to prevent infinite loops:
| Iteration | Review Scope | Outcome | |-----------|--------------|---------| | 1 | Full comprehensive review | APPROVED or CHANGES_REQUESTED | | 2 | Focus on previous issues + new issues from fixes | APPROVED or CHANGES_REQUESTED | | 3 | Critical issues only | APPROVED (with documented remaining issues) |
Task tool parameters:
subagent_type: ts-review
prompt: |
Design Reference: <path to design document>
Implementation Plan: impl-plans/<plan-name>.md
Task ID: TASK-XXX
Implemented Files:
- <file path 1>
- <file path 2>
Iteration: 1
Task tool parameters:
subagent_type: ts-review
prompt: |
Design Reference: <path to design document>
Implementation Plan: impl-plans/<plan-name>.md
Task ID: TASK-XXX
Implemented Files:
- <file path 1>
- <file path 2>
Iteration: 2
Previous Feedback:
- C1: Missing readonly modifiers
- S1: Duplicate validation logic
Focus Areas: readonly modifiers, duplicate validation
If APPROVED:
If CHANGES_REQUESTED:
When re-invoking ts-coding to fix review issues:
Task tool parameters:
subagent_type: ts-coding
prompt: |
Purpose: Fix code review issues for TASK-XXX
Reference Document: impl-plans/<plan-name>.md
Implementation Target: Fix the following review issues
Issues to Fix:
- C1 (Critical): src/foo.ts:25 - Missing required method X
Suggested Fix: Add method X per design spec section Y
- C2 (Critical): src/bar.ts:42 - Using `any` type
Suggested Fix: Replace with `unknown` and add type guard
- S1 (Improvement): src/foo.ts:30,45 - Duplicate validation logic
Suggested Fix: Extract to shared validateX function
Completion Criteria:
- All critical issues (C1, C2) are resolved
- Improvement suggestions addressed where reasonable
- Type checking passes
- Tests pass
### Session: 2026-01-04 14:30
**Tasks Completed**: TASK-001
**Review Iterations**: 2
**Review Summary**:
- Iteration 1: 2 critical issues, 1 improvement suggestion
- Iteration 2: APPROVED (all issues resolved)
**Notes**:
- Fixed missing readonly modifiers
- Extracted duplicate validation to shared utility
If a ts-coding agent fails:
If only some tasks complete:
| Action | Tool | Parameters |
|--------|------|------------|
| Read plan | Read | impl-plans/<plan>.md |
| Execute task | Task | subagent_type: ts-coding (NO run_in_background) |
| Run tests | Task | subagent_type: check-and-test-after-modify |
| Review code | Task | subagent_type: ts-review |
| Update plan | Edit | Update status, checkboxes, log |
| Update progress | Edit | Update PROGRESS.json task/plan status |
## Implementation Plan Completed
### Plan
`impl-plans/<plan-name>.md`
### Final Verification
- Type checking: Pass
- Tests: Pass (X/X)
### Plan Finalization
- Plan file status updated to: Completed
- PROGRESS.json status updated to: Completed
- README.md updated
### Next Steps
- Review completed implementation
- Consider integration testing
- Proceed to next implementation plan
### Failure Details
**TASK-XXX Failure**:
- Error: <error type>
- Details: <specific error message>
- Files affected: <file paths>
### Recommended Actions
1. Review failure details
2. Fix the issue
3. Re-run with: `/impl-exec-specific <plan-name> TASK-XXX`
check-and-test-after-modifyts-review for code review (max 3 iterations)When running /impl-exec-auto without arguments, the system analyzes active plans with lazy loading to prevent OOM.
DO NOT read all plan files. Only read plans from eligible phases.
impl-plans/README.md FIRST# Step 1: From README.md, get phase status
PHASE_STATUS = {
1: "COMPLETED",
2: "READY", # Only this phase is eligible
3: "BLOCKED",
4: "BLOCKED"
}
# Step 2: Get plan list for eligible phases from PHASE_TO_PLANS
eligible_phases = [p for p, s in PHASE_STATUS.items() if s == "READY"]
plans_to_read = PHASE_TO_PLANS[eligible_phases[0]] # Only Phase 2 plans
# Step 3: Read ONLY these plans (12 files, not 25)
# DO NOT read Phase 3/4 plans - they are BLOCKED
From impl-plans/README.md:
Phase 1: foundation-* (COMPLETED)
|
v
Phase 2: session-groups-*, command-queue-*, markdown-parser-*,
realtime-*, bookmarks-*, file-changes-*
| (can run in parallel with each other)
v
Phase 3: daemon-core, http-api, sse-events
|
v
Phase 4: browser-viewer-*, cli-*
When updating plans after cross-plan execution:
When a phase-gating plan completes (e.g., foundation-and-core):
/impl-exec-auto again for next phase| Skill/Agent | Relationship |
|-------------|--------------|
| impl-plan/SKILL.md | Read plans created by this skill |
| ts-coding-standards/ | ts-coding agent follows these |
| design-doc/SKILL.md | Original design reference |
| ts-review agent | Code review after implementation |
| check-and-test-after-modify agent | Test verification before review |
After impl-exec-auto returns the executable tasks list, the main conversation handles orchestration via impl-exec-specific.
IMPORTANT: DO NOT spawn ts-coding agents directly from the main conversation. Use impl-exec-specific instead.
1. Receive executable tasks list from impl-exec-auto
2. Group tasks by plan name
3. For each plan with executable tasks:
a. Invoke impl-exec-specific:
/impl-exec-specific <plan-name> <TASK-IDs>
Example:
/impl-exec-specific session-groups-runner TASK-008
/impl-exec-specific command-queue-core TASK-005 TASK-006
/impl-exec-specific bookmarks-types TASK-003 TASK-004
b. impl-exec-specific handles internally:
- ts-coding spawning
- check-and-test-after-modify
- ts-review cycle (up to 3 iterations)
- Plan file status updates
4. After impl-exec-specific completes:
a. Update PROGRESS.json (with lock)
b. Report results
5. Repeat for remaining plans/tasks
| Approach | Problem | |----------|---------| | Main spawns ts-coding directly | Main lacks review cycle logic, plan update format | | impl-exec-auto spawns ts-coding | Claude Code prohibits nested subagent spawning | | Main invokes impl-exec-specific | Correct - full implementation cycle handled |
1. Acquire lock:
Bash: while [ -f impl-plans/.progress.lock ]; do sleep 1; done && echo "<plan>:<task>" > impl-plans/.progress.lock
2. Edit PROGRESS.json:
// Before:
"TASK-001": { "status": "Not Started", "parallelizable": true, "deps": [] }
// After:
"TASK-001": { "status": "Completed", "parallelizable": true, "deps": [] }
Also update `lastUpdated` timestamp.
3. Release lock:
Bash: rm -f impl-plans/.progress.lock
The impl-exec-auto analysis found 9 executable tasks across 6 plans.
Executing via impl-exec-specific:
1. /impl-exec-specific session-groups-runner TASK-008
Result: TASK-008 completed (2 review iterations)
2. /impl-exec-specific command-queue-core TASK-005 TASK-006
Result: TASK-005, TASK-006 completed
3. /impl-exec-specific markdown-parser-core TASK-004
Result: TASK-004 completed
... (continue for remaining plans)
All 9 tasks completed. PROGRESS.json updated.
Newly unblocked tasks: TASK-009, TASK-010
If impl-exec-specific reports a task failure:
/impl-exec-specific <plan-name> <failed-task-id>development
Use when writing, reviewing, or refactoring TypeScript code. Provides type safety patterns, error handling, project layout, and async programming guidelines.
development
Use when refactoring tests for better maintainability. Provides guidelines for removing duplicates, DRYing fixtures/assertions, restructuring test organization, renaming, and splitting oversized files.
testing
Use when creating test plans from implementation and design documents. Provides test plan structure, test case tracking, and coverage guidelines.
testing
Use this skill when creating or modifying GitHub Actions workflow files (.github/workflows/*.yml). Ensures all actions are pinned by commit SHA, permissions are minimized, script injection is prevented, and other supply chain security best practices are applied.