ab-test-setup
FreePlan, design, and implement A/B tests and experiments with statistical rigor. Covers hypothesis frameworks, sample sizing, metrics, and result analysis.
The English summary is being prepared. Showing the original description.
Search job boards (bundled LinkedIn + GetOnBoard CLIs) with dedup memory across runs, score new openings against a role profile and offer to create application notes. Triggers: buscar ofertas nuevas, scrape de ofertas, correr los CLIs de busqueda, buscar trabajo en LinkedIn o GetOnBoard, nueva corrida de busqueda, ofertas con dedup.
The English summary is being prepared. Showing the original description.
Run score Not tested
See how to installReview the instructions the agent will receive before you install.
Corre los CLIs de búsqueda bundleados (LinkedIn + GetOnBoard, en scripts/) con los criterios de un perfil, deduplica contra seen_jobs.json y contra las notas existentes, scorea lo nuevo y ofrece crear notas de aplicación. Adaptado del skill job-scraper de MadsLorentzen/ai-job-search.
Flags y datos que devuelve cada script: references/linkedin-cli.md y references/getonbrd-cli.md.
Argumentos: $ARGUMENTS (perfil, opcional; --jobage N para override de recencia, default 7 días).
Todas las rutas de notas son relativas al career workspace (flag --workspace, env CAREER_WORKSPACE, o ./career-workspace/; lo crea /job-hunt setup). El estado de dedup vive en <workspace>/tools/job_scraper/seen_jobs.json.
01-Perfiles/.job-search instalado (aporta la rúbrica de scoring completa).Perfil y criterios. Si $ARGUMENTS no matchea una nota de 01-Perfiles/ (excluir _index), listar los perfiles y preguntar cuál usar. Leer del frontmatter: keywords, keywords_excluir, match_score_minimo, salario_minimo_usd_mes, modalidad, seniority, regla_seniority, mercado_objetivo.
Cargar estado. Leer <workspace>/tools/job_scraper/seen_jobs.json (si no existe, crearlo con el esqueleto de references/seen_jobs.schema.json; si hay notas previas en 03-Aplicaciones/, ofrecer backfillearlas como nota_creada). Validar que toda entrada nota_creada apunte a una nota existente en 03-Aplicaciones/; reportar punteros rotos sin frenar.
Derivar queries. 3-5 queries con forma de rol desde las keywords del perfil (ej. "fullstack developer", "backend developer"), no fragmentos de skill sueltos.
CONFIRMACIÓN: correr los CLIs. Antes de la primera corrida de la sesión, mostrar el warning y pedir approval explícito (mismo criterio que /job-search con Apify):
⚠️ El CLI de LinkedIn lee páginas públicas de LinkedIn. El acceso automatizado va contra sus Terms of Service, y el uso es a tu propia responsabilidad: personal, volumen bajo, nunca comercial ni barridos masivos. GetOnBoard usa su API pública v0 y no tiene esta restricción. ¿Corro ambos CLIs, solo GetOnBoard, o ninguno?
Si el usuario elige solo GetOnBoard, saltear LinkedIn y declarar la cobertura reducida en el resumen final.
Ejecutar los CLIs (tolerar el fallo de uno y reportar la degradación):
python .claude/skills/job-scrape/scripts/linkedin_search.py search -q "<query>" -l "<location>" --remote remote --jobage <N> --format json
python .claude/skills/job-scrape/scripts/getonbrd_search.py search -q "<query>" --jobage <N> --brief
La <location> de LinkedIn sale del mercado_objetivo del perfil; si es worldwide, usar además -l "Remote". Volumen bajo: máximo ~5 queries por CLI por corrida.
--brief no es opcional en el barrido: los JD completos son ~80% del payload de GetOnBoard (~58 KB por query), y el quick score del paso 8 solo necesita los campos estructurados + el arranque de la description. El JD completo se trae en el paso 9, solo para las high. Si el CLI de LinkedIn emite un warning NO_CARDS_PARSED en stderr, la respuesta traía contenido pero el markup cambió: reportarlo como degradación de esa fuente, no como "no hay ofertas".
Normalizar y dedup intra-batch. Canonicalizar URLs (sin utm/tracking; LinkedIn → jobs/view/<id>; GetOnBoard /empleos/ → /jobs/), calcular job_key = slug(empresa)|slug(titulo) (reglas exactas en references/dedup-playbook.md). Misma oferta en ambas fuentes = una entrada con dos sources[].
Dedup contra historial:
seen_jobs.json: entradas nota_creada o descartado se omiten de la tabla (contarlas aparte); entradas new re-vistas actualizan last_seen y se muestran marcadas "vista antes, sin decisión".03-Aplicaciones/: Grep por link_oferta con las URLs canónicas y por nombre <Empresa> - <Rol>. Si hay match no registrado en seen_jobs, registrarlo como nota_creada (autocuración).Quick score (todas las nuevas) usando solo datos del listing:
low: keyword de keywords_excluir en el título (o en la description truncada de GetOnBoard); seniority fuera de banda (aplicando regla_seniority del perfil si existe); salary_max < salario_minimo_usd_mes; o elegibilidad bloqueada (countries/remote_zone excluye el país del usuario según mercado_objetivo).high: título matchea keywords del perfil + seniority en banda + sin bloqueos.medium: el resto. Campos null = desconocido, no penalizar.Score completo solo para las high, con la rúbrica de .claude/skills/job-search/references/scoring-rubric.md (si el skill job-search no está instalado, quedarse con el quick score y avisar). El JD completo se trae con detail de la fuente que corresponda (detail <slug> en GetOnBoard, detail <id> en LinkedIn), con un cap de ~10 fetches por corrida sumando ambas fuentes (ToS, volumen bajo), priorizando por quick score y recencia. Si las high exceden el cap, scorear las que entren y listar el resto con su quick score, declarando el corte.
Presentar tabla ordenada por score: Título | Empresa | Fuente(s) | Salario | Score | Veredicto. Preguntar si alguna se descarta ya (registrar status: descartado + descarte_motivo).
Persistir todas las entradas nuevas/actualizadas en seen_jobs.json y actualizar el campo actualizado. JSON válido siempre (es un data file con schema).
Ofrecer crear notas para las de score ≥ match_score_minimo, con approval explícito por oferta (o "todas") antes de escribir. Por cada confirmada:
03-Aplicaciones/<Empresa> - <Rol>.md desde el template Templates/Aplicacion.md del workspace, frontmatter completo (estado: interesado, match_score, fuente, link_oferta, salario_rango, modalidad, ubicacion, prioridad) y sección "Match con mi perfil" con alineaciones y gaps reales (alimentan /job-upskill).00-Dashboard.md, sección de aplicaciones activas, respetando las columnas exactas del header y escapando \| en wikilinks con alias.status: nota_creada + nota.Resumen final: contadores (encontradas / ya vistas / nuevas / descartadas / notas creadas), fuentes efectivamente consultadas y cortes aplicados (cap de detail, fuente degradada), y sugerencia de /job-aplicar para las top.
/job-aplicar).estado: aplicado nunca.references/dedup-playbook.md: seen_jobs → nota → dashboard, unidireccional.--brief en el barrido de GetOnBoard; el JD completo solo vía detail para las high.Al cerrar la corrida, las ofertas con nota creada quedan READY para el pipeline de postulación: correr /job-aplicar <nota|url> con la mejor. Para gaps recurrentes detectados en los scores, /job-upskill.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Plan, design, and implement A/B tests and experiments with statistical rigor. Covers hypothesis frameworks, sample sizing, metrics, and result analysis.
The English summary is being prepared. Showing the original description.
Web/mobile accessibility decision guide: WCAG 2.2 AA, ARIA, keyboard nav, focus management, contrast, testing. Use for: a11y, accessibility, wcag, aria, screen reader, keyboard, contrast.
The English summary is being prepared. Showing the original description.
Generate, iterate, and scale ad creative for paid advertising across Google, Meta, LinkedIn, and X. Covers platform specs, creative frameworks, and quality validation.
The English summary is being prepared. Showing the original description.
Musica interactiva para juegos: layering vertical, re-secuenciacion horizontal, stingers, reglas de transicion con sync points, y mapeo de estados de gameplay a musica. Usar para: musica adaptativa, sistema de musica dinamica, transiciones musicales, combat music.
The English summary is being prepared. Showing the original description.
Design multi-agent systems, create agent architectures, define communication patterns, and build autonomous agent workflows with structured evaluation frameworks.
The English summary is being prepared. Showing the original description.
Inter-agent communication protocol for C-suite agent teams. Defines invocation syntax, loop prevention, isolation rules, response formats, and quality loops.
The English summary is being prepared. Showing the original description.