Skip to content

feat(skills): insforge.toml config-as-code + compute scale-to-zero docs#62

Merged
tonychang04 merged 9 commits into
mainfrom
feat/config-toml-skills
May 12, 2026
Merged

feat(skills): insforge.toml config-as-code + compute scale-to-zero docs#62
tonychang04 merged 9 commits into
mainfrom
feat/config-toml-skills

Conversation

@tonychang04
Copy link
Copy Markdown
Contributor

@tonychang04 tonychang04 commented May 8, 2026

Summary

Bundles two doc changes:

1. insforge-cli skill — config command group

  • Documents config export | plan | apply for declarative auth.allowed_redirect_urls
  • New references/config.md with output shapes, common-mistakes table, skipped[] handling
  • Rules: TOML is for knobs only (never embed programs), surface skipped[] verbatim
  • Scope-honest: explicitly scopes to auth.allowed_redirect_urls today; coming-soon stub for password policy / OAuth / SMTP / custom subdomain
  • Removes obsolete insforge/auth/backend-configuration.md (mis-categorized in SDK skill); updates cross-refs in insforge/SKILL.md and auth/sdk-integration.md
  • Skill version bumped to 1.5.0

2. insforge-cli skill — compute scale-to-zero

  • Documents Fly.io scale-to-zero as v1's only mode (autostop/autostart Machines API field names)
  • Sets correct expectations for cold-start behavior

Companion PR

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 8, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds documentation for npx @insforge/cli config to declaratively manage auth.allowed_redirect_urls via an insforge.toml workflow (export → plan → apply). Integrates the CLI flow into SDK and skill docs, removes prior auth backend-configuration content, and updates the SKILL index and insforge-cli skill doc with capability-gated apply and skipped[] semantics.

Changes

Configuration Command and Auth Integration

Layer / File(s) Summary
CLI config reference and behavior
skills/insforge-cli/references/config.md
New command reference for @insforge/cli config documenting export, plan, apply; project-root insforge.toml location; "knobs only" scope; capability-gated apply that probes /api/metadata and only PUTs supported fields; skipped[] semantics and upgrade messaging; --json output shapes; non-interactive --auto-approve/-y behavior; example workflow.
insforge-cli skill documentation
skills/insforge-cli/SKILL.md
Skill front-matter version bump and new "Configuration — npx @insforge/cli config" section; documents export→edit→plan→apply flow, skipped[] behavior, non-obvious/version-aware notes, and common workflows.
Removed/trimmed Auth backend configuration doc
skills/insforge/auth/backend-configuration.md
Previously detailed auth backend configuration content removed/emptied; guidance moved to CLI docs and SDK notes.
SDK Integration References
skills/insforge/auth/sdk-integration.md
Best Practices updated to fetch auth configuration via npx @insforge/cli metadata --json (lists returned fields) and to recommend npx @insforge/cli config apply for adding allowed redirect URLs; notes other auth settings remain dashboard-managed.
SKILL Index Update
skills/insforge/SKILL.md
Removed Auth from "Backend Configuration (Not Yet in CLI)"; added note that redirect URL allowlisting is handled via npx @insforge/cli config export/plan/apply while other auth settings stay in the dashboard.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • jwfing
  • Fermionic-Lyu

Poem

