@forwardimpact/outpost 3.3.4 → 3.5.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 (69) hide show
  1. package/LICENSE +21 -201
  2. package/config/skill-postures.json +28 -0
  3. package/package.json +2 -4
  4. package/src/agent-path.js +42 -0
  5. package/src/agent-runner.js +60 -17
  6. package/src/kb-manager.js +5 -7
  7. package/src/outpost.js +43 -1
  8. package/src/posture.js +77 -0
  9. package/src/socket-server.js +15 -6
  10. package/src/spawn-env.js +62 -0
  11. package/src/state-manager.js +17 -2
  12. package/templates/.claude/agents/chief-of-staff.md +24 -9
  13. package/templates/.claude/agents/concierge.md +14 -0
  14. package/templates/.claude/agents/head-hunter.md +14 -0
  15. package/templates/.claude/agents/librarian.md +19 -7
  16. package/templates/.claude/agents/postman.md +14 -0
  17. package/templates/.claude/agents/recruiter.md +21 -12
  18. package/templates/.claude/settings.json +4 -0
  19. package/templates/.claude/skills/anarlog-follow/SKILL.md +7 -7
  20. package/templates/.claude/skills/anarlog-process/SKILL.md +15 -16
  21. package/templates/.claude/skills/anarlog-process/references/extraction.md +5 -5
  22. package/templates/.claude/skills/candidate-report/SKILL.md +9 -9
  23. package/templates/.claude/skills/deck-create/SKILL.md +2 -2
  24. package/templates/.claude/skills/deck-summarize/SKILL.md +2 -2
  25. package/templates/.claude/skills/deck-summarize/references/brief-template.md +1 -1
  26. package/templates/.claude/skills/doc-collab/SKILL.md +8 -8
  27. package/templates/.claude/skills/doc-create/SKILL.md +3 -3
  28. package/templates/.claude/skills/draft-emails/SKILL.md +19 -19
  29. package/templates/.claude/skills/draft-emails/references/template.md +1 -1
  30. package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +4 -4
  31. package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +2 -2
  32. package/templates/.claude/skills/extract-entities/SKILL.md +16 -17
  33. package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +2 -2
  34. package/templates/.claude/skills/extract-entities/references/conditions.md +4 -4
  35. package/templates/.claude/skills/extract-entities/references/links.md +3 -18
  36. package/templates/.claude/skills/extract-entities/references/recruitment.md +8 -8
  37. package/templates/.claude/skills/extract-entities/references/resolution.md +3 -5
  38. package/templates/.claude/skills/extract-entities/references/sources.md +1 -1
  39. package/templates/.claude/skills/extract-entities/references/templates-conditions.md +2 -2
  40. package/templates/.claude/skills/extract-entities/references/templates-priorities.md +32 -0
  41. package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +2 -2
  42. package/templates/.claude/skills/meeting-prep/SKILL.md +18 -19
  43. package/templates/.claude/skills/req-assess/SKILL.md +11 -11
  44. package/templates/.claude/skills/req-assess/references/interview-template.md +1 -1
  45. package/templates/.claude/skills/req-assess/references/panel-template.md +1 -1
  46. package/templates/.claude/skills/req-decide/SKILL.md +17 -17
  47. package/templates/.claude/skills/req-decide/references/template.md +1 -1
  48. package/templates/.claude/skills/req-forget/SKILL.md +8 -8
  49. package/templates/.claude/skills/req-forget/references/classify.md +4 -4
  50. package/templates/.claude/skills/req-forget/references/locations.md +10 -10
  51. package/templates/.claude/skills/req-forget/references/report-template.md +8 -8
  52. package/templates/.claude/skills/req-scan/SKILL.md +3 -3
  53. package/templates/.claude/skills/req-scan/references/template.md +1 -1
  54. package/templates/.claude/skills/req-screen/SKILL.md +9 -9
  55. package/templates/.claude/skills/req-screen/references/template.md +1 -1
  56. package/templates/.claude/skills/req-track/SKILL.md +17 -17
  57. package/templates/.claude/skills/req-track/references/fields.md +8 -8
  58. package/templates/.claude/skills/req-track/references/signals.md +2 -2
  59. package/templates/.claude/skills/req-track/references/templates.md +1 -1
  60. package/templates/.claude/skills/req-workday/SKILL.md +12 -12
  61. package/templates/.claude/skills/req-workday/references/templates.md +3 -3
  62. package/templates/.claude/skills/send-chat/SKILL.md +4 -4
  63. package/templates/.claude/skills/upstream-instructions/SKILL.md +154 -0
  64. package/templates/.claude/skills/upstream-instructions/references/examples.md +97 -0
  65. package/templates/CLAUDE.md +47 -53
  66. package/templates/.claude/skills/extract-entities/references/templates-goals-priorities.md +0 -63
  67. package/templates/.claude/skills/upstream-skill/SKILL.md +0 -130
  68. package/templates/.claude/skills/upstream-skill/references/examples.md +0 -80
  69. package/templates/knowledge/Briefings/.gitkeep +0 -0
