Communitygithub.com

gabrielmoreira/agent-skills-mirror

Shapes job-seeking personal sites: thirty-second hero, outcome-led case studies, hybrid home-plus-project routes, and frictionless contact CTAs, with heavy motion that degrades on mobile. Use for developer, designer, or creative portfolio work. Not a SaaS marketing landing page and not a WebGL engine tutorial.

agent-skills-mirror 是什么?

agent-skills-mirror is a Cursor agent skill that shapes job-seeking personal sites: thirty-second hero, outcome-led case studies, hybrid home-plus-project routes, and frictionless contact CTAs, with heavy motion that degrades on mobile. Use for developer, designer, or creative portfolio work. Not a SaaS marketing landing page and not a WebGL engine tutorial.

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/gabrielmoreira/agent-skills-mirror/tree/HEAD/mirrors/repos/kazimrmerchant@skill-slice/skills/interactive-portfolio

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

When to Use

  • User mentions or implies: portfolio, personal website, showcase work, developer portfolio, designer portfolio, or creative portfolio.
  • User needs help structuring projects, case studies, or hero sections for a personal site.
  • User wants to improve conversion rates (CTAs, contact methods) on an existing portfolio.
  • User is planning interactive elements (animations, 3D, scroll effects) for a portfolio.

Prerequisites

  • Basic understanding of frontend technologies (HTML/CSS/JS, React/Next.js) if implementing the portfolio directly.
  • 3-5 completed projects or case studies ready to be showcased.

Procedure

1. Portfolio Architecture

Structure the portfolio to pass the "30-Second Test". In 30 seconds, visitors should know:

  1. Who you are.
  2. What you do (Your unique value proposition).
  3. Your best work (Proof of competence).
  4. How to contact you (Clear path to conversion).

Essential Sections

SectionPurposePriority2026 Best Practice
HeroHook + identityCriticalHigh-impact visual + clear UVP
Work/ProjectsProve skillsCriticalQuality over quantity; focus on outcomes
AboutPersonality + storyImportantHumanize the developer/designer
ContactConvert interestCriticalFrictionless contact (Calendly/Email/LinkedIn)
TestimonialsSocial proofNice to haveVerified LinkedIn screenshots or quotes
Blog/WritingThought leadershipOptionalProof of communication & deep thinking

Navigation Patterns

  • Single page scroll: Best for designers, creatives, junior devs. Works well with animations (GSAP/Framer Motion). Mobile friendly, linear storytelling.
  • Multi-page: Best for senior roles, extensive project lists. Individual case study pages (Better for SEO/Deep dives). Professional, structured feel.
  • Hybrid (Recommended): Main sections on one page (Home). Detailed case studies on separate routes (/project/name). Best of both worlds: Quick scan + deep dive.

Hero Section Formula

[Your name]
[What you do in one line - e.g., "Frontend Engineer specializing in High-Performance Web Apps"]
[One line that differentiates you - e.g., "Bridging the gap between complex backend logic and pixel-perfect UI"]
[CTA: View Work / Get in Touch]

2. Project Showcase

Present work effectively using structured project cards and case studies.

Project Card Elements

ElementPurpose2026 Standard
ThumbnailVisual hookHigh-res WebP/AVIF or short looping video
TitleWhat it isDescriptive and clear
One-linerWhat you didAction-oriented (e.g., "Architected the API for...")
Tech/tagsQuick scanModern stack (e.g., Next.js 15, TypeScript, Tailwind)
ResultsProof of impactQuantifiable metric (e.g., "Reduced load time by 40%")

