Drop the unused capability-gap skill section#6
Merged
Conversation
Per maintainer decision, the 'What NetScript doesn't do yet' section (D4, merged as draft pending approval in #5) is not adopted. Remove it from all five skills and renumber the skill-shape docs (DEVELOPING.md, skills/README.md) from a 10- to a 9-section shape.
🤖 Augment PR SummarySummary: Removes the draft “What NetScript doesn’t do yet” capability-gap section from the skill documentation. Changes:
🤖 Was this summary useful? React with 👍 or 👎 |
This was referenced Jun 30, 2026
rickylabs
pushed a commit
that referenced
this pull request
Jun 30, 2026
…r (WI-12)
Add a dependency-free page-module scanner (`manifest-page-module.ts`) that
detects `.withRouteContract({...})` (Form A) and `.withRoute(...)` calls using
balanced brace/paren matching, and extracts the inline contract's schema body
(stripping any pre-filled `$route`). Discovery now classifies every page module
as `inline` / `sidecar` / `default` and errors when a module carries both
`.withRoute` and `.withRouteContract`.
Resolves WI open-question #6: the synthesized inline contract lives in the page
module, not in `.generated/routes.ts`. The inline schema body references
page-module-scoped imports (`z`, custom param schemas) that are out of scope in
`.generated/routes.ts`, so re-emitting it there would not type-check. Form A's
typed binding is therefore done in the page module via the restored
`.withRouteContract({ $route, ...body })`, and the `routes.<key>` leaf for a
Form A page is a schema-free `createRouteReference` (same shape as Form C).
Form B continues to bind the imported sidecar contract.
Existing manifest behaviour and tests are unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
rickylabs
added a commit
that referenced
this pull request
Jul 1, 2026
…ge-module route binding (WI-12) (#183) * docs(wi): add WI-12 - page-module codegen for .withRoute / .withRouteContract Planning artifact for the WI-12 implementation. The actual code changes (restored .withRouteContract({...}) builder method, generator AST scan, Vite plugin page-module rewriting, Form A/B/C algorithm, tests, migration, README updates) will follow in subsequent commits on this branch. Refs: #181, #179 * chore(openhands): record run trace 28474310084-1 * feat(fresh): restore inline .withRouteContract builder method (WI-12) Add `.withRouteContract({ $route?, pathSchema?, searchSchema? })` back to `definePage()` as a first-class, type-state-aware builder method. The inline schema body is bound to the `$route` pattern via `bindRoutePattern(defineRouteContract({...}), $route)`, producing the same routed runtime config that `.withRoute(...)` consumes, so the inline (Form A) and sidecar/default (Form B/C) authoring forms converge on one runtime shape. The `$route` pattern is normally inserted by the NetScript Vite plugin codegen pass from the page module path; a missing `$route` throws a clear build error pointing at the codegen / manual-fill remedy. Type-state promotion mirrors `.withRoute(...)`: path/search are inferred from the inline schemas and `THasConfiguredRoute` flips to `true`. The public `PageBuilder` compat surface gains the matching method signature. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(fresh): scan page modules for inline route contracts in generator (WI-12) Add a dependency-free page-module scanner (`manifest-page-module.ts`) that detects `.withRouteContract({...})` (Form A) and `.withRoute(...)` calls using balanced brace/paren matching, and extracts the inline contract's schema body (stripping any pre-filled `$route`). Discovery now classifies every page module as `inline` / `sidecar` / `default` and errors when a module carries both `.withRoute` and `.withRouteContract`. Resolves WI open-question #6: the synthesized inline contract lives in the page module, not in `.generated/routes.ts`. The inline schema body references page-module-scoped imports (`z`, custom param schemas) that are out of scope in `.generated/routes.ts`, so re-emitting it there would not type-check. Form A's typed binding is therefore done in the page module via the restored `.withRouteContract({ $route, ...body })`, and the `routes.<key>` leaf for a Form A page is a schema-free `createRouteReference` (same shape as Form C). Form B continues to bind the imported sidecar contract. Existing manifest behaviour and tests are unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * feat(fresh): page-module route-binding codegen + pageModuleRouteBinding option (WI-12) Implement the WI-12 page-module rewriter and wire it into the Vite plugin, covering commits 3-5 of the plan (rewriting, Form C default, conflict resolution) as one coherent pass so each is green-per-commit. - `computePageModuleRewrite` (manifest-page-module.ts): idempotent rewriter. Form A inserts `$route: routePatterns.<key>.$route` as the first field of the inline `.withRouteContract({...})` and ensures the `routePatterns` import. Form B/C insert `.withRoute(routes.<key>.$route)` immediately after `definePage()` and ensure the `routes` import. Re-running produces no diff. - `writeNetScriptPageModuleBindingsSync` (manifest.ts): disk orchestrator that rewrites each discovered page module and collects build warnings. - Conflict resolution: inline + sidecar emits the "inline takes precedence" warning (sidecar left in place); `.withRoute` + `.withRouteContract` in one module is a build error raised during discovery. - Vite plugin: new top-level `pageModuleRouteBinding` option (default `true`). The binding pass runs after the manifest writer on init, buildStart, and the debounced watch handler; warnings surface via `console.warn`. Setting it to `false` skips all page-module rewriting and leaves hand-written bindings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(fresh): cover WI-12 inline contract, AST discovery, rewriting, conflicts Add unit tests for the WI-12 surface: - builder.test.tsx: `.withRouteContract({ pathSchema })` / `({ searchSchema })` type-state promotion + runtime href binding, and the clear error when `$route` is missing. - manifest.test.ts: inline-contract discovery (Form A positive), non-page helper with `.withRouteContract` ignored (negative), and the build error when a page has both `.withRoute` and `.withRouteContract`. - manifest-page-module.test.ts (new): scanner body/`$route` extraction, `.withRoute` vs `.withRouteContract` discrimination, Form A/B/C rewriting, idempotency across forms, and the inline+sidecar precedence warning. - vite.test.ts: `pageModuleRouteBinding` default rewrites page modules (with a second-pass idempotency assertion) and `false` leaves them untouched while still writing the generated routes module. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(fresh): document Form A/B/C codegen route binding (WI-12) Update the package README and the web-layer builders guide so the codegen-owned route-binding flow is the primary documented path: - README Usage now leads with Form A (inline `.withRouteContract`), Form B (sidecar), and Form C (default), and reframes the manual `bindRoutePattern` + `.withRoute` example as the under-the-hood / opt-out form. This corrects the long-standing drift where the manual form was documented as primary. - builders.md gains a `.withRouteContract({...})` row in the methods table and a "Codegen-owned route binding" subsection covering the three forms, the inline+sidecar warning, the dual-binding error, and the `pageModuleRouteBinding: false` opt-out. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs(wi): record WI-12 implementation status and deferred CLI migration Document the green implementation status (commits 1-6, 8), the end-to-end typecheck proof, the `paths?` field omission rationale, and the deliberate deferral of the live CLI scaffold-template migration (commit 7) — the templates bind through the curated `@app/router.ts` with hand-authored route references that do not all map to the generated `routes` tree, and the proving gate is the toolchain-heavy scaffold.runtime E2E lane that cannot run in this environment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(openhands): record run trace 28478153536-1 * chore(openhands): record run trace 28483118420-1 --------- Co-authored-by: OpenHands Bot <openhands@all-hands.dev> Co-authored-by: Eric Chautems <eric.chautems@eisberg.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
rickylabs
added a commit
that referenced
this pull request
Jul 11, 2026
…ries polish (#684) * docs(storefront): add typed storefront UI chapter, renumber deploy (proposal #6) Add 06-storefront-ui.md showcasing the frontend typed spine the storefront series never touched: a bound route contract (createRouteReference / defineRouteContract / bindRoutePattern), a per-service createServiceClient + createServiceQueryUtils clients module, and a Fresh island reading with useIslandQuery and beginning checkout with useIslandMutation. Deploy renumbered 06 -> 07; prev/next/learningPath/xref navigation rewired across the series. Every API grounded via deno doc + two scratch deno checks against packages/sdk and packages/fresh; the island uses contract-derived keys with typed client calls (the SDK queryOptions/mutationOptions result is not raw-spreadable into the zero-arg island hooks). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM * docs(storefront): index differentiator lede, deploy one-command framing, PORT note - index.md: name the differentiator the series proves + a 'what this replaces' contrast sentence (proposal #17). - 02-catalog-service.md: note that Aspire injects PORT and services.<name>.port in netscript.config.ts is the typed source of truth (proposal #7). - 07-deploy.md one-command scaffold-to-Aspire framing shipped with commit 1; worklog records the full run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Per maintainer decision, the "What NetScript doesn't do yet" section (D4 — merged as draft, pending approval in #5) is not being adopted.
This removes it from all five skills (
netscript-doctrine,netscript-harness,jsr-audit,deno-fresh,netscript-standards) and renumbers the skill-shape docs (DEVELOPING.md,skills/README.md) from a 10- to a 9-section shape.deno fmtclean; noWhat NetScript do…remnants remain