CommunityProgramación y desarrollogithub.com

benbird316/maybe-im-smart

Desbloqueo cuando una tarea itera sin converger; y auditoría estructural de correspondencias entre dominios.

¿Qué es maybe-im-smart?

Este skill está diseñado para salir de situaciones de estancamiento donde el mismo problema se repite sin avance, como iteraciones interminables, bucles de preguntas-respuestas, o la sensación de que no hay un camino visible. En lugar de generar mejores ideas, el skill propone un cambio de enfoque: primero descompone el atasco en cuatro columnas (mantener, bloquear, atascado, restricciones), luego busca prácticas existentes en el mismo dominio o en campos distintos a través de una búsqueda estructurada en tres etapas (dirección, verificación, relleno de brechas), y finalmente traduce las prácticas encontradas de vuelta al dominio original como acciones concretas. La otra mitad del skill es una función de auditoría que evalúa la consistencia estructural de una correspondencia entre dominios (por ejemplo, una analogía) sin juzgar su verdad factual. El skill es útil para usuarios de asistentes de IA como Claude, Cursor o Codex cuando se enfrentan a bloqueos de tipo deadlock, stuck o blocked, y proporciona comandos Python para validar y aplicar los resultados.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/benbird316/maybe-im-smart/tree/HEAD

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

maybe-im-smart: mantén el objetivo, busca en otro lado una práctica existente

El resultado es una acción — el actor, el primer paso de esta semana, cómo saber que funcionó. No una idea.

Criterio: una vez cargado, si proceder

Se carga solo cuando se activa un disparador en la description. Después de cargar, pasa el primer filtro: el siguiente paso debe estar fuera de vista — que sea difícil no cuenta, solo que no haya candidato. Luego el segundo filtro: qué falta — solo la primera categoría pasa por este procedimiento:

Qué faltaDónde irLímite
Falta la acción (qué se debe hacer)Este procedimientoSolo esta categoría necesita buscar en otro lado una práctica
Falta el hecho (qué es)BúscaloPreguntar al usuario sobre lo que la IA puede buscar pierde su tiempo
Falta la restricción (qué no se puede mover)Pregunta, y pregunta con precisiónSolo pregunta "qué no se puede mover"; preguntar "cómo hacerlo" devuelve el espacio de acción

Varios otros casos no pertenecen aquí. El siguiente paso es conocido y solo no deseado = un problema de ejecución. Un punto muerto en el sentido técnico (hilos esperándose entre sí, bucles de llamadas a herramientas, tormentas de reintentos) = un error que corregir, no el intercambio de "el usuario pregunta repetidamente a la IA, la IA pregunta repetidamente al usuario"; ese intercambio es la categoría "≥3 rondas de preguntas-respuestas". Lluvia de ideas sin punto de bloqueo = solo pide ideas. Pulir y explicar = no hay dominio de recuperación al que cambiar.

La otra mitad es la auditoría, que se salta el juicio y el anuncio anterior. Para juzgar una correspondencia entre dominios existente por su consistencia estructural (antes de que entre en una cadena de razonamiento, o antes de que su mecanismo se traslade al dominio A), lee directamente references/audit.md; solo estructura, no si la analogía es verdadera.

Autocomprobación: no es necesario esperar a que el usuario hable

Las señales de evento externo se pueden contar a partir del registro. Las señales siguientes son solo del lado de la IA y solo la IA puede admitirlas:

  • La acción sustancial de la respuesta actual de la IA es hacer que el usuario elija entre candidatos (pedir una elección, no un hecho)
  • Entre los candidatos que la IA está a punto de plantear, ninguno es algo que el usuario no haya planteado

Si se cumple alguna, eso cuenta como bloqueado, y los dos filtros "siguiente paso fuera de vista" y "lo que falta es una acción" ya no necesitan cumplirse.

Cuando el juicio se sostiene, anuncia el disparador para que el usuario pueda rechazarlo o degradarlo en el momento:

<esa única evidencia> — ejecuta una ronda con maybe-im-smart, en tres pasos: descomposición, recuperación, aterrizaje (references/probe.md).