@@ -22,7 +22,7 @@ This is **Stage 2** of the three-stage hiring pipeline:
22
22
 
23
23
  ## Trigger
24
24
 
25
- - A new `transcript-*.md` file appears in `knowledge/Candidates/{Name}/`.
25
+ - A new `transcript-*.md` file appears in `Knowledge/Candidates/{Name}/`.
26
26
  - The user asks to analyze an interview or debrief.
27
27
  - The user asks to prepare a panel brief.
28
28
  - The concierge agent processes a Anarlog interview recording.
@@ -30,22 +30,22 @@ This is **Stage 2** of the three-stage hiring pipeline:
30
30
  ## Prerequisites
31
31
 
32
32
  - `fit-pathway` CLI installed.
33
- - At least one transcript in `knowledge/Candidates/{Name}/`.
33
+ - At least one transcript in `Knowledge/Candidates/{Name}/`.
34
34
  - `screening.md` should exist; if missing, run `req-screen` first (proceed
35
35
  regardless).
36
36
 
37
37
  ## Inputs
38
38
 
39
- - `knowledge/Candidates/{Name}/transcript-{date}.md`.
40
- - `knowledge/Candidates/{Name}/screening.md`.
41
- - `knowledge/Candidates/{Name}/brief.md` — target role.
39
+ - `Knowledge/Candidates/{Name}/transcript-{date}.md`.
40
+ - `Knowledge/Candidates/{Name}/screening.md`.
41
+ - `Knowledge/Candidates/{Name}/brief.md` — target role.
42
42
 
43
43
  ## Outputs
44
44
 
45
- - `knowledge/Candidates/{Name}/interview-{date}.md`.
46
- - `knowledge/Candidates/{Name}/panel.md` — only when more interviews are
45
+ - `Knowledge/Candidates/{Name}/interview-{date}.md`.
46
+ - `Knowledge/Candidates/{Name}/panel.md` — only when more interviews are
47
47
  planned.
48
- - Updated `knowledge/Candidates/{Name}/brief.md`.
48
+ - Updated `Knowledge/Candidates/{Name}/brief.md`.
49
49
 
50
50
  <do_confirm_checklist goal="Verify the assessment is grounded in transcript
51
51
  evidence">
@@ -105,7 +105,7 @@ Apply the [level signals](references/rubric.md#level-signals).
105
105
 
106
106
  ### 6. Write the interview assessment
107
107
 
108
- Save to `knowledge/Candidates/{Name}/interview-{date}.md` using
108
+ Save to `Knowledge/Candidates/{Name}/interview-{date}.md` using
109
109
  [references/interview-template.md](references/interview-template.md). Include
110
110
  only skills with new evidence — don't repeat the full matrix.
111
111
 
@@ -118,14 +118,14 @@ candidates:
118
118
  bunx fit-pathway interview {discipline} {level} --track={track}
119
119
  ```
120
120
 
121
- Save `knowledge/Candidates/{Name}/panel.md` using
121
+ Save `Knowledge/Candidates/{Name}/panel.md` using
122
122
  [references/panel-template.md](references/panel-template.md). Audience:
123
123
  next-stage interviewers, often non-engineers — explain without jargon and tie
124
124
  suggested questions to remaining gaps.
125
125
 
126
126
  ### 8. Update the candidate brief
127
127
 
128
- Apply targeted Edit operations to `knowledge/Candidates/{Name}/brief.md`:
128
+ Apply targeted Edit operations to `Knowledge/Candidates/{Name}/brief.md`:
129
129
 
130
130
  - Append a Pipeline entry with date, type, and outcome.
131
131
  - Add `## Interview Notes` if missing, with key observations.
@@ -1,7 +1,7 @@
1
1
  # Interview Assessment Template
2
2
 
3
3
  Reference template for `req-assess` Step 6. Save to
4
- `knowledge/Candidates/{Name}/interview-{date}.md`. Include only skills the
4
+ `Knowledge/Candidates/{Name}/interview-{date}.md`. Include only skills the
5
5
  interview produced new evidence for — don't repeat the full matrix.
6
6
 
7
7
  ```markdown
@@ -1,7 +1,7 @@
1
1
  # Panel Brief Template
2
2
 
3
3
  Reference template for `req-assess` Step 7. Save to
4
- `knowledge/Candidates/{Name}/panel.md`. Audience: **next-stage interviewers,
4
+ `Knowledge/Candidates/{Name}/panel.md`. Audience: **next-stage interviewers,
5
5
  often non-engineers** — explain without jargon, focus on behaviours and scope.
6
6
 
7
7
  ```markdown
@@ -29,25 +29,25 @@ This is **Stage 3** of the three-stage pipeline:
29
29
  ## Prerequisites
30
30
 
31
31
  - `fit-pathway` CLI installed.
32
- - `knowledge/Candidates/{Name}/screening.md` exists.
33
- - At least one `knowledge/Candidates/{Name}/interview-*.md`.
34
- - `knowledge/Candidates/{Name}/brief.md` exists.
32
+ - `Knowledge/Candidates/{Name}/screening.md` exists.
33
+ - At least one `Knowledge/Candidates/{Name}/interview-*.md`.
34
+ - `Knowledge/Candidates/{Name}/brief.md` exists.
35
35
 
36
36
  ## Inputs
37
37
 
38
- - All artifacts in `knowledge/Candidates/{Name}/`.
38
+ - All artifacts in `Knowledge/Candidates/{Name}/`.
39
39
  - Standard data via `fit-pathway`.
40
- - `knowledge/Candidates/Insights.md` — cross-candidate context.
41
- - `knowledge/Roles/*.md` — the candidate's requisition (positions, hiring
40
+ - `Knowledge/Candidates/Insights.md` — cross-candidate context.
41
+ - `Knowledge/Roles/*.md` — the candidate's requisition (positions, hiring
42
42
  manager, domain lead).
43
- - `knowledge/Goals/*.md`, `knowledge/Priorities/*.md` — strategic context.
43
+ - `Knowledge/Priorities/*.md` — strategic context.
44
44
  - Other active candidates at the same level — relative positioning.
45
45
 
46
46
  ## Outputs
47
47
 
48
- - `knowledge/Candidates/{Name}/recommendation.md` — final recommendation.
49
- - Updated `knowledge/Candidates/{Name}/brief.md` — status and link.
50
- - Updated `knowledge/Candidates/Insights.md` — cross-candidate observations.
48
+ - `Knowledge/Candidates/{Name}/recommendation.md` — final recommendation.
49
+ - Updated `Knowledge/Candidates/{Name}/brief.md` — status and link.
50
+ - Updated `Knowledge/Candidates/Insights.md` — cross-candidate observations.
51
51
 
52
52
  <do_confirm_checklist goal="Verify the recommendation is grounded and
53
53
  audit-ready">
@@ -71,7 +71,7 @@ audit-ready">
71
71
  ### 1. Gather all evidence
72
72
 
73
73
  ```bash
74
- ls knowledge/Candidates/{Name}/
74
+ ls Knowledge/Candidates/{Name}/
75
75
  ```
76
76
 
77
77
  Read in order: `brief.md`, `screening.md`, every `interview-*.md`, relevant
@@ -114,8 +114,8 @@ Apply the level-confirmation criteria in
114
114
  If `brief.md` carries a `Req`:
115
115
 
116
116
  ```bash
117
- ls knowledge/Roles/ | grep "{req_number}"
118
- cat "knowledge/Roles/{matching file}"
117
+ ls Knowledge/Roles/ | grep "{req_number}"
118
+ cat "Knowledge/Roles/{matching file}"
119
119
  ```
120
120
 
121
121
  Capture remaining positions, hiring manager, domain lead, goal alignment, other
@@ -125,9 +125,9 @@ in terms of strategic impact.
125
125
  ### 6. Assess against the active pipeline
126
126
 
127
127
  ```bash
128
- cat knowledge/Candidates/Insights.md
128
+ cat Knowledge/Candidates/Insights.md
129
129
 
130
- for dir in knowledge/Candidates/*/; do
130
+ for dir in Knowledge/Candidates/*/; do
131
131
  if [ -f "$dir/screening.md" ]; then
132
132
  head -5 "$dir/screening.md"
133
133
  fi
@@ -144,7 +144,7 @@ Apply the [decision rules](references/rubric.md#decision-rules) and run the
144
144
 
145
145
  ### 8. Write the recommendation
146
146
 
147
- Save to `knowledge/Candidates/{Name}/recommendation.md` using the template in
147
+ Save to `Knowledge/Candidates/{Name}/recommendation.md` using the template in
148
148
  [references/template.md](references/template.md). Carry the **advisory-only**
149
149
  banner. Cite specific evidence in skill, behaviour, level, and track sections.
150
150
 
@@ -156,7 +156,7 @@ Update `brief.md`:
156
156
  - Append `- [Hiring Recommendation](./recommendation.md)`.
157
157
  - Add the final pipeline entry with date and outcome.
158
158
 
159
- Update `knowledge/Candidates/Insights.md` only when there's a cross-candidate
159
+ Update `Knowledge/Candidates/Insights.md` only when there's a cross-candidate
160
160
  observation worth keeping (strongest at level, sourcing channel pattern,
161
161
  level-adjustment implications).
162
162
 
@@ -1,7 +1,7 @@
1
1
  # Recommendation Template
2
2
 
3
3
  Reference template for `req-decide` Step 6. Save to
4
- `knowledge/Candidates/{Name}/recommendation.md`.
4
+ `Knowledge/Candidates/{Name}/recommendation.md`.
5
5
 
6
6
  ```markdown
7
7
  # Hiring Recommendation — {Full Name}
@@ -37,7 +37,7 @@ what was found, deleted, and redacted — the compliance audit trail.
37
37
 
