Skip to content

Commit f080e2d

Browse files
committed
fix: incorrect main card
1 parent a9ee6b5 commit f080e2d

14 files changed

+733
-1772
lines changed

.claude/skills/write-blog-post/SKILL.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,126 @@ const post = getBlogPost('post-slug')!;
181181
</BlogPostLayout>
182182
```
183183

184+
## Content Quality Standards
185+
186+
When creating blog posts, prioritize these non-functional requirements to ensure exceptional quality:
187+
188+
### 1. Rigorous & Research-Backed
189+
190+
- **Cite credible sources**: Reference academic papers, industry research, or authoritative publications
191+
- **Provide evidence**: Back up claims with data, statistics, or expert opinions
192+
- **Include references**: Add inline citations or a "References" section at the end
193+
- **Verify facts**: Cross-check information before including it
194+
- **Use Badge components** to highlight research citations: `<Badge client:load variant="outline">Source: Nature 2024</Badge>`
195+
196+
Example citation format:
197+
198+
```astro
199+
<p class="mb-4">
200+
Recent studies show that AI-assisted writing increases productivity by 40%
201+
<Badge client:load variant="outline" className="ml-2">MIT Study 2024</Badge>
202+
</p>
203+
```
204+
205+
### 2. Unique & Original
206+
207+
- **Fresh perspective**: Avoid rehashing common takes; find a novel angle
208+
- **Original insights**: Share observations that aren't widely discussed
209+
- **Unique examples**: Use specific, concrete examples rather than generic scenarios
210+
- **Personal research**: Consider conducting small experiments or surveys
211+
- **Challenge assumptions**: Question conventional wisdom where appropriate
212+
213+
### 3. Insightful & Thought-Provoking
214+
215+
- **Second-order thinking**: Go beyond obvious observations
216+
- **Hidden connections**: Reveal non-obvious relationships between concepts
217+
- **"Aha!" moments**: Structure content to deliver surprising realizations
218+
- **Counterintuitive points**: Highlight phenomena that contradict expectations
219+
- **Deep implications**: Explore the broader consequences of the topic
220+
221+
Use Card components to spotlight key insights:
222+
223+
```astro
224+
<Card client:load className="bg-primary/5 border-primary">
225+
<CardHeader>
226+
<CardTitle className="text-xl">💡 Key Insight</CardTitle>
227+
</CardHeader>
228+
<CardContent>
229+
<p class="text-muted-foreground">
230+
The surprising observation that changes how we think about [topic]...
231+
</p>
232+
</CardContent>
233+
</Card>
234+
```
235+
236+
### 4. Click-Baity & Engaging (Ethically)
237+
238+
- **Compelling hook**: Open with a surprising fact, provocative question, or vivid scenario
239+
- **Curiosity gaps**: Tease interesting information that gets revealed later
240+
- **Pattern interrupts**: Break expectations to maintain attention
241+
- **Progressive disclosure**: Build tension by revealing information gradually
242+
- **Payoff**: Ensure the content delivers on the promise of the title
243+
- **Scroll-stopping subheadings**: Make H2/H3 headings intriguing enough to keep reading
244+
245+
**Opening hook strategies:**
246+
247+
- Start with a counterintuitive statement
248+
- Begin with a mini-story or anecdote
249+
- Ask a provocative question
250+
- Present a surprising statistic
251+
- Describe a relatable problem vividly
252+
253+
### 5. Narrative & Story-Driven
254+
255+
- **Story arc**: Structure with beginning (setup), middle (tension), end (resolution)
256+
- **Concrete scenarios**: Use specific examples and case studies
257+
- **Character elements**: Feature real people or personified concepts
258+
- **Tension and conflict**: Highlight problems, challenges, or paradoxes
259+
- **Visual storytelling**: Use descriptive language that paints mental pictures
260+
- **Emotional resonance**: Connect with readers' experiences and feelings
261+
262+
**Narrative techniques:**
263+
264+
- Use "Before/After" frameworks
265+
- Tell origin stories of ideas or technologies
266+
- Create hypothetical scenarios readers can visualize
267+
- Use metaphors and analogies to make abstract concepts concrete
268+
- Include micro-stories within sections (2-3 sentence anecdotes)
269+
270+
**Story structure template:**
271+
272+
```astro
273+
<!-- Act 1: Setup -->
274+
<p class="text-lg">
275+
[Hook: Surprising observation or relatable problem]
276+
</p>
277+
278+
<!-- Act 2: Investigation -->
279+
<h2>The Hidden Pattern</h2>
280+
<p>[Explore the phenomenon with research and examples]</p>
281+
282+
<!-- Act 3: Implications -->
283+
<h2>What This Means For You</h2>
284+
<p>[Connect insights to reader's life]</p>
285+
286+
<!-- Resolution: Key Takeaways -->
287+
<h2>Key Takeaways</h2>
288+
[Distill the lessons learned]
289+
```
290+
291+
### Content Quality Checklist
292+
293+
Before publishing, verify:
294+
295+
- [ ] At least 2-3 credible sources cited
296+
- [ ] Unique angle or perspective not commonly discussed
297+
- [ ] At least one "aha!" insight that surprises readers
298+
- [ ] Opening hook that grabs attention within first 2 sentences
299+
- [ ] Clear narrative arc with tension and resolution
300+
- [ ] Concrete examples and scenarios (not just abstract concepts)
301+
- [ ] Title delivers on its promise
302+
- [ ] Ending provides satisfying closure and actionable takeaways
303+
184304
## SEO & Design Requirements
185305

186306
### Typography

CLAUDE.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,5 +478,28 @@ For static sites, Astro's built-in image optimization works during build time:
478478

479479
Each environment (lapras/pichu/pikachu/raichu) has a `LANDSCAPE` variable to identify the deployment environment. Build metadata is automatically injected during all deployment workflows.
480480

481+
## Content Conventions
482+
483+
### Author Name Formatting
484+
485+
When using git usernames or machine-readable identifiers as author names in blog posts or other content, always convert them to human-readable format:
486+
487+
**Examples:**
488+
489+
- `adelphi-liong` → `Adelphi Liong`
490+
- `john-doe-123` → `John Doe`
491+
- `jane_smith` → `Jane Smith`
492+
493+
**Rules:**
494+
495+
- Replace hyphens and underscores with spaces
496+
- Capitalize the first letter of each word (title case)
497+
- Remove numeric suffixes unless they're part of the actual name
498+
- Use proper name formatting conventions
499+
500+
This ensures content feels natural and professional rather than machine-generated.
501+
502+
## Development Notes
503+
481504
- never run `pls dev` yourself, the user will always run the server
482505
- Not start the development server with pls dev since the user users will run it themselves. We can assume that the server is already running at localhost:4321 at any time.
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import React from 'react';
2+
3+
export default function CompressionDiagram() {
4+
return (
5+
<div className="my-8 md:my-12">
6+
<div className="grid grid-cols-2 gap-2 md:gap-6">
7+
{/* Traditional Compression */}
8+
<div className="border border-green-500/30 rounded p-2 md:p-3 bg-green-500/5">
9+
<div className="text-center mb-2 text-xs md:text-sm font-semibold">Traditional</div>
10+
<div className="space-y-1 md:space-y-2">
11+
<div className="bg-primary/20 border border-primary rounded p-1.5 md:p-2 text-center">
12+
<div className="text-[10px] md:text-xs text-muted-foreground">Start</div>
13+
<div className="font-mono text-xs md:text-sm font-bold">3 bytes</div>
14+
</div>
15+
<div className="text-center text-sm md:text-lg"></div>
16+
<div className="bg-green-500/20 border border-green-500 rounded p-1.5 md:p-2 text-center">
17+
<div className="text-[10px] md:text-xs text-muted-foreground">Compress</div>
18+
<div className="font-mono text-xs md:text-sm font-bold">1 byte</div>
19+
</div>
20+
<div className="text-center text-sm md:text-lg"></div>
21+
<div className="bg-blue-500/20 border border-blue-500 rounded p-1.5 md:p-2 text-center">
22+
<div className="text-[10px] md:text-xs text-muted-foreground">Transmit</div>
23+
<div className="font-mono text-xs md:text-sm font-bold">1 byte</div>
24+
</div>
25+
<div className="text-center text-sm md:text-lg"></div>
26+
<div className="bg-green-500/20 border border-green-500 rounded p-1.5 md:p-2 text-center">
27+
<div className="text-[10px] md:text-xs text-muted-foreground">Decompress</div>
28+
<div className="font-mono text-xs md:text-sm font-bold">3 bytes</div>
29+
</div>
30+
</div>
31+
<div className="text-center mt-2 text-[10px] md:text-xs text-muted-foreground">Minimize wire cost</div>
32+
</div>
33+
34+
{/* The Decompression Tax */}
35+
<div className="border border-destructive/30 rounded p-2 md:p-3 bg-destructive/5">
36+
<div className="text-center mb-2 text-xs md:text-sm font-semibold">LLM Decompression</div>
37+
<div className="space-y-1 md:space-y-2">
38+
<div className="bg-primary/20 border border-primary rounded p-1.5 md:p-2 text-center">
39+
<div className="text-[10px] md:text-xs text-muted-foreground">Start</div>
40+
<div className="font-mono text-xs md:text-sm font-bold">3 bytes</div>
41+
</div>
42+
<div className="text-center text-sm md:text-lg"></div>
43+
<div className="bg-destructive/20 border border-destructive rounded p-1.5 md:p-2 text-center">
44+
<div className="text-[10px] md:text-xs text-muted-foreground">AI Expand</div>
45+
<div className="font-mono text-xs md:text-sm font-bold">10 bytes</div>
46+
</div>
47+
<div className="text-center text-sm md:text-lg"></div>
48+
<div className="bg-destructive/30 border border-destructive rounded p-1.5 md:p-2 text-center">
49+
<div className="text-[10px] md:text-xs text-muted-foreground">Transmit</div>
50+
<div className="font-mono text-xs md:text-sm font-bold">10 bytes</div>
51+
</div>
52+
<div className="text-center text-sm md:text-lg"></div>
53+
<div className="bg-primary/20 border border-primary rounded p-1.5 md:p-2 text-center">
54+
<div className="text-[10px] md:text-xs text-muted-foreground">AI Compress</div>
55+
<div className="font-mono text-xs md:text-sm font-bold">3 bytes</div>
56+
</div>
57+
</div>
58+
<div className="text-center mt-2 text-[10px] md:text-xs text-destructive font-semibold">
59+
Maximize wire cost
60+
</div>
61+
</div>
62+
</div>
63+
</div>
64+
);
65+
}

src/components/Footer.tsx

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,24 @@ export function Footer({ config }: FooterProps) {
3838
];
3939

4040
return (
41-
<footer className="mt-auto border-t border-border bg-background">
41+
<footer className="mt-auto border-t border-border bg-background relative z-20">
4242
<div className="container mx-auto px-6 py-8 max-w-4xl">
4343
<div className="flex flex-col items-center gap-6">
44+
{/* Links */}
45+
<nav className="flex flex-wrap items-center justify-center gap-x-4 gap-y-2 text-sm">
46+
<a href="/" className="text-muted-foreground hover:text-foreground transition-colors">
47+
Home
48+
</a>
49+
<span className="text-muted-foreground"></span>
50+
<a href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
51+
About
52+
</a>
53+
<span className="text-muted-foreground"></span>
54+
<a href="/legal" className="text-muted-foreground hover:text-foreground transition-colors">
55+
Legal
56+
</a>
57+
</nav>
58+
4459
{/* Social Links */}
4560
<div className="flex flex-wrap items-center justify-center gap-4">
4661
{socialLinks.map(({ name, icon: Icon, url }) => (
@@ -58,25 +73,10 @@ export function Footer({ config }: FooterProps) {
5873
))}
5974
</div>
6075

61-
{/* Links & Copyright */}
62-
<div className="flex flex-col items-center gap-3">
63-
<nav className="flex flex-wrap items-center justify-center gap-x-4 gap-y-2 text-sm">
64-
<a href="/" className="text-muted-foreground hover:text-foreground transition-colors">
65-
Home
66-
</a>
67-
<span className="text-muted-foreground"></span>
68-
<a href="/about" className="text-muted-foreground hover:text-foreground transition-colors">
69-
About
70-
</a>
71-
<span className="text-muted-foreground"></span>
72-
<a href="/legal" className="text-muted-foreground hover:text-foreground transition-colors">
73-
Legal
74-
</a>
75-
</nav>
76-
<p className="text-xs text-muted-foreground text-center">
77-
&copy; {currentYear} {config.app.name}. All rights reserved.
78-
</p>
79-
</div>
76+
{/* Copyright */}
77+
<p className="text-xs text-muted-foreground text-center">
78+
&copy; {currentYear} {config.app.name}. All rights reserved.
79+
</p>
8080
</div>
8181
</div>
8282
</footer>

0 commit comments

Comments
 (0)