qualia-framework 2.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.
Files changed (261) hide show
  1. package/README.md +50 -0
  2. package/bin/cli.js +519 -0
  3. package/framework/agents/architecture-strategist.md +53 -0
  4. package/framework/agents/backend-agent.md +150 -0
  5. package/framework/agents/code-simplicity-reviewer.md +86 -0
  6. package/framework/agents/frontend-agent.md +111 -0
  7. package/framework/agents/kieran-typescript-reviewer.md +96 -0
  8. package/framework/agents/performance-oracle.md +111 -0
  9. package/framework/agents/qualia-codebase-mapper.md +760 -0
  10. package/framework/agents/qualia-debugger.md +1203 -0
  11. package/framework/agents/qualia-executor.md +881 -0
  12. package/framework/agents/qualia-integration-checker.md +423 -0
  13. package/framework/agents/qualia-phase-researcher.md +453 -0
  14. package/framework/agents/qualia-plan-checker.md +699 -0
  15. package/framework/agents/qualia-planner.md +1241 -0
  16. package/framework/agents/qualia-project-researcher.md +602 -0
  17. package/framework/agents/qualia-research-synthesizer.md +236 -0
  18. package/framework/agents/qualia-roadmapper.md +605 -0
  19. package/framework/agents/qualia-verifier.md +685 -0
  20. package/framework/agents/team-orchestrator.md +228 -0
  21. package/framework/agents/teams/full-stack-team.md +48 -0
  22. package/framework/agents/teams/optimize-team.md +53 -0
  23. package/framework/agents/teams/review-team.md +62 -0
  24. package/framework/agents/teams/ship-team.md +86 -0
  25. package/framework/agents/test-agent.md +182 -0
  26. package/framework/askpass.sh +2 -0
  27. package/framework/commands/design.md +53 -0
  28. package/framework/commands/quick-db.md +22 -0
  29. package/framework/config/retention.json +35 -0
  30. package/framework/core/PRINCIPLES.md +77 -0
  31. package/framework/hooks/auto-format.sh +45 -0
  32. package/framework/hooks/block-env-edit.sh +42 -0
  33. package/framework/hooks/branch-guard.sh +46 -0
  34. package/framework/hooks/confirm-delete.sh +56 -0
  35. package/framework/hooks/migration-validate.sh +68 -0
  36. package/framework/hooks/notification-speak.sh +15 -0
  37. package/framework/hooks/pre-commit.sh +80 -0
  38. package/framework/hooks/pre-compact.sh +55 -0
  39. package/framework/hooks/pre-deploy-gate.sh +151 -0
  40. package/framework/hooks/qualia-colors.sh +32 -0
  41. package/framework/hooks/retention-cleanup.sh +43 -0
  42. package/framework/hooks/save-session-state.sh +153 -0
  43. package/framework/hooks/session-context-loader.sh +28 -0
  44. package/framework/hooks/session-learn.sh +30 -0
  45. package/framework/knowledge/claudecode-bible.md +1384 -0
  46. package/framework/knowledge/client-prefs.md +22 -0
  47. package/framework/knowledge/common-fixes.md +25 -0
  48. package/framework/knowledge/deployment-map.md +35 -0
  49. package/framework/knowledge/email-signature.html +1 -0
  50. package/framework/knowledge/employees.md +8 -0
  51. package/framework/knowledge/learned-patterns.md +51 -0
  52. package/framework/knowledge/optimization-research-2026.md +137 -0
  53. package/framework/knowledge/qualia-context.md +67 -0
  54. package/framework/knowledge/supabase-patterns.md +50 -0
  55. package/framework/knowledge/voice-agent-patterns.md +46 -0
  56. package/framework/qualia-engine/VERSION +1 -0
  57. package/framework/qualia-engine/bin/qualia-tools.js +2160 -0
  58. package/framework/qualia-engine/bin/qualia-tools.test.js +1054 -0
  59. package/framework/qualia-engine/references/checkpoints.md +775 -0
  60. package/framework/qualia-engine/references/continuation-format.md +249 -0
  61. package/framework/qualia-engine/references/decimal-phase-calculation.md +65 -0
  62. package/framework/qualia-engine/references/design-quality.md +56 -0
  63. package/framework/qualia-engine/references/git-integration.md +254 -0
  64. package/framework/qualia-engine/references/git-planning-commit.md +50 -0
  65. package/framework/qualia-engine/references/model-profile-resolution.md +32 -0
  66. package/framework/qualia-engine/references/model-profiles.md +73 -0
  67. package/framework/qualia-engine/references/phase-argument-parsing.md +61 -0
  68. package/framework/qualia-engine/references/planning-config.md +195 -0
  69. package/framework/qualia-engine/references/questioning.md +141 -0
  70. package/framework/qualia-engine/references/tdd.md +263 -0
  71. package/framework/qualia-engine/references/ui-brand.md +160 -0
  72. package/framework/qualia-engine/references/verification-patterns.md +612 -0
  73. package/framework/qualia-engine/templates/DEBUG.md +159 -0
  74. package/framework/qualia-engine/templates/DESIGN.md +81 -0
  75. package/framework/qualia-engine/templates/UAT.md +247 -0
  76. package/framework/qualia-engine/templates/codebase/architecture.md +255 -0
  77. package/framework/qualia-engine/templates/codebase/concerns.md +310 -0
  78. package/framework/qualia-engine/templates/codebase/conventions.md +307 -0
  79. package/framework/qualia-engine/templates/codebase/integrations.md +280 -0
  80. package/framework/qualia-engine/templates/codebase/stack.md +186 -0
  81. package/framework/qualia-engine/templates/codebase/structure.md +285 -0
  82. package/framework/qualia-engine/templates/codebase/testing.md +480 -0
  83. package/framework/qualia-engine/templates/config.json +35 -0
  84. package/framework/qualia-engine/templates/context.md +283 -0
  85. package/framework/qualia-engine/templates/continue-here.md +78 -0
  86. package/framework/qualia-engine/templates/debug-subagent-prompt.md +91 -0
  87. package/framework/qualia-engine/templates/discovery.md +146 -0
  88. package/framework/qualia-engine/templates/milestone-archive.md +123 -0
  89. package/framework/qualia-engine/templates/milestone.md +115 -0
  90. package/framework/qualia-engine/templates/phase-prompt.md +567 -0
  91. package/framework/qualia-engine/templates/planner-subagent-prompt.md +117 -0
  92. package/framework/qualia-engine/templates/project.md +184 -0
  93. package/framework/qualia-engine/templates/projects/ai-agent.md +156 -0
  94. package/framework/qualia-engine/templates/projects/mobile-app.md +181 -0
  95. package/framework/qualia-engine/templates/projects/voice-agent.md +134 -0
  96. package/framework/qualia-engine/templates/projects/website.md +137 -0
  97. package/framework/qualia-engine/templates/requirements.md +231 -0
  98. package/framework/qualia-engine/templates/research-project/ARCHITECTURE.md +204 -0
  99. package/framework/qualia-engine/templates/research-project/FEATURES.md +147 -0
  100. package/framework/qualia-engine/templates/research-project/PITFALLS.md +200 -0
  101. package/framework/qualia-engine/templates/research-project/STACK.md +120 -0
  102. package/framework/qualia-engine/templates/research-project/SUMMARY.md +170 -0
  103. package/framework/qualia-engine/templates/research.md +552 -0
  104. package/framework/qualia-engine/templates/roadmap.md +202 -0
  105. package/framework/qualia-engine/templates/state.md +176 -0
  106. package/framework/qualia-engine/templates/summary-complex.md +59 -0
  107. package/framework/qualia-engine/templates/summary-minimal.md +41 -0
  108. package/framework/qualia-engine/templates/summary-standard.md +48 -0
  109. package/framework/qualia-engine/templates/summary.md +246 -0
  110. package/framework/qualia-engine/templates/user-setup.md +311 -0
  111. package/framework/qualia-engine/templates/verification-report.md +322 -0
  112. package/framework/qualia-engine/workflows/add-phase.md +179 -0
  113. package/framework/qualia-engine/workflows/add-todo.md +157 -0
  114. package/framework/qualia-engine/workflows/audit-milestone.md +241 -0
  115. package/framework/qualia-engine/workflows/check-todos.md +176 -0
  116. package/framework/qualia-engine/workflows/complete-milestone.md +858 -0
  117. package/framework/qualia-engine/workflows/diagnose-issues.md +219 -0
  118. package/framework/qualia-engine/workflows/discovery-phase.md +289 -0
  119. package/framework/qualia-engine/workflows/discuss-phase.md +534 -0
  120. package/framework/qualia-engine/workflows/execute-phase.md +559 -0
  121. package/framework/qualia-engine/workflows/execute-plan.md +438 -0
  122. package/framework/qualia-engine/workflows/help.md +470 -0
  123. package/framework/qualia-engine/workflows/insert-phase.md +220 -0
  124. package/framework/qualia-engine/workflows/list-phase-assumptions.md +178 -0
  125. package/framework/qualia-engine/workflows/map-codebase.md +327 -0
  126. package/framework/qualia-engine/workflows/new-milestone.md +363 -0
  127. package/framework/qualia-engine/workflows/new-project.md +1037 -0
  128. package/framework/qualia-engine/workflows/pause-work.md +122 -0
  129. package/framework/qualia-engine/workflows/plan-milestone-gaps.md +256 -0
  130. package/framework/qualia-engine/workflows/plan-phase.md +422 -0
  131. package/framework/qualia-engine/workflows/progress.md +354 -0
  132. package/framework/qualia-engine/workflows/quick.md +252 -0
  133. package/framework/qualia-engine/workflows/remove-phase.md +326 -0
  134. package/framework/qualia-engine/workflows/research-phase.md +74 -0
  135. package/framework/qualia-engine/workflows/resume-project.md +306 -0
  136. package/framework/qualia-engine/workflows/set-profile.md +80 -0
  137. package/framework/qualia-engine/workflows/settings.md +145 -0
  138. package/framework/qualia-engine/workflows/transition.md +556 -0
  139. package/framework/qualia-engine/workflows/update.md +197 -0
  140. package/framework/qualia-engine/workflows/verify-phase.md +195 -0
  141. package/framework/qualia-engine/workflows/verify-work.md +625 -0
  142. package/framework/rules/context7.md +11 -0
  143. package/framework/rules/deployment.md +29 -0
  144. package/framework/rules/frontend.md +33 -0
  145. package/framework/rules/security.md +12 -0
  146. package/framework/rules/speed.md +20 -0
  147. package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
  148. package/framework/scripts/apply-retention.sh +120 -0
  149. package/framework/scripts/bootstrap-pop-os.sh +354 -0
  150. package/framework/scripts/claude-voice +13 -0
  151. package/framework/scripts/cleanup.sh +131 -0
  152. package/framework/scripts/cowork-mode.sh +141 -0
  153. package/framework/scripts/generate-project-claude-md.sh +153 -0
  154. package/framework/scripts/load-test-webhook.js +172 -0
  155. package/framework/scripts/say.py +236 -0
  156. package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +167 -0
  157. package/framework/scripts/showcase-video-recorder/playwright-helpers.js +216 -0
  158. package/framework/scripts/speak.py +55 -0
  159. package/framework/scripts/speak.sh +18 -0
  160. package/framework/scripts/status.sh +138 -0
  161. package/framework/scripts/sync-to-framework.sh +65 -0
  162. package/framework/scripts/voice-hotkey.py +227 -0
  163. package/framework/scripts/voice-input.sh +51 -0
  164. package/framework/skills/animate/SKILL.md +202 -0
  165. package/framework/skills/bolder/SKILL.md +144 -0
  166. package/framework/skills/browser-qa/SKILL.md +536 -0
  167. package/framework/skills/clarify/SKILL.md +179 -0
  168. package/framework/skills/colorize/SKILL.md +170 -0
  169. package/framework/skills/critique/SKILL.md +126 -0
  170. package/framework/skills/deep-research/SKILL.md +271 -0
  171. package/framework/skills/delight/SKILL.md +329 -0
  172. package/framework/skills/deploy/SKILL.md +261 -0
  173. package/framework/skills/deploy-verify/SKILL.md +377 -0
  174. package/framework/skills/deploy-verify/scripts/canary-check.sh +206 -0
  175. package/framework/skills/deploy-verify/scripts/check-console-errors.js +147 -0
  176. package/framework/skills/deploy-verify/scripts/check-cwv.js +139 -0
  177. package/framework/skills/deploy-verify/scripts/project-detect.sh +84 -0
  178. package/framework/skills/deploy-verify/scripts/verify.sh +548 -0
  179. package/framework/skills/design-quieter/SKILL.md +130 -0
  180. package/framework/skills/distill/SKILL.md +149 -0
  181. package/framework/skills/docs-lookup/SKILL.md +78 -0
  182. package/framework/skills/fcm-notifications/SKILL.md +125 -0
  183. package/framework/skills/financial-ledger/SKILL.md +1039 -0
  184. package/framework/skills/frontend-master/NOTICE.md +4 -0
  185. package/framework/skills/frontend-master/SKILL.md +127 -0
  186. package/framework/skills/frontend-master/reference/color-and-contrast.md +132 -0
  187. package/framework/skills/frontend-master/reference/interaction-design.md +123 -0
  188. package/framework/skills/frontend-master/reference/motion-design.md +99 -0
  189. package/framework/skills/frontend-master/reference/responsive-design.md +114 -0
  190. package/framework/skills/frontend-master/reference/spatial-design.md +100 -0
  191. package/framework/skills/frontend-master/reference/typography.md +131 -0
  192. package/framework/skills/frontend-master/reference/ux-writing.md +107 -0
  193. package/framework/skills/harden/SKILL.md +357 -0
  194. package/framework/skills/i18n-rtl/SKILL.md +752 -0
  195. package/framework/skills/learn/SKILL.md +71 -0
  196. package/framework/skills/memory/SKILL.md +50 -0
  197. package/framework/skills/mobile-expo/SKILL.md +864 -0
  198. package/framework/skills/mobile-expo/references/store-checklist.md +550 -0
  199. package/framework/skills/nestjs-backend/README.md +73 -0
  200. package/framework/skills/nestjs-backend/SKILL.md +446 -0
  201. package/framework/skills/nestjs-backend/references/templates.md +1173 -0
  202. package/framework/skills/normalize/SKILL.md +79 -0
  203. package/framework/skills/onboard/SKILL.md +242 -0
  204. package/framework/skills/polish/SKILL.md +209 -0
  205. package/framework/skills/pr/SKILL.md +66 -0
  206. package/framework/skills/qualia/SKILL.md +153 -0
  207. package/framework/skills/qualia-add-todo/SKILL.md +68 -0
  208. package/framework/skills/qualia-audit-milestone/SKILL.md +92 -0
  209. package/framework/skills/qualia-check-todos/SKILL.md +55 -0
  210. package/framework/skills/qualia-complete-milestone/SKILL.md +108 -0
  211. package/framework/skills/qualia-debug/SKILL.md +149 -0
  212. package/framework/skills/qualia-design/SKILL.md +203 -0
  213. package/framework/skills/qualia-discuss-phase/SKILL.md +72 -0
  214. package/framework/skills/qualia-execute-phase/SKILL.md +86 -0
  215. package/framework/skills/qualia-help/SKILL.md +67 -0
  216. package/framework/skills/qualia-idk/SKILL.md +352 -0
  217. package/framework/skills/qualia-list-phase-assumptions/SKILL.md +67 -0
  218. package/framework/skills/qualia-new-milestone/SKILL.md +72 -0
  219. package/framework/skills/qualia-new-project/SKILL.md +92 -0
  220. package/framework/skills/qualia-optimize/SKILL.md +417 -0
  221. package/framework/skills/qualia-pause-work/SKILL.md +96 -0
  222. package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +57 -0
  223. package/framework/skills/qualia-plan-phase/SKILL.md +101 -0
  224. package/framework/skills/qualia-progress/SKILL.md +53 -0
  225. package/framework/skills/qualia-quick/SKILL.md +89 -0
  226. package/framework/skills/qualia-research-phase/SKILL.md +88 -0
  227. package/framework/skills/qualia-resume-work/SKILL.md +62 -0
  228. package/framework/skills/qualia-review/SKILL.md +263 -0
  229. package/framework/skills/qualia-start/SKILL.md +182 -0
  230. package/framework/skills/qualia-verify-work/SKILL.md +105 -0
  231. package/framework/skills/qualia-workflow/SKILL.md +130 -0
  232. package/framework/skills/rag/SKILL.md +750 -0
  233. package/framework/skills/responsive/SKILL.md +231 -0
  234. package/framework/skills/retro/SKILL.md +284 -0
  235. package/framework/skills/sakani-conventions/SKILL.md +136 -0
  236. package/framework/skills/sakani-conventions/evals/evals.json +23 -0
  237. package/framework/skills/sakani-conventions/references/entities.md +365 -0
  238. package/framework/skills/sakani-conventions/references/error-codes.md +95 -0
  239. package/framework/skills/seo-master/SKILL.md +490 -0
  240. package/framework/skills/seo-master/references/checklist.md +199 -0
  241. package/framework/skills/seo-master/references/structured-data.md +609 -0
  242. package/framework/skills/ship/SKILL.md +202 -0
  243. package/framework/skills/stack-researcher/SKILL.md +215 -0
  244. package/framework/skills/status/SKILL.md +154 -0
  245. package/framework/skills/status/scripts/health-check.sh +562 -0
  246. package/framework/skills/subscription-payments/SKILL.md +250 -0
  247. package/framework/skills/supabase/SKILL.md +973 -0
  248. package/framework/skills/supabase/references/templates.md +159 -0
  249. package/framework/skills/team/SKILL.md +67 -0
  250. package/framework/skills/test-runner/SKILL.md +202 -0
  251. package/framework/skills/voice-agent/SKILL.md +407 -0
  252. package/framework/skills/zoho-workflow/SKILL.md +51 -0
  253. package/framework/statusline-command.sh +117 -0
  254. package/package.json +24 -0
  255. package/profiles/fawzi.json +16 -0
  256. package/profiles/hasan.json +16 -0
  257. package/profiles/moayad.json +16 -0
  258. package/templates/CLAUDE-owner.md +52 -0
  259. package/templates/CLAUDE.md.hbs +58 -0
  260. package/templates/env.claude.template +12 -0
  261. package/templates/settings.json +141 -0
