@plazmodium/odin 0.3.3-beta → 0.3.4-beta

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 (73) hide show
  1. package/README.md +16 -10
  2. package/builtin/ODIN.md +1045 -0
  3. package/builtin/agent-definitions/README.md +170 -0
  4. package/builtin/agent-definitions/_shared-context.md +377 -0
  5. package/builtin/agent-definitions/architect.md +627 -0
  6. package/builtin/agent-definitions/builder.md +716 -0
  7. package/builtin/agent-definitions/discovery.md +293 -0
  8. package/builtin/agent-definitions/documenter.md +238 -0
  9. package/builtin/agent-definitions/guardian.md +1049 -0
  10. package/builtin/agent-definitions/integrator.md +363 -0
  11. package/builtin/agent-definitions/planning.md +236 -0
  12. package/builtin/agent-definitions/product.md +405 -0
  13. package/builtin/agent-definitions/release.md +430 -0
  14. package/builtin/agent-definitions/reviewer.md +447 -0
  15. package/builtin/agent-definitions/watcher.md +402 -0
  16. package/builtin/skills/api/graphql/SKILL.md +548 -0
  17. package/builtin/skills/api/grpc/SKILL.md +554 -0
  18. package/builtin/skills/api/rest-api/SKILL.md +469 -0
  19. package/builtin/skills/api/trpc/SKILL.md +503 -0
  20. package/builtin/skills/architecture/clean-architecture/SKILL.md +141 -0
  21. package/builtin/skills/architecture/domain-driven-design/SKILL.md +129 -0
  22. package/builtin/skills/architecture/event-driven/SKILL.md +145 -0
  23. package/builtin/skills/architecture/microservices/SKILL.md +143 -0
  24. package/builtin/skills/architecture/tla-precheck/SKILL.md +171 -0
  25. package/builtin/skills/backend/golang-gin/SKILL.md +141 -0
  26. package/builtin/skills/backend/nodejs-express/SKILL.md +277 -0
  27. package/builtin/skills/backend/nodejs-fastify/SKILL.md +152 -0
  28. package/builtin/skills/backend/python-django/SKILL.md +128 -0
  29. package/builtin/skills/backend/python-fastapi/SKILL.md +140 -0
  30. package/builtin/skills/database/mongodb/SKILL.md +132 -0
  31. package/builtin/skills/database/postgresql/SKILL.md +120 -0
  32. package/builtin/skills/database/prisma-orm/SKILL.md +366 -0
  33. package/builtin/skills/database/redis/SKILL.md +140 -0
  34. package/builtin/skills/database/supabase/SKILL.md +416 -0
  35. package/builtin/skills/devops/aws/SKILL.md +382 -0
  36. package/builtin/skills/devops/docker/SKILL.md +359 -0
  37. package/builtin/skills/devops/github-actions/SKILL.md +435 -0
  38. package/builtin/skills/devops/kubernetes/SKILL.md +459 -0
  39. package/builtin/skills/devops/terraform/SKILL.md +453 -0
  40. package/builtin/skills/frontend/alpine-dev/SKILL.md +27 -0
  41. package/builtin/skills/frontend/angular-dev/SKILL.md +28 -0
  42. package/builtin/skills/frontend/astro-dev/SKILL.md +28 -0
  43. package/builtin/skills/frontend/htmx-dev/SKILL.md +28 -0
  44. package/builtin/skills/frontend/nextjs-dev/SKILL.md +470 -0
  45. package/builtin/skills/frontend/react-patterns/SKILL.md +166 -0
  46. package/builtin/skills/frontend/svelte-dev/SKILL.md +28 -0
  47. package/builtin/skills/frontend/tailwindcss/SKILL.md +131 -0
  48. package/builtin/skills/frontend/vuejs-dev/SKILL.md +28 -0
  49. package/builtin/skills/generic-dev/SKILL.md +307 -0
  50. package/builtin/skills/testing/cypress/SKILL.md +372 -0
  51. package/builtin/skills/testing/jest/SKILL.md +176 -0
  52. package/builtin/skills/testing/playwright/SKILL.md +341 -0
  53. package/builtin/skills/testing/unit-tests-eval-sdd/SKILL.md +73 -0
  54. package/builtin/skills/testing/unit-tests-sdd/SKILL.md +83 -0
  55. package/builtin/skills/testing/vitest/SKILL.md +249 -0
  56. package/dist/adapters/skills/filesystem.d.ts.map +1 -1
  57. package/dist/adapters/skills/filesystem.js +2 -18
  58. package/dist/adapters/skills/filesystem.js.map +1 -1
  59. package/dist/builtin-assets.d.ts +8 -0
  60. package/dist/builtin-assets.d.ts.map +1 -0
  61. package/dist/builtin-assets.js +90 -0
  62. package/dist/builtin-assets.js.map +1 -0
  63. package/dist/init.js +69 -11
  64. package/dist/init.js.map +1 -1
  65. package/dist/schemas.d.ts +1 -1
  66. package/dist/server.js +1 -1
  67. package/dist/server.js.map +1 -1
  68. package/dist/tools/prepare-phase-context.d.ts.map +1 -1
  69. package/dist/tools/prepare-phase-context.js +5 -0
  70. package/dist/tools/prepare-phase-context.js.map +1 -1
  71. package/dist/types.d.ts +3 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/package.json +5 -3
