Skill 詳細

copywriter

Covers marketing and UX copy, but is primarily a generic developer-oriented UX-writing guide.

一致度一致の可能性コピーライティング 向けにレビュー済み
出典daffy0208/ai-dev-standards外部ソース
報告インストール数244人気度の参考値

使用前に確認

自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。

保存された出典プレビュー

SKILL.md

これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。

---
name: copywriter
description: Expert in writing compelling copy for web, marketing, and product
version: 1.0.0
tags: [copywriting, content, marketing, ux-writing, microcopy]
---

# Copywriter Skill

I help you write clear, compelling copy for your product, marketing, and user experience.

## What I Do

**UX Writing:**

- Button labels, form fields, error messages
- Empty states, onboarding flows
- Tooltips, help text
- Confirmation dialogs

**Marketing Copy:**

- Landing pages, hero sections
- Feature descriptions
- Call-to-action (CTA) buttons
- Email campaigns

**Product Content:**

- Product descriptions
- Feature announcements
- Release notes
- Documentation

## UX Writing Patterns

### Button Labels

```typescript
// ❌ Bad: Vague, passive
<Button>Submit</Button>
<Button>OK</Button>
<Button>Click Here</Button>

// ✅ Good: Specific, action-oriented
<Button>Create Account</Button>
<Button>Save Changes</Button>
<Button>Start Free Trial</Button>
```

**Guidelines:**

- Use verb + noun ("Save Changes" not "Save")
- Be specific ("Delete Post" not "Delete")
- Show outcome ("Start Free Trial" not "Submit")

---

### Error Messages

```typescript
// ❌ Bad: Technical, blaming user
"Invalid input"
"Error 422: Unprocessable Entity"
"You entered the wrong password"

// ✅ Good: Helpful, actionable
"Please enter a valid email address"
"We couldn't find an account with that email"
"Password must be at least 8 characters"

// Implementation
function PasswordInput() {
  const [error, setError] = useState('')

  const validate = (password: string) => {
    if (password.length < 8) {
      setError('Password must be at least 8 characters')
    } else if (!/[A-Z]/.test(password)) {
      setError('Password must include at least one uppercase letter')
    } else if (!/[0-9]/.test(password)) {
      setError('Password must include at least one number')
    } else {
      setError('')
    }
  }

  return (
    <div>
      <input type="password" onChange={(e) => validate(e.target.value)} />
      {error && <p className="text-red-600">{error}</p>}
    </div>
  )
}
```

**Error Message Formula:**

1. What happened
2. Why it happened (optional)
3. How to fix it

---

### Empty States

```typescript
// ❌ Bad: Just says it's empty
<EmptyState message="No results" />

// ✅ Good: Explains and guides user
function EmptySearchResults() {
  return (
    <div className="text-center py-12">
      <h3 className="text-lg font-semibold">No results found</h3>
      <p className="mt-2 text-gray-600">
        Try adjusting your search or filters to find what you're looking for
      </p>
      <Button onClick={clearFilters} className="mt-4">
        Clear Filters
      </Button>
    </div>
  )
}

function EmptyInbox() {
  return (
    <div className="text-center py-12">
      <h3 className="text-lg font-semibold">You're all caught up!</h3>
      <p className="mt-2 text-gray-600">
        No new messages. Enjoy your day! 🎉
      </p>
    </div>
  )
}
```

**Empty State Formula:**

- Headline (what's empty)
- Explanation (why it's empty)
- Action (what to do next)

---

### Form Labels

```typescript
// ❌ Bad: Unclear, jargon
<Label>Metadata</Label>
<Label>FTP Credentials</Label>

// ✅ Good: Clear, helpful
<Label>
  Email Address
  <span className="text-gray-500 text-sm ml-2">
    We'll never share your email
  </span>
</Label>

<Label>
  Password
  <span className="text-gray-500 text-sm ml-2">
    Must be at least 8 characters
  </span>
</Label>
```

**Label Guidelines:**

- Use clear, everyday language
- Add help text for complex fields
- Avoid technical jargon

---

### Loading States

```typescript
// ❌ Bad: Generic
<Loading message="Loading..." />

// ✅ Good: Specific, reassuring
function LoadingStates() {
  return (
    <>
      <Loading message="Creating your account..." />
      <Loading message="Processing payment..." />
      <Loading message="Uploading image (2/5)..." />
      <Loading message="This might take a minute..." />
    </>
  )
}
```

---

#
GitHub で全文を読む (外部ページ)
関連情報

関連する仕事