@m2-ai/lattice-cli 0.0.0-stage → 0.8.7
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/DISCLOSURE +1 -0
- package/README.md +118 -2
- package/bundles/expo-mobile/.agents/skills/lattice-feature-handoff/SKILL.md +31 -0
- package/bundles/expo-mobile/.agents/skills/lattice-release-manager/SKILL.md +29 -0
- package/bundles/expo-mobile/.agents/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/expo-mobile/.claude/agents/lattice-feature-agent.md +10 -0
- package/bundles/expo-mobile/.claude/agents/lattice-release-manager.md +9 -0
- package/bundles/expo-mobile/.claude/hooks/README.md +9 -0
- package/bundles/expo-mobile/.claude/hooks/pre-commit-verify.mjs +10 -0
- package/bundles/expo-mobile/.claude/hooks/pre-tool-use.mjs +51 -0
- package/bundles/expo-mobile/.claude/rules/lattice-core.md +20 -0
- package/bundles/expo-mobile/.claude/settings.json +38 -0
- package/bundles/expo-mobile/.claude/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/expo-mobile/.codex/agents/lattice-feature-agent.toml +9 -0
- package/bundles/expo-mobile/.codex/agents/lattice-release-manager.toml +9 -0
- package/bundles/expo-mobile/.cursor/mcp.json +34 -0
- package/bundles/expo-mobile/.cursor/rules/lattice-core.mdc +35 -0
- package/bundles/expo-mobile/.cursor/rules.md +94 -0
- package/bundles/expo-mobile/.env.example +19 -0
- package/bundles/expo-mobile/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- package/bundles/expo-mobile/.github/agents/lattice-feature-agent.agent.md +7 -0
- package/bundles/expo-mobile/.github/agents/lattice-release-manager.agent.md +7 -0
- package/bundles/expo-mobile/.github/copilot-instructions.md +37 -0
- package/bundles/expo-mobile/.github/instructions/lattice-core.instructions.md +11 -0
- package/bundles/expo-mobile/.github/workflows/ci.yml +26 -0
- package/bundles/expo-mobile/.gitmessage +24 -0
- package/bundles/expo-mobile/.lattice/config.json +9 -0
- package/bundles/expo-mobile/.lattice/dependency-security.json +91 -0
- package/bundles/expo-mobile/.lattice/prompts/01-feature.md +36 -0
- package/bundles/expo-mobile/.lattice/prompts/02-bugfix.md +32 -0
- package/bundles/expo-mobile/.lattice/prompts/03-refactor.md +30 -0
- package/bundles/expo-mobile/.lattice/prompts/04-test.md +31 -0
- package/bundles/expo-mobile/.lattice/prompts/05-polish.md +38 -0
- package/bundles/expo-mobile/.lattice/prompts/06-security.md +32 -0
- package/bundles/expo-mobile/.lattice/release-workflow.json +55 -0
- package/bundles/expo-mobile/.lattice/schemas/feature-handoff.schema.json +264 -0
- package/bundles/expo-mobile/.lattice/templates/feature-handoff.json +52 -0
- package/bundles/expo-mobile/.mcp.json +35 -0
- package/bundles/expo-mobile/AGENTS.md +58 -0
- package/bundles/expo-mobile/CLAUDE.md +75 -0
- package/bundles/expo-mobile/PROJECT_GUIDE.md +299 -0
- package/bundles/expo-mobile/README.md +39 -0
- package/bundles/expo-mobile/__tests__/home.test.tsx +22 -0
- package/bundles/expo-mobile/app/_layout.tsx +20 -0
- package/bundles/expo-mobile/app/index.tsx +72 -0
- package/bundles/expo-mobile/app.json +33 -0
- package/bundles/expo-mobile/components/ui/Button.tsx +75 -0
- package/bundles/expo-mobile/components/ui/Input.tsx +50 -0
- package/bundles/expo-mobile/components/ui/index.ts +2 -0
- package/bundles/expo-mobile/docs/LATTICE_RELEASE_WORKFLOW.md +53 -0
- package/bundles/expo-mobile/docs/rules/codex.md +62 -0
- package/bundles/expo-mobile/eslint.config.js +7 -0
- package/bundles/expo-mobile/lib/supabase/client.ts +22 -0
- package/bundles/expo-mobile/lib/supabase/realtime.ts +10 -0
- package/bundles/expo-mobile/lib/supabase/storage.ts +6 -0
- package/bundles/expo-mobile/package.json +65 -0
- package/bundles/expo-mobile/plugins/with-lattice-commons-io.cjs +42 -0
- package/bundles/expo-mobile/prompts/01-feature-implementation.md +48 -0
- package/bundles/expo-mobile/prompts/02-bug-fix.md +43 -0
- package/bundles/expo-mobile/prompts/03-safe-refactor.md +38 -0
- package/bundles/expo-mobile/prompts/04-test-first.md +41 -0
- package/bundles/expo-mobile/prompts/05-ui-polish.md +44 -0
- package/bundles/expo-mobile/prompts/06-security-review.md +39 -0
- package/bundles/expo-mobile/prompts/quality.md +143 -0
- package/bundles/expo-mobile/supabase/migrations/001_initial_schema.sql +66 -0
- package/bundles/expo-mobile/tsconfig.json +21 -0
- package/bundles/expo-mobile/types/database.types.ts +76 -0
- package/bundles/expo-mobile/vendor/m2ai-braces-3.0.3-m2ai.1.tar +0 -0
- package/bundles/expo-supabase/.agents/skills/lattice-feature-handoff/SKILL.md +31 -0
- package/bundles/expo-supabase/.agents/skills/lattice-release-manager/SKILL.md +29 -0
- package/bundles/expo-supabase/.agents/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/expo-supabase/.claude/agents/lattice-feature-agent.md +10 -0
- package/bundles/expo-supabase/.claude/agents/lattice-release-manager.md +9 -0
- package/bundles/expo-supabase/.claude/hooks/README.md +9 -0
- package/bundles/expo-supabase/.claude/hooks/pre-commit-verify.mjs +10 -0
- package/bundles/expo-supabase/.claude/hooks/pre-tool-use.mjs +51 -0
- package/bundles/expo-supabase/.claude/rules/lattice-core.md +20 -0
- package/bundles/expo-supabase/.claude/settings.json +38 -0
- package/bundles/expo-supabase/.claude/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/expo-supabase/.codex/agents/lattice-feature-agent.toml +9 -0
- package/bundles/expo-supabase/.codex/agents/lattice-release-manager.toml +9 -0
- package/bundles/expo-supabase/.cursor/mcp.json +34 -0
- package/bundles/expo-supabase/.cursor/rules/lattice-core.mdc +35 -0
- package/bundles/expo-supabase/.cursor/rules.md +94 -0
- package/bundles/expo-supabase/.env.example +12 -0
- package/bundles/expo-supabase/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- package/bundles/expo-supabase/.github/agents/lattice-feature-agent.agent.md +7 -0
- package/bundles/expo-supabase/.github/agents/lattice-release-manager.agent.md +7 -0
- package/bundles/expo-supabase/.github/copilot-instructions.md +37 -0
- package/bundles/expo-supabase/.github/instructions/lattice-core.instructions.md +11 -0
- package/bundles/expo-supabase/.github/workflows/ci.yml +26 -0
- package/bundles/expo-supabase/.gitmessage +24 -0
- package/bundles/expo-supabase/.lattice/config.json +9 -0
- package/bundles/expo-supabase/.lattice/dependency-security.json +91 -0
- package/bundles/expo-supabase/.lattice/prompts/01-feature.md +36 -0
- package/bundles/expo-supabase/.lattice/prompts/02-bugfix.md +32 -0
- package/bundles/expo-supabase/.lattice/prompts/03-refactor.md +30 -0
- package/bundles/expo-supabase/.lattice/prompts/04-test.md +31 -0
- package/bundles/expo-supabase/.lattice/prompts/05-polish.md +38 -0
- package/bundles/expo-supabase/.lattice/prompts/06-security.md +32 -0
- package/bundles/expo-supabase/.lattice/release-workflow.json +55 -0
- package/bundles/expo-supabase/.lattice/schemas/feature-handoff.schema.json +264 -0
- package/bundles/expo-supabase/.lattice/templates/feature-handoff.json +52 -0
- package/bundles/expo-supabase/.mcp.json +35 -0
- package/bundles/expo-supabase/AGENTS.md +58 -0
- package/bundles/expo-supabase/CLAUDE.md +75 -0
- package/bundles/expo-supabase/PROJECT_GUIDE.md +201 -0
- package/bundles/expo-supabase/README.md +38 -0
- package/bundles/expo-supabase/__tests__/home.test.tsx +22 -0
- package/bundles/expo-supabase/app/_layout.tsx +14 -0
- package/bundles/expo-supabase/app/index.tsx +72 -0
- package/bundles/expo-supabase/app.json +33 -0
- package/bundles/expo-supabase/components/ui/Button.tsx +75 -0
- package/bundles/expo-supabase/components/ui/Input.tsx +50 -0
- package/bundles/expo-supabase/components/ui/index.ts +2 -0
- package/bundles/expo-supabase/docs/LATTICE_RELEASE_WORKFLOW.md +53 -0
- package/bundles/expo-supabase/docs/rules/codex.md +62 -0
- package/bundles/expo-supabase/eslint.config.js +7 -0
- package/bundles/expo-supabase/lib/supabase/client.ts +22 -0
- package/bundles/expo-supabase/lib/supabase/realtime.ts +10 -0
- package/bundles/expo-supabase/lib/supabase/storage.ts +6 -0
- package/bundles/expo-supabase/package.json +60 -0
- package/bundles/expo-supabase/plugins/with-lattice-commons-io.cjs +42 -0
- package/bundles/expo-supabase/prompts/01-feature-implementation.md +8 -0
- package/bundles/expo-supabase/prompts/02-bug-fix.md +9 -0
- package/bundles/expo-supabase/prompts/03-safe-refactor.md +8 -0
- package/bundles/expo-supabase/prompts/04-test-first.md +7 -0
- package/bundles/expo-supabase/prompts/05-ui-polish.md +7 -0
- package/bundles/expo-supabase/prompts/06-security-review.md +7 -0
- package/bundles/expo-supabase/prompts/quality.md +143 -0
- package/bundles/expo-supabase/supabase/migrations/001_initial_schema.sql +66 -0
- package/bundles/expo-supabase/tsconfig.json +21 -0
- package/bundles/expo-supabase/types/database.types.ts +76 -0
- package/bundles/expo-supabase/vendor/m2ai-braces-3.0.3-m2ai.1.tar +0 -0
- package/bundles/nextjs-landing/.agents/skills/lattice-feature-handoff/SKILL.md +31 -0
- package/bundles/nextjs-landing/.agents/skills/lattice-release-manager/SKILL.md +29 -0
- package/bundles/nextjs-landing/.agents/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/nextjs-landing/.claude/agents/lattice-feature-agent.md +10 -0
- package/bundles/nextjs-landing/.claude/agents/lattice-release-manager.md +9 -0
- package/bundles/nextjs-landing/.claude/hooks/README.md +9 -0
- package/bundles/nextjs-landing/.claude/hooks/pre-commit-verify.mjs +10 -0
- package/bundles/nextjs-landing/.claude/hooks/pre-tool-use.mjs +51 -0
- package/bundles/nextjs-landing/.claude/rules/lattice-core.md +20 -0
- package/bundles/nextjs-landing/.claude/settings.json +38 -0
- package/bundles/nextjs-landing/.claude/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/nextjs-landing/.codex/agents/lattice-feature-agent.toml +9 -0
- package/bundles/nextjs-landing/.codex/agents/lattice-release-manager.toml +9 -0
- package/bundles/nextjs-landing/.cursor/mcp.json +34 -0
- package/bundles/nextjs-landing/.cursor/rules/lattice-core.mdc +35 -0
- package/bundles/nextjs-landing/.cursor/rules.md +95 -0
- package/bundles/nextjs-landing/.env.example +24 -0
- package/bundles/nextjs-landing/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- package/bundles/nextjs-landing/.github/agents/lattice-feature-agent.agent.md +7 -0
- package/bundles/nextjs-landing/.github/agents/lattice-release-manager.agent.md +7 -0
- package/bundles/nextjs-landing/.github/copilot-instructions.md +37 -0
- package/bundles/nextjs-landing/.github/instructions/lattice-core.instructions.md +11 -0
- package/bundles/nextjs-landing/.github/workflows/ci.yml +26 -0
- package/bundles/nextjs-landing/.gitmessage +24 -0
- package/bundles/nextjs-landing/.lattice/config.json +9 -0
- package/bundles/nextjs-landing/.lattice/dependency-security.json +46 -0
- package/bundles/nextjs-landing/.lattice/prompts/01-feature.md +36 -0
- package/bundles/nextjs-landing/.lattice/prompts/02-bugfix.md +32 -0
- package/bundles/nextjs-landing/.lattice/prompts/03-refactor.md +30 -0
- package/bundles/nextjs-landing/.lattice/prompts/04-test.md +31 -0
- package/bundles/nextjs-landing/.lattice/prompts/05-polish.md +38 -0
- package/bundles/nextjs-landing/.lattice/prompts/06-security.md +32 -0
- package/bundles/nextjs-landing/.lattice/release-workflow.json +55 -0
- package/bundles/nextjs-landing/.lattice/schemas/feature-handoff.schema.json +264 -0
- package/bundles/nextjs-landing/.lattice/templates/feature-handoff.json +52 -0
- package/bundles/nextjs-landing/.mcp.json +35 -0
- package/bundles/nextjs-landing/AGENTS.md +58 -0
- package/bundles/nextjs-landing/CLAUDE.md +76 -0
- package/bundles/nextjs-landing/PROJECT_GUIDE.md +216 -0
- package/bundles/nextjs-landing/README.md +39 -0
- package/bundles/nextjs-landing/app/api/example/[id]/route.ts +34 -0
- package/bundles/nextjs-landing/app/api/example/route.ts +24 -0
- package/bundles/nextjs-landing/app/api/health/route.ts +8 -0
- package/bundles/nextjs-landing/app/global-error.tsx +17 -0
- package/bundles/nextjs-landing/app/globals.css +55 -0
- package/bundles/nextjs-landing/app/layout.tsx +22 -0
- package/bundles/nextjs-landing/app/page.tsx +42 -0
- package/bundles/nextjs-landing/components/ui/button.tsx +39 -0
- package/bundles/nextjs-landing/components/ui/card.tsx +53 -0
- package/bundles/nextjs-landing/components/ui/index.ts +4 -0
- package/bundles/nextjs-landing/components/ui/input.tsx +23 -0
- package/bundles/nextjs-landing/components/ui/spinner.tsx +22 -0
- package/bundles/nextjs-landing/docs/LATTICE_RELEASE_WORKFLOW.md +53 -0
- package/bundles/nextjs-landing/docs/rules/codex.md +62 -0
- package/bundles/nextjs-landing/eslint.config.mjs +16 -0
- package/bundles/nextjs-landing/instrumentation-client.ts +30 -0
- package/bundles/nextjs-landing/instrumentation.ts +12 -0
- package/bundles/nextjs-landing/jest.config.mjs +16 -0
- package/bundles/nextjs-landing/jest.setup.js +1 -0
- package/bundles/nextjs-landing/lib/utils.ts +6 -0
- package/bundles/nextjs-landing/next-env.d.ts +5 -0
- package/bundles/nextjs-landing/next.config.ts +15 -0
- package/bundles/nextjs-landing/package.json +48 -0
- package/bundles/nextjs-landing/postcss.config.mjs +7 -0
- package/bundles/nextjs-landing/prompts/01-feature-implementation.md +9 -0
- package/bundles/nextjs-landing/prompts/02-bug-fix.md +10 -0
- package/bundles/nextjs-landing/prompts/03-safe-refactor.md +8 -0
- package/bundles/nextjs-landing/prompts/04-test-first.md +8 -0
- package/bundles/nextjs-landing/prompts/05-ui-polish.md +8 -0
- package/bundles/nextjs-landing/prompts/06-security-review.md +7 -0
- package/bundles/nextjs-landing/prompts/quality.md +269 -0
- package/bundles/nextjs-landing/sentry.edge.config.ts +15 -0
- package/bundles/nextjs-landing/sentry.server.config.ts +15 -0
- package/bundles/nextjs-landing/tsconfig.json +42 -0
- package/bundles/nextjs-landing/vendor/m2ai-braces-3.0.3-m2ai.1.tar +0 -0
- package/bundles/nextjs-saas/.agents/skills/lattice-feature-handoff/SKILL.md +31 -0
- package/bundles/nextjs-saas/.agents/skills/lattice-release-manager/SKILL.md +29 -0
- package/bundles/nextjs-saas/.agents/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/nextjs-saas/.claude/agents/lattice-feature-agent.md +10 -0
- package/bundles/nextjs-saas/.claude/agents/lattice-release-manager.md +9 -0
- package/bundles/nextjs-saas/.claude/hooks/README.md +9 -0
- package/bundles/nextjs-saas/.claude/hooks/pre-commit-verify.mjs +10 -0
- package/bundles/nextjs-saas/.claude/hooks/pre-tool-use.mjs +51 -0
- package/bundles/nextjs-saas/.claude/rules/lattice-core.md +20 -0
- package/bundles/nextjs-saas/.claude/settings.json +38 -0
- package/bundles/nextjs-saas/.claude/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/nextjs-saas/.codex/agents/lattice-feature-agent.toml +9 -0
- package/bundles/nextjs-saas/.codex/agents/lattice-release-manager.toml +9 -0
- package/bundles/nextjs-saas/.cursor/mcp.json +34 -0
- package/bundles/nextjs-saas/.cursor/rules/lattice-core.mdc +35 -0
- package/bundles/nextjs-saas/.cursor/rules.md +95 -0
- package/bundles/nextjs-saas/.env.example +48 -0
- package/bundles/nextjs-saas/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- package/bundles/nextjs-saas/.github/agents/lattice-feature-agent.agent.md +7 -0
- package/bundles/nextjs-saas/.github/agents/lattice-release-manager.agent.md +7 -0
- package/bundles/nextjs-saas/.github/copilot-instructions.md +37 -0
- package/bundles/nextjs-saas/.github/instructions/lattice-core.instructions.md +11 -0
- package/bundles/nextjs-saas/.github/workflows/ci.yml +26 -0
- package/bundles/nextjs-saas/.gitmessage +24 -0
- package/bundles/nextjs-saas/.lattice/config.json +9 -0
- package/bundles/nextjs-saas/.lattice/dependency-security.json +46 -0
- package/bundles/nextjs-saas/.lattice/prompts/01-feature.md +36 -0
- package/bundles/nextjs-saas/.lattice/prompts/02-bugfix.md +32 -0
- package/bundles/nextjs-saas/.lattice/prompts/03-refactor.md +30 -0
- package/bundles/nextjs-saas/.lattice/prompts/04-test.md +31 -0
- package/bundles/nextjs-saas/.lattice/prompts/05-polish.md +38 -0
- package/bundles/nextjs-saas/.lattice/prompts/06-security.md +32 -0
- package/bundles/nextjs-saas/.lattice/prompts/quality.md +269 -0
- package/bundles/nextjs-saas/.lattice/release-workflow.json +55 -0
- package/bundles/nextjs-saas/.lattice/schemas/feature-handoff.schema.json +264 -0
- package/bundles/nextjs-saas/.lattice/templates/feature-handoff.json +52 -0
- package/bundles/nextjs-saas/.mcp.json +35 -0
- package/bundles/nextjs-saas/AGENTS.md +58 -0
- package/bundles/nextjs-saas/CLAUDE.md +76 -0
- package/bundles/nextjs-saas/PROJECT_GUIDE.md +279 -0
- package/bundles/nextjs-saas/README.md +42 -0
- package/bundles/nextjs-saas/app/(auth)/forgot-password/page.tsx +101 -0
- package/bundles/nextjs-saas/app/(auth)/layout.tsx +7 -0
- package/bundles/nextjs-saas/app/(auth)/login/page.tsx +108 -0
- package/bundles/nextjs-saas/app/(auth)/reset-password/page.tsx +135 -0
- package/bundles/nextjs-saas/app/(auth)/signup/page.tsx +144 -0
- package/bundles/nextjs-saas/app/(dashboard)/dashboard/page.tsx +80 -0
- package/bundles/nextjs-saas/app/(dashboard)/layout.tsx +49 -0
- package/bundles/nextjs-saas/app/api/billing/checkout/route.ts +47 -0
- package/bundles/nextjs-saas/app/api/billing/portal/route.ts +29 -0
- package/bundles/nextjs-saas/app/api/example/[id]/route.ts +93 -0
- package/bundles/nextjs-saas/app/api/example/route.ts +61 -0
- package/bundles/nextjs-saas/app/api/health/route.ts +8 -0
- package/bundles/nextjs-saas/app/api/stripe/webhook/route.ts +57 -0
- package/bundles/nextjs-saas/app/api/user/route.ts +49 -0
- package/bundles/nextjs-saas/app/auth/callback/route.ts +16 -0
- package/bundles/nextjs-saas/app/auth/signout/route.ts +10 -0
- package/bundles/nextjs-saas/app/global-error.tsx +17 -0
- package/bundles/nextjs-saas/app/globals.css +55 -0
- package/bundles/nextjs-saas/app/layout.tsx +22 -0
- package/bundles/nextjs-saas/app/page.tsx +84 -0
- package/bundles/nextjs-saas/components/ui/button.tsx +39 -0
- package/bundles/nextjs-saas/components/ui/card.tsx +53 -0
- package/bundles/nextjs-saas/components/ui/index.ts +4 -0
- package/bundles/nextjs-saas/components/ui/input.tsx +23 -0
- package/bundles/nextjs-saas/components/ui/spinner.tsx +22 -0
- package/bundles/nextjs-saas/docs/LATTICE_RELEASE_WORKFLOW.md +53 -0
- package/bundles/nextjs-saas/docs/rules/codex.md +62 -0
- package/bundles/nextjs-saas/eslint.config.mjs +16 -0
- package/bundles/nextjs-saas/instrumentation-client.ts +30 -0
- package/bundles/nextjs-saas/instrumentation.ts +12 -0
- package/bundles/nextjs-saas/jest.config.mjs +16 -0
- package/bundles/nextjs-saas/jest.setup.js +1 -0
- package/bundles/nextjs-saas/lib/auth/password-recovery.ts +94 -0
- package/bundles/nextjs-saas/lib/stripe.ts +10 -0
- package/bundles/nextjs-saas/lib/supabase/admin.ts +14 -0
- package/bundles/nextjs-saas/lib/supabase/client.ts +8 -0
- package/bundles/nextjs-saas/lib/supabase/server.ts +27 -0
- package/bundles/nextjs-saas/lib/utils.ts +6 -0
- package/bundles/nextjs-saas/next-env.d.ts +5 -0
- package/bundles/nextjs-saas/next.config.ts +15 -0
- package/bundles/nextjs-saas/package.json +50 -0
- package/bundles/nextjs-saas/postcss.config.mjs +7 -0
- package/bundles/nextjs-saas/prompts/01-feature-implementation.md +92 -0
- package/bundles/nextjs-saas/prompts/02-bug-fix.md +78 -0
- package/bundles/nextjs-saas/prompts/03-safe-refactor.md +82 -0
- package/bundles/nextjs-saas/prompts/04-test-first.md +80 -0
- package/bundles/nextjs-saas/prompts/05-ui-polish.md +82 -0
- package/bundles/nextjs-saas/prompts/06-security-review.md +74 -0
- package/bundles/nextjs-saas/proxy.ts +61 -0
- package/bundles/nextjs-saas/sentry.edge.config.ts +15 -0
- package/bundles/nextjs-saas/sentry.server.config.ts +15 -0
- package/bundles/nextjs-saas/supabase/migrations/001_initial_schema.sql +66 -0
- package/bundles/nextjs-saas/supabase/migrations/002_billing.sql +17 -0
- package/bundles/nextjs-saas/tsconfig.json +42 -0
- package/bundles/nextjs-saas/types/database.types.ts +76 -0
- package/bundles/nextjs-saas/vendor/m2ai-braces-3.0.3-m2ai.1.tar +0 -0
- package/bundles/nextjs-trpc/.agents/skills/lattice-feature-handoff/SKILL.md +31 -0
- package/bundles/nextjs-trpc/.agents/skills/lattice-release-manager/SKILL.md +29 -0
- package/bundles/nextjs-trpc/.agents/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/nextjs-trpc/.claude/agents/lattice-feature-agent.md +10 -0
- package/bundles/nextjs-trpc/.claude/agents/lattice-release-manager.md +9 -0
- package/bundles/nextjs-trpc/.claude/hooks/README.md +9 -0
- package/bundles/nextjs-trpc/.claude/hooks/pre-commit-verify.mjs +10 -0
- package/bundles/nextjs-trpc/.claude/hooks/pre-tool-use.mjs +51 -0
- package/bundles/nextjs-trpc/.claude/rules/lattice-core.md +20 -0
- package/bundles/nextjs-trpc/.claude/settings.json +38 -0
- package/bundles/nextjs-trpc/.claude/skills/lattice-verify/SKILL.md +27 -0
- package/bundles/nextjs-trpc/.codex/agents/lattice-feature-agent.toml +9 -0
- package/bundles/nextjs-trpc/.codex/agents/lattice-release-manager.toml +9 -0
- package/bundles/nextjs-trpc/.cursor/mcp.json +34 -0
- package/bundles/nextjs-trpc/.cursor/rules/lattice-core.mdc +35 -0
- package/bundles/nextjs-trpc/.cursor/rules.md +95 -0
- package/bundles/nextjs-trpc/.env.example +21 -0
- package/bundles/nextjs-trpc/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- package/bundles/nextjs-trpc/.github/agents/lattice-feature-agent.agent.md +7 -0
- package/bundles/nextjs-trpc/.github/agents/lattice-release-manager.agent.md +7 -0
- package/bundles/nextjs-trpc/.github/copilot-instructions.md +37 -0
- package/bundles/nextjs-trpc/.github/instructions/lattice-core.instructions.md +11 -0
- package/bundles/nextjs-trpc/.github/workflows/ci.yml +26 -0
- package/bundles/nextjs-trpc/.gitmessage +24 -0
- package/bundles/nextjs-trpc/.lattice/config.json +9 -0
- package/bundles/nextjs-trpc/.lattice/dependency-security.json +46 -0
- package/bundles/nextjs-trpc/.lattice/prompts/01-feature.md +36 -0
- package/bundles/nextjs-trpc/.lattice/prompts/02-bugfix.md +32 -0
- package/bundles/nextjs-trpc/.lattice/prompts/03-refactor.md +30 -0
- package/bundles/nextjs-trpc/.lattice/prompts/04-test.md +31 -0
- package/bundles/nextjs-trpc/.lattice/prompts/05-polish.md +38 -0
- package/bundles/nextjs-trpc/.lattice/prompts/06-security.md +32 -0
- package/bundles/nextjs-trpc/.lattice/release-workflow.json +55 -0
- package/bundles/nextjs-trpc/.lattice/schemas/feature-handoff.schema.json +264 -0
- package/bundles/nextjs-trpc/.lattice/templates/feature-handoff.json +52 -0
- package/bundles/nextjs-trpc/.mcp.json +35 -0
- package/bundles/nextjs-trpc/AGENTS.md +58 -0
- package/bundles/nextjs-trpc/CLAUDE.md +76 -0
- package/bundles/nextjs-trpc/PROJECT_GUIDE.md +187 -0
- package/bundles/nextjs-trpc/README.md +49 -0
- package/bundles/nextjs-trpc/app/api/trpc/[trpc]/route.ts +12 -0
- package/bundles/nextjs-trpc/app/global-error.tsx +17 -0
- package/bundles/nextjs-trpc/app/globals.css +55 -0
- package/bundles/nextjs-trpc/app/layout.tsx +19 -0
- package/bundles/nextjs-trpc/app/page.tsx +16 -0
- package/bundles/nextjs-trpc/app/providers.tsx +24 -0
- package/bundles/nextjs-trpc/components/ui/button.tsx +39 -0
- package/bundles/nextjs-trpc/components/ui/card.tsx +53 -0
- package/bundles/nextjs-trpc/components/ui/index.ts +4 -0
- package/bundles/nextjs-trpc/components/ui/input.tsx +23 -0
- package/bundles/nextjs-trpc/components/ui/spinner.tsx +22 -0
- package/bundles/nextjs-trpc/components/user-list.tsx +17 -0
- package/bundles/nextjs-trpc/docs/LATTICE_RELEASE_WORKFLOW.md +53 -0
- package/bundles/nextjs-trpc/docs/rules/codex.md +62 -0
- package/bundles/nextjs-trpc/eslint.config.mjs +16 -0
- package/bundles/nextjs-trpc/instrumentation-client.ts +20 -0
- package/bundles/nextjs-trpc/instrumentation.ts +12 -0
- package/bundles/nextjs-trpc/jest.config.mjs +16 -0
- package/bundles/nextjs-trpc/jest.setup.js +1 -0
- package/bundles/nextjs-trpc/lib/db.ts +17 -0
- package/bundles/nextjs-trpc/lib/trpc/react.tsx +7 -0
- package/bundles/nextjs-trpc/lib/utils.ts +6 -0
- package/bundles/nextjs-trpc/next-env.d.ts +5 -0
- package/bundles/nextjs-trpc/next.config.ts +15 -0
- package/bundles/nextjs-trpc/package.json +62 -0
- package/bundles/nextjs-trpc/postcss.config.mjs +7 -0
- package/bundles/nextjs-trpc/prisma/schema.prisma +41 -0
- package/bundles/nextjs-trpc/prisma.config.ts +10 -0
- package/bundles/nextjs-trpc/prompts/01-feature-implementation.md +9 -0
- package/bundles/nextjs-trpc/prompts/02-bug-fix.md +9 -0
- package/bundles/nextjs-trpc/prompts/03-safe-refactor.md +8 -0
- package/bundles/nextjs-trpc/prompts/04-test-first.md +8 -0
- package/bundles/nextjs-trpc/prompts/05-ui-polish.md +7 -0
- package/bundles/nextjs-trpc/prompts/06-security-review.md +7 -0
- package/bundles/nextjs-trpc/prompts/quality.md +269 -0
- package/bundles/nextjs-trpc/sentry.edge.config.ts +15 -0
- package/bundles/nextjs-trpc/sentry.server.config.ts +15 -0
- package/bundles/nextjs-trpc/server/routers/_app.test.ts +60 -0
- package/bundles/nextjs-trpc/server/routers/_app.ts +25 -0
- package/bundles/nextjs-trpc/server/trpc.ts +12 -0
- package/bundles/nextjs-trpc/tsconfig.json +42 -0
- package/bundles/nextjs-trpc/vendor/m2ai-braces-3.0.3-m2ai.1.tar +0 -0
- package/dist/agent-install-session.d.ts +17 -0
- package/dist/agent-install-session.d.ts.map +1 -0
- package/dist/agent-install-session.js +106 -0
- package/dist/agent-install-session.js.map +1 -0
- package/dist/agent-install-session.test.d.ts +2 -0
- package/dist/agent-install-session.test.d.ts.map +1 -0
- package/dist/agent-install-session.test.js +62 -0
- package/dist/agent-install-session.test.js.map +1 -0
- package/dist/agent-install.d.ts +41 -0
- package/dist/agent-install.d.ts.map +1 -0
- package/dist/agent-install.js +42 -0
- package/dist/agent-install.js.map +1 -0
- package/dist/agent-install.test.d.ts +2 -0
- package/dist/agent-install.test.d.ts.map +1 -0
- package/dist/agent-install.test.js +58 -0
- package/dist/agent-install.test.js.map +1 -0
- package/dist/apply-merge.test.d.ts +2 -0
- package/dist/apply-merge.test.d.ts.map +1 -0
- package/dist/apply-merge.test.js +123 -0
- package/dist/apply-merge.test.js.map +1 -0
- package/dist/bundle-download.d.ts +23 -0
- package/dist/bundle-download.d.ts.map +1 -0
- package/dist/bundle-download.js +180 -0
- package/dist/bundle-download.js.map +1 -0
- package/dist/bundle-download.test.d.ts +2 -0
- package/dist/bundle-download.test.d.ts.map +1 -0
- package/dist/bundle-download.test.js +200 -0
- package/dist/bundle-download.test.js.map +1 -0
- package/dist/bundle-rollback.test.d.ts +2 -0
- package/dist/bundle-rollback.test.d.ts.map +1 -0
- package/dist/bundle-rollback.test.js +127 -0
- package/dist/bundle-rollback.test.js.map +1 -0
- package/dist/bundle-scaffold.test.d.ts +2 -0
- package/dist/bundle-scaffold.test.d.ts.map +1 -0
- package/dist/bundle-scaffold.test.js +105 -0
- package/dist/bundle-scaffold.test.js.map +1 -0
- package/dist/commands.d.ts +132 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +2012 -0
- package/dist/commands.js.map +1 -0
- package/dist/credential-store.d.ts +27 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +48 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/credential-store.test.d.ts +2 -0
- package/dist/credential-store.test.d.ts.map +1 -0
- package/dist/credential-store.test.js +80 -0
- package/dist/credential-store.test.js.map +1 -0
- package/dist/delivered-project-files.d.ts +31 -0
- package/dist/delivered-project-files.d.ts.map +1 -0
- package/dist/delivered-project-files.js +158 -0
- package/dist/delivered-project-files.js.map +1 -0
- package/dist/delivered-project-files.test.d.ts +2 -0
- package/dist/delivered-project-files.test.d.ts.map +1 -0
- package/dist/delivered-project-files.test.js +107 -0
- package/dist/delivered-project-files.test.js.map +1 -0
- package/dist/doctor-agents.test.d.ts +2 -0
- package/dist/doctor-agents.test.d.ts.map +1 -0
- package/dist/doctor-agents.test.js +65 -0
- package/dist/doctor-agents.test.js.map +1 -0
- package/dist/hermes-install.d.ts +102 -0
- package/dist/hermes-install.d.ts.map +1 -0
- package/dist/hermes-install.js +641 -0
- package/dist/hermes-install.js.map +1 -0
- package/dist/hermes-install.test.d.ts +2 -0
- package/dist/hermes-install.test.d.ts.map +1 -0
- package/dist/hermes-install.test.js +866 -0
- package/dist/hermes-install.test.js.map +1 -0
- package/dist/index.d.ts +115 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5311 -0
- package/dist/index.js.map +1 -0
- package/dist/openclaw-install.d.ts +67 -0
- package/dist/openclaw-install.d.ts.map +1 -0
- package/dist/openclaw-install.js +358 -0
- package/dist/openclaw-install.js.map +1 -0
- package/dist/openclaw-install.test.d.ts +2 -0
- package/dist/openclaw-install.test.d.ts.map +1 -0
- package/dist/openclaw-install.test.js +296 -0
- package/dist/openclaw-install.test.js.map +1 -0
- package/dist/password-recovery-bundle.test.d.ts +2 -0
- package/dist/password-recovery-bundle.test.d.ts.map +1 -0
- package/dist/password-recovery-bundle.test.js +132 -0
- package/dist/password-recovery-bundle.test.js.map +1 -0
- package/dist/project-bundle-env.d.ts +19 -0
- package/dist/project-bundle-env.d.ts.map +1 -0
- package/dist/project-bundle-env.js +111 -0
- package/dist/project-bundle-env.js.map +1 -0
- package/dist/project-bundle-env.test.d.ts +2 -0
- package/dist/project-bundle-env.test.d.ts.map +1 -0
- package/dist/project-bundle-env.test.js +93 -0
- package/dist/project-bundle-env.test.js.map +1 -0
- package/dist/project-path-confinement.test.d.ts +2 -0
- package/dist/project-path-confinement.test.d.ts.map +1 -0
- package/dist/project-path-confinement.test.js +222 -0
- package/dist/project-path-confinement.test.js.map +1 -0
- package/dist/security/api.d.ts +18 -0
- package/dist/security/api.d.ts.map +1 -0
- package/dist/security/api.js +238 -0
- package/dist/security/api.js.map +1 -0
- package/dist/security/api.test.d.ts +2 -0
- package/dist/security/api.test.d.ts.map +1 -0
- package/dist/security/api.test.js +220 -0
- package/dist/security/api.test.js.map +1 -0
- package/dist/security/artifact.d.ts +10 -0
- package/dist/security/artifact.d.ts.map +1 -0
- package/dist/security/artifact.js +283 -0
- package/dist/security/artifact.js.map +1 -0
- package/dist/security/artifact.test.d.ts +2 -0
- package/dist/security/artifact.test.d.ts.map +1 -0
- package/dist/security/artifact.test.js +229 -0
- package/dist/security/artifact.test.js.map +1 -0
- package/dist/security/commands.d.ts +42 -0
- package/dist/security/commands.d.ts.map +1 -0
- package/dist/security/commands.js +825 -0
- package/dist/security/commands.js.map +1 -0
- package/dist/security/commands.test.d.ts +2 -0
- package/dist/security/commands.test.d.ts.map +1 -0
- package/dist/security/commands.test.js +1051 -0
- package/dist/security/commands.test.js.map +1 -0
- package/dist/security/connection.d.ts +19 -0
- package/dist/security/connection.d.ts.map +1 -0
- package/dist/security/connection.js +145 -0
- package/dist/security/connection.js.map +1 -0
- package/dist/security/connection.test.d.ts +2 -0
- package/dist/security/connection.test.d.ts.map +1 -0
- package/dist/security/connection.test.js +62 -0
- package/dist/security/connection.test.js.map +1 -0
- package/dist/security/index-routing.test.d.ts +2 -0
- package/dist/security/index-routing.test.d.ts.map +1 -0
- package/dist/security/index-routing.test.js +169 -0
- package/dist/security/index-routing.test.js.map +1 -0
- package/dist/security/journal.d.ts +26 -0
- package/dist/security/journal.d.ts.map +1 -0
- package/dist/security/journal.js +441 -0
- package/dist/security/journal.js.map +1 -0
- package/dist/security/journal.test.d.ts +2 -0
- package/dist/security/journal.test.d.ts.map +1 -0
- package/dist/security/journal.test.js +226 -0
- package/dist/security/journal.test.js.map +1 -0
- package/dist/security/package-verifier.d.ts +15 -0
- package/dist/security/package-verifier.d.ts.map +1 -0
- package/dist/security/package-verifier.js +65 -0
- package/dist/security/package-verifier.js.map +1 -0
- package/dist/security/package-verifier.test.d.ts +2 -0
- package/dist/security/package-verifier.test.d.ts.map +1 -0
- package/dist/security/package-verifier.test.js +57 -0
- package/dist/security/package-verifier.test.js.map +1 -0
- package/dist/security/runtime.d.ts +43 -0
- package/dist/security/runtime.d.ts.map +1 -0
- package/dist/security/runtime.js +81 -0
- package/dist/security/runtime.js.map +1 -0
- package/dist/security/runtime.test.d.ts +2 -0
- package/dist/security/runtime.test.d.ts.map +1 -0
- package/dist/security/runtime.test.js +88 -0
- package/dist/security/runtime.test.js.map +1 -0
- package/dist/security/types.d.ts +169 -0
- package/dist/security/types.d.ts.map +1 -0
- package/dist/security/types.js +3 -0
- package/dist/security/types.js.map +1 -0
- package/dist/security-runtime/LICENSE +202 -0
- package/dist/security-runtime/NOTICE +16 -0
- package/dist/security-runtime/artifact-manifest.json +960 -0
- package/dist/security-runtime/bin/vsg.mjs +5 -0
- package/dist/security-runtime/lattice-catalog.json +176585 -0
- package/dist/security-runtime/lattice-runtime.mjs +90 -0
- package/dist/security-runtime/licensing/candidates/apache-source-license-evidence.json +478 -0
- package/dist/security-runtime/licensing/candidates/betterleaks-generic-api-key.json +76 -0
- package/dist/security-runtime/licensing/candidates/betterleaks-jwt.json +74 -0
- package/dist/security-runtime/licensing/candidates/blackberry-additional-source-declaration-evidence.json +276 -0
- package/dist/security-runtime/licensing/candidates/blackberry-source-declaration-evidence.json +369 -0
- package/dist/security-runtime/licensing/candidates/cado-source-declaration-evidence.json +283 -0
- package/dist/security-runtime/licensing/candidates/commercial-rule-candidate.json +280 -0
- package/dist/security-runtime/licensing/candidates/commercial-runtime-release.json +389 -0
- package/dist/security-runtime/licensing/candidates/data-feed-evidence.json +259 -0
- package/dist/security-runtime/licensing/candidates/gitlab-sast-rule-identities.json +178 -0
- package/dist/security-runtime/licensing/candidates/gitlab-sast-source-evidence.json +1824 -0
- package/dist/security-runtime/licensing/candidates/gitlab-sast-source-notice-bundle.json +45 -0
- package/dist/security-runtime/licensing/candidates/malpedia-source-license-evidence.json +41 -0
- package/dist/security-runtime/licensing/candidates/rule-license-evidence.json +376 -0
- package/dist/security-runtime/licensing/candidates/runner-image-composition.json +1500 -0
- package/dist/security-runtime/licensing/candidates/selected-runtime-coverage.json +91 -0
- package/dist/security-runtime/licensing/candidates/yara-forge-20260927.json +58502 -0
- package/dist/security-runtime/licensing/commercial-components.json +379 -0
- package/dist/security-runtime/licensing/notices/betterleaks-1.9.0-MIT.txt +21 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/28a9529c7d0bb4dc51f4bf5c116a3d16ef247a052f7591466768ddf563fd1cf5.txt +428 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/33acf42afdd03163d75fe856cb431e70710e0b5deede3362e6d1c4697cfe1c6a.txt +28 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986.txt +674 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/4fecb8fcaf80fd9a6315bca5225ee43377015b46a0459c2925495be885cab19a.txt +21 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/811515f8723aa4007de2fbb75a364127fdec51cda534b87a7ea8f2fef2f96dd7.txt +24 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/814442c3987a2c0411171ad8ad43118e8c08f85c9c5d1dcdecc9787c7ca8689b.txt +664 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/8a959b2413d0c83ca1b3ce9153076c649abf2e4bbfebbb493fb24c2074a1eb8a.txt +38 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/995182e185856186fbbe49f150409ae026aa4cda7e94f83c6ed737cbb77fa9c7.txt +23 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/9b8e1305e46d1dd4011b6ed933c9f6223e08c9c4625001c5fd75a34fa930f616.txt +202 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/a01f1a28424bfe7f49a23d339a01847cfa9ace3864d5e7295051772a4bae2271.txt +38 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/a5681bf9b05db14d86776930017c647ad9e6e56ff6bbcfdf21e5848288dfaf1b.txt +165 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/a5b8bd9ae96c630bbf229d61c5c5def20274e00be39abfd2fab4d7879ceab462.txt +24 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/ada32b3747ce108d5e8bab7918af94abbd03f2fe2a46304f74c6333bbfd914ed.txt +8 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4.txt +201 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/c738ae413cf561f174e34f6961f8ca458aae2369a73640dda6234c629b98bcc4.txt +2732 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/ce41c9a2c986277f7f9ab146a2195c1888a5d8da062e22d7c9c88666bb7c38cd.txt +17 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/d5f4c36a0528e01cfdd9e4fc60879201d3af49b41c520200643d321fe53da5f9.txt +17 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/e08c368ccd455f85c7fb9e04830e730f26e9dbb5c0f77bc88e09a5b0cb37df5b.txt +38 -0
- package/dist/security-runtime/licensing/notices/candidate-sources/sha256/e9efb2f7daf11bb6379c06c16b870dddcecc4a10f8704bb8aad807529c8b3c97.txt +8 -0
- package/dist/security-runtime/licensing/notices/gitleaks-generic-origin-782f3104-MIT.txt +21 -0
- package/dist/security-runtime/package.json +17 -0
- package/dist/security-runtime/playbook/README.md +76 -0
- package/dist/security-runtime/playbook/access-control.md +56 -0
- package/dist/security-runtime/playbook/ai-features.md +53 -0
- package/dist/security-runtime/playbook/desktop-python.md +59 -0
- package/dist/security-runtime/playbook/input-handling.md +59 -0
- package/dist/security-runtime/playbook/mobile-expo.md +59 -0
- package/dist/security-runtime/playbook/payments.md +53 -0
- package/dist/security-runtime/playbook/privacy-account-recovery.md +59 -0
- package/dist/security-runtime/playbook/secrets-config.md +47 -0
- package/dist/security-runtime/playbook/supabase.md +48 -0
- package/dist/security-runtime/playbook/supply-chain.md +62 -0
- package/dist/security-runtime/playbook/webhooks-integrations.md +52 -0
- package/dist/security-runtime/rules/vsg-ai-key-in-client.yaml +41 -0
- package/dist/security-runtime/rules/vsg-ai-output-raw-html.yaml +35 -0
- package/dist/security-runtime/rules/vsg-angular-sanitizer-bypass.yaml +23 -0
- package/dist/security-runtime/rules/vsg-expo-token-in-asyncstorage.yaml +22 -0
- package/dist/security-runtime/rules/vsg-flask-public-bind.yaml +32 -0
- package/dist/security-runtime/rules/vsg-nextjs-action-write-no-auth.yaml +144 -0
- package/dist/security-runtime/rules/vsg-nextjs-inline-action-write-no-auth.yaml +161 -0
- package/dist/security-runtime/rules/vsg-nextjs-route-write-no-auth.yaml +193 -0
- package/dist/security-runtime/rules/vsg-nosql-where-injection.yaml +36 -0
- package/dist/security-runtime/rules/vsg-python-pickle-load.yaml +26 -0
- package/dist/security-runtime/rules/vsg-python-requests-verify-false.yaml +34 -0
- package/dist/security-runtime/rules/vsg-python-subprocess-shell.yaml +23 -0
- package/dist/security-runtime/rules/vsg-stripe-client-price.yaml +51 -0
- package/dist/security-runtime/rules/vsg-stripe-webhook-no-signature.yaml +31 -0
- package/dist/security-runtime/rules/vsg-stripe-webhook-pages-no-signature.yaml +51 -0
- package/dist/security-runtime/rules/vsg-supabase-service-role-in-client.yaml +27 -0
- package/dist/security-runtime/rules/vsg-supabase-service-role-public-env.yaml +24 -0
- package/dist/security-runtime/rules/vsg-xml-external-entities.yaml +19 -0
- package/dist/security-runtime/src/agent/brief.mjs +95 -0
- package/dist/security-runtime/src/agent/discover.mjs +108 -0
- package/dist/security-runtime/src/agent/exec.mjs +64 -0
- package/dist/security-runtime/src/agent/ingest.mjs +213 -0
- package/dist/security-runtime/src/agent/report.mjs +94 -0
- package/dist/security-runtime/src/agent/schema.mjs +62 -0
- package/dist/security-runtime/src/agent/tokenize.mjs +38 -0
- package/dist/security-runtime/src/checks/README.md +8 -0
- package/dist/security-runtime/src/checks/_lib/gitfiles.mjs +35 -0
- package/dist/security-runtime/src/checks/_lib/lockfiles.mjs +135 -0
- package/dist/security-runtime/src/checks/_lib/osv.mjs +6 -0
- package/dist/security-runtime/src/checks/_lib/secrets.mjs +381 -0
- package/dist/security-runtime/src/checks/_lib/targets.mjs +79 -0
- package/dist/security-runtime/src/checks/agent-review/index.mjs +52 -0
- package/dist/security-runtime/src/checks/agent-surface/config.mjs +223 -0
- package/dist/security-runtime/src/checks/agent-surface/index.mjs +113 -0
- package/dist/security-runtime/src/checks/agent-surface/instructions.mjs +87 -0
- package/dist/security-runtime/src/checks/agent-surface/patterns.mjs +68 -0
- package/dist/security-runtime/src/checks/agent-surface/unicode.mjs +88 -0
- package/dist/security-runtime/src/checks/code/auth-helpers.mjs +659 -0
- package/dist/security-runtime/src/checks/code/index.mjs +617 -0
- package/dist/security-runtime/src/checks/code/opengrep-container.mjs +85 -0
- package/dist/security-runtime/src/checks/code/opengrep-runner.mjs +86 -0
- package/dist/security-runtime/src/checks/code/selected-opengrep-runner.mjs +112 -0
- package/dist/security-runtime/src/checks/dep-change/guarddog.mjs +142 -0
- package/dist/security-runtime/src/checks/dep-change/index.mjs +316 -0
- package/dist/security-runtime/src/checks/dep-change/registries.mjs +199 -0
- package/dist/security-runtime/src/checks/deps-vuln/index.mjs +305 -0
- package/dist/security-runtime/src/checks/desktop-config/index.mjs +112 -0
- package/dist/security-runtime/src/checks/dns-mail/index.mjs +71 -0
- package/dist/security-runtime/src/checks/iac/index.mjs +83 -0
- package/dist/security-runtime/src/checks/install-posture/index.mjs +123 -0
- package/dist/security-runtime/src/checks/licenses/index.mjs +143 -0
- package/dist/security-runtime/src/checks/live-basic/index.mjs +77 -0
- package/dist/security-runtime/src/checks/live-js-secrets/index.mjs +100 -0
- package/dist/security-runtime/src/checks/malware/clamav.mjs +17 -0
- package/dist/security-runtime/src/checks/malware/defender.mjs +43 -0
- package/dist/security-runtime/src/checks/malware/index.mjs +186 -0
- package/dist/security-runtime/src/checks/malware/targets.mjs +147 -0
- package/dist/security-runtime/src/checks/malware/yara-runner.mjs +201 -0
- package/dist/security-runtime/src/checks/malware/yara.mjs +124 -0
- package/dist/security-runtime/src/checks/mobile-config/index.mjs +173 -0
- package/dist/security-runtime/src/checks/mobile-config/mobsf.mjs +105 -0
- package/dist/security-runtime/src/checks/posture/index.mjs +133 -0
- package/dist/security-runtime/src/checks/project-scripts/index.mjs +187 -0
- package/dist/security-runtime/src/checks/sbom/index.mjs +98 -0
- package/dist/security-runtime/src/checks/secrets-build/index.mjs +63 -0
- package/dist/security-runtime/src/checks/secrets-history/index.mjs +112 -0
- package/dist/security-runtime/src/checks/secrets-tree/env.mjs +120 -0
- package/dist/security-runtime/src/checks/secrets-tree/index.mjs +73 -0
- package/dist/security-runtime/src/checks/supabase-static/index.mjs +240 -0
- package/dist/security-runtime/src/checks/supabase-static/sql.mjs +557 -0
- package/dist/security-runtime/src/checks/workflows/index.mjs +93 -0
- package/dist/security-runtime/src/cli/deep.mjs +13 -0
- package/dist/security-runtime/src/cli/doctor.mjs +82 -0
- package/dist/security-runtime/src/cli/index.mjs +60 -0
- package/dist/security-runtime/src/cli/live-common.mjs +27 -0
- package/dist/security-runtime/src/cli/parse.mjs +56 -0
- package/dist/security-runtime/src/cli/portfolio.mjs +34 -0
- package/dist/security-runtime/src/cli/release.mjs +28 -0
- package/dist/security-runtime/src/cli/report.mjs +18 -0
- package/dist/security-runtime/src/cli/run-common.mjs +54 -0
- package/dist/security-runtime/src/cli/scan.mjs +12 -0
- package/dist/security-runtime/src/cli/setup.mjs +59 -0
- package/dist/security-runtime/src/cli/url.mjs +38 -0
- package/dist/security-runtime/src/core/accept.mjs +141 -0
- package/dist/security-runtime/src/core/archive.mjs +114 -0
- package/dist/security-runtime/src/core/base-ref.mjs +43 -0
- package/dist/security-runtime/src/core/checks.mjs +39 -0
- package/dist/security-runtime/src/core/detect.mjs +90 -0
- package/dist/security-runtime/src/core/errors.mjs +5 -0
- package/dist/security-runtime/src/core/fetch.mjs +139 -0
- package/dist/security-runtime/src/core/findings.mjs +177 -0
- package/dist/security-runtime/src/core/gate.mjs +131 -0
- package/dist/security-runtime/src/core/installer.mjs +255 -0
- package/dist/security-runtime/src/core/lock.mjs +38 -0
- package/dist/security-runtime/src/core/nested.mjs +107 -0
- package/dist/security-runtime/src/core/paths.mjs +20 -0
- package/dist/security-runtime/src/core/pipeline.mjs +196 -0
- package/dist/security-runtime/src/core/registry.mjs +81 -0
- package/dist/security-runtime/src/core/report.mjs +128 -0
- package/dist/security-runtime/src/core/runner.mjs +86 -0
- package/dist/security-runtime/src/core/sarif.mjs +141 -0
- package/dist/security-runtime/src/lattice/artifact.mjs +1201 -0
- package/dist/security-runtime/src/lattice/execution.mjs +45 -0
- package/dist/security-runtime/src/lattice/export.mjs +215 -0
- package/dist/security-runtime/src/lattice/provenance.mjs +70 -0
- package/dist/security-runtime/src/lattice/runtime.mjs +158 -0
- package/dist/security-runtime/src/lattice/selected-runtime.mjs +189 -0
- package/dist/security-runtime/src/lattice/source-acquirer.mjs +51 -0
- package/dist/security-runtime/src/lattice/source-fetcher.mjs +88 -0
- package/dist/security-runtime/src/lattice/transport.mjs +232 -0
- package/dist/security-runtime/src/live/analyze.mjs +101 -0
- package/dist/security-runtime/src/live/exposure.mjs +79 -0
- package/dist/security-runtime/src/live/secrets.mjs +31 -0
- package/dist/security-runtime/src/live/session.mjs +98 -0
- package/dist/security-runtime/src/live/targets.mjs +81 -0
- package/dist/security-runtime/src/portfolio/index.mjs +116 -0
- package/dist/security-runtime/tools/registry/betterleaks.json +29 -0
- package/dist/security-runtime/tools/registry/guarddog.json +9 -0
- package/dist/security-runtime/tools/registry/mobsf.json +10 -0
- package/dist/security-runtime/tools/registry/opengrep.json +28 -0
- package/dist/security-runtime/tools/registry/osv-scanner.json +14 -0
- package/dist/security-runtime/tools/registry/semgrep-rules.json +21 -0
- package/dist/security-runtime/tools/registry/trivy.json +30 -0
- package/dist/security-runtime/tools/registry/yara-forge-exclusions.json +14 -0
- package/dist/security-runtime/tools/registry/yara-forge.json +22 -0
- package/dist/security-runtime/tools/registry/yara-runner.json +10 -0
- package/dist/security-runtime/tools/registry/yara-x.json +24 -0
- package/dist/security-runtime/tools/registry/zizmor.json +30 -0
- package/dist/spinner.d.ts +16 -0
- package/dist/spinner.d.ts.map +1 -0
- package/dist/spinner.js +72 -0
- package/dist/spinner.js.map +1 -0
- package/dist/verify.test.d.ts +2 -0
- package/dist/verify.test.d.ts.map +1 -0
- package/dist/verify.test.js +98 -0
- package/dist/verify.test.js.map +1 -0
- package/package.json +73 -4
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Codex Rules
|
|
2
|
+
|
|
3
|
+
Use this file with `AGENTS.md` when you open the project in Codex. `AGENTS.md` is the durable entrypoint; this file is the deeper workflow reference.
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
- **Framework**: Expo
|
|
8
|
+
- **Language**: TypeScript (strict mode)
|
|
9
|
+
- **Styling**: Tailwind CSS
|
|
10
|
+
- **Testing**: Jest + React Testing Library
|
|
11
|
+
|
|
12
|
+
## Operating Rules
|
|
13
|
+
|
|
14
|
+
1. **Stay aligned with PROJECT_GUIDE.md** - implement what was planned before expanding scope
|
|
15
|
+
2. **Prefer small diffs** - keep changes reviewable and localized
|
|
16
|
+
3. **Check existing patterns first** - match the codebase before introducing new structure
|
|
17
|
+
4. **Verify versions and APIs** - do not guess package behavior
|
|
18
|
+
5. **Run verification before handoff** - lint, typecheck, test, build, and verify when available
|
|
19
|
+
6. **Protect secrets** - never commit credentials, tokens, or private keys
|
|
20
|
+
|
|
21
|
+
## Codex Surfaces
|
|
22
|
+
|
|
23
|
+
- `AGENTS.md` is loaded before work begins. Keep it concise and repo-scoped.
|
|
24
|
+
- `docs/rules/codex.md` is the full execution playbook.
|
|
25
|
+
- `.agents/skills/lattice-verify/SKILL.md` is a portable Agent Skill for final verification and release checks.
|
|
26
|
+
- `.mcp.json` contains disabled MCP examples. Enable only the tools the task needs and keep credentials in environment variables.
|
|
27
|
+
- Use hooks or project config for mechanical enforcement; use skills for repeatable procedures.
|
|
28
|
+
|
|
29
|
+
## Workflow
|
|
30
|
+
|
|
31
|
+
1. Read `AGENTS.md` and `PROJECT_GUIDE.md`
|
|
32
|
+
2. Identify the exact files you need to touch
|
|
33
|
+
3. Keep implementation deterministic and production-ready
|
|
34
|
+
4. Use the `lattice-verify` skill when asked to verify, ship, or prepare handoff
|
|
35
|
+
5. Explain risky commands before running them
|
|
36
|
+
6. Note assumptions or follow-ups in your final handoff
|
|
37
|
+
|
|
38
|
+
## Verification Commands
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm run lint
|
|
42
|
+
npm run typecheck
|
|
43
|
+
npm run test
|
|
44
|
+
npm run build
|
|
45
|
+
npm run verify
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Related Files
|
|
49
|
+
|
|
50
|
+
- `.cursor/rules.md` for shared project guardrails
|
|
51
|
+
- `.cursor/rules/lattice-core.mdc` for current Cursor Agent rules
|
|
52
|
+
- `.agents/skills/lattice-verify/SKILL.md` for portable verification workflow
|
|
53
|
+
- `CLAUDE.md` for Claude Code compatibility
|
|
54
|
+
- `.claude/rules/lattice-core.md` for Claude path-scoped code guidance
|
|
55
|
+
- `.claude/settings.json` for Claude Code permissions and hooks
|
|
56
|
+
|
|
57
|
+
## Hard Stops
|
|
58
|
+
|
|
59
|
+
- Requirements conflict with `PROJECT_GUIDE.md`
|
|
60
|
+
- A command would overwrite unrelated user work
|
|
61
|
+
- Required environment variables are missing
|
|
62
|
+
- You cannot verify an API or package behavior
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "react-native-url-polyfill/auto";
|
|
2
|
+
import { createClient } from "@supabase/supabase-js";
|
|
3
|
+
import * as SecureStore from "expo-secure-store";
|
|
4
|
+
|
|
5
|
+
const url = process.env.EXPO_PUBLIC_SUPABASE_URL;
|
|
6
|
+
const anonKey = process.env.EXPO_PUBLIC_SUPABASE_ANON_KEY;
|
|
7
|
+
if (!url || !anonKey) throw new Error("Expo Supabase environment variables are required");
|
|
8
|
+
|
|
9
|
+
const secureStorage = {
|
|
10
|
+
getItem: (key: string) => SecureStore.getItemAsync(key),
|
|
11
|
+
setItem: (key: string, value: string) => SecureStore.setItemAsync(key, value),
|
|
12
|
+
removeItem: (key: string) => SecureStore.deleteItemAsync(key),
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const supabase = createClient(url, anonKey, {
|
|
16
|
+
auth: {
|
|
17
|
+
storage: secureStorage,
|
|
18
|
+
autoRefreshToken: true,
|
|
19
|
+
persistSession: true,
|
|
20
|
+
detectSessionInUrl: false,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { supabase } from "@/lib/supabase/client";
|
|
2
|
+
|
|
3
|
+
export function subscribeToTable(table: string, onChange: (payload: unknown) => void) {
|
|
4
|
+
const channel = supabase
|
|
5
|
+
.channel(`public:${table}`)
|
|
6
|
+
.on("postgres_changes", { event: "*", schema: "public", table }, onChange)
|
|
7
|
+
.subscribe();
|
|
8
|
+
|
|
9
|
+
return () => void supabase.removeChannel(channel);
|
|
10
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { supabase } from "@/lib/supabase/client";
|
|
2
|
+
|
|
3
|
+
export async function uploadFile(bucket: string, path: string, uri: string) {
|
|
4
|
+
const body = await fetch(uri).then((response) => response.arrayBuffer());
|
|
5
|
+
return supabase.storage.from(bucket).upload(path, body, { upsert: false });
|
|
6
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mobile-app-starter",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"main": "expo-router/entry",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"start": "expo start",
|
|
7
|
+
"android": "expo start --android",
|
|
8
|
+
"ios": "expo start --ios",
|
|
9
|
+
"web": "expo start --web",
|
|
10
|
+
"lint": "eslint .",
|
|
11
|
+
"typecheck": "tsc --noEmit",
|
|
12
|
+
"test": "jest --passWithNoTests",
|
|
13
|
+
"verify": "npm run lint && npm run typecheck && npm test"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"expo": "58.0.14",
|
|
17
|
+
"expo-router": "~58.0.20",
|
|
18
|
+
"expo-constants": "~58.0.12",
|
|
19
|
+
"expo-linking": "~58.0.13",
|
|
20
|
+
"expo-secure-store": "~58.0.2",
|
|
21
|
+
"expo-status-bar": "~58.0.3",
|
|
22
|
+
"react": "19.3.0",
|
|
23
|
+
"react-native": "0.88.0",
|
|
24
|
+
"react-native-safe-area-context": "~5.10.1",
|
|
25
|
+
"@supabase/supabase-js": "^2.118.0",
|
|
26
|
+
"react-native-url-polyfill": "^3.0.0",
|
|
27
|
+
"posthog-react-native": "4.81.2",
|
|
28
|
+
"@react-native-async-storage/async-storage": "2.2.0",
|
|
29
|
+
"expo-application": "~58.1.1",
|
|
30
|
+
"expo-device": "~58.0.5",
|
|
31
|
+
"expo-file-system": "58.0.9",
|
|
32
|
+
"expo-localization": "~58.0.4",
|
|
33
|
+
"@sentry/react-native": "8.31.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@expo/config-plugins": "~58.0.9",
|
|
37
|
+
"@types/react": "~19.3.0",
|
|
38
|
+
"typescript": "~6.0.3",
|
|
39
|
+
"eslint": "^9",
|
|
40
|
+
"eslint-config-expo": "58.0.4",
|
|
41
|
+
"jest": "^30.5.2",
|
|
42
|
+
"jest-expo": "~58.0.11",
|
|
43
|
+
"@types/jest": "^30",
|
|
44
|
+
"@testing-library/react-native": "^14.1.0",
|
|
45
|
+
"test-renderer": "^1.3.1",
|
|
46
|
+
"@react-native/jest-preset": "0.88.0",
|
|
47
|
+
"react-server-dom-webpack": "19.3.0",
|
|
48
|
+
"react-dom": "19.3.0"
|
|
49
|
+
},
|
|
50
|
+
"engines": {
|
|
51
|
+
"node": "24.x"
|
|
52
|
+
},
|
|
53
|
+
"overrides": {
|
|
54
|
+
"@istanbuljs/load-nyc-config": {
|
|
55
|
+
"js-yaml": "4.3.2"
|
|
56
|
+
},
|
|
57
|
+
"uuid@<11.1.1": "11.1.1",
|
|
58
|
+
"braces": "file:vendor/m2ai-braces-3.0.3-m2ai.1.tar",
|
|
59
|
+
"node-forge": "https://github.com/matthewscottconroy/forge/archive/db05494352dd3c9a5a07c5270333dcc78866cad2.tar.gz"
|
|
60
|
+
},
|
|
61
|
+
"jest": {
|
|
62
|
+
"preset": "jest-expo",
|
|
63
|
+
"maxWorkers": 2
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const { withProjectBuildGradle } = require("@expo/config-plugins");
|
|
2
|
+
|
|
3
|
+
const EXPECTED_EXPO_FILE_SYSTEM_VERSION = "58.0.9";
|
|
4
|
+
const EXPECTED_REQUESTED_COMMONS_IO_VERSION = "1.4";
|
|
5
|
+
const SELECTED_COMMONS_IO_VERSION = "2.14.0";
|
|
6
|
+
const MARKER = "// LATTICE_COMMONS_IO_2_14_0_GUARD";
|
|
7
|
+
|
|
8
|
+
const resolutionRule = `${MARKER}
|
|
9
|
+
allprojects {
|
|
10
|
+
configurations.configureEach {
|
|
11
|
+
resolutionStrategy.eachDependency { details ->
|
|
12
|
+
if (details.requested.group == "commons-io" && details.requested.name == "commons-io" && details.requested.version == "${EXPECTED_REQUESTED_COMMONS_IO_VERSION}") {
|
|
13
|
+
details.useVersion("${SELECTED_COMMONS_IO_VERSION}")
|
|
14
|
+
details.because("GHSA-gwrp-pvrq-jmwv and CVE-2024-47554")
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}`;
|
|
19
|
+
|
|
20
|
+
module.exports = function withLatticeCommonsIo(config) {
|
|
21
|
+
const actualVersion = require("expo-file-system/package.json").version;
|
|
22
|
+
if (actualVersion !== EXPECTED_EXPO_FILE_SYSTEM_VERSION) {
|
|
23
|
+
throw new Error(
|
|
24
|
+
`Lattice Commons IO guard requires expo-file-system ${EXPECTED_EXPO_FILE_SYSTEM_VERSION}; found ${actualVersion}. Review the native dependency before changing this guard.`,
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return withProjectBuildGradle(config, (projectConfig) => {
|
|
29
|
+
if (projectConfig.modResults.language !== "groovy") {
|
|
30
|
+
throw new Error("Lattice Commons IO guard supports only the generated Groovy project build.gradle.");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const contents = projectConfig.modResults.contents;
|
|
34
|
+
if (!contents.includes(MARKER)) {
|
|
35
|
+
projectConfig.modResults.contents = `${contents.trimEnd()}
|
|
36
|
+
|
|
37
|
+
${resolutionRule}
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
return projectConfig;
|
|
41
|
+
});
|
|
42
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Prompt Recipe: Feature Implementation
|
|
2
|
+
|
|
3
|
+
Use this prompt when adding a new feature to your Expo mobile app.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Role: You are maintaining this Expo React Native application.
|
|
11
|
+
|
|
12
|
+
Goal: Implement [FEATURE NAME] that allows users to [USER GOAL].
|
|
13
|
+
|
|
14
|
+
Constraints:
|
|
15
|
+
- Use Expo Router for navigation
|
|
16
|
+
- Use Supabase for backend operations
|
|
17
|
+
- Follow existing patterns in the codebase
|
|
18
|
+
- Keep components small and focused
|
|
19
|
+
- Use TypeScript strict mode
|
|
20
|
+
- Test on both iOS and Android
|
|
21
|
+
|
|
22
|
+
Context:
|
|
23
|
+
- Database schema: [RELEVANT TABLES]
|
|
24
|
+
- Existing components: [RELATED COMPONENTS]
|
|
25
|
+
- Navigation: [RELATED SCREENS]
|
|
26
|
+
|
|
27
|
+
Files that CAN change:
|
|
28
|
+
- app/[path].tsx
|
|
29
|
+
- components/[name].tsx
|
|
30
|
+
- lib/[module].ts
|
|
31
|
+
|
|
32
|
+
Files that MUST NOT change:
|
|
33
|
+
- lib/supabase.ts (client config)
|
|
34
|
+
- app/_layout.tsx (root layout)
|
|
35
|
+
|
|
36
|
+
Acceptance Criteria:
|
|
37
|
+
- [ ] [CRITERION 1]
|
|
38
|
+
- [ ] [CRITERION 2]
|
|
39
|
+
- [ ] [CRITERION 3]
|
|
40
|
+
- [ ] Works on iOS and Android
|
|
41
|
+
- [ ] `npm run verify` passes
|
|
42
|
+
|
|
43
|
+
Non-goals:
|
|
44
|
+
- Do not add new dependencies without asking
|
|
45
|
+
- Do not refactor unrelated code
|
|
46
|
+
|
|
47
|
+
Deliverable: Working implementation with brief summary of changes.
|
|
48
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Prompt Recipe: Bug Fix
|
|
2
|
+
|
|
3
|
+
Use this prompt when fixing a bug with a clear reproduction.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Role: You are debugging this Expo React Native application.
|
|
11
|
+
|
|
12
|
+
Bug: [DESCRIBE THE BUG]
|
|
13
|
+
|
|
14
|
+
Platform: [iOS / Android / Both]
|
|
15
|
+
|
|
16
|
+
Reproduction Steps:
|
|
17
|
+
1. [STEP 1]
|
|
18
|
+
2. [STEP 2]
|
|
19
|
+
3. [STEP 3]
|
|
20
|
+
|
|
21
|
+
Expected: [WHAT SHOULD HAPPEN]
|
|
22
|
+
Actual: [WHAT HAPPENS INSTEAD]
|
|
23
|
+
|
|
24
|
+
Error (if any):
|
|
25
|
+
[PASTE ERROR MESSAGE OR STACK TRACE]
|
|
26
|
+
|
|
27
|
+
Suspected Files:
|
|
28
|
+
- [FILE 1]
|
|
29
|
+
- [FILE 2]
|
|
30
|
+
|
|
31
|
+
Constraints:
|
|
32
|
+
- Fix only the bug, do not refactor
|
|
33
|
+
- Keep the diff minimal
|
|
34
|
+
- Test on both platforms if applicable
|
|
35
|
+
|
|
36
|
+
Acceptance Criteria:
|
|
37
|
+
- [ ] Bug no longer reproduces
|
|
38
|
+
- [ ] No regression in related functionality
|
|
39
|
+
- [ ] Works on iOS and Android
|
|
40
|
+
- [ ] `npm run verify` passes
|
|
41
|
+
|
|
42
|
+
Deliverable: Minimal fix with explanation of root cause.
|
|
43
|
+
```
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Prompt Recipe: Safe Refactor
|
|
2
|
+
|
|
3
|
+
Use this prompt when refactoring without changing behavior.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Role: You are refactoring this Expo React Native application.
|
|
11
|
+
|
|
12
|
+
Goal: [WHAT YOU WANT TO IMPROVE]
|
|
13
|
+
- Current: [CURRENT STATE]
|
|
14
|
+
- Target: [DESIRED STATE]
|
|
15
|
+
|
|
16
|
+
Scope:
|
|
17
|
+
- Files to refactor: [LIST FILES]
|
|
18
|
+
- Files that must not change: [LIST FILES]
|
|
19
|
+
|
|
20
|
+
Constraints:
|
|
21
|
+
- Behavior must remain identical
|
|
22
|
+
- Keep diffs small and reviewable
|
|
23
|
+
- Test on both platforms after each change
|
|
24
|
+
- Do not add new dependencies
|
|
25
|
+
|
|
26
|
+
Steps:
|
|
27
|
+
1. [STEP 1 - SMALL CHANGE]
|
|
28
|
+
2. [STEP 2 - VERIFY STILL WORKS]
|
|
29
|
+
3. [STEP 3 - NEXT SMALL CHANGE]
|
|
30
|
+
|
|
31
|
+
Acceptance Criteria:
|
|
32
|
+
- [ ] Behavior unchanged (test manually on device)
|
|
33
|
+
- [ ] Code is cleaner/more maintainable
|
|
34
|
+
- [ ] Works on iOS and Android
|
|
35
|
+
- [ ] `npm run verify` passes
|
|
36
|
+
|
|
37
|
+
Deliverable: Refactored code with summary of what changed and why.
|
|
38
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Prompt Recipe: Test-First Development
|
|
2
|
+
|
|
3
|
+
Use this prompt when you want tests written before implementation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Role: You are practicing test-driven development on this Expo React Native app.
|
|
11
|
+
|
|
12
|
+
Feature: [FEATURE NAME]
|
|
13
|
+
|
|
14
|
+
Step 1 — Write failing tests first:
|
|
15
|
+
- Test file: [PATH TO TEST FILE]
|
|
16
|
+
- Test cases:
|
|
17
|
+
1. [TEST CASE 1]
|
|
18
|
+
2. [TEST CASE 2]
|
|
19
|
+
3. [TEST CASE 3]
|
|
20
|
+
|
|
21
|
+
Step 2 — Implement minimal code to pass:
|
|
22
|
+
- Implementation file: [PATH TO IMPLEMENTATION]
|
|
23
|
+
- Keep implementation simple
|
|
24
|
+
|
|
25
|
+
Step 3 — Refactor if needed:
|
|
26
|
+
- Only after tests pass
|
|
27
|
+
- Keep tests passing
|
|
28
|
+
|
|
29
|
+
Constraints:
|
|
30
|
+
- Tests must fail initially (red)
|
|
31
|
+
- Implementation makes tests pass (green)
|
|
32
|
+
- Only then refactor
|
|
33
|
+
- Use Jest + React Native Testing Library
|
|
34
|
+
|
|
35
|
+
Acceptance Criteria:
|
|
36
|
+
- [ ] All tests pass
|
|
37
|
+
- [ ] Tests cover happy path and edge cases
|
|
38
|
+
- [ ] `npm run verify` passes
|
|
39
|
+
|
|
40
|
+
Deliverable: Test file + implementation + brief summary.
|
|
41
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Prompt Recipe: UI Polish Pass
|
|
2
|
+
|
|
3
|
+
Use this prompt when polishing UI details without changing functionality.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Role: You are polishing the UI of this Expo React Native application.
|
|
11
|
+
|
|
12
|
+
Target: [COMPONENT OR SCREEN]
|
|
13
|
+
|
|
14
|
+
Polish areas:
|
|
15
|
+
- [ ] Spacing and alignment
|
|
16
|
+
- [ ] Typography (sizes, weights)
|
|
17
|
+
- [ ] Colors and contrast
|
|
18
|
+
- [ ] Loading states
|
|
19
|
+
- [ ] Empty states
|
|
20
|
+
- [ ] Error states
|
|
21
|
+
- [ ] Touch feedback (opacity, scale)
|
|
22
|
+
- [ ] Safe area handling
|
|
23
|
+
- [ ] Platform-specific styling (iOS vs Android)
|
|
24
|
+
|
|
25
|
+
Constraints:
|
|
26
|
+
- Do not change functionality
|
|
27
|
+
- Do not change component structure
|
|
28
|
+
- Test on both iOS and Android
|
|
29
|
+
- Test on different screen sizes
|
|
30
|
+
|
|
31
|
+
Current issues:
|
|
32
|
+
1. [ISSUE 1]
|
|
33
|
+
2. [ISSUE 2]
|
|
34
|
+
3. [ISSUE 3]
|
|
35
|
+
|
|
36
|
+
Acceptance Criteria:
|
|
37
|
+
- [ ] Visual issues are fixed
|
|
38
|
+
- [ ] Component still functions correctly
|
|
39
|
+
- [ ] Looks good on iPhone SE and iPhone 15 Pro Max
|
|
40
|
+
- [ ] Looks good on small and large Android devices
|
|
41
|
+
- [ ] `npm run verify` passes
|
|
42
|
+
|
|
43
|
+
Deliverable: Polished component with summary of changes.
|
|
44
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Prompt Recipe: Security Review
|
|
2
|
+
|
|
3
|
+
Use this prompt when reviewing code for security issues.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Template
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Role: You are performing a security review of this Expo React Native app.
|
|
11
|
+
|
|
12
|
+
Scope: [FILES OR FEATURES TO REVIEW]
|
|
13
|
+
|
|
14
|
+
Check for:
|
|
15
|
+
- [ ] Insecure storage (AsyncStorage for sensitive data)
|
|
16
|
+
- [ ] Exposed API keys in code
|
|
17
|
+
- [ ] Missing auth checks on screens
|
|
18
|
+
- [ ] Insecure deep link handling
|
|
19
|
+
- [ ] Certificate pinning (if applicable)
|
|
20
|
+
- [ ] Supabase RLS policies
|
|
21
|
+
- [ ] Input validation
|
|
22
|
+
- [ ] Biometric auth implementation
|
|
23
|
+
|
|
24
|
+
Focus areas:
|
|
25
|
+
1. [AREA 1]
|
|
26
|
+
2. [AREA 2]
|
|
27
|
+
|
|
28
|
+
Constraints:
|
|
29
|
+
- Do not fix issues yet, just identify
|
|
30
|
+
- Rank by severity (Critical, High, Medium, Low)
|
|
31
|
+
- Provide specific file and line references
|
|
32
|
+
|
|
33
|
+
Output format:
|
|
34
|
+
| Severity | Issue | File | Line | Recommendation |
|
|
35
|
+
|----------|-------|------|------|----------------|
|
|
36
|
+
| Critical | ... | ... | ... | ... |
|
|
37
|
+
|
|
38
|
+
Deliverable: Security report with prioritized findings.
|
|
39
|
+
```
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Quality & Performance Standards
|
|
2
|
+
|
|
3
|
+
## Performance Rules
|
|
4
|
+
|
|
5
|
+
### Critical
|
|
6
|
+
|
|
7
|
+
1. **Bundle size**
|
|
8
|
+
- Keep JavaScript bundles reasonable
|
|
9
|
+
- Use dynamic imports for code splitting
|
|
10
|
+
- Avoid large libraries when smaller alternatives exist
|
|
11
|
+
- Tree-shake unused code
|
|
12
|
+
|
|
13
|
+
2. **Image optimization**
|
|
14
|
+
- Use optimized image formats
|
|
15
|
+
- Provide appropriate resolutions for devices
|
|
16
|
+
- Lazy load off-screen images
|
|
17
|
+
- Use Expo's Image component
|
|
18
|
+
|
|
19
|
+
3. **Navigation performance**
|
|
20
|
+
- Minimize screen transitions
|
|
21
|
+
- Preload critical screens
|
|
22
|
+
- Avoid heavy computations in render
|
|
23
|
+
|
|
24
|
+
4. **Memory management**
|
|
25
|
+
- Clean up subscriptions in useEffect
|
|
26
|
+
- Avoid memory leaks in listeners
|
|
27
|
+
- Profile with React DevTools
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Accessibility (a11y) Rules
|
|
32
|
+
|
|
33
|
+
### Critical
|
|
34
|
+
|
|
35
|
+
1. **Touchable elements**
|
|
36
|
+
- Minimum touch target: 44×44 points
|
|
37
|
+
- Proper feedback on press
|
|
38
|
+
- Disabled state clearly visible
|
|
39
|
+
|
|
40
|
+
2. **Screen reader support**
|
|
41
|
+
- Add `accessibilityLabel` to interactive elements
|
|
42
|
+
- Use `accessibilityHint` for context
|
|
43
|
+
- Mark decorative elements with `accessibilityRole="none"`
|
|
44
|
+
|
|
45
|
+
3. **Text scaling**
|
|
46
|
+
- Support Dynamic Type/font scaling
|
|
47
|
+
- Test with large text sizes
|
|
48
|
+
- Don't hard-code font sizes
|
|
49
|
+
|
|
50
|
+
4. **Color contrast**
|
|
51
|
+
- Text: minimum 4.5:1 ratio
|
|
52
|
+
- Icons: minimum 3:1 ratio
|
|
53
|
+
- Test in dark mode
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Functionality & Code Quality
|
|
58
|
+
|
|
59
|
+
### Critical
|
|
60
|
+
|
|
61
|
+
1. **Error handling**
|
|
62
|
+
- Catch async errors
|
|
63
|
+
- Show user-friendly messages
|
|
64
|
+
- Log errors to Sentry
|
|
65
|
+
|
|
66
|
+
2. **Loading states**
|
|
67
|
+
- Show spinners during async operations
|
|
68
|
+
- Skeleton screens for lists
|
|
69
|
+
- Pull-to-refresh where appropriate
|
|
70
|
+
|
|
71
|
+
3. **Form validation**
|
|
72
|
+
- Client-side validation for UX
|
|
73
|
+
- Clear error messages
|
|
74
|
+
- Disable submit while processing
|
|
75
|
+
|
|
76
|
+
4. **Keyboard handling**
|
|
77
|
+
- Dismiss keyboard on submit
|
|
78
|
+
- Proper keyboard types (email, number, etc.)
|
|
79
|
+
- Handle keyboard avoidance
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Security Rules
|
|
84
|
+
|
|
85
|
+
### Critical
|
|
86
|
+
|
|
87
|
+
1. **Secure storage**
|
|
88
|
+
- Use SecureStore for sensitive data
|
|
89
|
+
- Never store tokens in AsyncStorage
|
|
90
|
+
- Validate all API responses
|
|
91
|
+
|
|
92
|
+
2. **Environment variables**
|
|
93
|
+
- Never commit secrets
|
|
94
|
+
- Use `expo-constants` for config
|
|
95
|
+
- Validate env vars on startup
|
|
96
|
+
|
|
97
|
+
3. **API security**
|
|
98
|
+
- Always use HTTPS
|
|
99
|
+
- Validate SSL certificates
|
|
100
|
+
- Handle auth token expiration
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Testing Requirements
|
|
105
|
+
|
|
106
|
+
### Critical
|
|
107
|
+
|
|
108
|
+
1. **Unit tests**
|
|
109
|
+
- Test business logic
|
|
110
|
+
- Test custom hooks
|
|
111
|
+
- Mock external dependencies
|
|
112
|
+
|
|
113
|
+
2. **Component tests**
|
|
114
|
+
- Test user interactions
|
|
115
|
+
- Test conditional rendering
|
|
116
|
+
- Test error states
|
|
117
|
+
|
|
118
|
+
3. **E2E tests (optional)**
|
|
119
|
+
- Test critical user flows
|
|
120
|
+
- Test on real devices
|
|
121
|
+
- Test offline scenarios
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## How AI Should Apply These Rules
|
|
126
|
+
|
|
127
|
+
1. **During implementation**
|
|
128
|
+
- Follow these rules by default
|
|
129
|
+
- Add proper error handling
|
|
130
|
+
- Include loading states
|
|
131
|
+
|
|
132
|
+
2. **During code review**
|
|
133
|
+
- Check for violations
|
|
134
|
+
- Suggest performance improvements
|
|
135
|
+
|
|
136
|
+
3. **When debugging**
|
|
137
|
+
- Use React DevTools
|
|
138
|
+
- Check performance with Profiler
|
|
139
|
+
- Test on low-end devices
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
*These rules are enforced by `npm run verify:quality`. Run locally before pushing.*
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
-- Initial database schema
|
|
2
|
+
-- Generated by Lattice Project Builder
|
|
3
|
+
|
|
4
|
+
-- Enable UUID extension
|
|
5
|
+
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
6
|
+
|
|
7
|
+
-- Users profile table (extends auth.users)
|
|
8
|
+
CREATE TABLE IF NOT EXISTS public.profiles (
|
|
9
|
+
id UUID REFERENCES auth.users(id) ON DELETE CASCADE PRIMARY KEY,
|
|
10
|
+
email TEXT,
|
|
11
|
+
full_name TEXT,
|
|
12
|
+
avatar_url TEXT,
|
|
13
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
14
|
+
updated_at TIMESTAMPTZ DEFAULT NOW()
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
-- Enable Row Level Security
|
|
18
|
+
ALTER TABLE public.profiles ENABLE ROW LEVEL SECURITY;
|
|
19
|
+
|
|
20
|
+
-- Profiles policies
|
|
21
|
+
CREATE POLICY "Users can view own profile"
|
|
22
|
+
ON public.profiles FOR SELECT
|
|
23
|
+
USING (auth.uid() = id);
|
|
24
|
+
|
|
25
|
+
CREATE POLICY "Users can update own profile"
|
|
26
|
+
ON public.profiles FOR UPDATE
|
|
27
|
+
USING (auth.uid() = id);
|
|
28
|
+
|
|
29
|
+
-- Billing identifiers and any future privileged columns are server-owned.
|
|
30
|
+
REVOKE INSERT, UPDATE, DELETE ON TABLE public.profiles FROM PUBLIC, anon, authenticated;
|
|
31
|
+
GRANT UPDATE (full_name, avatar_url) ON TABLE public.profiles TO authenticated;
|
|
32
|
+
GRANT ALL ON TABLE public.profiles TO service_role;
|
|
33
|
+
|
|
34
|
+
-- Function to create profile on signup
|
|
35
|
+
CREATE OR REPLACE FUNCTION public.handle_new_user()
|
|
36
|
+
RETURNS TRIGGER AS $$
|
|
37
|
+
BEGIN
|
|
38
|
+
INSERT INTO public.profiles (id, email, full_name)
|
|
39
|
+
VALUES (
|
|
40
|
+
NEW.id,
|
|
41
|
+
NEW.email,
|
|
42
|
+
NEW.raw_user_meta_data->>'full_name'
|
|
43
|
+
);
|
|
44
|
+
RETURN NEW;
|
|
45
|
+
END;
|
|
46
|
+
$$ LANGUAGE plpgsql SECURITY DEFINER SET search_path = '';
|
|
47
|
+
|
|
48
|
+
-- Trigger for new user signup
|
|
49
|
+
DROP TRIGGER IF EXISTS on_auth_user_created ON auth.users;
|
|
50
|
+
CREATE TRIGGER on_auth_user_created
|
|
51
|
+
AFTER INSERT ON auth.users
|
|
52
|
+
FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();
|
|
53
|
+
|
|
54
|
+
-- Updated at trigger function
|
|
55
|
+
CREATE OR REPLACE FUNCTION public.update_updated_at()
|
|
56
|
+
RETURNS TRIGGER AS $$
|
|
57
|
+
BEGIN
|
|
58
|
+
NEW.updated_at = NOW();
|
|
59
|
+
RETURN NEW;
|
|
60
|
+
END;
|
|
61
|
+
$$ LANGUAGE plpgsql;
|
|
62
|
+
|
|
63
|
+
-- Apply updated_at trigger to profiles
|
|
64
|
+
CREATE TRIGGER update_profiles_updated_at
|
|
65
|
+
BEFORE UPDATE ON public.profiles
|
|
66
|
+
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at();
|