Copia <esa única evidencia> textualmente de la entrada activada en description, o de la frase que la IA admitió; no la reescribas como resumen.

Si no se sostiene, no digas una palabra.

1. Clasificar el tipo de tarea

TipoForma del punto de bloqueoEjemplo
DetecciónDebe descubrir si algo existe o no; errores de omisión o falsos positivosRevisiones que aún pasan por alto
BloqueoDebe detener que algo ocurraEl mismo incidente se repite
AsignaciónRecursos limitados divididos entre varias necesidadesConflictos de horarios, división de presupuesto
CoordinaciónLas acciones de varias partes deben mantenerse consistentesDistorsión en el traspaso, consenso entre equipos
SincronizaciónEl orden o el ritmo fallanInversión de dependencias, retraso en la retroalimentación
ContinuidadEl sistema no debe colapsar ante una perturbaciónCapacidad máxima alcanzada, personas clave que se van
DecisiónDebe concluir mientras la información está incompletaSi liberar con evidencia insuficiente

Si ninguno encaja, inventa un nombre. Esta tabla solo fuerza a que salga "qué forma tiene este problema".

2. Descomposición: cuatro columnas

ColumnaQué preguntaEjemplo (defectos pasados por alto en revisión de código)
keep lo que debe mantenerse¿Qué lo mantiene funcionando ahora? Muévelo y todo colapsaUn juicio independiente antes de fusionar
block lo que debe bloquearse¿Qué fallo está ocurriendo?Hay un juicio pero no actúa como tal
stuck dónde está atascadoUna frase "quiero X, pero me falta Y"Aumentar la tasa de detección, pero añadir personas la reduce
constraints lo que no debe moverseEscribe la única restricción realmente afectadaNo se puede añadir personal; no se puede extender el plazo

Más allá de las cuatro columnas, mantén la tabla de operaciones del dominio A ops_A — name: input → output, objetos bajo sus nombres reales. El filtro de aterrizaje la usa para subject (¿en dominio A?) y action (¿una acción antigua renombrada?).

Descomposición fallida = el punto de bloqueo aún no está localizado; vuelve atrás y localízalo. Si stuck no se puede escribir como "quiero X, pero me falta Y", no continúes.

3. Reformulación sin pistas

Haz dos preguntas repetidamente hasta que ambas fallen: ¿este nombre insinúa el uso? ¿Se puede desglosar más? Método, criterios y ejemplos: primera etapa de references/probe.md.

Produce:

  • una reformulación neutral (≤40 caracteres, sin términos específicos del dominio de origen)
  • 3–5 términos de búsqueda (sustantivos o verbos neutrales)

Un término del dominio de origen en los términos de búsqueda significa que el paso no está hecho. Enumera esos términos en domain_terms; la herramienta los bloquea por coincidencia de subcadenas.

4. Recuperación (2a generación de direcciones → 2b verificación contra fuentes primarias → 2c relleno de brechas)

Escanea primero el dominio de origen, luego déjalo. Lo primero en 2a.

"Fuente" aquí no significa "otro campo". Una fuente tiene dos granularidades:

Qué cambiaLa fuente esMecanismo
Cambio de ramaOtra rama dentro del dominio AReemplaza la premisa de la línea principal, no un mapeo
Cambio entre dominiosOtro campoMapeo estructural φ: A→B

Dos tipos de "otra rama", ambas cuentan: una que fue desplazada por pares (hecha antes, abandonada después); una nunca utilizada como método en absoluto — algo que ya existe en el dominio de origen (un campo obligatorio en un estándar de documentación, una estructura de índice existente, una solución aproximada que usa otro equipo), solo que nadie lo ha aplicado a este problema. La segunda no es invención: debe ya existir en el dominio de origen; solo cambia su posición.

b_domain registra la fuente real: para un cambio de rama, el nombre del dominio A más el nombre de la rama; para un cambio entre dominios, ese campo. Solo una fuente específica y nombrable cuenta.

