Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .atl/skill-registry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Skill Registry — opencode

**Generated**: 2026-04-21
**Mode**: engram

## User Skills

| Name | Description | Trigger | Location |
|------|-------------|---------|----------|
| effect | Answer questions about the Effect framework | Effect-related questions | `.opencode/skills/effect` (project) |
| go-testing | Go testing patterns for Gentleman.Dots, including Bubbletea TUI testing | Writing Go tests, using teatest, or adding test coverage | `~/.claude/skills/go-testing` |
| judgment-day | Parallel adversarial review protocol — dual blind judge sub-agents | "judgment day", "review adversarial", "dual review" | `~/.claude/skills/judgment-day` |
| skill-creator | Creates new AI agent skills following the Agent Skills spec | Creating a new skill, adding agent instructions, documenting patterns | `~/.claude/skills/skill-creator` |
| issue-creation | Issue creation workflow for Agent Teams Lite (issue-first enforcement) | Creating a GitHub issue, reporting a bug, requesting a feature | `~/.claude/skills/issue-creation` |
| branch-pr | PR creation workflow for Agent Teams Lite (issue-first enforcement) | Creating a pull request, opening a PR, preparing changes for review | `~/.claude/skills/branch-pr` |

## SDD Skills (internal, not auto-loaded)

| Name | Phase | Location |
|------|-------|----------|
| sdd-init | Project initialization | `~/.claude/skills/sdd-init` |
| sdd-explore | Investigation before committing to a change | `~/.claude/skills/sdd-explore` |
| sdd-propose | Change proposal with intent, scope, approach | `~/.claude/skills/sdd-propose` |
| sdd-spec | Specifications with requirements and scenarios | `~/.claude/skills/sdd-spec` |
| sdd-design | Technical design document | `~/.claude/skills/sdd-design` |
| sdd-tasks | Implementation task checklist | `~/.claude/skills/sdd-tasks` |
| sdd-apply | Code implementation following specs/design | `~/.claude/skills/sdd-apply` |
| sdd-verify | Validate implementation against specs | `~/.claude/skills/sdd-verify` |
| sdd-archive | Sync and archive completed change | `~/.claude/skills/sdd-archive` |
| sdd-onboard | Guided SDD workflow walkthrough | `~/.claude/skills/sdd-onboard` |

## Project Conventions

| File | Role | Key Rules |
|------|------|-----------|
| `AGENTS.md` (root) | Style guide + repo rules | Bun APIs preferred, no `try`/`catch`, functional array methods, self-export pattern in `src/config`, snake_case for Drizzle schemas, tests from package dirs only |
| `packages/opencode/AGENTS.md` | Database + Effect + module conventions | Drizzle schema in `**/*.sql.ts`, snake_case columns, no `export namespace Foo {}`, use `export * as Foo from "./foo"`, Effect v4 patterns (`Effect.gen`, `Effect.fn`, `makeRuntime`, `InstanceState`), `Instance.bind` for native callbacks |
| `packages/opencode/test/AGENTS.md` | Test fixtures + Effect testing | `tmpdir()` fixture with `await using`, `testEffect(...)` for Effect tests, `it.live` vs `it.effect`, `provideTmpdirInstance` pattern |

## Deduplication Notes

- Both `~/.claude/skills/` and `~/.config/opencode/skills/` contain identical skill sets. User-level dir (`~/.claude/skills/`) is the canonical source.
- `.opencode/skills/` contains one project-specific skill: `effect`.
190 changes: 190 additions & 0 deletions .claude/memory/github-pr-template-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# Guía: Crear Issues y PRs en anomalyco/opencode sin errores de template

## Problema recurrente

Los PRs creados reciben un comentario automático de `github-actions` diciendo:
> "This PR doesn't fully meet our contributing guidelines and PR template."

Esto sucede porque el campo `--body` no sigue el formato del template ubicado en `.github/pull_request_template.md`.

---

## 1. ANTES de crear un Issue

### Buscar duplicados PRIMERO

```bash
gh issue list --repo anomalyco/opencode --search "<keywords del bug>" --state all --limit 10
```

Ejemplo concreto (lo que debí hacer):
```bash
gh issue list --repo anomalyco/opencode --search "compaction tool call" --state all --limit 10
```

**Si ya existe:**
- Usar el número existente para asociar al PR con `--body "Closes #XXXX"`
- No crear issue duplicado

---

## 2. Crear un Issue (solo si no existe)

Template mínimo válido:
```markdown
### Bug Description

[Descripción clara del bug]

### Steps to Reproduce

1. [Paso 1]
2. [Paso 2]

### Expected Behavior

[Qué debería pasar]

### Actual Behavior

[Qué pasa en realidad]

### Environment

- OpenCode version: [ej. 1.14.19]
- OS: [ej. Windows 11]
```

Command:
```bash
git checkout -b fix/NUEVO-ISSUE-descripcion-corta
git push fork fix/NUEVO-ISSUE-descripcion-corta
gh issue create --title "fix: descripcion corta" --body-file issue-body.md
```

---

## 3. ANTES de crear un PR

### Paso A: Leer el PR template del repo

```bash
cat .github/pull_request_template.md
```

