@stacksjs/defaults 0.74.41 → 0.74.42

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 (74) hide show
  1. package/ai/skills/stacks-cms/SKILL.md +4 -4
  2. package/ai/skills/stacks-config/SKILL.md +1 -1
  3. package/ai/skills/stacks-technical-diagrams/LICENSE +1 -1
  4. package/ai/skills/stacks-technical-diagrams/SKILL.md +257 -229
  5. package/ai/skills/stacks-technical-diagrams/THIRD_PARTY_NOTICES.md +69 -0
  6. package/ai/skills/stacks-technical-diagrams/assets/JetBrainsMono-OFL.txt +93 -0
  7. package/ai/skills/stacks-technical-diagrams/assets/template.html +14588 -929
  8. package/ai/skills/stacks-technical-diagrams/bin/diagrams +10 -0
  9. package/ai/skills/stacks-technical-diagrams/bin/open-artifact.mjs +86 -0
  10. package/ai/skills/stacks-technical-diagrams/bin/preview.mjs +654 -0
  11. package/ai/skills/stacks-technical-diagrams/bin/technical-diagrams.mjs +1898 -89
  12. package/ai/skills/stacks-technical-diagrams/bin/visual-check.mjs +829 -0
  13. package/ai/skills/stacks-technical-diagrams/brand-marks/README.md +31 -0
  14. package/ai/skills/stacks-technical-diagrams/brand-marks/catalog.json +131 -0
  15. package/ai/skills/stacks-technical-diagrams/delta/architecture-delta.mjs +1221 -0
  16. package/ai/skills/stacks-technical-diagrams/examples/agent-run.lifecycle.json +18 -22
  17. package/ai/skills/stacks-technical-diagrams/examples/agent-tool-call.workflow.json +58 -52
  18. package/ai/skills/stacks-technical-diagrams/examples/async-job-roundtrip.sequence.json +61 -0
  19. package/ai/skills/stacks-technical-diagrams/examples/brand-aware-delivery.architecture.json +47 -0
  20. package/ai/skills/stacks-technical-diagrams/examples/cache-miss-request.sequence.json +30 -23
  21. package/ai/skills/stacks-technical-diagrams/examples/checkout-platform.base.architecture.json +31 -0
  22. package/ai/skills/stacks-technical-diagrams/examples/checkout-platform.head.architecture.json +31 -0
  23. package/ai/skills/stacks-technical-diagrams/examples/deployment-release.lifecycle.json +49 -0
  24. package/ai/skills/stacks-technical-diagrams/examples/event-stream.dataflow.json +57 -0
  25. package/ai/skills/stacks-technical-diagrams/examples/incident-response.workflow.json +64 -0
  26. package/ai/skills/stacks-technical-diagrams/examples/product-analytics.dataflow.json +22 -16
  27. package/ai/skills/stacks-technical-diagrams/examples/production-deployment.architecture.json +71 -0
  28. package/ai/skills/stacks-technical-diagrams/examples/release-delivery.workflow.json +62 -0
  29. package/ai/skills/stacks-technical-diagrams/examples/web-app.architecture.json +16 -11
  30. package/ai/skills/stacks-technical-diagrams/migrations/workflow-v2.mjs +279 -0
  31. package/ai/skills/stacks-technical-diagrams/recipes/scenarios.mjs +391 -0
  32. package/ai/skills/stacks-technical-diagrams/references/authoring-contract.md +243 -0
  33. package/ai/skills/stacks-technical-diagrams/references/brand-marks.md +65 -0
  34. package/ai/skills/stacks-technical-diagrams/references/delivery-contract.md +120 -0
  35. package/ai/skills/stacks-technical-diagrams/references/viewer-runtime.md +45 -0
  36. package/ai/skills/stacks-technical-diagrams/renderers/architecture/render-architecture.mjs +780 -73
  37. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/README.md +25 -3
  38. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/render-dataflow.mjs +240 -52
  39. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/README.md +31 -7
  40. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/render-lifecycle.mjs +227 -50
  41. package/ai/skills/stacks-technical-diagrams/renderers/sequence/README.md +36 -6
  42. package/ai/skills/stacks-technical-diagrams/renderers/sequence/render-sequence.mjs +270 -63
  43. package/ai/skills/stacks-technical-diagrams/renderers/shared/brand-marks.mjs +563 -0
  44. package/ai/skills/stacks-technical-diagrams/renderers/shared/bun-runtime.mjs +20 -0
  45. package/ai/skills/stacks-technical-diagrams/renderers/shared/cli.mjs +186 -10
  46. package/ai/skills/stacks-technical-diagrams/renderers/shared/desktop-readability.mjs +26 -0
  47. package/ai/skills/stacks-technical-diagrams/renderers/shared/diagnostics.mjs +127 -0
  48. package/ai/skills/stacks-technical-diagrams/renderers/shared/engineering-profiles.mjs +157 -0
  49. package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-brand-marks.mjs +2003 -0
  50. package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-validators.mjs +3 -3
  51. package/ai/skills/stacks-technical-diagrams/renderers/shared/geometry.mjs +1195 -2
  52. package/ai/skills/stacks-technical-diagrams/renderers/shared/i18n.mjs +595 -0
  53. package/ai/skills/stacks-technical-diagrams/renderers/shared/legend.mjs +217 -0
  54. package/ai/skills/stacks-technical-diagrams/renderers/shared/output-path.mjs +340 -0
  55. package/ai/skills/stacks-technical-diagrams/renderers/shared/repository-evidence.mjs +238 -0
  56. package/ai/skills/stacks-technical-diagrams/renderers/shared/repository-location.mjs +58 -0
  57. package/ai/skills/stacks-technical-diagrams/renderers/shared/text-fit.mjs +49 -0
  58. package/ai/skills/stacks-technical-diagrams/renderers/shared/utils.mjs +163 -19
  59. package/ai/skills/stacks-technical-diagrams/renderers/shared/validator.mjs +51 -5
  60. package/ai/skills/stacks-technical-diagrams/renderers/workflow/README.md +137 -17
  61. package/ai/skills/stacks-technical-diagrams/renderers/workflow/render-workflow.mjs +24 -470
  62. package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-compiler.mjs +4400 -0
  63. package/ai/skills/stacks-technical-diagrams/renderers/workflow/workflow-migration-geometry.mjs +144 -0
  64. package/ai/skills/stacks-technical-diagrams/schemas/README.md +154 -11
  65. package/ai/skills/stacks-technical-diagrams/schemas/architecture.schema.json +61 -4
  66. package/ai/skills/stacks-technical-diagrams/schemas/common.schema.json +72 -0
  67. package/ai/skills/stacks-technical-diagrams/schemas/dataflow.schema.json +40 -18
  68. package/ai/skills/stacks-technical-diagrams/schemas/lifecycle.schema.json +43 -18
  69. package/ai/skills/stacks-technical-diagrams/schemas/sequence.schema.json +41 -4
  70. package/ai/skills/stacks-technical-diagrams/schemas/workflow.schema.json +97 -1
  71. package/ai/skills/stacks-technical-diagrams/scripts/check-render-output.mjs +551 -12
  72. package/ai/skills/stacks-technical-diagrams/scripts/render-examples.mjs +3 -4
  73. package/ide/vscode/package.json +1 -1
  74. package/package.json +2 -2
