claude-code-arcane 2.2.0 → 2.3.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +56 -55
  3. package/agents/career/career-strategist.md +88 -0
  4. package/agents/career/cv-reviewer.md +81 -0
  5. package/agents/career/hiring-manager.md +68 -0
  6. package/agents/career/mock-interviewer.md +76 -0
  7. package/agents/freelance/client-screener.md +84 -0
  8. package/agents/freelance/discovery-call.md +65 -0
  9. package/agents/freelance/pipeline-strategist.md +99 -0
  10. package/agents/freelance/proposal-reviewer.md +82 -0
  11. package/dist/cli.js +52 -13
  12. package/docs/RELEASE-SETUP.md +1 -1
  13. package/docs/SKILLS-CATALOG.md +27 -3
  14. package/docs/USER-GUIDE.md +77 -72
  15. package/docs/agent-hierarchy.md +21 -1
  16. package/docs/presentations/build_arcane_deck.py +2 -2
  17. package/docs/presentations/build_arcane_deck_12.py +2 -2
  18. package/package.json +2 -2
  19. package/profiles/freelance.yaml +43 -0
  20. package/profiles/job-hunt.yaml +5 -2
  21. package/rules/drafter-reviewer.md +16 -3
  22. package/rules/freelance-guardrails.md +53 -0
  23. package/skills/career-registry/SKILL.md +95 -0
  24. package/skills/career-registry/scripts/career_registry.py +488 -0
  25. package/skills/client-screen/SKILL.md +83 -0
  26. package/skills/client-screen/references/red-flags.md +95 -0
  27. package/skills/cover-letter/SKILL.md +4 -3
  28. package/skills/cv-tailor/SKILL.md +11 -2
  29. package/skills/freelance-deliver/SKILL.md +90 -0
  30. package/skills/freelance-hunt/SKILL.md +126 -0
  31. package/skills/freelance-hunt/references/templates/Connects.md +39 -0
  32. package/skills/freelance-hunt/references/templates/Contrato.md +60 -0
  33. package/skills/freelance-hunt/references/templates/Propuesta.md +66 -0
  34. package/skills/freelance-kickoff/SKILL.md +94 -0
  35. package/skills/freelance-pipeline/SKILL.md +109 -0
  36. package/skills/freelance-pipeline/scripts/import_history.py +425 -0
  37. package/skills/freelance-profile/SKILL.md +93 -0
  38. package/skills/freelance-proposal/SKILL.md +112 -0
  39. package/skills/freelance-scan/SKILL.md +196 -0
  40. package/skills/freelance-scan/references/dedup.md +35 -0
  41. package/skills/freelance-scan/references/platforms.md +167 -0
  42. package/skills/freelance-scan/scripts/freelance_search.py +1077 -0
  43. package/skills/interview-prep/SKILL.md +11 -3
  44. package/skills/job-aplicar/SKILL.md +5 -1
  45. package/skills/job-hunt/SKILL.md +17 -0
  46. package/skills/job-outcome/SKILL.md +15 -1
  47. package/skills/job-upskill/SKILL.md +10 -2
@@ -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 **388 skills**, **98 agents**, **16 hooks**, and **26 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.
5
+ Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). It provides a curated library of **397 skills**, **106 agents**, **16 hooks**, and **27 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
 
