@forwardimpact/outpost 3.3.4 → 3.4.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 (65) hide show
  1. package/LICENSE +21 -201
  2. package/config/skill-postures.json +28 -0
  3. package/package.json +1 -1
  4. package/src/agent-runner.js +52 -1
  5. package/src/kb-manager.js +5 -7
  6. package/src/outpost.js +42 -0
  7. package/src/posture.js +77 -0
  8. package/src/socket-server.js +1 -5
  9. package/templates/.claude/agents/chief-of-staff.md +24 -9
  10. package/templates/.claude/agents/concierge.md +14 -0
  11. package/templates/.claude/agents/head-hunter.md +14 -0
  12. package/templates/.claude/agents/librarian.md +19 -7
  13. package/templates/.claude/agents/postman.md +14 -0
  14. package/templates/.claude/agents/recruiter.md +21 -12
  15. package/templates/.claude/skills/anarlog-follow/SKILL.md +7 -7
  16. package/templates/.claude/skills/anarlog-process/SKILL.md +15 -16
  17. package/templates/.claude/skills/anarlog-process/references/extraction.md +5 -5
  18. package/templates/.claude/skills/candidate-report/SKILL.md +9 -9
  19. package/templates/.claude/skills/deck-create/SKILL.md +2 -2
  20. package/templates/.claude/skills/deck-summarize/SKILL.md +2 -2
  21. package/templates/.claude/skills/deck-summarize/references/brief-template.md +1 -1
  22. package/templates/.claude/skills/doc-collab/SKILL.md +8 -8
  23. package/templates/.claude/skills/doc-create/SKILL.md +3 -3
  24. package/templates/.claude/skills/draft-emails/SKILL.md +19 -19
  25. package/templates/.claude/skills/draft-emails/references/template.md +1 -1
  26. package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +4 -4
  27. package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +2 -2
  28. package/templates/.claude/skills/extract-entities/SKILL.md +16 -17
  29. package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +2 -2
  30. package/templates/.claude/skills/extract-entities/references/conditions.md +4 -4
  31. package/templates/.claude/skills/extract-entities/references/links.md +3 -18
  32. package/templates/.claude/skills/extract-entities/references/recruitment.md +8 -8
  33. package/templates/.claude/skills/extract-entities/references/resolution.md +3 -5
  34. package/templates/.claude/skills/extract-entities/references/sources.md +1 -1
  35. package/templates/.claude/skills/extract-entities/references/templates-conditions.md +2 -2
  36. package/templates/.claude/skills/extract-entities/references/templates-priorities.md +32 -0
  37. package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +2 -2
  38. package/templates/.claude/skills/meeting-prep/SKILL.md +18 -19
  39. package/templates/.claude/skills/req-assess/SKILL.md +11 -11
  40. package/templates/.claude/skills/req-assess/references/interview-template.md +1 -1
  41. package/templates/.claude/skills/req-assess/references/panel-template.md +1 -1
  42. package/templates/.claude/skills/req-decide/SKILL.md +17 -17
  43. package/templates/.claude/skills/req-decide/references/template.md +1 -1
  44. package/templates/.claude/skills/req-forget/SKILL.md +8 -8
  45. package/templates/.claude/skills/req-forget/references/classify.md +4 -4
  46. package/templates/.claude/skills/req-forget/references/locations.md +10 -10
  47. package/templates/.claude/skills/req-forget/references/report-template.md +8 -8
  48. package/templates/.claude/skills/req-scan/SKILL.md +3 -3
  49. package/templates/.claude/skills/req-scan/references/template.md +1 -1
  50. package/templates/.claude/skills/req-screen/SKILL.md +9 -9
  51. package/templates/.claude/skills/req-screen/references/template.md +1 -1
  52. package/templates/.claude/skills/req-track/SKILL.md +17 -17
  53. package/templates/.claude/skills/req-track/references/fields.md +8 -8
  54. package/templates/.claude/skills/req-track/references/signals.md +2 -2
  55. package/templates/.claude/skills/req-track/references/templates.md +1 -1
  56. package/templates/.claude/skills/req-workday/SKILL.md +12 -12
  57. package/templates/.claude/skills/req-workday/references/templates.md +3 -3
  58. package/templates/.claude/skills/send-chat/SKILL.md +4 -4
  59. package/templates/.claude/skills/upstream-instructions/SKILL.md +154 -0
  60. package/templates/.claude/skills/upstream-instructions/references/examples.md +97 -0
  61. package/templates/CLAUDE.md +47 -53
  62. package/templates/.claude/skills/extract-entities/references/templates-goals-priorities.md +0 -63
  63. package/templates/.claude/skills/upstream-skill/SKILL.md +0 -130
  64. package/templates/.claude/skills/upstream-skill/references/examples.md +0 -80
  65. package/templates/knowledge/Briefings/.gitkeep +0 -0
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: extract-entities
3
- description: Process synced email/calendar files from ~/.cache/fit/outpost/ and ad-hoc document files (e.g. from ~/Desktop/ or ~/Downloads/) to extract structured knowledge into knowledge/ as Obsidian-compatible markdown notes. Use on a schedule, when the user asks to process/extract entities, or when invoked by another skill (e.g. organize-files). Builds the core knowledge graph from raw data.
3
+ description: Process synced email/calendar files from ~/.cache/fit/outpost/ and ad-hoc document files (e.g. from ~/Desktop/ or ~/Downloads/) to extract structured knowledge into Knowledge/ as Obsidian-compatible markdown notes. Use on a schedule, when the user asks to process/extract entities, or when invoked by another skill (e.g. organize-files). Builds the core knowledge graph from raw data.
4
4
  ---