🐰 I found a tiny CLI,
a tidy TOML nest in tow.
Export, plan, and then apply—hi!
Skipped bits wait for upgrades slow,
Hopping docs and configs grow.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title 'feat(skills): insforge.toml config-as-code + compute scale-to-zero docs' is partially related to the changeset. It accurately describes the insforge.toml config-as-code documentation additions across multiple skill files, but includes a reference to 'compute scale-to-zero docs' which does not appear in the actual changes—all modifications are exclusively focused on insforge.toml configuration management and auth documentation updates. Remove the '+compute scale-to-zero docs' portion from the title since that change is not present in this PR. Use: 'feat(skills): document insforge.toml config-as-code flow' to match the actual changeset.
✅ Passed checks (4 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/config-toml-skills

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/insforge-cli/SKILL.md`:
- Line 181: Update the command description for `npx `@insforge/cli` config plan
[--file insforge.toml]` to use clear grammar; replace "Tags which changes will
apply vs. skip on the connected backend." with a concise phrasing such as "Shows
which changes will apply vs. skip on the connected backend." so the sentence
reads: "`npx `@insforge/cli` config plan [--file insforge.toml]` — show diff
between TOML and live state. Shows which changes will apply vs. skip on the
connected backend."
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 468af17a-b4fb-447c-965a-3efd6873d53d

📥 Commits

Reviewing files that changed from the base of the PR and between 1f59ea1 and d664ec1.

📒 Files selected for processing (2)
  • skills/insforge-cli/SKILL.md
  • skills/insforge/auth/backend-configuration.md

Comment thread skills/insforge-cli/SKILL.md Outdated
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 2 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="skills/insforge-cli/SKILL.md">

<violation number="1" location="skills/insforge-cli/SKILL.md:199">
P2: The example uses `--yes` (positioned as a global flag before the subcommand) but the command signature lists `--auto-approve`. An agent following the signature would use `--auto-approve`; one copying the example would use `--yes`. Consider aligning them to avoid confusion.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review, or fix all with cubic.

Comment thread skills/insforge-cli/SKILL.md Outdated
>
> ```bash
> npx @insforge/cli secrets add SMTP_PASSWORD "<actual-value>"
> npx @insforge/cli --yes config apply
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot May 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The example uses --yes (positioned as a global flag before the subcommand) but the command signature lists --auto-approve. An agent following the signature would use --auto-approve; one copying the example would use --yes. Consider aligning them to avoid confusion.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At skills/insforge-cli/SKILL.md, line 199:

<comment>The example uses `--yes` (positioned as a global flag before the subcommand) but the command signature lists `--auto-approve`. An agent following the signature would use `--auto-approve`; one copying the example would use `--yes`. Consider aligning them to avoid confusion.</comment>

<file context>
@@ -173,6 +173,32 @@ For frontend hosting see **Frontend Deployments** above.
+>
+> ```bash
+> npx @insforge/cli secrets add SMTP_PASSWORD "<actual-value>"
+> npx @insforge/cli --yes config apply
+> ```
+
</file context>
Suggested change
> npx @insforge/cli --yes config apply
> npx @insforge/cli config apply --auto-approve
Fix with Cubic

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
skills/insforge-cli/SKILL.md (1)

181-181: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Tighten wording for clarity at Line 181.

“tags which changes will apply…” is still grammatically awkward; use clearer phrasing (e.g., “shows which changes will apply vs. be skipped”).

Suggested edit
-- `npx `@insforge/cli` config plan [--file insforge.toml]` — diff TOML vs. live state; tags which changes will apply vs. skip on the connected backend.
+- `npx `@insforge/cli` config plan [--file insforge.toml]` — diff TOML vs. live state; shows which changes will apply vs. be skipped on the connected backend.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/insforge-cli/SKILL.md` at line 181, Update the description for the
command that starts with `npx `@insforge/cli` config plan [--file insforge.toml]`
to fix the awkward phrase "tags which changes will apply" — replace it with a
clearer wording such as "shows which changes will apply vs. be skipped" so the
sentence reads: "diff TOML vs. live state; shows which changes will apply vs. be
skipped on the connected backend." Locate the description string in SKILL.md
near the `npx `@insforge/cli` config plan` entry and update that wording
accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/insforge-cli/SKILL.md`:
- Around line 184-188: The blockquote in SKILL.md has blank lines breaking the
quoted paragraph and triggers MD028; open the blockquote that contains the three
bold rules (the lines starting with "**TOML is for knobs only — never embed
programs.**", "**If `apply` returns `skipped: [...]`, surface verbatim.**", and
"**Sensitive values use `env(NAME)` references, never literal strings.**") and
remove the empty lines so the quote lines are contiguous (one blockquote without
blank lines), then re-run markdownlint/MD028 to confirm the warning is resolved.

---

Duplicate comments:
In `@skills/insforge-cli/SKILL.md`:
- Line 181: Update the description for the command that starts with `npx
`@insforge/cli` config plan [--file insforge.toml]` to fix the awkward phrase
"tags which changes will apply" — replace it with a clearer wording such as
"shows which changes will apply vs. be skipped" so the sentence reads: "diff
TOML vs. live state; shows which changes will apply vs. be skipped on the
connected backend." Locate the description string in SKILL.md near the `npx
`@insforge/cli` config plan` entry and update that wording accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 1a6c683a-a7bf-45d2-96ce-b480587be1c3

📥 Commits

Reviewing files that changed from the base of the PR and between e942807 and 60c0daf.

📒 Files selected for processing (2)
  • skills/insforge-cli/SKILL.md
  • skills/insforge-cli/references/config.md
✅ Files skipped from review due to trivial changes (1)
  • skills/insforge-cli/references/config.md

Comment thread skills/insforge-cli/SKILL.md Outdated
Comment on lines +184 to +188
> **TOML is for knobs only — never embed programs.** SQL → `db migrations`. Function code → `functions deploy`. Compute → `compute deploy`. Frontend → `deployments deploy`. TOML carries booleans, strings, and arrays — anything bigger lives in its own file managed by a dedicated CLI command.

> **If `apply` returns `skipped: [...]`, surface verbatim.** The user's project backend doesn't support those sections yet. Tell the user which sections were skipped and to upgrade their backend; do not retry, do not bypass with `curl` (silent drop). Sample message: _"I tried to set `auth.allowed_redirect_urls` but your project's backend is on an older version that doesn't support this yet. Upgrade your backend and re-run `npx @insforge/cli config apply`."_

> **Sensitive values use `env(NAME)` references, never literal strings.** Store the actual value with `secrets add` first, then reference it from TOML. The CLI rejects literals on sensitive fields with a `ConfigValidationError` naming the exact `secrets add` command to run.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix blockquote spacing to satisfy markdownlint (MD028).

Lines 185 and 187 introduce blank lines inside a blockquote block; this triggers lint warnings. Keep blockquote lines contiguous.

Suggested edit
 > **TOML is for knobs only — never embed programs.** SQL → `db migrations`. Function code → `functions deploy`. Compute → `compute deploy`. Frontend → `deployments deploy`. TOML carries booleans, strings, and arrays — anything bigger lives in its own file managed by a dedicated CLI command.
-
 > **If `apply` returns `skipped: [...]`, surface verbatim.** The user's project backend doesn't support those sections yet. Tell the user which sections were skipped and to upgrade their backend; do not retry, do not bypass with `curl` (silent drop). Sample message: _"I tried to set `auth.allowed_redirect_urls` but your project's backend is on an older version that doesn't support this yet. Upgrade your backend and re-run `npx `@insforge/cli` config apply`."_
-
 > **Sensitive values use `env(NAME)` references, never literal strings.** Store the actual value with `secrets add` first, then reference it from TOML. The CLI rejects literals on sensitive fields with a `ConfigValidationError` naming the exact `secrets add` command to run.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
> **TOML is for knobs only — never embed programs.** SQL → `db migrations`. Function code → `functions deploy`. Compute → `compute deploy`. Frontend → `deployments deploy`. TOML carries booleans, strings, and arrays — anything bigger lives in its own file managed by a dedicated CLI command.
> **If `apply` returns `skipped: [...]`, surface verbatim.** The user's project backend doesn't support those sections yet. Tell the user which sections were skipped and to upgrade their backend; do not retry, do not bypass with `curl` (silent drop). Sample message: _"I tried to set `auth.allowed_redirect_urls` but your project's backend is on an older version that doesn't support this yet. Upgrade your backend and re-run `npx @insforge/cli config apply`."_
> **Sensitive values use `env(NAME)` references, never literal strings.** Store the actual value with `secrets add` first, then reference it from TOML. The CLI rejects literals on sensitive fields with a `ConfigValidationError` naming the exact `secrets add` command to run.
> **TOML is for knobs only — never embed programs.** SQL → `db migrations`. Function code → `functions deploy`. Compute → `compute deploy`. Frontend → `deployments deploy`. TOML carries booleans, strings, and arrays — anything bigger lives in its own file managed by a dedicated CLI command.
> **If `apply` returns `skipped: [...]`, surface verbatim.** The user's project backend doesn't support those sections yet. Tell the user which sections were skipped and to upgrade their backend; do not retry, do not bypass with `curl` (silent drop). Sample message: _"I tried to set `auth.allowed_redirect_urls` but your project's backend is on an older version that doesn't support this yet. Upgrade your backend and re-run `npx `@insforge/cli` config apply`."_
> **Sensitive values use `env(NAME)` references, never literal strings.** Store the actual value with `secrets add` first, then reference it from TOML. The CLI rejects literals on sensitive fields with a `ConfigValidationError` naming the exact `secrets add` command to run.
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 185-185: Blank line inside blockquote

(MD028, no-blanks-blockquote)


[warning] 187-187: Blank line inside blockquote

(MD028, no-blanks-blockquote)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/insforge-cli/SKILL.md` around lines 184 - 188, The blockquote in
SKILL.md has blank lines breaking the quoted paragraph and triggers MD028; open
the blockquote that contains the three bold rules (the lines starting with
"**TOML is for knobs only — never embed programs.**", "**If `apply` returns
`skipped: [...]`, surface verbatim.**", and "**Sensitive values use `env(NAME)`
references, never literal strings.**") and remove the empty lines so the quote
lines are contiguous (one blockquote without blank lines), then re-run
markdownlint/MD028 to confirm the warning is resolved.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
skills/insforge-cli/SKILL.md (1)

184-186: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove blank line between blockquotes to fix MD028 linting warning.

The blank line at line 185 between the two blockquote paragraphs triggers the MD028 (no-blanks-blockquote) warning. Remove the blank line to make the blockquotes contiguous.

📝 Proposed fix
 > **If `apply` returns `skipped: [...]`, surface verbatim.** The user's backend predates this section. Tell them which sections were skipped and to upgrade; do not retry, do not bypass with `curl` (silent drop). Sample message: _"I tried to set `auth.allowed_redirect_urls` but your backend is on an older version that doesn't support it yet. Upgrade your backend and re-run `npx `@insforge/cli` config apply`."_
-
 > **TOML is for knobs only — never embed programs.** SQL → `db migrations`. Function code → `functions deploy`. Compute → `compute deploy`. Frontend → `deployments deploy`. TOML carries booleans, strings, and arrays — anything bigger lives in its own file managed by a dedicated CLI command.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/insforge-cli/SKILL.md` around lines 184 - 186, Remove the blank line
separating the two consecutive blockquotes in SKILL.md so they become contiguous
(i.e., make the two lines starting with ">" that begin with "**If `apply`
returns `skipped: [...]`, surface verbatim.**" and "**TOML is for knobs only —
never embed programs.**" follow each other with no empty line between) to
satisfy the MD028 lint rule.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@skills/insforge-cli/SKILL.md`:
- Around line 184-186: Remove the blank line separating the two consecutive
blockquotes in SKILL.md so they become contiguous (i.e., make the two lines
starting with ">" that begin with "**If `apply` returns `skipped: [...]`,
surface verbatim.**" and "**TOML is for knobs only — never embed programs.**"
follow each other with no empty line between) to satisfy the MD028 lint rule.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 2f2b6ba3-79d3-4d81-8f81-af1f24869e46

📥 Commits

Reviewing files that changed from the base of the PR and between 60c0daf and 63a363f.

📒 Files selected for processing (4)
  • skills/insforge-cli/SKILL.md
  • skills/insforge-cli/references/config.md
  • skills/insforge/SKILL.md
  • skills/insforge/auth/sdk-integration.md
✅ Files skipped from review due to trivial changes (3)
  • skills/insforge/auth/sdk-integration.md
  • skills/insforge/SKILL.md
  • skills/insforge-cli/references/config.md

tonychang04 and others added 4 commits May 12, 2026 10:22
Adds guidance for the new `npx @insforge/cli config export/plan/apply`
commands that ship with CLI #109 and backend #1216:

skills/insforge-cli/SKILL.md
- New "Configuration" command section listing export/plan/apply
- Calls out version-aware capability gating: supported sections apply,
  unsupported go to skipped[] with an upgrade message; no PUT issued
  for unsupported sections
- "TOML is for knobs only — never embed programs" rule with pointers
  to the dedicated commands for SQL / functions / compute / frontend
- "Surface skipped[] verbatim" rule with sample agent message
- env(NAME) reference convention for sensitive fields (forward-looking;
  CLI side ships with secrets-validation PR #110)

skills/insforge/auth/backend-configuration.md
- Recommends config apply over direct PUT /api/auth/config when
  changing settings-page knobs
- Keeps PUT documented for the "flip one boolean from function code"
  case

Both files reference behaviors not yet shipped on @insforge/cli@latest.
Hold this PR until CLI #109 and backend #1216 land so agents don't see
docs for commands they can't run.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The file mixed admin HTTP endpoint reference (PUT /api/auth/config,
List/Delete Users, Anon Token) with SDK-side discovery guidance.
That violated the parent skill's own scoping ("client-side @insforge/sdk
integration; for backend infrastructure, use the insforge-cli skill").

With config-as-code landing (CLI #109), auth backend config is now a
CLI workflow, not an HTTP-only escape hatch:

- Read settings: `npx @insforge/cli metadata --json`
- Change settings: `npx @insforge/cli config apply`

The SDK-relevant guidance (best practices, common mistakes, OAuth
provider checks, verification flow branching) was already duplicated in
auth/sdk-integration.md, so deleting the file loses nothing the SDK
developer needs. The few admin-only endpoints (List/Delete Users) are
better served as future CLI commands than as docs in the SDK skill.

Updated:
- skills/insforge/SKILL.md: drop the Auth row from the
  "Backend Configuration (Not Yet in CLI)" table; add a pointer to
  the new CLI Configuration section
- skills/insforge/auth/sdk-integration.md: replace two stale links to
  backend-configuration.md with the corresponding CLI commands

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Restructured the new Configuration content to match the conventions
the rest of the skill follows:

- Inline section in SKILL.md is now a tight command list + the three
  load-bearing rules (TOML for knobs only, surface skipped[] verbatim,
  env() refs for secrets), with a pointer to the deeper reference
- New references/config.md covers: typical end-to-end flow, output
  shapes for export/plan/apply --json, partial-apply semantics, file
  location, sensitive-field handling, --json consent rule, and a
  common-mistakes table
- New "Configure project settings (insforge.toml)" entry under
  Common Workflows so agents discover the flow from the workflow index
- New Non-Obvious Behavior bullet explaining the per-project version
  drift and why direct API calls are unsafe
- Frontmatter description updated to mention insforge.toml as one of
  the things this skill covers, so the trigger surface is right

Bumped skill version 1.4.0 → 1.5.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Skill previously described forward-looking surface (SMTP example with
env(SMTP_PASSWORD), `ConfigValidationError` for sensitive-literal
rejection, password policy / OAuth providers / custom subdomain via
TOML). None of that ships in CLI #109 — only `auth.allowed_redirect_urls`
is wired in src/lib/config-schema.ts.

Trim to match reality:
- Narrow Configuration section to the one supported field
- Drop `env(NAME)` callout in SKILL.md (validation not implemented)
- Drop SMTP example block + sensitive-field section in references/
- Add explicit "Scope today" line + "Coming soon" stub for forward path
- Tighten cross-refs in insforge/SKILL.md and auth/sdk-integration.md
  so they don't imply password-policy / OAuth providers are TOML-managed

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tonychang04 tonychang04 force-pushed the feat/config-toml-skills branch from 63a363f to ba559c8 Compare May 12, 2026 17:22
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
skills/insforge-cli/SKILL.md (1)

184-187: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix MD028: remove blank lines inside the blockquote block.

Lines 185 and 187 split one blockquote into separate blocks and trigger markdownlint MD028. Keep quoted lines contiguous.

Suggested patch
 > **If `apply` returns `skipped: [...]`, surface verbatim.** The user's backend predates this section. Tell them which sections were skipped and to upgrade; do not retry, do not bypass with `curl` (silent drop). Sample message: _"I tried to set `auth.allowed_redirect_urls` but your backend is on an older version that doesn't support it yet. Upgrade your backend and re-run `npx `@insforge/cli` config apply`."_
-
 > **TOML is for knobs only — never embed programs.** SQL → `db migrations`. Function code → `functions deploy`. Compute → `compute deploy`. Frontend → `deployments deploy`. TOML carries booleans, strings, and arrays — anything bigger lives in its own file managed by a dedicated CLI command.
-
 **Scope today:** only `auth.allowed_redirect_urls`. Password policy, SMTP, OAuth providers, custom subdomain, and similar will land in TOML later. For other `auth.config` fields today, use the dashboard.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/insforge-cli/SKILL.md` around lines 184 - 187, The blockquote
containing the two guidance items ("If `apply` returns `skipped: [...]`, surface
verbatim." and "TOML is for knobs only — never embed programs.") is split by
blank lines which triggers markdownlint MD028; remove the blank lines between
these quoted lines so they form one contiguous blockquote, ensuring the quoted
lines remain immediately consecutive and not separated by empty lines.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@skills/insforge-cli/SKILL.md`:
- Around line 184-187: The blockquote containing the two guidance items ("If
`apply` returns `skipped: [...]`, surface verbatim." and "TOML is for knobs only
— never embed programs.") is split by blank lines which triggers markdownlint
MD028; remove the blank lines between these quoted lines so they form one
contiguous blockquote, ensuring the quoted lines remain immediately consecutive
and not separated by empty lines.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 9cce4c9d-fe9e-463b-9274-9fa093fe8b39

📥 Commits

Reviewing files that changed from the base of the PR and between 63a363f and ba559c8.

📒 Files selected for processing (5)
  • skills/insforge-cli/SKILL.md
  • skills/insforge-cli/references/config.md
  • skills/insforge/SKILL.md
  • skills/insforge/auth/backend-configuration.md
  • skills/insforge/auth/sdk-integration.md
💤 Files with no reviewable changes (1)
  • skills/insforge/auth/backend-configuration.md
✅ Files skipped from review due to trivial changes (3)
  • skills/insforge/SKILL.md
  • skills/insforge/auth/sdk-integration.md
  • skills/insforge-cli/references/config.md

tonychang04 and others added 3 commits May 12, 2026 10:27
Compute services now deploy with Fly's full scale-to-zero
(auto_stop_machines: stop, auto_start_machines: true,
min_machines_running: 0) — see InsForge/InsForge#1251.

Document this in the skill so agents:
- Know scale-to-zero is the default behavior
- Set the right cold-start expectation (~1s on shared-1x)
- Understand the CLI/skill can only dial it *up* toward always-on,
  never below zero (it's already the floor on Fly)
- Map InsForge's behavior to Fly's exact field names so users
  familiar with Fly can predict what they're getting
- Know that pre-existing services need a redeploy to pick up the
  new defaults

Also notes that flags for `auto_stop_machines: off|suspend` and
`min_machines_running > 0` aren't yet exposed via the CLI —
route latency-critical services through support for now.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The first draft documented the fly.toml field names
(`auto_stop_machines` / `auto_start_machines`). Companion fix in
InsForge/InsForge#1251 corrected the backend to send the Machines API
short names — `autostop` / `autostart` — because that's what the
`POST api.machines.dev/v1/apps/<app>/machines` body actually accepts
(`auto_*_machines` are silently ignored).

Rewrites the scale-to-zero section to:
- Show the body InsForge actually sends (short names)
- Cross-reference both spellings in one table so users coming from
  fly.toml docs and users debugging via `flyctl machines list --json`
  both see what they expect
- Note that `min_machines_running` is honored only in the app's
  primary region

Authoritative schema reference: fly.MachineService in
https://docs.machines.dev/spec/openapi3.json

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Earlier draft hedged with "not yet exposed via the CLI" language for
autostop/min_machines override flags. Decision: don't build those for
v1. One mode, less surface area, simpler support story.

Rewrites both files to be explicit:
- "v1 is the only mode" — every service is scale-to-zero, no flags
- Removes the "What the CLI/skill can change" matrix that implied
  flags were coming. Replaced with a short "Why no override flags"
  paragraph explaining the tradeoff and the support escape hatch.
- Adds a direct instruction for agents: don't ask "set autostop to
  off" or "keep N warm" — there's no flag, nothing the skill can
  do, route to support instead. Prevents the agent from invoking
  imaginary flags and confusing the user.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tonychang04 tonychang04 changed the title feat(skills): document insforge.toml config-as-code flow feat(skills): insforge.toml config-as-code + compute scale-to-zero docs May 12, 2026
tonychang04 and others added 2 commits May 12, 2026 10:37
…tion

Compute scale-to-zero (v1):
- Drop the 33-line dedicated section in compute-deploy.md (fly.toml vs Machines
  API field-name table, "Why no override flags", "Already-deployed services")
  — v1 has one mode with zero flags, so there's no agent decision to support.
  Replace with one FAQ line for agents debugging cold-start questions.
- Drop the SKILL.md callout paragraph for the same reason.

Config:
- Trim references/config.md from 898 to 335 words. Remove "Why this exists",
  the TOML-is-for-knobs table, "Handling skipped[]" prose, and "Coming soon"
  — all duplicate principles already loaded by SKILL.md's Configuration section.
  Keep what's unique to the reference: output shapes for --json mode, file
  location, and the common-mistakes table.

Net: -105 / +11 lines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
REFACTOR pass from writing-skills TDD test. GREEN subagent flagged the
relationship between the global -y/--yes flag and the subcommand-local
--auto-approve as ambiguous. Single-row tweak in the common-mistakes
table: name which is global, which is the subcommand alias, and that
they have the same effect.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tonychang04 tonychang04 merged commit 0c89f2b into main May 12, 2026
3 checks passed
@tonychang04 tonychang04 deleted the feat/config-toml-skills branch May 12, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant