career-compass-mcp 2.9.6 → 2.9.8

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 (101) hide show
  1. package/PRIVACY.md +49 -14
  2. package/README.md +192 -70
  3. package/build/bin/cli.js +13 -4
  4. package/build/bin/cli.js.map +1 -1
  5. package/build/src/dashboard-lite/ask-bridge.d.ts +27 -3
  6. package/build/src/dashboard-lite/ask-bridge.d.ts.map +1 -1
  7. package/build/src/dashboard-lite/ask-bridge.js +38 -8
  8. package/build/src/dashboard-lite/ask-bridge.js.map +1 -1
  9. package/build/src/dashboard-lite/server.d.ts +1 -0
  10. package/build/src/dashboard-lite/server.d.ts.map +1 -1
  11. package/build/src/dashboard-lite/server.js +1 -1
  12. package/build/src/dashboard-lite/server.js.map +1 -1
  13. package/build/src/empty-state.d.ts +18 -10
  14. package/build/src/empty-state.d.ts.map +1 -1
  15. package/build/src/empty-state.js +25 -18
  16. package/build/src/empty-state.js.map +1 -1
  17. package/build/src/index.js +17 -5
  18. package/build/src/index.js.map +1 -1
  19. package/build/src/node-version.d.ts +22 -0
  20. package/build/src/node-version.d.ts.map +1 -0
  21. package/build/src/node-version.js +28 -0
  22. package/build/src/node-version.js.map +1 -0
  23. package/build/src/pipeline-stats.d.ts +33 -0
  24. package/build/src/pipeline-stats.d.ts.map +1 -1
  25. package/build/src/pipeline-stats.js +123 -0
  26. package/build/src/pipeline-stats.js.map +1 -1
  27. package/build/src/prompts/index.d.ts +2 -0
  28. package/build/src/prompts/index.d.ts.map +1 -1
  29. package/build/src/prompts/index.js +31 -114
  30. package/build/src/prompts/index.js.map +1 -1
  31. package/build/src/schemas/career-schema.d.ts +128 -0
  32. package/build/src/schemas/career-schema.d.ts.map +1 -1
  33. package/build/src/schemas/career-schema.js +55 -0
  34. package/build/src/schemas/career-schema.js.map +1 -1
  35. package/build/src/server-instructions.d.ts +10 -0
  36. package/build/src/server-instructions.d.ts.map +1 -0
  37. package/build/src/server-instructions.js +26 -0
  38. package/build/src/server-instructions.js.map +1 -0
  39. package/build/src/server.d.ts.map +1 -1
  40. package/build/src/server.js +42 -0
  41. package/build/src/server.js.map +1 -1
  42. package/build/src/storage/file-store.d.ts +67 -2
  43. package/build/src/storage/file-store.d.ts.map +1 -1
  44. package/build/src/storage/file-store.js +170 -2
  45. package/build/src/storage/file-store.js.map +1 -1
  46. package/build/src/tools/career-context.d.ts +41 -1
  47. package/build/src/tools/career-context.d.ts.map +1 -1
  48. package/build/src/tools/career-context.js +105 -0
  49. package/build/src/tools/career-context.js.map +1 -1
  50. package/build/src/tools/career-kb.d.ts +10 -0
  51. package/build/src/tools/career-kb.d.ts.map +1 -1
  52. package/build/src/tools/career-kb.js +225 -30
  53. package/build/src/tools/career-kb.js.map +1 -1
  54. package/build/src/tools/doctor.d.ts +32 -1
  55. package/build/src/tools/doctor.d.ts.map +1 -1
  56. package/build/src/tools/doctor.js +143 -40
  57. package/build/src/tools/doctor.js.map +1 -1
  58. package/build/src/tools/evidence.d.ts.map +1 -1
  59. package/build/src/tools/evidence.js +2 -1
  60. package/build/src/tools/evidence.js.map +1 -1
  61. package/build/src/tools/interview.d.ts +12 -1
  62. package/build/src/tools/interview.d.ts.map +1 -1
  63. package/build/src/tools/interview.js +165 -40
  64. package/build/src/tools/interview.js.map +1 -1
  65. package/build/src/tools/opportunity.d.ts +17 -0
  66. package/build/src/tools/opportunity.d.ts.map +1 -1
  67. package/build/src/tools/opportunity.js +87 -15
  68. package/build/src/tools/opportunity.js.map +1 -1
  69. package/build/src/tools/pipeline-calendar.d.ts +36 -0
  70. package/build/src/tools/pipeline-calendar.d.ts.map +1 -0
  71. package/build/src/tools/pipeline-calendar.js +117 -0
  72. package/build/src/tools/pipeline-calendar.js.map +1 -0
  73. package/build/src/tools/pipeline.d.ts +86 -2
  74. package/build/src/tools/pipeline.d.ts.map +1 -1
  75. package/build/src/tools/pipeline.js +316 -32
  76. package/build/src/tools/pipeline.js.map +1 -1
  77. package/build/src/tools/read-guard.js +1 -1
  78. package/build/src/tools/read-guard.js.map +1 -1
  79. package/build/src/tools/resume.d.ts +26 -0
  80. package/build/src/tools/resume.d.ts.map +1 -1
  81. package/build/src/tools/resume.js +127 -69
  82. package/build/src/tools/resume.js.map +1 -1
  83. package/build/src/tools/section-diff.d.ts +29 -0
  84. package/build/src/tools/section-diff.d.ts.map +1 -0
  85. package/build/src/tools/section-diff.js +68 -0
  86. package/build/src/tools/section-diff.js.map +1 -0
  87. package/build/src/tools/signal-digest.d.ts +18 -1
  88. package/build/src/tools/signal-digest.d.ts.map +1 -1
  89. package/build/src/tools/signal-digest.js +41 -11
  90. package/build/src/tools/signal-digest.js.map +1 -1
  91. package/build/src/tools/today-digest.d.ts +22 -2
  92. package/build/src/tools/today-digest.d.ts.map +1 -1
  93. package/build/src/tools/today-digest.js +249 -16
  94. package/build/src/tools/today-digest.js.map +1 -1
  95. package/build/src/tools/truth-rule.d.ts +15 -1
  96. package/build/src/tools/truth-rule.d.ts.map +1 -1
  97. package/build/src/tools/truth-rule.js +16 -0
  98. package/build/src/tools/truth-rule.js.map +1 -1
  99. package/build/src/types/tool-args.d.ts +18 -1
  100. package/build/src/types/tool-args.d.ts.map +1 -1
  101. package/package.json +3 -1
