Skip to content

deps: skuba 16.4.0 - #258

Merged
72636c merged 3 commits into
mainfrom
renovate-skuba-16.x
Oct 14, 2026
Merged

72636c merged 3 commits into
mainfrom
renovate-skuba-16.x

Conversation

@renovate

@renovate renovate Bot commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
skuba 16.3.0 → 16.4.0 age adoption passing confidence

Release Notes

seek-oss/skuba (skuba)

v16.4.0

Compare Source

Minor Changes
  • deps: Replace @inquirer/prompts with @clack/prompts (#​2564 c887c8d)

    This internal change only affects the skuba init interactive prompts.

  • lint: Replace Prettier with Oxfmt (#​2557 438204c)

    skuba lint and skuba format now use Oxfmt instead of Prettier. Benchmarks show Oxfmt to be up to 30x faster.

    Oxfmt may format some code differently from Prettier, so you may see diffs in existing files particularly in package.json files.

    skuba will attempt to auto-migrate your Prettier configuration to Oxfmt. Any manual calls to prettier in any scripts will need to be manually replaced with oxfmt.

    Prettier overrides are not automatically migrated. If your configuration applies different options to certain files, port them across to Oxfmt's overrides yourself.

    Update your VS Code settings to use the Oxc extension instead of Prettier:

     {
       "[typescript]": {
         "editor.codeActionsOnSave": {
           "source.fixAll.eslint": "explicit"
         },
    -    "editor.defaultFormatter": "esbenp.prettier-vscode"
    +    "editor.defaultFormatter": "oxc.oxc-vscode",
    +    "editor.formatOnSave": true
       }
     }

    You may need to reload the IDE for formatting to work after the migration is complete.

    oxfmt and oxc-config-seek are now hoisted in place of prettier.

  • lint: Disable import-x/order (#​2557 438204c)

    As part of our transition to Oxfmt and Oxlint, import order is now handled by Oxfmt. Keeping import-x/order enabled conflicts with Oxfmt's sortImports setting.

    skuba format rewrites eslint-disable comments for import-x/order (and legacy import/order) to oxfmt-ignore, so intentional import order is preserved. Oxfmt only honours a comment whose body is exactly oxfmt-ignore, so any -- reason is moved to a separate comment above it:

    - // eslint-disable-next-line import-x/order -- Mock import must be at top for jest.mock() hoisting
    + // Mock import must be at top for jest.mock() hoisting
    + // oxfmt-ignore
      import { mocked } from './mocked.js';

    To restore the previous behavior, you can add the following rule to your ESLint config:

    {
      'import-x/order': [
        'error',
        {
          alphabetize: {
            order: 'asc',
          }
          'newlines-between': 'always'
          pathGroups: [
            {
              group: 'external',
              pattern: 'src',
              position: 'after',
            },
            {
              group: 'external',
              pattern: 'src/**',
              position: 'after',
            },
          ]
          pathGroupsExcludedImportTypes: ['builtin'],
        },
      ],
    }
  • init: Support scaffolding into an existing repository (#​2547 dc61c18)

    skuba init now detects when it is run from inside an existing pnpm workspace and offers to scaffold the new project as an additional workspace project rather than a standalone repo. Any template works in this mode, whether it's a package or an application such as a Lambda worker or an API. Because detection is location-based, it asks you to confirm before switching modes.

    In this mode, skuba init:

    • Skips git init, remote and push setup
    • Leaves root-owned config to the workspace root: .gitignore, .prettierignore, .prettierrc.js, eslint.config.js, .dockerignore, .npmrc, .nvmrc, Renovate, .github and .vscode
    • Registers the project in the root pnpm-workspace.yaml when it isn't already covered, preserving surrounding keys, comments and formatting
    • Installs against the root lockfile
    • Prompts for a project name, which answers the template field that names the project (serviceName for services, moduleName for packages) rather than asking for the same thing twice. Where a template validates that field, the project name pre-fills the prompt instead of replacing it.

    Only pnpm workspaces (detected via a root pnpm-workspace.yaml) are supported in this mode. Yarn/npm workspaces and plain Git repositories keep the standalone behaviour, and running skuba init outside of a repository is unchanged.

  • Rolldown: Add Rolldown.lambdaAsset plugin (#​2543 dcffd07)

    A new rolldown plugin that prepares a bundle output directory for deployment as a Lambda function, so CDK can pick it up with a plain aws_lambda.Code.fromAsset.

    // rolldown.config.ts
    import { defineConfig } from 'rolldown';
    import { Rolldown } from 'skuba';
    
    export default defineConfig({
      input: { index: 'src/lambda.ts' },
      output: { dir: 'lib' },
      external: ['sharp'],
      plugins: [Rolldown.lambdaAsset({ nodeModules: ['sharp'] })],
    });

    The plugin writes an ESM package.json, and installs any nodeModules into the output directory with pnpm, copying across your workspace config and patches. The generated package.json forwards your package manager pin by copying across the packageManager and devEngines fields of your workspace root package.json, so the install runs on the same pnpm version as your project. Install-only files, including .npmrc, are stripped from the output afterwards. It can also copy extra assets into the output directory alongside your bundle.

    It supports ESM output and pnpm only. It leaves the rest of your rolldown config alone, and does not wrap CDK.

    skuba build also forwards a --config/-c flag through to rolldown, so a package can ship multiple bundles from separate config files, e.g. skuba build --config rolldown.worker1.config.ts.

    SEEKers can hand off the migration from NodejsFunction to Rolldown.lambdaAsset to the CDK Lambda bundling migration skill, which is also available via the seek-ai-toolkit.

  • deps: vitest v5.0.0 (#​2575 5bc2247)

    This release contains breaking changes. Please see the vitest v5.0.0 release notes for more information.

  • deps: @​changesets/cli ^3.0.0 (#​2562 8375293)

  • deps: tsdown ~0.23.0 (#​2574 8d3c9a7)

    This release contains breaking changes, please see the release notes for details.

    skuba format rewrites attw: true to attw: { profile: 'node16' } so packages keep node16-compatible attw checks instead of picking up tsdown's new esm-only default.

  • lint: Migrate default createLogger imports from @seek/logger to named imports (#​2585 55aa6cd)

    skuba format now rewrites default imports of createLogger from @seek/logger to named imports, including mixed named imports:

    - import createLogger from '@seek/logger';
    + import { createLogger } from '@seek/logger';
    
    - import createLogger, { type Logger } from '@seek/logger';
    + import { createLogger, type Logger } from '@seek/logger';
  • lint: Run pnpm codemod to upgrade to pnpm v11 (#​2388 acf31c2)

    The migration is skipped in projects using aws-cdk-lib NodejsFunction. The construct writes an empty pnpm-workspace.yaml into its bundling output directory before running pnpm install, which discards the allowBuilds allowlist that pnpm v11 requires. Affected projects stay on pnpm v10; see the pnpm deep dive for the recommended alternative.

    The skuba-managed settings written to pnpm-workspace.yaml are now chosen based on the pnpm major version a project pins via packageManager or devEngines.packageManager, so projects that stay on pnpm v10 keep their v10 settings. Projects that do not pin pnpm are left alone.

  • test: Upgrade skuba in CI before running tests (#​2598 dd5ce1d)

    skuba test applies skuba patches in CI before Vitest runs, then commits and pushes those changes when GitHub autofixes are enabled. The push still happens when the follow-up lint is clean.

  • test: Annotate individual test failures on GitHub check runs (#​2575 5bc2247)

    Vitest.mergePreset now registers a reporter that creates a skuba/test check run per Vitest project when running in CI with a GitHub API token. Test failures are annotated against the offending lines, so they show up in the Checks and Files changed tabs of a pull request.

    This restores functionality that was previously available when Jest was used as test runner.

Patch Changes
  • deps: Drop direct dependencies on concurrently and npm-run-path (#​2602 c490d44)

  • template/*: Switch to repoName for custom conditions templating (#​2565 f9f0911)

  • deps: Remove npm-registry-fetch dependency (#​2607 28a7c7e)

  • deps: @​octokit/types ^17.0.0 (#​2548 222af24)

  • deps: @​octokit/types ^18.0.0 (#​2579 dd96c23)

  • deps: simple-git ^4.0.0 (#​2586 93a6207)

  • deps: Replace fast-glob with Node.js fs.glob (#​2603 52acb5a)

  • template/oss-npm-package: Pin tsdown attw to { profile: 'node16' } so new packages keep node16-compatible checks instead of tsdown's esm-only default. (#​2574 8d3c9a7)

  • deps: vite 8 (#​2634 cbaf058)

  • lint: Sort skuba-managed entries in pnpm-workspace.yaml (#​2592 1da1387)

    Within each skuba-managed setting such as publicHoistPattern and allowBuilds, skuba-managed entries are now sorted alphabetically at the top, and any entries you've added are kept in their original order below them.

    publicHoistPattern:
      - eslint-config-skuba # Managed by skuba
      - remark-lint-*
      - '@vitest/*' # Managed by skuba
      - esbuild # Managed by skuba
      # hoisted for Storybook
      - '*storybook*'
      - eslint # Managed by skuba
      - '@types*' # Managed by skuba

    is rewritten to:

    publicHoistPattern:
      - '@types*' # Managed by skuba
      - '@vitest/*' # Managed by skuba
      - esbuild # Managed by skuba
      - eslint # Managed by skuba
      - eslint-config-skuba # Managed by skuba
      - remark-lint-*
      # hoisted for Storybook
      - '*storybook*'

    pnpm-workspace.yaml is now patched with the yaml package, so user comments and quoting are preserved more reliably.

    Your next skuba lint may report that pnpm-workspace.yaml is out of date. Run skuba format to reorder it.

  • template/oss-npm-package: Migrate to changesets/action action v2 (#​2580 f35cea0)

  • Updated dependencies:


Configuration

📅 Schedule: (in timezone Australia/Melbourne)

  • Branch creation
    • "after 3:00 am and before 6:00 am every weekday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@changeset-bot

changeset-bot Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 0c47e54

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@seek-oss-ci
seek-oss-ci requested a review from a team as a code owner October 14, 2026 01:19
@72636c
72636c enabled auto-merge (squash) October 14, 2026 01:20
@72636c
72636c disabled auto-merge October 14, 2026 01:24
@72636c
72636c merged commit f75e888 into main Oct 14, 2026
7 checks passed
@72636c
72636c deleted the renovate-skuba-16.x branch October 14, 2026 01:25
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.

2 participants