Detect web vs iOS automatically and delegate to /design-implement-web (CSS/Tailwind/Next.js) or /design-implement-ios (SwiftUI Theme.swift). Enforces the mockup-first gate, then auto-chains /design-verify.
Install
npx skillscat add jthorare/agentic-workflow/design-implement Install via the SkillsCat registry.
Before anything else: read $HOME/.agentic-workflow/toolkit/skills/_preamble.md and follow it (skill index, provider capability map, bootstrap check, session context). Run its Session Close section when this skill finishes.
Design context: read $HOME/.agentic-workflow/toolkit/skills/_design-preamble.md and follow it before continuing.
Design Implement — Platform Dispatcher
Enforces the mockup-first gate, detects whether this is a web or iOS project, delegates to the appropriate code-generation skill, then auto-chains verification. Contains no implementation logic.
Tip: If you already know the platform, invoke directly:
/design-implement-webor/design-implement-ios
Step 1: Mockup-First Gate
Implementing without an approved mockup baseline makes /design-verify impossible — never skip this step.
SHARED_DIR="$HOME/.agentic-workflow/toolkit/skills/_shared"
source "$SHARED_DIR/repo-slug.sh"
echo "screens.json: $AW_DIR/design/screens.json"
ls "$AW_DIR/design/screens.json" 2>/dev/null || echo "screens.json: MISSING"Read screens.json (CD4 schema in $SHARED_DIR/design-artifact-paths.md). The gate passes for the target screen only if its entry has a non-null approved_at and at least one file listed under baselines exists on disk (ls "$AW_DIR/design/<baseline>").
- Gate passes → Step 2.
screens.jsonmissing, screen absent,approved_atnull, or no baseline file on disk → STOP with: "No approved mockup baseline for<screen>— run/design-mockup <screen>first." Do not dispatch.--no-mockuppassed → skip the gate, warn "Proceeding without a mockup baseline — /design-verify will have nothing to diff against", and strip--no-mockupfrom the forwarded arguments.
Step 2: Platform Detection & Dispatch
Follow $SHARED_DIR/platform-detection.md exactly: recursive iOS globs (**/Package.swift, **/*.xcodeproj, **/*.xcworkspace, ignoring node_modules/, .build/, Pods/, vendor/, external-skills/); web = package.json deps include next/react/vite/vue/@angular/core; both/neither → Ask the user per the resolution table.
Dispatch contract (from the shared file):
- Echo
dispatch: <sub-skill> args=<args> - Dispatch literally, passing arguments through unchanged (minus a stripped
--no-mockup):- Invoke skill
design-implement-webwith args"<original args verbatim>" - Invoke skill
design-implement-ioswith args"<original args verbatim>"
- Invoke skill
- If the screen-name argument is empty and the gate needs one, stop and ask — never dispatch blank.
Step 3: Auto-Chain Verification
When the sub-skill completes without printing [BLOCKED]:
- If its report already includes a
verify_run_id(the sub-skill ran its own verify gate), do not re-run — surface that verdict. - Otherwise run Invoke skill
design-verifywith args"<screen-name>"now. Verification is not a suggestion — this dispatcher is done only when a verify run reports PASS or WARN (CD11 thresholds in$SHARED_DIR/design-artifact-paths.md).
Next steps
/design-refine— polish the implementation (verification re-runs after refinement)/shipRelease— ship once verification passes