← All projects
June

App builder tooling

What makes building an app fast and consistent: guide, lint rules, CI checks, skills, SDK exports.

What I did

Effort

23PRs merged, 1 open
+10,227lines added, 231 removed
91commits
34review comments from people
62Copilot review comments
33review replies I wrote

Reviewers (PRs reviewed): Jonny (12), James (1). Typical time to merge: same day. First PR 2026-05-07, last change 2026-09-26.

All 31 PRs
PRStateLinesPeopleCopilotReviewers
docs(extensions/agents): no raw postMessage reads, defer to SDK
sandboxed-extensions · 2026-05-07
Merged+15 / -900Jonny
docs(extensions/agents): cache-busting, manifest staging, SDK gotchas
sandboxed-extensions · 2026-05-07
Merged+99 / -373Jonny
chore(ui-react): expose 7 missing components via deep-path exports
sandboxed-extensions · 2026-05-07
Closed+36 / -000
docs(agents): expand AGENTS.md from style guide to building guide
sandboxed-extensions · 2026-05-07
Closed+292 / -6105
docs(cli): expand scaffold AGENTS.md with platform conventions
sandboxed-extensions · 2026-05-11
Closed+82 / -0110Jonny
feat(conformance): enforce extension conventions with a blocking CI check
sandboxed-extensions · 2026-06-10
Closed+6,777 / -702
feat(lint): biome plugins for extension conventions
sandboxed-extensions · 2026-06-11
Merged+309 / -067Jonny
feat(security): block new secrets and scan workers in CI
sandboxed-extensions · 2026-06-11
Closed+433 / -002
ci: block shared-code changes bundled into extension PRs
sandboxed-extensions · 2026-06-12
Closed+141 / -003
fix(ui-react): export ToastProvider
sandboxed-extensions · 2026-06-12
Merged+24 / -210Jonny
feat(conformance): no-direct-ui-import biome plugin
sandboxed-extensions · 2026-06-12
Merged+40 / -042Jonny
feat(public-sdk): export unwrapResult helper for extensions CU-86ca8tyz2
mono · 2026-06-15
Merged+68 / -001Jonny
feat(ui-react): export style loader as @kittl/ui-react/styles
sandboxed-extensions · 2026-06-18
Merged+13 / -022Jonny
chore: bump to pnpm 11, consolidate packageManager to root
sandboxed-extensions · 2026-06-19
Merged+10 / -1301Jonny
chore: adopt unwrapResult from @kittl/sdk (search-content, qr-code, pod-presets)
sandboxed-extensions · 2026-06-19
Merged+28 / -6910Jonny
feat: extension-building skills (.claude/skills)
sandboxed-extensions · 2026-06-22
Merged+244 / -012Jonny
docs: extension structure rules in Copilot instructions + sharpen AGENTS §18
sandboxed-extensions · 2026-06-22
Merged+24 / -1203
feat(conformance): structural check for extension layout
sandboxed-extensions · 2026-06-22
Closed+588 / -001
docs(workers): worker URL / route naming convention
sandboxed-extensions · 2026-06-29
Merged+15 / -001
ci: set the google-drive-picker worker API key from the repo
sandboxed-extensions · 2026-06-30
Merged+12 / -001
ci: manual workflow to set production oauth-proxy secrets
sandboxed-extensions · 2026-06-30
Merged+52 / -002
feat(cli): require SVG icon in extension manifest CU-none
oss · 2026-07-09
Merged+96 / -316James, Jonny
docs(workers): record the internal- CSP exception for HTML-serving workers
sandboxed-extensions · 2026-08-24
Open+22 / -101
docs(agents): how worker secrets actually get set
sandboxed-extensions · 2026-09-14
Merged+8 / -002
docs(skills): kittl-app-privacy-policy skill for per-app privacy sub-pages
sandboxed-extensions · 2026-09-15
Merged+304 / -005
fix(skills): close path escape and deferred-decode gaps in the icon validator
sandboxed-extensions · 2026-09-16
Merged+37 / -1202
fix(skills): harden the extension icon validator
sandboxed-extensions · 2026-09-16
Merged+64 / -1304
docs(extensions): renumber review-visibility section to §21
sandboxed-extensions · 2026-09-18
Merged+2 / -200
docs(extensions): gate apps awaiting external review via app-sign-off (§20)
sandboxed-extensions · 2026-09-18
Merged+18 / -001
chore(extensions): staging links and manifests for the apps synced to staging
sandboxed-extensions · 2026-09-25
Merged+358 / -2402
chore(secrets): set the AI Vectors worker's QuiverAI key
sandboxed-extensions · 2026-09-26
Merged+16 / -001