Case Study Structure

  1. Hero image/video (The "Money Shot")
  2. Project overview (2-3 sentences: Goal, Role, Outcome)
  3. The challenge (The problem you were solving)
  4. Your role (Specific contributions in a team)
  5. Process highlights (Wireframes, logic flow, architectural diagrams)
  6. Key decisions (Why you chose X over Y - shows seniority)
  7. Results/impact (Metrics, user feedback, business value)
  8. Learnings (What you'd do differently next time)
  9. Links (Live site, GitHub, Case study PDF)

Showing Impact

Instead ofWrite
"Built a website""Increased conversion rate by 40% via A/B testing"
"Designed UI""Reduced user drop-off by 25% by simplifying checkout"
"Developed features""Shipped a feature used by 50K+ monthly active users"
"Used React""Optimized rendering performance, reducing LCP by 1.2s"

Visual Presentation

  • Device mockups (Responsive views)
  • Before/after comparisons (Slider components)
  • Process artifacts (Figma screenshots, whiteboard sketches)
  • Video walkthroughs (Loom or short clips for complex work)
  • Micro-interactions (Hover effects that reveal details)

3. Developer Portfolio Specifics

Hiring managers look for code quality, real-world projects, problem-solving ability, communication skills, and technical depth.

Must-Haves

  • GitHub profile link (Pinned repos, active contributions)
  • Live project links (Deployed via Vercel/Netlify/AWS)
  • Tech stack for each project (Explicitly listed)
  • Your specific contribution (Crucial for team projects)

Project Selection

IncludeAvoid
Real problems solvedTutorial clones (Todo lists, Weather apps)
Side projects with actual usersIncomplete "Coming Soon" projects
Open source contributionsBasic CRUD apps without a unique twist
Technical challenges solvedGeneric portfolio templates

Technical Showcase Show code snippets that demonstrate clean architecture, custom hooks, memoization, and typing:

import { useState, useCallback, useMemo, useEffect } from 'react';

interface UseDebounceStateOptions<T> {
  delay?: number;
  onDebounceUpdate?: (value: T) => void;
}

export function useDebounceState<T>(
  initialValue: T,
  options: UseDebounceStateOptions<T> = {}
) {
  const { delay = 300, onDebounceUpdate } = options;
  const [value, setValue] = useState<T>(initialValue);
  const [debouncedValue, setDebouncedValue] = useState<T>(initialValue);
  const [isPending, setIsPending] = useState<boolean>(false);

  useEffect(() => {
    setIsPending(true);
    const handler = setTimeout(() => {
      setDebouncedValue(value);
      setIsPending(false);
      if (onDebounceUpdate) {
        onDebounceUpdate(value);
      }
    }, delay);

    return () => clearTimeout(handler);
  }, [value, delay, onDebounceUpdate]);

  const set = useCallback((newValue: T) => {
    setValue(newValue);
  }, []);

  return useMemo(
    () => ({
      value,
      debouncedValue,
      isPending,
      set,
    }),
    [value, debouncedValue, isPending, set]
  );
}

4. Portfolio Interactivity

Add memorable interactive elements while balancing creativity with usability.

Levels of Interactivity

LevelExampleRisk
SubtleHover effects, smooth scroll, fade-insLow
MediumScroll animations, page transitions, dark modeMedium
High3D (Three.js), games, custom cursors, WebGLHigh

High-Impact, Low-Risk

  • Custom cursor (Desktop only)
  • Smooth page transitions (Framer Motion/View Transitions API)
  • Project card hover effects (Scale, glow, or detail reveal)
  • Scroll-triggered reveals (Intersection Observer)
  • Dark/light mode toggle (System preference detection)

Creative Ideas

  • Terminal-style interface (For backend/systems devs)
  • OS desktop metaphor (Interactive windows/icons)
  • Game-like navigation (Character movement or quest-based)
  • Interactive timeline (Scroll-based career progression)
  • 3D workspace scene (Spline/Three.js)
  • Generative art background (Canvas/p5.js)

The Balance

  • Creativity shows skill, but usability wins jobs.
  • Mobile must work perfectly (Disable heavy animations on mobile).
  • Don't hide content behind interactions (Accessibility first).
  • Provide a "Skip Intro" or "Simple View" option for recruiters.

5. Conversion & CTAs

Ensure visitors know what to do next.

Primary CTAs

GoalCTA
Get hired"Let's work together"
Freelance"Start a project"
Network"Say hello"
Specific role"Hire me for [X]"

CTA Placement

  • Hero section: Main CTA (Immediate)
  • After projects: Secondary CTA (After proof of skill)
  • Footer: Final CTA (Last chance)
  • Floating: Optional persistent CTA (Always available)

Making Contact Easy

  • Email link (mailto:)
  • LinkedIn (opens in new tab)
  • Calendar link (Calendly/TidyCal)
  • Simple contact form (with validation)
  • "Copy email to clipboard" button

Pitfalls

Portfolio more complex than actual work

Severity: MEDIUM Situation: Spent 6 months on portfolio, have 2 projects to show. Why this breaks: Procrastination disguised as work. Portfolio IS a project, but not THE project. Diminishing returns on polish. Fix: Right-size your portfolio. Start with an MVP (Hero, 3-4 Projects, About, Contact). Time budget: 4 weeks max. Ship it when core pages work on mobile, 3-4 solid projects are showcased, contact works, and it loads in < 3 seconds. Better projects > better portfolio.

Portfolio looks great on desktop, broken on mobile

Severity: HIGH Situation: Recruiters check on phone, everything breaks. Why this breaks: Built desktop-first. Didn't test on real devices. Complex interactions don't translate to touch. Forgot about thumb zones. Fix: Adopt mobile-first design. 60%+ traffic is mobile. Ensure readable text (16px+), tappable links (min 44x44px), working navigation, fast loading, and sticky CTA. Test on iPhone Safari, Android Chrome, tablets, and slow 3G. Use graceful degradation for hover effects:

@media (hover: none) {
  .hover-effect {
    opacity: 1;
  }
}

Visitors don't know what to do next

Severity: MEDIUM Situation: Great portfolio, zero contacts. Why this breaks: No clear CTA. Contact buried at the bottom. Multiple competing actions (Analysis paralysis). Assuming visitors will figure it out. Fix: Add prominent contact CTAs in hero and after projects section. Avoid contact forms as the only option. Don't hide contact info or list too many social options.

Portfolio shows old or irrelevant work

Severity: MEDIUM Situation: Best work is 3 years old, newer work not shown. Why this breaks: Haven't updated in years. Newer work is "not ready" (Perfectionism). Scared to remove old favorites. Portfolio drift. Fix: Update copy every 6 months, tech every 1-2 years. Prune projects if embarrassed by code/design, tech is obsolete, or not relevant to goals. Archive instead of delete if showing growth.

Hard Rules: Do Not Use

  • Do not use heavy 3D/WebGL without a fallback or "Skip" option.
  • Do not use custom cursors on mobile devices.
  • Do not use "Coming Soon" placeholders (Remove the section entirely).
  • Do not use PDF resumes as the only way to see your experience.
  • Do not use non-standard navigation that confuses the user.
  • Do not use autoplaying audio or intrusive pop-ups.

Verification

Run through these validation checks before launching:

  1. No Clear Contact CTA (HIGH): Is there a prominent contact CTA in the hero and after projects section?
  2. Missing Mobile Viewport (HIGH): Does the HTML include <meta name='viewport' content='width=device-width, initial-scale=1'>?
  3. Unoptimized Portfolio Images (MEDIUM): Are images using WebP/AVIF, lazy loading, and srcset for responsive sizes?
  4. Projects Missing Live Links (MEDIUM): Do projects have live demo URLs or GitHub links?
  5. Projects Missing Impact/Results (LOW): Do project descriptions include metrics, outcomes, or testimonials?

Final Checklist

  • Does the hero section clearly state who the user is and what they do?
  • Are there at least 3 projects with live links or GitHub repos?
  • Does every project include a "Result" or "Impact" statement?
  • Is the site fully responsive and tested on a real mobile device?
  • Is there a clear, frictionless way to contact the user?
  • Does the site load in under 3 seconds (Lighthouse/PageSpeed Insights)?
  • Are images optimized (WebP/AVIF) and lazy-loaded?
  • Is the navigation intuitive and accessible (Keyboard/Screen reader)?

Related Skills

Works well with: scroll-experience, 3d-web-experience, landing-page-design, personal-branding, frontend, seo

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能