@@ -0,0 +1,453 @@
1
+ ---
2
+ name: terraform
3
+ description: Terraform Infrastructure as Code expertise for provisioning and managing cloud resources. Covers HCL syntax, modules, state management, and multi-cloud deployments.
4
+ category: devops
5
+ compatible_with:
6
+ - aws
7
+ - docker
8
+ - kubernetes
9
+ ---
10
+
11
+ # Terraform Infrastructure as Code
12
+
13
+ ## Instructions
14
+
15
+ 1. **Assess the infrastructure need**: Single resource, module, or complete environment.
16
+ 2. **Follow Terraform best practices**:
17
+ - Use modules for reusability
18
+ - Remote state with locking
19
+ - Use workspaces or directories for environments
20
+ - Version pin providers
21
+ 3. **Provide complete configurations**: Include variables, outputs, and provider setup.
22
+ 4. **Guide on state management**: Remote backends, state locking, import/migration.
23
+
24
+ ## Basic Structure
25
+
26
+ ```hcl
27
+ # main.tf
28
+ terraform {
29
+ required_version = ">= 1.5.0"
30
+
31
+ required_providers {
32
+ aws = {
33
+ source = "hashicorp/aws"
34
+ version = "~> 5.0"
35
+ }
36
+ }
37
+
38
+ backend "s3" {
39
+ bucket = "my-terraform-state"
40
+ key = "prod/terraform.tfstate"
41
+ region = "us-east-1"
42
+ dynamodb_table = "terraform-locks"
43
+ encrypt = true
44
+ }
45
+ }
46
+
47
+ provider "aws" {
48
+ region = var.aws_region
49
+
50
+ default_tags {
51
+ tags = {
52
+ Environment = var.environment
53
+ ManagedBy = "Terraform"
54
+ Project = var.project_name
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ ```hcl
61
+ # variables.tf
62
+ variable "aws_region" {
63
+ description = "AWS region"
64
+ type = string
65
+ default = "us-east-1"
66
+ }
67
+
68
+ variable "environment" {
69
+ description = "Environment name"
70
+ type = string
71
+ validation {
72
+ condition = contains(["dev", "staging", "prod"], var.environment)
73
+ error_message = "Environment must be dev, staging, or prod."
74
+ }
75
+ }
76
+
77
+ variable "project_name" {
78
+ description = "Project name for tagging"
79
+ type = string
80
+ }
81
+ ```
82
+
83
+ ```hcl
84
+ # outputs.tf
85
+ output "vpc_id" {
86
+ description = "VPC ID"
87
+ value = aws_vpc.main.id
88
+ }
89
+
90
+ output "public_subnets" {
91
+ description = "Public subnet IDs"
92
+ value = aws_subnet.public[*].id
93
+ }
94
+ ```
95
+
96
+ ## Common Resources
97
+
98
+ ### VPC and Networking
99
+
100
+ ```hcl
101
+ resource "aws_vpc" "main" {
102
+ cidr_block = "10.0.0.0/16"
103
+ enable_dns_hostnames = true
104
+ enable_dns_support = true
105
+
106
+ tags = {
107
+ Name = "${var.project_name}-vpc"
108
+ }
109
+ }
110
+
111
+ resource "aws_subnet" "public" {
112
+ count = length(var.availability_zones)
113
+ vpc_id = aws_vpc.main.id
114
+ cidr_block = cidrsubnet(aws_vpc.main.cidr_block, 8, count.index)
115
+ availability_zone = var.availability_zones[count.index]
116
+ map_public_ip_on_launch = true
117
+
118
+ tags = {
119
+ Name = "${var.project_name}-public-${count.index + 1}"
120
+ }
121
+ }
122
+
123
+ resource "aws_internet_gateway" "main" {
124
+ vpc_id = aws_vpc.main.id
125
+ }
126
+
127
+ resource "aws_route_table" "public" {
128
+ vpc_id = aws_vpc.main.id
129
+
130
+ route {
131
+ cidr_block = "0.0.0.0/0"
132
+ gateway_id = aws_internet_gateway.main.id
133
+ }
134
+ }
135
+ ```
136
+
137
+ ### EC2 Instance
138
+
139
+ ```hcl
140
+ resource "aws_instance" "app" {
141
+ ami = data.aws_ami.amazon_linux.id
142
+ instance_type = var.instance_type
143
+ subnet_id = aws_subnet.public[0].id
144
+ vpc_security_group_ids = [aws_security_group.app.id]
145
+ key_name = aws_key_pair.deployer.key_name
146
+
147
+ root_block_device {
148
+ volume_size = 20
149
+ volume_type = "gp3"
150
+ encrypted = true
151
+ }
152
+
153
+ user_data = <<-EOF
154
+ #!/bin/bash
155
+ yum update -y
156
+ yum install -y docker
157
+ systemctl start docker
158
+ EOF
159
+
160
+ tags = {
161
+ Name = "${var.project_name}-app"
162
+ }
163
+ }
164
+
165
+ data "aws_ami" "amazon_linux" {
166
+ most_recent = true
167
+ owners = ["amazon"]
168
+
169
+ filter {
170
+ name = "name"
171
+ values = ["al2023-ami-*-x86_64"]
172
+ }
173
+ }
174
+ ```
175
+
176
+ ### Security Group
177
+
178
+ ```hcl
179
+ resource "aws_security_group" "app" {
180
+ name = "${var.project_name}-app-sg"
181
+ description = "Security group for application"
182
+ vpc_id = aws_vpc.main.id
183
+
184
+ ingress {
185
+ from_port = 443
186
+ to_port = 443
187
+ protocol = "tcp"
188
+ cidr_blocks = ["0.0.0.0/0"]
189
+ }
190
+
191
+ ingress {
192
+ from_port = 80
193
+ to_port = 80
194
+ protocol = "tcp"
195
+ cidr_blocks = ["0.0.0.0/0"]
196
+ }
197
+
198
+ egress {
199
+ from_port = 0
200
+ to_port = 0
201
+ protocol = "-1"
202
+ cidr_blocks = ["0.0.0.0/0"]
203
+ }
204
+ }
205
+ ```
206
+
207
+ ### RDS Database
208
+
209
+ ```hcl
210
+ resource "aws_db_instance" "main" {
211
+ identifier = "${var.project_name}-db"
212
+ engine = "postgres"
213
+ engine_version = "16.1"
214
+ instance_class = "db.t3.micro"
215
+
216
+ allocated_storage = 20
217
+ max_allocated_storage = 100
218
+ storage_type = "gp3"
219
+ storage_encrypted = true
220
+
221
+ db_name = var.db_name
222
+ username = var.db_username
223
+ password = var.db_password
224
+
225
+ vpc_security_group_ids = [aws_security_group.db.id]
226
+ db_subnet_group_name = aws_db_subnet_group.main.name
227
+
228
+ backup_retention_period = 7
229
+ backup_window = "03:00-04:00"
230
+ maintenance_window = "Mon:04:00-Mon:05:00"
231
+
232
+ skip_final_snapshot = var.environment != "prod"
233
+ deletion_protection = var.environment == "prod"
234
+
235
+ tags = {
236
+ Name = "${var.project_name}-db"
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### S3 Bucket
242
+
243
+ ```hcl
244
+ resource "aws_s3_bucket" "assets" {
245
+ bucket = "${var.project_name}-assets-${var.environment}"
246
+ }
247
+
248
+ resource "aws_s3_bucket_versioning" "assets" {
249
+ bucket = aws_s3_bucket.assets.id
250
+ versioning_configuration {
251
+ status = "Enabled"
252
+ }
253
+ }
254
+
255
+ resource "aws_s3_bucket_server_side_encryption_configuration" "assets" {
256
+ bucket = aws_s3_bucket.assets.id
257
+ rule {
258
+ apply_server_side_encryption_by_default {
259
+ sse_algorithm = "AES256"
260
+ }
261
+ }
262
+ }
263
+
264
+ resource "aws_s3_bucket_public_access_block" "assets" {
265
+ bucket = aws_s3_bucket.assets.id
266
+ block_public_acls = true
267
+ block_public_policy = true
268
+ ignore_public_acls = true
269
+ restrict_public_buckets = true
270
+ }
271
+ ```
272
+
273
+ ## Modules
274
+
275
+ ### Creating a Module
276
+
277
+ ```hcl
278
+ # modules/vpc/main.tf
279
+ variable "name" {
280
+ type = string
281
+ }
282
+
283
+ variable "cidr_block" {
284
+ type = string
285
+ default = "10.0.0.0/16"
286
+ }
287
+
288
+ resource "aws_vpc" "this" {
289
+ cidr_block = var.cidr_block
290
+ enable_dns_hostnames = true
291
+
292
+ tags = {
293
+ Name = var.name
294
+ }
295
+ }
296
+
297
+ output "vpc_id" {
298
+ value = aws_vpc.this.id
299
+ }
300
+ ```
301
+
302
+ ### Using a Module
303
+
304
+ ```hcl
305
+ module "vpc" {
306
+ source = "./modules/vpc"
307
+
308
+ name = "my-vpc"
309
+ cidr_block = "10.0.0.0/16"
310
+ }
311
+
312
+ module "vpc_from_registry" {
313
+ source = "terraform-aws-modules/vpc/aws"
314
+ version = "5.0.0"
315
+
316
+ name = "my-vpc"
317
+ cidr = "10.0.0.0/16"
318
+
319
+ azs = ["us-east-1a", "us-east-1b"]
320
+ private_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
321
+ public_subnets = ["10.0.101.0/24", "10.0.102.0/24"]
322
+
323
+ enable_nat_gateway = true
324
+ }
325
+ ```
326
+
327
+ ## Common Commands
328
+
329
+ ```bash
330
+ # Initialize
331
+ terraform init
332
+ terraform init -upgrade # Upgrade providers
333
+
334
+ # Plan
335
+ terraform plan
336
+ terraform plan -out=tfplan # Save plan
337
+ terraform plan -var="environment=prod"
338
+
339
+ # Apply
340
+ terraform apply
341
+ terraform apply tfplan # Apply saved plan
342
+ terraform apply -auto-approve # Skip confirmation
343
+
344
+ # Destroy
345
+ terraform destroy
346
+ terraform destroy -target=aws_instance.app # Specific resource
347
+
348
+ # State management
349
+ terraform state list
350
+ terraform state show aws_instance.app
351
+ terraform state mv aws_instance.old aws_instance.new
352
+ terraform state rm aws_instance.app # Remove from state
353
+ terraform import aws_instance.app i-1234567890abcdef0
354
+
355
+ # Format and validate
356
+ terraform fmt -recursive
357
+ terraform validate
358
+
359
+ # Output
360
+ terraform output
361
+ terraform output vpc_id
362
+ ```
363
+
364
+ ## Environment Management
365
+
366
+ ### Using Workspaces
367
+
368
+ ```bash
369
+ terraform workspace new staging
370
+ terraform workspace new production
371
+ terraform workspace select staging
372
+ terraform workspace list
373
+ ```
374
+
375
+ ```hcl
376
+ # Use workspace in config
377
+ locals {
378
+ environment = terraform.workspace
379
+ }
380
+
381
+ resource "aws_instance" "app" {
382
+ instance_type = terraform.workspace == "production" ? "t3.large" : "t3.micro"
383
+ }
384
+ ```
385
+
386
+ ### Using Directories (Recommended)
387
+
388
+ ```
389
+ infrastructure/
390
+ ├── modules/
391
+ │ └── vpc/
392
+ ├── environments/
393
+ │ ├── dev/
394
+ │ │ ├── main.tf
395
+ │ │ ├── variables.tf
396
+ │ │ └── terraform.tfvars
397
+ │ ├── staging/
398
+ │ └── prod/
399
+ ```
400
+
401
+ ## Data Sources
402
+
403
+ ```hcl
404
+ # Get existing resources
405
+ data "aws_vpc" "existing" {
406
+ id = "vpc-12345678"
407
+ }
408
+
409
+ data "aws_caller_identity" "current" {}
410
+
411
+ data "aws_region" "current" {}
412
+
413
+ # Use in resources
414
+ resource "aws_subnet" "new" {
415
+ vpc_id = data.aws_vpc.existing.id
416
+ # ...
417
+ }
418
+ ```
419
+
420
+ ## Best Practices
421
+
422
+ - **Remote state** - Never store state locally for team projects
423
+ - **State locking** - Use DynamoDB for AWS, or built-in for Terraform Cloud
424
+ - **Sensitive variables** - Mark with `sensitive = true`
425
+ - **Module versions** - Pin to specific versions
426
+ - **Provider versions** - Use `~>` for minor version flexibility
427
+ - **Resource naming** - Use consistent naming conventions
428
+ - **Tagging** - Apply tags for cost tracking and management
429
+ - **Small, focused changes** - Don't change everything at once
430
+
431
+ ## Sensitive Data
432
+
433
+ ```hcl
434
+ variable "db_password" {
435
+ type = string
436
+ sensitive = true
437
+ }
438
+
439
+ # Or use AWS Secrets Manager
440
+ data "aws_secretsmanager_secret_version" "db" {
441
+ secret_id = "prod/db/password"
442
+ }
443
+
444
+ resource "aws_db_instance" "main" {
445
+ password = data.aws_secretsmanager_secret_version.db.secret_string
446
+ }
447
+ ```
448
+
449
+ ## References
450
+
451
+ - Terraform Documentation: https://developer.hashicorp.com/terraform/docs
452
+ - AWS Provider: https://registry.terraform.io/providers/hashicorp/aws/latest/docs
453
+ - Terraform Registry: https://registry.terraform.io/
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: alpine-dev
3
+ description: Supports Alpine.js development for lightweight, declarative JavaScript interactivity in HTML, covering directives like x-data, x-bind, and x-on. Use for adding sprinkle JS to web pages without frameworks.
4
+ category: frontend
5
+ compatible_with:
6
+ - tailwindcss
7
+ - htmx-dev
8
+ ---
9
+
10
+ # Alpine.js Development Assistance
11
+
12
+ ## Instructions
13
+ 1. **Assess the need**: Look for state management, event listeners, or DOM manipulations.
14
+ 2. **Alpine essentials**: Stress its minimal footprint and jQuery-like simplicity.
15
+ 3. **Provide**:
16
+ - Code: Inline HTML with Alpine attributes and expressions.
17
+ - Explanations: Detail magic properties and plugins.
18
+ - Troubleshooting: Fix common syntax errors or scope issues.
19
+ 4. **Tools**: Validate with code_execution for JS logic.
20
+ 5. **Keep it lightweight**: Offer concise advice and links to Alpine docs.
21
+
22
+ ## Best Practices
23
+ - Use x-init for setup.
24
+ - Combine with Tailwind for styling.
25
+ - Avoid overcomplicating; stick to vanilla JS.
26
+
27
+ [Tessl.io tiles no yet available for Alpine.js]
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: angular-dev
3
+ description: Assists with Angular development tasks, such as generating components, services, modules, debugging code, explaining concepts, and applying best practices. Use this skill when the user asks for help with Angular code, architecture, or troubleshooting in TypeScript-based frontend applications.
4
+ category: frontend
5
+ compatible_with:
6
+ - tailwindcss
7
+ - jest
8
+ - cypress
9
+ ---
10
+
11
+ # Angular Development Assistance
12
+
13
+ ## Instructions
14
+ 1. **Understand the query**: Analyze the user's request, identifying if it's about code generation, explanation, debugging, or optimization.
15
+ 2. **Recall Angular fundamentals**: Use knowledge of Angular's core features like components, directives, services, dependency injection, routing, forms, and RxJS observables.
16
+ 3. **Provide structured responses**:
17
+ - For code generation: Output complete, working code snippets with imports and explanations.
18
+ - For debugging: Ask for error messages or code samples if needed, then suggest fixes step-by-step.
19
+ - For best practices: Reference Angular style guide, performance tips, and security considerations.
20
+ 4. **Use tools if necessary**: If the task involves executing or testing code, consider using code_execution tool for TypeScript/JavaScript validation.
21
+ 5. **Keep it conversational**: Explain concepts with analogies, and include links to official Angular docs for further reading.
22
+
23
+ ## Best Practices
24
+ - Always use TypeScript for Angular code.
25
+ - Encourage reactive programming with NgRx for state management in complex apps.
26
+ - Highlight common pitfalls like change detection issues or memory leaks.
27
+
28
+ For detailed and up-to-date examples and knowledge on the latest Angular, use Tessl.io respective tile in tessl/npm-angular
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: astro-dev
3
+ description: Assists with Astro development for static sites, including islands architecture, component integration (React, Vue, etc.), and content collections. Use when handling hybrid static/dynamic web projects.
4
+ category: frontend
5
+ compatible_with:
6
+ - tailwindcss
7
+ - react-patterns
8
+ - vuejs-dev
9
+ ---
10
+
11
+ # Astro Development Assistance
12
+
13
+ ## Instructions
14
+ 1. **Analyze query**: Focus on site building, framework integration, or deployment.
15
+ 2. **Key Astro concepts**: Emphasize partial hydration, Markdown support, and multi-framework compatibility.
16
+ 3. **Deliver content**:
17
+ - Code snippets: Provide .astro files with frontmatter and islands.
18
+ - Guidance: Explain build processes, routing, and API endpoints.
19
+ - Fixes: Troubleshoot issues like hydration errors or asset handling.
20
+ 4. **Tools**: Test code with code_execution for JS parts.
21
+ 5. **Be informative**: Include steps and links to Astro docs.
22
+
23
+ ## Best Practices
24
+ - Use islands for interactive parts only.
25
+ - Leverage content collections for blogs.
26
+ - Deploy to edge networks for performance.
27
+
28
+ For detailed and up-to-date examples and knowledge on the latest Astro, use Tessl.io respective tile in tessl/npm-astro
@@ -0,0 +1,28 @@
1
+ ---
2
+ name: htmx-dev
3
+ description: Helps with HTMX development, enabling dynamic HTML interactions without heavy JavaScript, including AJAX requests, WebSockets, and extensions. Suitable for enhancing server-rendered apps with client-side behaviors.
4
+ category: frontend
5
+ compatible_with:
6
+ - alpine-dev
7
+ - tailwindcss
8
+ - python-django
9
+ ---
10
+
11
+ # HTMX Development Assistance
12
+
13
+ ## Instructions
14
+ 1. **Understand request**: Identify needs like swapping content, polling, or form submissions.
15
+ 2. **Core HTMX usage**: Focus on attributes like hx-get, hx-post, hx-swap, and triggers.
16
+ 3. **Respond with**:
17
+ - HTML examples: Show server responses and client markup.
18
+ - Integration: Guide on using with backend frameworks like Flask or Express.
19
+ - Debugging: Address issues like failed requests or event handling.
20
+ 4. **Tool support**: Use code_execution for testing JS extensions if needed.
21
+ 5. **Explain clearly**: Use simple examples and reference HTMX docs.
22
+
23
+ ## Best Practices
24
+ - Keep JS minimal; let HTMX handle interactions.
25
+ - Use out-of-band swaps for complex updates.
26
+ - Secure endpoints against CSRF.
27
+
28
+ For detailed and up-to-date knowledge and examples on the latest HTMX, use Tessl.io respective tile in tessl/npm-htmx-org