claude-code-arcane 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README.md +5 -4
- package/agents/ecommerce/ecommerce-architect.md +60 -0
- package/dist/cli.js +2 -0
- package/docs/SKILLS-CATALOG.md +25 -2
- package/docs/USER-GUIDE.md +2 -2
- package/docs/coding-standards.md +26 -0
- package/package.json +2 -1
- package/profiles/ecommerce.yaml +48 -0
- package/profiles/job-hunt.yaml +12 -2
- package/rules/drafter-reviewer.md +39 -0
- package/skills/cart-checkout/SKILL.md +85 -0
- package/skills/cart-checkout/references/checkout-flow-spec.md +50 -0
- package/skills/cold-outreach/SKILL.md +10 -10
- package/skills/cold-outreach/references/recruiter-playbook.md +5 -5
- package/skills/commerce-analytics/SKILL.md +85 -0
- package/skills/commerce-analytics/references/ga4-ecommerce-events.md +63 -0
- package/skills/commerce-analytics/scripts/ga4_ecommerce_validate.py +134 -0
- package/skills/commerce-data-model/SKILL.md +84 -0
- package/skills/commerce-data-model/references/data-model-spec.md +79 -0
- package/skills/cover-letter/SKILL.md +8 -8
- package/skills/cv-ats-export/SKILL.md +19 -6
- package/skills/cv-ats-export/scripts/cv_export.py +49 -4
- package/skills/cv-ats-export/scripts/verify_pdf.py +90 -0
- package/skills/cv-tailor/SKILL.md +7 -7
- package/skills/cv-tailor/references/ats-keywords.md +9 -9
- package/skills/interview-prep/SKILL.md +7 -7
- package/skills/interview-prep/references/star-framework.md +10 -10
- package/skills/inventory-stock/SKILL.md +86 -0
- package/skills/inventory-stock/scripts/restock_forecast.py +173 -0
- package/skills/job-aplicar/SKILL.md +88 -0
- package/skills/job-hunt/SKILL.md +20 -13
- package/skills/job-hunt/references/templates/Aplicacion.md +6 -2
- package/skills/job-hunt/references/templates/CV Custom.md +1 -1
- package/skills/job-hunt/references/templates/Contacto.md +1 -1
- package/skills/job-hunt/references/templates/Dashboard.md +19 -15
- package/skills/job-hunt/references/templates/Perfil.md +2 -2
- package/skills/job-outcome/SKILL.md +55 -0
- package/skills/job-scrape/SKILL.md +95 -0
- package/skills/job-scrape/references/dedup-playbook.md +25 -0
- package/skills/job-scrape/references/getonbrd-cli.md +62 -0
- package/skills/job-scrape/references/getonbrd-urls.md +37 -0
- package/skills/job-scrape/references/linkedin-cli.md +64 -0
- package/skills/job-scrape/references/linkedin-urls.md +42 -0
- package/skills/job-scrape/references/seen_jobs.schema.json +68 -0
- package/skills/job-scrape/scripts/getonbrd_search.py +501 -0
- package/skills/job-scrape/scripts/linkedin_search.py +428 -0
- package/skills/job-search/SKILL.md +22 -19
- package/skills/job-search/references/scoring-rubric.md +8 -8
- package/skills/job-upskill/SKILL.md +58 -0
- package/skills/linkedin-optimize/SKILL.md +5 -5
- package/skills/master-profile/SKILL.md +17 -17
- package/skills/merchant-feed/SKILL.md +85 -0
- package/skills/merchant-feed/references/feed-attribute-map.md +47 -0
- package/skills/merchant-feed/scripts/feed_validate.py +140 -0
- package/skills/network-map/SKILL.md +7 -7
- package/skills/order-lifecycle/SKILL.md +86 -0
- package/skills/order-lifecycle/references/order-state-machine.md +53 -0
- package/skills/payments-architecture/SKILL.md +80 -0
- package/skills/personal-brand/SKILL.md +10 -10
- package/skills/personal-brand/references/post-pillars.md +14 -14
- package/skills/portfolio-site/SKILL.md +11 -11
- package/skills/product-listing/SKILL.md +84 -0
- package/skills/promotions-discounts/SKILL.md +80 -0
- package/skills/shipping-tax/SKILL.md +85 -0
- package/skills/storefront-architecture/SKILL.md +80 -0
- package/skills/subscription-billing/SKILL.md +81 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,48 @@
|
|
|
1
|
+
# [2.0.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v1.4.0...v2.0.0) (2026-07-27)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
* refactor(job-scrape)!: port both search CLIs from TypeScript to Python ([4a30a3e](https://github.com/SebastianLuser/claude-code-arcane/commit/4a30a3e7b30cbf616d01b860620172c602e5c6cf))
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **cv-ats-export:** tell a missing verify_pdf.py apart from a missing pypdf ([f2b907e](https://github.com/SebastianLuser/claude-code-arcane/commit/f2b907e4f844725abe2b967941cef78d5fb98a0d))
|
|
10
|
+
* **installer:** skip Python bytecode when copying skill assets ([525967d](https://github.com/SebastianLuser/claude-code-arcane/commit/525967d0270058b9cb5967c932a4969b23e4ea27))
|
|
11
|
+
* **job-scrape:** accept share-button LinkedIn URLs in detail ([7f874e7](https://github.com/SebastianLuser/claude-code-arcane/commit/7f874e71007214540c5814561f8c5e9d46848cea))
|
|
12
|
+
* **job-scrape:** read published dates as UTC in the jobage filter ([fa8e4d7](https://github.com/SebastianLuser/claude-code-arcane/commit/fa8e4d73e68fb1b3f8071cbdd15b1da53882d6e2))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* **cv-ats-export:** add ATS text-layer verification to PDF export ([dd79cc9](https://github.com/SebastianLuser/claude-code-arcane/commit/dd79cc966f88fc3e2ab38a8ebfcc1b51f4f1ad5f))
|
|
18
|
+
* **job-hunt:** adopt extended application-state vocabulary and route to new skills ([4a39add](https://github.com/SebastianLuser/claude-code-arcane/commit/4a39add45301841625581ad4a42bb54442c51a8f))
|
|
19
|
+
* **job-scrape:** confirm the LinkedIn ToS warning before running the CLIs ([294d905](https://github.com/SebastianLuser/claude-code-arcane/commit/294d9054b8c1014bde5babdce928da6d61570102))
|
|
20
|
+
* **profiles:** add job-search tooling suite to job-hunt profile ([b4b061a](https://github.com/SebastianLuser/claude-code-arcane/commit/b4b061a8d724a2f9b4e94c40e83890d564ee9fd8))
|
|
21
|
+
* **rules:** add drafter-reviewer rule for CV and cover review ([8467c38](https://github.com/SebastianLuser/claude-code-arcane/commit/8467c38b2b0e7af98838c3a4d91c3bb0dd36b8c4))
|
|
22
|
+
* **skills:** add job-aplicar, job-outcome and job-upskill skills ([0401ca7](https://github.com/SebastianLuser/claude-code-arcane/commit/0401ca7e0c79b9e619ad064bb726a31d646b3fd3))
|
|
23
|
+
* **skills:** add job-scrape skill with bundled linkedin/getonbrd CLIs ([562bd7b](https://github.com/SebastianLuser/claude-code-arcane/commit/562bd7bd261567efcfaaa17c871f80e47a3f0824))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Performance Improvements
|
|
27
|
+
|
|
28
|
+
* **job-scrape:** add --brief to trim JD text from GetOnBoard search ([f2309e5](https://github.com/SebastianLuser/claude-code-arcane/commit/f2309e59ffd670894829a0730763d71733e2bffd))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### BREAKING CHANGES
|
|
32
|
+
|
|
33
|
+
* the CLI paths changed from
|
|
34
|
+
scripts/<portal>-search/cli.ts to scripts/<portal>_search.py, and the profile's
|
|
35
|
+
Bash permissions moved from node to python. Reinstall the job-hunt profile.
|
|
36
|
+
|
|
37
|
+
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
38
|
+
|
|
39
|
+
# [1.4.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v1.3.0...v1.4.0) (2026-06-22)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Features
|
|
43
|
+
|
|
44
|
+
* **ecommerce:** add language-agnostic +ecommerce addon profile ([4ccfc38](https://github.com/SebastianLuser/claude-code-arcane/commit/4ccfc387e7ae48672a3ce5ddbc18bf778f68c883))
|
|
45
|
+
|
|
1
46
|
# [1.3.0](https://github.com/SebastianLuser/claude-code-arcane/compare/v1.2.0...v1.3.0) (2026-06-21)
|
|
2
47
|
|
|
3
48
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Claude Code Arcane
|
|
2
2
|
|
|
3
|
-
> **
|
|
3
|
+
> **337 skills, 87 agents, 15 hooks and 20 rules for Claude Code — selective deploy by profile.**
|
|
4
4
|
|
|
5
5
|
A configuration harness installable via `npx`. Pick a **profile** that matches your stack and only the relevant tools get installed into your project's `.claude/` directory.
|
|
6
6
|
|
|
@@ -192,7 +192,8 @@ Once installed, manage the installation from within a Claude Code session:
|
|
|
192
192
|
| `+finance` | Investment analysis, financial modeling, SaaS metrics | 3 | business |
|
|
193
193
|
| `+marketing` | Content, growth, SEO/CRO, strategy, analytics | 44 | marketing |
|
|
194
194
|
| `+regulatory` | ISO 13485, GDPR, FDA, SOC 2, ISMS, QMS, MDR | 13 | regulatory |
|
|
195
|
-
| `+job-hunt` | Job search end-to-end — master profile, ATS CV, LinkedIn, portfolio, cover letters, outreach, interview prep |
|
|
195
|
+
| `+job-hunt` | Job search end-to-end — master profile, ATS CV with verification, job scraping with dedup, LinkedIn, portfolio, cover letters, outreach, interview prep | 16 | — |
|
|
196
|
+
| `+ecommerce` | Commerce end-to-end agnóstico de lenguaje — data model, checkout, inventario, órdenes, pagos, promociones, shipping/tax, listings, analytics, feeds, storefront, suscripciones | 12 | ecommerce |
|
|
196
197
|
| `+self-improving` | Agent self-improvement and skill extraction | 2 | — |
|
|
197
198
|
| `+statusline` | Claude Code status bar (branch, division, session info) | 0 | — |
|
|
198
199
|
|
|
@@ -347,11 +348,11 @@ claude-code-arcane/
|
|
|
347
348
|
│ ├── manifest.ts # Read/write arcane-manifest.json
|
|
348
349
|
│ ├── types.ts # TypeScript interfaces
|
|
349
350
|
│ └── utils.ts # Cross-platform helpers
|
|
350
|
-
├── skills/ #
|
|
351
|
+
├── skills/ # 333 skills (flat, one dir per skill)
|
|
351
352
|
├── profiles/ # 29 profiles (YAML)
|
|
352
353
|
├── agents/ # 13 dirs, 86+ agents (Markdown)
|
|
353
354
|
├── hooks/ # 15 lifecycle hooks (Bash)
|
|
354
|
-
├── rules/ #
|
|
355
|
+
├── rules/ # 20 rules (Markdown)
|
|
355
356
|
├── templates/ # Gamedev templates
|
|
356
357
|
├── docs/ # Documentation
|
|
357
358
|
└── skills-selftest/ # QA framework
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ecommerce-architect
|
|
3
|
+
description: "E-Commerce Architect. Owner del dominio commerce: modelado de catálogo, selección de plataforma (headless vs monolito vs SaaS), y review de diseño de checkout, pagos, inventario y órdenes. Agnóstico de lenguaje/framework. Usar como punto de entrada para arquitectura de un storefront o marketplace."
|
|
4
|
+
tools: Read, Glob, Grep, Write, Edit, WebSearch
|
|
5
|
+
model: opus
|
|
6
|
+
maxTurns: 30
|
|
7
|
+
memory: project
|
|
8
|
+
disallowedTools: Bash
|
|
9
|
+
skills: [commerce-data-model, payments-architecture, order-lifecycle, inventory-stock, storefront-architecture]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Sos el **E-Commerce Architect**. Tu rol: diseñar y revisar la arquitectura de dominio de un negocio de commerce — agnóstico de lenguaje, framework y plataforma. Decisiones de modelado y arquitectura, no código atado a un stack.
|
|
13
|
+
|
|
14
|
+
## Responsabilidades
|
|
15
|
+
|
|
16
|
+
1. **Domain modeling** — catálogo (product/variant/SKU), órdenes, inventario, pagos
|
|
17
|
+
2. **Platform selection** — headless vs monolito vs SaaS vs composable, con trade-offs
|
|
18
|
+
3. **Flow review** — checkout, pagos (idempotencia), inventario (overselling), órdenes (state machine)
|
|
19
|
+
4. **Data integrity** — concurrencia, reservas, reconciliación de pagos
|
|
20
|
+
5. **Routing** — derivar a la skill correcta según la necesidad
|
|
21
|
+
|
|
22
|
+
## Routing Map
|
|
23
|
+
|
|
24
|
+
| Necesidad | Skill |
|
|
25
|
+
|-----------|-------|
|
|
26
|
+
| Modelar catálogo / variantes / taxonomía / facets | `commerce-data-model` |
|
|
27
|
+
| Carrito, checkout, abandoned-cart | `cart-checkout` |
|
|
28
|
+
| Stock, overselling, restock forecast | `inventory-stock` |
|
|
29
|
+
| Estados de orden, returns, refunds | `order-lifecycle` |
|
|
30
|
+
| Arquitectura de pagos, webhooks, PCI | `payments-architecture` |
|
|
31
|
+
| Implementación Stripe específica | `stripe-integration-expert` |
|
|
32
|
+
| Promos, cupones, gift cards | `promotions-discounts` |
|
|
33
|
+
| Envíos, impuestos, duties | `shipping-tax` |
|
|
34
|
+
| Listings / PDP / marketplace copy | `product-listing` |
|
|
35
|
+
| KPIs y eventos GA4 ecommerce | `commerce-analytics` |
|
|
36
|
+
| Feeds Google/Meta | `merchant-feed` |
|
|
37
|
+
| IA del storefront, páginas, headless | `storefront-architecture` |
|
|
38
|
+
| Suscripciones, dunning | `subscription-billing` |
|
|
39
|
+
|
|
40
|
+
## Protocolo (non-negotiables)
|
|
41
|
+
|
|
42
|
+
1. **Data model primero** — sin un modelo de catálogo sólido, no se diseña checkout ni feeds.
|
|
43
|
+
2. **Idempotencia en pagos** — toda creación de cargo lleva idempotency key. No se discute.
|
|
44
|
+
3. **Server-authoritative** — precios, stock, impuestos y promos se recalculan en el server antes de cobrar.
|
|
45
|
+
4. **Money en minor units enteros** — nunca floats para dinero.
|
|
46
|
+
5. **Estados separados** — order / payment / fulfillment son dimensiones independientes.
|
|
47
|
+
6. **Agnóstico** — si el pedido empuja a un framework concreto, lo aclarás y derivás a la skill/implementador correspondiente; no atás el diseño a un stack salvo que el usuario lo decida.
|
|
48
|
+
|
|
49
|
+
## Platform Decision Matrix
|
|
50
|
+
|
|
51
|
+
| Opción | Para | Costo |
|
|
52
|
+
|--------|------|-------|
|
|
53
|
+
| Monolito (SaaS/themed) | Time-to-market, catálogo estándar | Menos flexibilidad |
|
|
54
|
+
| Headless | UX custom, omnichannel, escala | Mayor build/ops |
|
|
55
|
+
| Composable | Enterprise, best-of-breed | Complejidad de integración |
|
|
56
|
+
|
|
57
|
+
## Delegation
|
|
58
|
+
|
|
59
|
+
**Delegate to:** las skills del routing map según el área.
|
|
60
|
+
**Escala a humano:** decisiones de compliance fiscal (nexus, VAT) y selección final de PSP/plataforma — presentás opciones con trade-offs, decide el negocio.
|
package/dist/cli.js
CHANGED
|
@@ -117,9 +117,11 @@ function getPackageRoot() {
|
|
|
117
117
|
const thisFile = fileURLToPath(import.meta.url);
|
|
118
118
|
return path2.resolve(path2.dirname(thisFile), "..");
|
|
119
119
|
}
|
|
120
|
+
var COPY_SKIP = /* @__PURE__ */ new Set(["__pycache__", ".pytest_cache"]);
|
|
120
121
|
function copyDirSync(src, dest) {
|
|
121
122
|
fs2.mkdirSync(dest, { recursive: true });
|
|
122
123
|
for (const entry of fs2.readdirSync(src, { withFileTypes: true })) {
|
|
124
|
+
if (COPY_SKIP.has(entry.name) || entry.name.endsWith(".pyc")) continue;
|
|
123
125
|
const srcPath = path2.join(src, entry.name);
|
|
124
126
|
const destPath = path2.join(dest, entry.name);
|
|
125
127
|
if (entry.isDirectory()) {
|
package/docs/SKILLS-CATALOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Skills Catalog — Claude Code Arcane
|
|
2
2
|
|
|
3
|
-
Catalogo completo de los
|
|
3
|
+
Catalogo completo de los 337 skills disponibles para proyectos consumidores. Organizados por division.
|
|
4
4
|
|
|
5
5
|
## Como ejecutar un skill
|
|
6
6
|
|
|
@@ -432,7 +432,7 @@ Desde cualquier proyecto que tenga Arcane configurado, escribi `/` seguido del n
|
|
|
432
432
|
|
|
433
433
|
---
|
|
434
434
|
|
|
435
|
-
## Job Hunt (
|
|
435
|
+
## Job Hunt (16 skills)
|
|
436
436
|
|
|
437
437
|
| Skill | Descripcion | Uso |
|
|
438
438
|
|-------|-------------|-----|
|
|
@@ -443,6 +443,10 @@ Desde cualquier proyecto que tenga Arcane configurado, escribi `/` seguido del n
|
|
|
443
443
|
| `/linkedin-optimize` | Optimiza LinkedIn: headline, About, experiencia con KPIs, keywords, value prop, pitch 30s | `[section\|full]` |
|
|
444
444
|
| `/portfolio-site` | Genera/actualiza portfolio web desde el source-of-truth | `[sync\|scaffold] [repo\|--new]` |
|
|
445
445
|
| `/job-search` | Busca, scorea y prioriza ofertas + plan de busqueda de 7 dias | `[search <query>\|score <url>\|plan]` |
|
|
446
|
+
| `/job-scrape` | Busca ofertas (CLIs LinkedIn + GetOnBoard bundleados) con dedup entre corridas, scorea y ofrece crear notas | `[perfil] [--jobage N]` |
|
|
447
|
+
| `/job-aplicar` | Pipeline completo de una postulacion: fit, CV custom, cover, review, PDF verificado y dashboard | `<url\|nota>` |
|
|
448
|
+
| `/job-outcome` | Registra resultado/avance de una aplicacion y actualiza nota + dashboard | `[empresa]` |
|
|
449
|
+
| `/job-upskill` | Gaps de skills agregados de las aplicaciones + plan de estudio con recursos reales | `[url\|nota]` |
|
|
446
450
|
| `/cover-letter` | Cover letters y mensajes de aplicacion concisos y custom | `[application\|company + role]` |
|
|
447
451
|
| `/cold-outreach` | Mensajes en frio a recruiters/hiring managers + follow-ups post-aplicacion | `[contact\|recruiter + company]` |
|
|
448
452
|
| `/interview-prep` | Prep de entrevista: research, banco de preguntas, respuestas STAR, red flags | `[application\|company + role + round]` |
|
|
@@ -451,6 +455,25 @@ Desde cualquier proyecto que tenga Arcane configurado, escribi `/` seguido del n
|
|
|
451
455
|
|
|
452
456
|
---
|
|
453
457
|
|
|
458
|
+
## E-Commerce (12 skills)
|
|
459
|
+
|
|
460
|
+
| Skill | Descripcion | Uso |
|
|
461
|
+
|-------|-------------|-----|
|
|
462
|
+
| `/commerce-data-model` | Modela y audita el dominio de catalogo: product/variant/SKU/option, collections, atributos, taxonomia, faceted search y paginacion | `[model\|audit\|taxonomy]` |
|
|
463
|
+
| `/cart-checkout` | Disena/audita carrito y checkout: estado del cart, multi-step vs one-page, guest checkout, abandoned-cart recovery | `[design\|audit\|abandoned]` |
|
|
464
|
+
| `/inventory-stock` | Inventario y stock: tracking, optimistic locking anti-overselling, reservas, multi-location, restock forecast (script) | `[design\|forecast\|audit]` |
|
|
465
|
+
| `/order-lifecycle` | State machine de ordenes: order/payment/fulfillment, returns/RMA, refunds, eventos/webhooks | `[design\|states\|returns]` |
|
|
466
|
+
| `/payments-architecture` | Arquitectura de pagos PSP-agnostica: payment intents, idempotencia, webhooks fiables, reconciliacion, PCI, fraude | `[design\|webhooks\|audit]` |
|
|
467
|
+
| `/promotions-discounts` | Motor de promociones: cupones, automaticos, BOGO, tiered, reglas de stacking/exclusividad, gift cards | `[design\|rules\|audit]` |
|
|
468
|
+
| `/shipping-tax` | Envios (zonas/rates/metodos) e impuestos (VAT/GST/nexus, duties, landed cost) calculados server-side | `[shipping\|tax\|audit]` |
|
|
469
|
+
| `/product-listing` | Optimiza PDP y listings de marketplace (Amazon A10/COSMO/Rufus), titulos, bullets, A+, copy en bulk | `[pdp\|marketplace\|bulk]` |
|
|
470
|
+
| `/commerce-analytics` | KPIs de commerce (CR, AOV, CLV, cohort) + spec de eventos GA4 ecommerce + validador de dataLayer (script) | `[kpis\|events\|audit]` |
|
|
471
|
+
| `/merchant-feed` | Feeds de producto Google Merchant / Meta Catalog: atributos requeridos, mapping y validacion (script) | `[validate\|generate\|map]` |
|
|
472
|
+
| `/storefront-architecture` | IA del storefront (home/PLP/PDP/cart/checkout/search/megamenu) + decision headless-vs-monolito + performance | `[design\|pages\|headless]` |
|
|
473
|
+
| `/subscription-billing` | Billing recurrente: modelos, ciclos, proration, trials, plan changes y dunning anti-churn involuntario | `[design\|dunning\|audit]` |
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
454
477
|
## Skills internos de Arcane
|
|
455
478
|
|
|
456
479
|
Estos skills son para mantener y desarrollar el propio repo Arcane:
|
package/docs/USER-GUIDE.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## What is Arcane?
|
|
4
4
|
|
|
5
|
-
Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **
|
|
5
|
+
Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **337 skills**, **87 agents**, **15 hooks**, and **20 rules** that you selectively deploy into any project. Instead of shipping everything to every project (wasting tokens and degrading performance), you pick a **profile** that matches your stack and only the relevant tools get installed.
|
|
6
6
|
|
|
7
7
|
## Table of Contents
|
|
8
8
|
|
|
@@ -536,7 +536,7 @@ Yes, and it's recommended. This way everyone on the team gets the same Claude Co
|
|
|
536
536
|
|
|
537
537
|
### How many tokens does a profile consume?
|
|
538
538
|
|
|
539
|
-
Each skill adds ~30-100 tokens to the system prompt. A typical base profile (20-30 skills) adds ~1-2k tokens. The core profile adds ~500 tokens. Compare that to loading all
|
|
539
|
+
Each skill adds ~30-100 tokens to the system prompt. A typical base profile (20-30 skills) adds ~1-2k tokens. The core profile adds ~500 tokens. Compare that to loading all 333 skills, which is why selective deploy matters.
|
|
540
540
|
|
|
541
541
|
### Why replace instead of merge on install?
|
|
542
542
|
|
package/docs/coding-standards.md
CHANGED
|
@@ -18,6 +18,32 @@ Las rules path-scoped específicas viven en `.claude/rules/`.
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
+
## Elección de lenguaje en este repo
|
|
22
|
+
|
|
23
|
+
El lenguaje lo dicta **el contexto de ejecución**, no la preferencia. Hay cuatro contextos y uno solo por cada uno:
|
|
24
|
+
|
|
25
|
+
| Contexto | Lenguaje | Por qué | Garantía en CI |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| Installer (`src/`) | **TypeScript** | Es el paquete npm publicado: el único código con build (`tsup`) y typechecker | `npm run build`, `tsc --noEmit`, `vitest` |
|
|
28
|
+
| Hooks de lifecycle (`hooks/`, `skills/*/hooks/`) | **Bash** | Claude Code los invoca por path, sin intérprete de por medio | `bash -n` sobre todos |
|
|
29
|
+
| Scripts de skill (`skills/*/scripts/`) | **Python 3, solo stdlib** | Se copian al proyecto del usuario y corren ahí: sin build, sin `package.json`, sin `node_modules` | Specs en `tests/` (ver Testing) |
|
|
30
|
+
| Templates (`*/templates/`) | **El del proyecto destino** | Son contenido que se emite al proyecto del usuario; el repo nunca los ejecuta | N/A |
|
|
31
|
+
|
|
32
|
+
**TypeScript fuera de `src/` no es una elección de lenguaje: es un requisito de runtime disfrazado.** Sin build step, un `.ts` solo corre con el type stripping nativo de Node 24+, que la matriz de CI (20 y 22) no cubre. Si el script tiene que correr en la máquina del usuario, es Python.
|
|
33
|
+
|
|
34
|
+
**Dependencias opcionales:** permitidas solo con degradación explícita. Referencia: `cv-ats-export` usa `pypdf` si está y reporta `[ATS SKIP]` si no, sin romper el export.
|
|
35
|
+
|
|
36
|
+
### Escotilla de escape
|
|
37
|
+
|
|
38
|
+
Otro lenguaje **únicamente cuando una dependencia obligatoria lo impone** — nunca por gusto ni por familiaridad. Requiere una línea de justificación en el SKILL.md del skill. Los dos casos vigentes:
|
|
39
|
+
|
|
40
|
+
- `pdf-generator/scripts/render_cover.js` → Node, porque **Playwright es una librería de Node**.
|
|
41
|
+
- `docx-generator/scripts/` (`.cs`, `.slnx`, `setup.ps1`) → .NET, porque **vendorea un proyecto .NET** (MiniMaxAIDocx); el `.ps1` es su setup en Windows.
|
|
42
|
+
|
|
43
|
+
Si podés hacerlo con la stdlib de Python, la escotilla no aplica.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
21
47
|
## Naming
|
|
22
48
|
|
|
23
49
|
- **Variables/funciones:** camelCase (JS/TS/Java/C#) o snake_case (Python/Rust) o PascalCase (Go exports)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-code-arcane",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Skills, agents, hooks and rules for Claude Code — installable via npx arcane",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"dev": "tsup src/cli.ts --format esm --target node20 --watch",
|
|
23
23
|
"test": "vitest run",
|
|
24
24
|
"test:watch": "vitest",
|
|
25
|
+
"test:skills": "python -m unittest discover -s tests -p \"test_*.py\"",
|
|
25
26
|
"prepublishOnly": "npm run build",
|
|
26
27
|
"release": "semantic-release"
|
|
27
28
|
},
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: ecommerce
|
|
2
|
+
description: "E-Commerce — dominio commerce end-to-end agnostico de lenguaje: data model, carrito/checkout, inventario, ordenes, pagos, promociones, shipping/tax, listings, analytics, feeds, storefront y suscripciones"
|
|
3
|
+
type: addon
|
|
4
|
+
|
|
5
|
+
skills:
|
|
6
|
+
# net-new (12)
|
|
7
|
+
- commerce-data-model
|
|
8
|
+
- cart-checkout
|
|
9
|
+
- inventory-stock
|
|
10
|
+
- order-lifecycle
|
|
11
|
+
- payments-architecture
|
|
12
|
+
- promotions-discounts
|
|
13
|
+
- shipping-tax
|
|
14
|
+
- product-listing
|
|
15
|
+
- commerce-analytics
|
|
16
|
+
- merchant-feed
|
|
17
|
+
- storefront-architecture
|
|
18
|
+
- subscription-billing
|
|
19
|
+
# reutilizadas (existentes, relevantes a e-commerce)
|
|
20
|
+
- stripe-integration-expert
|
|
21
|
+
- page-cro
|
|
22
|
+
- form-cro
|
|
23
|
+
- schema-markup
|
|
24
|
+
- seo-audit
|
|
25
|
+
- analytics-tracking
|
|
26
|
+
- pricing-strategy
|
|
27
|
+
- ab-test-setup
|
|
28
|
+
- referral-program
|
|
29
|
+
|
|
30
|
+
rules:
|
|
31
|
+
universal:
|
|
32
|
+
[]
|
|
33
|
+
gamedev:
|
|
34
|
+
[]
|
|
35
|
+
|
|
36
|
+
agents:
|
|
37
|
+
- ecommerce
|
|
38
|
+
|
|
39
|
+
permissions:
|
|
40
|
+
allow:
|
|
41
|
+
- "Bash(python *restock_forecast.py*)"
|
|
42
|
+
- "Bash(python3 *restock_forecast.py*)"
|
|
43
|
+
- "Bash(python *ga4_ecommerce_validate.py*)"
|
|
44
|
+
- "Bash(python3 *ga4_ecommerce_validate.py*)"
|
|
45
|
+
- "Bash(python *feed_validate.py*)"
|
|
46
|
+
- "Bash(python3 *feed_validate.py*)"
|
|
47
|
+
deny:
|
|
48
|
+
[]
|
package/profiles/job-hunt.yaml
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: job-hunt
|
|
2
|
-
description: "Job Hunt — busqueda laboral end-to-end: perfil maestro, CV ATS, LinkedIn, portfolio, cover letters, outreach a recruiters, scoring de ofertas y prep de entrevistas"
|
|
2
|
+
description: "Job Hunt — busqueda laboral end-to-end: perfil maestro, CV ATS con verificacion, scraping de ofertas con dedup, pipeline de postulacion, LinkedIn, portfolio, cover letters, outreach a recruiters, scoring de ofertas, gaps/upskill y prep de entrevistas"
|
|
3
3
|
type: addon
|
|
4
4
|
|
|
5
5
|
skills:
|
|
@@ -10,6 +10,10 @@ skills:
|
|
|
10
10
|
- linkedin-optimize
|
|
11
11
|
- portfolio-site
|
|
12
12
|
- job-search
|
|
13
|
+
- job-scrape
|
|
14
|
+
- job-aplicar
|
|
15
|
+
- job-outcome
|
|
16
|
+
- job-upskill
|
|
13
17
|
- cover-letter
|
|
14
18
|
- cold-outreach
|
|
15
19
|
- interview-prep
|
|
@@ -18,7 +22,7 @@ skills:
|
|
|
18
22
|
|
|
19
23
|
rules:
|
|
20
24
|
universal:
|
|
21
|
-
|
|
25
|
+
- drafter-reviewer
|
|
22
26
|
gamedev:
|
|
23
27
|
[]
|
|
24
28
|
|
|
@@ -29,7 +33,13 @@ permissions:
|
|
|
29
33
|
allow:
|
|
30
34
|
- "Bash(python *cv_export.py*)"
|
|
31
35
|
- "Bash(python3 *cv_export.py*)"
|
|
36
|
+
- "Bash(python *verify_pdf.py*)"
|
|
37
|
+
- "Bash(python3 *verify_pdf.py*)"
|
|
32
38
|
- "Bash(python *network_map.py*)"
|
|
33
39
|
- "Bash(python3 *network_map.py*)"
|
|
40
|
+
- "Bash(python *linkedin_search.py*)"
|
|
41
|
+
- "Bash(python3 *linkedin_search.py*)"
|
|
42
|
+
- "Bash(python *getonbrd_search.py*)"
|
|
43
|
+
- "Bash(python3 *getonbrd_search.py*)"
|
|
34
44
|
deny:
|
|
35
45
|
[]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Drafter-Reviewer Rule (CVs y covers)
|
|
2
|
+
|
|
3
|
+
Adaptado del workflow `/apply` de MadsLorentzen/ai-job-search. Todo CV custom o cover letter para una aplicación pasa por un reviewer de contexto fresco ANTES de exportarse a PDF. El que redacta no se auto-revisa.
|
|
4
|
+
|
|
5
|
+
Las rutas son relativas al career workspace (`./career-workspace/` o env `CAREER_WORKSPACE`).
|
|
6
|
+
|
|
7
|
+
## Cuándo aplica
|
|
8
|
+
|
|
9
|
+
- Al terminar el borrador de un CV custom (flujo cv-tailor) o de una cover / mensaje de aplicación (flujo cover-letter) destinado a una postulación concreta.
|
|
10
|
+
- NO aplica a ediciones menores de un CV ya revisado (typos, cambiar una fecha) ni a los CVs base de `02-CVs/` fuera de una postulación.
|
|
11
|
+
|
|
12
|
+
## El paso reviewer
|
|
13
|
+
|
|
14
|
+
Lanzar UN agente `general-purpose` de contexto fresco vía el Agent tool, con este contenido inline en el prompt (para que no dependa de leer archivos de la conversación):
|
|
15
|
+
|
|
16
|
+
1. El texto completo de la job description.
|
|
17
|
+
2. El borrador del CV y/o cover, verbatim.
|
|
18
|
+
3. Instrucción de lectura acotada: solo puede leer `01-Perfiles/<perfil usado>.md` del workspace. NO debe leer los templates ni el resto del workspace - critica contenido, no estructura.
|
|
19
|
+
4. Instrucción de research: búsqueda web breve sobre la empresa (misión, producto, noticias recientes, cultura) para detectar ángulos no aprovechados.
|
|
20
|
+
|
|
21
|
+
El reviewer devuelve dos partes:
|
|
22
|
+
|
|
23
|
+
- **Parte A - reemplazos mecánicos:** lista JSON de objetos `{ "old_string": "<texto exacto del borrador>", "new_string": "<reemplazo>", "motivo": "<una línea>" }`. El `old_string` debe ser cita textual para aplicarse con Edit sin ambigüedad.
|
|
24
|
+
- **Parte B - sugerencias narrativas**, agrupadas por categoría:
|
|
25
|
+
- Keywords ATS de la JD que faltan o aparecen solo como sinónimo
|
|
26
|
+
- Ángulos de empresa no aprovechados (del research)
|
|
27
|
+
- Bullets que se pueden reformular como logro medible
|
|
28
|
+
- Tono / estilo (registro, longitud, muletillas)
|
|
29
|
+
|
|
30
|
+
## Reglas de aplicación del feedback
|
|
31
|
+
|
|
32
|
+
- **Una sola ronda.** El drafter aplica la Parte A, incorpora de la Parte B lo que corresponda, y sigue. Sin ida y vuelta iterativo.
|
|
33
|
+
- **Never stuff keywords:** si una keyword de la JD es un gap real del candidato, NO se agrega al CV; se reconoce honestamente en el cover si vale la pena.
|
|
34
|
+
- Nada de guiones largos en el resultado final: si el reviewer sugiere texto con em-dash o en-dash, se normaliza a `-` al aplicarlo.
|
|
35
|
+
- Recién después de aplicar el feedback se exporta: `python .claude/skills/cv-ats-export/scripts/cv_export.py "<CV>"` (o la copia instalada en `<workspace>/tools/`; incluye verificación ATS automática de la capa de texto).
|
|
36
|
+
|
|
37
|
+
## Registro
|
|
38
|
+
|
|
39
|
+
En la nota de aplicación (`03-Aplicaciones/`), dejar en `## Notas` un resumen de 3-5 decisiones de tailoring (qué se enfatizó, qué ángulo de empresa se usó, qué gap se reconoció). Sirve para calibrar futuras aplicaciones y para el prep de entrevista.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cart-checkout
|
|
3
|
+
description: "Design and audit cart and checkout flows — cart state, multi-step vs one-page checkout, guest checkout, address/shipping/tax/payment steps, and abandoned-cart recovery. Platform-agnostic conversion and correctness patterns. Triggers: designing a checkout, auditing drop-off, planning abandoned-cart flows."
|
|
4
|
+
argument-hint: "[design | audit | abandoned]"
|
|
5
|
+
category: "ecommerce"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Cart & Checkout
|
|
11
|
+
|
|
12
|
+
The highest-leverage surface in commerce: where intent becomes revenue. Design carts and checkouts that are correct under concurrency and optimized for completion — without prescribing a framework.
|
|
13
|
+
|
|
14
|
+
## Before Starting
|
|
15
|
+
|
|
16
|
+
Gather: cart model (server-persisted vs client, guest vs account), checkout type (single vs multi-step), payment/shipping/tax requirements, and goal (design new flow, audit drop-off, or build abandoned-cart recovery).
|
|
17
|
+
|
|
18
|
+
## How This Skill Works
|
|
19
|
+
|
|
20
|
+
| Mode | Trigger | Output |
|
|
21
|
+
|------|---------|--------|
|
|
22
|
+
| **Design** | `design` | Cart state model + checkout step flow + edge cases |
|
|
23
|
+
| **Audit** | `audit` | Friction/drop-off analysis with prioritized fixes |
|
|
24
|
+
| **Abandoned** | `abandoned` | Recovery sequence (triggers, timing, channels) |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Phase 1 — Cart State
|
|
29
|
+
|
|
30
|
+
| Decision | Recommendation |
|
|
31
|
+
|----------|----------------|
|
|
32
|
+
| Persistence | Server-side cart keyed by session + user; merge on login |
|
|
33
|
+
| Pricing | **Re-price at checkout** — never trust cart-stored prices |
|
|
34
|
+
| Inventory | Soft-reserve at checkout start, not on add-to-cart |
|
|
35
|
+
| Identity | Allow guest carts; merge guest → account without losing items |
|
|
36
|
+
|
|
37
|
+
**Rule:** The cart is a draft, not a contract. Totals, stock, and promotions are recomputed server-side before payment.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Phase 2 — Checkout Flow
|
|
42
|
+
|
|
43
|
+
Canonical steps: **Cart → Identity → Shipping address → Shipping method → Payment → Review → Confirmation.**
|
|
44
|
+
|
|
45
|
+
- **Guest checkout** is non-negotiable for B2C — forced account creation is the #1 avoidable drop-off.
|
|
46
|
+
- Collect email first (enables abandoned-cart + receipts).
|
|
47
|
+
- One-page vs multi-step: multi-step for complex shipping/tax; one-page for low-SKU/digital. Either way, show progress and never lose entered data on validation error.
|
|
48
|
+
- Recompute tax/shipping when the address changes; show the final total before the pay button.
|
|
49
|
+
- Make payment **idempotent** — a double-click must not double-charge (hand off to `payments-architecture`).
|
|
50
|
+
|
|
51
|
+
For the full step-by-step field list, error handling, and address validation patterns, see [references/checkout-flow-spec.md](references/checkout-flow-spec.md).
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Phase 3 — Abandoned-Cart Recovery
|
|
56
|
+
|
|
57
|
+
| Touch | Timing | Angle |
|
|
58
|
+
|-------|--------|-------|
|
|
59
|
+
| 1 | ~1h | Reminder ("you left these") |
|
|
60
|
+
| 2 | ~24h | Help/objection handling + reviews |
|
|
61
|
+
| 3 | ~72h | Incentive (discount) — only if margin allows |
|
|
62
|
+
|
|
63
|
+
Capture email as early as possible; suppress recovery once the order completes; respect consent and frequency caps.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Output Artifacts
|
|
68
|
+
|
|
69
|
+
| Request | Output |
|
|
70
|
+
|---------|--------|
|
|
71
|
+
| Design flow | Cart model + annotated step diagram + edge-case list |
|
|
72
|
+
| Audit | Drop-off table with severity and READY-to-ship fixes |
|
|
73
|
+
| Abandoned | Trigger/timing/channel sequence + suppression rules |
|
|
74
|
+
|
|
75
|
+
A checkout is **READY** when guest checkout works, prices/stock are re-validated server-side, payment is idempotent, and data survives validation errors.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Related Skills
|
|
80
|
+
|
|
81
|
+
- **payments-architecture**: owns the payment step (intents, idempotency, webhooks).
|
|
82
|
+
- **shipping-tax**: computes the shipping and tax shown at checkout.
|
|
83
|
+
- **promotions-discounts**: applies coupons/discounts at the cart.
|
|
84
|
+
- **page-cro** / **form-cro**: deeper conversion optimization of the checkout UI.
|
|
85
|
+
- **order-lifecycle**: takes over once the order is placed.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Checkout Flow — Step-by-Step Spec
|
|
2
|
+
|
|
3
|
+
A platform-agnostic reference for a correct, conversion-optimized checkout. Adapt step granularity to your catalog (digital/low-SKU can collapse steps).
|
|
4
|
+
|
|
5
|
+
## Steps, Fields & Validation
|
|
6
|
+
|
|
7
|
+
| Step | Fields | Validation / behavior |
|
|
8
|
+
|------|--------|-----------------------|
|
|
9
|
+
| **Cart** | line items, qty, totals | Editable qty; re-price + re-check stock server-side on load |
|
|
10
|
+
| **Identity** | email (required), login/guest | Collect email first; offer guest checkout prominently |
|
|
11
|
+
| **Shipping address** | name, address, country, postal | Inline validation; address autocomplete if available |
|
|
12
|
+
| **Shipping method** | method options + rates | Recompute on address change; show ETA + cost |
|
|
13
|
+
| **Payment** | payment method | Tokenized/hosted fields; idempotency key generated here |
|
|
14
|
+
| **Review** | full summary | Final total incl. tax/shipping/discounts before pay button |
|
|
15
|
+
| **Confirmation** | order number | Show + email receipt; clear cart; fire `purchase` event |
|
|
16
|
+
|
|
17
|
+
## Server-Side Re-Validation (before charge)
|
|
18
|
+
Always recompute, never trust the client:
|
|
19
|
+
1. Item availability (reserve with TTL)
|
|
20
|
+
2. Prices (current catalog prices, not cart-stored)
|
|
21
|
+
3. Promotions (re-evaluate eligibility + caps)
|
|
22
|
+
4. Shipping + tax (against final address)
|
|
23
|
+
5. Final total → only then create the payment intent
|
|
24
|
+
|
|
25
|
+
## Error Handling
|
|
26
|
+
- Never clear entered fields on a validation error.
|
|
27
|
+
- Show errors inline next to the field, plus a summary.
|
|
28
|
+
- Payment decline → keep the order in a recoverable state; let the shopper retry without re-entering everything.
|
|
29
|
+
- Stock lost during checkout → tell the shopper exactly which line and offer alternatives.
|
|
30
|
+
|
|
31
|
+
## Address Validation
|
|
32
|
+
- Normalize country to ISO code; postal format per country.
|
|
33
|
+
- Soft-validate (suggest correction) rather than hard-block where possible.
|
|
34
|
+
|
|
35
|
+
## Abandoned-Cart Triggers
|
|
36
|
+
| Touch | Timing | Content |
|
|
37
|
+
|-------|--------|---------|
|
|
38
|
+
| 1 | ~1h | "You left these" + cart contents |
|
|
39
|
+
| 2 | ~24h | Objection handling, reviews, support offer |
|
|
40
|
+
| 3 | ~72h | Incentive (only if margin allows) |
|
|
41
|
+
|
|
42
|
+
Suppress all touches once `purchase` fires. Respect consent + frequency caps.
|
|
43
|
+
|
|
44
|
+
## Verdict: READY when
|
|
45
|
+
- [ ] Guest checkout works end-to-end
|
|
46
|
+
- [ ] Email captured before payment
|
|
47
|
+
- [ ] All totals recomputed server-side pre-charge
|
|
48
|
+
- [ ] Payment is idempotent (no double-charge on retry/double-click)
|
|
49
|
+
- [ ] Entered data survives validation errors
|
|
50
|
+
- [ ] `purchase` event fires once with transaction id
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cold-outreach
|
|
3
|
-
description: "Write cold LinkedIn/email messages from a job-seeker to recruiters, hiring managers and referrals
|
|
3
|
+
description: "Write cold LinkedIn/email messages from a job-seeker to recruiters, hiring managers and referrals - plus post-application follow-up sequences that get replies. For B2B sales outreach use cold-email instead. Triggers: mensaje en frio recruiter, escribirle a un reclutador, follow up postulacion, networking message, pedir referido, contactar hiring manager."
|
|
4
4
|
argument-hint: "[contact-note | recruiter + company]"
|
|
5
5
|
category: "career"
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
# Cold Outreach
|
|
10
|
+
# Cold Outreach - Job-seeker → Recruiter / Hiring Manager
|
|
11
11
|
|
|
12
|
-
Escribís mensajes en frío de un **candidato** a recruiters, hiring managers y referidos, y secuencias de **follow-up** post-aplicación que reciben respuesta. Esto NO es venta B2B (para eso está `/cold-email`)
|
|
12
|
+
Escribís mensajes en frío de un **candidato** a recruiters, hiring managers y referidos, y secuencias de **follow-up** post-aplicación que reciben respuesta. Esto NO es venta B2B (para eso está `/cold-email`) - el ángulo es conseguir una conversación o un referido, sin sonar a spam ni a desesperación.
|
|
13
13
|
|
|
14
14
|
## Cuándo usar cada variante
|
|
15
15
|
|
|
@@ -24,7 +24,7 @@ Escribís mensajes en frío de un **candidato** a recruiters, hiring managers y
|
|
|
24
24
|
## Principios
|
|
25
25
|
|
|
26
26
|
- **Personalizá la primera línea.** Algo real de esa persona/empresa/rol. Si sirve para 100 personas, no sirve para ninguna.
|
|
27
|
-
- **Corto.** LinkedIn: 50
|
|
27
|
+
- **Corto.** LinkedIn: 50-125 palabras. La connection note: <300 caracteres.
|
|
28
28
|
- **Una pregunta / un CTA.** Bajá la fricción de responder.
|
|
29
29
|
- **Vos resolvés algo para ellos**, no "estoy buscando trabajo, ¿me ayudás?". El foco es el valor que aportás al equipo.
|
|
30
30
|
- **Sin paredes de texto, sin CV adjunto en el primer toque** (salvo que lo pidan).
|
|
@@ -33,26 +33,26 @@ Escribís mensajes en frío de un **candidato** a recruiters, hiring managers y
|
|
|
33
33
|
## Estructura de un primer mensaje
|
|
34
34
|
|
|
35
35
|
1. **Gancho personal** (1 línea): por qué *a esta persona*.
|
|
36
|
-
2. **Quién sos + fit** (1
|
|
36
|
+
2. **Quién sos + fit** (1-2 líneas): rol + el logro más relevante para ellos.
|
|
37
37
|
3. **CTA suave** (1 línea): ¿15 min para charlar? / ¿abierto a una intro? / dejé mi aplicación, encantado de dar contexto.
|
|
38
38
|
|
|
39
39
|
## Secuencia de follow-up post-aplicación
|
|
40
40
|
|
|
41
|
-
- **Día 0**
|
|
42
|
-
- **Día 4
|
|
43
|
-
- **Día 10
|
|
41
|
+
- **Día 0** - aplicación enviada (+ mensaje al recruiter/hiring manager si tenés el contacto).
|
|
42
|
+
- **Día 4-5** - follow-up 1: reafirmá interés + agregá *algo nuevo* (un proyecto relevante, una idea sobre su producto). No "¿novedades?".
|
|
43
|
+
- **Día 10-12** - follow-up 2 (último): breve, profesional, dejá la puerta abierta. Si no hay respuesta, cerrás el loop con dignidad.
|
|
44
44
|
|
|
45
45
|
Cada follow-up debe tener un **gancho propio** y leerse solo, sin depender de los anteriores.
|
|
46
46
|
|
|
47
47
|
## Proceso
|
|
48
48
|
|
|
49
49
|
1. Leer la nota de `05-Contactos/` (o crearla) y la de `04-Empresas/`.
|
|
50
|
-
2. Investigar a la persona (rol, equipo, algo reciente)
|
|
50
|
+
2. Investigar a la persona (rol, equipo, algo reciente) - WebFetch del perfil público si hay URL.
|
|
51
51
|
3. Elegir variante + canal.
|
|
52
52
|
4. Draftear mensaje + 1 variante de apertura.
|
|
53
53
|
5. Registrar en `05-Contactos/` (historial de interacciones) y planificar el follow-up.
|
|
54
54
|
|
|
55
|
-
> Nota: Claude no accede a tu LinkedIn ni envía mensajes
|
|
55
|
+
> Nota: Claude no accede a tu LinkedIn ni envía mensajes - redacta para que vos copies/pegues y registres la interacción.
|
|
56
56
|
|
|
57
57
|
## Idioma
|
|
58
58
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Recruiter / Hiring Manager Playbook
|
|
2
2
|
|
|
3
|
-
Plantillas y psicología para outreach de candidato. Adaptá siempre la primera línea
|
|
3
|
+
Plantillas y psicología para outreach de candidato. Adaptá siempre la primera línea - las plantillas son esqueleto, no copy-paste.
|
|
4
4
|
|
|
5
5
|
## Por qué responden (y por qué no)
|
|
6
6
|
|
|
7
|
-
Responden cuando: el mensaje es corto, claro sobre el fit, fácil de responder, y se nota que es para *ellos*. No responden cuando: es genérico, largo, pide demasiado de entrada, o suena desesperado. El recruiter recibe decenas por día
|
|
7
|
+
Responden cuando: el mensaje es corto, claro sobre el fit, fácil de responder, y se nota que es para *ellos*. No responden cuando: es genérico, largo, pide demasiado de entrada, o suena desesperado. El recruiter recibe decenas por día - el filtro es "¿esto me ahorra trabajo o me lo agrega?".
|
|
8
8
|
|
|
9
9
|
## Plantillas
|
|
10
10
|
|
|
@@ -37,14 +37,14 @@ Hola {nombre}, me interesa mucho {empresa/área}. Vengo de {1 cosa}.
|
|
|
37
37
|
Me encantaría conectar y, si surge, charlar sobre {rol/equipo}.
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
### 5. Follow-up 1 (día 4
|
|
40
|
+
### 5. Follow-up 1 (día 4-5) - con valor nuevo
|
|
41
41
|
```
|
|
42
42
|
Hola {nombre}, te escribo para reafirmar mi interés en {rol}.
|
|
43
43
|
Sumo un dato: {proyecto/idea relevante para su producto}.
|
|
44
44
|
Quedo a disposición para lo que necesiten del proceso.
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
### 6. Follow-up 2 (día 10
|
|
47
|
+
### 6. Follow-up 2 (día 10-12) - cierre digno
|
|
48
48
|
```
|
|
49
49
|
Hola {nombre}, entiendo que están con mucho.
|
|
50
50
|
Dejo la puerta abierta por si avanza {rol}; me encantaría sumar.
|
|
@@ -55,7 +55,7 @@ Dejo la puerta abierta por si avanza {rol}; me encantaría sumar.
|
|
|
55
55
|
|
|
56
56
|
- Máximo 2 follow-ups. Después, soltar.
|
|
57
57
|
- Cada follow-up agrega algo (no "¿novedades?").
|
|
58
|
-
- Espaciar 4
|
|
58
|
+
- Espaciar 4-5 días. Nunca el mismo día ni días consecutivos.
|
|
59
59
|
- Registrar cada toque en la nota de `05-Contactos/`.
|
|
60
60
|
|
|
61
61
|
## Tono
|