Implements a UI feature or change. Loads repo learnings and any existing plan, implements the change checking standards inline, then triggers test writing. Use when building a new UI feature, modifying an existing component, or executing a /plan-ui output.
Arguments: $ARGUMENTS — task description or "use plan" to pick up from /plan-ui output
REPO=$(git remote get-url origin 2>/dev/null | sed 's/.*\///' | sed 's/\.git//')
Load learnings from the Obsidian vault:
# Always load index (reference implementations)
mcp__obsidian__read-note: vault="obsidian-vault", filename="index.md", folder="repo-learnings/{repo-name}"
# Always load gotchas
mcp__obsidian__search-vault: vault="obsidian-vault", query="tag:topic/gotcha", path="repo-learnings/{repo-name}/gotchas"
→ Read all returned notes
# Always load file placement
mcp__obsidian__read-note: vault="obsidian-vault", filename="file-structure.md", folder="repo-learnings/{repo-name}"
If a plan file is being used, extract the "Patterns to Follow" section and search for each pattern specifically:
mcp__obsidian__search-vault: vault="obsidian-vault", query="{pattern keyword}", path="repo-learnings/{repo-name}"
→ Read the specific notes returned
Fallback: If vault search returns 0 results, read flat files from ~/.claude/repo-learnings/$REPO/.
If $ARGUMENTS contains "use plan": find the most recent plan file with ls -t ~/.claude/skill-output/$REPO/$BRANCH/plan-*.md 2>/dev/null | head -1 and read it as the implementation spec.
If $ARGUMENTS contains a file path: read that file as the implementation spec.
Otherwise: treat $ARGUMENTS as the task description and derive the approach from learnings + live code reading.
From index.md, pick the most relevant reference implementation for this task type. Read it. This is the pattern to follow.
Build the change. At each meaningful decision point, check against:
Do not deviate from established patterns without flagging it:
⚠ Deviation from pattern: [description]
Reason: [why this case is different]
Proceeding? [yes/no — ask if non-obvious]
After writing all files:
Self-review against standards:
any or unchecked type assertionsTest gap check — based on what was written:
Report:
## Implementation Complete
Files created:
- {path}
Files modified:
- {path}
Standards check:
✓ Type safety
✓ Pattern compliance
✓ Import conventions
⚠ {any deviation noted}
Test work needed:
- Unit: {list}
- E2E: {list}
Next steps:
- Run /write-unit-tests {path} to write unit tests
- Run /write-e2e-tests "{flow description}" to write E2E tests
- Run /cleanup-ui to lint/type-check
- Run /validate-ui "{original task description}" to confirm behavioral correctness
REPO=$(git remote get-url origin 2>/dev/null | sed 's/.*\///' | sed 's/\.git//')
BRANCH=$(git branch --show-current 2>/dev/null | sed 's/\//-/g')
TS=$(date +%Y%m%d-%H%M%S)-$$
mkdir -p ~/.claude/skill-output/$REPO/$BRANCH
Write this report to ~/.claude/skill-output/$REPO/$BRANCH/impl-report-$TS.md so the next agent can read what was built, what tests are needed, and what to run next.
After implementation, capture anything new or surprising. Write back to the Obsidian vault using the edit-note pattern: read the note first, merge new content, then write the updated note.
gotchas/ — add to the relevant note if:
// HACK, // NOTE, or // FIXME comment while reading code that isn't captured yetui-patterns/ — add to the relevant note if:
standards/ — add to the relevant note if:
file-structure.md — update if:
Write pattern:
# 1. Read current note content
mcp__obsidian__read-note: vault="obsidian-vault", filename="{note}.md", folder="repo-learnings/{repo-name}/{subfolder}"
# 2. Merge new findings into content, update last-updated date in frontmatter
# 3. Write back
mcp__obsidian__edit-note: vault="obsidian-vault", filename="{note}.md", folder="repo-learnings/{repo-name}/{subfolder}", content="{full updated content}"
Fallback: If vault not available, append to ~/.claude/repo-learnings/$REPO/{filename}.md directly.
Format new gotcha entries as:
### {short title}
{1-2 sentence description of the trap or pattern}
**Where:** {file or feature area}
**Fix/approach:** {what to do instead}
If there is nothing new to add:
✓ No learnings updates — implementation followed established patterns.