@@ -38,7 +38,7 @@ Arcane is a configuration harness for [Claude Code](https://docs.anthropic.com/e
38
38
  No installation needed — Arcane runs via `npx`:
39
39
 
40
40
  ```bash
41
- npx arcane install backend-ts+agile
41
+ npx claude-code-arcane install backend-ts+agile
42
42
  ```
43
43
 
44
44
  That's it. `npx` downloads and runs the latest version automatically.
@@ -50,7 +50,7 @@ That's it. `npx` downloads and runs the latest version automatically.
50
50
  cd ~/projects/my-app
51
51
 
52
52
  # 2. Install a profile
53
- npx arcane install backend-ts+agile
53
+ npx claude-code-arcane install backend-ts+agile
54
54
 
55
55
  # 3. Open Claude Code
56
56
  claude
@@ -62,130 +62,135 @@ Your project now has skills, agents, hooks, rules, and permissions tailored for
62
62
 
63
63
  ## Commands Reference
64
64
 
65
- ### `npx arcane install` — Install profiles
65
+ ### `npx claude-code-arcane install` — Install profiles
66
66
 
67
67
  ```bash
68
68
  # Show available profiles (interactive)
69
- npx arcane install
69
+ npx claude-code-arcane install
70
70
 
71
71
  # Install a specific profile
72
- npx arcane install backend-ts
72
+ npx claude-code-arcane install backend-ts
73
73
 
74
74
  # Combine profiles with +
75
- npx arcane install backend-ts+agile+testing
75
+ npx claude-code-arcane install backend-ts+agile+testing
76
76
 
77
77
  # Install to a specific directory (default: current dir)
78
- npx arcane install unity-dev --target ~/projects/my-game
78
+ npx claude-code-arcane install unity-dev --target ~/projects/my-game
79
79
 
80
80
  # Preview without installing
81
- npx arcane install unity-dev --dry-run
81
+ npx claude-code-arcane install unity-dev --dry-run
82
82
 
83
83
  # Force overwrite without backup
84
- npx arcane install unity-dev --force
84
+ npx claude-code-arcane install unity-dev --force
85
85
  ```
86
86
 
87
87
  If `.claude/` already exists, it gets backed up to `.claude.bak/` and replaced.
88
88
 
89
- ### `npx arcane add` — Add skills or profiles
89
+ ### `npx claude-code-arcane add` — Add skills or profiles
90
90
 
91
91
  ```bash
92
92
  # Add a single skill
93
- npx arcane add api-design
93
+ npx claude-code-arcane add api-design
94
94
 
95
95
  # Add multiple skills
96
- npx arcane add security-audit owasp
96
+ npx claude-code-arcane add security-audit owasp
97
97
 
98
98
  # Add an entire profile as addon
99
- npx arcane add +security
99
+ npx claude-code-arcane add +security
100
100
 
101
101
  # Add multiple profiles
102
- npx arcane add +database +testing
102
+ npx claude-code-arcane add +database +testing
103
103
  ```
104
104
 
105
- ### `npx arcane remove` — Remove skills, profiles, or agents
105
+ ### `npx claude-code-arcane remove` — Remove skills, profiles, or agents
106
106
 
107
107
  ```bash
108
108
  # Remove a single skill
109
- npx arcane remove api-design
109
+ npx claude-code-arcane remove api-design
110
110
 
111
111
  # Remove multiple skills
112
- npx arcane remove slack postman
112
+ npx claude-code-arcane remove slack postman
113
113
 
114
114
  # Remove entire profile (exclusive skills + agents + rules)
115
- npx arcane remove +agile
115
+ npx claude-code-arcane remove +agile
116
116
 
117
117
  # Mix: remove a profile and a skill
118
- npx arcane remove +testing api-design
118
+ npx claude-code-arcane remove +testing api-design
119
+
120
+ # Remove using a specific content source instead of the installed version
121
+ npx claude-code-arcane remove +testing --source bundled
119
122
  ```
120
123
 
121
124
  When removing a profile, Arcane only deletes assets **exclusive** to that profile. Skills, agents, and rules shared with other active profiles are preserved. Core skills (21) and the core profile cannot be removed.
122
125
 
123
- ### `npx arcane list` — List available profiles and skills
126
+ What gets deleted is read from that profile's definition, so `remove` uses the content of the version recorded in your manifest. If that version is no longer cached it falls back to the current one and says so: a profile whose skill or agent list changed between the two can leave files behind, and `--source` is the escape hatch. The known limit is that two builds sharing a version number (a local checkout and the published release, say) are indistinguishable, so removing content installed from an unreleased source needs `--source bundled` explicitly.
127
+
128
+ ### `npx claude-code-arcane list` — List available profiles and skills
124
129
 
125
130
  ```bash
126
- npx arcane list
131
+ npx claude-code-arcane list
127
132
  ```
128
133
 
129
134
  Shows all base profiles and add-ons with descriptions, and marks which are currently installed.
130
135
 
131
- ### `npx arcane status` — Check current installation
136
+ ### `npx claude-code-arcane status` — Check current installation
132
137
 
133
138
  ```bash
134
- npx arcane status
139
+ npx claude-code-arcane status
135
140
  ```
136
141
 
137
142
  Shows installed profiles, skill count, rules, agents, installation date, and worktree info.
138
143
 
139
- ### `npx arcane update` — Check for updates
144
+ ### `npx claude-code-arcane update` — Check for updates
140
145
 
141
146
  ```bash
142
- npx arcane update
147
+ npx claude-code-arcane update
143
148
 
144
149
  # Quiet mode (for hooks — fails silently)
145
- npx arcane update --quiet
150
+ npx claude-code-arcane update --quiet
146
151
  ```
147
152
 
148
- ### `npx arcane clean` — Remove Arcane from a project
153
+ ### `npx claude-code-arcane clean` — Remove Arcane from a project
149
154
 
150
155
  ```bash
151
- npx arcane clean --force
156
+ npx claude-code-arcane clean --force
152
157
  ```
153
158
 
154
159
  Removes `.claude/` and `.claude.bak/` from the current directory. Requires `--force` flag.
155
160
 
156
- ### `npx arcane worktree` — Create worktrees with Arcane
161
+ ### `npx claude-code-arcane worktree` — Create worktrees with Arcane
157
162
 
158
163
  ```bash
159
164
  # Create worktree + install Arcane in one step
160
- npx arcane worktree feat/new-api --profile backend-ts+agile
165
+ npx claude-code-arcane worktree feat/new-api --profile backend-ts+agile
161
166
 
162
167
  # Inherits profile from current installation
163
- npx arcane worktree feat/new-api
168
+ npx claude-code-arcane worktree feat/new-api
164
169
 
165
170
  # With dependency install and Docker port isolation
166
- npx arcane worktree feat/new-api --install-deps --isolate
171
+ npx claude-code-arcane worktree feat/new-api --install-deps --isolate
167
172
 
168
173
  # Custom path and base branch
169
- npx arcane worktree feat/new-api --path ../my-api-worktree --base develop
174
+ npx claude-code-arcane worktree feat/new-api --path ../my-api-worktree --base develop
170
175
 
171
176
  # Preview without creating
172
- npx arcane worktree feat/new-api --dry-run
177
+ npx claude-code-arcane worktree feat/new-api --dry-run
173
178
 
174
179
  # Don't share hooks/docs from current installation
175
- npx arcane worktree feat/new-api --no-share
180
+ npx claude-code-arcane worktree feat/new-api --no-share
176
181
  ```
177
182
 
178
- ### `npx arcane global` — Manage global hooks
183
+ ### `npx claude-code-arcane global` — Manage global hooks
179
184
 
180
185
  ```bash
181
186
  # Install global SessionStart hook (worktree-isolation auto-apply)
182
- npx arcane global
187
+ npx claude-code-arcane global
183
188
 
184
189
  # Show global hooks status
185
- npx arcane global --status
190
+ npx claude-code-arcane global --status
186
191
 
187
192
  # Remove global hooks
188
- npx arcane global --remove
193
+ npx claude-code-arcane global --remove
189
194
  ```
190
195
 
191
196
  ---
@@ -252,7 +257,7 @@ Every installation automatically loads `core.yaml` first:
252
257
  Profiles are combined using the `+` separator. The system deduplicates skills automatically.
253
258
 
254
259
  ```bash
255
- npx arcane install <base>[+<base>][+<addon>][+<addon>]
260
+ npx claude-code-arcane install <base>[+<base>][+<addon>][+<addon>]
256
261
  ```
257
262
 
258
263
  ### Rules
@@ -274,30 +279,30 @@ After the initial install, you can incrementally add or remove skills and profil
274
279
 
275
280
  ```bash
276
281
  # Start with a base profile
277
- npx arcane install backend-ts
282
+ npx claude-code-arcane install backend-ts
278
283
 
279
284
  # Later, add testing and security
280
- npx arcane add +testing +security
285
+ npx claude-code-arcane add +testing +security
281
286
 
282
287
  # Add a specific skill you need
283
- npx arcane add docker-setup
288
+ npx claude-code-arcane add docker-setup
284
289
 
285
290
  # Check what you have
286
- npx arcane status
291
+ npx claude-code-arcane status
287
292
  ```
288
293
 
289
294
  ### Remove workflow
290
295
 
291
296
  ```bash
292
297
  # Remove a profile you no longer need (only exclusive assets are deleted)
293
- npx arcane remove +testing
298
+ npx claude-code-arcane remove +testing
294
299
 
295
300
  # Remove a specific skill
296
- npx arcane remove docker-setup
301
+ npx claude-code-arcane remove docker-setup
297
302
 
298
303
  # Start over completely
299
- npx arcane clean --force
300
- npx arcane install backend-ts+agile
304
+ npx claude-code-arcane clean --force
305
+ npx claude-code-arcane install backend-ts+agile
301
306
  ```
302
307
 
303
308
  ---
@@ -310,18 +315,18 @@ Work on multiple features in parallel using git worktrees, each with its own Arc
310
315
 
311
316
  ```bash
312
317
  # Create worktree + install Arcane in one step
313
- npx arcane worktree feat/new-api --profile backend-ts+agile
318
+ npx claude-code-arcane worktree feat/new-api --profile backend-ts+agile
314
319
 
315
320
  # Inherits profile from current installation
316
- npx arcane worktree feat/new-api
321
+ npx claude-code-arcane worktree feat/new-api
317
322
 
318
323
  # With dependency install and Docker port isolation
319
- npx arcane worktree feat/new-api --install-deps --isolate
324
+ npx claude-code-arcane worktree feat/new-api --install-deps --isolate
320
325
  ```
321
326
 
322
327
  ### Worktree-aware installation
323
328
 
324
- When you run `npx arcane install` inside a git worktree, Arcane automatically:
329
+ When you run `npx claude-code-arcane install` inside a git worktree, Arcane automatically:
325
330
  - Detects it's in a worktree
326
331
  - Finds the main worktree's Arcane installation
327
332
  - **Shares** hooks/ and docs/ via symlink (read-only, identical across worktrees)
@@ -347,13 +352,13 @@ Install worktree-isolation scripts that auto-apply on every new Claude Code sess
347
352
 
348
353
  ```bash
349
354
  # Install global hooks
350
- npx arcane global
355
+ npx claude-code-arcane global
351
356
 
352
357
  # Check status
353
- npx arcane global --status
358
+ npx claude-code-arcane global --status
354
359
 
355
360
  # Remove
356
- npx arcane global --remove
361
+ npx claude-code-arcane global --remove
357
362
  ```
358
363
 
359
364
  This copies scripts to `~/.claude/scripts/worktree-isolation/` and adds a `SessionStart` hook to `~/.claude/settings.json`.
@@ -364,41 +369,41 @@ This copies scripts to `~/.claude/scripts/worktree-isolation/` and adds a `Sessi
364
369
 
365
370
  ```bash
366
371
  # Unity dev only
367
- npx arcane install unity-dev
372
+ npx claude-code-arcane install unity-dev
368
373
 
369
374
  # Unity with team and management
370
- npx arcane install unity-dev+unity-design+agile+clickup
375
+ npx claude-code-arcane install unity-dev+unity-design+agile+clickup
371
376
 
372
377
  # Go microservice with infra
373
- npx arcane install backend-go+infra+agile+jira
378
+ npx claude-code-arcane install backend-go+infra+agile+jira
374
379
 
375
380
  # Full-stack monorepo
376
- npx arcane install backend-ts+frontend+testing+database
381
+ npx claude-code-arcane install backend-ts+frontend+testing+database
377
382
 
378
383
  # Mobile app with CI/CD
379
- npx arcane install mobile+agile+clickup+testing
384
+ npx claude-code-arcane install mobile+agile+clickup+testing
380
385
 
381
386
  # Secure backend with docs
382
- npx arcane install backend-ts+security+docs+database
387
+ npx claude-code-arcane install backend-ts+security+docs+database
383
388
 
384
389
  # AI/ML project with data pipelines
385
- npx arcane install backend-go+ai+infra
390
+ npx claude-code-arcane install backend-go+ai+infra
386
391
 
387
392
  # SaaS with full marketing stack
388
- npx arcane install backend-ts+marketing+business+finance
393
+ npx claude-code-arcane install backend-ts+marketing+business+finance
389
394
 
390
395
  # Regulated medical device
391
- npx arcane install backend-ts+regulatory+security+testing
396
+ npx claude-code-arcane install backend-ts+regulatory+security+testing
392
397
 
393
398
  # With status bar
394
- npx arcane install backend-ts+agile+statusline
399
+ npx claude-code-arcane install backend-ts+agile+statusline
395
400
  ```
396
401
 
397
402
  ---
398
403
 
399
404
  ## What Gets Installed
400
405
 
401
- When you run `npx arcane install`, the following structure is created inside your project:
406
+ When you run `npx claude-code-arcane install`, the following structure is created inside your project:
402
407
 
403
408
  ```
404
409
  my-project/.claude/
@@ -471,7 +476,7 @@ Once installed, manage the installation from within a Claude Code session:
471
476
 
472
477
  ### "Profile not found" error
473
478
 
474
- Check available profiles with `npx arcane list`. Profile names are exact: `unity-dev`, not `unity`.
479
+ Check available profiles with `npx claude-code-arcane list`. Profile names are exact: `unity-dev`, not `unity`.
475
480
 
476
481
  ### Skills show as "WARN: not found"
477
482
 
@@ -511,15 +516,15 @@ Yes. The `.claude/` directory is part of your project. It persists until you run
511
516
 
512
517
  ### Can I add a single skill without changing profiles?
513
518
 
514
- Yes. Use `npx arcane add <skill-name>` to add individual skills. Use `npx arcane remove <skill-name>` to remove them. Changes are tracked in the manifest.
519
+ Yes. Use `npx claude-code-arcane add <skill-name>` to add individual skills. Use `npx claude-code-arcane remove <skill-name>` to remove them. Changes are tracked in the manifest.
515
520
 
516
521
  ### How do I update Arcane?
517
522
 
518
523
  ```bash
519
- npx arcane update
524
+ npx claude-code-arcane update
520
525
  ```
521
526
 
522
- Since Arcane runs via `npx`, you always get the latest version. Use `npx arcane update` to check if a newer version is available.
527
+ Since Arcane runs via `npx`, you always get the latest version. Use `npx claude-code-arcane update` to check if a newer version is available.
523
528
 
524
529
  ### What's the difference between `+clickup` and `+jira`?
525
530
 
@@ -536,7 +541,7 @@ Yes, and it's recommended. This way everyone on the team gets the same Claude Co
536
541
 
537
542
  ### How many tokens does a profile consume?
538
543
 
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 388 skills, which is why selective deploy matters.
544
+ 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 397 skills, which is why selective deploy matters.
540
545
 
541
546
  ### Why replace instead of merge on install?
542
547
 
@@ -21,7 +21,7 @@ Cada división sigue una jerarquía de estudio real con 3 niveles de autoridad:
21
21
 
22
22
  ---
23
23
 
24
- ## Roster Completo (135 Agentes)
24
+ ## Roster Completo (143 Agentes)
25
25
 
26
26
  ### División 1 — Game Development Studio (44)
27
27
 
@@ -121,6 +121,26 @@ Cada división sigue una jerarquía de estudio real con 3 niveles de autoridad:
121
121
 
122
122
  **Specialists (2):** `quality-manager`, `compliance-officer`
123
123
 
124
+ ### División 14 — Career & Job Hunt (4)
125
+
126
+ **Leads (1):** `career-strategist`
127
+
128
+ **Specialists (3):** `cv-reviewer`, `hiring-manager`, `mock-interviewer`
129
+
130
+ Los cuatro son **read-only por diseño, no por precaución**. Existen porque la búsqueda laboral tiene lecturas que solo sirven con contexto fresco: el que escribió el CV no lo puede revisar, y el que preparó las respuestas STAR no puede simular la entrevista. Un agente que hereda ese contexto no agrega nada.
131
+
132
+ Se lanzan desde los skills del perfil `+job-hunt`, no entre ellos: `cv-reviewer` y `hiring-manager` son lentes independientes sobre la misma postulación y corren **en paralelo**.
133
+
134
+ ### División 15 — Freelance (4)
135
+
136
+ **Leads (1):** `pipeline-strategist`
137
+
138
+ **Specialists (3):** `client-screener`, `proposal-reviewer`, `discovery-call`
139
+
140
+ Read-only, igual que la División 14, y por la misma razón de fondo con una vuelta más: acá el que redacta no solo está convencido de su propio texto, además **está gastando plata en enviarlo**. `client-screener` es explícitamente adversarial - arranca de la hipótesis de que el trabajo es un problema, porque el sesgo del usuario apunta al otro lado.
141
+
142
+ Se lanzan desde los skills de `+freelance`. `client-screener` y `proposal-reviewer` corren **en paralelo**: uno juzga al cliente, el otro la propuesta.
143
+
124
144
  ---
125
145
 
126
146
  ## Reglas de Delegación
@@ -152,7 +152,7 @@ txt(s, 0.78, 2.0, 11.7, 1.0,
152
152
  rect(s, 0.78, 3.25, 11.7, 1.5, RGBColor(0x14, 0x11, 0x33), radius=True, line=VIOLET, line_w=1.5)
153
153
  txt(s, 1.1, 3.45, 11, 0.4, [[("terminal", 11, MUTED, False)]])
154
154
  txt(s, 1.1, 3.85, 11, 0.7,
155
- [[("$ ", 26, CYAN, True), ("npx arcane install ", 26, WHITE, True),
155
+ [[("$ ", 26, CYAN, True), ("npx claude-code-arcane install ", 26, WHITE, True),
156
156
  ("backend-ts", 26, GREEN, True), ("+agile", 26, AMBER, True), ("+testing", 26, AMBER, True)]])
157
157
 
158
158
  cols = [("backend-ts", "base", GREEN), ("+agile", "addon", AMBER), ("+testing", "addon", AMBER)]
@@ -301,7 +301,7 @@ txt(s, 0.78, 5.7, 11.7, 0.55,
301
301
  [[("Configuracion de IA, modular y versionada — un comando para empezar.", 19, WHITE, True)]],
302
302
  align=PP_ALIGN.CENTER)
303
303
  txt(s, 0.78, 6.25, 11.7, 0.5,
304
- [[("npx arcane install <profile>", 22, WHITE, True)]], align=PP_ALIGN.CENTER)
304
+ [[("npx claude-code-arcane install <profile>", 22, WHITE, True)]], align=PP_ALIGN.CENTER)
305
305
  badge(s, 8); footer(s)
306
306
 
307
307
  out = os.path.join(os.path.dirname(os.path.abspath(__file__)), "arcane-overview.pptx")
@@ -172,7 +172,7 @@ txt(s, 0.78, 1.95, 11.7, 0.9,
172
172
  rect(s, 0.78, 3.05, 11.7, 1.45, CODEBG, radius=True, line=VIOLET, line_w=1.5)
173
173
  txt(s, 1.1, 3.22, 11, 0.35, [[("terminal", 11, MUTED, False)]], font=MONO)
174
174
  txt(s, 1.1, 3.62, 11, 0.7,
175
- [[("$ ", 24, CYAN, True), ("npx arcane install ", 24, WHITE, True),
175
+ [[("$ ", 24, CYAN, True), ("npx claude-code-arcane install ", 24, WHITE, True),
176
176
  ("backend-ts", 24, GREEN, True), ("+agile", 24, AMBER, True), ("+testing", 24, AMBER, True)]], font=MONO)
177
177
  cols = [("backend-ts", "base", GREEN), ("+agile", "addon", AMBER), ("+testing", "addon", AMBER)]
178
178
  cx = 0.78
@@ -390,7 +390,7 @@ rect(s, 0.78, 5.25, 11.7, 1.45, VIOLET, radius=True)
390
390
  txt(s, 0.78, 5.4, 11.7, 0.5,
391
391
  [[("Configuracion de IA, modular y versionada — un comando para empezar.", 17, WHITE, True)]],
392
392
  align=PP_ALIGN.CENTER)
393
- txt(s, 0.78, 5.95, 11.7, 0.5, [[("npx arcane install backend-ts+agile", 21, WHITE, True)]],
393
+ txt(s, 0.78, 5.95, 11.7, 0.5, [[("npx claude-code-arcane install backend-ts+agile", 21, WHITE, True)]],
394
394
  align=PP_ALIGN.CENTER, font=MONO)
395
395
 
396
396
  out = os.path.join(os.path.dirname(os.path.abspath(__file__)), "arcane-overview-12.pptx")
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "claude-code-arcane",
3
- "version": "2.2.0",
4
- "description": "Skills, agents, hooks and rules for Claude Code — installable via npx arcane",
3
+ "version": "2.3.0",
4
+ "description": "Skills, agents, hooks and rules for Claude Code — installable via npx claude-code-arcane",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "arcane": "./dist/cli.js"
@@ -0,0 +1,43 @@
1
+ name: freelance
2
+ description: "Freelance — conseguir proyectos como freelancer y ejecutarlos: scan de fuentes publicas sin API key con dedup y scoring, busqueda en los marketplaces (Upwork, Workana) via WebSearch, inteligencia de tarifas de mercado, screening de riesgo del cliente, perfil de plataforma, propuestas con cotizacion sobre piso de tarifa neto, contratos y SOWs, kickoff con validacion de horas contra lo cotizado, registro de horas y change orders, pipeline con costo de adquisicion y utilizacion, y 4 agentes de contexto fresco (review de propuesta, screener adversarial, discovery call, estratega de pipeline)"
3
+ type: addon
4
+
5
+ skills:
6
+ # Nucleo del perfil
7
+ - freelance-hunt
8
+ - freelance-profile
9
+ - freelance-scan
10
+ - client-screen
11
+ - freelance-proposal
12
+ - freelance-pipeline
13
+ - freelance-kickoff
14
+ - freelance-deliver
15
+ # Compartidas con +job-hunt (una sola fuente de verdad del perfil profesional)
16
+ - master-profile
17
+ - portfolio-site
18
+ - cold-outreach
19
+ - job-outcome
20
+ - career-registry
21
+ # Compartidas con +business y +agile
22
+ - contract-and-proposal-writer
23
+ - estimate
24
+
25
+ rules:
26
+ universal:
27
+ - freelance-guardrails
28
+ gamedev:
29
+ []
30
+
31
+ agents:
32
+ - freelance
33
+
34
+ permissions:
35
+ allow:
36
+ - "Bash(python *import_history.py*)"
37
+ - "Bash(python3 *import_history.py*)"
38
+ - "Bash(python *career_registry.py*)"
39
+ - "Bash(python3 *career_registry.py*)"
40
+ - "Bash(python *freelance_search.py*)"
41
+ - "Bash(python3 *freelance_search.py*)"
42
+ deny:
43
+ []
@@ -1,5 +1,5 @@
1
1
  name: job-hunt
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"
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, prep de entrevistas y 4 agentes de contexto fresco (review de CV, hiring manager, mock interview, diagnostico del embudo)"
3
3
  type: addon
4
4
 
5
5
  skills:
@@ -13,6 +13,7 @@ skills:
13
13
  - job-scrape
14
14
  - job-aplicar
15
15
  - job-outcome
16
+ - career-registry
16
17
  - job-upskill
17
18
  - cover-letter
18
19
  - cold-outreach
@@ -27,10 +28,12 @@ rules:
27
28
  []
28
29
 
29
30
  agents:
30
- []
31
+ - career
31
32
 
32
33
  permissions:
33
34
  allow:
35
+ - "Bash(python *career_registry.py*)"
36
+ - "Bash(python3 *career_registry.py*)"
34
37
  - "Bash(python *cv_export.py*)"
35
38
  - "Bash(python3 *cv_export.py*)"
36
39
  - "Bash(python *verify_pdf.py*)"
@@ -9,14 +9,19 @@ Las rutas son relativas al career workspace (`./career-workspace/` o env `CAREER
9
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
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
11
 
12
+ Quién la ejecuta: `/job-aplicar` (paso 7, obligatorio), y `/cv-tailor` y `/cover-letter` cuando se corren sueltos. Los tres declaran `Task` en `allowed-tools` justamente para poder cumplirla - un skill sin `Task` no puede aplicar esta regla, y ahí la regla sería solo una intención.
13
+
12
14
  ## El paso reviewer
13
15
 
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):
16
+ Lanzar UN agente **`cv-reviewer`** de contexto fresco vía el Agent tool. El agente ya trae la persona, el límite de lectura y el contrato de salida; el prompt solo tiene que aportar lo que el agente no puede saber:
15
17
 
16
18
  1. El texto completo de la job description.
17
19
  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
+ 3. Cuál es el perfil usado, para que sepa qué archivo de `01-Perfiles/` puede leer.
21
+
22
+ Va inline en el prompt para que no dependa de leer archivos de la conversación.
23
+
24
+ Si el agente `cv-reviewer` no está instalado (perfil `+job-hunt` sin su directorio de agentes), usar un `general-purpose` y pasarle en el prompt las cuatro restricciones: lectura acotada a `01-Perfiles/<perfil usado>.md`, prohibido leer templates y el resto del workspace, research web breve de la empresa, y el contrato de salida de abajo.
20
25
 
21
26
  El reviewer devuelve dos partes:
22
27
 
@@ -27,6 +32,14 @@ El reviewer devuelve dos partes:
27
32
  - Bullets que se pueden reformular como logro medible
28
33
  - Tono / estilo (registro, longitud, muletillas)
29
34
 
35
+ ## Segunda lente (opcional): `hiring-manager`
36
+
37
+ `cv-reviewer` contesta "¿pasa el filtro?". Un CV puede pasar con match del 85% y morir igual en el escritorio de quien contrata, por una razón distinta: **no hay evidencia de que la persona ya hizo el trabajo**.
38
+
39
+ Cuándo vale el segundo agente: postulación que importa, rol senior, o racha de rechazos post-CV. Se lanza **en paralelo** con `cv-reviewer` (no en cadena: son lentes independientes y encadenarlos solo suma latencia). Devuelve veredicto, evidencia faltante y las 3 preguntas que haría, que además son material de `/interview-prep`.
40
+
41
+ No es obligatorio. Para una aplicación de rutina, `cv-reviewer` solo alcanza.
42
+
30
43
  ## Reglas de aplicación del feedback
31
44
 
32
45
  - **Una sola ronda.** El drafter aplica la Parte A, incorpora de la Parte B lo que corresponda, y sigue. Sin ida y vuelta iterativo.
@@ -0,0 +1,53 @@
1
+ # Freelance Guardrails (marketplaces y clientes directos)
2
+
3
+ Buscar empleo es gratis: aplicás a 40 puestos y solo perdés tiempo. Freelancear no. Cada propuesta cuesta algo, cada contrato malo toca tu reputación, y cada "¿me agregás esto rapidito?" sin cobrar sale de tu bolsillo.
4
+
5
+ Estas cuatro reglas existen porque los tres recursos que se gastan (plata, reputación, tiempo no facturado) no se recuperan.
6
+
7
+ **El costo de postularse tiene nombre distinto en cada plataforma** y las reglas valen igual: Connects en Upwork, bids en Freelancer.com, y en outreach directo son las horas que ponés en escribir la propuesta. Donde abajo diga Connects, leé "lo que te cuesta postularte".
8
+
9
+ Las rutas son relativas al career workspace (`./career-workspace/` o env `CAREER_WORKSPACE`).
10
+
11
+ ## 1. Postularse cuesta plata: no se gasta sin screen
12
+
13
+ Nunca redactar una propuesta para una oferta cuyo cliente no pasó `/client-screen`, ni para una que quedó bajo el umbral de score.
14
+
15
+ Si el usuario quiere postularse igual a una que falló el screen, se puede - **pero se le dice qué falló y se registra en la nota**. Un pago sin verificar que nadie nombró es una postulación tirada, y peor: es la propuesta que sí te contestan y termina en disputa.
16
+
17
+ ## 2. La reputación se protege rechazando
18
+
19
+ Ganar un contrato no siempre es bueno. Casi toda plataforma calcula un puntaje sobre contratos cerrados (en Upwork es el Job Success Score) donde un cliente insatisfecho pesa más que dos contentos, y con clientes directos el equivalente son las referencias que no vas a poder pedir. Un contrato con alcance difuso, presupuesto irrealista o cliente sin historial es **riesgo de reputación**, no una oportunidad.
20
+
21
+ Cuando el screen marca riesgo alto, la recomendación por defecto es no postularse. Decir "no" es una acción del pipeline, no una ausencia de acción.
22
+
23
+ ## 3. Nada se cotiza abajo del piso
24
+
25
+ Todo bid pasa por el piso declarado en `01-Perfiles/` (tarifa mínima aceptable). El piso es **neto**, después de la comisión de la plataforma: si se queda un 10%, un piso de 40 USD/h exige bidear 45. Con cliente directo la comisión es cero, pero el piso sigue siendo neto de impuestos y de las horas no facturables.
26
+
27
+ Si el usuario todavía no fijó un piso, `/freelance-scan market` da la mediana de lo que cobran otros con su perfil. Es un punto de partida, no el piso: el piso lo define su costo de vida, no el mercado.
28
+
29
+ Alcance nuevo, precio nuevo. Ninguna propuesta ni contrato se amplía sin cotizarlo: si el trabajo extra no entra en un change order con número, no entra.
30
+
31
+ ## 4. El envío siempre lo hace el usuario
32
+
33
+ Ninguna skill de este perfil envía una propuesta, acepta un contrato ni gasta el presupuesto de postulaciones. Se redacta, se revisa, se muestra, y el usuario copia y manda.
34
+
35
+ Esto no es prudencia nuestra: **la API de Upwork no tiene mutation para postularse ni para gastar Connects**, justamente para frenar bots de auto-bidding, y las demás plataformas prohíben el envío automatizado en sus términos. Ninguna skill debe pretender lo contrario, y una que lo intentara estaría violando los ToS además de esta regla.
36
+
37
+ El corolario para las **fuentes**: ninguna skill del perfil puede depender de credenciales que cada usuario tenga que conseguir por su cuenta. Este perfil lo instala cualquiera, y una fuente con API key aprobada a mano funciona para uno y está rota para el resto. Las fuentes automáticas son públicas y sin key (ver `skills/freelance-scan/references/platforms.md`); lo demás se pega a mano.
38
+
39
+ ## La estructura no la sostiene este archivo
40
+
41
+ Una regla sin columna derecha es una intención.
42
+
43
+ | Regla | Qué la hace cumplir |
44
+ |---|---|
45
+ | Screen antes de gastar en postularse | `/freelance-proposal` exige la nota de screen; sin ella, pregunta y no redacta |
46
+ | Rechazar por riesgo de reputación | `/client-screen` emite veredicto explícito; el agente `client-screener` es adversarial por diseño |
47
+ | Piso de tarifa | `/freelance-proposal` lee el piso del perfil y falla ruidoso si el bid queda abajo; `/freelance-scan market` da la referencia de mercado |
48
+ | Alcance nuevo, precio nuevo | `/freelance-pipeline` detecta drift de alcance en contratos activos y pide change order |
49
+ | Envío manual | Ningún script del perfil escribe a una plataforma: `freelance_search.py` solo lee, y no hay otro |
50
+
51
+ ## Registro
52
+
53
+ Toda decisión de no postularse se registra igual que una postulación: nota en `03-Aplicaciones/` con `estado: descartado` y el motivo en `## Notas`. Los descartes son la mitad de los datos que `/freelance-pipeline` necesita para decirte si tu criterio de selección funciona.