package/PRIVACY.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # Privacy Policy — Career Compass MCP
2
2
 
3
- **Last updated:** 2026-09-26
4
- **Applies to:** the `career-compass-mcp` MCP server and its bundled local dashboard, all versions.
3
+ **Last updated:** 2026-10-07
4
+ **Applies to:** the `career-compass-mcp` MCP server, its bundled local dashboard, and the
5
+ Career Compass plugin's skills in every Claude app, all versions.
5
6
 
6
7
  ---
7
8
 
@@ -12,9 +13,15 @@ career history and job pipeline are plain YAML files in a directory you choose.
12
13
  uploaded, and there is nothing for us to collect, store, sell, or hand over — because your
13
14
  data never reaches us in the first place.
14
15
 
15
- There is exactly one outbound network request in the whole package, and only when you ask
16
- for it: the `check_setup` tool asks the public npm registry whether a newer version has
17
- been released. It sends nothing about you. Details under [Update checks](#update-checks).
16
+ The server makes one outbound network request of its own, and only when you ask for it:
17
+ the `check_setup` tool asks the public npm registry whether a newer version has been
18
+ released. It sends nothing about you. Details under [Update checks](#update-checks).
19
+ Commands you run yourself with `npx`, such as the dashboard command `check_setup` prints,
20
+ are separate requests: npm downloads the package, and nothing about you is sent.
21
+
22
+ In claude.ai chat (web, desktop and mobile) only the plugin's skills load, as instructions
23
+ to Claude. The server does not run there, so Career Compass stores nothing and sends
24
+ nothing. Details under [In claude.ai chat](#in-claudeai-chat).
18
25
 
19
26
  ---
20
27
 
@@ -35,18 +42,21 @@ Career Compass reads and writes the career information *you* give it:
35
42
 
36
43
  ## Where it is stored
37
44
 
38
- In a single directory on your machine, set by the `CAREER_DATA_PATH` environment variable.
39
- The default is `~/.career-compass/`. Files are ordinary YAML you can open, edit, back up,
45
+ In a single directory on your machine, set by the `CAREER_DATA_PATH` environment variable
46
+ (in the plugin, the **Career data folder** setting). The default is `~/.career-compass/`. Files are ordinary YAML you can open, edit, back up,
40
47
  or delete with any text editor. While a write is in progress the folder also briefly holds a
41
48
  `.write-claim` file naming the process doing the writing, so a second Career Compass process
42
49
  (a dashboard, or a server registered in two clients) refuses rather than overwriting it. It is
43
50
  deleted when the write finishes, contains no personal data, and is safe to remove by hand.
44
51
  Each write also leaves a timestamped `.bak` copy of the
45
- previous version in the same directory.
52
+ previous version in the same directory. Only the newest 5 `.bak` files per data file are
53
+ kept; older ones are deleted automatically on the next write. Backups you make by hand are
54
+ never touched.
46
55
 
47
56
  **We never receive this data.** There is no Career Compass account, no cloud sync, no
48
- backup service, and no telemetry or analytics of any kind. The only request the software
49
- ever makes to the internet is the version check described below, which carries none of it.
57
+ backup service, and no telemetry or analytics of any kind. The only request the server
58
+ makes to the internet on its own is the version check described below, which carries none
59
+ of it.
50
60
 
51
61
  ## Update checks
52
62
 
@@ -80,6 +90,10 @@ Precisely what that involves:
80
90
  The npm registry is operated by npm, Inc. (GitHub/Microsoft) under its own privacy policy:
81
91
  https://docs.npmjs.com/policies/privacy
82
92
 
93
+ Career Compass runs nothing on a schedule. Any schedule, such as a morning briefing, is
94
+ one you create yourself in your own Claude app; it runs locally on your computer and only
95
+ reads.
96
+
83
97
  Separately, `check_setup` also checks whether your local dashboard is running by requesting
84
98
  `http://127.0.0.1:<port>/`. That is a loopback request to your own machine; it never
85
99
  reaches the network.
@@ -87,7 +101,7 @@ reaches the network.
87
101
  ## Who else sees it
88
102
 
89
103
  Career Compass is an MCP server, so it answers a client you connect it to — normally Claude
90
- Desktop or Claude Code. When you ask Claude to tailor a resume or prep an interview, the
104
+ Code, or Cowork on your computer. When you ask Claude to tailor a resume or prep an interview, the
91
105
  relevant parts of your career data are passed to that client, and from there to the model
92
106
  provider under **their** privacy policy, not this one:
93
107
 
@@ -100,7 +114,27 @@ npm registry about a version number and carries nothing else.
100
114
 
101
115
  The bundled local dashboard (`career-compass-mcp dashboard`) serves pages from
102
116
  `127.0.0.1` on your own machine, renders them with no external assets, and makes no
103
- network calls.
117
+ network calls. Starting it means running it, usually with `npx`, which downloads the
118
+ package from the npm registry as described above.
119
+
120
+ If you start the dashboard with `--ask-claude`, its buttons run Claude Code on your
121
+ computer. Claude Code sends the Career KB content it reads to Anthropic, under your own
122
+ Claude account and billing, like any other Claude Code session. It is off unless you pass
123
+ the flag, and read-only unless you start it with `--ask-claude-writes`.
124
+
125
+ ## In claude.ai chat
126
+
127
+ The Career Compass plugin is also offered in claude.ai chat on the web, desktop and mobile.
128
+ There, only its skills load: plain-text instructions that tell Claude how to do a fit
129
+ check, tailor a résumé, or prep an interview from what you paste into the conversation. The
130
+ MCP server above does not run in chat, so:
131
+
132
+ - nothing is written to your computer or anywhere else by Career Compass, and nothing
133
+ carries over between chats;
134
+ - Career Compass makes no network requests, not even the update check;
135
+ - what you paste, and Claude's replies, are part of your Claude conversation, handled by
136
+ Anthropic under its privacy policy (https://www.anthropic.com/legal/privacy) exactly as
137
+ any other chat is. We never see it.
104
138
 
105
139
  ## Untrusted text
106
140
 
@@ -113,8 +147,9 @@ anywhere else.
113
147
 
114
148
  ## Data retention
115
149
 
116
- Your files stay on your disk until you delete them. There is no retention period on our
117
- side because we hold nothing. To remove everything, delete your `CAREER_DATA_PATH`
150
+ Your files stay on your disk until you delete them. The one exception is backups: only the
151
+ newest 5 `.bak` files per data file are kept, and older ones are deleted automatically.
152
+ There is no retention period on our side because we hold nothing. To remove everything, delete your `CAREER_DATA_PATH`
118
153
  directory (including the `.bak` files and any leftover `.write-claim`) and uninstall the package.
119
154
 
120
155
  ## Third-party sharing
package/README.md CHANGED
@@ -6,77 +6,155 @@
6
6
  [![Node](https://img.shields.io/badge/node-%3E%3D22-green.svg)](https://nodejs.org)
7
7
  [![MCP](https://img.shields.io/badge/MCP-server-7c4dff.svg)](https://modelcontextprotocol.io)
8
8
 
9
- **An AI-native career co-pilot for Claude.**
9
+ **Paste a job posting. Get an honest fit verdict.**
10
10
 
11
- Career Compass gives Claude your entire career history as a working corpus — then uses it
12
- to tailor every résumé, track every application, prep every interview, and pressure-test
13
- every offer. One conversation that never forgets what you have done.
11
+ Paste a job posting and your resume, and ask "Do I fit this?" You get a straight verdict
12
+ (strong fit, stretch, or long shot), each of the posting's must-haves matched to evidence
13
+ from your own background, and the top two gaps with how to handle them. Then Claude can
14
+ tailor your résumé, write the cover letter and prep the interview without padding your
15
+ history. Free, MIT-licensed, and in Claude Code and Cowork your files stay on your own
16
+ computer.
14
17
 
15
- Your data is plain YAML on your own disk. No account, no cloud sync, no telemetry.
18
+ ## What a fit check looks like
16
19
 
17
- ![Career Compass dashboard — pipeline board, next actions, and stage distribution](docs/screenshots/dashboard-lite-dark.png)
20
+ *Example on sample data:* the fictional Alex Rivera who ships with the package, and a
21
+ made-up posting.
18
22
 
19
- **See it in 10 seconds.** No install, no config, no data of your own required:
23
+ ```
24
+ You: [pastes a VP of Operations posting from a payments company]
25
+ Do I fit this?
26
+
27
+ Claude: Stretch: strong on operations at scale, but no P&L or payments
28
+ experience yet.
29
+
30
+ Must-haves, with your evidence
31
+ - 8+ years leading operations teams: Operations Manager at Apex
32
+ Logistics, team of 42; Senior Program Manager at MedFlow, 6 PMs.
33
+ - Scaling a process across sites: patient onboarding cut from 47 days
34
+ to 11 across 3 acquired health systems.
35
+ - Vendor and cost management: procurement cycle cut from 9 months to
36
+ 6 weeks; headcount costs down 18% while throughput rose 31%.
37
+
38
+ Top two gaps
39
+ 1. P&L ownership. You ran $8M in program budgets, which isn't a P&L.
40
+ Say what that budget covered, and ask in the screen whether the
41
+ role owns a P&L from day one.
42
+ 2. Payments. Nothing in your history is payments or fintech. Lead
43
+ with the healthcare compliance work as the closest thing, and
44
+ don't claim more.
45
+
46
+ Want me to tailor your résumé to this one, or track it?
47
+ ```
48
+
49
+ The real reply goes on with talking points, red flags and questions to ask. A "day in the
50
+ life" of the role comes only when you ask for one.
51
+
52
+ ## It won't pad your résumé
53
+
54
+ Every sentence it writes about you has to come from your history or from what you told it.
55
+ When a stronger draft needs a fact it doesn't have, the draft says so in place:
20
56
 
21
- ```bash
22
- npx -y career-compass-mcp dashboard --sample
57
+ ```
58
+ - Cut patient onboarding from 47 days to 11 after the acquisition of 3
59
+ regional health systems, leading a team of [confirm: team size] and
60
+ eliminating $2.1M in compliance penalties over 18 months.
23
61
  ```
24
62
 
25
- That opens the screenshot above in your browser, running against a fictional job search
26
- bundled with the package. It is read-only — nothing is written, and nothing leaves your
27
- machine.
63
+ The sample record says what changed, not how many people did it, so the bullet asks. You
64
+ fill in the bracket or cut it; nothing gets invented to sound stronger.
28
65
 
29
- ---
66
+ ## Get it in the Claude directory
30
67
 
31
- ## What it feels like
68
+ In the Claude app or on claude.ai, open **Customize → Plugins**, search for
69
+ **Career Compass**, and add it. That's the whole install.
32
70
 
33
- > **Prefer the picture?** [How Career Compass works](https://benskamps.github.io/career-compass-mcp/how-it-works/) — one illustrated page: the five steps, facts-about-you vs. the résumé you send, how the interview prep helps you ask, and [how the dashboard works](https://benskamps.github.io/career-compass-mcp/how-it-works/#dashboard). Also on [brokenbranch.dev](https://www.brokenbranch.dev/career-compass/).
71
+ | Where you use Claude | What you get |
72
+ |---|---|
73
+ | **claude.ai chat** (web, desktop, mobile) | The skills only. Paste a résumé and a posting and Claude does the fit check, tailoring, interview prep or offer review in the conversation. Nothing is saved between chats. |
74
+ | **Cowork** and **Claude Code** on your computer | The skills plus the local server: your career history and every application are kept as plain YAML on your computer, so later answers start from them. Needs **Node.js 22 or newer**. |
34
75
 
35
- ```
36
- You: I have a panel interview at Veridian Health on Friday — Director of Operations role.
37
- Can you prep me?
76
+ The commands below work in Claude Code and Cowork. In claude.ai chat, just ask in plain
77
+ words ("prep me for my interview on Friday").
38
78
 
39
- Claude: On it. Reading your career history now...
79
+ | Command | What it does |
80
+ |---|---|
81
+ | `/career-compass:start` | Sets up your career history from a pasted résumé, or shows what to try first |
82
+ | `/career-compass:fit-check` | A fit verdict for a pasted posting |
83
+ | `/career-compass:interview-prep` | Likely questions, three to five STAR stories from your real work, and questions to ask |
84
+ | `/career-compass:today` | One "start here" move, then the rest of today's list |
85
+ | `/career-compass:debrief` | Right after an interview: what landed, what to sharpen, and a thank-you note per interviewer from your own notes |
86
+ | `/career-compass:week` | Your week: what moved, stalled or closed, your pace, and one focus for next week |
87
+ | `/career-compass:sweep` | Checks your inbox and calendar (through connectors you already use) for job-search mail and invites, then updates applications in one batch you approve. Never sends email |
88
+ | `/career-compass:answer` | Answer an application form's questions from your real history |
40
89
 
41
- [Generates 90-second pitch, 8 STAR stories matched to likely panel questions,
42
- company research brief, 10 questions to ask them, and a list of watch-outs
43
- based on gaps in your background — all in one response]
44
- ```
90
+ A few things it does once you've used it for a while: saves end with a receipt of what
91
+ changed, you can record an offer or how an interview round went, and `/career-compass:today`
92
+ leads with a debrief the day after an interview. When you accept an offer it switches to
93
+ closing out the search and then to your first weeks in the new job. If you want a nudge,
94
+ you can set up a [morning briefing](#a-morning-briefing-if-you-want-one) on your own
95
+ computer.
45
96
 
46
- ```
47
- You: Here's a job posting I just found. [pastes posting]
48
- How well do I fit?
97
+ ## Turn your git history into honest résumé evidence
49
98
 
50
- Claude: Fit score: 8.1/10. Here's why — and here's what they'll probe you on...
99
+ If you write code, you have a record of what you did. Ask:
51
100
 
52
- [Returns matched strengths, honest gap analysis, talking points in their language,
53
- and a "day in the life" of what the role actually looks like]
54
- ```
101
+ > **"Look at my project in ~/code/billing-service and tell me what I can honestly claim on my résumé."**
102
+
103
+ `harvest_evidence` reads that project's git history on your computer and reports counts,
104
+ each with the command that produced it. It writes nothing and sends nothing.
55
105
 
56
106
  ```
57
- You: Show me what needs attention in my pipeline today.
107
+ ## What is measurably true
108
+ - Committed to billing-service across 14 distinct months, 2024-11 to 2025-12.
109
+ - how: git log --no-merges --author=<you> --since=2024-10-07; counted distinct YYYY-MM values.
110
+ - 212 of 530 non-merge commits in this window are yours (40%).
111
+ - how: git rev-list --count --no-merges, with and without --author. Share of commits,
112
+ which is a measure of participation and NOT of contribution size.
113
+
114
+ ## What this cannot tell you
115
+ - Did any of this ship to real users, and did anything measurable change when it did?
116
+ That number is the résumé line; none of the above is.
117
+ ```
118
+
119
+ *Example on made-up numbers.* Counts are not achievements, so Claude asks the questions the
120
+ log can't answer first. Say you built the invoicing service and it shipped, and the draft
121
+ keeps to that:
58
122
 
59
- Claude: 3 things:
60
- - Meridian Logistics follow-up is overdue (8 days since you applied, referral from Marcus Chen)
61
- - Veridian panel is Friday — prep above
62
- - Novare rejection arrived — want me to draft a keep-the-door-open response?
123
+ ```
124
+ - Built the invoicing service in billing-service over 14 months (212 commits),
125
+ which [confirm: what changed for users once it shipped, and by how much?].
63
126
  ```
64
127
 
65
- ---
128
+ ## Tell me what it got wrong
66
129
 
67
- ## Install
130
+ There is no telemetry, so the only way I hear about a bad fit check is if you say so.
131
+ [Open a "What did your first fit check get wrong?" issue](https://github.com/benskamps/career-compass-mcp/issues/new?template=fit-check-wrong.yml)
132
+ (leave out anything personal), or say what you used it for in
133
+ [Discussions](https://github.com/benskamps/career-compass-mcp/discussions).
68
134
 
69
- ### From the Claude directory (Claude Code and Cowork)
135
+ More: [How Career Compass works](https://benskamps.github.io/career-compass-mcp/how-it-works/),
136
+ with pages for [people who were laid off](https://benskamps.github.io/career-compass-mcp/for/laid-off/),
137
+ [career switchers](https://benskamps.github.io/career-compass-mcp/for/career-switchers/) and
138
+ [new grads](https://benskamps.github.io/career-compass-mcp/for/new-grads/).
70
139
 
71
- Find **Career Compass** in the directory under **Customize → Plugins** on claude.ai or in
72
- the desktop app, and add it. That's the whole install: the plugin starts the server for you
73
- and brings a skill that teaches Claude the working order. Change where your files live in
74
- the plugin's settings (**Career data folder**). If you installed it this way, skip the rest
75
- of this section. Running the command below as well would register a second copy of every
140
+ ---
141
+
142
+ ## For other MCP clients
143
+
144
+ Everything below is for running the server yourself, outside the Claude directory: Claude
145
+ Desktop, Cursor, other MCP clients, or Claude Code without the plugin. If you installed the
146
+ plugin, skip it. Running the command below as well would register a second copy of every
76
147
  tool, so `install` detects the plugin and leaves Claude Code alone.
77
148
 
78
- The plugin's server runs on your own computer, so it works in Claude Code and in Cowork
79
- sessions on your machine, but not in claude.ai chat on the web or mobile.
149
+ The package has 18 tools, 4 prompts, 9 resources and a local dashboard. To see the
150
+ dashboard on the bundled sample first, with no install and no data of your own:
151
+
152
+ ```bash
153
+ npx -y career-compass-mcp dashboard --sample
154
+ ```
155
+
156
+ It opens in your browser, read-only, against the fictional Alex Rivera search. Nothing is
157
+ written and nothing leaves your machine.
80
158
 
81
159
  ### Everywhere else, in one command
82
160
 
@@ -206,12 +284,13 @@ Claude will extract your work history, achievements, and skills into structured
206
284
  clarifying questions about gaps or vague metrics, and call `save_career_section` once per
207
285
  section to write it to disk.
208
286
 
209
- `save_career_section` is where your data actually lands — it is the only tool that writes
210
- the Career KB. It saves one section at a time (`profile`, `experience`, `skills`,
211
- `education`, `projects`, `testimonials`), validates against the schema before touching the
212
- file, and keeps the previous version as a timestamped `.bak`. Because it replaces a section
213
- wholesale, your client will ask you to confirm each write; approving them is what fills the
214
- KB.
287
+ `save_career_section` is where your history actually lands. It saves one section at a time
288
+ (`profile`, `experience`, `skills`, `education`, `projects`, `testimonials`), validates
289
+ against the schema before touching the file, and keeps the previous version as a
290
+ timestamped `.bak`. It compares each save with what is stored: a save that would drop roles
291
+ or achievements is refused unless the call says to replace them, and every save ends with a
292
+ one-line receipt of what changed. Your client asks you to confirm each write; approving them
293
+ is what fills the KB.
215
294
 
216
295
  That is the whole setup. From there every tool has full context on who you are, and the KB
217
296
  compounds — each posting you explore, interview you debrief, and offer you weigh can add a
@@ -236,20 +315,30 @@ on your own disk**.
236
315
  - **Who sees it:** only the MCP client you connect it to, and through that client your model
237
316
  provider, under *their* policy — and only for the requests you make. Career Compass sends
238
317
  it nowhere on its own.
239
- - **The one network call:** `check_setup` asks the public **npm registry** whether a newer
240
- version has been released. It is an unauthenticated GET for the package name, carrying
241
- nothing about you or your data, and it only happens when `check_setup` is called with
242
- `checkForUpdates: true`, which Claude does when you ask about updates. It is off by
243
- default. There is no analytics or phone-home path anywhere else in the package.
318
+ - **The one request the server makes:** `check_setup` asks the public **npm registry**
319
+ whether a newer version has been released. It is an unauthenticated GET for the package
320
+ name, carrying nothing about you or your data, and it only happens when `check_setup` is
321
+ called with `checkForUpdates: true`, which Claude does when you ask about updates. It is
322
+ off by default. There is no analytics or phone-home path anywhere else in the package.
323
+ - **Requests you run yourself:** any `npx … career-compass-mcp` command, including the
324
+ dashboard command `check_setup` prints, has npm download the package from the same
325
+ registry. That is npm fetching code, and it carries none of your data.
326
+ - **The dashboard's `--ask-claude` option** runs Claude Code on your computer, which sends
327
+ the Career KB content it reads to Anthropic under your own Claude account and billing.
328
+ It is off unless you start the dashboard with it, and read-only unless you start it with
329
+ `--ask-claude-writes`.
330
+ - **Schedules are yours:** Career Compass runs nothing on a timer. A
331
+ [morning briefing](#a-morning-briefing-if-you-want-one) is a task you create in your own
332
+ Claude app; it runs on your computer and only reads.
244
333
  - **What ships in the package:** the server code and a small set of **fictional** example
245
334
  files (`data/example/` — the Alex Rivera persona). A publish-time leak guard enforces that
246
335
  no real career data can ride along.
247
336
  - **The dashboard reads at request time, locally.** Your YAML is read when you open a page,
248
337
  by a server on your own `localhost`. It is never baked into a build, never prerendered,
249
338
  and never sent over the network.
250
- - **What else is in that folder:** timestamped `.bak` copies of previous versions (the five
251
- most recent per file; older ones are pruned on the next write, and backups you make by
252
- hand are never touched), plus — only while a write is actually happening — a
339
+ - **What else is in that folder:** timestamped `.bak` copies of previous versions (only
340
+ the newest 5 per data file are kept; older ones are deleted automatically on the next
341
+ write, and backups you make by hand are never touched), plus — only while a write is actually happening — a
253
342
  `.write-claim` file that stops a second Career Compass process from writing at the same
254
343
  time.
255
344
  - **Retention is yours:** files stay until you delete them. Remove the `CAREER_DATA_PATH`
@@ -264,6 +353,24 @@ questions or concerns: [open an issue](https://github.com/benskamps/career-compa
264
353
 
265
354
  ---
266
355
 
356
+ ## A morning briefing, if you want one
357
+
358
+ Career Compass never runs on a timer. If you'd like your job-search list waiting each
359
+ morning, you can create a **local** scheduled task in the Claude Code desktop app (see
360
+ [desktop scheduled tasks](https://code.claude.com/docs/en/desktop-scheduled-tasks)). A local
361
+ task runs on your computer, so it reaches the server and your data folder. Give it this
362
+ prompt, as plain text:
363
+
364
+ > Call pipeline_view with action next_actions. Lead with the Start here item in eight lines or fewer, and change nothing. If it's after 2pm, say it's a catch-up run.
365
+
366
+ Use the plain prompt rather than `/career-compass:today`: scheduled runs don't start
367
+ commands that only run when you type them. `pipeline_view` only reads, so the briefing
368
+ changes nothing. Cowork's scheduled tasks may run remotely, where your local data folder
369
+ isn't available, so try one by hand before relying on it. Cloud routines and `/loop` don't
370
+ fit this: cloud runs can't see your files, and `/loop` ends with the session.
371
+
372
+ ---
373
+
267
374
  ## Tools
268
375
 
269
376
  Eighteen tools, grouped by where they land in a search. **Read** tools take no permission
@@ -273,16 +380,16 @@ prompt in most clients; **Write** tools ask before touching your files.
273
380
 
274
381
  | Tool | Access | What it does |
275
382
  |------|--------|-------------|
276
- | `explore_opportunity` | Read | Scores a posting against your KB **and your stated preferences** — salary band, remote, relocation, notice period. Returns a fit score, an explicit comp and location check, matched strengths, honest gaps, talking points, day-in-the-life, red flags. Pass `sourceFitLabel` ("LinkedIn: strong match") and it will agree or disagree with the job board, in both directions |
383
+ | `explore_opportunity` | Read | Judges a posting against your KB **and your stated preferences** — salary band, remote, relocation, notice period. Opens with a verdict (Strong fit, Stretch, or Long shot) and the biggest reason, then an explicit comp and location check, evidence per requirement, honest gaps, talking points and red flags. A "day in the life" only when you ask. Pass `sourceFitLabel` ("LinkedIn: strong match") and it will agree or disagree with the job board, in both directions |
277
384
  | `research_company` | Read | Builds an intelligence brief: product, culture, funding, interview process, strategic fit |
278
385
 
279
386
  ### Apply
280
387
 
281
388
  | Tool | Access | What it does |
282
389
  |------|--------|-------------|
283
- | `tailor_resume` | Read | Generates an ATS-optimized résumé from your KB — standard, federal, academic, or functional |
390
+ | `tailor_resume` | Read | Writes a résumé tailored to one posting from your KB — standard, federal, academic, or functional — using the posting's words only where your history says the same thing |
284
391
  | `generate_cover_letter` | Read | Writes a cover letter with your actual achievements woven in, in a tone you pick — professional, conversational, enthusiastic, or concise |
285
- | `format_for_ats` | Read | Reformats résumé content for a specific ATS: Workday, Greenhouse, Lever, LinkedIn, iCIMS, Taleo, SmartRecruiters, or generic |
392
+ | `format_for_ats` | Read | Reformats résumé text you already have into plain sections an applicant tracking system can parse, ready to paste field by field (Workday, Greenhouse, Lever, LinkedIn, iCIMS, Taleo, SmartRecruiters, or generic). Reformats only; it never rewrites what you did |
286
393
 
287
394
  ### Track the pipeline
288
395
 
@@ -290,7 +397,7 @@ prompt in most clients; **Write** tools ask before touching your files.
290
397
  |------|--------|-------------|
291
398
  | `pipeline_view` | Read | Lists applications, funnel stats, what needs attention, or one application by id |
292
399
  | `pipeline_add` | Write | Adds one application. Optional starting `status` (defaults to `applied`); unknown statuses are rejected with a did-you-mean suggestion |
293
- | `pipeline_update` | Write | Updates one application — status, notes, follow-up date, a contact, or an interview round |
400
+ | `pipeline_update` | Write | Updates one application — status, notes, follow-up date, a contact, an interview round and how it went, or an offer's terms and answer deadline |
294
401
  | `classify_email` | Read | Classifies a job-search email and extracts contacts, dates, and suggested pipeline updates |
295
402
 
296
403
  ### Interview and decide
@@ -345,18 +452,20 @@ subscribes, so a client that never does pays nothing for the feature.
345
452
 
346
453
  ## Prompts
347
454
 
348
- Power-user shortcuts. Most clients surface these as slash commands.
455
+ Power-user shortcuts for MCP clients that show prompts, usually as slash commands. Plugin
456
+ users get the `/career-compass:…` commands above instead.
349
457
 
350
458
  | Prompt | What it does |
351
459
  |--------|-------------|
352
460
  | `resume-tailor` | Drop in a posting → get a tailored résumé |
353
- | `interview-coach` | Company + role + interview type → full prep package |
354
461
  | `negotiation-coach` | Paste an offer → analysis, strategy, and counter scripts |
355
- | `setup-career-kb` | Walk through building your Career KB from scratch — profile, experience, skills, first pipeline entry |
356
- | `daily-review` | Triage the pipeline → today's highest-leverage moves, overdue items, upcoming interviews |
357
462
  | `post-interview-debrief` | Capture what an interview surfaced → record the durable signal, set up the next step |
358
463
  | `weekly-retro` | Review the week's movement and journal signals → one takeaway that compounds |
359
464
 
465
+ Retired: `daily-review`, `interview-coach` and `setup-career-kb` duplicated the plugin's
466
+ `/career-compass:today`, `/career-compass:interview-prep` and `/career-compass:start`. Ask
467
+ for the same thing in plain words and the tools do it.
468
+
360
469
  ---
361
470
 
362
471
  ## The dashboard
@@ -401,8 +510,12 @@ prompt — the server runs `claude` headless with Career Compass as its only too
401
510
  answer streams into a panel on the page, with a *Reload the board* button when Claude may have
402
511
  changed your files. It is opt-in, loopback-only, one question at a time, and Claude Code runs
403
512
  without your user hooks, without other MCP servers, and without shell or file-editing tools.
404
- Prompts that need you to paste a posting still copy. Without the flag (or without Claude
405
- Code) the buttons copy, exactly as before.
513
+ It is read-only unless you start it with `--ask-claude-writes`. Prompts that need you to
514
+ paste a posting still copy. Without the flag (or without Claude Code) the buttons copy,
515
+ exactly as before.
516
+
517
+ Each question runs under your own Claude account: Claude Code sends the Career KB content it
518
+ reads to Anthropic, and the usage is billed to you like any other Claude Code session.
406
519
 
407
520
  Other flags: `--port <n>` (default 3141, falling back to the next free port), `--no-open` to
408
521
  skip launching a browser, `--lite` to force this dashboard explicitly. Full list:
@@ -433,6 +546,9 @@ skip launching a browser, `--lite` to force this dashboard explicitly. Full list
433
546
  └── applications.yaml # all job applications
434
547
  ```
435
548
 
549
+ Optional sections (`narrative.yaml`, `stories.yaml`, `people.yaml`) appear in `career/`
550
+ the first time you save one.
551
+
436
552
  This is your single source of truth — built once, enriched over time, read by every tool.
437
553
  You never need to edit these files by hand: paste a document and ask Claude to save it. But
438
554
  they are plain YAML, so you can.
@@ -448,6 +564,10 @@ Alex Rivera) if you want to see the shape before writing your own.
448
564
  |---------|---------|-------------|
449
565
  | `CAREER_DATA_PATH` | `~/.career-compass` | Directory holding your career and pipeline YAML |
450
566
 
567
+ Plugin users set the same thing in the plugin's settings as **Career data folder**
568
+ (`data_path`, default `~/.career-compass`). The plugin passes it to the server as
569
+ `CAREER_DATA_PATH`.
570
+
451
571
  ---
452
572
 
453
573
  ## Troubleshooting and upgrading
@@ -577,8 +697,10 @@ So if Career Compass got you through a week of applications:
577
697
  - **[Say so in Discussions](https://github.com/benskamps/career-compass-mcp/discussions)** —
578
698
  what you used it for, what was missing, what you wish it did instead. Job searches differ
579
699
  enough that I would rather hear about yours than guess at it.
700
+ - **[Tell me what a fit check got wrong](https://github.com/benskamps/career-compass-mcp/issues/new?template=fit-check-wrong.yml)**
701
+ — a short form; leave out anything personal.
580
702
 
581
- Neither one sends me anything you have not chosen to type.
703
+ None of these sends me anything you have not chosen to type.
582
704
 
583
705
  ## Contributing
584
706
 
package/build/bin/cli.js CHANGED
@@ -50,7 +50,11 @@ Options:
50
50
  --ask-claude Dashboard buttons ask Claude directly (needs Claude Code installed).
51
51
  Runs \`claude\` headless with your Career Compass data; the answer
52
52
  streams into the page. Without it, buttons copy a prompt to paste.
53
- --lite Force the built-in dashboard (only matters in a source checkout that built the full one)
53
+ Read-only: Claude can look at your pipeline and KB but not change them.
54
+ --ask-claude-writes
55
+ Same as --ask-claude, and also lets Claude add and update applications
56
+ and save to your Career KB from the dashboard, without asking first.
57
+ --lite Force the built-in dashboard (only matters in a source checkout that built the full one)
54
58
 
55
59
  Your data folder is CAREER_DATA_PATH, or ~/.career-compass when that is unset.
56
60
  `);
@@ -118,7 +122,10 @@ else {
118
122
  const standaloneStaged = existsSync(join(standaloneDir, ".next", "static")) && existsSync(join(standaloneDir, ".staged"));
119
123
  // --ask-claude lives in the lite dashboard, so asking for it means asking for
120
124
  // lite even in a source checkout that has the full app built.
121
- const askClaudeFlag = args.includes("--ask-claude");
125
+ // --ask-claude-writes implies --ask-claude: it is the same bridge with the
126
+ // writing tools allowed as well.
127
+ const askWritesFlag = args.includes("--ask-claude-writes");
128
+ const askClaudeFlag = args.includes("--ask-claude") || askWritesFlag;
122
129
  const useLite = forceLite || askClaudeFlag || !existsSync(standalonePath) || !standaloneStaged;
123
130
  if (useLite) {
124
131
  process.env.CAREER_DATA_PATH = dataPath; // loadPipeline() reads this
@@ -146,12 +153,14 @@ else {
146
153
  if (askClaude && useSample) {
147
154
  console.error("--ask-claude is off for the bundled sample: it is read-only and not yours to change.");
148
155
  }
149
- const ask = askClaude && claudeCmd && !useSample ? { cmd: claudeCmd } : undefined;
156
+ const ask = askClaude && claudeCmd && !useSample ? { cmd: claudeCmd, allowWrites: askWritesFlag } : undefined;
150
157
  const server = await startLiteDashboard(port, undefined, { ask });
151
158
  console.error(`Lite dashboard running at http://localhost:${port}`);
152
159
  if (ask) {
153
160
  console.error("Ask Claude: ON — dashboard buttons send their question to Claude Code on this machine.");
154
- console.error(" Claude reads and updates your career data only through Career Compass's own tools — no shell, no other files.");
161
+ console.error(ask.allowWrites
162
+ ? " Claude reads and updates your career data only through Career Compass's own tools — no shell, no other files. Writes run without a confirmation step."
163
+ : " Read-only: Claude reads your career data through Career Compass's own tools and changes nothing. Add --ask-claude-writes to let it update too.");
155
164
  }
156
165
  else if (claudeCmd && !useSample) {
157
166
  console.error("Tip: add --ask-claude and the dashboard buttons will ask Claude directly instead of copying a prompt.");
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}