Developer team router. Toma 1 ticket de 04-tickets.yaml. Decide owner según owner_eligibility (qwen-opencode preferido para BE/FE no-agentic; Opus 4.7 obligatorio para AGENTIC). Para qwen → invoca via Bash con prompt pre-cocido. Para Opus → spawna agent builder-{be,fe,agentic}. Mantiene T-{n}-impl-log.md vivo. TDD obligatorio. Corre /test-{backend,frontend} + Playwright + agentic evals. Push commit. Update ticket state. Activa cuando user dice: '/dev-team', 'tomá ticket T-N', 'implementá T-N', 'arrancá build'.
70
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Owner:
T-{n}-impl-log.md+T-{n}-result.md. Toma 1 ticket → ejecuta TDD → push.
04-tickets.yaml — pila tickets del storyT-{n} con state: ready)T-{n}-handoff.md — input self-contained (architect lo escribió)cat docs/projects/active/PI-N/sprints/SN/stories/{id}/04-tickets.yamlFiltrar tickets con state: ready (deps cumplidas).
Decidir owner según owner_eligibility:
| Surface | Owner preferido | Razón |
|---|---|---|
| BE no-agentic | qwen-opencode | costo, qwen capable |
| FE no-agentic | qwen-opencode | costo, qwen capable |
| AGENTIC | claude-opus (este session, NO opencode) | brand voice + protected surfaces + Opus prompt eng |
| Migration aislada | qwen-opencode | trivial |
| Cross-module shared | claude-sonnet o opus | complexity |
Reglas hard:
Update 04-tickets.yaml ticket T-{n}:
state: assigned
assigned_to: qwen-opencode | claude-opus | claude-sonnet
assigned_at: 2026-05-04T...
transitions:
- { state: assigned, at: ..., by: "/dev-team", to: "<owner>" }Crear T-{n}-impl-log.md con plan inicial.
# Construir prompt para qwen
cat > /tmp/T-{n}-qwen-prompt.md <<EOF
Eres developer Nicolify ejecutando T-{n} de story {id}.
Lee SOLO estos archivos (self-contained):
- $(realpath docs/projects/active/PI-N/sprints/SN/stories/{id}/05-impl/T-{n}-handoff.md)
- $(realpath docs/projects/active/PI-N/sprints/SN/stories/{id}/01-spec.md) — sección scenarios relevantes
- $(realpath docs/projects/active/PI-N/sprints/SN/stories/{id}/03-arch-{be|fe}.md)
Reglas TDD obligatorias:
1. RED: escribí tests que fallen primero
2. GREEN: implementá mínimo para pasar
3. REFACTOR: limpiar
Convenciones (.claude/rules/*):
- backend-ddd.md o frontend-fsd.md
- tenant-isolation.md
- spanish-text.md (Spanish neutro, no voseo)
- backend-migrations.md (idempotente)
Quality gates antes push:
- /test-backend o /test-frontend completo verde
- Coverage no baja
- Mypy strict si aplica
Mantenelo el T-{n}-impl-log.md actualizado VIVO mientras trabajás.
Output al terminar:
- T-{n}-result.md con diff resumen + quality gates output literal + commit SHA
- Estado ticket: pushed
EOF
# Invocar opencode con qwen
cd /home/chris/AISALESHT
opencode run \
--prompt-file /tmp/T-{n}-qwen-prompt.md \
--workspace /home/chris/AISALESHT \
--model qwen-coder \
--max-iterations 50
# Si opencode falla / API no disponible → fallback: copiá prompt + Chris ejecuta manual:
# echo "Pegá esto en opencode CLI: $(cat /tmp/T-{n}-qwen-prompt.md)"Mientras qwen trabaja → vos NO interferís. Cuando termina:
T-{n}-result.md existe y dice state: pushed04-tickets.yaml ticket → state: pushed/auditorSpawnás agent builder-agentic (Opus 4.7) via Agent tool:
Agent({
description: "Build agentic ticket T-{n}",
subagent_type: "builder-agentic",
prompt: "<files_to_read>: docs/projects/.../T-{n}-handoff.md, 01-spec.md, 03-arch-agentic.md, 02-design-agentic.md, story YAML
Skill consultados obligatorio: copilot-expert/sales-agent-expert + tessl__langgraph + claude-api + graceful-degradation
TDD: eval goldens RED first, integration tests, tools tests, etc
Output: T-{n}-result.md + commit pushed
Last line: done -> path/to/T-{n}-result.md"
})builder-agentic corre tests + eval suite (pytest tests/agentic_evals/{m}/{story}_eval.py --trials=3) + push. Devuelve done -> T-{n}-result.md.
Spawnás agent builder-backend o builder-frontend con model=sonnet (default).
Mientras el dev (qwen | builder-{be,fe,agentic}) trabaja, vos:
T-{n}-impl-log.md periodically con timestamps "still in progress"blocked → registrar en log + escala /pmCuando dev termina, leer T-{n}-result.md:
git push origin development)?Si cualquier gap → ticket vuelve a tests-failing o building. Si dev itera ≥5x sin éxito → blocked + escala.
Update 04-tickets.yaml:
state: pushed
push_commit_sha: abc1234
transitions:
- { state: tests-passing, ... }
- { state: pushed, ..., commit: "abc1234" }Output:
T-{n} pushed (commit abc1234).
Acceptance criteria self-verified: A1✅ A2✅ A3✅
Quality gates: /test-backend verde
Próximo: /auditor lee T-{n}-result.md + corre tests independientes.Update checkpoint:
phase: DEV_T{n} → AUDIT_T{n}
last_artifact: T-{n}-result.md
next_action: "/auditor toma T-{n} para review"Si 2 tickets independientes (no depends_on) están ready simultáneamente:
git add . / git add -A / git add -u (parallel-safety)git commit --no-verifygit pull antes commit (parallel-safety)git pull. STOP, escala.Cada update al user/PM:
alpacapurpura/ap_sales_agent
d31f7bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.