make-it-so
4. Make it so (implement all tasks)
What this skill does
### 4. Make it so (implement all tasks)
Implement all the remaining tasks from the spec, one phase at a time. The main agent NEVER implements tasks itself — it always delegates the work to one or more subagents, oversees their spawning, integrates their results, and handles phase-level bookkeeping (review, changelog, specs overview).
**Constraints:**
**Phase Retrieval (main agent):**
- The main agent MUST use the rune skill to retrieve the next phase to work on
- Use `rune next --phase --format json` to get the next incomplete phase
- If `rune next` reports that all tasks are complete, stop the loop and report completion to the user
**Stream Detection (main agent):**
- Once a phase is selected, the main agent MUST run `rune streams --available --json` to detect ready work streams
- 2 or more ready streams → **Parallel Delegation** (worktree per stream)
- 1 ready stream, or the phase has no streams defined → **Single-Subagent Delegation** (no worktree, in place)
- Whichever path is taken, the main agent MUST delegate. It MUST NOT implement tasks itself.
**Parallel Delegation (multiple streams):**
Subagents work in isolated git worktrees so their parallel commits don't race on the shared index or on `tasks.md`.
For each ready stream the main agent MUST:
1. Create a worktree branched from the current working branch:
- `git worktree add .claude/worktrees/<phase>-stream-<N> -b stream/<phase>-<N>`
2. Spawn one subagent per worktree, all in a single message so they run in parallel (Task tool, `general-purpose` subagent unless a more specific type fits)
Each subagent prompt MUST include:
- The stream number it owns
- The absolute path to its worktree (it MUST `cd` there before doing anything)
- The path to the tasks file inside the worktree
- The list of `front_matter_references` to read before implementing
- These instructions:
- Use `rune next --phase --stream N --format json` to retrieve all tasks for the stream
- Read all referenced files before implementing
- Implement tasks in dependency order. Use tools/skills as needed (context7 for library docs, efficiency-optimizer for verification, etc.)
- Mark each task complete with `rune complete <task-id>` as it finishes
- Run all formatting and test commands for the project before committing
- Stage changes (including any reformatting and the modified `tasks.md`) and commit using the **Subagent Commit Conventions** below
- Stop when all tasks in the stream are complete, when blocked by tasks in other streams, or on unrecoverable failure
- Report back: branch name, list of completed task IDs, list of blocking task IDs (if any), and final status (`done` | `blocked` | `failed`)
**Main Agent Oversight (parallel mode):**
- Wait for all spawned subagents to return
- Track which streams reported `done` / `blocked` / `failed`
- After any return, re-run `rune streams --available --json`. If newly unblocked streams appear (because another stream's completion satisfied their deps), spawn fresh subagents for them in new worktrees — same parallel pattern as above
- If every remaining stream reports `blocked` and no new work surfaces, report a circular dependency to the user and stop
- If a subagent reports `failed`, surface the failure to the user and stop the phase rather than masking it
**Integration (main agent, after all parallel subagents have returned `done`):**
1. From the main working branch, merge each completed stream branch in turn:
- `git merge --no-ff stream/<phase>-<N> -m "[merge]: phase <P> stream <N>"`
2. Conflicts on `tasks.md` are expected (each stream marked different tasks complete). Resolve by accepting both sides' completions
3. After all stream branches are merged, remove their worktrees and delete the branches:
- `git worktree remove .claude/worktrees/<phase>-stream-<N>`
- `git branch -d stream/<phase>-<N>`
**Single-Subagent Delegation (single stream or no streams):**
No worktree is needed — there is no parallel commit race when only one subagent is working.
The main agent MUST spawn one subagent (Task tool, `general-purpose` unless a more specific type fits) with a prompt containing:
- The phase number
- The stream number if the phase has exactly one ready stream (otherwise note that streams are not defined for this phase)
- The path to the tasks file
- The list of `front_matter_references` to read before implementing
- These instructions:
- Use `rune next --phase --stream N --format json` if a single stream is in play, otherwise `rune next --phase --format json`, to retrieve all tasks for the phase
- Read all referenced files before implementing
- Implement all tasks (including subtasks) in the order specified, using tools/skills as needed
- Mark each task complete with `rune complete <task-id>` as it finishes
- Run all formatting and test commands for the project before committing
- Stage changes (including any reformatting and the modified `tasks.md`) and commit on the current working branch using the **Subagent Commit Conventions** below
- Report back: list of completed task IDs and final status (`done` | `failed`)
The main agent waits for the subagent to return and surfaces any failure to the user before continuing.
**Review (main agent):**
- Once the phase is fully integrated (parallel mode) or the single subagent has returned `done` (single-subagent mode), use the design-critic skill over the resulting state and verify it's correct. Issues detected should be fixed (delegate the fix as a follow-up subagent if it involves code, or update the decision log directly)
**Phase Changelog & Specs Overview (main agent):**
- After review, write a single phase-level changelog entry summarising the work done in this phase (subagent commits never touch the changelog — see Subagent Commit Conventions). Read `CHANGELOG.md` (create if missing), prepend the entry if not already present, and commit it as `[doc]: changelog for phase <P>` (or with a ticket prefix if applicable)
- Then check if all tasks in the spec are complete: `rune list specs/{feature_name}/tasks.md --format json` and verify no incomplete tasks remain
- If all tasks complete AND `specs/OVERVIEW.md` exists:
- Update the spec's status from `Planned` or `In Progress` to `Done`
- If new files were created in the spec directory during implementation (e.g., `implementation.md`), add them to the spec's detail section file list
- If tasks remain AND `specs/OVERVIEW.md` exists AND the spec's status is `Planned`:
- Update the spec's status from `Planned` to `In Progress`
- Commit any overview/decision-log updates
**Compact and Continue (main agent):**
- If incomplete tasks remain in the spec, run `/compact` with: `/compact Continuing /make-it-so - implement the next phase. Current progress: [brief summary of completed phase]`
- After compaction completes, immediately continue executing `/make-it-so` to implement the next phase
- If all tasks are complete, do not compact — report completion to the user and stop
---
**Subagent Commit Conventions** (used by ALL subagents — parallel stream subagents and single-subagent mode; the main agent's phase changelog commit is a separate single-file commit and follows its own format):
1. Run all formatting and test commands.
2. Use the command line to get an overview of the staged git changes. If no changes are staged, stage all files. If running the formatting resulted in unstaged changes to files, stage these as well. DO NOT revert code changes unless specifically asked to do so.
3. Subagents MUST NOT touch `CHANGELOG.md`. The main agent writes the per-phase changelog entry after the subagents return (and, in parallel mode, after their branches are merged).
4. Verify the current branch with git. Parallel stream subagents are on `stream/<phase>-<N>`; single-subagent mode is on the user's working branch. The ticket prefix below should be derived from the **base** working branch (the branch the worktree was created from, or — in single-subagent mRelated in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.