@@ -0,0 +1,31 @@
1
+ # Built-in brand marks
2
+
3
+ This skill ships a bounded catalogue of 107 commonly used brands for architecture,
4
+ workflow, sequence, data-flow, and lifecycle nodes. The mark is optional authored
5
+ identity: it never replaces the node's semantic `type`, color, label, or
6
+ relationships.
7
+
8
+ Unknown sites are handled by an explicit two-stage workflow. Run
9
+ `.claude/skills/stacks-technical-diagrams/bin/diagrams brands capture <url> --json`, then author the returned
10
+ digest-pinned `brand` value. Normal render and validate commands do not perform
11
+ an unpinned capture, and changed or unavailable content fails closed.
12
+
13
+ Most vector paths and brand metadata are generated from Simple Icons 16.28.0.
14
+ The OpenAI mark is traced to OpenAI's official brand guidelines. Every generated
15
+ entry records its source and, when available upstream, its guidelines and license
16
+ metadata in `renderers/shared/generated-brand-marks.mjs`.
17
+
18
+ Brand names and logos may be trademarks of their respective owners. Simple
19
+ Icons' CC0 license covers its collection work, not every underlying trademark or
20
+ artwork. Contributors must review the recorded source, current brand guidelines,
21
+ and intended referential use before adding or updating a mark. This skill does not
22
+ imply sponsorship, endorsement, or partnership.
23
+
24
+ Edit `catalog.json`, then regenerate the committed zero-runtime-dependency bundle:
25
+
26
+ ```bash
27
+ npm run generate:brand-marks
28
+ npm run check:brand-marks
29
+ ```
30
+
31
+ Do not hand-edit `renderers/shared/generated-brand-marks.mjs`.
@@ -0,0 +1,131 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "marks": [
4
+ {
5
+ "id": "openai",
6
+ "title": "OpenAI",
7
+ "category": "ai",
8
+ "aliases": ["chatgpt", "gpt", "codex"],
9
+ "domains": ["openai.com", "chatgpt.com"],
10
+ "custom": {
11
+ "viewBox": 20,
12
+ "hex": "000000",
13
+ "path": "M11.248 18.25q-.825 0-1.568-.314a4.3 4.3 0 0 1-1.32-.874 4 4 0 0 1-1.304.214 4 4 0 0 1-2.046-.544 4.27 4.27 0 0 1-1.518-1.485 4 4 0 0 1-.56-2.095q0-.48.131-1.04A4.4 4.4 0 0 1 2.04 10.71a4.07 4.07 0 0 1 .017-3.4 4.2 4.2 0 0 1 1.056-1.418 3.8 3.8 0 0 1 1.6-.842 3.9 3.9 0 0 1 .76-1.683q.593-.759 1.451-1.188a4.04 4.04 0 0 1 1.832-.429q.825 0 1.567.313.742.314 1.32.875a4 4 0 0 1 1.304-.215q1.106 0 2.046.545a4.14 4.14 0 0 1 1.501 1.485q.578.941.578 2.095 0 .48-.132 1.04.66.61 1.023 1.419.363.792.363 1.666 0 .892-.38 1.717a4.3 4.3 0 0 1-1.072 1.435 3.8 3.8 0 0 1-1.584.825 3.8 3.8 0 0 1-.775 1.683 4.06 4.06 0 0 1-1.436 1.188 4.04 4.04 0 0 1-1.832.429m-4.076-2.062q.825 0 1.435-.347l3.103-1.782a.36.36 0 0 0 .164-.313v-1.42L7.881 14.62a.67.67 0 0 1-.726 0l-3.118-1.798a.5.5 0 0 1-.017.115v.198q0 .841.396 1.551.413.693 1.139 1.089a3.2 3.2 0 0 0 1.617.412m.165-2.69a.4.4 0 0 0 .181.05q.083 0 .165-.05l1.238-.71-3.977-2.31a.7.7 0 0 1-.363-.643v-3.58q-.825.362-1.32 1.122a2.9 2.9 0 0 0-.495 1.65q0 .809.413 1.55.412.743 1.072 1.123zm3.91 3.663q.875 0 1.585-.396a2.96 2.96 0 0 0 1.534-2.64v-3.564a.32.32 0 0 0-.165-.297l-1.254-.726v4.604a.7.7 0 0 1-.363.643l-3.119 1.799a3 3 0 0 0 1.783.577m.627-6.039V8.878L10.01 7.822 8.129 8.878v2.244l1.881 1.056zM7.057 5.859a.7.7 0 0 1 .363-.644l3.119-1.798a3 3 0 0 0-1.782-.578q-.874 0-1.584.396A2.96 2.96 0 0 0 6.05 4.324a3.07 3.07 0 0 0-.396 1.551v3.547q0 .199.165.314l1.237.726zm8.383 7.887q.825-.364 1.303-1.123.495-.758.495-1.65a3.15 3.15 0 0 0-.412-1.55q-.413-.743-1.073-1.123l-3.086-1.782q-.099-.065-.181-.049a.3.3 0 0 0-.165.05l-1.238.692 3.993 2.327a.6.6 0 0 1 .264.264.64.64 0 0 1 .1.363zm-3.317-8.382a.63.63 0 0 1 .726 0l3.135 1.831v-.297q0-.792-.396-1.501a2.86 2.86 0 0 0-1.105-1.155q-.71-.43-1.65-.43-.825 0-1.436.347L8.294 5.941a.36.36 0 0 0-.165.314v1.418z",
14
+ "source": "https://openai.com/brand/",
15
+ "guidelines": "https://openai.com/brand/"
16
+ }
17
+ },
18
+ { "id": "claude", "category": "ai", "simpleIcon": "claude", "aliases": ["claude-ai"], "domains": ["claude.ai"] },
19
+ { "id": "anthropic", "category": "ai", "simpleIcon": "anthropic", "domains": ["anthropic.com"] },
20
+ { "id": "google-gemini", "category": "ai", "simpleIcon": "googlegemini", "aliases": ["gemini"], "domains": ["gemini.google.com"] },
21
+ { "id": "deepseek", "category": "ai", "simpleIcon": "deepseek", "domains": ["deepseek.com"] },
22
+ { "id": "qwen", "category": "ai", "simpleIcon": "qwen", "domains": ["qwen.ai"] },
23
+ { "id": "meta", "category": "ai", "simpleIcon": "meta", "aliases": ["llama"], "domains": ["meta.com"] },
24
+ { "id": "mistral-ai", "category": "ai", "simpleIcon": "mistralai", "aliases": ["mistral"], "domains": ["mistral.ai"] },
25
+ { "id": "hugging-face", "category": "ai", "simpleIcon": "huggingface", "aliases": ["huggingface"], "domains": ["huggingface.co"] },
26
+ { "id": "ollama", "category": "ai", "simpleIcon": "ollama", "domains": ["ollama.com"] },
27
+ { "id": "openrouter", "category": "ai", "simpleIcon": "openrouter", "aliases": ["open-router"], "domains": ["openrouter.ai"] },
28
+ { "id": "perplexity", "category": "ai", "simpleIcon": "perplexity", "domains": ["perplexity.ai"] },
29
+ { "id": "replicate", "category": "ai", "simpleIcon": "replicate", "domains": ["replicate.com"] },
30
+
31
+ { "id": "google-cloud", "category": "cloud", "simpleIcon": "googlecloud", "aliases": ["gcp", "googlecloud"], "domains": ["cloud.google.com"] },
32
+ { "id": "cloudflare", "category": "cloud", "simpleIcon": "cloudflare", "domains": ["cloudflare.com"] },
33
+ { "id": "vercel", "category": "cloud", "simpleIcon": "vercel", "domains": ["vercel.com"] },
34
+ { "id": "netlify", "category": "cloud", "simpleIcon": "netlify", "domains": ["netlify.com"] },
35
+ { "id": "digitalocean", "category": "cloud", "simpleIcon": "digitalocean", "aliases": ["digital-ocean"], "domains": ["digitalocean.com"] },
36
+ { "id": "render", "category": "cloud", "simpleIcon": "render", "domains": ["render.com"] },
37
+ { "id": "railway", "category": "cloud", "simpleIcon": "railway", "domains": ["railway.com", "railway.app"] },
38
+ { "id": "fly-io", "category": "cloud", "simpleIcon": "flydotio", "aliases": ["fly.io"], "domains": ["fly.io"] },
39
+ { "id": "cloudinary", "category": "cloud", "simpleIcon": "cloudinary", "domains": ["cloudinary.com"] },
40
+ { "id": "alibaba-cloud", "category": "cloud", "simpleIcon": "alibabacloud", "aliases": ["aliyun"], "domains": ["alibabacloud.com", "aliyun.com"] },
41
+ { "id": "firebase", "category": "cloud", "simpleIcon": "firebase", "domains": ["firebase.google.com"] },
42
+ { "id": "supabase", "category": "cloud", "simpleIcon": "supabase", "domains": ["supabase.com"] },
43
+ { "id": "neon", "category": "cloud", "simpleIcon": "neon", "domains": ["neon.tech"] },
44
+
45
+ { "id": "github", "category": "engineering", "simpleIcon": "github", "domains": ["github.com"] },
46
+ { "id": "gitlab", "category": "engineering", "simpleIcon": "gitlab", "domains": ["gitlab.com"] },
47
+ { "id": "bitbucket", "category": "engineering", "simpleIcon": "bitbucket", "domains": ["bitbucket.org"] },
48
+ { "id": "docker", "category": "engineering", "simpleIcon": "docker", "domains": ["docker.com"] },
49
+ { "id": "kubernetes", "category": "engineering", "simpleIcon": "kubernetes", "aliases": ["k8s"], "domains": ["kubernetes.io"] },
50
+ { "id": "terraform", "category": "engineering", "simpleIcon": "terraform", "domains": ["terraform.io"] },
51
+ { "id": "pulumi", "category": "engineering", "simpleIcon": "pulumi", "domains": ["pulumi.com"] },
52
+ { "id": "ansible", "category": "engineering", "simpleIcon": "ansible", "domains": ["ansible.com"] },
53
+ { "id": "jenkins", "category": "engineering", "simpleIcon": "jenkins", "domains": ["jenkins.io"] },
54
+ { "id": "circleci", "category": "engineering", "simpleIcon": "circleci", "aliases": ["circle-ci"], "domains": ["circleci.com"] },
55
+ { "id": "github-actions", "category": "engineering", "simpleIcon": "githubactions" },
56
+ { "id": "argo", "category": "engineering", "simpleIcon": "argo", "aliases": ["argocd", "argo-cd"], "domains": ["argoproj.github.io"] },
57
+ { "id": "helm", "category": "engineering", "simpleIcon": "helm", "domains": ["helm.sh"] },
58
+ { "id": "grafana", "category": "engineering", "simpleIcon": "grafana", "domains": ["grafana.com"] },
59
+ { "id": "prometheus", "category": "engineering", "simpleIcon": "prometheus", "domains": ["prometheus.io"] },
60
+ { "id": "sentry", "category": "engineering", "simpleIcon": "sentry", "domains": ["sentry.io"] },
61
+ { "id": "datadog", "category": "engineering", "simpleIcon": "datadog", "domains": ["datadoghq.com"] },
62
+ { "id": "pagerduty", "category": "engineering", "simpleIcon": "pagerduty", "aliases": ["pager-duty"], "domains": ["pagerduty.com"] },
63
+
64
+ { "id": "postgresql", "category": "data", "simpleIcon": "postgresql", "aliases": ["postgres"], "domains": ["postgresql.org"] },
65
+ { "id": "mysql", "category": "data", "simpleIcon": "mysql", "domains": ["mysql.com"] },
66
+ { "id": "mongodb", "category": "data", "simpleIcon": "mongodb", "aliases": ["mongo"], "domains": ["mongodb.com"] },
67
+ { "id": "redis", "category": "data", "simpleIcon": "redis", "domains": ["redis.io"] },
68
+ { "id": "apache-kafka", "category": "data", "simpleIcon": "apachekafka", "aliases": ["kafka"], "domains": ["kafka.apache.org"] },
69
+ { "id": "rabbitmq", "category": "data", "simpleIcon": "rabbitmq", "aliases": ["rabbit-mq"], "domains": ["rabbitmq.com"] },
70
+ { "id": "clickhouse", "category": "data", "simpleIcon": "clickhouse", "domains": ["clickhouse.com"] },
71
+ { "id": "elasticsearch", "category": "data", "simpleIcon": "elasticsearch", "aliases": ["elastic"], "domains": ["elastic.co"] },
72
+ { "id": "opensearch", "category": "data", "simpleIcon": "opensearch", "aliases": ["open-search"], "domains": ["opensearch.org"] },
73
+ { "id": "snowflake", "category": "data", "simpleIcon": "snowflake", "domains": ["snowflake.com"] },
74
+ { "id": "databricks", "category": "data", "simpleIcon": "databricks", "domains": ["databricks.com"] },
75
+ { "id": "planetscale", "category": "data", "simpleIcon": "planetscale", "aliases": ["planet-scale"], "domains": ["planetscale.com"] },
76
+ { "id": "prisma", "category": "data", "simpleIcon": "prisma", "domains": ["prisma.io"] },
77
+ { "id": "sqlite", "category": "data", "simpleIcon": "sqlite", "domains": ["sqlite.org"] },
78
+ { "id": "mariadb", "category": "data", "simpleIcon": "mariadb", "aliases": ["maria-db"], "domains": ["mariadb.org"] },
79
+ { "id": "influxdb", "category": "data", "simpleIcon": "influxdb", "aliases": ["influx-db"], "domains": ["influxdata.com"] },
80
+ { "id": "apache-airflow", "category": "data", "simpleIcon": "apacheairflow", "aliases": ["airflow"], "domains": ["airflow.apache.org"] },
81
+
82
+ { "id": "notion", "category": "collaboration", "simpleIcon": "notion", "domains": ["notion.so"] },
83
+ { "id": "figma", "category": "collaboration", "simpleIcon": "figma", "domains": ["figma.com"] },
84
+ { "id": "jira", "category": "collaboration", "simpleIcon": "jira", "domains": ["atlassian.com"] },
85
+ { "id": "linear", "category": "collaboration", "simpleIcon": "linear", "domains": ["linear.app"] },
86
+ { "id": "discord", "category": "collaboration", "simpleIcon": "discord", "domains": ["discord.com"] },
87
+ { "id": "zoom", "category": "collaboration", "simpleIcon": "zoom", "domains": ["zoom.us"] },
88
+ { "id": "trello", "category": "collaboration", "simpleIcon": "trello", "domains": ["trello.com"] },
89
+ { "id": "asana", "category": "collaboration", "simpleIcon": "asana", "domains": ["asana.com"] },
90
+ { "id": "airtable", "category": "collaboration", "simpleIcon": "airtable", "domains": ["airtable.com"] },
91
+ { "id": "miro", "category": "collaboration", "simpleIcon": "miro", "domains": ["miro.com"] },
92
+ { "id": "stripe", "category": "business", "simpleIcon": "stripe", "domains": ["stripe.com"] },
93
+ { "id": "shopify", "category": "business", "simpleIcon": "shopify", "domains": ["shopify.com"] },
94
+ { "id": "hubspot", "category": "business", "simpleIcon": "hubspot", "domains": ["hubspot.com"] },
95
+ { "id": "paypal", "category": "business", "simpleIcon": "paypal", "domains": ["paypal.com"] },
96
+ { "id": "intercom", "category": "business", "simpleIcon": "intercom", "domains": ["intercom.com"] },
97
+ { "id": "zendesk", "category": "business", "simpleIcon": "zendesk", "domains": ["zendesk.com"] },
98
+ { "id": "wordpress", "category": "business", "simpleIcon": "wordpress", "domains": ["wordpress.org", "wordpress.com"] },
99
+ { "id": "woocommerce", "category": "business", "simpleIcon": "woocommerce", "aliases": ["woo-commerce"], "domains": ["woocommerce.com"] },
100
+
101
+ { "id": "wechat", "category": "channel", "simpleIcon": "wechat", "aliases": ["weixin", "微信"], "domains": ["weixin.qq.com"] },
102
+ { "id": "youtube", "category": "channel", "simpleIcon": "youtube", "domains": ["youtube.com", "youtu.be"] },
103
+ { "id": "tiktok", "category": "channel", "simpleIcon": "tiktok", "aliases": ["douyin", "抖音"], "domains": ["tiktok.com", "douyin.com"] },
104
+ { "id": "x", "category": "channel", "simpleIcon": "x", "aliases": ["twitter"], "domains": ["x.com", "twitter.com"] },
105
+ { "id": "instagram", "category": "channel", "simpleIcon": "instagram", "domains": ["instagram.com"] },
106
+ { "id": "facebook", "category": "channel", "simpleIcon": "facebook", "domains": ["facebook.com"] },
107
+ { "id": "reddit", "category": "channel", "simpleIcon": "reddit", "domains": ["reddit.com"] },
108
+ { "id": "telegram", "category": "channel", "simpleIcon": "telegram", "domains": ["telegram.org", "t.me"] },
109
+ { "id": "whatsapp", "category": "channel", "simpleIcon": "whatsapp", "domains": ["whatsapp.com"] },
110
+ { "id": "pinterest", "category": "channel", "simpleIcon": "pinterest", "domains": ["pinterest.com"] },
111
+
112
+ { "id": "python", "category": "language", "simpleIcon": "python", "domains": ["python.org"] },
113
+ { "id": "typescript", "category": "language", "simpleIcon": "typescript", "aliases": ["ts"], "domains": ["typescriptlang.org"] },
114
+ { "id": "javascript", "category": "language", "simpleIcon": "javascript", "aliases": ["js"] },
115
+ { "id": "go", "category": "language", "simpleIcon": "go", "aliases": ["golang"], "domains": ["go.dev"] },
116
+ { "id": "rust", "category": "language", "simpleIcon": "rust", "domains": ["rust-lang.org"] },
117
+ { "id": "node-js", "category": "framework", "simpleIcon": "nodedotjs", "aliases": ["node", "nodejs"], "domains": ["nodejs.org"] },
118
+ { "id": "react", "category": "framework", "simpleIcon": "react", "aliases": ["reactjs"], "domains": ["react.dev"] },
119
+ { "id": "vue", "category": "framework", "simpleIcon": "vuedotjs", "aliases": ["vuejs", "vue.js"], "domains": ["vuejs.org"] },
120
+ { "id": "next-js", "category": "framework", "simpleIcon": "nextdotjs", "aliases": ["nextjs", "next.js"], "domains": ["nextjs.org"] },
121
+ { "id": "pytorch", "category": "framework", "simpleIcon": "pytorch", "domains": ["pytorch.org"] },
122
+ { "id": "tensorflow", "category": "framework", "simpleIcon": "tensorflow", "domains": ["tensorflow.org"] },
123
+ { "id": "angular", "category": "framework", "simpleIcon": "angular", "domains": ["angular.dev"] },
124
+ { "id": "svelte", "category": "framework", "simpleIcon": "svelte", "domains": ["svelte.dev"] },
125
+ { "id": "django", "category": "framework", "simpleIcon": "django", "domains": ["djangoproject.com"] },
126
+ { "id": "flask", "category": "framework", "simpleIcon": "flask", "domains": ["palletsprojects.com"] },
127
+ { "id": "fastapi", "category": "framework", "simpleIcon": "fastapi", "domains": ["fastapi.tiangolo.com"] },
128
+ { "id": "spring", "category": "framework", "simpleIcon": "spring", "aliases": ["spring-boot"], "domains": ["spring.io"] },
129
+ { "id": "dotnet", "category": "framework", "simpleIcon": "dotnet", "aliases": [".net"], "domains": ["dotnet.microsoft.com"] }
130
+ ]
131
+ }