Skip to content

feat(skill): add troubleshooting reference; document .openlayerignore and the /v1 asymmetry - #26

Merged
shah-siddd merged 1 commit into
mainfrom
siddhant/open-12148-init-troubleshooting
Aug 17, 2026
Merged

feat(skill): add troubleshooting reference; document .openlayerignore and the /v1 asymmetry#26
shah-siddd merged 1 commit into
mainfrom
siddhant/open-12148-init-troubleshooting

Conversation

@shah-siddd

Copy link
Copy Markdown
Collaborator

Part of OPEN-12148. Skills half of the fix; CLI half is openlayer-ai/openlayer-cli#46.

From @Vikas dogfooding openlayer init against claude-quickstartsSlack thread. init installs this skill and drives it, so these reach both onboarding tracks.

New: references/troubleshooting.md

A triage order and symptom tables for a setup that is already built and not working — "nothing arrives", API errors by status code, push/bundling failures, environment problems.

Two reasons it's its own reference rather than more rows in existing ones:

  1. The CLI's new "something went wrong — debug it with <agent>" escape hatch (openlayer-ai/openlayer-cli#46) hands its debug run to whichever agent has this skill installed. That run needs one place to start from, not failure knowledge scattered across six per-topic tables.
  2. Its first instruction is diagnose before editing. The failure mode actually observed was correct instrumentation being rewritten while the real cause — an unset env var, a base URL, an app that never loaded .env.openlayer — survived untouched.

It also names some fixes as not-fixes: silencing a 400 by deleting the offending column, or wrapping the publish call in try/except, hide the failure rather than fixing it.

Traced parameters must be JSON-serializable

trace() captures every declared parameter of a traced function as an input variable. A callback, client handle, or DB session is dropped during serialization while its name stays in inputVariableNames, so the row arrives one column short of its config:

400 There is one issue with the row/config streamed: 1. Not all input variables specified in
`inputVariableNames` are in the dataset.

This cost real debugging time and the skill said nothing about it. Now documented in monitoring-instrumentation.md with the fix that keeps the trace intact — pass plain data, derive the non-serializable value inside the body — plus the Python equivalents (db_session, client, on_progress).

The underlying SDK bug is OPEN-12149; this is the stopgap.

.openlayerignore and the /v1 asymmetry

.openlayerignore existed, was undocumented, and the only mention anywhere was a troubleshooting row advising users to "push from a clean dir" — which doesn't work when openlayer.json lives in an application root. Replaced with real guidance in cli.md and development-setup.md, including the CLI's new defaults and the !dist/ negation needed when an output or metrics directory shares a name with one.

Also documented: SDK OPENLAYER_BASE_URL includes /v1, the CLI profile URL does not. That asymmetry made a local backend fail silently and is now stated wherever the variable appears.

Versioning

0.3.00.4.0 (minor: new reference), bumped in lockstep across all three manifests. python3 scripts/validate_skills.py passes.

🤖 Generated with Claude Code

Dogfooding `openlayer init` against a real Next.js app surfaced three
things the skill either got wrong or never mentioned.

- New `references/troubleshooting.md`: a triage order and symptom tables
  for a setup that is already built and not working. `openlayer init`'s
  new "something went wrong" escape hatch hands its debug run to the
  agent with the skill installed, and that run needs one place to start
  from rather than per-topic tables scattered across six files. Its first
  instruction is to diagnose before editing — the failure mode we saw was
  correct instrumentation being rewritten while an unset env var survived.

- Traced-function parameters must be JSON-serializable. `trace()` captures
  every declared parameter as an input variable, but a callback or client
  handle is dropped during serialization while its name stays in
  `inputVariableNames`, producing a 400 that names a column the user never
  meant to declare. Documented with the fix that keeps the trace intact.

- `.openlayerignore` now has real coverage. It existed, was undocumented,
  and the only mention was a troubleshooting row advising users to "push
  from a clean dir" — advice that doesn't work when openlayer.json lives
  in an application root. Also records the `/v1` asymmetry between the SDK
  and CLI base URLs, which is what made a local backend fail silently.

Minor version bump: new reference.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@shah-siddd
shah-siddd merged commit b468234 into main Aug 17, 2026
2 checks passed
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