38
38
  ## Outputs
39
39
 
40
- - `knowledge/Erasure/{Name}--{YYYY-MM-DD}.md` — erasure report.
40
+ - `Knowledge/Erasure/{Name}--{YYYY-MM-DD}.md` — erasure report.
41
41
  - Deleted files and redacted references across the knowledge base.
42
42
 
43
43
  <do_confirm_checklist goal="Verify erasure is complete and the audit trail is
@@ -92,8 +92,8 @@ Process most-specific to most-general.
92
92
  **3a. Dedicated files and directories:**
93
93
 
94
94
  ```bash
95
- rm -rf "knowledge/Candidates/{Name}/"
96
- rm -f "knowledge/People/{Name}.md"
95
+ rm -rf "Knowledge/Candidates/{Name}/"
96
+ rm -f "Knowledge/People/{Name}.md"
97
97
  find ~/.cache/fit/outpost/apple_mail/attachments/ -iname "*{Name}*" -delete
98
98
  ```
99
99
 
@@ -126,14 +126,14 @@ rg -v "{deleted_path}" ~/.cache/fit/outpost/state/graph_processed \
126
126
 
127
127
  ### 4. Write the erasure report
128
128
 
129
- Save to `knowledge/Erasure/{Name}--{YYYY-MM-DD}.md` using the template in
129
+ Save to `Knowledge/Erasure/{Name}--{YYYY-MM-DD}.md` using the template in
130
130
  [references/report-template.md](references/report-template.md). Record **only**
131
131
  what was deleted — never CV content, skills, or assessments.
132
132
 
133
133
  ### 5. Verify
134
134
 
135
135
  ```bash
136
- rg "{Name}" knowledge/ ~/.cache/fit/outpost/ drafts/
136
+ rg "{Name}" Knowledge/ ~/.cache/fit/outpost/ Drafts/
137
137
  ```
138
138
 
139
139
  The only match should be the erasure report. If other matches remain, process
@@ -143,12 +143,12 @@ them and update the report.
143
143
 
144
144
  **`recruitment-only`** limits erasure to:
145
145
 
146
- - `knowledge/Candidates/{Name}/`
147
- - `knowledge/Candidates/Insights.md` mentions
146
+ - `Knowledge/Candidates/{Name}/`
147
+ - `Knowledge/Candidates/Insights.md` mentions
148
148
  - Recruitment threads (known agency domains)
149
149
  - `recruiter_triage.md`
150
150
 
151
- Leaves `knowledge/People/{Name}.md` and the wider graph intact — the person may
151
+ Leaves `Knowledge/People/{Name}.md` and the wider graph intact — the person may
152
152
  be a colleague or non-recruitment contact.
153
153
 
154
154
  **`all`** (default): full erasure across knowledge base, cache, and state.
@@ -5,14 +5,14 @@ action below.
5
5
 
6
6
  | Reference Type | Action | Example |
7
7
  | ---------------------------------- | ------------------------------------------- | ----------------------------------------------- |
8
- | **Dedicated note** (sole subject) | Delete entire file | `knowledge/People/{Name}.md` |
9
- | **Dedicated directory** | Delete entire directory | `knowledge/Candidates/{Name}/` |
10
- | **Mention in another note** | Redact: remove lines referencing the person | Backlink in `knowledge/Organizations/Agency.md` |
8
+ | **Dedicated note** (sole subject) | Delete entire file | `Knowledge/People/{Name}.md` |
9
+ | **Dedicated directory** | Delete entire directory | `Knowledge/Candidates/{Name}/` |
10
+ | **Mention in another note** | Redact: remove lines referencing the person | Backlink in `Knowledge/Organizations/Agency.md` |
11
11
  | **Email thread** (sole subject) | Delete file | `~/.cache/fit/outpost/apple_mail/thread.md` |
12
12
  | **Email thread** (multiple people) | Redact: remove paragraphs about the person | Thread discussing multiple candidates |
13
13
  | **Attachment** (their CV, etc.) | Delete file | `attachments/{thread}/CV.pdf` |
14
14
  | **Triage/state file** | Redact: remove lines mentioning them | `recruiter_triage.md` |
15
- | **Insights file** | Redact: remove bullets mentioning them | `knowledge/Candidates/Insights.md` |
15
+ | **Insights file** | Redact: remove bullets mentioning them | `Knowledge/Candidates/Insights.md` |
16
16
 
17
17
  ## Redaction rules
18
18
 
@@ -6,21 +6,21 @@ inventory.
6
6
  ## Knowledge base — direct notes
7
7
 
8
8
  ```bash
9
- ls -d "knowledge/Candidates/{Name}/" 2>/dev/null
10
- ls "knowledge/People/{Name}.md" 2>/dev/null
9
+ ls -d "Knowledge/Candidates/{Name}/" 2>/dev/null
10
+ ls "Knowledge/People/{Name}.md" 2>/dev/null
11
11
 
12
12
  # Common name variations
13
- ls "knowledge/People/{First} {Last}.md" 2>/dev/null
14
- ls "knowledge/People/{Last}, {First}.md" 2>/dev/null
13
+ ls "Knowledge/People/{First} {Last}.md" 2>/dev/null
14
+ ls "Knowledge/People/{Last}, {First}.md" 2>/dev/null
15
15
  ```
