telo3-ai 5.0.7 → 6.2.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/README.md +32 -791
- package/SKILL.md +36 -657
- package/bootstrap/TELO3.md +17 -0
- package/cli.js +223 -42
- package/hooks/inject-contract.mjs +23 -0
- package/hooks/session-start.example.json +15 -0
- package/index.js +48 -14
- package/package.json +32 -69
- package/references/accessibility-quality.md +92 -272
- package/references/ai-behavior.md +70 -332
- package/references/anti-slop.md +71 -0
- package/references/document-specification.md +110 -419
- package/references/legal-compliance.md +90 -395
- package/references/performance-quality.md +100 -351
- package/references/privacy-compliance.md +88 -464
- package/references/project-audit.md +79 -440
- package/references/security-quality.md +68 -220
- package/references/seo-quality.md +83 -339
- package/references/smart-skill-delegation.md +73 -419
- package/references/token-optimization.md +83 -450
- package/references/ui-quality.md +106 -481
- package/references/workflow.md +91 -447
- package/scripts/postinstall.mjs +27 -0
- package/src/activate.js +159 -0
- package/src/context.js +72 -0
- package/src/find-context.js +41 -0
- package/src/init.js +38 -0
- package/src/install.js +128 -0
- package/src/paths.js +20 -0
- package/src/status.js +30 -0
- package/src/tokens.js +10 -0
- package/src/validate.js +220 -0
- package/src/version.js +12 -0
- package/templates/architecture.md +17 -398
- package/templates/design.md +22 -631
- package/templates/memory.md +13 -351
- package/templates/prd.md +15 -295
- package/templates/rules.md +20 -600
- package/templates/tasks.md +10 -210
- package/AI-CONTEXT.md +0 -272
- package/ONBOARDING-SKILL.md +0 -738
- package/SKILL-METADATA.json +0 -237
- package/scripts/init-project-context.sh +0 -139
- package/scripts/validate-project-context.sh +0 -164
- package/skills/telo3/SKILL.md +0 -315
- package/skills/telo3-context/SKILL.md +0 -272
- package/skills/telo3-onboarding/SKILL.md +0 -738
|
@@ -1,347 +1,91 @@
|
|
|
1
|
-
# SEO Quality
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
##
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
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:
|
|
1
|
+
# SEO Quality
|
|
2
|
+
**Load when:** building or reviewing public, indexable pages — marketing sites, portfolios, blogs, docs, e-commerce, content platforms.
|
|
3
|
+
|
|
4
|
+
Apply to: marketing websites, portfolios, blogs/documentation, e-commerce sites, public-facing applications, content platforms.
|
|
5
|
+
Skip SEO for private dashboards, internal tools, authenticated-only pages, APIs, and intentionally non-indexable pages. Assess applicability from the actual project purpose.
|
|
6
|
+
|
|
7
|
+
## Metadata
|
|
8
|
+
| Item | Rule |
|
|
9
|
+
|---|---|
|
|
10
|
+
| `<title>` | Unique per page; 50-60 characters; primary keyword near the beginning; format `Page Title \| Site Name` |
|
|
11
|
+
| Meta description | Unique per page; 150-160 characters; compelling, actionable copy; target keywords naturally |
|
|
12
|
+
| Canonical | `<link rel="canonical">` pointing to the preferred URL version; prevents duplicate content |
|
|
13
|
+
| Open Graph | `og:title`, `og:description`, `og:image` (1200x630px recommended), `og:url` (canonical), `og:type` (website, article, etc.) |
|
|
14
|
+
| Twitter Card | `twitter:card` (summary_large_image), `twitter:title`, `twitter:description`, `twitter:image` |
|
|
15
|
+
|
|
16
|
+
## Structured Data
|
|
17
|
+
- Schema.org structured data in JSON-LD format where applicable.
|
|
18
|
+
- Common schemas: Organization, Person (portfolios), Article (blog posts).
|
|
19
|
+
- Also: Product (e-commerce), FAQ, Breadcrumbs.
|
|
20
|
+
- Mark up only real content — never fabricate schema claims (fake reviews, ratings, offers, facts).
|
|
21
|
+
- Validate with Google Rich Results Test and the Schema.org validator.
|
|
22
|
+
|
|
23
|
+
## Content & HTML
|
|
24
|
+
- One `<h1>` per page; logical hierarchy h1→h2→h3; no skipped levels.
|
|
25
|
+
- Headings describe content structure.
|
|
26
|
+
- Semantic elements: `<article>`, `<nav>`, `<main>`, `<aside>`, proper `<header>`/`<footer>`.
|
|
27
|
+
- Lists via `<ul>`/`<ol>`/`<li>`.
|
|
28
|
+
- Images: descriptive `alt` text; decorative images `alt=""`.
|
|
29
|
+
- Images optimized (WebP/AVIF with fallbacks); width/height attributes set.
|
|
30
|
+
- Links: descriptive text (not "click here"); internal linking strategy.
|
|
31
|
+
- External links: `rel="noopener"` when appropriate; find and fix broken links.
|
|
32
|
+
- URLs: clean, descriptive, kebab-case; keywords in URLs.
|
|
33
|
+
- No unnecessary URL parameters; consistent URL structure.
|
|
34
|
+
- Substantive content: no thin pages, no keyword stuffing.
|
|
35
|
+
- No cloaking or hidden text; no duplicate content.
|
|
36
|
+
|
|
37
|
+
## Indexing & Crawlability
|
|
38
|
+
- robots.txt exists, configured correctly: allow search engines.
|
|
39
|
+
- Disallow admin/private areas (e.g. `/api/`, `/admin/`); reference the sitemap.
|
|
40
|
+
- XML sitemap (`sitemap.xml`): all important pages; updated automatically.
|
|
41
|
+
- Submit sitemap to Google Search Console.
|
|
42
|
+
- Robots meta: `index, follow` for indexable pages.
|
|
43
|
+
- `noindex, nofollow` for private/admin/non-indexable pages.
|
|
44
|
+
- Pages crawlable: no JavaScript-only rendering of critical info.
|
|
45
|
+
- SSR or static generation for public pages.
|
|
46
|
+
- No infinite scroll blocking access to content.
|
|
47
|
+
- Verify robots.txt isn't accidentally blocking pages that should rank.
|
|
48
|
+
|
|
49
|
+
Example robots.txt:
|
|
119
50
|
```
|
|
120
51
|
User-agent: *
|
|
121
52
|
Allow: /
|
|
122
|
-
|
|
123
53
|
Disallow: /api/
|
|
124
54
|
Disallow: /admin/
|
|
125
|
-
|
|
126
55
|
Sitemap: https://example.com/sitemap.xml
|
|
127
56
|
```
|
|
128
57
|
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
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.
|
|
58
|
+
## Performance (Core Web Vitals — details: performance-quality.md)
|
|
59
|
+
- LCP < 2.5s: optimize images; reduce server response time.
|
|
60
|
+
- FID < 100ms or INP < 200ms: minimize JavaScript; break up long tasks.
|
|
61
|
+
- CLS < 0.1: set image dimensions; avoid layout shifts.
|
|
62
|
+
- Fast server response; optimized images; minimized CSS/JS.
|
|
63
|
+
- Leverage browser caching; use CDN if appropriate.
|
|
64
|
+
|
|
65
|
+
## Mobile & HTTPS
|
|
66
|
+
- Mobile-responsive design; passes mobile-friendly test.
|
|
67
|
+
- Touch targets ≥ 44x44px; text readable without zooming; no horizontal scrolling.
|
|
68
|
+
- HTTPS everywhere; mixed content resolved; HTTP redirects to HTTPS.
|
|
69
|
+
|
|
70
|
+
## Next.js (App Router)
|
|
71
|
+
- Static metadata: `export const metadata: Metadata` (title, description, openGraph, twitter, `alternates.canonical`).
|
|
72
|
+
- Dynamic metadata: `export async function generateMetadata({ params })` per route (e.g. post title/excerpt).
|
|
73
|
+
- `app/sitemap.ts`: entries with url, lastModified, changeFrequency, priority.
|
|
74
|
+
- `app/robots.ts`: rules (userAgent, allow, disallow) plus sitemap URL.
|
|
75
|
+
|
|
76
|
+
## Audit Tools
|
|
77
|
+
- Google Search Console; Google PageSpeed Insights; Lighthouse (Chrome DevTools).
|
|
78
|
+
- Screaming Frog SEO Spider; Ahrefs / SEMrush / Moz.
|
|
79
|
+
- Schema.org validator; Google Rich Results Test.
|
|
80
|
+
|
|
81
|
+
## Common Mistakes
|
|
82
|
+
- Duplicate title tags; missing meta descriptions; weak/generic or thin content.
|
|
83
|
+
- Broken internal links; slow page load; non-mobile-friendly design; missing alt text.
|
|
84
|
+
- Keyword stuffing; cloaking/hidden text; duplicate content.
|
|
85
|
+
- Missing sitemap; accidental robots.txt blocks.
|
|
86
|
+
|
|
87
|
+
## Record in project docs
|
|
88
|
+
- Meta/social sharing status; sitemap, robots.txt, canonical config.
|
|
89
|
+
- Schema types and validation result; Core Web Vitals and mobile status.
|
|
90
|
+
- Search Console setup; indexable vs non-indexable pages.
|
|
91
|
+
- Heading hierarchy, alt text, internal linking status; next steps.
|