Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat: build step 1 — workspace, contracts, governance

4 months ago

0a4539e
Authored
grim7/11/2026, 10:05:41 AM
- bun workspace monorepo per spec §3 (7 packages, 4 apps, mcp agents.md-only)
- redesign demo ported into apps/web, running on mocks
- mock shapes extracted into @tripwire/contracts as zod schemas; demo types
  re-export the inferred contract types
- root AGENTS.md (anti-BS block + cut list verbatim), scoped agents.md files
- .claude/ rules (paths frontmatter), 14 commands, constitution,
  tripwire-design skill
- scripts/check-boundaries.ts enforcing the §3 arrows + github actions ci
- decisions recorded in DECISIONS.md
Root commit
357 files changed
  • .agents/skills/agent-auth-mcp/SKILL.md+156−0
  • .agents/skills/ai-sdk/SKILL.md+78−0
  • .agents/skills/better-auth-best-practices/SKILL.md+182−0
  • .agents/skills/better-auth-plugins/SKILL.md+62−0
  • .agents/skills/better-auth-plugins/references/plugins-index.md+38−0
  • .agents/skills/better-auth-security-best-practices/SKILL.md+432−0
  • .agents/skills/hono-api-scaffolder/SKILL.md+208−0
  • .agents/skills/hono-api-scaffolder/assets/error-handler.ts+17−0
  • .agents/skills/hono-api-scaffolder/assets/middleware-template.ts+30−0
  • .agents/skills/hono-api-scaffolder/assets/route-template.ts+59−0
  • .agents/skills/hono-api-scaffolder/references/endpoint-docs-template.md+106−0
  • .agents/skills/hono-api-scaffolder/references/hono-patterns.md+209−0
  • .agents/skills/hono-core/SKILL.md+510−0
  • .agents/skills/hono-testing/SKILL.md+621−0
  • .agents/skills/hono-typescript/SKILL.md+274−0
  • .agents/skills/hono/SKILL.md+579−0
  • .agents/skills/organization-best-practices/SKILL.md+479−0
  • .agents/skills/pg-boss/SKILL.md+260−0
  • .agents/skills/tanstack-start-best-practices/SKILL.md+109−0
  • .agents/skills/tanstack-start-best-practices/rules/api-routes.md+238−0
  • .agents/skills/tanstack-start-best-practices/rules/auth-route-protection.md+192−0
  • .agents/skills/tanstack-start-best-practices/rules/auth-session-management.md+191−0
  • .agents/skills/tanstack-start-best-practices/rules/deploy-adapters.md+201−0
  • .agents/skills/tanstack-start-best-practices/rules/env-functions.md+211−0
  • .agents/skills/tanstack-start-best-practices/rules/err-server-errors.md+187−0
  • .agents/skills/tanstack-start-best-practices/rules/file-separation.md+152−0
  • .agents/skills/tanstack-start-best-practices/rules/mw-request-middleware.md+166−0
  • .agents/skills/tanstack-start-best-practices/rules/sf-create-server-fn.md+146−0
  • .agents/skills/tanstack-start-best-practices/rules/sf-input-validation.md+158−0
  • .agents/skills/tanstack-start-best-practices/rules/ssr-hydration-safety.md+187−0
  • .agents/skills/tanstack-start-best-practices/rules/ssr-prerender.md+199−0
  • .agents/skills/tanstack-start-best-practices/rules/ssr-streaming.md+201−0
  • .agents/skills/tanstack-start/SKILL.md+250−0
  • .agents/skills/two-factor-authentication-best-practices/SKILL.md+331−0
  • .agents/skills/zod-schema-validation/SKILL.md+106−0
  • .agents/skills/zod-validation-utilities/SKILL.md+208−0
  • .agents/skills/zod-validation-utilities/references/advanced-patterns.md+131−0
  • .agents/skills/zod/AGENTS.md+97−0
  • .agents/skills/zod/README.md+79−0
  • .agents/skills/zod/SKILL.md+127−0
  • .agents/skills/zod/assets/templates/_template.md+30−0
  • .agents/skills/zod/references/_sections.md+46−0
  • .agents/skills/zod/references/compose-intersection.md+144−0
  • .agents/skills/zod/references/compose-lazy-recursive.md+143−0
  • .agents/skills/zod/references/compose-pipe.md+113−0
  • .agents/skills/zod/references/compose-preprocess.md+142−0
  • .agents/skills/zod/references/compose-shared-schemas.md+137−0
  • .agents/skills/zod/references/error-avoid-throwing-in-refine.md+127−0
  • .agents/skills/zod/references/error-custom-messages.md+118−0
  • .agents/skills/zod/references/error-i18n.md+145−0
  • .agents/skills/zod/references/error-path-for-nested.md+130−0
  • .agents/skills/zod/references/error-use-flatten.md+131−0
  • .agents/skills/zod/references/object-discriminated-unions.md+138−0
  • .agents/skills/zod/references/object-extend-for-composition.md+147−0
  • .agents/skills/zod/references/object-optional-vs-nullable.md+117−0
  • .agents/skills/zod/references/object-partial-for-updates.md+123−0
  • .agents/skills/zod/references/object-pick-omit.md+146−0
  • .agents/skills/zod/references/object-strict-vs-strip.md+109−0
  • .agents/skills/zod/references/parse-async-for-async-refinements.md+118−0
  • .agents/skills/zod/references/parse-avoid-double-validation.md+129−0
  • .agents/skills/zod/references/parse-handle-all-issues.md+125−0
  • .agents/skills/zod/references/parse-never-trust-json.md+113−0
  • .agents/skills/zod/references/parse-use-safeparse.md+102−0
  • .agents/skills/zod/references/parse-validate-early.md+120−0
  • .agents/skills/zod/references/perf-arrays.md+153−0
  • .agents/skills/zod/references/perf-avoid-dynamic-creation.md+139−0
  • .agents/skills/zod/references/perf-cache-schemas.md+138−0
  • .agents/skills/zod/references/perf-lazy-loading.md+135−0
  • .agents/skills/zod/references/perf-zod-mini.md+117−0
  • .agents/skills/zod/references/refine-add-path.md+141−0
  • .agents/skills/zod/references/refine-catch.md+143−0
  • .agents/skills/zod/references/refine-defaults.md+131−0
  • .agents/skills/zod/references/refine-transform-coerce.md+105−0
  • .agents/skills/zod/references/refine-vs-superrefine.md+152−0
  • .agents/skills/zod/references/schema-avoid-optional-abuse.md+93−0
  • .agents/skills/zod/references/schema-coercion-for-form-data.md+88−0
  • .agents/skills/zod/references/schema-string-validations.md+90−0
  • .agents/skills/zod/references/schema-use-enums.md+107−0
  • .agents/skills/zod/references/schema-use-primitives-correctly.md+61−0
  • .agents/skills/zod/references/schema-use-unknown-not-any.md+88−0
  • .agents/skills/zod/references/type-branded-types.md+102−0
  • .agents/skills/zod/references/type-enable-strict-mode.md+130−0
  • .agents/skills/zod/references/type-export-schemas-and-types.md+116−0
  • .agents/skills/zod/references/type-input-vs-output.md+116−0
  • .agents/skills/zod/references/type-use-z-infer.md+110−0
  • .claude/commands/add-route.md+25−0
  • .claude/commands/add-rule.md+30−0
  • .claude/commands/capture-fixture.md+25−0
  • .claude/commands/cleanup.md+20−0
  • .claude/commands/council.md+22−0
  • .claude/commands/react-query-best-practices.md+23−0
  • .claude/commands/replay.md+22−0
  • .claude/commands/ship.md+23−0
  • .claude/commands/ui-review.md+26−0
  • .claude/commands/validate-rule.md+27−0
  • .claude/commands/you-might-not-need-a-callback.md+21−0
  • .claude/commands/you-might-not-need-a-memo.md+21−0
  • .claude/commands/you-might-not-need-an-effect.md+22−0
  • .claude/commands/you-might-not-need-state.md+21−0
  • .claude/rules/architecture.md+42−0
  • .claude/rules/constitution.md+23−0
  • .claude/rules/frontend.md+57−0
  • .claude/rules/ingest.md+44−0
  • .claude/rules/naming.md+27−0
  • .claude/rules/review-agent.md+38−0
  • .claude/rules/rules-engine.md+47−0
  • .claude/rules/testing.md+32−0
  • .claude/skills/agent-auth-mcp+1−0
  • .claude/skills/ai-sdk+1−0
  • .claude/skills/better-auth-best-practices+1−0
  • .claude/skills/better-auth-plugins+1−0
  • .claude/skills/better-auth-security-best-practices+1−0
  • .claude/skills/hono+1−0
  • .claude/skills/hono-api-scaffolder+1−0
  • .claude/skills/hono-core+1−0
  • .claude/skills/hono-testing+1−0
  • .claude/skills/hono-typescript+1−0
  • .claude/skills/organization-best-practices+1−0
  • .claude/skills/pg-boss+1−0
  • .claude/skills/tanstack-start+1−0
  • .claude/skills/tanstack-start-best-practices+1−0
  • .claude/skills/tripwire-design/SKILL.md+72−0
  • .claude/skills/two-factor-authentication-best-practices+1−0
  • .claude/skills/zod+1−0
  • .claude/skills/zod-schema-validation+1−0
  • .claude/skills/zod-validation-utilities+1−0
  • .github/workflows/ci.yml+31−0
  • .gitignore+12−0
  • AGENTS.md+114−0
  • DECISIONS.md+103−0
  • apps/api/agents.md+14−0
  • apps/api/package.json+19−0
  • apps/api/src/index.ts+11−0
  • apps/api/tsconfig.json+4−0
  • apps/mcp/agents.md+3−0
  • apps/web/.editorconfig+12−0
  • apps/web/.gitattributes+2−0
  • apps/web/.gitignore+17−0
  • apps/web/README.md+70−0
  • apps/web/ROUTES.md+137−0
  • apps/web/agents.md+18−0
  • apps/web/package.json+71−0
  • apps/web/public/fonts/GeistPixel-Square.woff2——
  • apps/web/scripts/pull-dither-kit.mjs+59−0
  • apps/web/src/components/agents.md+14−0
  • apps/web/src/components/analytics/activity-drilldown.tsx+233−0
  • apps/web/src/components/analytics/analytics-chart.tsx+78−0
  • apps/web/src/components/analytics/analytics-events.tsx+171−0
  • apps/web/src/components/analytics/analytics-metrics-sheet.tsx+100−0
  • apps/web/src/components/analytics/breakdown-bar.tsx+33−0
  • apps/web/src/components/analytics/chart-with-drilldown.tsx+52−0
  • apps/web/src/components/analytics/metric-detail-chart.tsx+103−0
  • apps/web/src/components/analytics/repo-crumbs.tsx+61−0
  • apps/web/src/components/analytics/repo-metric-card.tsx+87−0
  • apps/web/src/components/automod/category-pill.tsx+22−0
  • apps/web/src/components/automod/rule-detail.tsx+235−0
  • apps/web/src/components/automod/rule-list.tsx+152−0
  • apps/web/src/components/automod/rule-row.tsx+86−0
  • apps/web/src/components/charts/dither-chart.tsx+248−0
  • apps/web/src/components/charts/dither-kit/README.md+124−0
  • apps/web/src/components/charts/dither-kit/area-chart.tsx+22−0
  • apps/web/src/components/charts/dither-kit/area.tsx+102−0
  • apps/web/src/components/charts/dither-kit/bar-canvas.tsx+208−0
  • apps/web/src/components/charts/dither-kit/bar-chart.tsx+11−0
  • apps/web/src/components/charts/dither-kit/bar.tsx+84−0
  • apps/web/src/components/charts/dither-kit/cartesian-canvas.tsx+374−0
  • apps/web/src/components/charts/dither-kit/cartesian-root.tsx+188−0
  • apps/web/src/components/charts/dither-kit/chart-context.tsx+390−0
  • apps/web/src/components/charts/dither-kit/common-context.tsx+48−0
  • apps/web/src/components/charts/dither-kit/dither-paint.ts+181−0
  • apps/web/src/components/charts/dither-kit/dot.tsx+90−0
  • apps/web/src/components/charts/dither-kit/grid.tsx+48−0
  • apps/web/src/components/charts/dither-kit/index.ts+32−0
  • apps/web/src/components/charts/dither-kit/legend.tsx+64−0
  • apps/web/src/components/charts/dither-kit/lib.ts+8−0
  • apps/web/src/components/charts/dither-kit/palette.ts+44−0
  • apps/web/src/components/charts/dither-kit/pie-canvas.tsx+212−0
  • apps/web/src/components/charts/dither-kit/pie-chart.tsx+32−0
  • apps/web/src/components/charts/dither-kit/pie.tsx+26−0
  • apps/web/src/components/charts/dither-kit/polar-context.tsx+297−0
  • apps/web/src/components/charts/dither-kit/polar-root.tsx+169−0
  • apps/web/src/components/charts/dither-kit/polar.ts+125−0
  • apps/web/src/components/charts/dither-kit/radar-canvas.tsx+230−0
  • apps/web/src/components/charts/dither-kit/radar-chart.tsx+39−0
  • apps/web/src/components/charts/dither-kit/radar-frame.tsx+72−0
  • apps/web/src/components/charts/dither-kit/radar.tsx+32−0
  • apps/web/src/components/charts/dither-kit/scales.ts+89−0
  • apps/web/src/components/charts/dither-kit/series-context.tsx+23−0
  • apps/web/src/components/charts/dither-kit/sparkline.tsx+63−0
  • apps/web/src/components/charts/dither-kit/tooltip.tsx+106−0
  • apps/web/src/components/charts/dither-kit/use-chart-dimensions.ts+37−0
  • apps/web/src/components/charts/dither-kit/x-axis.tsx+44−0
  • apps/web/src/components/charts/dither-kit/y-axis.tsx+33−0
  • apps/web/src/components/charts/dither-stat-card.tsx+146−0
  • apps/web/src/components/charts/hover-dither-chart.tsx+24−0
  • apps/web/src/components/charts/scramble-text.tsx+82−0
  • apps/web/src/components/integrations/github-account-card.tsx+45−0
  • apps/web/src/components/integrations/repo-pagination.tsx+83−0
  • apps/web/src/components/integrations/repo-row.tsx+56−0
  • apps/web/src/components/layouts/dashboard-layout.tsx+155−0
  • apps/web/src/components/layouts/dashboard-side-panel.tsx+83−0
  • apps/web/src/components/layouts/dashboard-topbar.tsx+202−0
  • apps/web/src/components/layouts/mobile-footer.tsx+71−0
  • apps/web/src/components/log/glass-content.tsx+33−0
  • apps/web/src/components/log/log-detail.tsx+329−0
  • apps/web/src/components/log/log-list.tsx+163−0
  • apps/web/src/components/log/log-row.tsx+66−0
  • apps/web/src/components/log/log-tag.tsx+11−0
  • apps/web/src/components/moderation/moderation-confirm-actions.tsx+121−0
  • apps/web/src/components/moderation/moderation-detail.tsx+147−0
  • apps/web/src/components/moderation/queue-item-row.tsx+57−0
  • apps/web/src/components/moderation/queue-list.tsx+161−0
  • apps/web/src/components/moderation/reason-pill.tsx+22−0
  • apps/web/src/components/moderation/severity-badge.tsx+19−0
  • apps/web/src/components/not-found.tsx+20−0
  • apps/web/src/components/profile/contribution-graph.tsx+45−0
  • apps/web/src/components/profile/profile-activity.tsx+65−0
  • apps/web/src/components/repo/author-link.tsx+33−0
  • apps/web/src/components/repo/comment-card.tsx+91−0
  • apps/web/src/components/repo/dither-glow.tsx+215−0
  • apps/web/src/components/repo/label-pill.tsx+15−0
  • apps/web/src/components/repo/list-filter-tabs.tsx+59−0
  • apps/web/src/components/repo/repo-list-row.tsx+44−0
  • apps/web/src/components/repo/repo-tabs.tsx+76−0
  • apps/web/src/components/repo/thread-detail-shell.tsx+145−0
  • apps/web/src/components/repo/thread-list-row.tsx+75−0
  • apps/web/src/components/repo/thread-view.tsx+98−0
  • apps/web/src/components/repo/thread-visual.tsx+59−0
  • apps/web/src/components/ui/avatar.tsx+53−0
  • apps/web/src/components/ui/badge.tsx+44−0
  • apps/web/src/components/ui/button.tsx+89−0
  • apps/web/src/components/ui/card.tsx+75−0
  • apps/web/src/components/ui/dropdown-menu.tsx+94−0
  • apps/web/src/components/ui/input.tsx+20−0
  • apps/web/src/components/ui/separator.tsx+28−0
  • apps/web/src/components/ui/skeleton.tsx+15−0
  • apps/web/src/components/ui/sonner.tsx+31−0
  • apps/web/src/components/ui/spinner.tsx+35−0
  • apps/web/src/components/ui/switch.tsx+31−0
  • apps/web/src/components/ui/tooltip.tsx+60−0
  • apps/web/src/hooks/use-has-mounted.ts+11−0
  • apps/web/src/hooks/use-media-query.ts+15−0
  • apps/web/src/lib/analytics-events.ts+453−0
  • apps/web/src/lib/analytics.ts+92−0
  • apps/web/src/lib/automod-category.ts+31−0
  • apps/web/src/lib/automod-mock-data.ts+381−0
  • apps/web/src/lib/automod.functions.ts+16−0
  • apps/web/src/lib/automod.query.ts+27−0
  • apps/web/src/lib/automod.types.ts+9−0
  • apps/web/src/lib/bucket-activity.ts+184−0
  • apps/web/src/lib/contributor-mock-data.ts+151−0
  • apps/web/src/lib/contributor.functions.ts+12−0
  • apps/web/src/lib/contributor.query.ts+18−0
  • apps/web/src/lib/contributor.types.ts+12−0
  • apps/web/src/lib/format-relative-time.ts+16−0
  • apps/web/src/lib/integrations-mock-data.ts+104−0
  • apps/web/src/lib/integrations.functions.ts+10−0
  • apps/web/src/lib/integrations.query.ts+18−0
  • apps/web/src/lib/integrations.types.ts+6−0
  • apps/web/src/lib/item-type.ts+19−0
  • apps/web/src/lib/log-config.ts+37−0
  • apps/web/src/lib/log-mock-data.ts+249−0
  • apps/web/src/lib/log.functions.ts+10−0
  • apps/web/src/lib/log.query.ts+15−0
  • apps/web/src/lib/log.types.ts+11−0
  • apps/web/src/lib/mock-data.ts+313−0
  • apps/web/src/lib/moderation.functions.ts+19−0
  • apps/web/src/lib/moderation.query.ts+30−0
  • apps/web/src/lib/moderation.types.ts+17−0
  • apps/web/src/lib/query-client.tsx+25−0
  • apps/web/src/lib/reason.ts+13−0
  • apps/web/src/lib/repo-analytics-mock-data.ts+398−0
  • apps/web/src/lib/repo-analytics.config.ts+18−0
  • apps/web/src/lib/repo-analytics.functions.ts+10−0
  • apps/web/src/lib/repo-analytics.query.ts+23−0
  • apps/web/src/lib/repo-analytics.types.ts+17−0
  • apps/web/src/lib/repo-content-mock-data.ts+474−0
  • apps/web/src/lib/repo-content.functions.ts+10−0
  • apps/web/src/lib/repo-content.query.ts+23−0
  • apps/web/src/lib/repo-content.types.ts+11−0
  • apps/web/src/lib/severity.ts+20−0
  • apps/web/src/lib/site-config.ts+25−0
  • apps/web/src/lib/use-automod-actions.ts+65−0
  • apps/web/src/lib/use-log-actions.ts+68−0
  • apps/web/src/lib/use-moderation-actions.ts+45−0
  • apps/web/src/lib/user-profile.ts+85−0
  • apps/web/src/lib/utils.ts+6−0
  • apps/web/src/router.tsx+41−0
  • apps/web/src/routes/$org.$repo.analytics.index.tsx+229−0
  • apps/web/src/routes/$org.$repo.analytics.issues.$id.tsx+241−0
  • apps/web/src/routes/$org.$repo.analytics.pulls.$id.tsx+228−0
  • apps/web/src/routes/$org.$repo.issues.$id.tsx+105−0
  • apps/web/src/routes/$org.$repo.issues.index.tsx+92−0
  • apps/web/src/routes/$org.$repo.pulls.$id.tsx+105−0
  • apps/web/src/routes/$org.$repo.pulls.index.tsx+92−0
  • apps/web/src/routes/$org.integrations.github.tsx+179−0
  • apps/web/src/routes/$org.repos.tsx+71−0
  • apps/web/src/routes/__root.tsx+62−0
  • apps/web/src/routes/agents.md+14−0
  • apps/web/src/routes/analytics.tsx+263−0
  • apps/web/src/routes/automod.tsx+142−0
  • apps/web/src/routes/dither-charts.tsx+438−0
  • apps/web/src/routes/dither-kit.tsx+874−0
  • apps/web/src/routes/index.tsx+215−0
  • apps/web/src/routes/profile.$userHandle.tsx+284−0
  • apps/web/src/styles.css+309−0
  • apps/web/tsconfig.json+27−0
  • apps/web/vite.config.ts+21−0
  • apps/worker/agents.md+16−0
  • apps/worker/package.json+21−0
  • apps/worker/src/index.ts+11−0
  • apps/worker/tsconfig.json+4−0
  • biome.json+19−0
  • bun.lock+994−0
  • bunfig.toml+7−0
  • docker-compose.yml+23−0
  • package.json+29−0
  • packages/contracts/agents.md+15−0
  • packages/contracts/package.json+16−0
  • packages/contracts/src/automod.ts+73−0
  • packages/contracts/src/contracts.test.ts+193−0
  • packages/contracts/src/contributor.ts+68−0
  • packages/contracts/src/index.ts+19−0
  • packages/contracts/src/integrations.ts+39−0
  • packages/contracts/src/log.ts+84−0
  • packages/contracts/src/moderation.ts+79−0
  • packages/contracts/src/repo-analytics.ts+109−0
  • packages/contracts/src/repo-content.ts+85−0
  • packages/contracts/tsconfig.json+4−0
  • packages/core/agents.md+8−0
  • packages/core/package.json+17−0
  • packages/core/src/index.ts+12−0
  • packages/core/tsconfig.json+4−0
  • packages/db/agents.md+17−0
  • packages/db/package.json+17−0
  • packages/db/src/index.ts+11−0
  • packages/db/tsconfig.json+4−0
  • packages/forge-github/agents.md+16−0
  • packages/forge-github/package.json+18−0
  • packages/forge-github/src/index.ts+11−0
  • packages/forge-github/tsconfig.json+4−0
  • packages/forge/agents.md+6−0
  • packages/forge/package.json+16−0
  • packages/forge/src/index.ts+11−0
  • packages/forge/tsconfig.json+4−0
  • packages/ui/agents.md+12−0
  • packages/ui/package.json+13−0
  • packages/ui/src/index.ts+11−0
  • packages/ui/tsconfig.json+4−0
  • packages/utils/agents.md+13−0
  • packages/utils/package.json+13−0
  • packages/utils/src/index.ts+11−0
  • packages/utils/tsconfig.json+4−0
  • scripts/check-boundaries.ts+107−0
  • skills-lock.json+113−0
  • spec.md+641−0
  • tsconfig.base.json+22−0