telo3-ai 5.0.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/AI-CONTEXT.md +263 -0
- package/LICENSE +21 -0
- package/ONBOARDING-SKILL.md +728 -0
- package/README.md +801 -0
- package/SKILL-METADATA.json +237 -0
- package/SKILL.md +666 -0
- package/cli.js +84 -0
- package/index.js +65 -0
- package/package.json +97 -0
- package/references/accessibility-quality.md +278 -0
- package/references/ai-behavior.md +363 -0
- package/references/document-specification.md +425 -0
- package/references/legal-compliance.md +408 -0
- package/references/performance-quality.md +351 -0
- package/references/privacy-compliance.md +494 -0
- package/references/project-audit.md +468 -0
- package/references/security-quality.md +254 -0
- package/references/seo-quality.md +347 -0
- package/references/smart-skill-delegation.md +451 -0
- package/references/token-optimization.md +481 -0
- package/references/ui-quality.md +491 -0
- package/references/workflow.md +474 -0
- package/scripts/init-project-context.sh +139 -0
- package/scripts/validate-project-context.sh +164 -0
- package/templates/architecture.md +418 -0
- package/templates/design.md +654 -0
- package/templates/memory.md +368 -0
- package/templates/prd.md +320 -0
- package/templates/rules.md +619 -0
- package/templates/tasks.md +220 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
# SEO Quality Standards
|
|
2
|
+
|
|
3
|
+
> SEO audit framework for public websites, portfolios, documentation, marketing sites, and indexable applications.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## When SEO Applies
|
|
8
|
+
|
|
9
|
+
✅ **Apply SEO to:**
|
|
10
|
+
- Marketing websites
|
|
11
|
+
- Portfolios
|
|
12
|
+
- Blogs and documentation
|
|
13
|
+
- E-commerce sites
|
|
14
|
+
- Public-facing applications
|
|
15
|
+
- Content platforms
|
|
16
|
+
|
|
17
|
+
❌ **SEO may NOT apply to:**
|
|
18
|
+
- Private dashboards
|
|
19
|
+
- Internal tools
|
|
20
|
+
- Authenticated-only pages
|
|
21
|
+
- APIs
|
|
22
|
+
- Intentionally non-indexable pages
|
|
23
|
+
|
|
24
|
+
**Assess applicability based on actual project purpose.**
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## SEO Audit Checklist
|
|
29
|
+
|
|
30
|
+
### 1. Meta Tags
|
|
31
|
+
|
|
32
|
+
#### Title Tags
|
|
33
|
+
- [ ] Every page has unique `<title>`
|
|
34
|
+
- [ ] Title length: 50-60 characters
|
|
35
|
+
- [ ] Primary keyword near the beginning
|
|
36
|
+
- [ ] Format: `Page Title | Site Name`
|
|
37
|
+
|
|
38
|
+
#### Meta Descriptions
|
|
39
|
+
- [ ] Every page has unique `<meta name="description">`
|
|
40
|
+
- [ ] Description length: 150-160 characters
|
|
41
|
+
- [ ] Compelling, actionable copy
|
|
42
|
+
- [ ] Includes target keywords naturally
|
|
43
|
+
|
|
44
|
+
#### Canonical URLs
|
|
45
|
+
- [ ] Canonical URLs set (`<link rel="canonical">`)
|
|
46
|
+
- [ ] Prevents duplicate content issues
|
|
47
|
+
- [ ] Points to preferred URL version
|
|
48
|
+
|
|
49
|
+
### 2. Open Graph & Social
|
|
50
|
+
|
|
51
|
+
#### Open Graph Tags
|
|
52
|
+
- [ ] `og:title` — Page title
|
|
53
|
+
- [ ] `og:description` — Page description
|
|
54
|
+
- [ ] `og:image` — Social share image (1200x630px recommended)
|
|
55
|
+
- [ ] `og:url` — Canonical URL
|
|
56
|
+
- [ ] `og:type` — Content type (website, article, etc.)
|
|
57
|
+
|
|
58
|
+
#### Twitter Cards
|
|
59
|
+
- [ ] `twitter:card` — Card type (summary_large_image)
|
|
60
|
+
- [ ] `twitter:title` — Page title
|
|
61
|
+
- [ ] `twitter:description` — Page description
|
|
62
|
+
- [ ] `twitter:image` — Social share image
|
|
63
|
+
|
|
64
|
+
### 3. Structured Data
|
|
65
|
+
|
|
66
|
+
- [ ] Schema.org structured data where applicable
|
|
67
|
+
- [ ] JSON-LD format
|
|
68
|
+
- [ ] Common schemas:
|
|
69
|
+
- Organization
|
|
70
|
+
- Person (for portfolios)
|
|
71
|
+
- Article (for blog posts)
|
|
72
|
+
- Product (for e-commerce)
|
|
73
|
+
- FAQ
|
|
74
|
+
- Breadcrumbs
|
|
75
|
+
- [ ] Validate with Google Rich Results Test
|
|
76
|
+
|
|
77
|
+
### 4. Content & HTML
|
|
78
|
+
|
|
79
|
+
#### Heading Hierarchy
|
|
80
|
+
- [ ] One `<h1>` per page
|
|
81
|
+
- [ ] Logical heading hierarchy (h1 → h2 → h3)
|
|
82
|
+
- [ ] Headings describe content structure
|
|
83
|
+
- [ ] No skipped heading levels
|
|
84
|
+
|
|
85
|
+
#### Semantic HTML
|
|
86
|
+
- [ ] Use semantic elements (`<article>`, `<nav>`, `<main>`, `<aside>`)
|
|
87
|
+
- [ ] Proper `<header>` and `<footer>`
|
|
88
|
+
- [ ] Lists use `<ul>`, `<ol>`, `<li>`
|
|
89
|
+
|
|
90
|
+
#### Images
|
|
91
|
+
- [ ] All images have descriptive `alt` text
|
|
92
|
+
- [ ] Alt text describes image content
|
|
93
|
+
- [ ] Decorative images: `alt=""`
|
|
94
|
+
- [ ] Images optimized (WebP/AVIF with fallbacks)
|
|
95
|
+
- [ ] Images have width/height attributes
|
|
96
|
+
|
|
97
|
+
#### Links
|
|
98
|
+
- [ ] Descriptive link text (not "click here")
|
|
99
|
+
- [ ] Internal linking strategy
|
|
100
|
+
- [ ] External links use `rel="noopener"` when appropriate
|
|
101
|
+
- [ ] Broken links identified and fixed
|
|
102
|
+
|
|
103
|
+
#### URLs
|
|
104
|
+
- [ ] Clean, descriptive URLs (kebab-case)
|
|
105
|
+
- [ ] Keywords in URLs
|
|
106
|
+
- [ ] No unnecessary parameters
|
|
107
|
+
- [ ] Consistent URL structure
|
|
108
|
+
|
|
109
|
+
### 5. Technical SEO
|
|
110
|
+
|
|
111
|
+
#### robots.txt
|
|
112
|
+
- [ ] robots.txt file exists
|
|
113
|
+
- [ ] Configured correctly
|
|
114
|
+
- [ ] Allows search engines
|
|
115
|
+
- [ ] Disallows admin/private areas
|
|
116
|
+
- [ ] References sitemap.xml
|
|
117
|
+
|
|
118
|
+
Example:
|
|
119
|
+
```
|
|
120
|
+
User-agent: *
|
|
121
|
+
Allow: /
|
|
122
|
+
|
|
123
|
+
Disallow: /api/
|
|
124
|
+
Disallow: /admin/
|
|
125
|
+
|
|
126
|
+
Sitemap: https://example.com/sitemap.xml
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Sitemap
|
|
130
|
+
- [ ] XML sitemap exists (`sitemap.xml`)
|
|
131
|
+
- [ ] Lists all important pages
|
|
132
|
+
- [ ] Updated automatically
|
|
133
|
+
- [ ] Submitted to Google Search Console
|
|
134
|
+
|
|
135
|
+
#### robots Meta Tag
|
|
136
|
+
- [ ] Indexable pages: `<meta name="robots" content="index, follow">`
|
|
137
|
+
- [ ] Non-indexable pages: `<meta name="robots" content="noindex, nofollow">`
|
|
138
|
+
- [ ] Appropriate use of `noindex` for private/admin pages
|
|
139
|
+
|
|
140
|
+
### 6. Performance (Core Web Vitals)
|
|
141
|
+
|
|
142
|
+
See `performance-quality.md` for detailed performance optimization.
|
|
143
|
+
|
|
144
|
+
#### LCP (Largest Contentful Paint)
|
|
145
|
+
- [ ] LCP < 2.5 seconds
|
|
146
|
+
- [ ] Optimize images
|
|
147
|
+
- [ ] Reduce server response time
|
|
148
|
+
|
|
149
|
+
#### FID/INP (First Input Delay / Interaction to Next Paint)
|
|
150
|
+
- [ ] FID < 100ms or INP < 200ms
|
|
151
|
+
- [ ] Minimize JavaScript
|
|
152
|
+
- [ ] Break up long tasks
|
|
153
|
+
|
|
154
|
+
#### CLS (Cumulative Layout Shift)
|
|
155
|
+
- [ ] CLS < 0.1
|
|
156
|
+
- [ ] Set image dimensions
|
|
157
|
+
- [ ] Avoid layout shifts
|
|
158
|
+
|
|
159
|
+
### 7. Mobile Optimization
|
|
160
|
+
|
|
161
|
+
- [ ] Mobile-responsive design
|
|
162
|
+
- [ ] Mobile-friendly test passes
|
|
163
|
+
- [ ] Touch targets ≥44x44px
|
|
164
|
+
- [ ] Text readable without zooming
|
|
165
|
+
- [ ] No horizontal scrolling
|
|
166
|
+
|
|
167
|
+
### 8. Page Speed
|
|
168
|
+
|
|
169
|
+
- [ ] Fast server response time
|
|
170
|
+
- [ ] Optimized images
|
|
171
|
+
- [ ] Minimized CSS/JS
|
|
172
|
+
- [ ] Leverage browser caching
|
|
173
|
+
- [ ] Use CDN if appropriate
|
|
174
|
+
|
|
175
|
+
### 9. HTTPS
|
|
176
|
+
|
|
177
|
+
- [ ] Site uses HTTPS
|
|
178
|
+
- [ ] Mixed content issues resolved
|
|
179
|
+
- [ ] HTTP redirects to HTTPS
|
|
180
|
+
|
|
181
|
+
### 10. Indexability
|
|
182
|
+
|
|
183
|
+
- [ ] Pages are crawlable
|
|
184
|
+
- [ ] No JavaScript-only content for critical info
|
|
185
|
+
- [ ] Server-side rendering or static generation for public pages
|
|
186
|
+
- [ ] No infinite scroll blocking content
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Next.js SEO Implementation
|
|
191
|
+
|
|
192
|
+
### Metadata API (App Router)
|
|
193
|
+
|
|
194
|
+
```typescript
|
|
195
|
+
import { Metadata } from 'next';
|
|
196
|
+
|
|
197
|
+
export const metadata: Metadata = {
|
|
198
|
+
title: 'Page Title | Site Name',
|
|
199
|
+
description: 'Page description 150-160 characters',
|
|
200
|
+
openGraph: {
|
|
201
|
+
title: 'Page Title',
|
|
202
|
+
description: 'Page description',
|
|
203
|
+
images: ['/og-image.jpg'],
|
|
204
|
+
url: 'https://example.com/page',
|
|
205
|
+
},
|
|
206
|
+
twitter: {
|
|
207
|
+
card: 'summary_large_image',
|
|
208
|
+
title: 'Page Title',
|
|
209
|
+
description: 'Page description',
|
|
210
|
+
images: ['/og-image.jpg'],
|
|
211
|
+
},
|
|
212
|
+
alternates: {
|
|
213
|
+
canonical: 'https://example.com/page',
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Dynamic Metadata
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
export async function generateMetadata({ params }): Promise<Metadata> {
|
|
222
|
+
const post = await getPost(params.slug);
|
|
223
|
+
|
|
224
|
+
return {
|
|
225
|
+
title: post.title,
|
|
226
|
+
description: post.excerpt,
|
|
227
|
+
// ...
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Sitemap Generation
|
|
233
|
+
|
|
234
|
+
```typescript
|
|
235
|
+
// app/sitemap.ts
|
|
236
|
+
export default function sitemap() {
|
|
237
|
+
return [
|
|
238
|
+
{
|
|
239
|
+
url: 'https://example.com',
|
|
240
|
+
lastModified: new Date(),
|
|
241
|
+
changeFrequency: 'yearly',
|
|
242
|
+
priority: 1,
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
url: 'https://example.com/about',
|
|
246
|
+
lastModified: new Date(),
|
|
247
|
+
changeFrequency: 'monthly',
|
|
248
|
+
priority: 0.8,
|
|
249
|
+
},
|
|
250
|
+
];
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### robots.txt
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
// app/robots.ts
|
|
258
|
+
export default function robots() {
|
|
259
|
+
return {
|
|
260
|
+
rules: {
|
|
261
|
+
userAgent: '*',
|
|
262
|
+
allow: '/',
|
|
263
|
+
disallow: ['/api/', '/admin/'],
|
|
264
|
+
},
|
|
265
|
+
sitemap: 'https://example.com/sitemap.xml',
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Common SEO Mistakes
|
|
273
|
+
|
|
274
|
+
❌ Duplicate title tags
|
|
275
|
+
❌ Missing meta descriptions
|
|
276
|
+
❌ Weak or generic content
|
|
277
|
+
❌ Broken internal links
|
|
278
|
+
❌ Slow page load
|
|
279
|
+
❌ Non-mobile-friendly design
|
|
280
|
+
❌ Missing alt text
|
|
281
|
+
❌ Thin content pages
|
|
282
|
+
❌ Keyword stuffing
|
|
283
|
+
❌ Cloaking or hidden text
|
|
284
|
+
❌ Duplicate content
|
|
285
|
+
❌ Missing sitemap
|
|
286
|
+
❌ Blocked by robots.txt accidentally
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## SEO Documentation Template
|
|
291
|
+
|
|
292
|
+
```markdown
|
|
293
|
+
## SEO Configuration
|
|
294
|
+
|
|
295
|
+
### Meta Tags
|
|
296
|
+
- **Status:** [Configured / Partial / Needed]
|
|
297
|
+
- **Unique titles:** [Yes/No]
|
|
298
|
+
- **Unique descriptions:** [Yes/No]
|
|
299
|
+
|
|
300
|
+
### Social Sharing
|
|
301
|
+
- **Open Graph:** [Configured]
|
|
302
|
+
- **Twitter Cards:** [Configured]
|
|
303
|
+
- **Social images:** [Created / Needed]
|
|
304
|
+
|
|
305
|
+
### Technical SEO
|
|
306
|
+
- **Sitemap:** [Generated / Static / Needed]
|
|
307
|
+
- **robots.txt:** [Configured]
|
|
308
|
+
- **Canonical URLs:** [Set]
|
|
309
|
+
|
|
310
|
+
### Structured Data
|
|
311
|
+
- **Schema types:** [List or "Not implemented"]
|
|
312
|
+
- **Validation:** [Passed / Not tested]
|
|
313
|
+
|
|
314
|
+
### Performance
|
|
315
|
+
- **Core Web Vitals:** [Good / Needs improvement]
|
|
316
|
+
- **Mobile-friendly:** [Yes/No]
|
|
317
|
+
|
|
318
|
+
### Indexing
|
|
319
|
+
- **Search Console:** [Set up / Needed]
|
|
320
|
+
- **Indexable pages:** [List or count]
|
|
321
|
+
- **Non-indexable pages:** [List or count]
|
|
322
|
+
|
|
323
|
+
### Content
|
|
324
|
+
- **Heading hierarchy:** [Correct / Needs review]
|
|
325
|
+
- **Alt text:** [Complete / Partial]
|
|
326
|
+
- **Internal linking:** [Implemented / Needs improvement]
|
|
327
|
+
|
|
328
|
+
### Next Steps
|
|
329
|
+
- [ ] [SEO task 1]
|
|
330
|
+
- [ ] [SEO task 2]
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## Tools for SEO Audit
|
|
336
|
+
|
|
337
|
+
- Google Search Console
|
|
338
|
+
- Google PageSpeed Insights
|
|
339
|
+
- Lighthouse (built into Chrome DevTools)
|
|
340
|
+
- Screaming Frog SEO Spider
|
|
341
|
+
- Ahrefs / SEMrush / Moz (professional tools)
|
|
342
|
+
- Schema.org validator
|
|
343
|
+
- Google Rich Results Test
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
**Summary:** Good SEO is about making great content discoverable. Focus on: unique metadata, semantic HTML, fast performance, mobile-friendliness, and quality content.
|