16
16
 
17
17
  ## Knowledge base — backlinks and mentions
18
18
 
19
19
  ```bash
20
- rg -l "{Name}" knowledge/
21
- rg -l "{First name} {Last name}" knowledge/
22
- rg -l "\[\[.*{Name}.*\]\]" knowledge/
23
- rg -l "{email}" knowledge/
20
+ rg -l "{Name}" Knowledge/
21
+ rg -l "{First name} {Last name}" Knowledge/
22
+ rg -l "\[\[.*{Name}.*\]\]" Knowledge/
23
+ rg -l "{email}" Knowledge/
24
24
  ```
25
25
 
26
26
  ## Cached email threads
@@ -47,13 +47,13 @@ rg -l "{Name}" ~/.cache/fit/outpost/state/ 2>/dev/null
47
47
  ## Drafts
48
48
 
49
49
  ```bash
50
- rg -l "{Name}" drafts/ 2>/dev/null
50
+ rg -l "{Name}" Drafts/ 2>/dev/null
51
51
  ```
52
52
 
53
53
  ## Final verification
54
54
 
55
55
  ```bash
56
- rg "{Name}" knowledge/ ~/.cache/fit/outpost/ drafts/
56
+ rg "{Name}" Knowledge/ ~/.cache/fit/outpost/ Drafts/
57
57
  ```
58
58
 
59
59
  Expected: only the erasure report matches.
@@ -1,7 +1,7 @@
1
1
  # Erasure Report Template
2
2
 
3
3
  Audit trail for `req-forget` Step 4. Save to
4
- `knowledge/Erasure/{Name}--{YYYY-MM-DD}.md`.
4
+ `Knowledge/Erasure/{Name}--{YYYY-MM-DD}.md`.
5
5
 
6
6
  **The report itself must not contain personal data** beyond the subject's name
7
7
  and the actions taken. Do not copy CV content, skills, or assessments into the
@@ -22,15 +22,15 @@ report — record only what was deleted, not what it contained.
22
22
  ## Actions Taken
23
23
 
24
24
  ### Deleted Files
25
- - `knowledge/Candidates/{Name}/brief.md`
26
- - `knowledge/Candidates/{Name}/CV.pdf`
27
- - `knowledge/Candidates/{Name}/screening.md`
28
- - `knowledge/People/{Name}.md`
25
+ - `Knowledge/Candidates/{Name}/brief.md`
26
+ - `Knowledge/Candidates/{Name}/CV.pdf`
27
+ - `Knowledge/Candidates/{Name}/screening.md`
28
+ - `Knowledge/People/{Name}.md`
29
29
  - {list all deleted files}
30
30
 
31
31
  ### Redacted References
32
- - `knowledge/Organizations/{Agency}.md` — removed backlink
33
- - `knowledge/Candidates/Insights.md` — removed {N} bullet(s)
32
+ - `Knowledge/Organizations/{Agency}.md` — removed backlink
33
+ - `Knowledge/Candidates/Insights.md` — removed {N} bullet(s)
34
34
  - {list all redacted files and what was removed}
35
35
 
36
36
  ### Cached Data Removed
@@ -57,7 +57,7 @@ The following are outside this tool's reach:
57
57
  ## Verification
58
58
 
59
59
  ```bash
60
- rg "{Name}" knowledge/ ~/.cache/fit/outpost/
60
+ rg "{Name}" Knowledge/ ~/.cache/fit/outpost/
61
61
  ````
62
62
 
63
63
  Expected: no matches except this erasure report.
@@ -3,7 +3,7 @@ name: req-scan
3
3
  description: >
4
4
  Scan publicly available sources for candidates who indicate they are open for
5
5
  hire. Uses WebFetch to read public APIs (HN Algolia, GitHub, dev.to).
6
- Writes prospect notes to knowledge/Prospects/. Maintains
6
+ Writes prospect notes to Knowledge/Prospects/. Maintains
7
7
  cursor/dedup state in ~/.cache/fit/outpost/head-hunter/. Use when the
8
8
  head-hunter agent is woken or when the user asks to scan for open candidates.
9
9
  ---
@@ -34,7 +34,7 @@ updates.
34
34
 
35
35
  ## Outputs
36
36
 
37
- - `knowledge/Prospects/{Name}.md`.
37
+ - `Knowledge/Prospects/{Name}.md`.
38
38
  - Updated `cursor.tsv`, `seen.tsv`, `prospects.tsv`, and `log.md`.
39
39
  - `~/.cache/fit/outpost/state/head_hunter_triage.md`.
40
40
 
@@ -103,7 +103,7 @@ Write notes for **strong** and **moderate** matches only, using the template in
103
103
  [references/template.md](references/template.md).
104
104
 
105
105
  ```bash