El template tiene 5 secciones OBLIGATORIAS:
1. **Issue for this PR** (closes #XXXX — OBLIGATORIO)
2. **Type of change** (checkboxes — al menos uno marcado con `[x]`)
3. **What does this PR do?** (descripción del cambio — OBLIGATORIO)
4. **How did you verify your code works?** (tests, typecheck, manual QA)
5. **Checklist** (2 checkboxes — `[x]` requerido)

### Paso B: Crear el body en un archivo temporal

```bash
cat > /tmp/pr-body.md << 'EOF'
### Issue for this PR

Closes #23709

### Type of change

- [x] Bug fix
- [ ] New feature
- [ ] Refactor / code improvement
- [ ] Documentation

### What does this PR do?

[DESCRIPCION DEL FIX — por qué el cambio, qué hace, y cómo lo verifica]

### How did you verify your code works?

- [Checklist de verificación]

### Checklist

- [x] I have tested my changes locally
- [x] I have not included unrelated changes in this PR
EOF
```

### Paso C: Crear el PR con --body-file (NO --body directo)

```bash
git checkout -b fix/XXXX-...
git add [archivos-cambiados]
git commit -m "fix(scope): descripcion concisa"
git push fork fix/XXXX-... --no-verify # si hay problemas de husky

git fetch origin
gh pr create --base dev \
--head herjarsa:fix/XXXX-... \
--title "fix(scope): descripcion en presente" \
--body-file /tmp/pr-body.md
```

**IMPORTANTE:**
- Usar `--body-file` con un archivo temporal, NUNCA `--body` directo con texto largo
- El title usa conventional commits: `fix(scope): ...`, `feat(scope): ...`
- `fix` → bug, `feat` → feature
- Siempre referenciar el issue con `Closes #XXXX` en la primer línea del body

---

## 4. Errores comunes a EVITAR

| Error | Consecuencia | Solución |
|-------|-------------|----------|
| `--body "texto corto sin template"` | PR flagged automáticamente por github-actions | Usar `--body-file` con template completo |
| Sin `Closes #XXXX` | PR sin issue asociado | Siempre buscar issue existente primero |
| `[ ]` sin `[x]` en checkboxes | Template incompleto | Marcar `[x]` en al menos un type de change y checklist |
| Descripción "pasteada de AI sin entender" | PR puede ser IGNORADO | Escribir la descripción vos, corta y técnica |
| Faltar campo "What does this PR do?" | Rejected automáticamente | Es OBLIGATORIO |

---

## 5. Workflow recomendado (step-by-step)

1. **Detectar bug/idea**
2. **Buscar issue existente**:
```bash
gh issue list --search "<keywords>" --state all
```
3. **Si no existe issue** → crear issue con `gh issue create`
4. **Crear branch**: `git checkout -b fix/XXXX-descripcion`
5. **Implementar fix** (delegar a subagent si es complejo)
6. **Verificar**:
```bash
bun typecheck # o el build del proyecto
```
7. **Commit**: `git commit -m "fix(scope): ..."`
8. **Push**: `git push fork fix/XXXX-descripcion --no-verify`
9. **Preparar body**: `cat > .tmp-body.md` con TODAS las secciones del template
10. **Crear PR**: `gh pr create --body-file .tmp-body.md`
11. **Eliminar archivo temporal**: `rm .tmp-body.md`

---

## Archivos de referencia en este repo

- Template: `.github/pull_request_template.md`
- Contributing: `CONTRIBUTING.md`

---

## Comandos de utilidad rápida

```bash
# Buscar issues existentes
gh issue list --search "compaction error" --state all -L 5

# Ver últimos comentarios de un PR
gh pr view 24290 --json comments --jq '.comments | last'

# Editar descripción de PR existente
gh pr edit 24290 --body-file nueva-descripcion.md

# Ver estado de tus PRs abiertos
gh pr status
```
10 changes: 10 additions & 0 deletions .playwright-mcp/console-2026-04-24T05-00-47-884Z.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[ 3246ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 3247ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 3247ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 3256ms] [ERROR] Failed to load resource: the server responded with a status of 404 () @ https://github.com/anomalyco/opencode/issues/23794/edit_form?textarea_id=issue-4306990847-body&comment_context=:0
10 changes: 10 additions & 0 deletions .playwright-mcp/console-2026-04-24T10-00-56-475Z.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[ 2389ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 2390ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 2390ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 2703ms] [ERROR] Failed to load resource: the server responded with a status of 404 () @ https://github.com/anomalyco/opencode/issues/23794/edit_form?textarea_id=issue-4306990847-body&comment_context=:0
10 changes: 10 additions & 0 deletions .playwright-mcp/console-2026-04-24T11-56-16-408Z.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[ 2450ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 2451ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 2451ms] [ERROR] Error: Not connected to alive
at s (https://github.githubassets.com/assets/71482-c25b6c5b293ccef4.js:2:3336)
at https://github.githubassets.com/assets/11765-79df61123dab47bc.js:5:112782 @ https://github.githubassets.com/assets/11765-79df61123dab47bc.js:4
[ 2703ms] [ERROR] Failed to load resource: the server responded with a status of 404 () @ https://github.com/anomalyco/opencode/issues/23794/edit_form?textarea_id=issue-4306990847-body&comment_context=:0
Loading
Loading