get-tbd 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.mjs +142 -106
- package/dist/bin.mjs.map +1 -1
- package/dist/cli.mjs +43 -17
- package/dist/cli.mjs.map +1 -1
- package/dist/docs/SKILL.md +0 -4
- package/dist/docs/guidelines/bun-monorepo-patterns.md +148 -75
- package/dist/docs/guidelines/cli-agent-skill-patterns.md +706 -1240
- package/dist/docs/guidelines/pnpm-monorepo-patterns.md +204 -86
- package/dist/docs/guidelines/supply-chain-hardening.md +237 -0
- package/dist/docs/guidelines/typescript-cli-tool-rules.md +39 -8
- package/dist/docs/guidelines/typescript-code-coverage.md +27 -3
- package/dist/docs/guidelines/typescript-rules.md +18 -0
- package/dist/docs/guidelines/typescript-yaml-handling-rules.md +12 -0
- package/dist/docs/shortcuts/standard/new-validation-plan.md +1 -1
- package/dist/docs/tbd-design.md +16 -1
- package/dist/docs/tbd-docs.md +11 -2
- package/dist/index.mjs +1 -1
- package/dist/{src-BIE27KDA.mjs → src-CJyVkC3V.mjs} +2 -2
- package/dist/{src-BIE27KDA.mjs.map → src-CJyVkC3V.mjs.map} +1 -1
- package/dist/tbd +142 -106
- package/package.json +2 -2
package/dist/docs/SKILL.md
CHANGED
|
@@ -17,10 +17,6 @@ description: >-
|
|
|
17
17
|
allowed-tools: Bash(tbd:*), Read, Write
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
---
|
|
21
|
-
title: tbd Workflow
|
|
22
|
-
description: Full tbd workflow guide for agents
|
|
23
|
-
---
|
|
24
20
|
**`tbd` helps humans and agents ship code with greater speed, quality, and discipline.**
|
|
25
21
|
|
|
26
22
|
1. **Beads**: Git-native issue tracking (tasks, bugs, features).
|
|
@@ -5,7 +5,7 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
|
|
|
5
5
|
---
|
|
6
6
|
# Bun Monorepo Patterns
|
|
7
7
|
|
|
8
|
-
**Last Updated**: 2026-
|
|
8
|
+
**Last Updated**: 2026-05-21
|
|
9
9
|
|
|
10
10
|
**Related**:
|
|
11
11
|
|
|
@@ -14,6 +14,7 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
|
|
|
14
14
|
- [Changesets Documentation](https://github.com/changesets/changesets)
|
|
15
15
|
- [Biome Documentation](https://biomejs.dev/)
|
|
16
16
|
- [Companion: pnpm Monorepo Patterns](./pnpm-monorepo-patterns.md)
|
|
17
|
+
- [Supply-Chain Mitigation](#supply-chain-mitigation) (in this document)
|
|
17
18
|
|
|
18
19
|
* * *
|
|
19
20
|
|
|
@@ -23,19 +24,19 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
|
|
|
23
24
|
|
|
24
25
|
| Tool / Package | Version | Check For Updates |
|
|
25
26
|
| --- | --- | --- |
|
|
26
|
-
| **Bun** | 1.3.
|
|
27
|
-
| **TypeScript** | ^
|
|
28
|
-
| **Bunup** | ^0.16.
|
|
29
|
-
| **Biome** | ^2.
|
|
30
|
-
| **@changesets/cli** | ^2.
|
|
31
|
-
| **bun-types** | ^1.3.
|
|
27
|
+
| **Bun** | 1.3.13 (1.3.14 too recent) | [bun.sh/blog](https://bun.sh/blog) — Runtime, bundler, package manager, test runner. Acquired by Anthropic (Dec 2025). **Pinned to 1.3.13 (2026-04-20) per the 14-day rule** — 1.3.14 (2026-05-13) is the **last Zig-based release** and the Rust rewrite merged to `main` 2026-05-14 (~960K lines, generated by Claude AI agents over ~6 days). New built-ins in 1.3.x: `Bun.Image` (Sharp replacement), experimental HTTP/3 in `Bun.serve()`, 7× faster warm installs via isolated linker global store, rewritten `fs.watch()` on Linux/macOS. Bump to 1.3.14 (or 1.4.x once it ships) once the 14-day window has elapsed. |
|
|
28
|
+
| **TypeScript** | ^6.0.3 | [github.com/microsoft/TypeScript/releases](https://github.com/microsoft/TypeScript/releases) — **6.0.3 stable** (shipped 2026-03-23). TS 6.0 is the **last JavaScript-based release** and is positioned as a bridge to 7.0: `strict: true` is now the default, ESM is the default module system, and ~9 compiler settings flipped defaults. **TS 7.0 Beta** (Project Corsa, Go rewrite) shipped 2026-04-21 as `@typescript/native-preview` (binary: `tsgo`); claims ~10× type-check speed and ~3× less memory. TS 7.0 stable is expected mid-to-late 2026. Do not adopt `tsgo` for production builds yet. |
|
|
29
|
+
| **Bunup** | ^0.16.31 | [npmjs.com/package/bunup](https://www.npmjs.com/package/bunup) — Build tool for TS libs. Still 0.x; 0.16.23 through 0.16.31 are bug-fix only (DTS alias fixes, workspace `onSuccess` fix, external/noExternal honoring). Pin to a specific minor version for stability. |
|
|
30
|
+
| **Biome** | ^2.4.14 (2.4.15 borderline) | [biomejs.dev](https://biomejs.dev/) — Formatter + linter. **Pinned to 2.4.14 (2026-05-01) per the 14-day rule**; 2.4.15 (2026-05-09) is 13 days old today — bump on next refresh. v2.4 (Feb 2026) added experimental embedded snippet formatting (CSS/GraphQL in JS/TS template literals), 15 HTML accessibility lint rules enabled by default, and promoted 24 nursery rules to stable (Vue 3, Next.js, Qwik). |
|
|
31
|
+
| **@changesets/cli** | ^2.31.0 | [github.com/changesets/changesets/releases](https://github.com/changesets/changesets/releases) — 2.31.0 latest. **Still no native Bun support**; `changeset version` does not resolve `workspace:*` references for Bun workspaces — workarounds below remain required. |
|
|
32
|
+
| **bun-types** | ^1.3.13 | [npmjs.com/package/bun-types](https://www.npmjs.com/package/bun-types) — Type definitions for Bun runtime APIs. Track Bun version (pinned to 1.3.13 per the 14-day rule). |
|
|
32
33
|
| **tryscript** | ^0.1.6 | [npmjs.com/package/tryscript](https://www.npmjs.com/package/tryscript) — Golden/CLI testing via Markdown test files. |
|
|
33
34
|
| **flowmark** | latest | [github.com/jlevy/flowmark](https://github.com/jlevy/flowmark) — Markdown auto-formatter (via `uvx`). |
|
|
34
|
-
| **publint** | ^0.3.
|
|
35
|
-
| **actions/checkout** | v6 | [github.com/actions/checkout/releases](https://github.com/actions/checkout/releases) |
|
|
36
|
-
| **oven-sh/setup-bun** | v2 | [github.com/oven-sh/setup-bun](https://github.com/oven-sh/setup-bun) —
|
|
37
|
-
| **lefthook** | ^2.
|
|
38
|
-
| **npm-check-updates** | ^
|
|
35
|
+
| **publint** | ^0.3.20 (0.3.21 too recent) | [npmjs.com/package/publint](https://www.npmjs.com/package/publint) — **Pinned to 0.3.20 (2026-05-08) per the 14-day rule**; 0.3.21 (2026-05-13) is 9 days old today. Incremental: re-enabled TS/TSX file existence checks; `exports["default"]` support. |
|
|
36
|
+
| **actions/checkout** | v6 | [github.com/actions/checkout/releases](https://github.com/actions/checkout/releases) — v6.0.2 (2026-01-09). Credentials now stored in `$RUNNER_TEMP` rather than `.git/config`; Node 24 runtime; requires runner ≥ 2.327.1. |
|
|
37
|
+
| **oven-sh/setup-bun** | v2 | [github.com/oven-sh/setup-bun](https://github.com/oven-sh/setup-bun) — v2.2.0 (2026-03-14). Migrated to Node.js 24 runtime ahead of GitHub’s **2026-06-02 deadline** that forces all Node.js 20 actions to Node.js 24. |
|
|
38
|
+
| **lefthook** | ^2.1.5 (2.1.7/2.1.8 too recent) | [github.com/evilmartians/lefthook/releases](https://github.com/evilmartians/lefthook/releases) — **Pinned to 2.1.5 (2026-04-06) per the 14-day rule**; 2.1.7 and 2.1.8 both shipped 2026-05-19 (3 days old). Patch-level since 2.1.1: dependency bumps and config-warning improvements. v2 still excludes regexp `exclude` and `skip_output` from v1. |
|
|
39
|
+
| **npm-check-updates** | ^22.0.0 (22.2.0 too recent) | [npmjs.com/package/npm-check-updates](https://www.npmjs.com/package/npm-check-updates) — **Major version jump from 19 to 22.** **Pinned to 22.0.0 (2026-04-25) per the 14-day rule**; 22.2.0 (2026-05-12) is 10 days old today. Now pure ESM; named imports only (`import { run } from 'npm-check-updates'`); `.ncurc.js` with `module.exports` no longer works in `"type": "module"` projects (use `.ncurc.cjs`). **Critical for supply chain: now ships `--cooldown <days>` to refuse versions younger than the specified age.** See [Supply-Chain Mitigation](#supply-chain-mitigation). |
|
|
39
40
|
|
|
40
41
|
### Reminders When Updating
|
|
41
42
|
|
|
@@ -61,6 +62,11 @@ author: Joshua Levy (github.com/jlevy) with LLM assistance
|
|
|
61
62
|
|
|
62
63
|
6. **Review “Open Research Questions”** section for any resolved items
|
|
63
64
|
|
|
65
|
+
7. **Honor the 14-day package-age rule** when bumping versions in code examples.
|
|
66
|
+
See [Supply-Chain Mitigation](#supply-chain-mitigation) — versions cited here should
|
|
67
|
+
be ≥14 days old at the time the table is updated, except where a clearly-noted
|
|
68
|
+
security exception applies.
|
|
69
|
+
|
|
64
70
|
* * *
|
|
65
71
|
|
|
66
72
|
## Executive Summary
|
|
@@ -140,9 +146,18 @@ research stock.
|
|
|
140
146
|
- Missing some pnpm features: no `pnpm deploy`, less strict `node_modules` (phantom
|
|
141
147
|
dependencies possible)
|
|
142
148
|
|
|
143
|
-
- **Notable**: Bun was acquired by Anthropic
|
|
144
|
-
|
|
145
|
-
|
|
149
|
+
- **Notable**: Bun was acquired by Anthropic on 2025-12-02 — Anthropic’s first
|
|
150
|
+
acquisition. Bun powers Claude Code (which ships as a `bun build --compile`
|
|
151
|
+
executable), the Claude Agent SDK, and other Anthropic AI tooling, signaling strong
|
|
152
|
+
ongoing investment and maintenance.
|
|
153
|
+
**Language transition**: Bun 1.3.14 (2026-05-13) is the last Zig-based release.
|
|
154
|
+
A full Rust rewrite (~960K lines, generated by Claude agents over ~6 days, 6,755
|
|
155
|
+
commits) merged to `main` on 2026-05-14 and passes 99.8% of the test suite.
|
|
156
|
+
The transition was motivated by Zig’s no-AI-contribution policy conflicting with the
|
|
157
|
+
Bun team’s workflow.
|
|
158
|
+
The external API surface (`bun`, `bunx`, `bun install`, `bun test`, `bun build`) is
|
|
159
|
+
unchanged; consumers should expect no breakage but watch the 1.4.x release notes for
|
|
160
|
+
migration details.
|
|
146
161
|
|
|
147
162
|
**Assessment**: Bun workspaces are functional and fast, but less strict than pnpm.
|
|
148
163
|
The text-based `bun.lock` format (since Bun 1.2) resolves the earlier diffability
|
|
@@ -375,8 +390,8 @@ Key advantages:
|
|
|
375
390
|
|
|
376
391
|
- **Compile support**: Can produce standalone executables via `bun --compile`
|
|
377
392
|
|
|
378
|
-
- **Rapid iteration**: Bunup is under active development (0.16.
|
|
379
|
-
|
|
393
|
+
- **Rapid iteration**: Bunup is under active development (0.16.31 as of May 2026,
|
|
394
|
+
bug-fix releases since 0.16.22). Pin to a specific minor version for stability.
|
|
380
395
|
|
|
381
396
|
**Configuration (`bunup.config.ts`)**:
|
|
382
397
|
|
|
@@ -1085,7 +1100,7 @@ bun add -d @biomejs/biome
|
|
|
1085
1100
|
|
|
1086
1101
|
```json
|
|
1087
1102
|
{
|
|
1088
|
-
"$schema": "https://biomejs.dev/schemas/2.
|
|
1103
|
+
"$schema": "https://biomejs.dev/schemas/2.4.14/schema.json",
|
|
1089
1104
|
"vcs": {
|
|
1090
1105
|
"enabled": true,
|
|
1091
1106
|
"clientKind": "git",
|
|
@@ -1697,21 +1712,29 @@ This is a unique advantage that the pnpm ecosystem does not offer natively.
|
|
|
1697
1712
|
|
|
1698
1713
|
npm-check-updates (`ncu`) works with Bun.
|
|
1699
1714
|
The main difference is using `bun install` instead of `pnpm install` after updates.
|
|
1715
|
+
**All upgrade commands must honor the 14-day package-age rule** — see
|
|
1716
|
+
[Supply-Chain Mitigation](#supply-chain-mitigation) for the rationale and exception
|
|
1717
|
+
process. `ncu` v22+ ships a native `--cooldown` flag that enforces this directly.
|
|
1700
1718
|
|
|
1701
1719
|
**Root `package.json` scripts**:
|
|
1702
1720
|
|
|
1703
1721
|
```json
|
|
1704
1722
|
{
|
|
1705
1723
|
"scripts": {
|
|
1706
|
-
"upgrade:check": "bunx npm-check-updates --format group",
|
|
1707
|
-
"upgrade": "bunx npm-check-updates --target minor -u && bun install && bun test",
|
|
1708
|
-
"upgrade:major": "bunx npm-check-updates --target latest --interactive --format group"
|
|
1724
|
+
"upgrade:check": "bunx npm-check-updates --cooldown 14 --format group",
|
|
1725
|
+
"upgrade": "bunx npm-check-updates --cooldown 14 --target minor -u && bun install && bun test",
|
|
1726
|
+
"upgrade:major": "bunx npm-check-updates --cooldown 14 --target latest --interactive --format group"
|
|
1709
1727
|
}
|
|
1710
1728
|
}
|
|
1711
1729
|
```
|
|
1712
1730
|
|
|
1713
|
-
**
|
|
1714
|
-
`
|
|
1731
|
+
**Note on npm-check-updates v22**: v22 is pure ESM, named imports only
|
|
1732
|
+
(`import { run } from 'npm-check-updates'`), and config files must be `.ncurc.cjs` (not
|
|
1733
|
+
`.ncurc.js`) in projects with `"type": "module"`. The `--cooldown <days>` flag is the
|
|
1734
|
+
recommended enforcement point for the 14-day package-age rule.
|
|
1735
|
+
|
|
1736
|
+
**Assessment**: Identical workflow to pnpm.
|
|
1737
|
+
`bunx` replaces `npx`. Always include `--cooldown 14`.
|
|
1715
1738
|
|
|
1716
1739
|
* * *
|
|
1717
1740
|
|
|
@@ -1741,7 +1764,7 @@ Bun natively executes TypeScript, eliminating the need for `tsx` entirely.
|
|
|
1741
1764
|
| Aspect | pnpm (tsx) | Bun |
|
|
1742
1765
|
| --- | --- | --- |
|
|
1743
1766
|
| Dev command | `tsx packages/pkg/src/cli/bin.ts` | `bun packages/pkg/src/cli/bin.ts` |
|
|
1744
|
-
| Extra dependency | `tsx` (~4.
|
|
1767
|
+
| Extra dependency | `tsx` (~4.22.3) | None (built-in) |
|
|
1745
1768
|
| TypeScript support | Via esbuild transform | Native |
|
|
1746
1769
|
| Startup time | ~50ms | ~5ms |
|
|
1747
1770
|
|
|
@@ -1785,6 +1808,24 @@ in core library code if the library needs to work in Node.js environments.
|
|
|
1785
1808
|
|
|
1786
1809
|
* * *
|
|
1787
1810
|
|
|
1811
|
+
## Supply-Chain Mitigation
|
|
1812
|
+
|
|
1813
|
+
Supply-chain hardening applies to **every repo, not just new monorepos**, so the full
|
|
1814
|
+
policy and hands-on enforcement now live in a standalone guideline:
|
|
1815
|
+
**`tbd guidelines supply-chain-hardening`**. It covers the cross-ecosystem 14-day
|
|
1816
|
+
cool-off plus the Node/pnpm/Bun specifics — lifecycle-script allowlists, lockfile
|
|
1817
|
+
discipline, `npm-check-updates --cooldown 14`, the CI audit gate, and the
|
|
1818
|
+
`check-package-age` pre-push guard.
|
|
1819
|
+
Deeper background and the named-incident watch list:
|
|
1820
|
+
<https://github.com/jlevy/supply-chain-hardening>.
|
|
1821
|
+
|
|
1822
|
+
**Bun specifics**: Bun blocks lifecycle scripts by default — extend the allowlist via
|
|
1823
|
+
`trustedDependencies` in `package.json`, run `bun audit` in CI with
|
|
1824
|
+
`bun install --frozen-lockfile`, and commit `bun.lock`. Bun has no native release-age
|
|
1825
|
+
gate yet, so enforce the 14-day cool-off with `bunx npm-check-updates --cooldown 14`.
|
|
1826
|
+
|
|
1827
|
+
* * *
|
|
1828
|
+
|
|
1788
1829
|
## Comparative Analysis
|
|
1789
1830
|
|
|
1790
1831
|
### Full-Stack Tooling Comparison
|
|
@@ -1834,63 +1875,69 @@ in core library code if the library needs to work in Node.js environments.
|
|
|
1834
1875
|
|
|
1835
1876
|
## Best Practices
|
|
1836
1877
|
|
|
1837
|
-
1. **
|
|
1878
|
+
1. **Follow the 14-day package-age rule** for every dependency install and upgrade.
|
|
1879
|
+
See [Supply-Chain Mitigation](#supply-chain-mitigation).
|
|
1880
|
+
Use `bunx npm-check-updates --cooldown 14` and `bun audit` in CI; declare
|
|
1881
|
+
`trustedDependencies` explicitly; commit `bun.lock`; use
|
|
1882
|
+
`bun install --frozen-lockfile` in CI.
|
|
1883
|
+
|
|
1884
|
+
2. **Use Bun workspaces** with `"workspaces"` in root `package.json`. Use `--cwd` to
|
|
1838
1885
|
target specific workspaces when adding dependencies.
|
|
1839
1886
|
|
|
1840
|
-
|
|
1887
|
+
3. **Enable `isolatedDeclarations`** in `tsconfig.base.json` for dramatically faster DTS
|
|
1841
1888
|
generation with Bunup.
|
|
1842
1889
|
|
|
1843
|
-
|
|
1890
|
+
4. **Use Bunup’s auto-exports** (`exports: true`) to keep `package.json` exports
|
|
1844
1891
|
synchronized with build output.
|
|
1845
1892
|
|
|
1846
|
-
|
|
1893
|
+
5. **Use Biome for formatting + linting** via a single `biome.json`. Use
|
|
1847
1894
|
`biome check --write` locally and `biome ci` in CI for stricter checks.
|
|
1848
1895
|
|
|
1849
|
-
|
|
1896
|
+
6. **Add `bun update` after `changeset version`** to fix workspace reference resolution
|
|
1850
1897
|
in the lockfile.
|
|
1851
1898
|
|
|
1852
|
-
|
|
1899
|
+
7. **Use `bun publish` per package** instead of `changeset publish` to ensure proper
|
|
1853
1900
|
workspace resolution.
|
|
1854
1901
|
|
|
1855
|
-
|
|
1902
|
+
8. **Run CLI from source with `bun`** directly — no need for `tsx` or any TypeScript
|
|
1856
1903
|
execution wrapper.
|
|
1857
1904
|
|
|
1858
|
-
|
|
1905
|
+
9. **Consider `bun --compile`** for distributing CLI tools as standalone executables,
|
|
1859
1906
|
especially for users who don’t have Node.js or Bun installed.
|
|
1860
1907
|
|
|
1861
|
-
|
|
1862
|
-
|
|
1908
|
+
10. **Use `bun test`** for testing — fake timers are now supported (v1.3.4+). Switch to
|
|
1909
|
+
Vitest only if you need test isolation, browser mode, or sharding.
|
|
1863
1910
|
|
|
1864
|
-
|
|
1911
|
+
11. **Keep the root `package.json` private** with `"private": true` and only workspace
|
|
1865
1912
|
tooling.
|
|
1866
1913
|
|
|
1867
|
-
|
|
1914
|
+
12. **Scope your package names** with `@org/package-name` for GitHub Packages
|
|
1868
1915
|
compatibility.
|
|
1869
1916
|
|
|
1870
|
-
|
|
1917
|
+
13. **Validate before publish** with `publint` in CI and before every release.
|
|
1871
1918
|
|
|
1872
|
-
|
|
1919
|
+
14. **Use lefthook** for git hooks with `biome check` in pre-commit (single command
|
|
1873
1920
|
replaces separate format + lint hooks).
|
|
1874
1921
|
|
|
1875
|
-
|
|
1922
|
+
15. **Add the `"bun"` export condition** to let Bun consumers import TypeScript source
|
|
1876
1923
|
directly, bypassing compiled output.
|
|
1877
1924
|
|
|
1878
|
-
|
|
1925
|
+
16. **Use dynamic git-based versioning** for dev builds — the pattern works identically
|
|
1879
1926
|
with Bun, and `bun` replaces `tsx` for script execution.
|
|
1880
1927
|
|
|
1881
|
-
|
|
1928
|
+
17. **Use `biome ci`** in CI workflows instead of `biome check` — it’s stricter and
|
|
1882
1929
|
produces cleaner output for CI logs.
|
|
1883
1930
|
|
|
1884
|
-
|
|
1931
|
+
18. **Consider ESM-only output** for Bun-native CLI tools and packages targeting modern
|
|
1885
1932
|
Node.js (>=22). Only add CJS if specific consumers require it.
|
|
1886
1933
|
|
|
1887
|
-
|
|
1934
|
+
19. **Use flowmark** for Markdown formatting in pre-commit hooks — Biome does not format
|
|
1888
1935
|
Markdown, and consistent Markdown formatting improves documentation quality.
|
|
1889
1936
|
|
|
1890
|
-
|
|
1937
|
+
20. **Add golden/CLI tests** with `tryscript` alongside `bun test` for CLI tools — they
|
|
1891
1938
|
catch regressions in help text, output formatting, and argument parsing.
|
|
1892
1939
|
|
|
1893
|
-
|
|
1940
|
+
21. **Consider tag-triggered OIDC releases** as an alternative to the Changesets GitHub
|
|
1894
1941
|
Action — they provide npm provenance attestation and automatic GitHub Releases.
|
|
1895
1942
|
|
|
1896
1943
|
* * *
|
|
@@ -1913,12 +1960,12 @@ in core library code if the library needs to work in Node.js environments.
|
|
|
1913
1960
|
It is diffable in code review and supported by GitHub rendering.
|
|
1914
1961
|
The binary `bun.lockb` is deprecated.
|
|
1915
1962
|
|
|
1916
|
-
4. **Biome plugin ecosystem**: Biome v2.
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
Custom ESLint rules remain a reason to keep ESLint (see craft-agents-oss case
|
|
1921
|
-
in Appendix G).
|
|
1963
|
+
4. **Biome plugin ecosystem**: Biome v2.4 (Feb 2026) added experimental embedded snippet
|
|
1964
|
+
formatting (CSS/GraphQL inside JS/TS template literals), 15 HTML accessibility rules
|
|
1965
|
+
enabled by default, and promoted Vue 3 / Next.js / Qwik rules to stable.
|
|
1966
|
+
The rule set continues growing toward parity with security and accessibility ESLint
|
|
1967
|
+
plugins. Custom ESLint rules remain a reason to keep ESLint (see craft-agents-oss case
|
|
1968
|
+
study in Appendix G).
|
|
1922
1969
|
|
|
1923
1970
|
5. **Bun workspace strictness**: Bun still uses flat `node_modules` (no
|
|
1924
1971
|
content-addressable store).
|
|
@@ -1931,21 +1978,41 @@ in core library code if the library needs to work in Node.js environments.
|
|
|
1931
1978
|
The open issue ([#5854](https://github.com/oven-sh/bun/issues/5854)) remains tracked.
|
|
1932
1979
|
The `--minify` and `--bytecode` flags help with startup time but not binary size.
|
|
1933
1980
|
|
|
1934
|
-
7.
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1981
|
+
7. ~~**TypeScript 6.0**~~: **SHIPPED** 2026-03-23. TypeScript 6.0 is the last
|
|
1982
|
+
JavaScript-based release; `strict: true` is the default; ESM is the default module
|
|
1983
|
+
system; ~9 compiler settings flipped defaults.
|
|
1984
|
+
Currently 6.0.3. Adopt for the codebase as part of the May 2026 currency refresh;
|
|
1985
|
+
review `tsconfig.base.json` for now-redundant flag declarations.
|
|
1986
|
+
|
|
1987
|
+
8. **TypeScript 7.0 (Project Corsa, Go rewrite)**: Beta shipped 2026-04-21 as
|
|
1988
|
+
`@typescript/native-preview` (binary `tsgo`). Claims ~10x type-check speed and ~3x
|
|
1989
|
+
less memory; passes 95%+ of the test suite.
|
|
1990
|
+
Available in Visual Studio 2026 18.6 Insiders by default.
|
|
1991
|
+
**Do not adopt for production builds yet** — wait for stable (expected mid-to-late
|
|
1992
|
+
2026). May change the DTS generation landscape for Bunup and tsdown once stable.
|
|
1939
1993
|
|
|
1940
|
-
|
|
1994
|
+
9. **Bunup maturity**: Bunup is iterating rapidly (0.16.31 as of May 2026, up from 0.4.x
|
|
1941
1995
|
a few months earlier).
|
|
1942
1996
|
The API surface (`defineConfig`, `defineWorkspace`, `exports`, `compile`) appears
|
|
1943
1997
|
stable, but pin versions carefully.
|
|
1944
1998
|
|
|
1945
|
-
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1999
|
+
10. **Bun + Anthropic + Rust rewrite**: Bun was acquired by Anthropic on 2025-12-02
|
|
2000
|
+
(Anthropic’s first acquisition) and now powers Claude Code, the Claude Agent SDK,
|
|
2001
|
+
and other Anthropic AI tooling.
|
|
2002
|
+
A full Rust rewrite (~960K lines, generated by Claude agents over ~6 days) merged to
|
|
2003
|
+
`main` on 2026-05-14 and passes 99.8% of the test suite.
|
|
2004
|
+
**Bun 1.3.14 is the last Zig-based release.** External API surface (`bun`, `bunx`,
|
|
2005
|
+
`bun install`, `bun test`, `bun build`, `bun --compile`) is unchanged, but watch
|
|
2006
|
+
1.4.x release notes for migration details.
|
|
2007
|
+
Monitor whether the broader open-source community continues to benefit equally as
|
|
2008
|
+
the codebase integrates more deeply with Anthropic’s AI tooling.
|
|
2009
|
+
|
|
2010
|
+
11. **`bun audit`**: Now a documented command
|
|
2011
|
+
([bun.com/docs/pm/cli/audit](https://bun.com/docs/pm/cli/audit)) with
|
|
2012
|
+
`--audit-level=<low|moderate|high|critical>` and `--json` output.
|
|
2013
|
+
Should be a required CI check (see
|
|
2014
|
+
[Supply-Chain Mitigation](#supply-chain-mitigation)). A `bun audit signatures`
|
|
2015
|
+
equivalent to npm’s signature verification has not yet shipped — monitor.
|
|
1949
2016
|
|
|
1950
2017
|
* * *
|
|
1951
2018
|
|
|
@@ -2113,10 +2180,10 @@ testing features.
|
|
|
2113
2180
|
},
|
|
2114
2181
|
"dependencies": {},
|
|
2115
2182
|
"devDependencies": {
|
|
2116
|
-
"bun-types": "^1.3.
|
|
2117
|
-
"bunup": "^0.16.
|
|
2118
|
-
"publint": "^0.3.
|
|
2119
|
-
"typescript": "^
|
|
2183
|
+
"bun-types": "^1.3.13",
|
|
2184
|
+
"bunup": "^0.16.31",
|
|
2185
|
+
"publint": "^0.3.20",
|
|
2186
|
+
"typescript": "^6.0.3"
|
|
2120
2187
|
}
|
|
2121
2188
|
}
|
|
2122
2189
|
```
|
|
@@ -2168,10 +2235,10 @@ testing features.
|
|
|
2168
2235
|
"optional-sdk": { "optional": true }
|
|
2169
2236
|
},
|
|
2170
2237
|
"devDependencies": {
|
|
2171
|
-
"bun-types": "^1.3.
|
|
2172
|
-
"bunup": "^0.16.
|
|
2173
|
-
"publint": "^0.3.
|
|
2174
|
-
"typescript": "^
|
|
2238
|
+
"bun-types": "^1.3.13",
|
|
2239
|
+
"bunup": "^0.16.31",
|
|
2240
|
+
"publint": "^0.3.20",
|
|
2241
|
+
"typescript": "^6.0.3"
|
|
2175
2242
|
}
|
|
2176
2243
|
}
|
|
2177
2244
|
```
|
|
@@ -2210,29 +2277,35 @@ testing features.
|
|
|
2210
2277
|
"upgrade:major": "bunx npm-check-updates --target latest --interactive --format group"
|
|
2211
2278
|
},
|
|
2212
2279
|
"devDependencies": {
|
|
2213
|
-
"@biomejs/biome": "^2.
|
|
2214
|
-
"@changesets/cli": "^2.
|
|
2215
|
-
"lefthook": "^2.
|
|
2216
|
-
"npm-check-updates": "^
|
|
2217
|
-
"typescript": "^
|
|
2280
|
+
"@biomejs/biome": "^2.4.14",
|
|
2281
|
+
"@changesets/cli": "^2.31.0",
|
|
2282
|
+
"lefthook": "^2.1.5",
|
|
2283
|
+
"npm-check-updates": "^22.0.0",
|
|
2284
|
+
"typescript": "^6.0.3"
|
|
2218
2285
|
}
|
|
2219
2286
|
}
|
|
2220
2287
|
```
|
|
2221
2288
|
|
|
2222
2289
|
**Notes**:
|
|
2223
2290
|
|
|
2291
|
+
- All pinned versions above are ≥14 days old as of 2026-05-21 per the
|
|
2292
|
+
[Supply-Chain Mitigation](#supply-chain-mitigation) policy.
|
|
2293
|
+
Newer releases may exist (`@biomejs/biome` 2.4.15, `lefthook` 2.1.8,
|
|
2294
|
+
`npm-check-updates` 22.2.0) but were too fresh at the time of this document update.
|
|
2224
2295
|
- `"check:ci": "biome ci ."` uses `biome ci` (stricter than `biome check` — errors on
|
|
2225
2296
|
formatting issues)
|
|
2226
2297
|
- `bun run --filter '*' <script>` delegates to each workspace package
|
|
2227
2298
|
- The `@changesets/changelog-github` dependency is optional — use
|
|
2228
2299
|
`"changelog": "@changesets/cli/changelog"` in `.changeset/config.json` for a simpler
|
|
2229
2300
|
built-in changelog generator
|
|
2301
|
+
- `npm-check-updates` v22+ is pure ESM. Add `--cooldown 14` to every invocation per the
|
|
2302
|
+
14-day package-age rule (see Supply-Chain Mitigation section).
|
|
2230
2303
|
|
|
2231
2304
|
### Appendix C: Complete biome.json Example
|
|
2232
2305
|
|
|
2233
2306
|
```json
|
|
2234
2307
|
{
|
|
2235
|
-
"$schema": "https://biomejs.dev/schemas/2.
|
|
2308
|
+
"$schema": "https://biomejs.dev/schemas/2.4.14/schema.json",
|
|
2236
2309
|
"vcs": {
|
|
2237
2310
|
"enabled": true,
|
|
2238
2311
|
"clientKind": "git",
|