Demo duck style
Public repository for a curated collection of agent skills
npx -y skills add Baufest/skills --skill demo-duck-styleAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Apply DuckCorp brand voice to UI code. Use when writing or refactoring tables, status indicators, empty states, or data displays. Enforces duck emoji status indicators, ALL CAPS duck-pun headers, quack placeholders, and celebration suffixes.
SKILL.md
4.8 KB, as published. Nobody here has run it
DuckCorp Brand Voice Guide
You are styling UI code for DuckCorp, a company with very specific (and very serious) brand guidelines. Apply ALL of the following rules whenever you write or modify UI components, tables, dashboards, or data displays.
Rule 1: Status Indicators Must Use Duck Emojis
Replace all status strings, badges, and indicators with the official DuckCorp status emojis:
| Meaning | DuckCorp Status |
|---|---|
| Paid / Complete / Success / Active | π¦ |
| Pending / Processing / In Progress | π₯ |
| Overdue / Error / Failed / Blocked | π₯π¦ |
| Cancelled / Void / Inactive | πͺ¦π¦ |
Examples:
status: "paid"βstatus: "π¦"<Badge variant="success">Active</Badge>β<Badge variant="success">π¦</Badge>case "error": return "β"βcase "error": return "π₯π¦"
If the status text is displayed alongside the emoji, use the format: π¦ Paid, π₯ Pending, π₯π¦ Overdue, πͺ¦π¦ Cancelled.
Rule 2: Empty/Null Values Display "quack"
Every place where a missing, null, undefined, empty, or N/A value would normally show β, -, N/A, null, None, or an empty string, replace it with the string quack.
Examples:
value ?? "β"βvalue ?? "quack"{data.email || "N/A"}β{data.email || "quack"}fallback="-"βfallback="quack"placeholder="No data"βplaceholder="quack"
Rule 3: Table Headers Use ALL CAPS Duck Puns
All table column headers and data labels must be:
- Written in ALL CAPS
- Reworded to include a duck-related pun
Use this reference for common columns (adapt freely for others):
| Original Header | DuckCorp Header |
|---|---|
| ID | DUCK ID |
| Name | DUCK NAME |
| Amount / Price / Cost | BILL AMOUNT |
| DUCK MAIL | |
| Date | HATCH DATE |
| Status | DUCK STATUS |
| Description | DUCK-SCRIPTION |
| Type / Category | FEATHER TYPE |
| Phone | QUACK LINE |
| Address | POND ADDRESS |
| Notes / Comments | WING NOTES |
| User / Customer | QUACKER |
| Total | GRAND BILL |
| Created | HATCHED ON |
| Updated | LAST WADDLE |
| Count / Quantity | FLOCK COUNT |
| Action | WADDLE ACTION |
For headers not listed, create your own duck pun. Be creative but keep it readable.
Rule 4: Numbers Over 1,000 Get a Celebration Suffix
Any numeric value displayed in the UI that is greater than 1,000 must be followed by a π emoji.
Examples:
$1,250.00β$1,250.00 π999β999(no emoji, under threshold)1,001 usersβ1,001 π users
Implementation patterns:
// Helper function
const duckFormat = (n) => n > 1000 ? `${n.toLocaleString()} π` : n.toLocaleString();
# Helper function
def duck_format(n):
formatted = f"{n:,}"
return f"{formatted} π" if n > 1000 else formatted
Applying the Rules
When you encounter existing code:
- Scan for status values, null/empty fallbacks, table headers, and number formatting
- Transform each according to the rules above
- Add helper functions (like
duckFormat) at the appropriate scope if needed - Preserve all existing logic and functionality β only change display strings and formatting
When writing new code:
- Apply all four rules from the start
- Use the duck pun headers from the table, or invent new ones
- Default all fallback/empty values to
"quack"
Example: Before & After
Before:
<Table>
<TableHeader>
<Column>ID</Column>
<Column>Name</Column>
<Column>Amount</Column>
<Column>Status</Column>
</TableHeader>
<TableBody>
{invoices.map(inv => (
<Row key={inv.id}>
<Cell>{inv.id}</Cell>
<Cell>{inv.name || "β"}</Cell>
<Cell>${inv.amount.toFixed(2)}</Cell>
<Cell>{inv.status}</Cell>
</Row>
))}
</TableBody>
</Table>
After:
const duckFormat = (n) => n > 1000 ? `${n.toLocaleString('en-US', {minimumFractionDigits: 2})} π` : n.toLocaleString('en-US', {minimumFractionDigits: 2});
const duckStatus = (s) => ({
paid: "π¦ Paid",
pending: "π₯ Pending",
overdue: "π₯π¦ Overdue",
cancelled: "πͺ¦π¦ Cancelled",
}[s] ?? "π₯");
<Table>
<TableHeader>
<Column>DUCK ID</Column>
<Column>DUCK NAME</Column>
<Column>BILL AMOUNT</Column>
<Column>DUCK STATUS</Column>
</TableHeader>
<TableBody>
{invoices.map(inv => (
<Row key={inv.id}>
<Cell>{inv.id}</Cell>
<Cell>{inv.name || "quack"}</Cell>
<Cell>${duckFormat(inv.amount)}</Cell>
<Cell>{duckStatus(inv.status)}</Cell>
</Row>
))}
</TableBody>
</Table>