5
5
 
6
6
  # Extract Entities
7
7
 
8
8
  Process synced email and calendar files from `~/.cache/fit/outpost/`, plus
9
9
  ad-hoc documents passed by other skills, into Obsidian-compatible markdown notes
10
- under `knowledge/`. The core knowledge-graph builder.
10
+ under `Knowledge/`. The core knowledge-graph builder.
11
11
 
12
12
  ## Trigger
13
13
 
@@ -35,13 +35,13 @@ under `knowledge/`. The core knowledge-graph builder.
35
35
 
36
36
  ## Outputs
37
37
 
38
- - `knowledge/People/`, `knowledge/Organizations/`, `knowledge/Projects/`,
39
- `knowledge/Topics/` — created or updated.
40
- - `knowledge/Goals/`, `knowledge/Priorities/` — **updated only**, never
38
+ - `Knowledge/People/`, `Knowledge/Organizations/`, `Knowledge/Projects/`,
39
+ `Knowledge/Topics/` — created or updated.
40
+ - `Knowledge/Priorities/` — **updated only**, never
41
41
  auto-created.
42
- - `knowledge/Conditions/` — created when cross-cutting patterns are detected, or
42
+ - `Knowledge/Conditions/` — created when cross-cutting patterns are detected, or
43
43
  updated.
44
- - `knowledge/Roles/`, `knowledge/Candidates/*/brief.md` — enriched with inferred
44
+ - `Knowledge/Roles/`, `Knowledge/Candidates/*/brief.md` — enriched with inferred
45
45
  metadata.
46
46
  - `~/.cache/fit/outpost/state/graph_processed` — updated.
47
47
 
@@ -55,10 +55,10 @@ well-grounded notes">
55
55
  a substantive `## Summary`, calendar-only attendees routed to Organization
56
56
  `## Contacts`.
57
57
  - [ ] All links use absolute paths `[[Folder/Name]]`; bidirectional links
58
- consistent (incl. GoalProject, Priority ↔ Goal).
58
+ consistent (incl. Project ↔ Priority).
59
59
  - [ ] Summaries describe relationship, not communication method; key facts are
60
60
  substantive; open items are commitments.
61
- - [ ] State changes logged with `[Field → value]`; no Goal or Priority entities
61
+ - [ ] State changes logged with `[Field → value]`; no Priority entities
62
62
  auto-created.
63
63
  - [ ] Conditions created only when ≥ 3 entities reference the same cross-cutting
64
64
  state; resolution detected when evidence supports.
@@ -89,13 +89,13 @@ instead of scanning `~/.cache/fit/outpost/` — still check each against
89
89
  ### 1. Build the knowledge index
90
90
 
91
91
  ```bash
92
- find knowledge/People knowledge/Organizations knowledge/Projects \
93
- knowledge/Topics knowledge/Goals knowledge/Priorities \
94
- knowledge/Conditions -name "*.md" 2>/dev/null
92
+ find Knowledge/People Knowledge/Organizations Knowledge/Projects \
93
+ Knowledge/Topics Knowledge/Priorities \
94
+ Knowledge/Conditions -name "*.md" 2>/dev/null
95
95
  ```