@@ -0,0 +1,609 @@
1
+ # Structured Data Templates (JSON-LD)
2
+
3
+ Complete, validated JSON-LD templates for every common schema type. Copy and adapt these — fill in bracketed values with real data from the page.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Organization](#organization)
8
+ 2. [WebSite with SearchAction](#website-with-searchaction)
9
+ 3. [LocalBusiness](#localbusiness)
10
+ 4. [Service](#service)
11
+ 5. [Product](#product)
12
+ 6. [Article / BlogPosting](#article--blogposting)
13
+ 7. [FAQPage](#faqpage)
14
+ 8. [HowTo](#howto)
15
+ 9. [BreadcrumbList](#breadcrumblist)
16
+ 10. [Person](#person)
17
+ 11. [Event](#event)
18
+ 12. [VideoObject](#videoobject)
19
+ 13. [SoftwareApplication](#softwareapplication)
20
+ 14. [ContactPoint](#contactpoint)
21
+ 15. [AggregateRating / Review](#aggregaterating--review)
22
+ 16. [Course](#course)
23
+ 17. [Recipe](#recipe)
24
+ 18. [JobPosting](#jobposting)
25
+
26
+ ---
27
+
28
+ ## Organization
29
+
30
+ Use on: Homepage, About page
31
+
32
+ ```json
33
+ {
34
+ "@context": "https://schema.org",
35
+ "@type": "Organization",
36
+ "name": "[Company Name]",
37
+ "url": "[https://example.com]",
38
+ "logo": "[https://example.com/logo.png]",
39
+ "description": "[Brief company description]",
40
+ "foundingDate": "[YYYY]",
41
+ "founder": {
42
+ "@type": "Person",
43
+ "name": "[Founder Name]"
44
+ },
45
+ "address": {
46
+ "@type": "PostalAddress",
47
+ "streetAddress": "[Street]",
48
+ "addressLocality": "[City]",
49
+ "addressRegion": "[State/Region]",
50
+ "postalCode": "[Postal Code]",
51
+ "addressCountry": "[Country Code]"
52
+ },
53
+ "contactPoint": {
54
+ "@type": "ContactPoint",
55
+ "telephone": "[+1-xxx-xxx-xxxx]",
56
+ "contactType": "customer service",
57
+ "email": "[email@example.com]"
58
+ },
59
+ "sameAs": [
60
+ "[https://linkedin.com/company/xxx]",
61
+ "[https://twitter.com/xxx]",
62
+ "[https://github.com/xxx]"
63
+ ]
64
+ }
65
+ ```
66
+
67
+ ## WebSite with SearchAction
68
+
69
+ Use on: Homepage (enables sitelinks search box in Google)
70
+
71
+ ```json
72
+ {
73
+ "@context": "https://schema.org",
74
+ "@type": "WebSite",
75
+ "name": "[Site Name]",
76
+ "url": "[https://example.com]",
77
+ "potentialAction": {
78
+ "@type": "SearchAction",
79
+ "target": {
80
+ "@type": "EntryPoint",
81
+ "urlTemplate": "[https://example.com/search?q={search_term_string}]"
82
+ },
83
+ "query-input": "required name=search_term_string"
84
+ }
85
+ }
86
+ ```
87
+
88
+ ## LocalBusiness
89
+
90
+ Use on: Homepage, Contact page (for businesses with physical locations)
91
+
92
+ ```json
93
+ {
94
+ "@context": "https://schema.org",
95
+ "@type": "LocalBusiness",
96
+ "name": "[Business Name]",
97
+ "url": "[https://example.com]",
98
+ "telephone": "[+1-xxx-xxx-xxxx]",
99
+ "email": "[email@example.com]",
100
+ "address": {
101
+ "@type": "PostalAddress",
102
+ "streetAddress": "[Street Address]",
103
+ "addressLocality": "[City]",
104
+ "addressRegion": "[State/Region]",
105
+ "postalCode": "[Postal Code]",
106
+ "addressCountry": "[Country Code]"
107
+ },
108
+ "geo": {
109
+ "@type": "GeoCoordinates",
110
+ "latitude": "[XX.XXXXX]",
111
+ "longitude": "[XX.XXXXX]"
112
+ },
113
+ "openingHoursSpecification": [
114
+ {
115
+ "@type": "OpeningHoursSpecification",
116
+ "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
117
+ "opens": "09:00",
118
+ "closes": "17:00"
119
+ }
120
+ ],
121
+ "priceRange": "[$$ or description]",
122
+ "image": "[https://example.com/storefront.jpg]",
123
+ "sameAs": ["[social media URLs]"]
124
+ }
125
+ ```
126
+
127
+ ## Service
128
+
129
+ Use on: Service/offering pages
130
+
131
+ ```json
132
+ {
133
+ "@context": "https://schema.org",
134
+ "@type": "Service",
135
+ "name": "[Service Name]",
136
+ "description": "[Service description, 150-300 chars]",
137
+ "provider": {
138
+ "@type": "Organization",
139
+ "name": "[Company Name]",
140
+ "url": "[https://example.com]"
141
+ },
142
+ "serviceType": "[Category of service]",
143
+ "areaServed": {
144
+ "@type": "Place",
145
+ "name": "[City, Country or worldwide]"
146
+ },
147
+ "hasOfferCatalog": {
148
+ "@type": "OfferCatalog",
149
+ "name": "[Catalog Name]",
150
+ "itemListElement": [
151
+ {
152
+ "@type": "Offer",
153
+ "itemOffered": {
154
+ "@type": "Service",
155
+ "name": "[Sub-service Name]",
156
+ "description": "[Brief description]"
157
+ }
158
+ }
159
+ ]
160
+ }
161
+ }
162
+ ```
163
+
164
+ ## Product
165
+
166
+ Use on: Product pages, e-commerce
167
+
168
+ ```json
169
+ {
170
+ "@context": "https://schema.org",
171
+ "@type": "Product",
172
+ "name": "[Product Name]",
173
+ "description": "[Product description]",
174
+ "image": ["[https://example.com/product1.jpg]"],
175
+ "sku": "[SKU]",
176
+ "brand": {
177
+ "@type": "Brand",
178
+ "name": "[Brand Name]"
179
+ },
180
+ "offers": {
181
+ "@type": "Offer",
182
+ "url": "[https://example.com/product]",
183
+ "priceCurrency": "[USD]",
184
+ "price": "[29.99]",
185
+ "availability": "https://schema.org/InStock",
186
+ "seller": {
187
+ "@type": "Organization",
188
+ "name": "[Seller Name]"
189
+ }
190
+ },
191
+ "aggregateRating": {
192
+ "@type": "AggregateRating",
193
+ "ratingValue": "[4.5]",
194
+ "reviewCount": "[89]"
195
+ }
196
+ }
197
+ ```
198
+
199
+ ## Article / BlogPosting
200
+
201
+ Use on: Blog posts, articles, news
202
+
203
+ ```json
204
+ {
205
+ "@context": "https://schema.org",
206
+ "@type": "BlogPosting",
207
+ "headline": "[Article Title — max 110 chars]",
208
+ "description": "[Article description — 150-160 chars]",
209
+ "image": "[https://example.com/article-image.jpg]",
210
+ "datePublished": "[YYYY-MM-DD]",
211
+ "dateModified": "[YYYY-MM-DD]",
212
+ "author": {
213
+ "@type": "Person",
214
+ "name": "[Author Name]",
215
+ "url": "[https://example.com/about]"
216
+ },
217
+ "publisher": {
218
+ "@type": "Organization",
219
+ "name": "[Publisher Name]",
220
+ "logo": {
221
+ "@type": "ImageObject",
222
+ "url": "[https://example.com/logo.png]"
223
+ }
224
+ },
225
+ "mainEntityOfPage": {
226
+ "@type": "WebPage",
227
+ "@id": "[https://example.com/blog/slug]"
228
+ },
229
+ "wordCount": "[1500]",
230
+ "keywords": "[keyword1, keyword2, keyword3]"
231
+ }
232
+ ```
233
+
234
+ ## FAQPage
235
+
236
+ Use on: Any page with FAQ section
237
+
238
+ ```json
239
+ {
240
+ "@context": "https://schema.org",
241
+ "@type": "FAQPage",
242
+ "mainEntity": [
243
+ {
244
+ "@type": "Question",
245
+ "name": "[Question text?]",
246
+ "acceptedAnswer": {
247
+ "@type": "Answer",
248
+ "text": "[Answer text. Can include <a href='url'>links</a> in HTML.]"
249
+ }
250
+ },
251
+ {
252
+ "@type": "Question",
253
+ "name": "[Another question?]",
254
+ "acceptedAnswer": {
255
+ "@type": "Answer",
256
+ "text": "[Another answer.]"
257
+ }
258
+ }
259
+ ]
260
+ }
261
+ ```
262
+
263
+ ## HowTo
264
+
265
+ Use on: Tutorial or process pages
266
+
267
+ ```json
268
+ {
269
+ "@context": "https://schema.org",
270
+ "@type": "HowTo",
271
+ "name": "[How to Do X]",
272
+ "description": "[Brief description of the process]",
273
+ "totalTime": "PT[X]M",
274
+ "estimatedCost": {
275
+ "@type": "MonetaryAmount",
276
+ "currency": "USD",
277
+ "value": "[0 or cost]"
278
+ },
279
+ "step": [
280
+ {
281
+ "@type": "HowToStep",
282
+ "name": "[Step 1 Title]",
283
+ "text": "[Step 1 description]",
284
+ "url": "[https://example.com/guide#step1]",
285
+ "image": "[https://example.com/step1.jpg]"
286
+ },
287
+ {
288
+ "@type": "HowToStep",
289
+ "name": "[Step 2 Title]",
290
+ "text": "[Step 2 description]"
291
+ }
292
+ ]
293
+ }
294
+ ```
295
+
296
+ ## BreadcrumbList
297
+
298
+ Use on: All pages (helps Google understand site hierarchy)
299
+
300
+ ```json
301
+ {
302
+ "@context": "https://schema.org",
303
+ "@type": "BreadcrumbList",
304
+ "itemListElement": [
305
+ {
306
+ "@type": "ListItem",
307
+ "position": 1,
308
+ "name": "Home",
309
+ "item": "[https://example.com]"
310
+ },
311
+ {
312
+ "@type": "ListItem",
313
+ "position": 2,
314
+ "name": "[Category]",
315
+ "item": "[https://example.com/category]"
316
+ },
317
+ {
318
+ "@type": "ListItem",
319
+ "position": 3,
320
+ "name": "[Current Page]",
321
+ "item": "[https://example.com/category/page]"
322
+ }
323
+ ]
324
+ }
325
+ ```
326
+
327
+ ## Person
328
+
329
+ Use on: About page, team page, author pages
330
+
331
+ ```json
332
+ {
333
+ "@context": "https://schema.org",
334
+ "@type": "Person",
335
+ "name": "[Full Name]",
336
+ "jobTitle": "[Job Title]",
337
+ "worksFor": {
338
+ "@type": "Organization",
339
+ "name": "[Company Name]"
340
+ },
341
+ "url": "[https://example.com/about]",
342
+ "image": "[https://example.com/headshot.jpg]",
343
+ "sameAs": [
344
+ "[https://linkedin.com/in/xxx]",
345
+ "[https://twitter.com/xxx]"
346
+ ],
347
+ "knowsAbout": ["[Skill 1]", "[Skill 2]", "[Skill 3]"]
348
+ }
349
+ ```
350
+
351
+ ## Event
352
+
353
+ Use on: Event pages, webinar pages
354
+
355
+ ```json
356
+ {
357
+ "@context": "https://schema.org",
358
+ "@type": "Event",
359
+ "name": "[Event Name]",
360
+ "description": "[Event description]",
361
+ "startDate": "[YYYY-MM-DDTHH:MM:SS+00:00]",
362
+ "endDate": "[YYYY-MM-DDTHH:MM:SS+00:00]",
363
+ "eventStatus": "https://schema.org/EventScheduled",
364
+ "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
365
+ "location": {
366
+ "@type": "VirtualLocation",
367
+ "url": "[https://example.com/event]"
368
+ },
369
+ "organizer": {
370
+ "@type": "Organization",
371
+ "name": "[Organizer Name]",
372
+ "url": "[https://example.com]"
373
+ },
374
+ "offers": {
375
+ "@type": "Offer",
376
+ "price": "[0]",
377
+ "priceCurrency": "USD",
378
+ "availability": "https://schema.org/InStock",
379
+ "url": "[https://example.com/register]"
380
+ }
381
+ }
382
+ ```
383
+
384
+ ## VideoObject
385
+
386
+ Use on: Pages with embedded video content
387
+
388
+ ```json
389
+ {
390
+ "@context": "https://schema.org",
391
+ "@type": "VideoObject",
392
+ "name": "[Video Title]",
393
+ "description": "[Video description]",
394
+ "thumbnailUrl": "[https://example.com/thumbnail.jpg]",
395
+ "uploadDate": "[YYYY-MM-DD]",
396
+ "duration": "PT[X]M[Y]S",
397
+ "contentUrl": "[https://example.com/video.mp4]",
398
+ "embedUrl": "[https://youtube.com/embed/xxx]",
399
+ "publisher": {
400
+ "@type": "Organization",
401
+ "name": "[Publisher Name]",
402
+ "logo": {
403
+ "@type": "ImageObject",
404
+ "url": "[https://example.com/logo.png]"
405
+ }
406
+ }
407
+ }
408
+ ```
409
+
410
+ ## SoftwareApplication
411
+
412
+ Use on: SaaS product pages, app landing pages
413
+
414
+ ```json
415
+ {
416
+ "@context": "https://schema.org",
417
+ "@type": "SoftwareApplication",
418
+ "name": "[App Name]",
419
+ "description": "[App description]",
420
+ "applicationCategory": "BusinessApplication",
421
+ "operatingSystem": "Web",
422
+ "url": "[https://example.com]",
423
+ "offers": {
424
+ "@type": "Offer",
425
+ "price": "[0]",
426
+ "priceCurrency": "USD"
427
+ },
428
+ "aggregateRating": {
429
+ "@type": "AggregateRating",
430
+ "ratingValue": "[4.5]",
431
+ "ratingCount": "[100]"
432
+ }
433
+ }
434
+ ```
435
+
436
+ ## ContactPoint
437
+
438
+ Use alongside Organization schema
439
+
440
+ ```json
441
+ {
442
+ "@type": "ContactPoint",
443
+ "telephone": "[+1-xxx-xxx-xxxx]",
444
+ "contactType": "customer service",
445
+ "email": "[email@example.com]",
446
+ "availableLanguage": ["English", "Arabic"],
447
+ "contactOption": "TollFree",
448
+ "areaServed": "[Country or region]"
449
+ }
450
+ ```
451
+
452
+ ## AggregateRating / Review
453
+
454
+ Nest inside Product, LocalBusiness, or Organization
455
+
456
+ ```json
457
+ {
458
+ "aggregateRating": {
459
+ "@type": "AggregateRating",
460
+ "ratingValue": "[4.8]",
461
+ "bestRating": "5",
462
+ "worstRating": "1",
463
+ "ratingCount": "[150]",
464
+ "reviewCount": "[45]"
465
+ },
466
+ "review": [
467
+ {
468
+ "@type": "Review",
469
+ "author": {
470
+ "@type": "Person",
471
+ "name": "[Reviewer Name]"
472
+ },
473
+ "datePublished": "[YYYY-MM-DD]",
474
+ "reviewRating": {
475
+ "@type": "Rating",
476
+ "ratingValue": "[5]"
477
+ },
478
+ "reviewBody": "[Review text]"
479
+ }
480
+ ]
481
+ }
482
+ ```
483
+
484
+ ## Course
485
+
486
+ Use on: Course/training pages
487
+
488
+ ```json
489
+ {
490
+ "@context": "https://schema.org",
491
+ "@type": "Course",
492
+ "name": "[Course Title]",
493
+ "description": "[Course description]",
494
+ "provider": {
495
+ "@type": "Organization",
496
+ "name": "[Provider Name]",
497
+ "url": "[https://example.com]"
498
+ },
499
+ "courseCode": "[COURSE-101]",
500
+ "hasCourseInstance": {
501
+ "@type": "CourseInstance",
502
+ "courseMode": "online",
503
+ "courseSchedule": {
504
+ "@type": "Schedule",
505
+ "repeatFrequency": "P1W"
506
+ }
507
+ }
508
+ }
509
+ ```
510
+
511
+ ## Recipe
512
+
513
+ Use on: Recipe pages
514
+
515
+ ```json
516
+ {
517
+ "@context": "https://schema.org",
518
+ "@type": "Recipe",
519
+ "name": "[Recipe Name]",
520
+ "description": "[Recipe description]",
521
+ "image": ["[https://example.com/dish.jpg]"],
522
+ "author": {
523
+ "@type": "Person",
524
+ "name": "[Chef Name]"
525
+ },
526
+ "datePublished": "[YYYY-MM-DD]",
527
+ "prepTime": "PT[X]M",
528
+ "cookTime": "PT[X]M",
529
+ "totalTime": "PT[X]M",
530
+ "recipeYield": "[4 servings]",
531
+ "recipeCategory": "[Dinner]",
532
+ "recipeCuisine": "[Italian]",
533
+ "recipeIngredient": [
534
+ "[2 cups flour]",
535
+ "[1 cup sugar]"
536
+ ],
537
+ "recipeInstructions": [
538
+ {
539
+ "@type": "HowToStep",
540
+ "text": "[Step 1 instructions]"
541
+ }
542
+ ],
543
+ "nutrition": {
544
+ "@type": "NutritionInformation",
545
+ "calories": "[250 calories]"
546
+ }
547
+ }
548
+ ```
549
+
550
+ ## JobPosting
551
+
552
+ Use on: Career/job listing pages
553
+
554
+ ```json
555
+ {
556
+ "@context": "https://schema.org",
557
+ "@type": "JobPosting",
558
+ "title": "[Job Title]",
559
+ "description": "[Full job description in HTML]",
560
+ "datePosted": "[YYYY-MM-DD]",
561
+ "validThrough": "[YYYY-MM-DD]",
562
+ "employmentType": "FULL_TIME",
563
+ "hiringOrganization": {
564
+ "@type": "Organization",
565
+ "name": "[Company Name]",
566
+ "sameAs": "[https://example.com]",
567
+ "logo": "[https://example.com/logo.png]"
568
+ },
569
+ "jobLocation": {
570
+ "@type": "Place",
571
+ "address": {
572
+ "@type": "PostalAddress",
573
+ "addressLocality": "[City]",
574
+ "addressRegion": "[State]",
575
+ "addressCountry": "[Country]"
576
+ }
577
+ },
578
+ "baseSalary": {
579
+ "@type": "MonetaryAmount",
580
+ "currency": "USD",
581
+ "value": {
582
+ "@type": "QuantitativeValue",
583
+ "minValue": "[50000]",
584
+ "maxValue": "[80000]",
585
+ "unitText": "YEAR"
586
+ }
587
+ },
588
+ "applicantLocationRequirements": {
589
+ "@type": "Country",
590
+ "name": "[Country]"
591
+ },
592
+ "jobLocationType": "TELECOMMUTE"
593
+ }
594
+ ```
595
+
596
+ ---
597
+
598
+ ## Validation Rules
599
+
600
+ When generating or reviewing structured data, verify:
601
+
602
+ 1. **@context** is exactly `"https://schema.org"` (not http, not schema.org without protocol)
603
+ 2. **Required fields** are present per type (Google's rich result requirements)
604
+ 3. **No invisible content** — structured data must match what users see on the page
605
+ 4. **Valid URLs** — all url/image fields use absolute HTTPS URLs
606
+ 5. **Valid dates** — ISO 8601 format (YYYY-MM-DD or full datetime)
607
+ 6. **No deprecated types** — avoid types Google has dropped support for
608
+ 7. **Nesting** — prefer @type nesting over flat @id references for simplicity
609
+ 8. **One script per type** — use separate `<script type="application/ld+json">` blocks for unrelated types