feat: host como jugador #2
58
.atl/skill-registry.md
Normal file
58
.atl/skill-registry.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
# Skill Registry
|
||||||
|
|
||||||
|
**Delegator use only.** Any agent that launches sub-agents reads this registry to resolve compact rules, then injects them directly into sub-agent prompts. Sub-agents do NOT read this registry or individual SKILL.md files.
|
||||||
|
|
||||||
|
See `_shared/skill-resolver.md` for the full resolution protocol.
|
||||||
|
|
||||||
|
## User Skills
|
||||||
|
|
||||||
|
| Trigger | Skill | Path |
|
||||||
|
|---------|-------|------|
|
||||||
|
| When creating a pull request, opening a PR, or preparing changes for review | branch-pr | /Users/freetlab/.config/opencode/skills/branch-pr/SKILL.md |
|
||||||
|
| When creating a GitHub issue, reporting a bug, or requesting a feature | issue-creation | /Users/freetlab/.config/opencode/skills/issue-creation/SKILL.md |
|
||||||
|
| When user says "judgment day", "judgment-day", "review adversarial", "dual review", "doble review", "juzgar", "que lo juzguen" | judgment-day | /Users/freetlab/.config/opencode/skills/judgment-day/SKILL.md |
|
||||||
|
| When user asks to create a new skill, add agent instructions, or document patterns for AI | skill-creator | /Users/freetlab/.config/opencode/skills/skill-creator/SKILL.md |
|
||||||
|
|
||||||
|
## Compact Rules
|
||||||
|
|
||||||
|
Pre-digested rules per skill. Delegators copy matching blocks into sub-agent prompts as `## Project Standards (auto-resolved)`.
|
||||||
|
|
||||||
|
### branch-pr
|
||||||
|
- Every PR MUST link an approved issue — no exceptions
|
||||||
|
- Every PR MUST have exactly one `type:*` label
|
||||||
|
- Automated checks must pass before merge is possible
|
||||||
|
- Branch names must match: `^(feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)/[a-z0-9._-]+$`
|
||||||
|
- Conventional commits: `^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([a-z0-9\._-]+\))?!?: .+`
|
||||||
|
- Commit type determines PR label: feat→type:feature, fix→type:bug, docs→type:docs, refactor→type:refactor, chore→type:chore, style→type:chore, perf→type:feature, test→type:chore, build→type:chore, ci→type:chore, revert→type:bug
|
||||||
|
- PR body must contain: Closes #N (linked issue), PR type checkbox, Summary, Changes Table, Test Plan
|
||||||
|
|
||||||
|
### issue-creation
|
||||||
|
- Blank issues are disabled — MUST use a template (bug report or feature request)
|
||||||
|
- Every issue gets `status:needs-review` automatically on creation
|
||||||
|
- A maintainer MUST add `status:approved` before any PR can be opened
|
||||||
|
- Questions go to Discussions, not issues
|
||||||
|
- Bug report template required fields: Pre-flight Checks, Bug Description, Steps to Reproduce, Expected Behavior, Actual Behavior, Operating System, Agent/Client, Shell
|
||||||
|
- Feature request template required fields: Pre-flight Checks, Problem Description, Proposed Solution, Affected Area
|
||||||
|
|
||||||
|
### judgment-day
|
||||||
|
- Launch TWO sub-agents via delegate (async, parallel — never sequential)
|
||||||
|
- Each agent receives the same target but works independently
|
||||||
|
- Neither agent knows about the other — no cross-contamination
|
||||||
|
- Classify warnings as WARNING (real) or WARNING (theoretical)
|
||||||
|
- If confirmed CRITICALs or real WARNINGs exist → delegate Fix Agent
|
||||||
|
- After Fix Agent completes → re-launch both judges in parallel
|
||||||
|
- After 2 fix iterations, if issues remain → escalate to user
|
||||||
|
|
||||||
|
### skill-creator
|
||||||
|
- Create a skill when: pattern is used repeatedly, project-specific conventions differ, complex workflows need steps, decision trees help AI
|
||||||
|
- Don't create a skill when: documentation exists, pattern is trivial, one-off task
|
||||||
|
- Skill structure: frontmatter (name, description, triggers, allowed-tools), Critical Rules, When to Use, Patterns, Commands
|
||||||
|
|
||||||
|
## Project Conventions
|
||||||
|
|
||||||
|
| File | Path | Notes |
|
||||||
|
|------|------|-------|
|
||||||
|
| SPEC.md | /Users/freetlab/Proyectos/farolero/SPEC.md | Existing SDD artifacts with Explore/Propose/Spec/Tasks/Apply/Verify phases |
|
||||||
|
| .gga | /Users/freetlab/Proyectos/farolero/.gga | Gentleman Guardian Angel config (AI provider, file patterns, rules file) |
|
||||||
|
|
||||||
|
Read the convention files listed above for project-specific patterns and rules. All referenced paths have been extracted — no need to read index files to discover more.
|
||||||
50
.gga
Normal file
50
.gga
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Gentleman Guardian Angel Configuration
|
||||||
|
# https://github.com/your-org/gga
|
||||||
|
|
||||||
|
# AI Provider (required)
|
||||||
|
# Options: claude, gemini, codex, opencode, ollama:<model>, lmstudio[:model], github:<model>
|
||||||
|
# Examples:
|
||||||
|
# PROVIDER="claude"
|
||||||
|
# PROVIDER="gemini"
|
||||||
|
# PROVIDER="codex"
|
||||||
|
# PROVIDER="opencode"
|
||||||
|
# PROVIDER="opencode:anthropic/claude-opus-4-5"
|
||||||
|
# PROVIDER="ollama:llama3.2"
|
||||||
|
# PROVIDER="ollama:codellama"
|
||||||
|
# PROVIDER="lmstudio"
|
||||||
|
# PROVIDER="lmstudio:qwen2.5-coder-7b-instruct"
|
||||||
|
# PROVIDER="github:gpt-4o"
|
||||||
|
# PROVIDER="github:deepseek-r1"
|
||||||
|
PROVIDER="claude"
|
||||||
|
|
||||||
|
# File patterns to include in review (comma-separated)
|
||||||
|
# Default: * (all files)
|
||||||
|
# Examples:
|
||||||
|
# FILE_PATTERNS="*.ts,*.tsx"
|
||||||
|
# FILE_PATTERNS="*.py"
|
||||||
|
# FILE_PATTERNS="*.go,*.mod"
|
||||||
|
FILE_PATTERNS="*.ts,*.tsx,*.js,*.jsx"
|
||||||
|
|
||||||
|
# File patterns to exclude from review (comma-separated)
|
||||||
|
# Default: none
|
||||||
|
# Examples:
|
||||||
|
# EXCLUDE_PATTERNS="*.test.ts,*.spec.ts"
|
||||||
|
# EXCLUDE_PATTERNS="*_test.go,*.mock.ts"
|
||||||
|
EXCLUDE_PATTERNS="*.test.ts,*.spec.ts,*.test.tsx,*.spec.tsx,*.d.ts"
|
||||||
|
|
||||||
|
# File containing code review rules
|
||||||
|
# Default: AGENTS.md
|
||||||
|
RULES_FILE="AGENTS.md"
|
||||||
|
|
||||||
|
# Strict mode: fail if AI response is ambiguous
|
||||||
|
# Default: true
|
||||||
|
STRICT_MODE="true"
|
||||||
|
|
||||||
|
# Timeout in seconds for AI provider response
|
||||||
|
# Default: 300 (5 minutes)
|
||||||
|
# Increase for large changesets or slow connections
|
||||||
|
TIMEOUT="300"
|
||||||
|
|
||||||
|
# Base branch for --pr-mode (auto-detects main/master/develop if empty)
|
||||||
|
# Default: auto-detect
|
||||||
|
# PR_BASE_BRANCH="main"
|
||||||
@@ -230,7 +230,7 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
|
|||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
DropdownButtonFormField<String>(
|
DropdownButtonFormField<String>(
|
||||||
value: seleccionado,
|
initialValue: seleccionado,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
prefixIcon: const Icon(Icons.person),
|
prefixIcon: const Icon(Icons.person),
|
||||||
hintText: l10n.selectProfile,
|
hintText: l10n.selectProfile,
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
|
|||||||
),
|
),
|
||||||
const SizedBox(height: 12),
|
const SizedBox(height: 12),
|
||||||
DropdownButtonFormField<String>(
|
DropdownButtonFormField<String>(
|
||||||
value: _perfilSeleccionado,
|
initialValue: _perfilSeleccionado,
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
prefixIcon: const Icon(Icons.person),
|
prefixIcon: const Icon(Icons.person),
|
||||||
hintText: l10n.selectProfile,
|
hintText: l10n.selectProfile,
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:farolero/estado/estado_juego.dart';
|
import 'package:farolero/estado/estado_juego.dart';
|
||||||
import 'package:farolero/modelos/palabra.dart';
|
|
||||||
import 'package:farolero/modelos/partida.dart';
|
import 'package:farolero/modelos/partida.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:farolero/estado/estado_juego.dart';
|
import 'package:farolero/estado/estado_juego.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import 'package:flutter/widgets.dart';
|
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
import 'package:farolero/modelos/usuario.dart';
|
import 'package:farolero/modelos/usuario.dart';
|
||||||
import 'package:farolero/servicios/servicio_nearby.dart';
|
import 'package:farolero/servicios/servicio_nearby.dart';
|
||||||
|
|||||||
Reference in New Issue
Block a user