frontend-design
Skill17 starsChanged 2 months agoMITView on GitHub
Create distinctive, production-grade Stellar dApp UI. Combines bold aesthetic direction with smart contract integration patterns — wallet connection flows, transaction UX, contract data displays, and agentic kit hook wiring. No generic "AI slop" aesthetics.
- Reads credentials
187 other projects use a version of this.
Adopted by
Most recently taken up by
- RostislavDugin/postgresustheir own version, first seen Nov 8, 2026
- databasus/databasustheir own version, first seen Nov 8, 2026
- ceilf6/FrontAgenttheir own version, first seen Nov 8, 2026
- maxtrigify/Ottotheir own version, first seen Nov 8, 2026
- rvdbreemen/OTGW-firmwaretheir own version, first seen Nov 8, 2026
- open-slide/open-slidetheir own version, first seen Nov 8, 2026
Used with
Projects with it also use instantly-campaign, albert-dm and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
yawningwhaleAISkillinstantly-campaign
Create a new Instantly cold-email campaign in the proven 5-email structure of the user's top-performing campaign (~16% reply rate). Use when the user wants to launch a new outbound campaign, write a cold email sequence, create an Instantly campaign, draft outreach for a new service or niche, or set up a sales sequence.
Also in 6 projects that use this
yawningwhaleAISkillalbert-dm
Reply to DMs and messages the way Albert would. Use when the user asks "how would Albert reply to this", pastes a conversation and wants an Albert-style response, or asks you to draft/write a DM in Albert's voice. Albert sells AI voice agents / automations to local service businesses (Go High Level, lead follow-up, bookings).
Also in 5 projects that use this
naman10parikhSkillecosystem-reference
Quick-access directory of Claude Code ecosystem repos, skills, plugins, MCPs, and patterns. Use when improving the harness.
Also in 5 projects that use this
naman10parikhSkillfractal-delegation
Also in 5 projects that use this
julianoczkowskiSkillbrief-to-tasks
Break a design brief into an ordered checklist of independently buildable tasks using vertical slices. Saves as a markdown checklist. Use when user wants to break down work, create tasks from a brief, plan implementation order, or mentions "tasks" or "breakdown".
Also in 7 projects that use this
SeifBenayedSkillfile-reading
Use this skill when a file has been uploaded but its content is NOT in your context — only its path at /mnt/user-data/uploads/ is listed in an uploaded_files block. This skill is a router: it tells you which tool to use for each file type (pdf, docx, xlsx, csv, json, images, archives, ebooks) so you read the right amount the right way instead of blindly running cat on a binary. Triggers: any mention of /mnt/user-data/uploads/, an uploaded_files section, a file_path tag, or a user asking about an uploaded file you have not yet read. Do NOT use this skill if the file content is already visible in your context inside a documents block — you already have it.
Also in 6 projects that use this
- +6 more from naman10parikh
Other versions187 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 187
- anthropics/skills★ 189ksame name
- bytedance/deer-flow★ 85ksame name
- anthropics/claude-plugins-official★ 46ksame name
- novuhq/novu★ 40ksame name
- Dokploy/dokploy★ 38ksame name
- markmead/hyperui★ 12ksame name
- mengxi-ream/read-frog★ 10ksame name
- 1weiho/open-slide★ 9.7ksame name
- open-slide/open-slide★ 9.7ksame name
- basketikun/infinite-canvas★ 9.5ksame name
177 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- references/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- banner-designSkill
- brandkitSkill
- brandSkill
- designSkill
- design-systemSkill
- design-taste-frontendSkill
- design-taste-frontend-v1Skill
- full-output-enforcementSkill
- gpt-tasteSkill
- high-end-visual-designSkill
- imagegen-frontend-mobileSkill
- imagegen-frontend-webSkill
- image-to-codeSkill
- industrial-brutalist-uiSkill
- minimalist-uiSkill
- redesign-existing-projectsSkill
- slidesSkill
- stitch-design-tasteSkill
- ui-stylingSkill
- ui-ux-pro-maxSkill
- stellar-forgeSkill
- agentic-paymentsSkill
- assetsSkill
- dappSkill
- dataSkill
- graphifySkill
- smart-contractsSkill
- standardsSkill
- stellar-mcpSkill
- zk-proofsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 6 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 181 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 40
Before writing UI code, commit to a bold aesthetic direction:
- Distinctive: line 58
Every dApp starts with wallet connect.
- Distinctive: line 94
Empty state: Never show "0" without context — use "No tokens yet" with illustration
- Very specific: line 108
All UI code must use Tailwind CSS (v4+, bundled with the scaffold).
- Very specific: line 151
Every dApp must support both light and dark modes using Tailwind's dark: variant:
- Distinctive: line 157
Never hardcode colors without a dark mode counterpart.
- Distinctive: line 161
All Stellar data flows through the agentic kit hooks.
- Very specific: line 179
Always handle error from contract.data.error or data.error
- Very specific: line 180
Use addressToScVal / i128ToScVal from lib/stellar-config.ts for args
- Very specific: line 181
Never display raw ScVal — always convert via scvalToString / scvalToNumber
- Very specific: line 182
After a write() completes, auto-refresh relevant read() data
- Very specific: line 287
All blockchain queries: use useStellarData() — no fetch(), no axios, no raw RPC
- Distinctive: line 291
Loading states: use skeleton placeholders matching the content shape, not text spinners
“Common” is measured: kept by at least 6 in 10 of the 181 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Frontend Design — Stellar dApp UI
Build visually distinctive Stellar dApp frontends that integrate wallet connection, contract interaction, and transaction flows — all while avoiding generic "AI slop" aesthetics.
When to Use
- Designing wallet connect / disconnect UI that stands out
- Displaying on-chain data (balances, token info, contract state) beautifully
- Building transaction confirmation flows with loading + success states
- Creating a cohesive dApp dashboard with contract read/write widgets
- Styling agentic kit components (
useStellarData,useContract,useWallet) - Any Stellar frontend task where visual polish matters
Design Thinking
Before writing UI code, commit to a bold aesthetic direction:
- Purpose: What does this interface do? Who uses it — traders, devs, collectors?
- Tone: Pick an extreme — brutalist dark, luxe-light editorial, retro-terminal, futuristic glassmorphism, industrial monochrome, playful neo-brutalism.
- Blockchain UX constraints: Wallet not connected, waiting for confirmation, tx pending, tx confirmed, error states — each needs its own visual language.
- Differentiation: What makes this UNFORGETTABLE? A custom loading spinner made from Stellar icons? Animated transaction history? A gradient that shifts with each new block?
CRITICAL: Execute with precision. Bold maximalism and refined minimalism both work — the key is intentionality, not intensity.
Stellar dApp UI Patterns
Pattern 1 — Wallet Connection
Every dApp starts with wallet connect. Design for the full lifecycle:
Disconnected → Connecting → Connected → Disconnecting| State | Visual treatment |
| Disconnected | Prominent CTA, subtle pulse animation on the connect button |
| Connecting | Spinner, disabled button, "Opening Freighter..." text |
| Connected | Address badge (abbreviated), XLM balance chip, disconnect affordance |
| Disconnecting | Brief fade before returning to disconnected state |
Pattern 2 — Transaction Flow
A tx has 4 phases. Each needs distinct UI:
Simulate → Sign → Submit → Confirm| Phase | UX |
| Simulate | Show expected state change: "You will send 100 USDC to G..." with gas estimate |
| Sign | "Check your wallet to approve" — wallet handles the modal, but show a waiting state |
| Submit | Animated progress bar or spinner — "Waiting for ledger confirmation (~5s)" |
| Confirm | Success animation + updated balances. Or error with clear reason and retry button |
Pattern 3 — Contract Data Display
For read-only contract state (useContract().read()):
- Numeric values: Format with proper decimal places, show loading skeleton
- Addresses: Truncate with
G...abcdpattern, link to Stellar Expert - Timestamps: Relative ("2 min ago") + tooltip with absolute
- Enums/status: Badge with color-coded status indicator
- Empty state: Never show "0" without context — use "No tokens yet" with illustration
Pattern 4 — Error States
Blockchain errors are frequent. Design them in:
- Wallet not connected: Context-aware prompt, not a red error box
- User rejected: Subtle dismissal, no alarm
- Insufficient XLM: Actionable — "You need at least 1.1 XLM for this transaction"
- Network mismatch: Prominent banner with one-click network switch
- RPC timeout: Retry button with exponential backoff indicator
Tailwind CSS — Mandatory Styling
All UI code must use Tailwind CSS (v4+, bundled with the scaffold). No CSS modules, no styled-components, no inline styles for layout or color. Use tailwindcss for every design choice — typography, spacing, color, layout, animation.
Tailwind Patterns for dApps
| Pattern | Tailwind | When |
| Address display | font-mono text-sm truncate max-w-[120px] | All on-chain addresses |
| Loading skeleton | animate-pulse bg-muted rounded h-{n} w-{n} | While contract data loads |
| Balance number | font-mono tabular-nums | Numeric on-chain values |
| Status badge | rounded-full px-2 py-0.5 text-xs font-medium bg-{color}/10 text-{color} | Tx status, token state |
| Card | rounded-lg border bg-card text-card-foreground shadow-sm | Data sections |
| CTA button | px-4 py-2 bg-primary text-primary-foreground rounded-lg font-medium hover:bg-primary/90 | Primary actions |
| Error message | text-sm text-destructive bg-destructive/10 rounded px-3 py-2 | Error states |
| Success toast | text-sm text-emerald-600 bg-emerald-50 dark:text-emerald-400 dark:bg-emerald-950/50 | Confirmation |
Customizing the dApp Theme
In tailwind.config.ts, define semantic tokens for your dApp's brand:
theme: {
extend: {
colors: {
stellar: { // Stellar brand integration
blue: "#3e5b9c",
purple: "#7c3aed",
},
},
fontFamily: {
mono: ["JetBrains Mono", "Fira Code", "monospace"], // for addresses + data
},
keyframes: {
"slide-bar": { "0%": { width: "0%" }, "100%": { width: "100%" } },
},
animation: {
"slide-bar": "slide-bar 5s ease-in-out",
},
},
}Dark Mode
Every dApp must support both light and dark modes using Tailwind's dark: variant:
<div className="bg-white dark:bg-gray-950 text-gray-900 dark:text-gray-100">Never hardcode colors without a dark mode counterpart.
Agentic Kit Integration
All Stellar data flows through the agentic kit hooks. Every UI component must use these — never raw RPC.
Component → Hook Mapping
| UI Concern | Hook | Purpose |
| Wallet button | useWallet() | Connect/disconnect, address, sign |
| Balance list | useStellarData().getBalances | All asset balances |
| Contract reader | useContract(id).read() | Simulation-only read |
| Contract writer | useContract(id).write() | Sign + submit + confirm |
| Event stream | useStellarData().getEvents | On-chain event display |
| Transaction status | useStellarData().getTransaction | Confirmation check |
Design Rules for Hook Data
- Show loading skeleton (not spinner) while
getBalancesorread()resolves - Show last-updated timestamp for cached on-chain data
- Always handle
errorfromcontract.data.errorordata.error - Use
addressToScVal/i128ToScValfromlib/stellar-config.tsfor args - Never display raw
ScVal— always convert viascvalToString/scvalToNumber - After a
write()completes, auto-refresh relevantread()data
Source Files (published with this skill)
| File | Location | Contents |
| Provider | templates/frontend/providers/wallet-provider.tsx | React context + useWallet() export |
| Hook source | templates/frontend/hooks/use-stellar-data.ts | getBalances, queryContract, getContractData, getEvents |
| Hook source | templates/frontend/hooks/use-contract.ts | read() (simulation), write() (sign+submit+confirm) |
| Hook source | templates/frontend/hooks/use-stellar-wallet.ts | connect, disconnect, sign, getBalances |
| Component | templates/frontend/components/connect-button.tsx | Connect + disconnect + XLM badge |
| Component | templates/frontend/components/invoke-contract.tsx | Read/write any contract method from UI |
| Component | templates/frontend/components/send-payment.tsx | Send XLM with balance refresh |
| Config | templates/frontend/lib/stellar-config.ts | RPC config, network config, ScVal helpers |
| Examples | templates/frontend/examples/use-stellar-data-example.tsx | BalanceViewer, ContractReader, EventList, UsdcBalance |
| Examples | templates/frontend/examples/dashboard-page.tsx | Full dashboard layout with ConnectButton + InvokeContract |
| Deploy tracker | data/deployments/<network>.json | Contract IDs + WASM hashes per network |
| Deploy script | scripts/deploy-contract.sh | Build → test gate → deploy → record → .env update |
| Env template | .env.example | All env vars with contract address placeholders |
Working Examples
Wallet connect with balance badge
function StellarStatusBar() {
const { address, connect, disconnect, getBalances } = useWallet();
return address ? (
<div className="flex items-center gap-3 px-4 py-2 border-b bg-card">
<div className="w-2 h-2 rounded-full bg-green-400" />
<span className="font-mono text-sm">{address.slice(0,6)}...{address.slice(-4)}</span>
<BalanceBadge onRefresh={() => getBalances()} />
<button onClick={disconnect} className="text-xs text-muted-foreground hover:text-destructive">
Disconnect
</button>
</div>
) : (
<button onClick={connect} className="px-4 py-2 bg-primary text-primary-foreground rounded-lg font-medium">
Connect Wallet
</button>
);
}Contract data with loading skeleton
function TokenBalance({ contractId, address }: { contractId: string; address: string }) {
const { read } = useContract(contractId);
const [balance, setBalance] = useState<string | null>(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
setLoading(true);
read("balance_of", [addressToScVal(address)])
.then(v => setBalance(v ? scvalToNumber(v).toLocaleString() : "0"))
.finally(() => setLoading(false));
}, [contractId, address]);
if (loading) return <div className="h-6 w-24 bg-muted animate-pulse rounded" />;
return <span className="font-mono tabular-nums">{balance}</span>;
}Transaction flow with all 4 phases
function TransferForm({ contractId }: { contractId: string }) {
const { address, sign } = useWallet();
const { write, data } = useContract(contractId);
const [phase, setPhase] = useState<"idle"|"simulating"|"signing"|"submitting"|"confirmed"|"error">("idle");
const [errorMsg, setErrorMsg] = useState("");
async function handleTransfer(to: string, amount: bigint) {
if (!address) return;
setPhase("simulating");
try {
const res = await write(address, "transfer", [
addressToScVal(address), addressToScVal(to), i128ToScVal(amount),
], sign);
setPhase(res.hash ? "confirmed" : "error");
} catch (e: any) {
setErrorMsg(e.message);
setPhase("error");
}
}
return (
<div className="space-y-3">
{/* phase-specific UI */}
{phase === "simulating" && <p className="text-sm text-muted-foreground animate-pulse">Simulating transfer...</p>}
{phase === "signing" && <p className="text-sm text-muted-foreground">Check your wallet to approve</p>}
{phase === "submitting" && <div className="h-1 bg-muted rounded overflow-hidden"><div className="h-full bg-primary w-1/2 animate-slide" /></div>}
{phase === "confirmed" && <p className="text-sm text-green-500">Transfer confirmed!</p>}
{phase === "error" && <p className="text-sm text-destructive">{errorMsg}</p>}
{data.error && <p className="text-xs text-destructive">{data.error}</p>}
</div>
);
}Strict Rules
- All UI uses Tailwind CSS — no CSS modules, styled-components, or inline styles for layout/color
- Every dApp supports dark mode via
dark:variant — never hardcode colors without a dark counterpart - All blockchain queries use
useStellarData()— nofetch(), noaxios, no raw RPC - Read-only uses
useContract().read()— simulation, zero fees, no wallet prompt - State-changing uses
useContract().write()— handles sim + assemble + sign + submit + confirm - Every transaction flow phase has a distinct visual state — never show a generic spinner
- Loading states use skeleton placeholders matching the content shape, not text spinners
- Error states are context-aware and actionable — not generic "Something went wrong"
- Wallet connection shows the full lifecycle: disconnected → connecting → connected → disconnecting
- After write() completion, auto-refresh
read()data and balances - Never display raw ScVal — convert via helpers from
lib/stellar-config.ts - Design with intention — pick a bold direction and execute precisely. No generic defaults.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