"El dominio de origen está agotado" es indecidible; no lo juzgues. Revisa dos tablas, un registro cada una:

Qué se escaneaCómo escanearQué registrar
Premisa compartidaVer "cómo romper una premisa" abajo, cinco pasosUna premisa + una práctica que la rechaza, o "no existe tal práctica en el dominio de origen"
Rama no tomadaPregunta sobre ambos tipos. ① La práctica que alguna vez fue mainstream en el dominio de origen ahora está abandonada: ¿fue refutada, o simplemente pasó de moda? ② ¿Por qué algo que ya existe en el dominio de origen nunca se ha usado como método?Nombre de rama + por qué no se tomó; si no hay, escribe "no existe tal rama en el dominio de origen"

Cómo romper una premisa — el escaneo para la tabla "premisa compartida". Cinco pasos, ninguno saltado:

  1. Pon los caminos fallidos uno al lado del otro; escribe su premisa compartida como una frase que se pueda negar — si no se puede, la premisa aún no está enunciada.
  2. Divídela en cláusulas que se puedan negar individualmente.
  3. Para cada cláusula: ¿existe una práctica en el dominio de origen que no la tome como premisa? Si sí, complétala; esa cláusula está escaneada.
  4. La cláusula que responde "no" en todas partes es la dirección hacia la que salir.
  5. Usa la negación de esta cláusula como términos de búsqueda. No un nombre de disciplina — un nombre de disciplina solo devuelve artículos clave de esa disciplina, y la búsqueda vuelve al punto de partida.

confidence no cuenta al romper premisas.

Solo cuando ambas tablas respondan "ninguna" está permitido salir. "Vacío" significa que no hay práctica de contraejemplo, no que no haya palabras. Una línea que dice "no existe tal práctica en el dominio de origen" también cuenta como vacío.

Un cambio de rama no es solo volver a pensar. Un criterio: la nueva rama no toma la premisa compartida de los caminos fallidos. Más esfuerzo, más detalle, ajuste de parámetros bajo la misma premisa solo llevan la línea principal más lejos. No puedes nombrarla: la rama aún no está encontrada.

Las dos tablas escanean lugares donde la línea principal no ha caminado, no la línea principal en sí. Los problemas abiertos reciben el mismo tratamiento: evita los clichés del dominio de origen, no el dominio de origen.

Las entradas del dominio de origen van a recall en igualdad de condiciones con las entradas entre dominios: structure indica "qué rama del dominio de origen, y cuál se está tomando ahora". Salir es admitido por las dos salidas del paso tres: cero términos del dominio A en restated (no verificado por la herramienta — cuéntalo) y ningún término de domain_terms en terms (bloqueado por la herramienta). La herramienta no verifica las dos tablas.

Los tres subpasos todos pertenecen a la etapa dos y se ejecutan en orden dentro de una ronda. No los fusiones en una sola consulta — fusionados, 2c se convierte en una continuación de 2a.

PasoAcciónSalidaFormato estrictoQué puede probar
2a generación de direccionesDesde la memoria paramétrica: dónde podría haber una práctica (ramas no tomadas del dominio de origen primero)Una dirección + "qué podría haber allí"origin: "recall", confidence, lente operator; 3-6 entradas, ≥2 lentes; status siempre unverifiedSolo "visto esta área", no que la práctica exista allí
2b verificación contra fuentes primariasVerifica cada entrada contra una fuente primaria externa: ¿existe esa práctica allí?verified / refuted / unverified (verificado pero indecidible permanece unverified)verified debe llevar una procedencia; refuted debe llevar una correcciónConvierte conjeturas en hechos citables
2c relleno de brechasCambia los términos de búsqueda y busca de nuevo, para direcciones que 2a nunca consideróNuevas fuentesorigin: "search" y status por entrada; cada resultado registra queryMás allá del límite de los datos de entrenamiento