106
- mkdir -p "knowledge/Prospects"
106
+ mkdir -p "Knowledge/Prospects"
107
107
  ```
108
108
 
109
109
  ### 5. Update state
@@ -1,6 +1,6 @@
1
1
  # Prospect Note Template
2
2
 
3
- Reference for `req-scan` Step 4. Save to `knowledge/Prospects/{Name}.md`.
3
+ Reference for `req-scan` Step 4. Save to `Knowledge/Prospects/{Name}.md`.
4
4
 
5
5
  ```markdown
6
6
  # {Name}
@@ -22,7 +22,7 @@ This is **Stage 1** of a three-stage hiring pipeline:
22
22
 
23
23
  ## Trigger
24
24
 
25
- - A new CV is added to `knowledge/Candidates/{Name}/`.
25
+ - A new CV is added to `Knowledge/Candidates/{Name}/`.
26
26
  - A CV appears in `~/Downloads/` and is associated with a candidate.
27
27
  - The user asks to screen, evaluate, or assess a CV.
28
28
  - The user asks "is this person worth interviewing?".
@@ -35,16 +35,16 @@ This is **Stage 1** of a three-stage hiring pipeline:
35
35
 
36
36
  ## Inputs
37
37
 
38
- - CV file path (e.g. `knowledge/Candidates/{Name}/CV.pdf`).
38
+ - CV file path (e.g. `Knowledge/Candidates/{Name}/CV.pdf`).
39
39
  - Target role (optional).
40
- - Existing `knowledge/Candidates/{Name}/brief.md`, if any.
41
- - `knowledge/Roles/*.md` matching the candidate's `Req` (provides `Level`,
40
+ - Existing `Knowledge/Candidates/{Name}/brief.md`, if any.
41
+ - `Knowledge/Roles/*.md` matching the candidate's `Req` (provides `Level`,
42
42
  `Discipline`, `Hiring manager`, `Domain lead`).
43
43
 
44
44
  ## Outputs
45
45
 
46
- - `knowledge/Candidates/{Name}/screening.md` — structured assessment.
47
- - Updated `knowledge/Candidates/{Name}/brief.md` — skills + summary enriched.
46
+ - `Knowledge/Candidates/{Name}/screening.md` — structured assessment.
47
+ - Updated `Knowledge/Candidates/{Name}/brief.md` — skills + summary enriched.
48
48
 
49
49
  <do_confirm_checklist goal="Verify the screening is grounded and
50
50
  decision-rule-compliant">
@@ -76,8 +76,8 @@ Extract the fields listed in
76
76
  If `brief.md` carries a `Req`, look up the matching Role file:
77
77
 
78
78
  ```bash
79
- ls knowledge/Roles/ | grep "{req_number}"
80
- cat "knowledge/Roles/{matching file}"
79
+ ls Knowledge/Roles/ | grep "{req_number}"
80
+ cat "Knowledge/Roles/{matching file}"
81
81
  ```
82
82
 
83
83
  Use the Role's `Level` and `Discipline` as the target unless the user specified
@@ -127,7 +127,7 @@ Pick the recommendation using the decision rules and threshold rule in
127
127
 
128
128
  ### 7. Write the screening
129
129
 
130
- Save to `knowledge/Candidates/{Name}/screening.md` using the template in
130
+ Save to `Knowledge/Candidates/{Name}/screening.md` using the template in
131
131
  [references/template.md](references/template.md). Include the **Suggested
132
132
  Interview Questions** when the recommendation is "Interview" or "Interview with
133
133
  focus areas":
@@ -1,7 +1,7 @@
1
1
  # Screening Output Template
2
2
 
3
3
  Reference template for `req-screen` Step 6. Save to
4
- `knowledge/Candidates/{Name}/screening.md`. Filename **must** be `screening.md`
4
+ `Knowledge/Candidates/{Name}/screening.md`. Filename **must** be `screening.md`
5
5
  — not `assessment.md`, `cv-screening.md`, or any variant. If a misnamed
6
6
  screening file exists in the folder (look for `# CV Screening` in the header),
7
7
  delete it after writing.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: req-track
3
- description: Scan synced email threads for recruitment candidates, extract structured profiles, and create/update notes in knowledge/Candidates/. Use when the user asks to track candidates, process recruitment emails, or update the hiring pipeline.
3
+ description: Scan synced email threads for recruitment candidates, extract structured profiles, and create/update notes in Knowledge/Candidates/. Use when the user asks to track candidates, process recruitment emails, or update the hiring pipeline.
4
4
  ---
5
5
 
6
6
  # Track Candidates
7
7
 
8
8
  Scan synced email threads from `~/.cache/fit/outpost/apple_mail/` for
9
9
  recruitment candidates. Extract structured candidate profiles and create or
