Inicialización del Asistente de Inversión Personal
Este Skill no es un consultor de diseño web ni discute esquemas de página desde cero. El repositorio ya proporciona una aplicación funcional con React, Express, SQLite, un programador de tareas y conexión a proveedores reales. La tarea de este Skill es configurar esta aplicación según las preferencias de inversión reales del usuario y entregar un sitio web que, una vez abierto, ya contenga contenido personalizado.
Entrada Remota del Skill
El usuario puede activar este flujo directamente a través de la siguiente URL pública del Skill, sin necesidad de clonar el repositorio o instalar el Skill previamente:
https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
Si el archivo {baseDir}/scripts/status.mjs no existe en el entorno actual, significa que este Skill se ha abierto desde una URL remota. En este caso, Codex o Claude Code deben:
- Obtener el repositorio completo
https://github.com/3494036618-eng/personal-investment-assistant, no solo descargarSKILL.md. - Establecer
{baseDir}como el directorioskills/investment-assistantdentro del repositorio. - Confirmar que
{baseDir}/scripts/,{baseDir}/references/y el directorio raízapp/del repositorio existen antes de pasar a la fase 0. - Si ya existe un directorio con el mismo nombre, verificar el remote de Git y el estado del espacio de trabajo; no sobrescribir cambios del usuario ni crear una segunda instancia de la aplicación.
- Si el cliente actual es Codex, ejecutar
npm run skill:install:codexen la raíz del repositorio; si es Claude Code, ejecutarnpm run skill:install:claude. La instalación solo escribe en el directorio de Skills del cliente correspondiente. - Una vez completada la instalación, continuar la inicialización usando el Skill del repositorio actual; no afirmar que "el sitio web ya está disponible" cuando solo se ha copiado el Skill.
El usuario puede proporcionar directamente esta frase a Codex o Claude Code, que admiten operaciones de red y terminal:
Ayúdame a inicializar el asistente de inversión personal: https://github.com/3494036618-eng/personal-investment-assistant/blob/v0.3.0/skills/investment-assistant/SKILL.md
Una vez instalado, Codex puede activarlo mediante $investment-assistant y Claude Code mediante /investment-assistant; ambas entradas ejecutan el mismo conjunto de reglas de inicialización y aceptación.
Criterios de Finalización
Solo se puede decir que "ya está listo para usar" cuando se hayan completado todos los siguientes elementos:
- Se ha confirmado el nombre, código y mercado de al menos un valor real.
- Se ha confirmado la dirección de interés del usuario para cada valor, conservando las palabras originales del usuario.
- Se ha confirmado si la monitorización automática post-mercado está activada; si lo está, se han confirmado la hora, los días y la zona horaria.
- La clave de Agent Plan se ha configurado mediante credenciales privadas locales, sin aparecer en el chat, el código fuente o los registros.
- Las pruebas reales de DataPro, la búsqueda de Doubao y el modelo Agent Plan han sido todas exitosas.
- El frontend y backend completos están instalados y en ejecución.
- La configuración del usuario se ha importado y la página de inicio no muestra una lista de seguimiento vacía.
- Después de que el usuario acepte consumir créditos reales, se ha generado al menos un resumen de acción y un resumen de riesgos post-mercado para cada acción.
- Ambos tipos de informes tienen contenido sustancial, fuentes correspondientes y un historial independiente.
- Las rutas principales del escritorio se han verificado mediante el navegador.
Si alguno de estos elementos no se ha completado, se debe indicar con precisión en qué paso se detuvo, qué se ha completado y cuál es el siguiente paso. No se deben usar resultados antiguos, datos simulados o juicios verbales en su lugar.
Principios de Trabajo
- No discutir el diseño del sitio web: El sitio web, la estructura de la página y los límites funcionales ya están definidos. Solo se recopila la configuración de inversión necesaria para usarlo.
- Confirmar la configuración antes de llamar: Primero se muestra al usuario un resumen estructurado de la configuración. Solo después de que el usuario lo confirme se procede a instalar, importar y consumir servicios reales.
- No adivinar valores reales: Si el nombre, código o mercado no están claros, primero se verifican. Si no se puede verificar, se pide al usuario que los complete. No se puede asignar a una empresa similar.
- Vincular preferencias por valor: Diferentes acciones pueden tener direcciones de interés completamente diferentes. Todas las preferencias, con las palabras originales del usuario, se incluyen en el Perfil. No se pueden usar solo palabras clave predefinidas.
- Contenido desde el primer momento: La inicialización predeterminada genera los dos primeros informes para cada acción. Solo si el usuario solicita explícitamente no generarlos por ahora, se utiliza el modo de informes vacíos.
- Las tres capacidades usan la misma clave de Agent Plan: Según la configuración actual de Agent Plan Harness, la misma clave se usa por defecto para el modelo, DataPro y la búsqueda de Doubao. No se debe solicitar al usuario que proporcione una clave de búsqueda independiente.
- Vincular fuentes con el cuerpo del texto: DataPro es responsable de los datos estructurados profesionales; la búsqueda de Doubao es responsable de la información pública más reciente; el modelo Agent Plan solo redacta y revisa basándose en las pruebas de esta sesión.
- Los dos tipos de informes tienen responsabilidades diferentes: El resumen de la acción responde a "¿cómo está la empresa ahora?"; el resumen de riesgos post-mercado responde a "¿qué cambios y señales de riesgo han surgido en esta ventana de revisión?".
- No mostrar información sensible: Las claves solo se pueden configurar a través de entrada de terminal oculta, variables de entorno o archivos de credenciales locales con permisos
0600. - Explicar cada paso: Indicar qué se acaba de completar, en qué paso se está, qué se hará a continuación y si se descargarán dependencias o se consumirán créditos.
Resumen del Flujo
| Fase | Acción | Indicador de Finalización |
|---|---|---|
| 0 | Verificar el estado actual | Confirmar si es la primera inicialización, reanudación o resolución de problemas |
| 1 | Recopilar configuración de inversión | Acciones, códigos, mercados, preferencias y programación de monitoreo completos |
| 2 | Usuario confirma la configuración | El usuario acepta explícitamente el resumen estructurado |
| 3 | Instalación y configuración privada | Instalación de la aplicación completada, clave escrita de forma segura |
| 4 | Prueba de servicios reales | Los tres proveedores están actualmente disponibles |
| 5 | Importar configuración personalizada | La página de inicio muestra las acciones y direcciones de interés del usuario |
| 6 | Generar primeros informes | Cada acción tiene dos tipos de informes reales e historial |
| 7 | Aceptación en navegador y entrega | El usuario puede abrir el sitio web y usarlo directamente |
Fase 0: Verificar el Estado Actual
Primero, verificar Node.js, los archivos del Skill, el runtime y el estado del sitio web:
node {baseDir}/scripts/status.mjs
- Aplicación no instalada: Ir a la fase 1.
- Instalada pero no en ejecución: Confirmar primero la configuración del usuario, luego decidir si iniciar o actualizar.
- En ejecución: Leer la lista de seguimiento y configuración actuales. Si el usuario solo agrega nuevos elementos, no borrar los datos originales.
ready=false: Se debe volver a ejecutar un doctor real más adelante; no se puede determinar la disponibilidad del backend solo por la supervivencia del proceso.
No preguntar al usuario por el directorio del código fuente del sitio web ni crear otro proyecto.
Fase 1: Recopilar Configuración de Inversión
Utilizar un enfoque de una o dos preguntas por ronda para evitar abrumar al usuario con un formulario largo. Recopilar al menos:
- Nombre del valor.
- Código del valor.
- Mercado:
CN,HKoUS. - Direcciones de interés para este valor, se sugieren de 2 a 6, pero se toma como referencia la necesidad real del usuario.
- Si está activada la verificación automática post-mercado.
- Si está activada, la hora de ejecución, los días de ejecución y la zona horaria.
Se puede preguntar primero:
¿Qué acciones te gustaría seguir? Por favor, indícame el nombre, el código y el mercado del valor. Luego, para cada uno, confirmaré las direcciones que realmente te importan y las escribiré directamente en el sitio web.
Las direcciones de interés no deben estar limitadas por una lista fija de palabras. Lo siguiente es solo para ayudar al usuario a expresarse, no es una lista permitida:
- Mercado y técnica: Tendencia de precio, volumen, volatilidad, niveles clave, cambios de capital.
- Operaciones y finanzas: Ingresos, ganancias, flujo de caja, margen bruto, I+D, dividendos, deuda.
- Eventos de la empresa: Anuncios, pedidos, productos, capacidad, gestión, litigios, regulación.
- Industria y entorno externo: Competencia, políticas, materias primas, tipo de cambio, tasas de interés, riesgos en el extranjero.
- Lenguaje natural del propio usuario, como "precio mayorista de licor de alta gama e inventario de canal" o "progreso de certificación de grandes clientes en el extranjero".
Las preferencias compuestas se pueden mantener tal cual. La aplicación realizará un desglose semántico y una evaluación de cobertura durante la recuperación. No se deben reescribir las palabras del usuario para adaptarlas a palabras clave predefinidas.
Verificación de Valores
Priorizar el uso de DataPro para consultar la correspondencia entre nombre, código y mercado. Si la herramienta directa no está disponible, no adivinar. Una vez que el servicio real esté listo, usar la verificación de pertenencia del valor en el primer informe como umbral de bloqueo. Para acciones de China y Hong Kong, conservar el formato común de intercambio; para acciones de EE. UU., usar el Ticker público.
Fase 2: Confirmar la Configuración Estructurada
Organizar los resultados de la discusión en un breve resumen y solicitar la confirmación explícita del usuario. Ejemplo:
Configuración de Inicialización
1. Kweichow Moutai | 600519 | CN
Interés: Rentabilidad, ventaja de marca, inventario de canal, dinámica de la industria
Monitoreo post-mercado: 18:00 días laborables, Asia/Shanghai
2. Apple | AAPL | US
Interés: Ventas de iPhone, negocio de servicios, avances en productos de IA
Monitoreo post-mercado: Desactivado
Después de la confirmación, instalaré e iniciaré el sitio web existente, importaré esta configuración y, para cada acción, generaré de forma real un resumen de la acción y un resumen de riesgos post-mercado. Este paso llamará a DataPro, la búsqueda de Doubao y el modelo Agent Plan, y consumirá créditos del plan.
Continuar solo después de que el usuario confirme explícitamente. Si el usuario modifica algún elemento, actualizar solo ese elemento y volver a mostrar el resumen completo.
Escribir el resultado de la confirmación en un Perfil temporal con permisos 0600. Formato:
{
"stocks": [
{
"name": "Kweichow Moutai",
"code": "600519",
"exchange": "CN",
"focus": ["Rentabilidad", "Ventaja de marca", "Inventario de canal", "Dinámica de la industria"],
"monitor": {
"enabled": true,
"schedule_time": "18:00",
"schedule_days": ["Mon", "Tue", "Wed", "Thu", "Fri"],
"timezone": "Asia/Shanghai"
}
}
]
}
El Perfil no debe contener claves API. El archivo temporal se elimina después de su uso con --consume-profile.
Fase 3: Instalar la Aplicación y Configurar Agent Plan
Explicar que este paso copiará la aplicación oficial, instalará las dependencias npm, ejecutará verificaciones y la compilación de producción, y luego ejecutará:
node {baseDir}/scripts/install.mjs
Cuando falten credenciales, ejecutar en la terminal interactiva:
node {baseDir}/scripts/configure.mjs
configure.mjs solo solicita una clave API de Agent Plan y la escribe de forma segura en:
~/.config/investment-assistant/credentials.env
El permiso del archivo debe ser 0600. No solicitar al usuario que envíe la clave al chat, ni escribir la clave en el Perfil, .env.example, README o código fuente.
Fase 4: Probar los Tres Proveedores en Vivo
Ejecutar:
node {baseDir}/scripts/doctor.mjs --live
Se deben ver:
agent_plan_model: okdatapro: okweb_search: ok
Este paso generará algunas llamadas reales. Si alguno falla, seguir las indicaciones en references/troubleshooting.md y detenerse aquí; no continuar generando informes ni afirmar que "el backend está disponible" solo porque la clave está configurada.
Fase 5: Importar la Configuración del Usuario
Iniciar el sitio web e importar el Perfil confirmado:
node {baseDir}/scripts/start.mjs
node {baseDir}/scripts/profile.mjs --input /ruta/absoluta/al/Perfil/secreto.json --consume-profile
La importación es idempotente por mercado y código de valor. Las acciones existentes conservan su historial; la ejecución repetida no crea valores duplicados.
Verificar que la página de inicio cumpla al menos con:
- Cada valor del usuario está presente.
- El nombre, código y mercado son correctos.
- Las tarjetas muestran las direcciones de interés escritas por el usuario.
- La configuración post-mercado coincide con la confirmación del usuario.
Fase 6: Generar los Primeros Informes Personalizados
Cuando el usuario ya haya aceptado consumir créditos en la fase 2, ejecutar la generación completa de los primeros informes:
node {baseDir}/scripts/acceptance.mjs --all --seed
--seed genera para cada acción:
- Un resumen de la acción.
- Un resumen de riesgos post-mercado.
Y verifica automáticamente:
- Los dos tipos de informes tienen IDs diferentes y capturas de evidencia independientes.
- Los dos tipos de informes no reutilizan la misma URL de red.
- El resumen de la acción contiene evidencia financiera central de DataPro verificable.
- Los ID de evidencia citados en el cuerpo del texto existen.
- Las fuentes de red tienen título, editor, URL y resumen reales.
- Las preferencias del usuario tienen un estado de cobertura elemento por elemento.
- Los dos tipos de informes entran en sus respectivos historiales.
Si el usuario solicita explícitamente no generar los primeros informes por ahora, se puede realizar solo la aceptación básica:
node {baseDir}/scripts/acceptance.mjs --all
En este caso, se debe indicar que "el sitio web está configurado, pero el área de informes podría estar vacía", sin afirmar que se ha alcanzado el estado de contenido desde el primer momento.
El comando de inicialización de un solo paso más corto es:
node {baseDir}/scripts/onboard.mjs \
--profile /ruta/absoluta/al/Perfil/secreto.json \
--consume-profile
Este comando instalará, configurará, probará en vivo, iniciará, importará y generará los primeros informes de forma predeterminada. Solo agregar --skip-initial-reports si el usuario solicita explícitamente no generarlos.
Fase 7: Aceptación en el Navegador de Escritorio
Abrir la dirección local que el script muestra, por defecto:
http://127.0.0.1:8788
Verificar siguiendo el recorrido real del usuario:
- La página de inicio no está en blanco; todos los valores y direcciones de interés son visibles.
- Al abrir "Resumen de la acción", se muestra el primer informe guardado.
- El cuerpo del texto tiene las secciones "Rendimiento del mercado", "Operaciones y finanzas", "Direcciones de interés", "Observaciones posteriores", no es una concatenación de campos.
- El área de referencias corresponde a los números del cuerpo del texto; las fuentes de red se pueden abrir; las fuentes de DataPro no muestran trace.
- Al abrir "Resumen de riesgos post-mercado", se muestra un informe independiente, sin reutilizar el cuerpo o las fuentes del resumen de la acción.
- La configuración post-mercado se puede guardar; "Ejecutar una vez ahora" puede generar un nuevo registro.
- Cuando la monitorización automática está activada, la hora de la próxima ejecución es correcta; el estado del servicio de programación es normal.
- El historial contiene todos los informes generados.
- La página no tiene desbordamiento, superposición, problemas evidentes de salto de línea ni errores en la consola.
La visibilidad de una página en el navegador no equivale a la disponibilidad del backend real; solo se puede entregar cuando el doctor real, la generación de informes y la ruta del navegador hayan pasado todos.
Límites Fijos del Resumen de la Acción y del Resumen de Riesgos Post-Mercado
Resumen de la Acción
Responde a "¿cómo está esta empresa ahora?", utilizando cotizaciones actuales, los últimos datos financieros divulgados y materiales públicos relacionados con las direcciones de interés del usuario. Estructura fija:
- Resumen: Conclusión concisa, no concatenando todo el cuerpo.
- Rendimiento del mercado.
- Operaciones y finanzas.
- Direcciones de interés.
- Observaciones posteriores.
Resumen de Riesgos Post-Mercado
Responde a "¿qué ha sucedido en esta ventana de revisión?", utilizando anomalías del mercado del día, nuevos eventos de la empresa desde la última revisión y el contexto de riesgo externo reciente. Estructura fija:
- Resumen: Cambios de riesgo y los hechos más importantes, sin repetir todas las secciones.
- Anomalías del mercado.
- Eventos de la empresa.
- Riesgos externos.
- Observaciones posteriores.
Si no hay evidencia calificada para una sección, se puede omitir esa sección, pero no se deben rellenar frases genéricas como "no encontrado" o "continuar observando". La ausencia de nuevos eventos de riesgo no significa que la empresa no tenga riesgos; aún se debe conservar el resultado auditable de esta revisión.
Recuperación de Fallos
- Sitio web no iniciado: Ejecutar
status.mjsy luegostart.mjs. ready=false: Volver a ejecutardoctor.mjs --live.- Nueva acción sin contenido: Confirmar que la importación del Perfil fue exitosa y luego ejecutar
acceptance.mjs --stock código --seedpara esa acción. - Tarea programada no ejecutada: Verificar el interruptor de monitoreo, fecha, hora, zona horaria, estado del servicio de programación y registros de ejecución.
- Fallo en la generación del informe: Conservar el error específico y los registros de diagnóstico, manejar según el proveedor, la pertenencia del valor, la cobertura de evidencia o el problema de revisión del modelo; no omitir la verificación.
- Actualizar la aplicación: Primero hacer una copia de seguridad, luego detener, instalar, iniciar y volver a ejecutar el doctor; la base de datos y las credenciales no se eliminan con la actualización de la aplicación.
Para más detalles sobre la configuración, ver references/setup.md; para las reglas de aceptación, ver references/acceptance.md; para las reglas de fuentes, ver references/evidence-policy.md; para la resolución de problemas, ver references/troubleshooting.md.
Nota Final de Entrega
La respuesta final debe enumerar explícitamente:
- La dirección del sitio web y el estado actual del proceso.
- Los valores, mercados y direcciones de interés importados.
- El interruptor de monitoreo post-mercado, hora, días y zona horaria para cada valor.
- Los resultados de las pruebas reales del modelo Agent Plan, DataPro y la búsqueda de Doubao.
- Si se ha generado el resumen de la acción y el resumen de riesgos post-mercado para cada valor.
- Si el historial de ambos tipos de informes y el estado de la programación han pasado.
- Las verificaciones, pruebas, compilaciones y aceptación en el navegador realmente ejecutadas.
- Los elementos incompletos, dependencias externas y riesgos que aún requieren verificación manual.
No se limite a decir "inicialización completa". El usuario necesita saber qué puede hacer ahora, qué resultados ya han sido verificados por llamadas reales y qué no se ha verificado.