agent-ctx 1.0.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/LICENSE +21 -0
- package/README.md +133 -0
- package/dist/bin/agent-ctx.d.ts +7 -0
- package/dist/bin/agent-ctx.d.ts.map +1 -0
- package/dist/bin/agent-ctx.js +8 -0
- package/dist/bin/agent-ctx.js.map +1 -0
- package/dist/bin/agentrc.d.ts +7 -0
- package/dist/bin/agentrc.d.ts.map +1 -0
- package/dist/bin/agentrc.js +8 -0
- package/dist/bin/agentrc.js.map +1 -0
- package/dist/commands/add.d.ts +12 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +17 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/centralize.d.ts +12 -0
- package/dist/commands/centralize.d.ts.map +1 -0
- package/dist/commands/centralize.js +111 -0
- package/dist/commands/centralize.js.map +1 -0
- package/dist/commands/clean.d.ts +13 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +109 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/doctor.d.ts +12 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +168 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +189 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/update.d.ts +13 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +97 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bridges.d.ts +35 -0
- package/dist/lib/bridges.d.ts.map +1 -0
- package/dist/lib/bridges.js +171 -0
- package/dist/lib/bridges.js.map +1 -0
- package/dist/lib/config.d.ts +31 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +75 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/i18n.d.ts +22 -0
- package/dist/lib/i18n.d.ts.map +1 -0
- package/dist/lib/i18n.js +170 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/logger.d.ts +55 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +168 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/templates.d.ts +46 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +88 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/utils.d.ts +39 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +127 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/wizard.d.ts +22 -0
- package/dist/lib/wizard.d.ts.map +1 -0
- package/dist/lib/wizard.js +197 -0
- package/dist/lib/wizard.js.map +1 -0
- package/package.json +63 -0
- package/src/templates/en/base/_agents.md +62 -0
- package/src/templates/en/base/_architecture.md +90 -0
- package/src/templates/en/base/_bootstrap.md +89 -0
- package/src/templates/en/base/_doc.md +65 -0
- package/src/templates/en/base/_mcp.md +81 -0
- package/src/templates/en/base/_project_state.md +48 -0
- package/src/templates/en/base/_rule.md +56 -0
- package/src/templates/en/base/_skill.md +60 -0
- package/src/templates/en/docs/doc-readme.md +43 -0
- package/src/templates/en/docs/mcp-readme.md +21 -0
- package/src/templates/en/memory/active_context.md +38 -0
- package/src/templates/en/memory/progress.md +35 -0
- package/src/templates/en/memory/project_brief.md +34 -0
- package/src/templates/en/memory/tech_context.md +44 -0
- package/src/templates/en/rules/rule-coding-standards.md +22 -0
- package/src/templates/en/skills/skill-agents.md +74 -0
- package/src/templates/en/skills/skill-api.md +117 -0
- package/src/templates/en/skills/skill-architecture.md +87 -0
- package/src/templates/en/skills/skill-generating.md +116 -0
- package/src/templates/en/skills/skill-git.md +109 -0
- package/src/templates/en/skills/skill-project-state.md +99 -0
- package/src/templates/en/skills/skill-react.md +94 -0
- package/src/templates/en/skills/skill-rules.md +100 -0
- package/src/templates/en/skills/skill-testing.md +139 -0
- package/src/templates/es/base/_agents.md +62 -0
- package/src/templates/es/base/_architecture.md +90 -0
- package/src/templates/es/base/_bootstrap.md +89 -0
- package/src/templates/es/base/_doc.md +65 -0
- package/src/templates/es/base/_mcp.md +81 -0
- package/src/templates/es/base/_project_state.md +48 -0
- package/src/templates/es/base/_rule.md +56 -0
- package/src/templates/es/base/_skill.md +60 -0
- package/src/templates/es/docs/doc-readme.md +43 -0
- package/src/templates/es/docs/mcp-readme.md +21 -0
- package/src/templates/es/memory/active_context.md +38 -0
- package/src/templates/es/memory/progress.md +35 -0
- package/src/templates/es/memory/project_brief.md +34 -0
- package/src/templates/es/memory/tech_context.md +44 -0
- package/src/templates/es/rules/rule-coding-standards.md +22 -0
- package/src/templates/es/skills/skill-agents.md +74 -0
- package/src/templates/es/skills/skill-api.md +117 -0
- package/src/templates/es/skills/skill-architecture.md +87 -0
- package/src/templates/es/skills/skill-generating.md +116 -0
- package/src/templates/es/skills/skill-git.md +108 -0
- package/src/templates/es/skills/skill-project-state.md +99 -0
- package/src/templates/es/skills/skill-react.md +94 -0
- package/src/templates/es/skills/skill-rules.md +100 -0
- package/src/templates/es/skills/skill-testing.md +139 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: react-patterns
|
|
3
|
+
description: Patrones de componentes React, hooks y mejores prácticas con TypeScript. Usar cuando se crean componentes, custom hooks u optimización de renderizado.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# React Patterns
|
|
7
|
+
|
|
8
|
+
Patrones y mejores prácticas para desarrollo React.
|
|
9
|
+
|
|
10
|
+
## Cuándo usar
|
|
11
|
+
|
|
12
|
+
- Crear componentes reutilizables
|
|
13
|
+
- Manejar estado complejo
|
|
14
|
+
- Optimizar rendimiento de renderizado
|
|
15
|
+
- Construir custom hooks
|
|
16
|
+
|
|
17
|
+
## Patrones de Componentes
|
|
18
|
+
|
|
19
|
+
### Componente Funcional con Props Tipadas
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
interface ButtonProps {
|
|
23
|
+
variant: 'primary' | 'secondary';
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
onClick?: () => void;
|
|
26
|
+
disabled?: boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function Button({ variant, children, onClick, disabled }: ButtonProps) {
|
|
30
|
+
return (
|
|
31
|
+
<button
|
|
32
|
+
className={`btn btn-${variant}`}
|
|
33
|
+
onClick={onClick}
|
|
34
|
+
disabled={disabled}
|
|
35
|
+
>
|
|
36
|
+
{children}
|
|
37
|
+
</button>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Custom Hook
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
function useToggle(initialValue = false) {
|
|
46
|
+
const [value, setValue] = useState(initialValue);
|
|
47
|
+
|
|
48
|
+
const toggle = useCallback(() => setValue(v => !v), []);
|
|
49
|
+
const setTrue = useCallback(() => setValue(true), []);
|
|
50
|
+
const setFalse = useCallback(() => setValue(false), []);
|
|
51
|
+
|
|
52
|
+
return { value, toggle, setTrue, setFalse };
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Compound Components
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
const Card = ({ children }) => <div className="card">{children}</div>;
|
|
60
|
+
Card.Header = ({ children }) => <div className="card-header">{children}</div>;
|
|
61
|
+
Card.Body = ({ children }) => <div className="card-body">{children}</div>;
|
|
62
|
+
|
|
63
|
+
// Uso:
|
|
64
|
+
<Card>
|
|
65
|
+
<Card.Header>Título</Card.Header>
|
|
66
|
+
<Card.Body>Contenido</Card.Body>
|
|
67
|
+
</Card>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Estructura de Directorios
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
components/
|
|
74
|
+
├── ui/ # Componentes base (Button, Input, Modal)
|
|
75
|
+
├── features/ # Componentes específicos de features
|
|
76
|
+
├── layouts/ # Layouts y wrappers
|
|
77
|
+
└── hooks/ # Custom hooks reutilizables
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Mejores prácticas
|
|
81
|
+
|
|
82
|
+
### ✅ Hacer
|
|
83
|
+
|
|
84
|
+
- Usar `useMemo` y `useCallback` para optimización
|
|
85
|
+
- Tipar todas las props con TypeScript
|
|
86
|
+
- Extraer lógica a custom hooks
|
|
87
|
+
- Composición sobre herencia
|
|
88
|
+
|
|
89
|
+
### ❌ Evitar
|
|
90
|
+
|
|
91
|
+
- Props drilling excesivo (usar Context)
|
|
92
|
+
- useEffect sin dependencias correctas
|
|
93
|
+
- Estado en el componente incorrecto
|
|
94
|
+
- Listas sin `key`
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: creating-rules
|
|
3
|
+
description: Definir documentación de reglas y estándares de código. Usar cuando se establecen o actualizan convenciones de código, reglas de linter o estándares de equipo.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Creando Reglas de Código
|
|
7
|
+
|
|
8
|
+
Definir y documentar estándares de código que agentes AI y desarrolladores deben seguir.
|
|
9
|
+
|
|
10
|
+
## Cuándo usar
|
|
11
|
+
|
|
12
|
+
- Establecer nuevas convenciones de código
|
|
13
|
+
- Documentar estándares de equipo existentes
|
|
14
|
+
- Añadir reglas de linter o formatter
|
|
15
|
+
- Clarificar patrones de código ambiguos
|
|
16
|
+
|
|
17
|
+
## Estructura del Documento de Regla
|
|
18
|
+
|
|
19
|
+
```markdown
|
|
20
|
+
# Regla: [Nombre de la Regla]
|
|
21
|
+
|
|
22
|
+
> Descripción breve de la regla
|
|
23
|
+
|
|
24
|
+
## Por qué existe esta regla
|
|
25
|
+
|
|
26
|
+
[Explica el problema que previene o beneficio que proporciona]
|
|
27
|
+
|
|
28
|
+
## Requisitos
|
|
29
|
+
|
|
30
|
+
- Requisito 1
|
|
31
|
+
- Requisito 2
|
|
32
|
+
|
|
33
|
+
## ✅ Ejemplos Correctos
|
|
34
|
+
|
|
35
|
+
[Código mostrando uso correcto]
|
|
36
|
+
|
|
37
|
+
## ❌ Ejemplos Incorrectos
|
|
38
|
+
|
|
39
|
+
[Código mostrando qué evitar]
|
|
40
|
+
|
|
41
|
+
## Excepciones
|
|
42
|
+
|
|
43
|
+
[Excepciones válidas o "Sin excepciones"]
|
|
44
|
+
|
|
45
|
+
## Enforcement
|
|
46
|
+
|
|
47
|
+
- [ ] Regla de linter: [nombre de regla]
|
|
48
|
+
- [ ] Checklist de code review
|
|
49
|
+
- [ ] Test automatizado
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Categorías Comunes de Reglas
|
|
53
|
+
|
|
54
|
+
### Estilo de Código
|
|
55
|
+
|
|
56
|
+
- Convenciones de nombres (camelCase, PascalCase)
|
|
57
|
+
- Organización de archivos
|
|
58
|
+
- Orden de imports
|
|
59
|
+
- Estándares de comentarios
|
|
60
|
+
|
|
61
|
+
### Arquitectura
|
|
62
|
+
|
|
63
|
+
- Estructura de componentes
|
|
64
|
+
- Patrones de gestión de estado
|
|
65
|
+
- Patrones de diseño de API
|
|
66
|
+
- Manejo de errores
|
|
67
|
+
|
|
68
|
+
### Calidad
|
|
69
|
+
|
|
70
|
+
- Requisitos de cobertura de tests
|
|
71
|
+
- Umbrales de rendimiento
|
|
72
|
+
- Prácticas de seguridad
|
|
73
|
+
- Estándares de accesibilidad
|
|
74
|
+
|
|
75
|
+
## Escribiendo Reglas Efectivas
|
|
76
|
+
|
|
77
|
+
### ✅ Hacer
|
|
78
|
+
|
|
79
|
+
- Proporcionar ejemplos concretos
|
|
80
|
+
- Explicar el "por qué" no solo el "qué"
|
|
81
|
+
- Incluir ejemplos correctos e incorrectos
|
|
82
|
+
- Hacer reglas aplicables (linter, tests)
|
|
83
|
+
|
|
84
|
+
### ❌ Evitar
|
|
85
|
+
|
|
86
|
+
- Requisitos vagos
|
|
87
|
+
- Reglas sin ejemplos
|
|
88
|
+
- Reglas conflictivas
|
|
89
|
+
- Excepciones demasiado estrictas
|
|
90
|
+
|
|
91
|
+
## Organización de Archivos
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
.context/
|
|
95
|
+
└── rules/
|
|
96
|
+
├── coding-standards.md # Estándares principales
|
|
97
|
+
├── naming-conventions.md # Reglas de nombres
|
|
98
|
+
├── testing-rules.md # Requisitos de tests
|
|
99
|
+
└── security-rules.md # Prácticas de seguridad
|
|
100
|
+
```
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testing-practices
|
|
3
|
+
description: Estrategias de testing, patrones y mejores prácticas con Jest/Vitest. Usar cuando se escriben unit tests, integration tests o mocking de dependencias.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Testing Practices
|
|
7
|
+
|
|
8
|
+
Estrategias y patrones para testing efectivo.
|
|
9
|
+
|
|
10
|
+
## Cuándo usar
|
|
11
|
+
|
|
12
|
+
- Escribir unit tests
|
|
13
|
+
- Crear integration tests
|
|
14
|
+
- Mockear dependencias
|
|
15
|
+
- Testear componentes React
|
|
16
|
+
|
|
17
|
+
## Pirámide de Testing
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
/\
|
|
21
|
+
/ \ E2E Tests (Playwright, Cypress)
|
|
22
|
+
/----\
|
|
23
|
+
/ \ Integration Tests
|
|
24
|
+
/--------\
|
|
25
|
+
/ \ Unit Tests
|
|
26
|
+
/____________\
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Unit Tests (Vitest)
|
|
30
|
+
|
|
31
|
+
### Test Básico
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { describe, it, expect } from 'vitest';
|
|
35
|
+
import { sum } from './sum';
|
|
36
|
+
|
|
37
|
+
describe('sum', () => {
|
|
38
|
+
it('debería sumar dos números positivos', () => {
|
|
39
|
+
expect(sum(1, 2)).toBe(3);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('debería manejar números negativos', () => {
|
|
43
|
+
expect(sum(-1, 1)).toBe(0);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Test con Setup/Teardown
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
describe('UserService', () => {
|
|
52
|
+
let service: UserService;
|
|
53
|
+
|
|
54
|
+
beforeEach(() => {
|
|
55
|
+
service = new UserService();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
afterEach(() => {
|
|
59
|
+
vi.clearAllMocks();
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('debería crear un usuario', async () => {
|
|
63
|
+
const user = await service.create({ name: 'Test' });
|
|
64
|
+
expect(user.id).toBeDefined();
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Mocking
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
// Mock de módulo
|
|
73
|
+
vi.mock('./database', () => ({
|
|
74
|
+
query: vi.fn().mockResolvedValue([{ id: 1, name: 'Test' }])
|
|
75
|
+
}));
|
|
76
|
+
|
|
77
|
+
// Mock de función
|
|
78
|
+
const mockFetch = vi.fn().mockResolvedValue({
|
|
79
|
+
json: () => Promise.resolve({ data: 'test' })
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// Spy
|
|
83
|
+
const spy = vi.spyOn(console, 'log');
|
|
84
|
+
myFunction();
|
|
85
|
+
expect(spy).toHaveBeenCalledWith('mensaje esperado');
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## React Testing Library
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
import { render, screen, fireEvent } from '@testing-library/react';
|
|
92
|
+
|
|
93
|
+
test('debería mostrar e interactuar con botón', async () => {
|
|
94
|
+
const handleClick = vi.fn();
|
|
95
|
+
render(<Button onClick={handleClick}>Click me</Button>);
|
|
96
|
+
|
|
97
|
+
const button = screen.getByRole('button', { name: /click me/i });
|
|
98
|
+
expect(button).toBeInTheDocument();
|
|
99
|
+
|
|
100
|
+
await fireEvent.click(button);
|
|
101
|
+
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Estructura de Tests
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
__tests__/
|
|
109
|
+
├── unit/
|
|
110
|
+
│ ├── services/
|
|
111
|
+
│ └── utils/
|
|
112
|
+
├── integration/
|
|
113
|
+
│ └── api/
|
|
114
|
+
└── e2e/
|
|
115
|
+
└── flows/
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Mejores prácticas
|
|
119
|
+
|
|
120
|
+
### ✅ Hacer
|
|
121
|
+
|
|
122
|
+
- Una aserción por test (cuando sea posible)
|
|
123
|
+
- Nombres descriptivos: `debería_X_cuando_Y`
|
|
124
|
+
- Arrange-Act-Assert (AAA)
|
|
125
|
+
- Tests independientes
|
|
126
|
+
|
|
127
|
+
### ❌ Evitar
|
|
128
|
+
|
|
129
|
+
- Tests que dependen del orden
|
|
130
|
+
- Lógica en tests
|
|
131
|
+
- Tests flaky (intermitentes)
|
|
132
|
+
- Mockear todo indiscriminadamente
|
|
133
|
+
|
|
134
|
+
## Cobertura Recomendada
|
|
135
|
+
|
|
136
|
+
- Statements: 80%
|
|
137
|
+
- Branches: 75%
|
|
138
|
+
- Functions: 80%
|
|
139
|
+
- Lines: 80%
|