96
96
 
97
97
  For each note, `head -20` to capture key fields. Build a mental index of People,
98
- Organizations, Projects, Goals, Priorities, Topics by name, email, organization,
98
+ Organizations, Projects, Priorities, Topics by name, email, organization,
99
99
  role, status, and aliases.
100
100
 
101
101
  ### 2. Classify the source
@@ -123,7 +123,7 @@ Collect every name variant per
123
123
  For each variant, search the knowledge index. Apply the
124
124
  [matching table](references/resolution.md#matching) and the
125
125
  [disambiguation priority](references/resolution.md#disambiguation-priority).
126
- Goals and Priorities are
126
+ Priorities are
127
127
  [never auto-created](references/resolution.md#never-auto-create) — link to
128
128
  existing entries only.
129
129
 
@@ -150,9 +150,8 @@ filler or meta-commentary.
150
150
  - **Recruitment** (Req-number detection, hiring-manager / recruiter /
151
151
  domain-lead inference):
152
152
  [references/recruitment.md](references/recruitment.md).
153
- - **Goal & Priority links** (Step 7c): rules in
154
- [references/links.md](references/links.md#goals-step-7c) and
155
- [Priorities](references/links.md#priorities-step-7c). **Never auto-create.**
153
+ - **Priority links** (Step 7c): rules in
154
+ [references/links.md](references/links.md#priorities-step-7c). **Never auto-create.**
156
155
  - **Conditions** (cross-cutting states affecting ≥ 3 entities):
157
156
  [references/conditions.md](references/conditions.md).
158
157
 
@@ -7,8 +7,8 @@ index.
7
7
  - [templates-people-orgs.md](templates-people-orgs.md) — People, Organizations.
8
8
  - [templates-projects-topics.md](templates-projects-topics.md) — Projects,
9
9
  Topics.
10
- - [templates-goals-priorities.md](templates-goals-priorities.md) — Goals,
11
- Priorities. **Never auto-created** by `extract-entities` or `anarlog-process`
10
+ - [templates-priorities.md](templates-priorities.md) — Priorities.
11
+ **Never auto-created** by `extract-entities` or `anarlog-process`
12
12
  — set by the user.
13
13
  - [templates-conditions.md](templates-conditions.md) — Conditions (time-bound
14
14
  cross-cutting states).
@@ -20,7 +20,7 @@ same constraint or state, suspect a Condition.
20
20
 
21
21
  ## Creating a Condition
22
22
 
23
- 1. Check existing: `ls knowledge/Conditions/ 2>/dev/null`.
23
+ 1. Check existing: `ls Knowledge/Conditions/ 2>/dev/null`.
24
24
  2. **No match:** create a new Condition note using
25
25
  [templates-conditions.md](templates-conditions.md). Name descriptively
26
26
  ("Hiring Freeze Q2", "Division Reorg").
@@ -31,8 +31,8 @@ same constraint or state, suspect a Condition.
31
31
 
32
32
  When a Condition is created or updated:
33
33
 
34
- 1. Add `[[Conditions/{Condition}]]` to the `## Blockers` section of affected
35
- Goals.
34
+ 1. Add `[[Conditions/{Condition}]]` to the `## Affects` section of affected
35
+ Priorities.
36
36
  2. Add `[Status → on hold]` state changes to affected Projects where
37
37
  appropriate.
38
38
  3. Add a `## Blockers` entry to affected Role files if recruitment is frozen.
@@ -45,7 +45,7 @@ Source content indicates the Condition has ended: "approved", "freeze lifted",
45
45
  "reorg complete", "back on track".
46
46
 
47
47
  - Set `**Status:** resolved`, `**Resolved:** {date}`.
48
- - Remove `[[Conditions/{Condition}]]` from affected Goal `## Blockers`.
48
+ - Remove `[[Conditions/{Condition}]]` from affected Priority `## Affects`.
49
49
  - Log with `[Status → resolved]`.
50
50
 
51
51
  ## Conservatism
@@ -1,6 +1,6 @@
1
1
  # Bidirectional Links
2
2
 
3
- Reference for `extract-entities` Step 10 and Step 7c (Goals / Priorities).
3
+ Reference for `extract-entities` Step 10 and Step 7c (Priorities).
4
4
 
5
5
  ## Bidirectional link rules
6
6
 
@@ -11,28 +11,13 @@ After writing, verify each link goes both ways.
11
11
  | Person → Organization | Organization → Person (in People section) |
12
12
  | Person → Project | Project → Person (in People section) |
13
13
  | Project → Organization | Organization → Project (in Projects section) |
14
- | Project → Goal | Goal → Project (in Projects section) |
15
- | Goal → Priority | Priority → Goal (in Goals section) |
16
14
  | Project → Priority | Priority → Project (in Projects section) |
17
- | Condition → Goal | Goal → Condition (in Blockers section) |
18
15
  | Condition → Project | Project → Condition (in Related section) |
19
16
  | Condition → Role | Role → Condition (notes or status field) |
20
17
 
21
18
  Use absolute paths everywhere: `[[People/Sarah Chen]]`,
22
19
  `[[Organizations/Acme Corp]]`, `[[Projects/Acme Integration]]`,
23
- `[[Goals/Goal Name]]`, `[[Priorities/Priority Name]]`,
24
- `[[Conditions/Condition Name]]`.
25
-
26
- ## Goals (Step 7c)
27
-
28
- When source content references an existing `knowledge/Goals/*.md`:
29
-
30
- - Add a `[[Goals/{Goal}]]` link to the relevant Project or Topic activity entry.
31
- - Add a progress entry to the Goal's `## Progress` section.
32
- - If evidence suggests a status change ("we won't hit the Q3 target"), update
33
- `**Status:**` and log `[Status → value]`.
34
-
35
- **Never auto-create Goals.**
20
+ `[[Priorities/Priority Name]]`, `[[Conditions/Condition Name]]`.
36
21
 
37
22
  ## Priorities (Step 7c)
38
23
 
@@ -44,5 +29,5 @@ Match source themes against priority names and descriptions.
44
29
  serves it.
45
30
 
46
31
  **Never auto-create Priorities.** Don't over-link — a project that already links
47
- to a Goal which links to a Priority doesn't need a redundant direct Priority
32
+ to a Priority through a related Topic doesn't need a redundant direct Priority
48
33
  link.
@@ -1,16 +1,16 @@
1
1
  # Recruitment Inference
2
2
 
3
- Reference for `extract-entities` Step 7b. Enrich `knowledge/Roles/` and
4
- `knowledge/Candidates/` with metadata that no single source carries.
3
+ Reference for `extract-entities` Step 7b. Enrich `Knowledge/Roles/` and
4
+ `Knowledge/Candidates/` with metadata that no single source carries.
5
5
 
6
6
  ## Requisition number detection
7
7
 
8
8
  Scan email subjects and bodies for requisition numbers (e.g. 7-digit Workday
9
9
  IDs).
10
10
 
11
- 1. `ls knowledge/Roles/ | grep "{req_number}"` — does a Role file exist?
11
+ 1. `ls Knowledge/Roles/ | grep "{req_number}"` — does a Role file exist?
12
12
  2. **No file:** create a stub using the Role-stub template in `req-track` Step
13
- 0b. Search `rg "{req_number}" knowledge/` for context to enrich it.
13
+ 0b. Search `rg "{req_number}" Knowledge/` for context to enrich it.
14
14
  3. **File exists:** check whether the email provides new metadata (hiring
15
15
  manager, recruiter, locations) and update the Role file.
16
16
 
@@ -20,11 +20,11 @@ When a calendar event title matches an interview pattern — "Interview",
20
20
  "Screening", "Screen", "Decomposition", "Panel", "Technical Assessment",
21
21
  "Candidate" — combined with a person name:
22
22
 
23
- 1. Cross-reference the candidate against `knowledge/Candidates/`.
23
+ 1. Cross-reference the candidate against `Knowledge/Candidates/`.
24
24
  2. Extract the **organizer**. If the organizer isn't the user (per
25
25
  `~/.cache/fit/outpost/state/identity.md`),
26
26
  they are likely the hiring manager.
27
- 3. Confirm: look up the organizer in `knowledge/People/` for a manager/HM role
27
+ 3. Confirm: look up the organizer in `Knowledge/People/` for a manager/HM role
28
28
  indication.
29
29
  4. Check the candidate's `brief.md` for a `Req` field; if known, set the
30
30
  matching Role file's `Hiring manager` (only if currently `—`).
@@ -33,9 +33,9 @@ When a calendar event title matches an interview pattern — "Interview",
33
33
  ## Recruiter — email-thread inference
34
34
 
35
35
  When a thread references candidates (name match against
36
- `knowledge/Candidates/`):
36
+ `Knowledge/Candidates/`):
37
37
 
38
- 1. Cross-reference To/CC against `knowledge/People/`.
38
+ 1. Cross-reference To/CC against `Knowledge/People/`.
39
39
  2. If a CC'd person's note mentions "recruiter", "talent acquisition", or a
40
40
  similar role, they are likely the internal recruiter.
41
41
  3. Update the candidate's `brief.md` recruiter field and the matching Role file
@@ -11,10 +11,8 @@ Extract every way each entity is referenced.
11
11
  - **Organizations:** full names, short names, abbreviations, email domains.
12
12
  - **Projects:** explicit names, descriptive references ("the pilot", "the
13
13
  deal").
14
- - **Goals:** references to time-bound targets, OKRs, or measurable outcomes that
15
- match `knowledge/Goals/` entries.
16
- - **Priorities:** references to strategic directions that match
17
- `knowledge/Priorities/` entries.
14
+ - **Priorities:** references to strategic directions, time-bound targets, or
15
+ measurable outcomes that match `Knowledge/Priorities/` entries.
18
16
 
19
17
  ## Matching
20
18
 
@@ -82,5 +80,5 @@ Format: `**Role:** Product Lead (inferred from evaluation discussions)`.
82
80
 
83
81
  ## Never auto-create
84
82
 
85
- `Goals/` and `Priorities/`. Link to existing entries when referenced; update
83
+ `Priorities/`. Link to existing entries when referenced; update
86
84
  progress / backlinks; never create new ones from extracted content.
@@ -40,7 +40,7 @@ write a placeholder profile; see the
40
40
 
41
41
  ## Process — update existing notes only
42
42
 
43
- - Emails from people already in `knowledge/People/`.
43
+ - Emails from people already in `Knowledge/People/`.
44
44
  - Emails referencing existing projects or organizations.
45
45
 
46
46
  ## Process — can create new notes
@@ -16,8 +16,8 @@ are detected, or manually created by the user. Lifecycle: active → resolved.
16
16
  **Resolution signal:** {What would indicate this condition has ended}
17
17
 
18
18
  ## Affects
19
- {Goals, Projects, Roles, and People impacted by this condition}
20
- - [[Goals/{Goal}]] — {how it's affected}
19
+ {Priorities, Projects, Roles, and People impacted by this condition}
20
+ - [[Priorities/{Priority}]] — {how it's affected}
21
21
  - [[Projects/{Project}]] — {how it's affected}
22
22
  - [[Roles/{Role}]] — {how it's affected}
23
23
 
@@ -0,0 +1,32 @@
1
+ # Priority Templates
2
+
3
+ Priorities are **never auto-created** by `extract-entities`. They are set
4
+ deliberately by the user. This template is for manual creation only —
5
+ `extract-entities` and `anarlog-process` only **link to** and **update progress
6
+ on** existing notes.
7
+
8
+ ## Priorities
9
+
10
+ ```markdown
11
+ # {Priority Name}
12
+
13
+ ## About
14
+ {2-3 sentences: what this strategic direction means and why it matters}
15
+
16
+ **Status:** {active|paused|retired}
17
+ **Owner:** [[People/{Person}]]
18
+ **Set:** {YYYY-MM-DD}
19
+
20
+ ## What this means
21
+ {Bullet list of concrete implications — what does pursuing this priority look like?}
22
+
23
+ ## Actions
24
+ {Concrete, time-bound actions that ladder to this priority. Targets live inline
25
+ here — there is no separate Goals entity.}
26
+
27
+ ## Projects
28
+ - [[Projects/{Project}]] — {relationship}
29
+
30
+ ## Key facts
31
+ {substantive facts only — leave empty if none}
32
+ ```
@@ -14,8 +14,8 @@
14
14
  ## Summary
15
15
  {2-3 sentences}
16
16
 
17
- ## Goals
18
- - [[Goals/{Goal}]] — {how this project contributes}
17
+ ## Priorities
18
+ - [[Priorities/{Priority}]] — {how this project contributes}
19
19
 
20
20
  ## People
21
21
  - [[People/{Person}]] — {role}
@@ -22,13 +22,12 @@ meetings.
22
22
  ## Inputs
23
23
 
24
24
  - `~/.cache/fit/outpost/apple_calendar/*.json` — calendar events
25
- - `knowledge/People/*.md` — attendee context
26
- - `knowledge/Organizations/*.md` — company context
27
- - `knowledge/Projects/*.md` — project context
28
- - `knowledge/Goals/*.md` — active goals relevant to the meeting topic
29
- - `knowledge/Priorities/*.md` — strategic context for framing
30
- - `knowledge/Candidates/*/brief.md` — candidate context (for interview meetings)
31
- - `knowledge/Roles/*.md` — role/requisition context (for interview meetings)
25
+ - `Knowledge/People/*.md` — attendee context
26
+ - `Knowledge/Organizations/*.md` — company context
27
+ - `Knowledge/Projects/*.md` — project context
28
+ - `Knowledge/Priorities/*.md` — active priorities and strategic context for framing
29
+ - `Knowledge/Candidates/*/brief.md` — candidate context (for interview meetings)
30
+ - `Knowledge/Roles/*.md` — role/requisition context (for interview meetings)
32
31
 
33
32
  ## Outputs
34
33
 
@@ -44,8 +43,8 @@ knowledge base.**
44
43
  When the user asks to prep for a meeting:
45
44
 
46
45
  1. **STOP** — Do not create a generic brief
47
- 2. **SEARCH** — Look up each attendee: `rg -l "Attendee Name" knowledge/`
48
- 3. **READ** — Read their notes: `cat "knowledge/People/Attendee Name.md"`
46
+ 2. **SEARCH** — Look up each attendee: `rg -l "Attendee Name" Knowledge/`
47
+ 3. **READ** — Read their notes: `cat "Knowledge/People/Attendee Name.md"`
49
48
  4. **UNDERSTAND** — Extract role, organization, history, open items
50
49
  5. **THEN BRIEF** — Create the meeting brief using this context
51
50
 
@@ -92,18 +91,18 @@ Extract: summary, start/end time, attendees (names and emails), description.
92
91
  For each attendee:
93
92
 
94
93
  ```bash
95
- rg -l "attendee_name" knowledge/People/
96
- rg -l "attendee_email" knowledge/People/
97
- cat "knowledge/People/Attendee Name.md"
98
- cat "knowledge/Organizations/Their Company.md"
99
- rg -l "attendee_name" knowledge/Projects/
94
+ rg -l "attendee_name" Knowledge/People/
95
+ rg -l "attendee_email" Knowledge/People/
96
+ cat "Knowledge/People/Attendee Name.md"
97
+ cat "Knowledge/Organizations/Their Company.md"
98
+ rg -l "attendee_name" Knowledge/Projects/
100
99
  ```
101
100
 
102
101
  Extract: role/title, company, key facts, previous interactions, open items.
103
102
 
104
- Also check `knowledge/Goals/` and `knowledge/Priorities/` for context relevant
103
+ Also check `Knowledge/Priorities/` for context relevant
105
104
  to the meeting topic — e.g. if the meeting is about hiring, surface the relevant
106
- hiring Goal's status and progress.
105
+ hiring Priority's status and progress.
107
106
 
108
107
  ### Step 4: Create Meeting Brief
109
108
 
@@ -141,11 +140,11 @@ Suggested Talking Points
141
140
  ### Interview Meeting Context
142
141
 
143
142
  When preparing for interview meetings (title contains "Interview", "Screening",
144
- "Decomposition", "Panel", or a candidate name from `knowledge/Candidates/`):
143
+ "Decomposition", "Panel", or a candidate name from `Knowledge/Candidates/`):
145
144
 
146
- 1. **Read the candidate brief:** `knowledge/Candidates/{Name}/brief.md`
145
+ 1. **Read the candidate brief:** `Knowledge/Candidates/{Name}/brief.md`
147
146
  2. **Read the Role file:** Look up the `Req` field and read the corresponding
148
- `knowledge/Roles/*.md` file.
147
+ `Knowledge/Roles/*.md` file.
149
148
  3. **Include in the briefing:**
150
149
  - Candidate's current status, skills, and screening recommendation
151
150
  - Role context: hiring manager, domain lead, remaining positions
@@ -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