# Consent Page Profile Card Implementation Plan > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** Show the authorizing user's Bluesky profile (avatar, name, handle) on the OAuth consent page. **Architecture:** Add inline HTML/CSS/JS to the consent page. Profile is fetched client-side from Bluesky's public API using the `login_hint` parameter. Graceful degradation if fetch fails. **Tech Stack:** Vanilla JS, Bluesky public API (`app.bsky.actor.getProfile`) --- ### Task 1: Update renderConsentPage signature **Files:** - Modify: `src/pds.js:5008-5017` (function signature and JSDoc) **Step 1: Add loginHint to JSDoc and parameters** Change the function signature from: ```javascript /** * @param {{ clientName: string, clientId: string, scope: string, requestUri: string, error?: string }} params * @returns {string} HTML page content */ function renderConsentPage({ clientName, clientId, scope, requestUri, error = '', }) { ``` To: ```javascript /** * @param {{ clientName: string, clientId: string, scope: string, requestUri: string, loginHint?: string, error?: string }} params * @returns {string} HTML page content */ function renderConsentPage({ clientName, clientId, scope, requestUri, loginHint = '', error = '', }) { ``` **Step 2: Verify syntax is correct** Run: `node --check src/pds.js` Expected: No output (success) --- ### Task 2: Add profile card CSS **Files:** - Modify: `src/pds.js:5027-5055` (inside the ``: ```css .profile-card{display:flex;align-items:center;gap:12px;padding:16px;background:#2a2a2a;border-radius:8px;margin-bottom:20px} .profile-card.loading .avatar{background:#404040;animation:pulse 1.5s infinite} .profile-card .avatar{width:48px;height:48px;border-radius:50%;background:#404040;flex-shrink:0} .profile-card .avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover} .profile-card .info{min-width:0} .profile-card .name{color:#fff;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .profile-card .handle{color:#808080;font-size:14px} @keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}} ``` **Step 2: Verify syntax is correct** Run: `node --check src/pds.js` Expected: No output (success) --- ### Task 3: Add profile card HTML **Files:** - Modify: `src/pds.js:5056-5057` (after `
` opening, before `