Conversation
WalkthroughAdds a new top-level "Plugins" navigation tab to docs/docs.json containing two groups: "Plugin Reference" and "Providers". The Providers group includes AWS, GCP, and Neon subgroups with overview and detailed plugin pages (AWS: VPC, Load Balancer, Lambda, Fargate, S3, CloudFront, IAM Role; GCP: Cloud Run, Storage, CDN, Service Account; Neon: Database). Many new MDX files document configuration parameters and outputs. All changes are additive and documentation-only. Possibly related PRs
Suggested reviewers
Pre-merge checks (3 passed)✅ Passed checks (3 passed)
Tip 👮 Agentic pre-merge checks are now available in preview!Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.
Please see the documentation for more information. Example: reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"
mode: "warning"
instructions: |
Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).Please share your feedback with us on this Discord post. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (29)
docs/plugins/gcp/serviceaccount.mdx (2)
14-18: Clarify GCP trust semantics (“actions” vs principals).GCP SA impersonation is about who can actAs the SA, not “actions.” Consider documenting trusted members/principals and linking “iam.serviceAccounts.actAs” to the needed role.
Example tweak:
-<ParamField path="trusted_actions" type="list(string)"> - List of trusted actions for the service account - - **Example:** `["iam.serviceAccounts.actAs"]` -</ParamField> +<ParamField path="trusted_members" type="list(string)"> + Members allowed to impersonate the service account (actAs) + + **Example:** `["user:alice@example.com","serviceAccount:ci@my-project-123.iam.gserviceaccount.com"]` +</ParamField> +<Note> +Granting <code>roles/iam.serviceAccountUser</code> on this service account enables <code>iam.serviceAccounts.actAs</code>. +</Note>
8-12: Add required identifiers (name/email).Most setups need an SA name or email. If the plugin auto-generates these, note the naming scheme.
docs/plugins/aws/s3.mdx (1)
8-12: Specify tag constraints and defaults.Mention AWS tag limits (key/value length, allowed chars) and whether existing bucket tags are merged or overwritten. Note if the bucket name, versioning, encryption, and public access defaults are managed by the plugin.
docs/plugins/neon.mdx (2)
3-3: Fix Vale style (“serverless”, “autoscaling”).Lowercase “serverless”; use “auto scaling” to satisfy Vale.
Apply:
-description: Serverless PostgreSQL database with branching and autoscaling capabilities. +description: serverless PostgreSQL database with branching and auto scaling capabilities.
10-14: One card with two columns looks odd.Use one column for a single card.
-<CardGroup cols={2}> +<CardGroup cols={1}>docs/plugins/neon/database.mdx (2)
3-3: Fix Vale style and tighten wording.Lowercase “serverless”; “auto scaling”; remove redundancy.
-description: Serverless PostgreSQL database with instant branching, autoscaling, and built-in connection pooling. +description: serverless PostgreSQL with instant branching, auto scaling, and built‑in connection pooling.
22-24: Document connection string format.State scheme and example (with placeholders) to reduce ambiguity.
- PostgreSQL connection string for the database + PostgreSQL connection URI (scheme <code>postgresql://</code> or <code>postgres://</code>). + **Example:** <code>postgresql://USER:PASSWORD@HOST:PORT/DB?sslmode=require</code>docs/plugins/aws.mdx (2)
20-24: Vale spelling: “Fargate”.Either whitelist AWS terms in Vale or qualify as “AWS Fargate” to reduce false positives.
- <Card title="Fargate" href="/plugins/aws/fargate"> + <Card title="AWS Fargate" href="/plugins/aws/fargate">If you prefer whitelisting, add to Vale vocab: Fargate.
42-43: Vale spelling: “subnets”.Keep AWS-accurate wording but whitelist “subnet”/“subnets” in Vale to avoid style drift.
docs/plugins/aws/iamrole.mdx (2)
8-12: Minor terminology: “assume‑role policy”.Hyphenate for clarity, and note that actions belong in the policy doc; principals/services are the trust.
- List of trusted actions for the assume role policy + List of trusted actions for the assume‑role policy
14-18: Consider adding principals example.Many readers expect a principals/members field in addition to services.
docs/plugins/gcp/cloudrun.mdx (5)
3-3: Fix Vale style (“serverless”).Lowercase to satisfy Vale.
-description: Run stateless containers on a fully managed serverless platform that automatically scales from zero to handle millions of requests. +description: Run stateless containers on a fully managed serverless platform that automatically scales from zero to handle millions of requests.Note: If Vale still flags, consider “auto‑scales” or rephrase.
20-24: Use “vCPU” not “CPUs” (and clarify units).Align with Cloud Run terminology and avoid Vale plural acronym warning.
-<ParamField path="cpus" type="number" default="1"> - Number of CPUs to allocate to the Cloud Run service +<ParamField path="vcpus" type="number" default="1"> + Number of vCPU to allocate to the Cloud Run service
32-34: GPU phrasing.Prefer singular unit or “GPU accelerators” to dodge Vale and be accurate.
-<ParamField path="gpus" type="number" default="0"> - Number of GPUs to allocate to the Cloud Run service +<ParamField path="gpu" type="number" default="0"> + Number of GPU accelerators to allocate to the service
14-18: Defaults: container_port 9001 deviates from common 8080.If intentional, call it out; otherwise, use 8080.
-<ParamField path="container_port" type="number" default="9001"> +<ParamField path="container_port" type="number" default="8080">
64-68: Timeout default check.Cloud Run’s default is higher (300s). If the plugin constrains to 10s, note the rationale.
docs/plugins/gcp/storage.mdx (1)
14-24: Clarify GCS location options (region vs multi-region).Consider noting whether this plugin accepts only single-region values like
us-central1or also multi-regions likeUS, since users often confuse these. Add a brief note under region or an extra ParamField if multi-regions are supported.docs/plugins/aws/loadbalancer.mdx (2)
3-3: Broaden the description to cover all ELB types.Since
load_balancer_typesupports application, network, and gateway, tweak the description to be type-agnostic.Apply this diff:
-description: Application Load Balancer for distributing incoming traffic across multiple targets. +description: Elastic Load Balancer (ALB/NLB/GWLB) for distributing incoming traffic across multiple targets.
24-34: Note type-specific field applicability (security groups, subnets).Security groups apply to ALB/NLB (not GWLB), and subnet requirements vary by type. Add a short note to prevent misconfiguration.
Example addition after these fields:
+> Note: Security groups apply to ALB/NLB. GWLBs don’t use security groups. Ensure subnets match the LB type and scheme (public vs private).docs/plugins.mdx (1)
36-39: Be explicit about target meaning.A quick parenthetical that the target selects the provider build (and version) will help readers. Optional.
- targets: - - suga/aws@2 + targets: + # Selects the provider build (and its major version) + - suga/aws@2docs/plugins/gcp.mdx (2)
3-3: Avoid “serverless” (Vale) or add to vocab; rephrase for clarity.Rephrase to “fully managed containers” to dodge Vale, unless you add “serverless” to the vocab file suggested elsewhere.
-description: GCP plugins for serverless containers, storage, and CDN services. +description: GCP plugins for fully managed containers, storage, and CDN services.
35-35: Brand/style: capitalize “CDN”.- <Card title="Cdn" href="/plugins/gcp/cdn"> + <Card title="CDN" href="/plugins/gcp/cdn">docs/plugins/aws/fargate.mdx (1)
26-31: Document valid CPU/memory combinations (Fargate constraint).Users routinely hit deploy errors without this table. Add a brief note or link.
Example addition after memory:
+> Note: Fargate enforces specific CPU/Memory combinations (e.g., 256/512–2048, 512/1024–4096, 1024/2048–8192, 2048/4096–16384, 4096/8192–30720 MB). Choose a valid pair.docs/plugins/aws/vpc.mdx (2)
14-24: Ingress/egress example keys imply lists; confirm schema or adjust example.You declare
list(map(string)), but usecidr_blockswith a single string. If the schema expects a single CIDR string, rename the key tocidr_blockin the example; if it’s a list, wrap it as a JSON array string.Example (if list is intended):
- **Example:** `[{"from_port": "0", "to_port": "0", "protocol": "-1", "cidr_blocks": "0.0.0.0/0"}]` + **Example:** `[{"from_port": "0", "to_port": "0", "protocol": "-1", "cidr_blocks": ["0.0.0.0/0"]}]`
40-44: Spell out the networking object shape for clarity.Briefly enumerate required keys (
cidr_block,private_subnets,public_subnets) and value types to reduce ambiguity.docs/plugins/aws/cloudfront.mdx (2)
30-40: Replace “geo” with “geographic” in prose (keep param names intact).Avoid informal “geo” and potential Vale flags; use “geographic restrictions” in descriptions only.
- List of ISO 3166-1 alpha-2 country codes for geo restriction + List of ISO 3166-1 alpha-2 country codes for geographic restrictions @@ - Type of geo restriction (none, whitelist, blacklist) + Type of geographic restriction (none, allowlist, denylist)Note: If the underlying values are
whitelist/blacklist, keep the parameter accepted values unchanged; only adjust wording in the description.
42-46: Boolean example casing.Prefer lowercase
trueto match typical YAML/JSON examples for consistency.- **Example:** `True` + **Example:** `true`docs/plugins/aws/lambda.mdx (1)
8-12: Minor: add note on arch trade-offs.Optional tip: “arm64 often lowers cost and improves performance; ensure your runtime/deps support it.”
docs/docs.json (1)
112-121: Optional: Normalize page ordering for consistencyConsider alpha-sorting entries within each provider to aid scanability (unless you have an intentional learning sequence).
Also applies to: 127-133, 138-140
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
docs/images/edit-platform.pngis excluded by!**/*.png
📒 Files selected for processing (17)
docs/docs.json(1 hunks)docs/plugins.mdx(1 hunks)docs/plugins/aws.mdx(1 hunks)docs/plugins/aws/cloudfront.mdx(1 hunks)docs/plugins/aws/fargate.mdx(1 hunks)docs/plugins/aws/iamrole.mdx(1 hunks)docs/plugins/aws/lambda.mdx(1 hunks)docs/plugins/aws/loadbalancer.mdx(1 hunks)docs/plugins/aws/s3.mdx(1 hunks)docs/plugins/aws/vpc.mdx(1 hunks)docs/plugins/gcp.mdx(1 hunks)docs/plugins/gcp/cdn.mdx(1 hunks)docs/plugins/gcp/cloudrun.mdx(1 hunks)docs/plugins/gcp/serviceaccount.mdx(1 hunks)docs/plugins/gcp/storage.mdx(1 hunks)docs/plugins/neon.mdx(1 hunks)docs/plugins/neon/database.mdx(1 hunks)
🧰 Additional context used
🪛 GitHub Check: Spell Check with Vale
docs/plugins/aws/lambda.mdx
[failure] 47-47:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'subnet'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'subnet'?", "location": {"path": "docs/plugins/aws/lambda.mdx", "range": {"start": {"line": 47, "column": 19}}}, "severity": "ERROR"}
docs/plugins/aws/loadbalancer.mdx
[failure] 33-33:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'subnet'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'subnet'?", "location": {"path": "docs/plugins/aws/loadbalancer.mdx", "range": {"start": {"line": 33, "column": 19}}}, "severity": "ERROR"}
docs/plugins/aws/fargate.mdx
[failure] 57-57:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Fargate'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'Fargate'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 57, "column": 20}}}, "severity": "ERROR"}
[failure] 53-53:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'subnet'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'subnet'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 53, "column": 19}}}, "severity": "ERROR"}
[failure] 51-51:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Fargate'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'Fargate'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 51, "column": 30}}}, "severity": "ERROR"}
[failure] 45-45:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Fargate'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'Fargate'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 45, "column": 38}}}, "severity": "ERROR"}
[failure] 39-39:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Fargate'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'Fargate'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 39, "column": 24}}}, "severity": "ERROR"}
[failure] 27-27:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Fargate'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'Fargate'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 27, "column": 21}}}, "severity": "ERROR"}
[failure] 2-2:
[vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Fargate'?
Raw Output:
{"message": "[Vale.Spelling] Did you really mean 'Fargate'?", "location": {"path": "docs/plugins/aws/fargate.mdx", "range": {"start": {"line": 2, "column": 8}}}, "severity": "ERROR"}
🪛 GitHub Actions: Test Docs
docs/plugins/aws/lambda.mdx
[error] 47-47: [Vale.Spelling] Did you really mean 'subnet'?
docs/plugins/neon/database.mdx
[error] 3-3: [Vale.Spelling] Did you really mean 'Serverless'?
[error] 3-3: [Vale.Spelling] Did you really mean 'autoscaling'?
docs/plugins/aws/cloudfront.mdx
[error] 2-2: [Vale.Spelling] Did you really mean 'Cloudfront'?
[error] 30-30: [Vale.Spelling] Did you really mean 'geo'?
docs/plugins/neon.mdx
[error] 3-3: [Vale.Spelling] Did you really mean 'Serverless'?
[error] 3-3: [Vale.Spelling] Did you really mean 'autoscaling'?
docs/plugins/aws/loadbalancer.mdx
[error] 33-33: [Vale.Spelling] Did you really mean 'subnet'?
docs/plugins/aws/fargate.mdx
[error] 2-2: [Vale.Spelling] Did you really mean 'Fargate'?
[error] 27-27: [Vale.Spelling] Did you really mean 'Fargate'?
[error] 39-39: [Vale.Spelling] Did you really mean 'Fargate'?
[error] 45-45: [Vale.Spelling] Did you really mean 'Fargate'?
[error] 51-51: [Vale.Spelling] Did you really mean 'Fargate'?
[error] 53-53: [Vale.Spelling] Did you really mean 'subnet'?
[error] 57-57: [Vale.Spelling] Did you really mean 'Fargate'?
docs/plugins/gcp.mdx
[error] 3-3: [Vale.Spelling] Did you really mean 'serverless'?
docs/plugins/aws/vpc.mdx
[error] 3-3: [Vale.Spelling] Did you really mean 'subnets'?
[error] 27-27: [Vale.Spelling] Did you really mean 'subnet'?
[error] 43-43: [Vale.Spelling] Did you really mean 'subnet'?
[error] 63-63: [Vale.Spelling] Did you really mean 'subnet'?
[error] 67-67: [Vale.Spelling] Did you really mean 'subnet'?
[error] 71-71: [Vale.Spelling] Did you really mean 'subnet'?
docs/plugins/aws.mdx
[error] 20-20: [Vale.Spelling] Did you really mean 'Fargate'?
[error] 42-42: [Vale.Spelling] Did you really mean 'subnets'?
docs/plugins/gcp/cloudrun.mdx
[error] 3-3: [Vale.Spelling] Did you really mean 'serverless'?
[error] 21-21: [Vale.Spelling] Did you really mean 'CPUs'?
[error] 33-33: [Vale.Spelling] Did you really mean 'GPUs'?
🔇 Additional comments (9)
docs/plugins/gcp/cdn.mdx (1)
8-12: Clarify cdn_domain schema (object vs string)docs/plugins/gcp/cdn.mdx declares cdn_domain as type=object but the example only shows a hostname. Either:
- Option A — keep object: document fields (domain: string; managed_certificate: boolean) and update example to {"domain":"cdn.example.com","managed_certificate":true}
- Option B — change to string: type="string" with example: cdn.example.com
Location: docs/plugins/gcp/cdn.mdx (lines 8–12)
docs/plugins/aws/loadbalancer.mdx (1)
30-34: Pipeline: Vale false positive on “subnet”. Add to vocab instead of altering examples.Multiple pages fail on “subnet”. Rather than degrading examples, whitelist common infra terms.
Apply a repo-level vocab file (or append if it exists):
+.vale/Vocab/Tech/accept.txt +CloudFront +Fargate +serverless +subnet +subnets +VPC +CDNThen rerun the docs check.
docs/plugins/aws/fargate.mdx (2)
50-54: Pipeline: Vale flags “subnet”. Prefer adding to vocab over changing examples.See the vocab diff proposed in loadbalancer.mdx comment to fix pipeline consistently.
2-2: Pipeline: “Fargate” flagged by Vale; whitelist proper noun.Covered by the vocab addition suggested earlier.
docs/plugins/aws/vpc.mdx (1)
62-72: Pipeline: multiple “subnet(s)” Vale hits — resolve via vocab.Use the shared vocab addition to avoid weakening examples.
docs/plugins/aws/lambda.mdx (1)
44-48: Pipeline: “subnet” Vale false positive.Covered by the proposed vocab addition; no content change needed.
docs/docs.json (3)
97-145: Plugins tab structure LGTMMatches the existing "SDKs" nesting pattern; JSON shape looks valid.
99-101: Verify icon identifiers are valid Font Awesome/Lucide names or provide fallbacksMintlify supports Font Awesome (including brands) and Lucide, plus raw SVG/URLs — ensure "plug", "aws", "google", "database" match the icon names in those sets; if not, replace with "puzzle" or "cloud" or supply an SVG/URL.
File: docs/docs.json lines 99–101 (also 110–112, 125–126, 136–137)
103-141: Check that all referenced plugin pages exist (prevent broken nav links)Run this POSIX-friendly check and paste the output if any "Missing:" lines appear.
#!/bin/sh set -eu json='docs/docs.json' [ -f "$json" ] || { echo "ERROR: $json not found" >&2; exit 0; } jq -r '.. | scalars | select(type=="string") | select(test("^plugins(/|$)"))' "$json" | sort -u \ | while IFS= read -r slug; do p1="docs/${slug}.mdx" p2="docs/${slug}/index.mdx" p3="docs/${slug}.md" p4="docs/${slug}/README.mdx" if [ -f "$p1" ]; then echo "Exists: $p1" elif [ -f "$p2" ]; then echo "Exists: $p2" elif [ -f "$p3" ]; then echo "Exists: $p3" elif [ -f "$p4" ]; then echo "Exists: $p4" else echo "Missing: $slug (checked: $p1 $p2 $p3 $p4)" fi done
8951e8f to
b8c3585
Compare
b8c3585 to
2ecf8bb
Compare
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (15)
docs/plugins/aws/lambda.mdx (5)
20-24: Double-check default for ephemeral storage; AWS default is 512 MB.If the plugin’s default is 1024 MB, call that out explicitly; otherwise set default to 512 to match AWS.
-<ParamField path="ephemeral_storage" type="number" default="1024"> +<ParamField path="ephemeral_storage" type="number" default="512"> Size of ephemeral storage in MB (512-10240) + Default for AWS Lambda is 512 MB; this plugin can override via this setting. **Example:** `1024` </ParamField>
26-30: Clarify security impact of public Function URLs.Add an explicit warning that NONE makes the function publicly accessible.
<ParamField path="function_url_auth_type" type="string" default="AWS_IAM"> - Authorization type for function URL (AWS_IAM or NONE) + Authorization type for function URL (AWS_IAM or NONE). + Warning: Using `NONE` exposes a public URL; prefer `AWS_IAM` unless you intend open access. **Example:** `AWS_IAM` </ParamField>
38-42: Document VPC config coupling: subnets and security groups must be provided together.AWS requires both when enabling VPC config; note this to prevent partial configs.
<ParamField path="security_group_ids" type="list(string)"> List of security group IDs for VPC configuration + Must be provided together with `subnet_ids` to enable VPC configuration. **Example:** `["sg-0123456789abcdef0"]` </ParamField> <ParamField path="subnet_ids" type="list(string)"> List of subnet IDs for VPC configuration + Must be provided together with `security_group_ids` to enable VPC configuration. **Example:** `["subnet-12345678", "subnet-87654321"]` </ParamField>Also applies to: 44-48
20-24: Use integer type for integral fields (if supported by ParamField).These values are integers; prefer
integerovernumberif the schema supports it.-<ParamField path="ephemeral_storage" type="number" default="1024"> +<ParamField path="ephemeral_storage" type="integer" default="1024"> @@ -<ParamField path="memory" type="number" default="1024"> +<ParamField path="memory" type="integer" default="1024"> @@ -<ParamField path="timeout" type="number" default="300"> +<ParamField path="timeout" type="integer" default="300">Also applies to: 32-36, 50-54
6-6: Consider adding Outputs section for parity.If this plugin exports values (e.g., function ARN, function URL), document them for consumers.
docs/.vale/styles/config/vocabularies/Suga/accept.txt (2)
21-21: Remove duplicate case-variant (“Serverless”).File notes say terms are case-insensitive; keeping both “serverless” and “Serverless” is redundant.
-Serverless
18-20: Add singular forms for completeness.Vale won’t infer plurals/singulars; consider adding CPU/GPU to cover those usages too.
GPUs CPUs +GPU +CPUdocs/plugins/neon/database.mdx (3)
1-4: Tighten description wording (“autoscaling”).Use “autoscaling” (one word) for consistency with the glossary; optional capitalization of “Serverless” at sentence start.
-description: serverless PostgreSQL with instant branching, auto scaling, and built-in connection pooling +description: Serverless PostgreSQL with instant branching, autoscaling, and built-in connection pooling
8-18: Mark required fields if supported.If
<ParamField>supports arequiredprop, markbranch_idandproject_idas required.-<ParamField path="branch_id" type="string"> +<ParamField path="branch_id" type="string" required> ... -<ParamField path="project_id" type="string"> +<ParamField path="project_id" type="string" required>
22-26: Call out SSL requirement explicitly.Neon typically requires TLS; a short note helps prevent connection errors.
**Example:** `postgresql://USER:PASSWORD@HOST:PORT/DB?sslmode=require` </ResponseField> + +> Note: SSL is required for Neon in most environments — keep `sslmode=require` unless you’ve explicitly configured otherwise.docs/plugins/gcp/cdn.mdx (5)
1-4: Front matter polish + nav check
- Add terminal punctuation to the description for consistency with other docs.
- Confirm this page is correctly wired into docs/docs.json under Plugins → Providers → GCP → CDN.
Proposed tweak:
--- title: CDN -description: Global Content Delivery Network for fast, reliable content delivery +description: Global Content Delivery Network for fast, reliable content delivery. ---
8-12: Specify object shape for cdn_domainClarify expected fields (e.g., domain, managed_cert, certificate_id) and whether wildcard domains are supported. Inline JSON example is okay, but a fenced YAML/JSON block improves readability and copyability.
Proposed edit:
-<ParamField path="cdn_domain" type="object"> - CDN domain configuration - - **Example:** `{"domain": "cdn.example.com"}` -</ParamField> +<ParamField path="cdn_domain" type="object" required> + CDN domain configuration. Provide the hostname and (optionally) certificate settings. + + Example: + ```yaml + cdn_domain: + domain: cdn.example.com + # managed_cert: true # optional + # certificate_id: my-cert-id # optional, when using a pre-provisioned cert + ``` +</ParamField>
14-18: Avoid duplicating project_id if inherited from providerIf the GCP provider block already supplies project_id, note inheritance here or mark as optional to prevent users from repeating it.
Possible tweak:
-<ParamField path="project_id" type="string"> - Google Cloud Project ID +<ParamField path="project_id" type="string"> + Google Cloud Project ID (inherits from the GCP provider if set)
20-24: Region vs global: confirm correctness for Cloud CDNCloud CDN is fronted by a global HTTPS load balancer. If this parameter configures backend location (e.g., Cloud Run/NEG) rather than the CDN itself, rename to “location” and document accepted values (e.g., global or specific region) to avoid confusion.
Proposed wording:
-<ParamField path="region" type="string"> - Google Cloud region - - **Example:** `us-central1` +<ParamField path="location" type="string"> + Google Cloud location. Use "global" for the CDN/load balancer; use a region for backend services (e.g., Cloud Run). + + **Examples:** `global`, `us-central1` </ParamField>
6-24: Add Outputs sectionDocumenting outputs (e.g., CDN URL/host, LB name, SSL cert resource) helps users wire this into downstream components.
Sample stub to fill with the plugin’s actual outputs:
## Configuration @@ </ParamField> +## Outputs + +<OutputField path="cdn_host"> + Fully qualified CDN hostname (e.g., cdn.example.com). +</OutputField> + +<OutputField path="lb_name"> + Name of the HTTPS Load Balancer. +</OutputField> + +<OutputField path="certificate_ref"> + Reference to the managed or custom SSL certificate. +</OutputField>
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
docs/images/edit-platform.pngis excluded by!**/*.png
📒 Files selected for processing (18)
docs/.vale/styles/config/vocabularies/Suga/accept.txt(1 hunks)docs/docs.json(1 hunks)docs/plugins.mdx(1 hunks)docs/plugins/aws.mdx(1 hunks)docs/plugins/aws/cloudfront.mdx(1 hunks)docs/plugins/aws/fargate.mdx(1 hunks)docs/plugins/aws/iamrole.mdx(1 hunks)docs/plugins/aws/lambda.mdx(1 hunks)docs/plugins/aws/loadbalancer.mdx(1 hunks)docs/plugins/aws/s3.mdx(1 hunks)docs/plugins/aws/vpc.mdx(1 hunks)docs/plugins/gcp.mdx(1 hunks)docs/plugins/gcp/cdn.mdx(1 hunks)docs/plugins/gcp/cloudrun.mdx(1 hunks)docs/plugins/gcp/serviceaccount.mdx(1 hunks)docs/plugins/gcp/storage.mdx(1 hunks)docs/plugins/neon.mdx(1 hunks)docs/plugins/neon/database.mdx(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- docs/plugins/aws/s3.mdx
- docs/plugins/gcp/cloudrun.mdx
🚧 Files skipped from review as they are similar to previous changes (12)
- docs/plugins/aws/loadbalancer.mdx
- docs/plugins/aws/fargate.mdx
- docs/plugins/gcp/serviceaccount.mdx
- docs/plugins/aws/cloudfront.mdx
- docs/plugins.mdx
- docs/plugins/gcp/storage.mdx
- docs/plugins/aws.mdx
- docs/plugins/aws/iamrole.mdx
- docs/plugins/aws/vpc.mdx
- docs/plugins/gcp.mdx
- docs/plugins/neon.mdx
- docs/docs.json
🔇 Additional comments (2)
docs/plugins/neon/database.mdx (1)
1-27: Overall: solid addition.Clear, minimal, and matches the new Plugins structure.
docs/plugins/gcp/cdn.mdx (1)
6-24: Schema sync — verify param names/types match plugin generatordocs/plugins/gcp/cdn.mdx defines: cdn_domain (object), project_id (string), region (string). The plugin schema/generator is not present in this repo; verify these exact names/types (and whether the generator uses "region" vs "location") against the generator and update the docs if they differ.
| 1. **Open the Suga editor** to build your platform: | ||
|
|
||
| ```bash | ||
| suga edit | ||
| ``` |
There was a problem hiding this comment.
No need to use the cli to edit a platform, only to edit a local project. For users who want to create/update a platform they can navigate to https://app.addsuga.com and click the platforms nav item.
| suga edit | ||
| ``` | ||
|
|
||
| 2. **Add plugins** into your platform and configure parameters using this reference |
There was a problem hiding this comment.
Before this step, we probably want to document creating a platform or finding one to edit.
There was a problem hiding this comment.
I think a section at the beginning explaining what Platforms, Plugins and Blueprints are would be helpful to setup some context for the reader.
| <Tip> | ||
| Reference outputs from other plugins using `${type.name.output}` syntax, e.g. `${infra.vpc.vpc_id}` or `${databases.main.connection_string}` | ||
| </Tip> |
There was a problem hiding this comment.
This tip feels out of context, I think the steps should include creating a new blueprint by dragging a copy of a plugin into the platform, then configuring the blueprint with manually set properties, then finally configuring properties that reference platform variables or variables from other blueprints.
| Reference outputs from other plugins using `${type.name.output}` syntax, e.g. `${infra.vpc.vpc_id}` or `${databases.main.connection_string}` | ||
| </Tip> | ||
|
|
||
| 3. **Deploy your platform**: |
There was a problem hiding this comment.
I think "Publish" or "Release" might be more accurate than Deploy in this context.
| - Update the target in your `suga.yaml` to build terraform using your platform with the plugins that you have composed: | ||
|
|
||
| ```yaml | ||
| targets: | ||
| - suga/aws@2 | ||
| ``` |
There was a problem hiding this comment.
This should be a new step, with more explaination in the previous step (a revision is created, note the revision number, then update the suga.yaml with the new revision reference)
| "pages": ["plugins"] | ||
| }, | ||
| { | ||
| "group": "Providers", |
There was a problem hiding this comment.
They're not really providers, we might want a new name for this grouping/plugin collection. However, this documentation should be clearly noted as the suga plugin library, since it's just the one we provide out of the box, teams are able to make their own privately or share them publicly and those will have/need their own docs.
@tjholm @raksiv this make me think these docs might want to be generated by the platform or something so we can co-locate it with the plugin browser. Let's chat.
There was a problem hiding this comment.
We could allow a README.md in the plugins and render it in the app. Could call it "Official Plugins" or "Suga Plugins"
There was a problem hiding this comment.
I've got it auto generating atm from the manifests which I've updated, thinking about this more over the weekend and the docs are required in the future for plugin configuration reference, but they aren't really required on the docs website as they muddy the water.
| description: Official plugins for creating infrastructure platforms | ||
| --- | ||
|
|
||
| Each plugin provides a specific infrastructure capability - like storage, compute, or networking. Compose these plugins to build complete platforms across multiple cloud providers. |
There was a problem hiding this comment.
Im still super confused about how to actually input these values.
| <ParamField path="custom_domain" type="string"> | ||
| Custom domain name for CloudFront distribution | ||
|
|
||
| **Example:** `cdn.example.com` |
There was a problem hiding this comment.
I would really love these examples to be expanded showing where and how I can input them. Who can adjust them, how it would work for multiple environments or multiple apps on their own domains etc. As is I am really confused how to make use of this
|
I'm going to close this PR and raise a new one with the generation code against the plugins repo - lets discuss tomorrow beforeI do that. |
Reference documentation for the plugins and how to compose a platform, all files inside plugins\ are autogenerated except aws.mdx, gcp.mdx and neon.mdx