opencode-skills-collection 4.0.19 → 4.0.21
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/bundled-skills/.antigravity-install-manifest.json +5 -1
- package/bundled-skills/agents-generator/SKILL.md +163 -0
- package/bundled-skills/agents-generator/assets/agents-full.md +452 -0
- package/bundled-skills/agents-generator/assets/agents-minimal.md +60 -0
- package/bundled-skills/agents-generator/assets/agents-nested.md +73 -0
- package/bundled-skills/agents-generator/assets/architecture.md +43 -0
- package/bundled-skills/agents-generator/assets/backend.md +35 -0
- package/bundled-skills/agents-generator/assets/claude.md +39 -0
- package/bundled-skills/agents-generator/assets/database.md +40 -0
- package/bundled-skills/agents-generator/assets/forms.md +56 -0
- package/bundled-skills/agents-generator/assets/frontend-patterns.md +44 -0
- package/bundled-skills/agents-generator/assets/git-workflow.md +61 -0
- package/bundled-skills/agents-generator/assets/i18n.md +50 -0
- package/bundled-skills/agents-generator/assets/platform.md +54 -0
- package/bundled-skills/agents-generator/assets/sdd-workflow.md +46 -0
- package/bundled-skills/agents-generator/assets/server-actions.md +36 -0
- package/bundled-skills/agents-generator/assets/styling.md +48 -0
- package/bundled-skills/agents-generator/assets/testing.md +67 -0
- package/bundled-skills/agents-generator/references/decision-matrix.md +311 -0
- package/bundled-skills/agents-generator/references/example-output/README.md +78 -0
- package/bundled-skills/agents-generator/references/template-filling-guide.md +67 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +1 -1
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/aas-core.md +1 -1
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +3 -3
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/gh-attach/SKILL.md +151 -0
- package/bundled-skills/talivia-agent-kit/SKILL.md +139 -0
- package/bundled-skills/unified-ai-gateway/SKILL.md +214 -0
- package/package.json +1 -1
- package/skills_index.json +100 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# AGENTS.md — Minimal Template
|
|
2
|
+
|
|
3
|
+
Generate when the user asks for a simple, single-file AGENTS.md following the agents.md standard format (https://agents.md). No YAML frontmatter, no rule files, no ASCII art. Keep it under 30 lines.
|
|
4
|
+
|
|
5
|
+
Fill `{{PLACEHOLDER}}` markers from project detection. Only include sections whose content is non-empty.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
## Setup commands
|
|
9
|
+
|
|
10
|
+
{{SETUP_COMMANDS}}
|
|
11
|
+
|
|
12
|
+
## Code style
|
|
13
|
+
|
|
14
|
+
{{CODE_STYLE}}
|
|
15
|
+
|
|
16
|
+
## Testing instructions
|
|
17
|
+
|
|
18
|
+
{{TESTING_INSTRUCTIONS}}
|
|
19
|
+
|
|
20
|
+
## PR instructions
|
|
21
|
+
|
|
22
|
+
{{PR_INSTRUCTIONS}}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Filling rules
|
|
26
|
+
|
|
27
|
+
### `{{SETUP_COMMANDS}}`
|
|
28
|
+
|
|
29
|
+
- One bullet per command: install deps, start dev, run build, run lint, format
|
|
30
|
+
- Use the detected package manager (`pnpm install`, `bun install`, etc.)
|
|
31
|
+
- Keep it short — 3-5 bullets max
|
|
32
|
+
|
|
33
|
+
### `{{CODE_STYLE}}`
|
|
34
|
+
|
|
35
|
+
- 3-5 project-specific conventions as bullets
|
|
36
|
+
- Only verifiable from config: TypeScript strict, no any, single/double quotes, semicolons, import conventions, UI language
|
|
37
|
+
- Format: `- TypeScript strict mode` not `- We use TypeScript`
|
|
38
|
+
|
|
39
|
+
### `{{TESTING_INSTRUCTIONS}}`
|
|
40
|
+
|
|
41
|
+
- What the agent should run before committing
|
|
42
|
+
- The exact test command from package.json
|
|
43
|
+
- One line about adding tests: "- Add or update tests for the code you change"
|
|
44
|
+
- If coverage: mention the command
|
|
45
|
+
|
|
46
|
+
### `{{PR_INSTRUCTIONS}}`
|
|
47
|
+
|
|
48
|
+
- Commit format: conventional commits or project-specific
|
|
49
|
+
- What to run before pushing: lint + test + typecheck
|
|
50
|
+
- Branch naming if applicable
|
|
51
|
+
- Attribution rules: "- No AI attribution in commits"
|
|
52
|
+
|
|
53
|
+
## Omission rules
|
|
54
|
+
|
|
55
|
+
- Skip any section whose content would be empty
|
|
56
|
+
- Never include architecture descriptions, ASCII diagrams, or stack tables
|
|
57
|
+
- Never include rule file references or `.agents/rules/` mentions
|
|
58
|
+
- If the project has no test runner, skip `## Testing instructions`
|
|
59
|
+
- If the project has no lint setup, omit lint from the PR checklist
|
|
60
|
+
- Keep total file under 30 lines
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# AGENTS.md — Nested Template (monorepo sub-package)
|
|
2
|
+
|
|
3
|
+
Generate for each sub-package in a monorepo. Lightweight, package-specific. No YAML frontmatter. Format follows the agents.md standard.
|
|
4
|
+
|
|
5
|
+
Fill `{{PLACEHOLDER}}` markers from the sub-package's package.json and config files.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
# {{PACKAGE_NAME}}
|
|
9
|
+
|
|
10
|
+
{{PACKAGE_DESCRIPTION}}
|
|
11
|
+
|
|
12
|
+
## Setup commands
|
|
13
|
+
|
|
14
|
+
- Install: `cd {{PACKAGE_RELATIVE_PATH}} && {{PM}} install`
|
|
15
|
+
- Build: `{{BUILD_COMMAND}}`
|
|
16
|
+
- Dev: `{{DEV_COMMAND}}`
|
|
17
|
+
|
|
18
|
+
{{TEST_SECTION}}
|
|
19
|
+
|
|
20
|
+
## Code style
|
|
21
|
+
|
|
22
|
+
{{CODE_STYLE}}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Filling rules
|
|
26
|
+
|
|
27
|
+
### `{{PACKAGE_NAME}}`
|
|
28
|
+
|
|
29
|
+
From `package.json` `name` field, or directory name if not found.
|
|
30
|
+
|
|
31
|
+
### `{{PACKAGE_DESCRIPTION}}`
|
|
32
|
+
|
|
33
|
+
One sentence from `package.json` `description`, or inferred from the package's purpose (shared types, API server, frontend app, etc.).
|
|
34
|
+
|
|
35
|
+
### `{{PACKAGE_RELATIVE_PATH}}`
|
|
36
|
+
|
|
37
|
+
Path relative to repo root, e.g. `packages/db` or `apps/dashboard`.
|
|
38
|
+
|
|
39
|
+
### `{{PM}}`
|
|
40
|
+
|
|
41
|
+
The root package manager: `pnpm`, `bun`, `npm`, `yarn`.
|
|
42
|
+
|
|
43
|
+
### `{{BUILD_COMMAND}}`
|
|
44
|
+
|
|
45
|
+
- Monorepo with turborepo: `npx turbo run build --filter={{PACKAGE_NAME}}`
|
|
46
|
+
- Monorepo with pnpm: `pnpm --filter {{PACKAGE_NAME}} build`
|
|
47
|
+
- If no build script in sub-package: omit or say "`cd {{PACKAGE_RELATIVE_PATH}} && {{PM}} run build`"
|
|
48
|
+
|
|
49
|
+
### `{{DEV_COMMAND}}`
|
|
50
|
+
|
|
51
|
+
- Same pattern as build. If sub-package has no dev script, omit.
|
|
52
|
+
|
|
53
|
+
### `{{TEST_SECTION}}`
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
## Testing instructions
|
|
57
|
+
- Run tests: `{{TEST_COMMAND}}`
|
|
58
|
+
- Add or update tests for the code you change
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Only include if the sub-package has a test script or test config.
|
|
62
|
+
|
|
63
|
+
### `{{CODE_STYLE}}`
|
|
64
|
+
|
|
65
|
+
- 2-3 sub-package-specific conventions
|
|
66
|
+
- If sub-package is a shared package: mention exports map, entrypoints, rebuild dependencies
|
|
67
|
+
- If sub-package is an app: mention port, router type, framework
|
|
68
|
+
|
|
69
|
+
## Omission rules
|
|
70
|
+
|
|
71
|
+
- Skip the whole nested file if the sub-package has no `package.json`
|
|
72
|
+
- Keep under 20 lines
|
|
73
|
+
- No architecture descriptions, no ASCII diagrams, no tables
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Architecture Rules
|
|
2
|
+
|
|
3
|
+
## {{PROJECT_TYPE_TITLE}}
|
|
4
|
+
|
|
5
|
+
{{PROJECT_TYPE_DESCRIPTION}}
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
{{ARCHITECTURE_DIAGRAM}}
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Stack
|
|
12
|
+
|
|
13
|
+
| Layer | Technology | Version |
|
|
14
|
+
| --------------- | ---------- | ------- |
|
|
15
|
+
| {{STACK_TABLE}} |
|
|
16
|
+
|
|
17
|
+
## {{ROUTING_SECTION_TITLE}}
|
|
18
|
+
|
|
19
|
+
{{ROUTING_TABLE}}
|
|
20
|
+
|
|
21
|
+
## Data Flow
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
{{DATA_FLOW}}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
{{SERVER_ACTION_VS_API_SECTION}}
|
|
28
|
+
|
|
29
|
+
{{RATE_LIMIT_SECTION}}
|
|
30
|
+
|
|
31
|
+
{{LANGUAGE_SECTION}}
|
|
32
|
+
|
|
33
|
+
## Generation Rules
|
|
34
|
+
|
|
35
|
+
- **PROJECT_TYPE_TITLE**: "Single App Structure" if not monorepo, "Monorepo Structure" if monorepo.
|
|
36
|
+
- **ARCHITECTURE_DIAGRAM**: ASCII art of the main directory layout. For monorepos, show apps + shared packages + their relationships. For single apps, show app/ → components/ + lib/ + external service connections.
|
|
37
|
+
- **STACK_TABLE**: Extract from package.json + config files. Each row: layer, technology, exact version.
|
|
38
|
+
- **ROUTING_SECTION_TITLE**: "Routes" for Next.js App Router, "Endpoints" for NestJS/Express, "Routes" generic.
|
|
39
|
+
- **ROUTING_TABLE**: List every route with type (server/client/API) and description. Read from app/ or src/app/.
|
|
40
|
+
- **DATA_FLOW**: ASCII diagram of the main data flow (user action → frontend → backend → database/external → response). Use real function names.
|
|
41
|
+
- **SERVER_ACTION_VS_API_SECTION**: If both server actions and API routes exist, explain which is primary and their differences. If only one, skip the comparison.
|
|
42
|
+
- **RATE_LIMIT_SECTION**: If rate-limit.ts or rate limiting middleware exists, document it with limits and expiry.
|
|
43
|
+
- **LANGUAGE_SECTION**: If the project uses i18n or has UI in a language other than English, document it.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Backend Patterns (NestJS)
|
|
2
|
+
|
|
3
|
+
## Module Architecture (Screaming Architecture)
|
|
4
|
+
|
|
5
|
+
Each business module is a directory with its own module, controller, and service:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
src/{feature}/
|
|
9
|
+
{feature}.module.ts # NestJS module
|
|
10
|
+
{feature}.controller.ts # REST routes
|
|
11
|
+
{feature}-crud.service.ts # Business logic
|
|
12
|
+
constants.ts # Module constants
|
|
13
|
+
__tests__/ # Unit tests
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- DTOs decorated with validation, validated via global pipe (ZodValidationPipe or class-validator).
|
|
19
|
+
- Dynamic/unmodelable body: receive as `unknown` in controller, cast to narrowest concrete interface in service — never `any`.
|
|
20
|
+
- When splitting a god service, each new service injects only its own dependencies.
|
|
21
|
+
- Services inject the database service from the shared package, not the generated client directly.
|
|
22
|
+
- Role-checking: use enum values directly from the shared package.
|
|
23
|
+
- Use `@nestjs/swagger` decorators for exposed endpoint documentation.
|
|
24
|
+
|
|
25
|
+
## Error Handling
|
|
26
|
+
|
|
27
|
+
- Global exception filter catches all unhandled exceptions.
|
|
28
|
+
- Handle database errors: unique constraint, not found, foreign key, relation violation.
|
|
29
|
+
- Typed business errors with code + consistent message.
|
|
30
|
+
- Standard HTTP exceptions for common cases.
|
|
31
|
+
- Auto-log errors >=500 with stack trace.
|
|
32
|
+
|
|
33
|
+
## Generation Rules
|
|
34
|
+
|
|
35
|
+
This template is only used when `@nestjs/core` is detected in dependencies. Adapt all paths and module names based on the actual project structure found in `src/`.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# CLAUDE.md — Template
|
|
2
|
+
|
|
3
|
+
ONLY generate if Claude Code is detected in the project. Detection signals:
|
|
4
|
+
|
|
5
|
+
- `.claude/` directory exists
|
|
6
|
+
- `CLAUDE.md` file exists at project root
|
|
7
|
+
- `.claude/skills/` directory exists
|
|
8
|
+
- `claude` appears in devDependencies or as a tool reference
|
|
9
|
+
|
|
10
|
+
The CLAUDE.md file should be **thin**. Its only job is to point to AGENTS.md. Do not duplicate content.
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
# CLAUDE.md
|
|
14
|
+
|
|
15
|
+
See @AGENTS.md
|
|
16
|
+
|
|
17
|
+
{{CLAUDE_SPECIFIC_SECTION}}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Filling rules
|
|
21
|
+
|
|
22
|
+
### `{{CLAUDE_SPECIFIC_SECTION}}`
|
|
23
|
+
|
|
24
|
+
Only add if the project actually uses Claude-specific features. If none, omit entirely:
|
|
25
|
+
|
|
26
|
+
- **`.claude/rules/`** — if modular rule files exist: `Additional rules in @.claude/rules/`
|
|
27
|
+
- **`.claude/commands/`** — if custom slash commands exist: `Custom commands: @.claude/commands/`
|
|
28
|
+
- **`.claude/agents/`** — if custom subagents exist: `Custom subagents: @.claude/agents/`
|
|
29
|
+
- **Claude-only behavior**: "Use plan mode for non-trivial tasks", "Use subagents for parallel work"
|
|
30
|
+
|
|
31
|
+
If none of these apply, CLAUDE.md is just:
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
# CLAUDE.md
|
|
35
|
+
|
|
36
|
+
See @AGENTS.md
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
That's the whole file. Don't add empty sections.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Database Rules
|
|
2
|
+
|
|
3
|
+
## ORM: {{ORM_NAME}}
|
|
4
|
+
|
|
5
|
+
{{ORM_DESCRIPTION}}
|
|
6
|
+
|
|
7
|
+
## Schema Location
|
|
8
|
+
|
|
9
|
+
{{SCHEMA_LOCATION}}
|
|
10
|
+
|
|
11
|
+
{{MIGRATIONS_SECTION}}
|
|
12
|
+
|
|
13
|
+
## Conventions
|
|
14
|
+
|
|
15
|
+
{{DB_CONVENTIONS}}
|
|
16
|
+
|
|
17
|
+
## Relationships and Queries
|
|
18
|
+
|
|
19
|
+
{{QUERY_PATTERNS}}
|
|
20
|
+
|
|
21
|
+
## Generation Rules
|
|
22
|
+
|
|
23
|
+
- **ORM_NAME**: "Prisma", "Drizzle", "Knex", "TypeORM", "Mongoose", or "Raw SQL".
|
|
24
|
+
- **ORM_DESCRIPTION**: Database provider detected (postgresql, sqlite, mysql, mongodb).
|
|
25
|
+
- **SCHEMA_LOCATION**: Where the schema or DB config lives.
|
|
26
|
+
- **MIGRATIONS_SECTION**:
|
|
27
|
+
- **Prisma**: `prisma migrate dev` for development, `prisma migrate deploy` for production. `prisma generate` to regenerate client.
|
|
28
|
+
- **Drizzle**: `drizzle-kit generate` for migrations, `drizzle-kit push` for prototyping.
|
|
29
|
+
- **Knex**: `knex migrate:make`, `knex migrate:latest`.
|
|
30
|
+
- **DB_CONVENTIONS**:
|
|
31
|
+
- IDs: `uuid` vs `cuid` vs `autoincrement` vs `ObjectId`. Detect from schema.
|
|
32
|
+
- Timestamps: `createdAt` + `updatedAt` automatically.
|
|
33
|
+
- Naming: `snake_case` in DB, `camelCase` in code.
|
|
34
|
+
- Enums: native DB enums vs strings vs TypeScript enums.
|
|
35
|
+
- Soft deletes: if `deletedAt` field exists.
|
|
36
|
+
- **QUERY_PATTERNS**:
|
|
37
|
+
- **Prisma**: `prisma.user.findMany({ where, include, select })`. Include vs select rules. Transactions with `prisma.$transaction`.
|
|
38
|
+
- **Drizzle**: `db.select().from(users).where(eq(...))`. Relations with `relations`.
|
|
39
|
+
- **Mongoose**: `Model.find()`, `Model.populate()`, `Model.aggregate()`.
|
|
40
|
+
- **Raw SQL**: Use parameterized queries, never string interpolation.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Form Patterns
|
|
2
|
+
|
|
3
|
+
## Library: {{FORM_LIBRARY}}
|
|
4
|
+
|
|
5
|
+
{{FORM_LIBRARY_DESCRIPTION}}
|
|
6
|
+
|
|
7
|
+
## Form Structure
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
{
|
|
11
|
+
{
|
|
12
|
+
FORM_EXAMPLE;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
{{FORM_RULES}}
|
|
20
|
+
|
|
21
|
+
## Validation
|
|
22
|
+
|
|
23
|
+
{{VALIDATION_SECTION}}
|
|
24
|
+
|
|
25
|
+
## Errors
|
|
26
|
+
|
|
27
|
+
{{ERROR_SECTION}}
|
|
28
|
+
|
|
29
|
+
## Generation Rules
|
|
30
|
+
|
|
31
|
+
- **FORM_LIBRARY**: "react-hook-form", "formik", "TanStack Form", or "Manual (controlled inputs)".
|
|
32
|
+
- **FORM_LIBRARY_DESCRIPTION**: One sentence about how forms are handled in the project.
|
|
33
|
+
- **FORM_EXAMPLE**: Real example from the project. Read an existing form and adapt. Include: hook import, register/control, handleSubmit, errors, submit handler.
|
|
34
|
+
- **FORM_RULES**:
|
|
35
|
+
- **react-hook-form**:
|
|
36
|
+
- `useForm<T>()` with generic type for the form schema.
|
|
37
|
+
- `register("fieldName")` for simple inputs, `control` + `Controller` for custom components.
|
|
38
|
+
- `formState: { errors, isSubmitting }` for state.
|
|
39
|
+
- If using Zod resolver: `zodResolver(schema)` in `useForm`.
|
|
40
|
+
- Do not mix `useState` with react-hook-form — use `watch()` or `getValues()`.
|
|
41
|
+
- **formik**:
|
|
42
|
+
- `useFormik<T>()` or `<Formik>` component.
|
|
43
|
+
- `validationSchema` for Yup/Zod.
|
|
44
|
+
- `handleChange`, `handleBlur`, `handleSubmit`.
|
|
45
|
+
- **Manual**:
|
|
46
|
+
- `useState` per field.
|
|
47
|
+
- Manual validation in `handleSubmit`.
|
|
48
|
+
- No form library.
|
|
49
|
+
- **VALIDATION_SECTION**: If using Zod/Yup/Valibot validation:
|
|
50
|
+
- Where schemas live (`lib/schemas/`, `src/validations/`).
|
|
51
|
+
- How they integrate with the form.
|
|
52
|
+
- Whether they are shared between client and server.
|
|
53
|
+
- **ERROR_SECTION**: How errors are displayed:
|
|
54
|
+
- Inline below the field.
|
|
55
|
+
- Toast / sonner for server errors.
|
|
56
|
+
- Messages in the project's language based on i18n detection.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Frontend Patterns
|
|
2
|
+
|
|
3
|
+
## File Structure
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
{{FILE_STRUCTURE}}
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Component Rules
|
|
10
|
+
|
|
11
|
+
{{COMPONENT_RULES}}
|
|
12
|
+
|
|
13
|
+
## State Management
|
|
14
|
+
|
|
15
|
+
{{STATE_MANAGEMENT}}
|
|
16
|
+
|
|
17
|
+
## Toast / Notification System
|
|
18
|
+
|
|
19
|
+
{{TOAST_SYSTEM}}
|
|
20
|
+
|
|
21
|
+
## Analytics
|
|
22
|
+
|
|
23
|
+
{{ANALYTICS_SECTION}}
|
|
24
|
+
|
|
25
|
+
## Trust Boundaries
|
|
26
|
+
|
|
27
|
+
{{TRUST_BOUNDARIES}}
|
|
28
|
+
|
|
29
|
+
## Generation Rules
|
|
30
|
+
|
|
31
|
+
- **FILE_STRUCTURE**: ASCII tree of relevant source directories (app/, components/, lib/, src/). Include only code directories, not node_modules, .git, etc.
|
|
32
|
+
- **COMPONENT_RULES**:
|
|
33
|
+
- Next.js App Router: "use client" rule, server/client component split, where each type lives.
|
|
34
|
+
- Vite/SPA: folder structure, lazy loading.
|
|
35
|
+
- Tailwind: prohibit inline `style={{}}` (except cases like global-error).
|
|
36
|
+
- shadcn/ui: atomic components in components/ui/.
|
|
37
|
+
- UI language for labels/navigation (English/Spanish/etc.) based on project detection.
|
|
38
|
+
- **STATE_MANAGEMENT**:
|
|
39
|
+
- Zustand/Redux/Jotai: document stores, server hydration patterns.
|
|
40
|
+
- useState only: document where main state lives.
|
|
41
|
+
- Shared hooks: list them with their purpose.
|
|
42
|
+
- **TOAST_SYSTEM**: Detect sonner, shadcn toast, custom system, or none. Document the API.
|
|
43
|
+
- **ANALYTICS_SECTION**: If Google Analytics, GTM, Plausible, etc. exists. Document the hook or helper.
|
|
44
|
+
- **TRUST_BOUNDARIES**: Document what the client validates vs what the server validates, what goes through server actions vs client-side.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Git Workflow
|
|
2
|
+
|
|
3
|
+
## Approval Rules
|
|
4
|
+
|
|
5
|
+
- **NO commits** without the user validating the code first — show the diff.
|
|
6
|
+
- **NO branches** unless explicitly requested.
|
|
7
|
+
- **NO push** unless instructed.
|
|
8
|
+
- Before touching code: show plan (files to touch + proposed commits).
|
|
9
|
+
- After applying: show commands run and results (lint/test/{{QUALITY_TOOL}}).
|
|
10
|
+
|
|
11
|
+
## Commit Convention
|
|
12
|
+
|
|
13
|
+
Conventional Commits:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
feat: <brief description>
|
|
17
|
+
fix: <brief description>
|
|
18
|
+
refactor: <brief description>
|
|
19
|
+
test: <brief description>
|
|
20
|
+
chore: <brief description>
|
|
21
|
+
docs: <brief description>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Rules:
|
|
25
|
+
|
|
26
|
+
- One commit per logical change.
|
|
27
|
+
- Short imperative messages.
|
|
28
|
+
- No trailing period.
|
|
29
|
+
- **No "Co-Authored-By" or AI attribution.**
|
|
30
|
+
- {{COMMIT_LANGUAGE}} for commit messages.
|
|
31
|
+
|
|
32
|
+
{{COMMIT_EXAMPLES}}
|
|
33
|
+
|
|
34
|
+
## Pre-Commit Verification
|
|
35
|
+
|
|
36
|
+
Before committing, run:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
{{PRE_COMMIT_CYCLE}}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
If any step fails, do not commit. Fix and retry.
|
|
43
|
+
|
|
44
|
+
## Branches
|
|
45
|
+
|
|
46
|
+
Default base: `{{DEFAULT_BRANCH}}`.
|
|
47
|
+
|
|
48
|
+
Format:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
{{BRANCH_FORMAT}}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Generation Rules
|
|
55
|
+
|
|
56
|
+
- **QUALITY_TOOL**: "doctor" if react-doctor is present, otherwise just "lint".
|
|
57
|
+
- **COMMIT_LANGUAGE**: "English" for projects with code in English, "Spanish" if the project uses Spanish in commits.
|
|
58
|
+
- **COMMIT_EXAMPLES**: 2-3 real examples based on the project's typical change types. Read `git log --oneline -5` if available.
|
|
59
|
+
- **PRE_COMMIT_CYCLE**: Shortened version of the full verification cycle.
|
|
60
|
+
- **DEFAULT_BRANCH**: Detect with `git branch --show-current` or `git remote show origin`. Default: "master".
|
|
61
|
+
- **BRANCH_FORMAT**: `feature/<slug>`, `fix/<slug>`, etc. If the project uses issue references (REQ-XXX), include them in the format.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# i18n Rules
|
|
2
|
+
|
|
3
|
+
## Library: {{I18N_LIBRARY}}
|
|
4
|
+
|
|
5
|
+
{{I18N_DESCRIPTION}}
|
|
6
|
+
|
|
7
|
+
## Supported Languages
|
|
8
|
+
|
|
9
|
+
{{LANGUAGES}}
|
|
10
|
+
|
|
11
|
+
## File Structure
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
{{I18N_FILE_STRUCTURE}}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Usage in Code
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
{
|
|
21
|
+
{
|
|
22
|
+
I18N_USAGE_EXAMPLE;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Rules
|
|
28
|
+
|
|
29
|
+
{{I18N_RULES}}
|
|
30
|
+
|
|
31
|
+
## Generation Rules
|
|
32
|
+
|
|
33
|
+
- **I18N_LIBRARY**: "next-intl", "react-i18next", "next-i18next", "Lingui", or "Custom".
|
|
34
|
+
- **I18N_DESCRIPTION**: How i18n works in the project. E.g.: "next-intl with App Router, messages per locale in JSON files, detection via middleware."
|
|
35
|
+
- **LANGUAGES**: List of supported locales. Detect from `i18n.ts`, `next.config.*`, `middleware.ts`, or `messages/{locale}/` folders.
|
|
36
|
+
- **I18N_FILE_STRUCTURE**: Directory tree with translation files.
|
|
37
|
+
- **I18N_USAGE_EXAMPLE**:
|
|
38
|
+
- **next-intl App Router**: `useTranslations()`, `getTranslations()`, `<NextIntlClientProvider>`.
|
|
39
|
+
- **next-intl Pages Router**: `getStaticProps` with `useTranslations`.
|
|
40
|
+
- **react-i18next**: `useTranslation()`, `t("key")`, namespaces.
|
|
41
|
+
- **next-i18next**: `serverSideTranslations`, `useTranslation`.
|
|
42
|
+
- **I18N_RULES**:
|
|
43
|
+
- UI uses translations, not hardcoded strings.
|
|
44
|
+
- Keys in snake_case or camelCase (detect from project).
|
|
45
|
+
- Interpolation: `t("greeting", { name })` not concatenation.
|
|
46
|
+
- Date/number formatting with `Intl` or library helpers.
|
|
47
|
+
- Metadata and SEO also translated (`generateMetadata` with `getTranslations`).
|
|
48
|
+
- Next.js App Router: middleware handles locale detection + redirect.
|
|
49
|
+
- Pages Router: `getStaticProps`/`getServerSideProps` load translations.
|
|
50
|
+
- Translation files nested by feature, not a single flat file.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# {{PLATFORM_NAME}} Rules — Template
|
|
2
|
+
|
|
3
|
+
ONLY generate if the corresponding platform is detected in the project. Detection signals per platform below.
|
|
4
|
+
|
|
5
|
+
This file is wrapped in managed blocks. The agent regenerates content between markers on update; human edits outside markers are preserved.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
<!-- AGENTS-GENERATED-START -->
|
|
9
|
+
# {{PLATFORM_RULES_HEADER}}
|
|
10
|
+
|
|
11
|
+
{{PLATFORM_SPECIFIC_CONTENT}}
|
|
12
|
+
<!-- AGENTS-GENERATED-END -->
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Platform detection and output
|
|
16
|
+
|
|
17
|
+
| Platform | Detection signal | Output file | Content mapping |
|
|
18
|
+
| ------------------ | ------------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------ |
|
|
19
|
+
| **Cursor** | `.cursorrules` exists or `.cursor/` directory | `.cursorrules` | AGENTS.md sections: Setup commands, Code Style, Hard Rules, Prohibitions |
|
|
20
|
+
| **GitHub Copilot** | `.github/copilot-instructions.md` exists | `.github/copilot-instructions.md` | Flat instructions: Setup, Code Style, Testing |
|
|
21
|
+
| **Gemini CLI** | `GEMINI.md` exists or `.gemini/` directory | `GEMINI.md` | System prompt style: Overview, Commands, Conventions |
|
|
22
|
+
| **Windsurf** | `.windsurfrules` exists or `.windsurf/` directory | `.windsurfrules` | Progressive disclosure: Tech Stack, Rules, Testing |
|
|
23
|
+
| **Codex** | Already covered by AGENTS.md (native support) | — | AGENTS.md is the primary file |
|
|
24
|
+
|
|
25
|
+
## Filling rules
|
|
26
|
+
|
|
27
|
+
### `{{PLATFORM_NAME}}`
|
|
28
|
+
|
|
29
|
+
The platform name: "Cursor", "GitHub Copilot", "Gemini CLI", "Windsurf".
|
|
30
|
+
|
|
31
|
+
### `{{PLATFORM_RULES_HEADER}}`
|
|
32
|
+
|
|
33
|
+
Platform-specific heading:
|
|
34
|
+
|
|
35
|
+
- Cursor: `# Project Rules: {PROJECT_NAME}`
|
|
36
|
+
- Copilot: `# Copilot Instructions`
|
|
37
|
+
- Gemini: `# Gemini CLI Guidelines`
|
|
38
|
+
- Windsurf: `# Windsurf Rules`
|
|
39
|
+
|
|
40
|
+
### `{{PLATFORM_SPECIFIC_CONTENT}}`
|
|
41
|
+
|
|
42
|
+
Adapt from AGENTS.md but use platform-specific format:
|
|
43
|
+
|
|
44
|
+
- **Cursor**: Progressive disclosure with severity levels. Include BAD/GOOD code examples.
|
|
45
|
+
- **Copilot**: Flat markdown. Keep it short — Copilot has limited context window.
|
|
46
|
+
- **Gemini**: System prompt style. Second person, instructional.
|
|
47
|
+
- **Windsurf**: Progressive disclosure. Include cascade rules.
|
|
48
|
+
|
|
49
|
+
## Generation rules
|
|
50
|
+
|
|
51
|
+
1. Only generate for platforms actually detected in the project.
|
|
52
|
+
2. Keep each file under 200 lines — they're companions to AGENTS.md, not replacements.
|
|
53
|
+
3. Include a pointer back to AGENTS.md: `> Full rules in @AGENTS.md`
|
|
54
|
+
4. Use managed blocks (`<!-- AGENTS-GENERATED-START -->` / `<!-- AGENTS-GENERATED-END -->`) to preserve human edits.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# SDD Workflow
|
|
2
|
+
|
|
3
|
+
Software Design Document — design before implementing.
|
|
4
|
+
|
|
5
|
+
## Preflight Defaults (cached, do not re-ask)
|
|
6
|
+
|
|
7
|
+
- **Pace**: {{SDD_PACE}}
|
|
8
|
+
- **Artifacts**: {{SDD_ARTIFACTS}}
|
|
9
|
+
- **Delivery strategy**: {{SDD_DELIVERY}}
|
|
10
|
+
- **Review budget**: {{SDD_REVIEW_BUDGET}} lines
|
|
11
|
+
- **Chain strategy**: {{SDD_CHAIN_STRATEGY}}
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
|
|
15
|
+
- Sub-agents can make errors (duplicate blocks, wrong types) — always review their output.
|
|
16
|
+
- After each SDD phase: run the full verification cycle.
|
|
17
|
+
- On archive: verify all tasks marked done, delta specs synced to main specs.
|
|
18
|
+
|
|
19
|
+
## Post-Apply Verification (MANDATORY)
|
|
20
|
+
|
|
21
|
+
After `sdd-apply` completes and before advancing to `sdd-verify`, the orchestrator MUST run the verification cycle:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
{{VERIFICATION_CYCLE}}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
{{MONOREPO_POST_APPLY}}
|
|
28
|
+
{{DOCTOR_POST_APPLY}}
|
|
29
|
+
|
|
30
|
+
## Spec Verification
|
|
31
|
+
|
|
32
|
+
Project specs are located at:
|
|
33
|
+
{{SPECS_LOCATIONS}}
|
|
34
|
+
|
|
35
|
+
Consult these sources before making architectural changes or adding new features.
|
|
36
|
+
|
|
37
|
+
## Generation Rules
|
|
38
|
+
|
|
39
|
+
- **SDD_PACE**: "Interactive" by default. "Automatic" if the project uses auto in CI.
|
|
40
|
+
- **SDD_ARTIFACTS**: "both" if OpenSpec + Engram exist, "openspec" if only OpenSpec, "engram" if only Engram.
|
|
41
|
+
- **SDD_DELIVERY**: "ask-on-risk" by default. "exception-ok" if the project prefers large PRs.
|
|
42
|
+
- **SDD_REVIEW_BUDGET**: 400 by default. Adjust based on the project's typical PR size.
|
|
43
|
+
- **SDD_CHAIN_STRATEGY**: "stacked-to-main" if fast merge, "feature-branch-chain" if long feature branches.
|
|
44
|
+
- **MONOREPO_POST_APPLY**: If monorepo, add shared package rebuild steps before the cycle.
|
|
45
|
+
- **DOCTOR_POST_APPLY**: If react-doctor exists, add rule about new issues.
|
|
46
|
+
- **SPECS_LOCATIONS**: List docs/specs/, OpenSpec, relevant Engram topics.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Server Actions / Backend
|
|
2
|
+
|
|
3
|
+
## Entry Point
|
|
4
|
+
|
|
5
|
+
{{ENTRY_POINT_DESCRIPTION}}
|
|
6
|
+
|
|
7
|
+
## Flow
|
|
8
|
+
|
|
9
|
+
{{REQUEST_FLOW}}
|
|
10
|
+
|
|
11
|
+
## {{RESPONSE_TYPE_TITLE}}
|
|
12
|
+
|
|
13
|
+
{{RESPONSE_TYPE}}
|
|
14
|
+
|
|
15
|
+
## Error Handling
|
|
16
|
+
|
|
17
|
+
{{ERROR_HANDLING}}
|
|
18
|
+
|
|
19
|
+
## Rate Limiting
|
|
20
|
+
|
|
21
|
+
{{RATE_LIMITING}}
|
|
22
|
+
|
|
23
|
+
## Generation Rules
|
|
24
|
+
|
|
25
|
+
- **ENTRY_POINT_DESCRIPTION**:
|
|
26
|
+
- Server actions: main file(s), exported function(s), parameters.
|
|
27
|
+
- API Routes: files in app/api/, HTTP methods, parameters.
|
|
28
|
+
- NestJS: main controllers, guards, DTOs.
|
|
29
|
+
- **REQUEST_FLOW**: Numbered steps of a typical request flow (validation → rate limit → logic → response).
|
|
30
|
+
- **RESPONSE_TYPE_TITLE**: "DownloadResult", "ApiResponse", or the main response type name.
|
|
31
|
+
- **RESPONSE_TYPE**: Interface/type of the response, with comments on optional vs required fields.
|
|
32
|
+
- **ERROR_HANDLING**:
|
|
33
|
+
- If ErrorCode enum exists: document it with all codes.
|
|
34
|
+
- If GlobalExceptionFilter exists: document it.
|
|
35
|
+
- If detectErrorCode or similar exists: document the heuristic.
|
|
36
|
+
- **RATE_LIMITING**: If rate-limit.ts or middleware exists: document mechanism, limits, expiry.
|