2c devolviendo la misma práctica que 2a (mismo dominio, misma práctica) = el paso no salió; eso es una continuación, no un relleno de brechas. Otra práctica en el mismo dominio cuenta — pero "otra" debe ir a structure, o no se puede distinguir de la entrada de 2a en el registro, y la herramienta tampoco puede juzgar la duplicación. La herramienta no verifica esto; cuéntalo.

Para indicaciones y orden, consulta references/probe.md. No calcules la precisión de la memoria: 2a da direcciones, no proposiciones.

Las cuatro lentes de encuadre (usadas para la generación de direcciones en 2a, re-verificadas contra los candidatos en el filtro de aterrizaje)

En 2a, etiqueta cada dirección con una lente; 3-6 entradas cubren ≥2. Cuatro entradas de una lente son cuatro copias de una analogía, correctas e incorrectas juntas — verifica la divergencia en 2a, no en el filtro de aterrizaje al final.

La lente pregunta "dónde", no "cuán lejos". La respuesta puede ser otra rama del dominio de origen u otro campo.

Lente de encuadrePregunta con ella
function(功能)¿En qué campo es este verbo (detección / almacenamiento en búfer / limitación de velocidad / calibración) un componente estándar?
conflict(矛盾)¿Quién trata "quiero X y al mismo tiempo no X" como algo cotidiano?
scale(尺度)¿Cómo hacen lo mismo los campos un nivel más abajo (una sola ocurrencia) y un nivel más arriba (una organización, un ecosistema)?
failure(失败)¿Qué campo tiene un archivo de incidentes escrito que maneje este tipo de fallo?

5. Retrotraducción: aterrizar como acciones del dominio A

Retrotraduce cada práctica del lado de la fuente; descarta lo que no se pueda traducir de vuelta.

Escribe why primero; si no se puede escribir, descarta la entrada. No lo añadas después de las otras columnas — para entonces ya se ha decidido mantener, y lo que se escribe es una justificación encontrada para ello. why es el filtro de entrada: el lado A cita las palabras exactas de decompose.stuck; el lado B indica qué hace el trabajo en ese campo. Solo lado B ("ese campo funciona bien así") distorsiona; solo lado A reafirma el punto de bloqueo; los dos no coinciden = no se puede retrotraducir.

Para evidence, elige una: la procedencia de la práctica fuente, o inferred. Marcar inferred está permitido; escribir una inferencia como procedencia no lo está. Gobierna el hecho (la práctica existe allí); why gobierna la correspondencia (¿mismo punto que el bloqueo del dominio A?).

La herramienta solo verifica que why no esté vacío; no puede saber si se escribió primero o se añadió después. Blando, como la autocomprobación de 2c: bloquea lo obviamente no hecho.

6. Los dos filtros y los comandos

python3 scripts/maybe_smart.py --recall decompose.json           # filtro de registro
python3 scripts/maybe_smart.py --check cands.json decompose.json # filtro de aterrizaje
python3 scripts/maybe_smart.py analogy.json                      # auditoría (opcional)

--quiet es un interruptor de salida, no un modo: por defecto se imprime el informe completo; con él, solo la línea de resultado (PASS / FAIL; --check procesa un par e imprime una sola línea). Códigos de salida: 0 pasa / 1 bloquea / 2 error de entrada.

Filtro de registro: task_type no vacío y las cuatro columnas presentes; restated ≤40 caracteres; terms ≥3 sin ningún término de domain_terms (si domain_terms no está listado, este filtro no se puede verificar y cuenta como no superado); cada entrada de recall tiene un b_domain no vacío; ≥3 entradas de recall; misma fuente, misma práctica no se repite (dos prácticas diferentes bajo una rama cuentan como dos); status solo toma verified / refuted / unverified; verified lleva source, refuted lleva correction; al menos 1 entrada con origin como search y un query registrado.

Filtro de aterrizaje, siete verificaciones:

  1. Seis campos no vacíos: operator / action / subject / first_step / observable / why
  2. ≥2 lentes de encuadre; operator solo puede tomar los literales chinos 功能 / 矛盾 / 尺度 / 失败 (función / conflicto / escala / fallo); cualquier otro valor no es conforme
  3. ...

Skills relacionados