10
- update notes in `knowledge/Candidates/`. Builds a local, searchable recruitment
10
+ update notes in `Knowledge/Candidates/`. Builds a local, searchable recruitment
11
11
  pipeline from scattered email threads.
12
12
 
13
13
  ## Trigger
@@ -29,7 +29,7 @@ pipeline from scattered email threads.
29
29
  - `~/.cache/fit/outpost/apple_mail/attachments/` — CV/resume attachments.
30
30
  - `~/.cache/fit/outpost/apple_calendar/*.json` — calendar events (for
31
31
  cross-source inference).
32
- - `knowledge/Roles/*.md` — open role/requisition files (metadata inheritance).
32
+ - `Knowledge/Roles/*.md` — open role/requisition files (metadata inheritance).
33
33
  - `~/.cache/fit/outpost/state/graph_processed` — processed-file index (shared
34
34
  with `extract-entities`).
35
35
  - `~/.cache/fit/outpost/state/identity.md` — user identity for self-exclusion
@@ -37,10 +37,10 @@ pipeline from scattered email threads.
37
37
 
38
38
  ## Outputs
39
39
 
40
- - `knowledge/Candidates/{Full Name}/brief.md` — candidate profile note.
41
- - `knowledge/Candidates/{Full Name}/CV.pdf` (or `CV.docx`) — local CV copy.
42
- - `knowledge/Candidates/{Full Name}/headshot.jpeg` — candidate photo.
43
- - `knowledge/Roles/*.md` — created/updated role files (Candidates tables
40
+ - `Knowledge/Candidates/{Full Name}/brief.md` — candidate profile note.
41
+ - `Knowledge/Candidates/{Full Name}/CV.pdf` (or `CV.docx`) — local CV copy.
42
+ - `Knowledge/Candidates/{Full Name}/headshot.jpeg` — candidate photo.
43
+ - `Knowledge/Roles/*.md` — created/updated role files (Candidates tables
44
44
  rebuilt).
45
45
  - `~/.cache/fit/outpost/state/graph_processed` — updated with processed threads.
46
46
 
@@ -84,31 +84,31 @@ here.
84
84
  ### 2. Build candidate, people, and org indexes
85
85
 
86
86
  ```bash
87
- ls -d knowledge/Candidates/*/
87
+ ls -d Knowledge/Candidates/*/
88
88
  ```
89
89
 
90
90
  Read each existing brief's header (Name, Role, Source, Status) to build a mental
91
- index. Also scan `knowledge/People/`, `knowledge/Organizations/`, and
92
- `knowledge/Projects/` to resolve recruiter names, agency orgs, and project
91
+ index. Also scan `Knowledge/People/`, `Knowledge/Organizations/`, and
92
+ `Knowledge/Projects/` to resolve recruiter names, agency orgs, and project
93
93
  links.
94
94
 
95
- ### 3. Sync `knowledge/Roles/`
95
+ ### 3. Sync `Knowledge/Roles/`
96
96
 
97
97
  This keeps role metadata current and enables inheritance.
98
98
 
99
99
  1. Read each Role file's Info block to map Req → Role file path, Hiring manager,
100
100
  Domain lead, recruiter, Channel.
101
101
  2. Find Reqs referenced by candidate briefs but missing a Role file:
102
- `rg "^\*\*Req:\*\*" knowledge/Candidates/*/brief.md`. For each missing Req,
102
+ `rg "^\*\*Req:\*\*" Knowledge/Candidates/*/brief.md`. For each missing Req,
103
103
  create a stub using the **Role file stub** in
104
104
  [references/templates.md](references/templates.md), then enrich by searching
105
- the graph: `rg "{req_number}" knowledge/`.
105
+ the graph: `rg "{req_number}" Knowledge/`.
106
106
  3. Rebuild each Role file's `## Candidates` table by scanning briefs:
107
- `rg -l "Req:.*{req_number}" knowledge/Candidates/*/brief.md`. Use the **Role
107
+ `rg -l "Req:.*{req_number}" Knowledge/Candidates/*/brief.md`. Use the **Role
108
108
  Candidates table** format from `references/templates.md`. Sort by First seen,
109
109
  newest first.
110
110
  4. If a Role file has a hiring manager but no domain lead, walk the
111
- `**Reports to:**` chain in `knowledge/People/` to a VP or senior leader.
111
+ `**Reports to:**` chain in `Knowledge/People/` to a VP or senior leader.
112
112
 
113
113
  ### 4. Identify recruitment threads
114
114
 
@@ -137,7 +137,7 @@ forwarded headers).
137
137
 
138
138
  ### 8. Write or update the candidate note
139
139
 
140
- For **new** candidates, create `knowledge/Candidates/{Full Name}/brief.md` from
140
+ For **new** candidates, create `Knowledge/Candidates/{Full Name}/brief.md` from
141
141
  the **Candidate brief** template in
142
142
  [references/templates.md](references/templates.md). Place the **Extra Info
143
143
  fields** after `Last activity` in the order shown there. Add the **Optional
