plugins/lisa-agy/skills/tracker-source-artifacts/SKILL.md
Canonical, vendor-neutral taxonomy and rules for handling source artifacts (Figma, Lovable, Loom, screenshots, design docs, data samples) when generating or evaluating tracker tickets (JIRA, GitHub Issues, Linear). Defines: (1) artifact domains, (2) classification rules per tool, (3) source precedence (which artifact is authoritative for which question), (4) inheritance from epic to story to sub-task, (5) cross-axis conflict handling. Invoke this skill from any flow that extracts, attaches, or reasons about external design/UX/data artifacts so the rules don't drift across skills.
npx skillsauth add codyswanngt/lisa tracker-source-artifactsInstall 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 is doctrine, not action — it defines the rules. Skills that need to extract, classify, attach, or reason about external artifacts (design files, prototypes, recordings, data samples) invoke this skill to load the taxonomy and apply it. The taxonomy is vendor-neutral: it applies equally to JIRA tickets, GitHub Issues, and Linear Issues.
The reason this lives in one place: silent drift across skills is the failure mode this body of rules exists to prevent. If the rules differ between lisa:notion-to-tracker, lisa:tracker-create, and lisa:tracker-write, agents will silently route artifacts wrong and developers will lose source of truth. Edit here, propagate everywhere.
Every artifact is classified into exactly one domain. The domain determines what the artifact is the source of truth for, and which tickets inherit it.
| Domain | What it defines | Examples |
|--------|-----------------|----------|
| ui-design (mocks) | Visual treatment only — layout, spacing, typography, color, iconography | Figma design frames, Framer static frames, bare screenshots, mockup PNGs |
| ux-flow (prototypes) | Interaction and flow only — navigation, transitions, state changes, timing, empty/error/loading states | Lovable output, Loom walkthroughs, Figma prototype links, annotated screenshots, Miro/Mural flow diagrams, user journey maps |
| data | Request/response shape, schema constraints, contracts | Example JSON, SQL schemas, GraphQL snippets, API contracts, sample payloads |
| ops | Deployment / runtime context | Runbooks, dashboards, Terraform refs, deployment diagrams |
| reference | Cross-cutting context | Confluence, Notion peer pages, Google Docs, related PRDs, RFCs |
These rules exist because agents consistently misclassify Figma and Lovable artifacts, which are the two most common sources of dropped or misrouted context.
ux-flow if the URL is a prototype share link — it contains /proto/, has starting-point-node-id= in the query, or the sharing context labels it "prototype" / "play mode". Otherwise classify as ui-design. Never assume; inspect the URL.ui-design for the file, one ux-flow for the prototype URL — so both propagate correctly.ux-flow. Lovable ships working code, but its code, styling, and any embedded business rules are NOT authoritative. Treat strictly as a UX/flow reference. Implementation uses existing project components; business rules come from the PRD body, not from Lovable.ux-flow in the vast majority of cases. The rare exception — a video that's purely a static-frame design review with no interaction — is still ux-flow for routing purposes (both UX and UI stories benefit).ui-design. Screenshot with arrows between frames, flow labels, or numbered steps → ux-flow. Side-by-side gallery of state variants (empty/error/loading) → ui-design with the state variants noted.reference unless it is specifically a runbook (ops) or contains canonical API contracts (data).ops.data.When an artifact could plausibly fit multiple domains and the rules above don't disambiguate, err on the side of inclusion — emit it under both, or use the broader domain. Misclassification is caught downstream by the preservation gate; underclassification is silent drop.
When artifacts disagree, silent reconciliation is a known failure mode. The rules below define which source wins which question. Record this precedence on every ticket that carries design artifacts (under Technical Approach or a dedicated ## Source Precedence subsection) so the implementer doesn't reconcile silently.
| Question | Authoritative source |
|----------|---------------------|
| Does this field exist? Is it required? Who can see/edit it? What validation applies? Permission rules, edge cases, data constraints? | Description / PRD body (business rules) |
| What does it look like — layout, spacing, typography, color, iconography? | Mocks (ui-design) |
| How does it flow — navigation, transitions, state changes, timing, empty/error/loading states? | Prototypes (ux-flow) |
| Where does the data come from, what shape is it, what are the API contracts? | data artifacts |
| Where does it run, who's on call, what's the dashboard? | ops artifacts |
Conflicts MUST be surfaced under ## Open Questions on the affected ticket — never silently reconciled.
X not in PRD; confirm it exists, and if so add business rules (required/optional, validation, permissions)."Incomplete artifact sets are a common root cause of implementation drift. Surface these on the epic when extracting:
ux-flow present, ui-design absent: flag "missing UI mocks". UI will be inferred from prototype frames — note that prototype styling is typically placeholder and must NOT be treated as visual source of truth.ui-design present, ux-flow absent: flag "missing UX prototype". UX will be inferred from static mock states (empty/error/loading/hover) — any flow not explicitly depicted must be raised as a BLOCKER with recommendation + alternatives, not silently invented.Artifacts attach as Jira remote links and propagate down the hierarchy.
Epic: gets EVERY artifact, regardless of domain. The epic is the canonical hub — anyone working on the epic or its descendants must reach the full set from one place. No filtering.
Story: inherits the artifacts whose domain matches its scope:
| Story type | Inherits domains |
|------------|------------------|
| Frontend / UI | ui-design, ux-flow, reference |
| Backend / API / data model | data, reference |
| Infrastructure | ops, reference |
| Mixed / setup ("X.0") | All domains |
When classification is ambiguous, err on the side of inclusion — a developer can ignore an extra link, but they can't follow one that wasn't attached.
Sub-task: inherits via the parent story link. Do NOT re-attach the same artifacts on every sub-task — that creates noise. Only attach an artifact directly on a sub-task when the sub-task depends on something the parent story doesn't (e.g., a sub-task spec'd from a specific Figma frame the broader story doesn't cite).
Mocks define visual intent, not implementation shortcut. Every UI-touching ticket description must include:
Before implementing, identify the closest existing component in the codebase. Prefer reuse even if the mock specifies different styling — flag the design-vs-code divergence as a discussion item on this ticket rather than pixel-matching from scratch.
If no existing component fits, building a new one is an explicit decision that must be recorded in the ticket (with rationale) before implementation. Lovable-generated components are never the reuse target — always use the project's own components.
Before declaring done, verify every extracted artifact is reachable from the created tickets.
artifact URL → [ticket keys that reference it].reference-domain artifacts, which may be epic-only if no story is domain-matched).Skipping this gate is the most common cause of silent artifact loss. Do not skip it.
development
AI debugging — given an error message, stack trace, or failing test, analyze the signal, form ranked hypotheses, locate the root cause in the codebase with file:line evidence, and propose a minimal fix. Lisa-native reimplementation of Sentry's seer workflow, available across all agent runtimes. Use when handed an exception, crash, regression, or red test and asked to find and fix the cause.
tools
Install and configure the Sentry SDK for a project — detect the framework/runtime, add the correct @sentry/<framework> package, initialize the client, wire the DSN through env, enable error + performance monitoring, and set up source map upload for readable stack traces. One consolidated skill covering react, nextjs, node, nestjs, express, python, django, react-native, and more. Lisa-native reimplementation of Sentry's SDK-setup suite. Use when adding Sentry to a project or fixing an existing Sentry install.
tools
View, set, and verify the custom guard rules enforced by Lisa's safety-net PreToolUse Bash hook (parity-safety-net.sh). The consolidated cross-agent equivalent of the upstream safety-net plugin's set-custom-rules + verify-custom-rules skills — manages a project-local list of extended-regex patterns that block destructive shell commands, on Codex, agy, Copilot, Cursor, and Claude.
tools
Thorough PR-style review of the full diff — bugs, security, performance, and maintainability — with concrete suggested fixes and a structured summary. An independent Lisa-native review skill that does NOT call CodeRabbit's service or port its code. Vendor-neutral cross-agent equivalent of the upstream coderabbit plugin, runnable on Codex, agy, Copilot, Cursor, and Claude.