expxagents 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/agents/_catalog.yaml +11 -0
- package/assets/agents/commercial/account-executive.agent.md +41 -0
- package/assets/agents/commercial/crm-manager.agent.md +41 -0
- package/assets/agents/commercial/pricing-strategist.agent.md +41 -0
- package/assets/agents/commercial/proposal-writer.agent.md +41 -0
- package/assets/agents/commercial/sdr.agent.md +41 -0
- package/assets/agents/development/backend-developer.agent.md +42 -0
- package/assets/agents/development/code-reviewer.agent.md +41 -0
- package/assets/agents/development/devops-engineer.agent.md +41 -0
- package/assets/agents/development/frontend-developer.agent.md +92 -0
- package/assets/agents/development/product-manager.agent.md +41 -0
- package/assets/agents/development/qa-engineer.agent.md +41 -0
- package/assets/agents/development/tech-lead.agent.md +42 -0
- package/assets/agents/development/ux-design-expert.agent.md +108 -0
- package/assets/agents/marketing/brand-guardian.agent.md +40 -0
- package/assets/agents/marketing/content-creator.agent.md +41 -0
- package/assets/agents/marketing/email-marketing.agent.md +41 -0
- package/assets/agents/marketing/landing-page-builder.agent.md +73 -0
- package/assets/agents/marketing/marketing-analyst.agent.md +41 -0
- package/assets/agents/marketing/paid-ads-manager.agent.md +41 -0
- package/assets/agents/marketing/seo-specialist.agent.md +41 -0
- package/assets/agents/marketing/social-media-manager.agent.md +41 -0
- package/assets/core/best-practices/_catalog.yaml +85 -0
- package/assets/core/best-practices/api-documentation.md +137 -0
- package/assets/core/best-practices/blog-post.md +86 -0
- package/assets/core/best-practices/blog-seo.md +91 -0
- package/assets/core/best-practices/code-review.md +97 -0
- package/assets/core/best-practices/copywriting.md +75 -0
- package/assets/core/best-practices/data-analysis.md +93 -0
- package/assets/core/best-practices/deploy-checklist.md +99 -0
- package/assets/core/best-practices/email-newsletter.md +84 -0
- package/assets/core/best-practices/email-sales.md +91 -0
- package/assets/core/best-practices/image-design.md +78 -0
- package/assets/core/best-practices/instagram-feed.md +70 -0
- package/assets/core/best-practices/instagram-reels.md +75 -0
- package/assets/core/best-practices/instagram-stories.md +68 -0
- package/assets/core/best-practices/landing-page.md +279 -0
- package/assets/core/best-practices/linkedin-article.md +83 -0
- package/assets/core/best-practices/linkedin-post.md +84 -0
- package/assets/core/best-practices/researching.md +89 -0
- package/assets/core/best-practices/review.md +95 -0
- package/assets/core/best-practices/sprint-planning.md +91 -0
- package/assets/core/best-practices/strategist.md +95 -0
- package/assets/core/best-practices/technical-writing.md +104 -0
- package/assets/core/best-practices/twitter-post.md +75 -0
- package/assets/core/best-practices/twitter-thread.md +92 -0
- package/assets/core/best-practices/whatsapp-broadcast.md +95 -0
- package/assets/core/best-practices/youtube-script.md +80 -0
- package/assets/core/best-practices/youtube-shorts.md +76 -0
- package/assets/core/prompts/insight-hunter.prompt.md +62 -0
- package/assets/core/runner.pipeline.md +117 -0
- package/assets/core/skills.engine.md +65 -0
- package/assets/core/solution-architect.agent.md +181 -0
- package/assets/templates/_expxagents/_memory/company.md +25 -0
- package/assets/templates/_expxagents/_memory/preferences.md +6 -0
- package/assets/templates/squads/_memory/memories.md +16 -0
- package/bin/expxagents.js +3 -0
- package/dist/cli/src/__tests__/cli.test.d.ts +1 -0
- package/dist/cli/src/__tests__/cli.test.js +23 -0
- package/dist/cli/src/commands/create.d.ts +1 -0
- package/dist/cli/src/commands/create.js +53 -0
- package/dist/cli/src/commands/doctor.d.ts +1 -0
- package/dist/cli/src/commands/doctor.js +86 -0
- package/dist/cli/src/commands/init.d.ts +1 -0
- package/dist/cli/src/commands/init.js +164 -0
- package/dist/cli/src/commands/install.d.ts +1 -0
- package/dist/cli/src/commands/install.js +65 -0
- package/dist/cli/src/commands/list.d.ts +1 -0
- package/dist/cli/src/commands/list.js +58 -0
- package/dist/cli/src/commands/onboarding.d.ts +1 -0
- package/dist/cli/src/commands/onboarding.js +39 -0
- package/dist/cli/src/commands/run.d.ts +1 -0
- package/dist/cli/src/commands/run.js +226 -0
- package/dist/cli/src/commands/server.d.ts +1 -0
- package/dist/cli/src/commands/server.js +22 -0
- package/dist/cli/src/commands/stop.d.ts +1 -0
- package/dist/cli/src/commands/stop.js +23 -0
- package/dist/cli/src/commands/uninstall.d.ts +1 -0
- package/dist/cli/src/commands/uninstall.js +12 -0
- package/dist/cli/src/index.d.ts +1 -0
- package/dist/cli/src/index.js +57 -0
- package/dist/cli/src/utils/config.d.ts +34 -0
- package/dist/cli/src/utils/config.js +79 -0
- package/dist/core/skills-loader.d.ts +16 -0
- package/dist/core/skills-loader.js +61 -0
- package/dist/core/squad-loader.d.ts +26 -0
- package/dist/core/squad-loader.js +51 -0
- package/dist/core/state-manager.d.ts +45 -0
- package/dist/core/state-manager.js +90 -0
- package/dist/core/vitest.config.d.ts +2 -0
- package/dist/core/vitest.config.js +7 -0
- package/package.json +49 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# Landing Page — Best Practices
|
|
2
|
+
|
|
3
|
+
## Princípios de Design
|
|
4
|
+
|
|
5
|
+
### 1. Design System First
|
|
6
|
+
Toda landing page DEVE começar com um design system definido via CSS custom properties. Zero valores hardcoded.
|
|
7
|
+
|
|
8
|
+
```css
|
|
9
|
+
:root {
|
|
10
|
+
/* === CORE TOKENS === */
|
|
11
|
+
/* Colors — use off-black/off-white, never pure #000/#fff */
|
|
12
|
+
--color-base-900: #0f172a;
|
|
13
|
+
--color-base-800: #1e293b;
|
|
14
|
+
--color-base-700: #334155;
|
|
15
|
+
--color-base-100: #f1f5f9;
|
|
16
|
+
--color-base-50: #f8fafc;
|
|
17
|
+
--color-white: #ffffff;
|
|
18
|
+
|
|
19
|
+
/* Accent — single brand color + hover state */
|
|
20
|
+
--color-accent: oklch(0.65 0.25 15); /* vibrant, perceptually uniform */
|
|
21
|
+
--color-accent-hover: oklch(0.58 0.25 15);
|
|
22
|
+
--color-accent-subtle: oklch(0.65 0.25 15 / 0.1);
|
|
23
|
+
|
|
24
|
+
/* Semantic */
|
|
25
|
+
--color-surface: var(--color-white);
|
|
26
|
+
--color-surface-alt: var(--color-base-50);
|
|
27
|
+
--color-surface-dark: var(--color-base-900);
|
|
28
|
+
--color-on-surface: var(--color-base-800);
|
|
29
|
+
--color-on-surface-muted: var(--color-base-700);
|
|
30
|
+
--color-on-dark: var(--color-base-50);
|
|
31
|
+
--color-success: oklch(0.72 0.19 150);
|
|
32
|
+
|
|
33
|
+
/* === SPACING (4px base unit) === */
|
|
34
|
+
--space-1: 0.25rem; /* 4px */
|
|
35
|
+
--space-2: 0.5rem; /* 8px */
|
|
36
|
+
--space-3: 0.75rem; /* 12px */
|
|
37
|
+
--space-4: 1rem; /* 16px */
|
|
38
|
+
--space-6: 1.5rem; /* 24px */
|
|
39
|
+
--space-8: 2rem; /* 32px */
|
|
40
|
+
--space-12: 3rem; /* 48px */
|
|
41
|
+
--space-16: 4rem; /* 64px */
|
|
42
|
+
--space-20: 5rem; /* 80px */
|
|
43
|
+
--space-24: 6rem; /* 96px */
|
|
44
|
+
--space-32: 8rem; /* 128px */
|
|
45
|
+
|
|
46
|
+
/* Section spacing — generous */
|
|
47
|
+
--section-py: clamp(var(--space-16), 10vw, var(--space-32));
|
|
48
|
+
--section-px: var(--space-6);
|
|
49
|
+
--container-max: 1200px;
|
|
50
|
+
--container-narrow: 720px;
|
|
51
|
+
|
|
52
|
+
/* === TYPOGRAPHY === */
|
|
53
|
+
--font-display: 'Plus Jakarta Sans', 'Inter', system-ui, sans-serif;
|
|
54
|
+
--font-body: 'Inter', system-ui, sans-serif;
|
|
55
|
+
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
|
|
56
|
+
|
|
57
|
+
/* Fluid type scale — min @ 320px, max @ 1200px */
|
|
58
|
+
--text-display: clamp(2.5rem, 5vw + 1rem, 4.5rem);
|
|
59
|
+
--text-h1: clamp(2rem, 4vw + 0.5rem, 3.5rem);
|
|
60
|
+
--text-h2: clamp(1.5rem, 3vw + 0.25rem, 2.25rem);
|
|
61
|
+
--text-h3: clamp(1.125rem, 2vw + 0.25rem, 1.5rem);
|
|
62
|
+
--text-body: clamp(1rem, 1vw + 0.5rem, 1.125rem);
|
|
63
|
+
--text-small: 0.875rem;
|
|
64
|
+
--text-caption: 0.75rem;
|
|
65
|
+
|
|
66
|
+
--leading-tight: 1.15;
|
|
67
|
+
--leading-normal: 1.6;
|
|
68
|
+
--leading-relaxed: 1.8;
|
|
69
|
+
|
|
70
|
+
--tracking-tight: -0.02em;
|
|
71
|
+
--tracking-normal: 0;
|
|
72
|
+
--tracking-wide: 0.05em;
|
|
73
|
+
--tracking-widest: 0.1em;
|
|
74
|
+
|
|
75
|
+
/* === RADIUS === */
|
|
76
|
+
--radius-sm: 0.375rem; /* 6px — inputs, small elements */
|
|
77
|
+
--radius-md: 0.75rem; /* 12px — cards, containers */
|
|
78
|
+
--radius-lg: 1rem; /* 16px — featured cards */
|
|
79
|
+
--radius-xl: 1.5rem; /* 24px — hero elements */
|
|
80
|
+
--radius-full: 9999px; /* pills, avatars */
|
|
81
|
+
|
|
82
|
+
/* === SHADOWS (multi-layered for realism) === */
|
|
83
|
+
--shadow-sm:
|
|
84
|
+
0 1px 2px oklch(0 0 0 / 0.04),
|
|
85
|
+
0 1px 3px oklch(0 0 0 / 0.06);
|
|
86
|
+
--shadow-md:
|
|
87
|
+
0 2px 4px oklch(0 0 0 / 0.04),
|
|
88
|
+
0 4px 8px oklch(0 0 0 / 0.06),
|
|
89
|
+
0 8px 16px oklch(0 0 0 / 0.04);
|
|
90
|
+
--shadow-lg:
|
|
91
|
+
0 4px 8px oklch(0 0 0 / 0.03),
|
|
92
|
+
0 8px 16px oklch(0 0 0 / 0.06),
|
|
93
|
+
0 16px 32px oklch(0 0 0 / 0.06),
|
|
94
|
+
0 32px 64px oklch(0 0 0 / 0.04);
|
|
95
|
+
--shadow-xl:
|
|
96
|
+
0 8px 16px oklch(0 0 0 / 0.04),
|
|
97
|
+
0 16px 32px oklch(0 0 0 / 0.08),
|
|
98
|
+
0 32px 64px oklch(0 0 0 / 0.08),
|
|
99
|
+
0 64px 128px oklch(0 0 0 / 0.06);
|
|
100
|
+
--shadow-accent:
|
|
101
|
+
0 4px 12px oklch(0.65 0.25 15 / 0.25),
|
|
102
|
+
0 8px 24px oklch(0.65 0.25 15 / 0.15);
|
|
103
|
+
|
|
104
|
+
/* === TRANSITIONS === */
|
|
105
|
+
--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
|
106
|
+
--ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
|
|
107
|
+
--duration-fast: 150ms;
|
|
108
|
+
--duration-normal: 250ms;
|
|
109
|
+
--duration-slow: 400ms;
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 2. Layout Patterns
|
|
114
|
+
|
|
115
|
+
**Container:**
|
|
116
|
+
```css
|
|
117
|
+
.container {
|
|
118
|
+
max-width: var(--container-max);
|
|
119
|
+
margin: 0 auto;
|
|
120
|
+
padding: 0 var(--section-px);
|
|
121
|
+
}
|
|
122
|
+
.container--narrow { max-width: var(--container-narrow); }
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Section rhythm — alternating density:**
|
|
126
|
+
```
|
|
127
|
+
[HERO — full-bleed, dense, dark]
|
|
128
|
+
[PROBLEM — spacious, light, breathing room]
|
|
129
|
+
[SOLUTION — medium density, alternating columns]
|
|
130
|
+
[PROOF — full-bleed, dark, contrasting]
|
|
131
|
+
[CTA — full-bleed, gradient, dense]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Grid patterns:**
|
|
135
|
+
- Stats/numbers: `grid-template-columns: repeat(auto-fit, minmax(200px, 1fr))`
|
|
136
|
+
- Cards: `grid-template-columns: repeat(auto-fill, minmax(300px, 1fr))`
|
|
137
|
+
- Two-column content: `grid-template-columns: 1fr 1fr` with `gap: var(--space-16)`
|
|
138
|
+
- Asymmetric: `grid-template-columns: 1.2fr 0.8fr`
|
|
139
|
+
|
|
140
|
+
### 3. Typography Rules
|
|
141
|
+
|
|
142
|
+
- **Display (hero):** --font-display, weight 800, --leading-tight, --tracking-tight
|
|
143
|
+
- **Headings:** --font-display, weight 700, --leading-tight
|
|
144
|
+
- **Body:** --font-body, weight 400-500, --leading-normal
|
|
145
|
+
- **Labels/badges:** --font-body, weight 600, uppercase, --tracking-widest, --text-caption
|
|
146
|
+
- **NEVER** use font-size less than 16px for body text on mobile
|
|
147
|
+
- **ALWAYS** use clamp() for fluid sizing between breakpoints
|
|
148
|
+
|
|
149
|
+
### 4. Color Usage
|
|
150
|
+
|
|
151
|
+
- Background alternation: --color-surface → --color-surface-alt → --color-surface-dark
|
|
152
|
+
- Text: --color-on-surface for primary, --color-on-surface-muted for secondary
|
|
153
|
+
- Accent: ONLY on CTAs, key numbers, highlights, and active states (<15% of page)
|
|
154
|
+
- Gradients: Use subtle gradients (same hue, different lightness) for backgrounds
|
|
155
|
+
- Never use opacity for text colors — use explicit muted color tokens
|
|
156
|
+
|
|
157
|
+
### 5. Component Patterns
|
|
158
|
+
|
|
159
|
+
**Button/CTA:**
|
|
160
|
+
```css
|
|
161
|
+
.btn-primary {
|
|
162
|
+
background: var(--color-accent);
|
|
163
|
+
color: var(--color-white);
|
|
164
|
+
padding: var(--space-4) var(--space-8);
|
|
165
|
+
border-radius: var(--radius-md);
|
|
166
|
+
font-weight: 700;
|
|
167
|
+
font-size: var(--text-body);
|
|
168
|
+
box-shadow: var(--shadow-accent);
|
|
169
|
+
transition: all var(--duration-normal) var(--ease-out);
|
|
170
|
+
}
|
|
171
|
+
.btn-primary:hover {
|
|
172
|
+
background: var(--color-accent-hover);
|
|
173
|
+
transform: translateY(-2px);
|
|
174
|
+
box-shadow: var(--shadow-lg);
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Card:**
|
|
179
|
+
```css
|
|
180
|
+
.card {
|
|
181
|
+
background: var(--color-surface);
|
|
182
|
+
border-radius: var(--radius-lg);
|
|
183
|
+
padding: var(--space-8);
|
|
184
|
+
box-shadow: var(--shadow-md);
|
|
185
|
+
border: 1px solid oklch(0 0 0 / 0.05);
|
|
186
|
+
transition: all var(--duration-normal) var(--ease-out);
|
|
187
|
+
}
|
|
188
|
+
.card:hover {
|
|
189
|
+
transform: translateY(-4px);
|
|
190
|
+
box-shadow: var(--shadow-lg);
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Badge/Pill:**
|
|
195
|
+
```css
|
|
196
|
+
.badge {
|
|
197
|
+
display: inline-flex;
|
|
198
|
+
align-items: center;
|
|
199
|
+
gap: var(--space-2);
|
|
200
|
+
padding: var(--space-1) var(--space-3);
|
|
201
|
+
border-radius: var(--radius-full);
|
|
202
|
+
font-size: var(--text-caption);
|
|
203
|
+
font-weight: 600;
|
|
204
|
+
letter-spacing: var(--tracking-wide);
|
|
205
|
+
text-transform: uppercase;
|
|
206
|
+
background: var(--color-accent-subtle);
|
|
207
|
+
color: var(--color-accent);
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### 6. Animation Guidelines
|
|
212
|
+
|
|
213
|
+
**Scroll reveals (IntersectionObserver):**
|
|
214
|
+
```css
|
|
215
|
+
.reveal {
|
|
216
|
+
opacity: 0;
|
|
217
|
+
transform: translateY(24px);
|
|
218
|
+
transition: opacity var(--duration-slow) var(--ease-out),
|
|
219
|
+
transform var(--duration-slow) var(--ease-out);
|
|
220
|
+
}
|
|
221
|
+
.reveal.visible {
|
|
222
|
+
opacity: 1;
|
|
223
|
+
transform: translateY(0);
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
- Stagger children: `transition-delay: calc(var(--index) * 80ms)`
|
|
228
|
+
- Only animate `opacity` and `transform` — never width, height, margin, or padding
|
|
229
|
+
- Use `will-change: transform, opacity` on animated elements
|
|
230
|
+
- Respect `prefers-reduced-motion` media query
|
|
231
|
+
|
|
232
|
+
### 7. Responsive Strategy
|
|
233
|
+
|
|
234
|
+
- Mobile-first: base styles are mobile, media queries add desktop
|
|
235
|
+
- Breakpoints: 640px (sm), 768px (md), 1024px (lg), 1280px (xl)
|
|
236
|
+
- Use `clamp()` for fluid values between breakpoints
|
|
237
|
+
- Stack columns on mobile, grid on desktop
|
|
238
|
+
- Touch targets: minimum 44x44px on mobile
|
|
239
|
+
- Hide non-essential content on mobile (less is more)
|
|
240
|
+
|
|
241
|
+
### 8. Performance Requirements
|
|
242
|
+
|
|
243
|
+
- Single HTML file with inline CSS and JS
|
|
244
|
+
- Fonts: max 2 families, preconnect + font-display: swap
|
|
245
|
+
- Images: WebP, lazy loading, explicit dimensions (aspect-ratio)
|
|
246
|
+
- JS: vanilla only, defer/async, IntersectionObserver for scroll effects
|
|
247
|
+
- Target: Lighthouse 95+ on all categories
|
|
248
|
+
- Above-the-fold content must render without JS
|
|
249
|
+
|
|
250
|
+
### 9. Accessibility Minimum
|
|
251
|
+
|
|
252
|
+
- Semantic HTML: header, nav, main, section, article, footer
|
|
253
|
+
- Heading hierarchy: single H1, sequential H2-H6
|
|
254
|
+
- Color contrast: 4.5:1 for text, 3:1 for UI elements
|
|
255
|
+
- Focus-visible on all interactive elements
|
|
256
|
+
- ARIA attributes on custom widgets (accordion, modal)
|
|
257
|
+
- Skip-to-content link
|
|
258
|
+
- Form labels and error messages
|
|
259
|
+
- lang attribute on html element
|
|
260
|
+
|
|
261
|
+
### 10. Quality Checklist
|
|
262
|
+
|
|
263
|
+
Before finalizing any landing page:
|
|
264
|
+
|
|
265
|
+
- [ ] All values use CSS custom properties (zero hardcoded)
|
|
266
|
+
- [ ] Typography uses clamp() for fluid sizing
|
|
267
|
+
- [ ] Shadows are multi-layered (min 2 layers)
|
|
268
|
+
- [ ] Whitespace between sections is generous (80-128px)
|
|
269
|
+
- [ ] Max 3 colors used (base + surface + accent)
|
|
270
|
+
- [ ] CTAs have accent shadow (--shadow-accent)
|
|
271
|
+
- [ ] Cards/elements have subtle borders (1px, <5% opacity)
|
|
272
|
+
- [ ] Scroll animations use IntersectionObserver
|
|
273
|
+
- [ ] Respects prefers-reduced-motion
|
|
274
|
+
- [ ] Mobile-first CSS with min-width media queries
|
|
275
|
+
- [ ] All images have alt text
|
|
276
|
+
- [ ] Form inputs have associated labels
|
|
277
|
+
- [ ] Focus states are visible and styled
|
|
278
|
+
- [ ] Lighthouse score >90 in all categories
|
|
279
|
+
- [ ] "Squint test" passes — hierarchy is clear at a glance
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
platform: linkedin
|
|
3
|
+
format: article
|
|
4
|
+
constraints:
|
|
5
|
+
max_chars: null
|
|
6
|
+
image_ratio: "1.91:1"
|
|
7
|
+
max_hashtags: 5
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Best Practices: LinkedIn — Article
|
|
11
|
+
|
|
12
|
+
## Format Rules
|
|
13
|
+
|
|
14
|
+
- No character limit; ideal length is 1500–3000 words for depth without drop-off
|
|
15
|
+
- Title: up to 100 characters; should include the primary keyword
|
|
16
|
+
- Cover image: 1200x627px minimum; shown prominently in article header and feed preview
|
|
17
|
+
- Supports full rich text: headers (H1–H3), bold, italic, bullet lists, numbered lists, block quotes, images, and embedded media
|
|
18
|
+
- Articles are indexed by LinkedIn search and Google — treat them as SEO assets
|
|
19
|
+
- Published articles appear in the "Articles" tab of your profile permanently
|
|
20
|
+
|
|
21
|
+
## Structure
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
[TITLE — keyword-forward, benefit-driven, under 70 characters]
|
|
25
|
+
|
|
26
|
+
[COVER IMAGE — relevant, high quality]
|
|
27
|
+
|
|
28
|
+
[INTRODUCTION — 100–150 words]
|
|
29
|
+
- Hook sentence
|
|
30
|
+
- State the problem or opportunity
|
|
31
|
+
- Preview what the reader will get
|
|
32
|
+
|
|
33
|
+
[H2 SECTION 1 — first main point]
|
|
34
|
+
[2–3 paragraphs, each under 100 words]
|
|
35
|
+
|
|
36
|
+
[H2 SECTION 2 — second main point]
|
|
37
|
+
[Include an example, case study, or data point]
|
|
38
|
+
|
|
39
|
+
[H2 SECTION 3 — practical application]
|
|
40
|
+
[Numbered list or actionable steps]
|
|
41
|
+
|
|
42
|
+
[PULL QUOTE — one memorable sentence formatted as block quote]
|
|
43
|
+
|
|
44
|
+
[CONCLUSION — 100–150 words]
|
|
45
|
+
- Summarize key takeaways
|
|
46
|
+
- Reinforce the transformation
|
|
47
|
+
- End with a call to action (share, comment, follow)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Guidelines
|
|
51
|
+
|
|
52
|
+
- **Thought leadership, not content marketing.** Articles should advance a real argument or reveal a genuine insight, not just summarize common knowledge.
|
|
53
|
+
- Open with a story, a counterintuitive claim, or a specific scenario — not background context.
|
|
54
|
+
- Use H2 and H3 headers generously; they improve readability and LinkedIn search indexing.
|
|
55
|
+
- Include one original data point, personal case study, or proprietary framework per article.
|
|
56
|
+
- Link to external sources sparingly; keep readers in the article.
|
|
57
|
+
- Add a professional author bio section at the end with a link to your profile or website.
|
|
58
|
+
- Republish blog content to LinkedIn Articles after a 2-week delay (canonical URL won't conflict significantly).
|
|
59
|
+
- Share the article as a native post to get initial distribution; articles alone have limited feed visibility.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
|
|
63
|
+
**Strong title patterns:**
|
|
64
|
+
- "The Hidden Cost of [Common Practice] (And What to Do Instead)"
|
|
65
|
+
- "How [Company/Person] Achieved [Result] Using [Method]"
|
|
66
|
+
- "Why [Popular Belief] Is Wrong — And What the Data Shows"
|
|
67
|
+
|
|
68
|
+
**Introduction template:**
|
|
69
|
+
```
|
|
70
|
+
[Opening line that challenges an assumption or tells a story]
|
|
71
|
+
|
|
72
|
+
[1–2 sentences of context]
|
|
73
|
+
|
|
74
|
+
In this article, I'll share [specific takeaway 1], [specific takeaway 2], and [specific takeaway 3] — based on [your experience/data/research].
|
|
75
|
+
|
|
76
|
+
[Transition sentence that pulls the reader into Section 1]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Conclusion CTA:**
|
|
80
|
+
```
|
|
81
|
+
If this resonated, share it with someone navigating the same challenge.
|
|
82
|
+
I publish one article each month on [topic]. Follow me to stay in the loop.
|
|
83
|
+
```
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
platform: linkedin
|
|
3
|
+
format: post
|
|
4
|
+
constraints:
|
|
5
|
+
max_chars: 3000
|
|
6
|
+
image_ratio: "1.91:1"
|
|
7
|
+
max_hashtags: 5
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Best Practices: LinkedIn — Feed Post
|
|
11
|
+
|
|
12
|
+
## Format Rules
|
|
13
|
+
|
|
14
|
+
- Character limit: 3000 characters
|
|
15
|
+
- Preview cutoff: ~210 characters before "...see more" on desktop; ~140 on mobile
|
|
16
|
+
- Images: 1200x627px (1.91:1) for single images; 1080x1080px also works well
|
|
17
|
+
- Hashtags: 3–5 is the LinkedIn-recommended range; more dilutes reach
|
|
18
|
+
- No external links in the post body — they suppress reach. Use first comment for links.
|
|
19
|
+
- Polls, documents (carousels), and native video get boosted distribution
|
|
20
|
+
|
|
21
|
+
## Structure
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
[HOOK — 1–2 lines, no period, make them click "see more"]
|
|
25
|
+
|
|
26
|
+
[BLANK LINE]
|
|
27
|
+
|
|
28
|
+
[SETUP — 2–3 lines establishing context or problem]
|
|
29
|
+
|
|
30
|
+
[BLANK LINE]
|
|
31
|
+
|
|
32
|
+
[BODY — 3–7 short paragraphs or a numbered/bulleted list]
|
|
33
|
+
- Each point on its own line
|
|
34
|
+
- White space is critical for readability
|
|
35
|
+
|
|
36
|
+
[BLANK LINE]
|
|
37
|
+
|
|
38
|
+
[PERSONAL INSIGHT or LESSON]
|
|
39
|
+
|
|
40
|
+
[BLANK LINE]
|
|
41
|
+
|
|
42
|
+
[CTA — one direct question to invite comments]
|
|
43
|
+
|
|
44
|
+
[HASHTAGS — 3–5 at the end]
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Guidelines
|
|
48
|
+
|
|
49
|
+
- **Lead with the hook, not with context.** "I was wrong about X" beats "Let me share some thoughts about X."
|
|
50
|
+
- Write conversationally. LinkedIn users skim; short paragraphs hold attention.
|
|
51
|
+
- Personal stories outperform general advice by 3–5x engagement. "I" > "You" > "One."
|
|
52
|
+
- End with an open question that is easy to answer in one sentence — lowers the comment friction.
|
|
53
|
+
- Engage within the first 60 minutes after posting to signal activity to the algorithm.
|
|
54
|
+
- Tag people sparingly and only when directly relevant — avoid tag-baiting.
|
|
55
|
+
- Native documents (uploaded PDFs formatted as carousels) have the highest dwell time.
|
|
56
|
+
- Post 3–5 times per week for consistent reach growth.
|
|
57
|
+
|
|
58
|
+
## Examples
|
|
59
|
+
|
|
60
|
+
**Hook variants:**
|
|
61
|
+
- "I turned down a $500K offer. Here's why."
|
|
62
|
+
- "3 things every senior engineer knows that junior engineers don't"
|
|
63
|
+
- "My biggest career mistake — and what it taught me"
|
|
64
|
+
|
|
65
|
+
**Full post (condensed):**
|
|
66
|
+
```
|
|
67
|
+
I spent 2 years building the wrong product.
|
|
68
|
+
|
|
69
|
+
We had 100+ users. Revenue was growing. The team was motivated.
|
|
70
|
+
|
|
71
|
+
But I ignored every signal that told me to pivot.
|
|
72
|
+
|
|
73
|
+
Here's what I learned:
|
|
74
|
+
|
|
75
|
+
1. Revenue isn't validation — it's a lagging indicator
|
|
76
|
+
2. Churn rate tells the real story
|
|
77
|
+
3. Your best users are not your average users
|
|
78
|
+
|
|
79
|
+
The hardest decision isn't to quit. It's to redirect.
|
|
80
|
+
|
|
81
|
+
What's a hard pivot you've made that you don't regret?
|
|
82
|
+
|
|
83
|
+
#startups #productmanagement #entrepreneurship
|
|
84
|
+
```
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
platform: universal
|
|
3
|
+
format: research
|
|
4
|
+
constraints:
|
|
5
|
+
max_chars: null
|
|
6
|
+
image_ratio: null
|
|
7
|
+
max_hashtags: null
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Best Practices: Research Methodology
|
|
11
|
+
|
|
12
|
+
## Core Principles
|
|
13
|
+
|
|
14
|
+
Quality research is the foundation of credible content. It involves systematic source discovery, critical evaluation, and structured synthesis.
|
|
15
|
+
|
|
16
|
+
- **Primary over secondary.** Original data, firsthand accounts, and official publications outweigh summaries and aggregations.
|
|
17
|
+
- **Triangulate claims.** Any key fact should be verified by at least 2–3 independent sources.
|
|
18
|
+
- **Date everything.** A statistic from 2018 may be misleading in 2025. Always surface the publication date.
|
|
19
|
+
- **Follow the chain.** When a source cites a study, find and read the original study — not the summary.
|
|
20
|
+
|
|
21
|
+
## Research Process
|
|
22
|
+
|
|
23
|
+
### Phase 1: Define the Research Question
|
|
24
|
+
- State the specific question being answered
|
|
25
|
+
- Identify what type of evidence is needed (quantitative, qualitative, expert opinion, case study)
|
|
26
|
+
- Define the scope: time range, geography, industry, audience
|
|
27
|
+
|
|
28
|
+
### Phase 2: Source Discovery
|
|
29
|
+
- Academic: Google Scholar, PubMed, ResearchGate, JSTOR
|
|
30
|
+
- Industry: Gartner, Forrester, McKinsey, Statista, Nielsen
|
|
31
|
+
- News: Reuters, AP, Bloomberg, industry trade publications
|
|
32
|
+
- Primary: original surveys, interviews, experiments, official reports
|
|
33
|
+
- Social: forums, communities (Reddit, Quora) for sentiment and pain points (not as citable fact)
|
|
34
|
+
|
|
35
|
+
### Phase 3: Source Evaluation — SIFT Method
|
|
36
|
+
- **Stop** — pause before sharing or using any source
|
|
37
|
+
- **Investigate the source** — who wrote it, who published it, what are their incentives?
|
|
38
|
+
- **Find better coverage** — look for the original source or corroboration
|
|
39
|
+
- **Trace claims** — follow citations back to their origin
|
|
40
|
+
|
|
41
|
+
### Phase 4: Synthesis
|
|
42
|
+
- Group findings by theme, not by source
|
|
43
|
+
- Note consensus vs. disagreement across sources
|
|
44
|
+
- Identify gaps in the existing research
|
|
45
|
+
|
|
46
|
+
## Structure
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
[RESEARCH BRIEF]
|
|
50
|
+
- Question:
|
|
51
|
+
- Context:
|
|
52
|
+
- Required evidence type:
|
|
53
|
+
- Date range:
|
|
54
|
+
|
|
55
|
+
[SOURCE LIST]
|
|
56
|
+
- Source 1: [Title, Author, Publication, Date, URL]
|
|
57
|
+
- Source 2: ...
|
|
58
|
+
- Credibility rating: High / Medium / Low
|
|
59
|
+
|
|
60
|
+
[KEY FINDINGS]
|
|
61
|
+
- Finding 1: [Claim] — Source: [Citation] — Date: [YYYY]
|
|
62
|
+
- Finding 2: ...
|
|
63
|
+
|
|
64
|
+
[GAPS AND CAVEATS]
|
|
65
|
+
- What the research does NOT address
|
|
66
|
+
- Potential biases in the sources
|
|
67
|
+
|
|
68
|
+
[SYNTHESIS]
|
|
69
|
+
- What the evidence collectively supports
|
|
70
|
+
- Recommended interpretation for the content piece
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Guidelines
|
|
74
|
+
|
|
75
|
+
- Reject statistics without a clear source. "Studies show..." with no citation is not evidence.
|
|
76
|
+
- Note the difference between correlation and causation in quantitative findings.
|
|
77
|
+
- For content, prefer the most recent data available — but note when a dated source is used.
|
|
78
|
+
- When expert opinions conflict, present the disagreement honestly rather than cherry-picking.
|
|
79
|
+
- Keep a research log for every project; it enables fact-checking and updates later.
|
|
80
|
+
- Wikipedia is acceptable for orientation — not as a primary citation.
|
|
81
|
+
|
|
82
|
+
## Source Quality Tiers
|
|
83
|
+
|
|
84
|
+
| Tier | Examples | Use For |
|
|
85
|
+
|------|----------|---------|
|
|
86
|
+
| 1 - Primary | Original studies, official data, direct interviews | Core claims, statistics |
|
|
87
|
+
| 2 - Expert | Industry reports, peer-reviewed journals | Supporting evidence |
|
|
88
|
+
| 3 - Reputable media | Reuters, NYT, Bloomberg | Context and news |
|
|
89
|
+
| 4 - Secondary | Blogs, influencers, aggregators | Leads to primary sources only |
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
platform: universal
|
|
3
|
+
format: content-review
|
|
4
|
+
constraints:
|
|
5
|
+
max_chars: null
|
|
6
|
+
image_ratio: null
|
|
7
|
+
max_hashtags: null
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Best Practices: Content Review and Quality Assurance
|
|
11
|
+
|
|
12
|
+
## Core Principles
|
|
13
|
+
|
|
14
|
+
A content review is not just proofreading — it is a structured quality gate that ensures accuracy, brand alignment, strategic fit, and platform appropriateness before publication.
|
|
15
|
+
|
|
16
|
+
- Review with fresh eyes: wait at least 30 minutes after writing before reviewing.
|
|
17
|
+
- Review for the reader, not the writer — what the audience will understand matters more than what the author intended.
|
|
18
|
+
- Use a checklist, not memory — cognitive load causes reviewers to miss consistent categories of errors.
|
|
19
|
+
|
|
20
|
+
## Review Layers
|
|
21
|
+
|
|
22
|
+
### Layer 1: Structural Review
|
|
23
|
+
- Does the piece fulfill its stated objective?
|
|
24
|
+
- Is the structure logical and easy to navigate?
|
|
25
|
+
- Is the hook strong enough for the platform?
|
|
26
|
+
- Is the CTA clear, singular, and appropriate?
|
|
27
|
+
|
|
28
|
+
### Layer 2: Accuracy Review
|
|
29
|
+
- Are all statistics cited with a source and date?
|
|
30
|
+
- Are all factual claims verifiable?
|
|
31
|
+
- Are product names, brand names, and prices correct?
|
|
32
|
+
- Are there any legal or compliance risks (unverified health claims, competitor comparisons, testimonials)?
|
|
33
|
+
|
|
34
|
+
### Layer 3: Brand and Voice Review
|
|
35
|
+
- Does the tone match the brand voice guide?
|
|
36
|
+
- Are brand-specific terminology and spellings consistent?
|
|
37
|
+
- Is the content appropriate for the audience (reading level, cultural sensitivity)?
|
|
38
|
+
|
|
39
|
+
### Layer 4: Platform Review
|
|
40
|
+
- Does the format meet platform constraints (character limits, image specs, hashtag counts)?
|
|
41
|
+
- Is the content optimized for the platform's algorithm (SEO keywords, engagement triggers)?
|
|
42
|
+
- Are links, tags, and mentions correct?
|
|
43
|
+
|
|
44
|
+
### Layer 5: Copy Edit
|
|
45
|
+
- Grammar, spelling, and punctuation
|
|
46
|
+
- Sentence flow and readability (aim for Flesch-Kincaid Grade 7–9 for general audiences)
|
|
47
|
+
- Consistency in tense, voice, and formatting
|
|
48
|
+
|
|
49
|
+
## Structure (Review Report)
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
[CONTENT TITLE / ID]
|
|
53
|
+
[REVIEWER NAME]
|
|
54
|
+
[REVIEW DATE]
|
|
55
|
+
[PLATFORM AND FORMAT]
|
|
56
|
+
|
|
57
|
+
[SUMMARY VERDICT]
|
|
58
|
+
- Status: Approved / Approved with changes / Requires revision / Rejected
|
|
59
|
+
- Priority issues: [list]
|
|
60
|
+
|
|
61
|
+
[STRUCTURAL NOTES]
|
|
62
|
+
[ACCURACY FLAGS]
|
|
63
|
+
[BRAND ALIGNMENT NOTES]
|
|
64
|
+
[PLATFORM COMPLIANCE NOTES]
|
|
65
|
+
[COPY EDITS — inline or attached]
|
|
66
|
+
|
|
67
|
+
[REVISION REQUIRED BY (date)]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Guidelines
|
|
71
|
+
|
|
72
|
+
- Never approve content with unverified statistics or missing source citations.
|
|
73
|
+
- Flag but do not unilaterally change strategic decisions — escalate to the content strategist.
|
|
74
|
+
- Use a shared annotation tool (Google Docs comments, Notion inline comments) to keep feedback traceable.
|
|
75
|
+
- Distinguish between required changes and suggested improvements — use clear labels.
|
|
76
|
+
- Final approval requires sign-off from at least one reviewer who did not write the content.
|
|
77
|
+
- For regulated industries (health, finance, legal), require specialist compliance review before publishing.
|
|
78
|
+
|
|
79
|
+
## Review Checklist Template
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
[ ] Objective clearly met
|
|
83
|
+
[ ] Hook appropriate for platform
|
|
84
|
+
[ ] One clear CTA
|
|
85
|
+
[ ] All facts cited with source + date
|
|
86
|
+
[ ] No unverifiable claims
|
|
87
|
+
[ ] Brand voice consistent
|
|
88
|
+
[ ] No competitor disparagement without legal clearance
|
|
89
|
+
[ ] Platform constraints met (chars, image specs, hashtags)
|
|
90
|
+
[ ] SEO/algorithm elements present (keywords, alt text)
|
|
91
|
+
[ ] Grammar and spelling clean
|
|
92
|
+
[ ] All links functional
|
|
93
|
+
[ ] Author bio / attribution correct (if applicable)
|
|
94
|
+
[ ] Legal/compliance sign-off (if required)
|
|
95
|
+
```
|