@@ -149,7 +149,7 @@ known Info fields, and add new Skills.
149
149
 
150
150
  ### 9. Capture cross-candidate insights
151
151
 
152
- Update `knowledge/Candidates/Insights.md` only when an observation is
152
+ Update `Knowledge/Candidates/Insights.md` only when an observation is
153
153
  high-signal: candidate may suit a **different role**, is a **strong match** for
154
154
  a specific team or leader, a meaningful **comparison between candidates**, or a
155
155
  hiring trade-off needs to be **remembered across sessions**.
@@ -43,13 +43,13 @@ Field map and resolution rules for Step 2 of `req-track`.
43
43
 
44
44
  Stop at the first match:
45
45
 
46
- 1. **Req-first inheritance** — look up `knowledge/Roles/*.md` for the matching
46
+ 1. **Req-first inheritance** — look up `Knowledge/Roles/*.md` for the matching
47
47
  Req; inherit Hiring manager and Domain lead from the Role file.
48
48
  2. **Calendar inference** —
49
49
  `rg -l "{Candidate Name}" ~/.cache/fit/outpost/apple_calendar/`. The non-user
50
50
  organizer of an interview event is likely the hiring manager.
51
51
  3. **Email inference** — internal To/CC recipients (besides the user)
52
- cross-checked against `knowledge/People/`.
52
+ cross-checked against `Knowledge/People/`.
53
53
  4. **Reporting chain** — read the hiring manager's `**Reports to:**` field; walk
54
54
  up to a VP / senior leader for the domain lead.
55
55
  5. **Staffing project timeline** — search staffing notes for the candidate or
@@ -71,7 +71,7 @@ hiring decisions, assessment criteria, or candidate visibility.
71
71
 
72
72
  ## Source and recruiter
73
73
 
74
- - Map sender email domain to an organization in `knowledge/Organizations/`.
74
+ - Map sender email domain to an organization in `Knowledge/Organizations/`.
75
75
  - The person who sent or forwarded the profile is the recruiter — link with
76
76
  `[[People/Name]]`.
77
77
  - Create the organization or recruiter notes if missing.
@@ -80,9 +80,9 @@ hiring decisions, assessment criteria, or candidate visibility.
80
80
 
81
81
  ```bash
82
82
  ls ~/.cache/fit/outpost/apple_mail/attachments/{thread_id}/
83
- mkdir -p "knowledge/Candidates/{Full Name}"
83
+ mkdir -p "Knowledge/Candidates/{Full Name}"
84
84
  cp "~/.cache/fit/outpost/apple_mail/attachments/{thread_id}/{file}" \
85
- "knowledge/Candidates/{Full Name}/CV.pdf"
85
+ "Knowledge/Candidates/{Full Name}/CV.pdf"
86
86
  ```
87
87
 
88
88
  Use `CV.pdf` (PDF) or `CV.docx` (Word). The `## CV` link is `./CV.pdf`.
@@ -106,9 +106,9 @@ Match by name fragment (case-insensitive). Prefer the Downloads match. Always
106
106
  write `headshot.jpeg`:
107
107
 
108
108
  ```bash
109
- cp "{src}" "knowledge/Candidates/{Full Name}/headshot.jpeg"
109
+ cp "{src}" "Knowledge/Candidates/{Full Name}/headshot.jpeg"
110
110
  # PNG → JPEG
111
- magick "{src}.png" "knowledge/Candidates/{Full Name}/headshot.jpeg"
111
+ magick "{src}.png" "Knowledge/Candidates/{Full Name}/headshot.jpeg"
112
112
  # HEIC → JPEG
113
- magick "{src}.heic" "knowledge/Candidates/{Full Name}/headshot.jpeg"
113
+ magick "{src}.heic" "Knowledge/Candidates/{Full Name}/headshot.jpeg"
114
114
  ```
@@ -10,7 +10,7 @@ no signal — most email is not.
10
10
 
11
11
  ## Recruiter sender domains
12
12
 
13
- Sender domain maps to an organization in `knowledge/Organizations/` tagged as a
13
+ Sender domain maps to an organization in `Knowledge/Organizations/` tagged as a
14
14
  recruitment agency. When no agencies are catalogued yet, treat these patterns as
15
15
  hints:
16
16
 
@@ -38,5 +38,5 @@ Structured candidate descriptions containing:
38
38
 
39
39
  ## Follow-up on existing candidates
40
40
 
41
- A thread mentions a candidate already in `knowledge/Candidates/` by name —
41
+ A thread mentions a candidate already in `Knowledge/Candidates/` by name —
42
42
  process it to update pipeline status.
@@ -50,7 +50,7 @@ Sort by First seen, newest first.
50
50
  ## Candidate brief
51
51
 
52
52
  Used by Step 5 for new candidates. File:
53
- `knowledge/Candidates/{Full Name}/brief.md`.
53
+ `Knowledge/Candidates/{Full Name}/brief.md`.
54
54
 
55
55
  ```markdown
56
56
  # {Full Name}