class-ai-agent 1.4.1 → 1.5.0
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/.agent/README.md +10 -5
- package/.agent/rules/agent-continuity.md +44 -0
- package/.agent/rules/antigravity-overview.md +38 -0
- package/.agent/rules/api-conventions.md +85 -0
- package/.agent/rules/clean-code.md +211 -0
- package/.agent/rules/code-style.md +92 -0
- package/.agent/rules/codegraph.md +47 -0
- package/.agent/rules/database.md +66 -0
- package/.agent/rules/error-handling.md +98 -0
- package/.agent/rules/git-workflow.md +83 -0
- package/.agent/rules/monitoring.md +317 -0
- package/.agent/rules/naming-conventions.md +266 -0
- package/.agent/rules/project-structure.md +71 -0
- package/.agent/rules/security.md +95 -0
- package/.agent/rules/system-design.md +168 -0
- package/.agent/rules/tech-stack.md +463 -0
- package/.agent/rules/testing.md +110 -0
- package/.agents/agents/backend.md +395 -0
- package/.agents/agents/business-analyst.md +380 -0
- package/.agents/agents/code-reviewer.md +110 -0
- package/.agents/agents/copywriter-seo.md +236 -0
- package/.agents/agents/frontend.md +384 -0
- package/.agents/agents/project-manager.md +201 -0
- package/.agents/agents/qa.md +221 -0
- package/.agents/agents/security-auditor.md +143 -0
- package/.agents/agents/systems-architect.md +211 -0
- package/.agents/agents/test-engineer.md +123 -0
- package/.agents/agents/ui-ux-designer.md +210 -0
- package/.agents/references/accessibility-checklist.md +174 -0
- package/.agents/references/agent-continuity.md +42 -0
- package/.agents/references/codegraph.md +90 -0
- package/.agents/references/mcp-antigravity.md +71 -0
- package/.agents/references/performance-checklist.md +150 -0
- package/.agents/references/security-checklist.md +94 -0
- package/.agents/references/supabase.md +55 -0
- package/.agents/references/testing-patterns.md +183 -0
- package/.agents/skills/agent-continuity/SKILL.md +70 -0
- package/.agents/skills/code-review/SKILL.md +208 -0
- package/.agents/skills/deploy/SKILL.md +68 -0
- package/.agents/skills/deploy/deploy.md +735 -0
- package/.agents/skills/incremental-implementation/SKILL.md +210 -0
- package/.agents/skills/security-review/SKILL.md +71 -0
- package/.agents/skills/supabase/SKILL.md +135 -0
- package/.agents/skills/supabase/UPSTREAM.md +16 -0
- package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/.agents/skills/supabase-postgres-best-practices/UPSTREAM.md +16 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/.agents/skills/tdd/SKILL.md +217 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +288 -0
- package/.agents/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agents/skills/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agents/skills/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agents/skills/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agents/skills/ui-ux-pro-max/data/products.csv +97 -0
- package/.agents/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agents/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agents/skills/ui-ux-pro-max/data/styles.csv +68 -0
- package/.agents/skills/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agents/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agents/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agents/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agents/skills/ui-ux-pro-max/scripts/core.py +253 -0
- package/.agents/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agents/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/.agents/workflows/build.md +132 -0
- package/.agents/workflows/debug.md +242 -0
- package/.agents/workflows/deploy.md +43 -0
- package/.agents/workflows/fix-issue.md +45 -0
- package/.agents/workflows/handoff.md +93 -0
- package/.agents/workflows/plan.md +125 -0
- package/.agents/workflows/publish-npm.md +122 -0
- package/.agents/workflows/resume.md +106 -0
- package/.agents/workflows/review.md +53 -0
- package/.agents/workflows/simplify.md +221 -0
- package/.agents/workflows/spec.md +95 -0
- package/.agents/workflows/test.md +213 -0
- package/.cursor/rules/cursor-overview.mdc +3 -2
- package/.kiro/steering/kiro-overview.md +2 -2
- package/AGENTS.md +4 -1
- package/GEMINI.md +152 -0
- package/README.md +52 -15
- package/bin/class-ai-agent.cjs +85 -9
- package/package.json +9 -4
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Write tests using TDD patterns — tests are proof of correctness"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /test — Test-Driven Development
|
|
6
|
+
|
|
7
|
+
> "Tests are proof, not afterthought."
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Write tests that prove code works correctly. Use the RED-GREEN-REFACTOR cycle for new features and the Prove-It pattern for bug fixes.
|
|
12
|
+
|
|
13
|
+
## For New Features: RED-GREEN-REFACTOR
|
|
14
|
+
|
|
15
|
+
### RED: Write Failing Test First
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
describe('UserService.findById', () => {
|
|
19
|
+
it('should return user when found', async () => {
|
|
20
|
+
// Arrange
|
|
21
|
+
const userId = 'user-123';
|
|
22
|
+
|
|
23
|
+
// Act
|
|
24
|
+
const user = await userService.findById(userId);
|
|
25
|
+
|
|
26
|
+
// Assert
|
|
27
|
+
expect(user).toBeDefined();
|
|
28
|
+
expect(user.id).toBe(userId);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('should throw NotFoundError when user does not exist', async () => {
|
|
32
|
+
await expect(userService.findById('non-existent'))
|
|
33
|
+
.rejects.toThrow(NotFoundError);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Run tests — **they should fail** (proves nothing is implemented yet).
|
|
39
|
+
|
|
40
|
+
### GREEN: Write Minimal Code to Pass
|
|
41
|
+
|
|
42
|
+
```javascript
|
|
43
|
+
async findById(id: string): Promise<User> {
|
|
44
|
+
const user = await this.db.user.findUnique({ where: { id } });
|
|
45
|
+
if (!user) throw new NotFoundError('User not found');
|
|
46
|
+
return user;
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Run tests — **they should pass**.
|
|
51
|
+
|
|
52
|
+
### REFACTOR: Improve While Green
|
|
53
|
+
|
|
54
|
+
Clean up code while keeping tests passing:
|
|
55
|
+
- Better naming
|
|
56
|
+
- Extract helpers
|
|
57
|
+
- Remove duplication
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## For Bug Fixes: Prove-It Pattern
|
|
62
|
+
|
|
63
|
+
### Step 1: Write Test That Reproduces the Bug
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
it('should not duplicate items when adding to cart twice', async () => {
|
|
67
|
+
// This test should FAIL with the current buggy code
|
|
68
|
+
await cart.addItem('product-1', 1);
|
|
69
|
+
await cart.addItem('product-1', 1);
|
|
70
|
+
|
|
71
|
+
expect(cart.items).toHaveLength(1);
|
|
72
|
+
expect(cart.items[0].quantity).toBe(2);
|
|
73
|
+
});
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 2: Verify Test Fails
|
|
77
|
+
|
|
78
|
+
Run the test — confirm it **fails** (proving the bug exists).
|
|
79
|
+
|
|
80
|
+
### Step 3: Fix the Bug
|
|
81
|
+
|
|
82
|
+
```javascript
|
|
83
|
+
async addItem(productId: string, quantity: number) {
|
|
84
|
+
const existing = this.items.find(i => i.productId === productId);
|
|
85
|
+
if (existing) {
|
|
86
|
+
existing.quantity += quantity; // Fix: increment instead of duplicate
|
|
87
|
+
} else {
|
|
88
|
+
this.items.push({ productId, quantity });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 4: Verify Test Passes
|
|
94
|
+
|
|
95
|
+
Run the test — confirm it **passes** (proving the fix works).
|
|
96
|
+
|
|
97
|
+
### Step 5: Run Full Suite
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
npm test # Ensure no regressions
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Test Pyramid
|
|
106
|
+
|
|
107
|
+
| Level | Percentage | Speed | Scope |
|
|
108
|
+
|-------|------------|-------|-------|
|
|
109
|
+
| **Unit** | 80% | ms | Single function, no I/O |
|
|
110
|
+
| **Integration** | 15% | seconds | API + DB, component interactions |
|
|
111
|
+
| **E2E** | 5% | minutes | Full user flows |
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Writing Good Tests
|
|
116
|
+
|
|
117
|
+
### Arrange-Act-Assert Pattern
|
|
118
|
+
|
|
119
|
+
```javascript
|
|
120
|
+
it('should calculate total with discount', () => {
|
|
121
|
+
// Arrange — setup
|
|
122
|
+
const cart = new Cart();
|
|
123
|
+
cart.addItem({ price: 100 });
|
|
124
|
+
cart.applyDiscount(10);
|
|
125
|
+
|
|
126
|
+
// Act — execute
|
|
127
|
+
const total = cart.calculateTotal();
|
|
128
|
+
|
|
129
|
+
// Assert — verify
|
|
130
|
+
expect(total).toBe(90);
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### DAMP Over DRY
|
|
135
|
+
|
|
136
|
+
Tests should be **Descriptive And Meaningful Phrases**. Each test reads independently:
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
// ✅ DAMP — clear and independent
|
|
140
|
+
it('should reject password shorter than 8 characters', () => {
|
|
141
|
+
const result = validatePassword('short');
|
|
142
|
+
expect(result.valid).toBe(false);
|
|
143
|
+
expect(result.error).toBe('Password must be at least 8 characters');
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// ❌ Too DRY — requires reading shared setup
|
|
147
|
+
it('should reject short password', () => {
|
|
148
|
+
expect(validate(shortPassword)).toBe(false);
|
|
149
|
+
});
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Descriptive Test Names
|
|
153
|
+
|
|
154
|
+
```javascript
|
|
155
|
+
// ✅ Good — describes behavior
|
|
156
|
+
'should return 404 when user is not found'
|
|
157
|
+
'should increment quantity when adding existing product'
|
|
158
|
+
'should send welcome email after registration'
|
|
159
|
+
|
|
160
|
+
// ❌ Bad — vague
|
|
161
|
+
'works correctly'
|
|
162
|
+
'handles error'
|
|
163
|
+
'test user'
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### One Behavior Per Test
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// ✅ Good — focused
|
|
170
|
+
it('should validate email format', () => { ... });
|
|
171
|
+
it('should require email field', () => { ... });
|
|
172
|
+
|
|
173
|
+
// ❌ Bad — testing multiple things
|
|
174
|
+
it('should validate email', () => {
|
|
175
|
+
expect(validate('')).toBe(false); // required
|
|
176
|
+
expect(validate('bad')).toBe(false); // format
|
|
177
|
+
expect(validate('a@b.c')).toBe(true); // valid
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Test Doubles Preference
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
1. Real implementations (best)
|
|
187
|
+
2. In-memory fakes (test DB, fake filesystem)
|
|
188
|
+
3. Stubs (canned responses)
|
|
189
|
+
4. Mocks (verify interactions — use sparingly)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Anti-Patterns to Avoid
|
|
195
|
+
|
|
196
|
+
| Anti-Pattern | Problem | Fix |
|
|
197
|
+
|--------------|---------|-----|
|
|
198
|
+
| Testing internals | Breaks on refactor | Test inputs/outputs only |
|
|
199
|
+
| Flaky tests | Erodes trust | Use deterministic data, isolate state |
|
|
200
|
+
| Over-mocking | False confidence | Prefer real implementations |
|
|
201
|
+
| Snapshot abuse | Large diffs ignored | Use for rare cases only |
|
|
202
|
+
| Shared state | Tests affect each other | Reset state in beforeEach |
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Verification Checklist
|
|
207
|
+
|
|
208
|
+
- [ ] All new behaviors have tests
|
|
209
|
+
- [ ] Bug fixes have reproduction tests
|
|
210
|
+
- [ ] Test names describe behavior
|
|
211
|
+
- [ ] No skipped or disabled tests
|
|
212
|
+
- [ ] Coverage maintained or improved
|
|
213
|
+
- [ ] Full test suite passes
|
|
@@ -33,10 +33,11 @@ Supporting prompts: `debug`, `simplify`, `fix-issue`, `handoff`, `resume` in `.c
|
|
|
33
33
|
|
|
34
34
|
Specialized instructions live in **`.cursor/agents/`**. In Cursor, **@ mention** the file you want (e.g. `@.cursor/agents/code-reviewer.md`) when you need that role.
|
|
35
35
|
|
|
36
|
-
## Relation to `.claude
|
|
36
|
+
## Relation to `.claude/`, `.kiro/`, and Antigravity
|
|
37
37
|
|
|
38
38
|
- **`.claude/`** — Claude Code
|
|
39
39
|
- **`.cursor/`** — Cursor
|
|
40
40
|
- **`.kiro/`** — Kiro (steering + MCP; sync from `.cursor/` via `npm run sync:all`)
|
|
41
|
+
- **`.agents/`** + **`GEMINI.md`** — Antigravity (workflows, skills; sync from `.cursor/` via `npm run sync:all`)
|
|
41
42
|
|
|
42
|
-
Keep all
|
|
43
|
+
Keep all four trees aligned when you change workflows or standards. After editing `.cursor/`, run `npm run sync:all`.
|
|
@@ -33,6 +33,6 @@ Supporting prompts: `debug`, `simplify`, `fix-issue`, `handoff`, `resume` in `.k
|
|
|
33
33
|
|
|
34
34
|
Specialized instructions live in **`.kiro/agents/`**. Reference files in chat (paste or attach).
|
|
35
35
|
|
|
36
|
-
## Relation to `.claude
|
|
36
|
+
## Relation to `.claude/`, `.cursor/`, and Antigravity
|
|
37
37
|
|
|
38
|
-
Keep all
|
|
38
|
+
Keep all four trees aligned when you change workflows or standards. After editing `.cursor/`, run `npm run sync:all`.
|
package/AGENTS.md
CHANGED
|
@@ -7,6 +7,7 @@ Project guidance for AI coding agents:
|
|
|
7
7
|
| **Cursor** | [`.cursor/CURSOR.md`](.cursor/CURSOR.md) |
|
|
8
8
|
| **Kiro** | [`.kiro/KIRO.md`](.kiro/KIRO.md) |
|
|
9
9
|
| **Claude Code** | [`.claude/CLAUDE.md`](.claude/CLAUDE.md) |
|
|
10
|
+
| **Antigravity** | [`GEMINI.md`](GEMINI.md) |
|
|
10
11
|
|
|
11
12
|
## Quick start (any tool)
|
|
12
13
|
|
|
@@ -22,15 +23,17 @@ Project guidance for AI coding agents:
|
|
|
22
23
|
| **Cursor** | `.cursor/CURSOR.md` | `@.cursor/commands/build.md` | `@.cursor/agents/backend.md` |
|
|
23
24
|
| **Claude Code** | `.claude/CLAUDE.md` | `/build` slash command | reference `.claude/agents/backend.md` |
|
|
24
25
|
| **Kiro** | `.kiro/KIRO.md` | `.kiro/commands/build.md` (paste or attach) | reference `.kiro/agents/backend.md` |
|
|
26
|
+
| **Antigravity** | `GEMINI.md` | `/build` workflow (`.agents/workflows/build.md`) | reference `.agents/agents/backend.md` |
|
|
25
27
|
|
|
26
28
|
## Layout
|
|
27
29
|
|
|
28
30
|
- **Cursor:** `.cursor/rules/` (`.mdc`), `.cursor/commands/`, `.cursor/mcp.json`
|
|
29
31
|
- **Kiro:** `.kiro/steering/` (`*.md`), `.kiro/commands/`, `.kiro/settings/mcp.json`
|
|
30
32
|
- **Claude Code:** `.claude/rules/`, `.claude/commands/`
|
|
33
|
+
- **Antigravity:** `.agents/workflows/`, `.agents/skills/`, `.agent/rules/`, `GEMINI.md` (MCP: user-level `~/.gemini/antigravity/mcp_config.json`)
|
|
31
34
|
|
|
32
35
|
**Cross-tool continuity:** committed [`.agent/SESSION.md`](.agent/README.md) — use `/resume` at session start and `/handoff` at session end (see hub docs and `.agent/README.md`).
|
|
33
36
|
|
|
34
37
|
## Maintainers
|
|
35
38
|
|
|
36
|
-
Keep **`.claude/`**, **`.cursor/`**,
|
|
39
|
+
Keep **`.claude/`**, **`.cursor/`**, **`.kiro/`**, and the Antigravity layout in sync when you change workflows or standards. After editing **`.cursor/`** (canonical), run **`npm run sync:all`** to refresh `.claude/`, `.kiro/`, `.agents/`, `.agent/rules/`, and `GEMINI.md`. To refresh vendored Supabase skills from upstream, run **`npm run sync:supabase-skills`**.
|
package/GEMINI.md
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Antigravity AI agent configuration
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This project uses **Google Antigravity** with the same structured workflows, specialized agent personas, and coding standards as **`.cursor/`**, **`.claude/`**, and **`.kiro/`**. Antigravity-specific files live under **`.agents/`**, **`.agent/rules/`**, and this hub (**`GEMINI.md`**).
|
|
6
|
+
|
|
7
|
+
Root **`AGENTS.md`** provides cross-tool rules read by Antigravity, Cursor, and Claude Code. **`GEMINI.md`** holds Antigravity-specific overrides and takes precedence over `AGENTS.md` when rules conflict.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Development workflow
|
|
12
|
+
|
|
13
|
+
Follow this workflow for feature development:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/spec → /plan → /build → /test → /review → Ship
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
| Phase | Workflow | Purpose |
|
|
20
|
+
|-------|----------|---------|
|
|
21
|
+
| **Define** | `.agents/workflows/spec.md` (`/spec`) | PRD: objectives, scope, boundaries |
|
|
22
|
+
| **Plan** | `.agents/workflows/plan.md` (`/plan`) | Vertical slices, acceptance criteria |
|
|
23
|
+
| **Build** | `.agents/workflows/build.md` (`/build`) | Incremental implementation, TDD |
|
|
24
|
+
| **Verify** | `.agents/workflows/test.md` (`/test`) | Tests and verification |
|
|
25
|
+
| **Review** | `.agents/workflows/review.md` (`/review`) | Five-axis review before merge |
|
|
26
|
+
| **Ship** | `.agents/workflows/deploy.md` (`/deploy`) | Build, test, deploy |
|
|
27
|
+
|
|
28
|
+
### Supporting workflows
|
|
29
|
+
|
|
30
|
+
| File | Purpose |
|
|
31
|
+
|------|---------|
|
|
32
|
+
| `workflows/debug.md` (`/debug`) | Systematic diagnosis |
|
|
33
|
+
| `workflows/simplify.md` (`/simplify`) | Reduce complexity, same behavior |
|
|
34
|
+
| `workflows/fix-issue.md` (`/fix-issue`) | Analyze and fix reported issues |
|
|
35
|
+
| `workflows/handoff.md` (`/handoff`) | End session — update `.agent/SESSION.md` for cross-tool continuity |
|
|
36
|
+
| `workflows/resume.md` (`/resume`) | Start session — load `.agent/SESSION.md` and continue prior work |
|
|
37
|
+
| `workflows/publish-npm.md` | **Maintainers:** draft release notes, bump version, update README, publish to npm |
|
|
38
|
+
|
|
39
|
+
**How to use:** Type the slash command (e.g. `/build`) in Antigravity, or open the workflow file and paste/attach in chat.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Core principles
|
|
44
|
+
|
|
45
|
+
- **TDD** — Failing tests first, then implementation (`.agents/skills/tdd/`)
|
|
46
|
+
- **Incremental implementation** — Small vertical slices (`.agents/skills/incremental-implementation/`)
|
|
47
|
+
- **Five-axis review** — Correctness, readability, architecture, security, performance (`.agents/skills/code-review/`)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Mandatory standards (rules)
|
|
52
|
+
|
|
53
|
+
Project standards are **`.agent/rules/*.md`**. They use YAML frontmatter:
|
|
54
|
+
|
|
55
|
+
- **`trigger: always_on`** — Loaded every session (`antigravity-overview.md`, `security.md`, `codegraph.md`, `agent-continuity.md`)
|
|
56
|
+
- **`trigger: glob`** — Loaded when active files match `globs`
|
|
57
|
+
- **`trigger: model_decision`** — Activated by intent (persona rules)
|
|
58
|
+
|
|
59
|
+
| Topic | Rule file |
|
|
60
|
+
|-------|-----------|
|
|
61
|
+
| Clean code, style, errors | `clean-code`, `code-style`, `error-handling` |
|
|
62
|
+
| Stack, structure, APIs | `tech-stack`, `project-structure`, `api-conventions` |
|
|
63
|
+
| Data & naming | `naming-conventions`, `database` |
|
|
64
|
+
| Ops & quality | `security`, `monitoring`, `testing`, `git-workflow`, `system-design` |
|
|
65
|
+
| Code intelligence | `codegraph` (MCP usage; see below) |
|
|
66
|
+
| Agent continuity | `agent-continuity` (`.agent/SESSION.md` handoff) |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Agent continuity
|
|
71
|
+
|
|
72
|
+
Cross-tool handoff lives in **`.agent/SESSION.md`** (committed). Use **`/resume`** at session start and **`/handoff`** at session end when switching chats or tools. See **`.agents/references/agent-continuity.md`** and **`.agent/rules/agent-continuity.md`**.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Code intelligence (CodeGraph)
|
|
77
|
+
|
|
78
|
+
This project includes **[CodeGraph](https://github.com/colbymchenry/codegraph)** for local, structural code search via MCP.
|
|
79
|
+
|
|
80
|
+
| Item | Location |
|
|
81
|
+
|------|----------|
|
|
82
|
+
| MCP server config | `~/.gemini/antigravity/mcp_config.json` (user-level; see `.agents/references/mcp-antigravity.md`) |
|
|
83
|
+
| Usage rules | `.agent/rules/codegraph.md` |
|
|
84
|
+
| Symbol index (generated) | `.codegraph/` (gitignored) |
|
|
85
|
+
| Setup reference | `.agents/references/codegraph.md` |
|
|
86
|
+
|
|
87
|
+
After configuring MCP, **restart Antigravity** so the CodeGraph MCP server connects. Use `codegraph_*` tools for structural questions (callers, callees, traces, impact); use grep/read for literal text in comments or strings.
|
|
88
|
+
|
|
89
|
+
If the index is missing, run `npx @colbymchenry/codegraph init -i` in the project root.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Agent personas
|
|
94
|
+
|
|
95
|
+
Instructions live in **`.agents/agents/`**. Invoke by **referencing** the file (paste or attach in chat).
|
|
96
|
+
|
|
97
|
+
| Area | File |
|
|
98
|
+
|------|------|
|
|
99
|
+
| Frontend, backend, architecture | `frontend.md`, `backend.md`, `systems-architect.md` |
|
|
100
|
+
| Quality | `code-reviewer.md`, `test-engineer.md`, `qa.md`, `security-auditor.md` |
|
|
101
|
+
| Product & content | `business-analyst.md`, `project-manager.md`, `ui-ux-designer.md`, `copywriter-seo.md` |
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Skills
|
|
106
|
+
|
|
107
|
+
Reusable playbooks: **`.agents/skills/*/SKILL.md`** (and related `.md` files where present).
|
|
108
|
+
|
|
109
|
+
| Skill | Use for |
|
|
110
|
+
|-------|---------|
|
|
111
|
+
| `tdd` | Red–green–refactor |
|
|
112
|
+
| `code-review` | Five-axis review |
|
|
113
|
+
| `incremental-implementation` | Vertical slices |
|
|
114
|
+
| `deploy` | Deployment pipeline |
|
|
115
|
+
| `security-review` | Security audit |
|
|
116
|
+
| `agent-continuity` | Cross-tool session handoff via `.agent/SESSION.md` |
|
|
117
|
+
| `supabase` | Supabase products, Auth, CLI, MCP, migrations, RLS |
|
|
118
|
+
| `supabase-postgres-best-practices` | Postgres performance, indexes, RLS tuning |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Reference checklists
|
|
123
|
+
|
|
124
|
+
**`.agents/references/`**
|
|
125
|
+
|
|
126
|
+
| File | Use for |
|
|
127
|
+
|------|---------|
|
|
128
|
+
| `security-checklist.md` | Pre-deploy security |
|
|
129
|
+
| `testing-patterns.md` | Test structure |
|
|
130
|
+
| `performance-checklist.md` | Performance |
|
|
131
|
+
| `accessibility-checklist.md` | WCAG-oriented checks |
|
|
132
|
+
| `codegraph.md` | CodeGraph setup (all tools) |
|
|
133
|
+
| `mcp-antigravity.md` | Antigravity MCP config (`mcp_config.json`) |
|
|
134
|
+
| `agent-continuity.md` | Session handoff and `/resume` / `/handoff` |
|
|
135
|
+
| `supabase.md` | Supabase skills, MCP OAuth, secrets |
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Config parity
|
|
140
|
+
|
|
141
|
+
Antigravity loads root **`AGENTS.md`**, **`GEMINI.md`**, **`.agent/rules/*.md`**, **`.agents/workflows/`**, and **`.agents/skills/`**. MCP servers are configured in user-level **`~/.gemini/antigravity/mcp_config.json`** — see `.agents/references/mcp-antigravity.md`.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Agent behavior
|
|
146
|
+
|
|
147
|
+
1. Follow the workflow and use slash commands when starting a phase.
|
|
148
|
+
2. If **`.agent/SESSION.md`** exists, read it before planning or coding; run **`/resume`** when continuing prior work.
|
|
149
|
+
3. Apply **`.agent/rules/`**; treat **`security.md`** as non-negotiable.
|
|
150
|
+
4. Prefer tests first and small, buildable changes.
|
|
151
|
+
5. **Reference** the right **`.agents/agents/`** file when the task matches that role.
|
|
152
|
+
6. Update **`.agent/SESSION.md`** (or **`/handoff`**) before ending a session.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AI Agent Project
|
|
2
2
|
|
|
3
|
-
**Production-grade configuration for [Claude Code](https://code.claude.com/docs), [Cursor](https://cursor.com),
|
|
3
|
+
**Production-grade configuration for [Claude Code](https://code.claude.com/docs), [Cursor](https://cursor.com), [Kiro](https://kiro.dev), and [Antigravity](https://antigravity.google)** — shared rules, specialized agents, workflow prompts, and checklists you can drop into any repository.
|
|
4
4
|
|
|
5
5
|
<div align="center">
|
|
6
6
|
|
|
@@ -18,7 +18,7 @@ Open-source AI agent scaffolding by **Royal Solution** — use it in your own pr
|
|
|
18
18
|
<a href="https://www.npmjs.com/package/class-ai-agent"><img src="https://img.shields.io/npm/v/class-ai-agent?label=npm&logo=npm&style=flat-square" alt="npm version" /></a>
|
|
19
19
|
<img src="https://img.shields.io/badge/node-%3E%3D16.7-339933?logo=node.js&logoColor=white&style=flat-square" alt="Node.js 16.7+" />
|
|
20
20
|
<img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License MIT" />
|
|
21
|
-
<img src="https://img.shields.io/badge/version-1.
|
|
21
|
+
<img src="https://img.shields.io/badge/version-1.5.0-blue?style=flat-square" alt="Version" />
|
|
22
22
|
</p>
|
|
23
23
|
|
|
24
24
|
</div>
|
|
@@ -51,15 +51,15 @@ Open-source AI agent scaffolding by **Royal Solution** — use it in your own pr
|
|
|
51
51
|
|
|
52
52
|
| You get | Details |
|
|
53
53
|
|--------|---------|
|
|
54
|
-
| **
|
|
54
|
+
| **Four layouts** | **`.claude/`** (Claude Code), **`.cursor/`** (Cursor), **`.kiro/`** (Kiro), **`.agents/`** + **`GEMINI.md`** (Antigravity) |
|
|
55
55
|
| **One workflow** | Spec → Plan → Build → Test → Review → Ship |
|
|
56
56
|
| **11 agent personas** | Frontend, backend, architect, review, QA, security, BA, PM, UX, SEO, test engineer |
|
|
57
57
|
| **13 topic rules** | Code style, security, API, DB, testing, git, and more (same ideas in both trees) |
|
|
58
58
|
| **`npx` installer** | Copies the folders into your project in one command |
|
|
59
|
-
| **CodeGraph** | MCP + usage rules for Cursor and Kiro; local index via [CodeGraph](https://github.com/colbymchenry/codegraph) |
|
|
60
|
-
| **Agent continuity** | Committed **`.agent/SESSION.md`** — `/resume` and `/handoff` across Cursor, Claude Code, and
|
|
59
|
+
| **CodeGraph** | MCP + usage rules for Cursor and Kiro; Antigravity via user `mcp_config.json`; local index via [CodeGraph](https://github.com/colbymchenry/codegraph) |
|
|
60
|
+
| **Agent continuity** | Committed **`.agent/SESSION.md`** — `/resume` and `/handoff` across Cursor, Claude Code, Kiro, and Antigravity |
|
|
61
61
|
|
|
62
|
-
Root **`AGENTS.md`** links hubs: **`.cursor/CURSOR.md`**, **`.kiro/KIRO.md`**, **`.claude/CLAUDE.md`**.
|
|
62
|
+
Root **`AGENTS.md`** links hubs: **`.cursor/CURSOR.md`**, **`.kiro/KIRO.md`**, **`.claude/CLAUDE.md`**, **`GEMINI.md`**.
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -74,7 +74,7 @@ When one agent stops and another starts (new chat, different IDE, or teammate),
|
|
|
74
74
|
|
|
75
75
|
**Read order:** `.agent/SESSION.md` → `tasks/todo.md` → `SPEC.md` (from SESSION pointers).
|
|
76
76
|
|
|
77
|
-
Rules: `.cursor/rules/agent-continuity.mdc`, `.claude/rules/agent-continuity.md`, `.kiro/steering/agent-continuity.md`. Reference: `.cursor/references/agent-continuity.md`.
|
|
77
|
+
Rules: `.cursor/rules/agent-continuity.mdc`, `.claude/rules/agent-continuity.md`, `.kiro/steering/agent-continuity.md`, `.agent/rules/agent-continuity.md`. Reference: `.cursor/references/agent-continuity.md`.
|
|
78
78
|
|
|
79
79
|
Do **not** put secrets or PII in `SESSION.md`. See [`.agent/README.md`](.agent/README.md).
|
|
80
80
|
|
|
@@ -103,6 +103,7 @@ npx class-ai-agent --dir /path/to/your/project
|
|
|
103
103
|
npx class-ai-agent --claude
|
|
104
104
|
npx class-ai-agent --cursor
|
|
105
105
|
npx class-ai-agent --kiro
|
|
106
|
+
npx class-ai-agent --antigravity
|
|
106
107
|
npx class-ai-agent --force # overwrite existing
|
|
107
108
|
npx class-ai-agent --help
|
|
108
109
|
```
|
|
@@ -116,7 +117,7 @@ npm exec -- class-ai-agent --dir /path/to/your/project
|
|
|
116
117
|
# or: node bin/class-ai-agent.cjs --dir /path/to/your/project
|
|
117
118
|
```
|
|
118
119
|
|
|
119
|
-
**Manual copy:** copy **`.agent/`**, **`.claude/`**, **`.cursor/`**, **`.kiro/`**, and **`
|
|
120
|
+
**Manual copy:** copy **`.agent/`**, **`.agents/`**, **`.claude/`**, **`.cursor/`**, **`.kiro/`**, **`AGENTS.md`**, and **`GEMINI.md`** into your project root. Copy `.agent/SESSION.template.md` → `.agent/SESSION.md` if needed. Then run `npx @colbymchenry/codegraph init -i` and reload Cursor / restart Kiro / configure Antigravity MCP.
|
|
120
121
|
|
|
121
122
|
---
|
|
122
123
|
|
|
@@ -130,21 +131,23 @@ npm exec -- class-ai-agent --dir /path/to/your/project
|
|
|
130
131
|
| **Cursor** | `.cursor/mcp.json`, `.cursor/rules/codegraph.mdc` — reload window after install |
|
|
131
132
|
| **Kiro** | `.kiro/settings/mcp.json`, `.kiro/steering/codegraph.md` — restart Kiro after install |
|
|
132
133
|
| **Claude Code** | Not wired by this package — `codegraph install --target=claude` (see `.claude/references/codegraph.md`) |
|
|
134
|
+
| **Antigravity** | User `~/.gemini/antigravity/mcp_config.json`, `.agent/rules/codegraph.md` — see `.agents/references/mcp-antigravity.md` |
|
|
133
135
|
| **Manual index** | `npx @colbymchenry/codegraph init -i` if auto-init failed |
|
|
134
|
-
| **Opt-out** | `CODEGRAPH_SKIP_INIT=1` when running `npx class-ai-agent` |
|
|
135
136
|
| **Troubleshooting** | [CodeGraph README](https://github.com/colbymchenry/codegraph#troubleshooting) · `.cursor/references/codegraph.md` |
|
|
137
|
+
| **Opt-out** | `CODEGRAPH_SKIP_INIT=1` when running `npx class-ai-agent` |
|
|
136
138
|
|
|
137
139
|
---
|
|
138
140
|
|
|
139
141
|
## Overview
|
|
140
142
|
|
|
141
|
-
This repo ships **
|
|
143
|
+
This repo ships **four parallel layouts** so you can use the same habits in Claude Code, Cursor, Kiro, and Antigravity:
|
|
142
144
|
|
|
143
145
|
| Layout | Tool | What you use |
|
|
144
146
|
|--------|------|----------------|
|
|
145
147
|
| **`.claude/`** | Claude Code | Slash commands, **`CLAUDE.md`**, rules as **`.md`** |
|
|
146
148
|
| **`.cursor/`** | Cursor | Project rules as **`.mdc`**, hub **`CURSOR.md`**, **`@`** file mentions |
|
|
147
149
|
| **`.kiro/`** | Kiro | **Steering** as **`.md`** in `.kiro/steering/`, hub **`KIRO.md`**, **`.kiro/settings/mcp.json`** |
|
|
150
|
+
| **`.agents/`** + **`GEMINI.md`** | Antigravity | **Workflows** in `.agents/workflows/` (slash commands), **`.agent/rules/`**, root **`AGENTS.md`** |
|
|
148
151
|
|
|
149
152
|
What is inside:
|
|
150
153
|
|
|
@@ -155,9 +158,9 @@ What is inside:
|
|
|
155
158
|
- **9 skills** (TDD, code review, incremental implementation, deploy, security review, agent continuity, UI/UX Pro Max, **supabase**, **supabase-postgres-best-practices**)
|
|
156
159
|
- **7 reference docs** (security, testing, performance, accessibility, codegraph, agent-continuity, **supabase**)
|
|
157
160
|
- **`.agent/SESSION.md`** for cross-tool session handoff
|
|
158
|
-
- **CodeGraph + Supabase MCP** for Cursor and Kiro (`.cursor/mcp.json`, `.kiro/settings/mcp.json`)
|
|
161
|
+
- **CodeGraph + Supabase MCP** for Cursor and Kiro (`.cursor/mcp.json`, `.kiro/settings/mcp.json`); Antigravity via user `mcp_config.json` (example in `.agents/references/mcp-antigravity.md`)
|
|
159
162
|
|
|
160
|
-
Keep **`.claude/`**, **`.cursor/`**,
|
|
163
|
+
Keep **`.claude/`**, **`.cursor/`**, **`.kiro/`**, and the Antigravity layout in sync when you change standards. After editing `.cursor/` (canonical), run **`npm run sync:all`** to refresh `.claude/`, `.kiro/`, `.agents/`, `.agent/rules/`, and `GEMINI.md`.
|
|
161
164
|
|
|
162
165
|
---
|
|
163
166
|
|
|
@@ -193,9 +196,32 @@ At session boundaries, use **`/handoff`** before switching tools and **`/resume`
|
|
|
193
196
|
.agent/
|
|
194
197
|
├── README.md
|
|
195
198
|
├── SESSION.md # Live handoff (committed; seeded on install)
|
|
196
|
-
|
|
199
|
+
├── SESSION.template.md # Schema reference
|
|
200
|
+
└── rules/ # Antigravity supplement rules (synced from .cursor/rules/)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### `.agents/` + `GEMINI.md` (Antigravity)
|
|
204
|
+
|
|
205
|
+
Mirrors `.cursor/` for skills, agents, and references. Commands become **workflows** (slash commands):
|
|
206
|
+
|
|
207
|
+
| Item | Role |
|
|
208
|
+
|------|------|
|
|
209
|
+
| **`GEMINI.md`** | Hub (Antigravity-specific; overrides `AGENTS.md` when rules conflict) |
|
|
210
|
+
| **`workflows/*.md`** | Slash-command workflows (`/build`, `/resume`, …) |
|
|
211
|
+
| **`skills/`**, **`agents/`**, **`references/`** | Same content as `.cursor/` (path-rewritten) |
|
|
212
|
+
| **`.agent/rules/`** | Supplement rules (`trigger: always_on` / `glob`) |
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
.agents/
|
|
216
|
+
├── workflows/ # 12 workflows (from .cursor/commands/)
|
|
217
|
+
├── agents/
|
|
218
|
+
├── skills/
|
|
219
|
+
└── references/ # includes mcp-antigravity.md
|
|
220
|
+
GEMINI.md # Antigravity hub (repo root)
|
|
197
221
|
```
|
|
198
222
|
|
|
223
|
+
MCP is **user-level**: `~/.gemini/antigravity/mcp_config.json` — see `.agents/references/mcp-antigravity.md`.
|
|
224
|
+
|
|
199
225
|
### `.claude/` (Claude Code)
|
|
200
226
|
|
|
201
227
|
```
|
|
@@ -332,7 +358,9 @@ Use **`.claude/rules/*.md`** or **`.cursor/rules/*.mdc`** (paired content; Curso
|
|
|
332
358
|
|
|
333
359
|
**Kiro** — prompts live under **`.kiro/commands/`**. Open the file, paste or attach in chat, or reference it when running a slash workflow. Restart Kiro after install so MCP (CodeGraph, Supabase) connects.
|
|
334
360
|
|
|
335
|
-
**
|
|
361
|
+
**Antigravity** — use slash workflows (`/build`, `/spec`, …) or open **`.agents/workflows/*.md`**. Read **`GEMINI.md`** for the hub. Configure MCP via **Manage MCP Servers** (see `.agents/references/mcp-antigravity.md`).
|
|
362
|
+
|
|
363
|
+
**Agents** — describe the role in natural language, or **`@`** (Cursor) / reference (Claude, Kiro, Antigravity) an agent file, e.g. `@.cursor/agents/code-reviewer.md` or `.agents/agents/code-reviewer.md`.
|
|
336
364
|
|
|
337
365
|
---
|
|
338
366
|
|
|
@@ -368,6 +396,15 @@ Ship thin end-to-end slices (DB + API + UI), not “all models first, then all r
|
|
|
368
396
|
|
|
369
397
|
|
|
370
398
|
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
### 1.5.0 — 2026-06-17
|
|
402
|
+
|
|
403
|
+
- Add Google Antigravity IDE support: `GEMINI.md` hub, `.agents/` workflows/skills/agents, `.agent/rules/` supplement rules
|
|
404
|
+
- New `sync-antigravity-from-cursor.mjs` wired into `npm run sync:all` with parity checks
|
|
405
|
+
- CLI `--antigravity` flag; safe merge of `.agent/rules/` without overwriting `SESSION.md`
|
|
406
|
+
- MCP setup reference at `.agents/references/mcp-antigravity.md` (user-level `mcp_config.json`)
|
|
407
|
+
|
|
371
408
|
### 1.4.1 — 2026-06-17
|
|
372
409
|
|
|
373
410
|
- Add **Business Analyst** agent persona (BABOK v3) for Cursor, Claude Code, and Kiro
|
|
@@ -393,7 +430,7 @@ Ship thin end-to-end slices (DB + API + UI), not “all models first, then all r
|
|
|
393
430
|
2. Keep tests green.
|
|
394
431
|
3. Run **`/review`** before opening a PR.
|
|
395
432
|
4. Use [conventional commits](https://www.conventionalcommits.org/).
|
|
396
|
-
5. Update **`.cursor/`** when rules or workflows change, then run **`npm run sync:all`** to refresh `.claude
|
|
433
|
+
5. Update **`.cursor/`** when rules or workflows change, then run **`npm run sync:all`** to refresh `.claude/`, `.kiro/`, and Antigravity layout; run **`npm run sync:supabase-skills`** to refresh vendored Supabase skills.
|
|
397
434
|
|
|
398
435
|
---
|
|
399
436
|
|