@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
@@ -2,7 +2,7 @@
2
2
  name: req-workday
3
3
  description: >
4
4
  Import candidates from a Workday requisition export (.xlsx) into
5
- knowledge/Candidates/. Parses requisition metadata and candidate data,
5
+ Knowledge/Candidates/. Parses requisition metadata and candidate data,
6
6
  creates candidate briefs and CV.md files from resume text, and integrates
7
7
  with the existing req-track pipeline. Use when the user provides a
8
8
  Workday export file or asks to import candidates from an XLSX requisition
@@ -12,7 +12,7 @@ description: >
12
12
  # Workday Requisition Import
13
13
 
14
14
  Import candidates from a Workday requisition export (`.xlsx`) into
15
- `knowledge/Candidates/`. Extract requisition metadata and candidate profiles,
15
+ `Knowledge/Candidates/`. Extract requisition metadata and candidate profiles,
16
16
  create standardized briefs and `CV.md` files from the embedded resume text, and
17
17
  integrate with the `req-track` pipeline format.
18
18
 
@@ -36,9 +36,9 @@ integrate with the `req-track` pipeline format.
36
36
 
37
37
  ## Outputs
38
38
 
39
- - `knowledge/Candidates/{Clean Name}/brief.md` — candidate profile.
40
- - `knowledge/Candidates/{Clean Name}/CV.md` — resume text as markdown.
41
- - `knowledge/Roles/{Req ID} — {Title}.md` — created or updated.
39
+ - `Knowledge/Candidates/{Clean Name}/brief.md` — candidate profile.
40
+ - `Knowledge/Candidates/{Clean Name}/CV.md` — resume text as markdown.
41
+ - `Knowledge/Roles/{Req ID} — {Title}.md` — created or updated.
42
42
  - Updated existing briefs when a candidate already exists.
43
43
 
44
44
  <do_confirm_checklist goal="Verify the Workday import is consistent with
@@ -46,7 +46,7 @@ req-track">
46
46
 
47
47
  - [ ] XLSX parsed; candidate count matches the parser summary.
48
48
  - [ ] Requisition metadata extracted (ID, title; HM/recruiter when available).
49
- - [ ] Each candidate has a directory under `knowledge/Candidates/{Clean Name}/`
49
+ - [ ] Each candidate has a directory under `Knowledge/Candidates/{Clean Name}/`
50
50
  (annotation stripped).
51
51
  - [ ] `CV.md` created for every candidate with resume text — faithfully
52
52
  reproduced (no rewriting).
@@ -93,13 +93,13 @@ header indices, name annotations) are in
93
93
  ### 3. Create or update the Role file
94
94
 
95
95
  ```bash
96
- ls knowledge/Roles/ | grep "{Req ID}"
96
+ ls Knowledge/Roles/ | grep "{Req ID}"
97
97
  ```
98
98
 
99
99
  Use the **Role file stub** in
100
100
  [references/templates.md](references/templates.md). Resolve the domain lead by:
101
101
 
102
- 1. `rg "{Req ID}" knowledge/` — look in project timelines, People notes, Topics
102
+ 1. `rg "{Req ID}" Knowledge/` — look in project timelines, People notes, Topics
103
103
  for context.
104
104
  2. Reading the hiring manager's People note for `**Reports to:**` and walking up
105
105
  to a VP or senior leader.
@@ -111,7 +111,7 @@ If the Role file already exists, follow the existing-file rules in
111
111
  ### 4. Build the candidate index
112
112
 
113
113
  ```bash
114
- ls -d knowledge/Candidates/*/ 2>/dev/null
114
+ ls -d Knowledge/Candidates/*/ 2>/dev/null
115
115
  ```
116
116
 
117
117
  Match imported candidates against existing notes by name (fuzzy — middle names,
@@ -126,7 +126,7 @@ step value in the Pipeline entry.
126
126
  ### 6. Write `CV.md`
127
127
 
128
128
  For every candidate with resume text, create
129
- `knowledge/Candidates/{Clean Name}/CV.md` using the **CV.md template** in
129
+ `Knowledge/Candidates/{Clean Name}/CV.md` using the **CV.md template** in
130
130
  [references/templates.md](references/templates.md).
131
131
 
132
132
  ### 7. Write or update the brief
@@ -136,7 +136,7 @@ Brief layout (new candidates) and edit rules (existing candidates):
136
136
  [references/templates.md](references/templates.md).
137
137
 
138
138
  ```bash
139
- mkdir -p "knowledge/Candidates/{Clean Name}"
139
+ mkdir -p "Knowledge/Candidates/{Clean Name}"
140
140
  ```
141
141
 
142
142
  For existing candidates, apply targeted Edit operations only — never rewrite the
@@ -145,7 +145,7 @@ file.
145
145
  ### 8. Capture insights
146
146
 
147
147
  After the batch, review for strategic observations and add bullets to
148
- `knowledge/Candidates/Insights.md` under `## Placement Notes` with
148
+ `Knowledge/Candidates/Insights.md` under `## Placement Notes` with
149
149
  `[[Candidates/Name/brief|Name]]` links. See `req-track` Step 5b for the
150
150
  inclusion criteria.
151
151
 
@@ -5,7 +5,7 @@ Reference templates for `req-workday` Steps 1b, 4, and 5.
5
5
  ## Role file stub
6
6
 
7
7
  Use when no Role file exists for the requisition. Filename:
8
- `knowledge/Roles/{Req ID} — {Short Title}.md`.
8
+ `Knowledge/Roles/{Req ID} — {Short Title}.md`.
9
9
 
10
10
  ```markdown
11
11
  # {Requisition Title}
@@ -41,7 +41,7 @@ provides one and the field is `—`; update `Last activity` to today; append
41
41
 
42
42
  ## CV.md template
43
43
 
44
- Save to `knowledge/Candidates/{Clean Name}/CV.md` when resume text exists. Skip
44
+ Save to `Knowledge/Candidates/{Clean Name}/CV.md` when resume text exists. Skip
45
45
  when it doesn't.
46
46
 
47
47
  ```markdown
@@ -60,7 +60,7 @@ when it doesn't.
60
60
 
61
61
  ## Candidate brief
62
62
 
63
- Save to `knowledge/Candidates/{Clean Name}/brief.md`. Format follows
63
+ Save to `Knowledge/Candidates/{Clean Name}/brief.md`. Format follows
64
64
  `req-track`.
65
65
 
66
66
  ```markdown
@@ -35,7 +35,7 @@ Run when the user asks to:
35
35
  When the user mentions ANY person:
36
36
 
37
37
  1. **STOP** — Do not open the chat platform yet
38
- 2. **SEARCH** — Look them up: `rg -l "{name}" knowledge/People/`
38
+ 2. **SEARCH** — Look them up: `rg -l "{name}" Knowledge/People/`
39
39
  3. **READ** — Read their note to understand context, role, recent interactions
40
40
  4. **UNDERSTAND** — Know who they are, what you've been working on together
41
41
  5. **THEN PROCEED** — Only now compose the message and use browser automation
@@ -53,10 +53,10 @@ a full name using the knowledge graph:
53
53
 
54
54
  ```bash
55
55
  # Find person by partial name
56
- rg -l -i "{name}" knowledge/People/
56
+ rg -l -i "{name}" Knowledge/People/
57
57
 
58
58
  # If ambiguous, read candidates to disambiguate
59
- cat "knowledge/People/{Candidate}.md"
59
+ cat "Knowledge/People/{Candidate}.md"
60
60
  ```
61
61
 
62
62
  **If ambiguous** (multiple matches), ask the user which person they mean — list
@@ -73,7 +73,7 @@ can review and edit the exact message before it's sent.
73
73
  ### Draft Workflow
74
74
 
75
75
  1. **Compose the message** based on context and user intent.
76
- 2. **Write it to a draft file** at `drafts/chat-{recipient-slug}-{date}.md`
76
+ 2. **Write it to a draft file** at `Drafts/chat-{recipient-slug}-{date}.md`
77
77
  - `{recipient-slug}` = lowercase, hyphenated full name (e.g. `sarah-chen`)
78
78
  - `{date}` = ISO date (e.g. `2026-02-19`)
79
79
  3. **Show the user the draft** — display the file path and contents.
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: upstream-instructions
3
+ description: Track changes made to this installation's instruction files — the root CLAUDE.md, agent profiles, and skills — and record them in a single root CHANGELOG.md so improvements can be contributed back to the upstream monorepo. Use when CLAUDE.md, agents, or skills have been modified, added, or removed locally and those changes should be documented for upstream.
4
+ ---
5
+
6
+ # Upstream Instructions
7
+
8
+ Track changes to this installation's **instructions** and record them in one
9
+ root `CHANGELOG.md` so improvements can be contributed back to the upstream
10
+ monorepo. "Instructions" means all three surfaces, treated equally:
11
+
12
+ - **`CLAUDE.md`** (root) — installation-wide instructions.
13
+ - **`.claude/agents/*.md`** — agent profiles.
14
+ - **`.claude/skills/*/`** — skills (`SKILL.md` and reference files).
15
+
16
+ ## Trigger
17
+
18
+ - The user asks to prepare local instruction changes for upstream contribution.
19
+ - The root `CLAUDE.md`, an agent profile, or a skill has been modified, added,
20
+ or removed.
21
+ - The user wants to document what changed locally before syncing upstream.
22
+
23
+ ## Prerequisites
24
+
25
+ - A working Outpost installation with `CLAUDE.md`, `.claude/agents/`, and
26
+ `.claude/skills/`.
27
+ - Git available for change detection.
28
+
29
+ ## Inputs
30
+
31
+ - `CLAUDE.md` — root installation instructions.
32
+ - `.claude/agents/*.md` — agent profiles.
33
+ - `.claude/skills/*/SKILL.md` and reference files — skills.
34
+ - `CHANGELOG.md` (root) — the existing changelog, for the last documented date.
35
+ - Git history and working tree — change detection.
36
+
37
+ ## Outputs
38
+
39
+ - `CHANGELOG.md` (root) — a **single** reverse-chronological changelog covering
40
+ all three surfaces. There are no per-skill or per-agent changelogs.
41
+
42
+ <do_confirm_checklist goal="Verify the changelog is upstream-ready">
43
+
44
+ - [ ] Exactly one root `CHANGELOG.md`; no stray per-skill / per-agent changelogs
45
+ left behind.
46
+ - [ ] Every entry names its **Scope** (which surface(s) and file(s) it touched).
47
+ - [ ] Each entry has **What**, **Why**, and **Details**.
48
+ - [ ] Descriptions are specific enough for an upstream maintainer to act on (not
49
+ "updated CLAUDE.md" / "fixed stuff").
50
+ - [ ] New skills/agents include a brief description of their purpose; removed
51
+ ones explain why.
52
+ - [ ] Dates come from git history (or the date the change was made for
53
+ uncommitted edits), not guessed.
54
+ - [ ] No duplicate entries for the same change.
55
+
56
+ </do_confirm_checklist>
57
+
58
+ ## Procedure
59
+
60
+ ### 1. Find the last documented state
61
+
62
+ ```bash
63
+ head -20 CHANGELOG.md 2>/dev/null # newest date already recorded, if any
64
+ ```
65
+
66
+ ### 2. Identify changed instructions
67
+
68
+ Detect changes across all three surfaces — committed and uncommitted:
69
+
70
+ ```bash
71
+ # Committed changes since the last documented date (or all history)
72
+ git log --after="<last-entry-date>" --name-status -- \
73
+ CLAUDE.md '.claude/agents/' '.claude/skills/'
74
+
75
+ # Uncommitted working-tree changes (common in a live installation)
76
+ git status --short -- CLAUDE.md '.claude/agents/' '.claude/skills/'
77
+ ```
78
+
79
+ If no `CHANGELOG.md` exists yet, consider all changes since the initial commit.
80
+
81
+ ### 3. Classify each change
82
+
83
+ | Surface | What it covers |
84
+ | ------------- | ----------------------------------------------- |
85
+ | `CLAUDE.md` | Root installation instructions |
86
+ | `agent:<name>`| A profile in `.claude/agents/` |
87
+ | `skill:<name>`| A skill in `.claude/skills/` |
88
+
89
+ | Type | Description |
90
+ | ---------- | ------------------------------------------------------ |
91
+ | `added` | New instruction file that doesn't exist upstream |
92
+ | `modified` | Existing instruction updated |
93
+ | `removed` | Instruction file or directory deleted |
94
+ | `renamed` | File or directory renamed |
95
+
96
+ A single change often spans surfaces (e.g. a KB-structure change touching
97
+ `CLAUDE.md`, several agents, and several skills) — record it as **one entry**
98
+ whose Scope lists every surface touched. Diff to confirm the actual change:
99
+
100
+ ```bash
101
+ git diff <commit> -- CLAUDE.md
102
+ git diff <commit> -- '.claude/agents/<agent>.md'
103
+ git diff <commit> -- '.claude/skills/<skill>/'
104
+ ```
105
+
106
+ ### 4. Describe each change
107
+
108
+ Every entry must answer:
109
+
110
+ 1. **What changed?** — the specific instruction or behaviour modified.
111
+ 2. **Why?** — the problem encountered or improvement discovered in use.
112
+ 3. **Details** — a summary of the actual change (not a full diff).
113
+
114
+ Good: "Agents now read `Knowledge/Priorities/` at the start of every wake and
115
+ flag anything that threatens a priority — drafts and triage were ignoring
116
+ strategic context."
117
+
118
+ Bad: "Updated the agents" / "Fixed stuff" / "Changed line 42".
119
+
120
+ ### 5. Write the changelog
121
+
122
+ Create or update the single root `CHANGELOG.md` (newest first):
123
+
124
+ ```markdown
125
+ # Outpost Instructions Changelog
126
+
127
+ Changes to this installation's instructions — root `CLAUDE.md`, agent profiles
128
+ (`.claude/agents/`), and skills (`.claude/skills/`) — for consideration upstream
129
+ in the Forward Impact monorepo. Documents only; pushes nothing.
130
+
131
+ ## <YYYY-MM-DD>
132
+
133
+ **Scope:** <surfaces/files, e.g. "skill: extract-entities; CLAUDE.md; agents: librarian, recruiter">
134
+ **Type:** <added | modified | removed | renamed>
135
+
136
+ **What:** <one-line summary>
137
+
138
+ **Why:** <problem or improvement that motivated it>
139
+
140
+ **Details:**
141
+ <2–6 lines describing the specific changes across the listed surfaces>
142
+
143
+ ---
144
+ ```
145
+
146
+ Worked examples in [references/examples.md](references/examples.md).
147
+
148
+ ## Notes
149
+
150
+ - This skill **documents only** — it does not push or merge anything.
151
+ - The single root `CHANGELOG.md` is consumed by the **downstream-instructions**
152
+ skill in the upstream monorepo.
153
+ - When in doubt about whether a change is upstream-worthy, include it; the
154
+ upstream maintainer decides what to incorporate.
@@ -0,0 +1,97 @@
1
+ # Changelog Examples
2
+
3
+ Reference output for `upstream-instructions` Step 5. There is **one** root
4
+ `CHANGELOG.md` with reverse-chronological entries. Each entry's **Scope** names
5
+ the surface(s) it touched — `CLAUDE.md`, `agent:<name>`, `skill:<name>` — and a
6
+ single entry may span several.
7
+
8
+ ## Cross-surface change (one change, many files)
9
+
10
+ ```markdown
11
+ ## 2026-06-18
12
+
13
+ **Scope:** KB structure; CLAUDE.md; agents: librarian, chief-of-staff, recruiter; skills: extract-entities, anarlog-process, meeting-prep, req-decide
14
+ **Type:** removed
15
+
16
+ **What:** Dropped the Goals entity type; Priorities is now the only user-set
17
+ strategic layer.
18
+
19
+ **Why:** One strategic layer is simpler than two — time-bound targets fold into
20
+ Priorities, removing the Project↔Goal↔Priority coupling that earned nothing.
21
+
22
+ **Details:**
23
+ - Deleted `Knowledge/Goals/`; repointed live backlinks to `Priorities/C - Onboarding`.
24
+ - CLAUDE.md workspace-layout tree no longer lists `Goals/`.
25
+ - Agents: dropped Goals from the librarian index/triage, chief-of-staff state
26
+ sources, and recruiter strategic links.
27
+ - extract-entities: removed Goals from resolution/index; renamed
28
+ `templates-goals-priorities.md` → `templates-priorities.md`; deleted Goal link
29
+ rules. anarlog-process / meeting-prep / req-decide: dropped Goals inputs.
30
+
31
+ ---
32
+ ```
33
+
34
+ ## Modified skill
35
+
36
+ ```markdown
37
+ ## 2026-03-01
38
+
39
+ **Scope:** skill: req-track
40
+ **Type:** modified
41
+
42
+ **What:** Added gender field extraction for diversity tracking.
43
+
44
+ **Why:** The recruitment pipeline lacked diversity metrics — pool composition was
45
+ invisible without structured gender data.
46
+
47
+ **Details:**
48
+ - Added a Gender field to the candidate brief template (Woman / Man / —).
49
+ - Added extraction rules (pronouns, gendered titles) and a note that the field
50
+ has no bearing on hiring decisions.
51
+ - Updated the quality checklist to verify the field.
52
+
53
+ ---
54
+ ```
55
+
56
+ ## Modified agent
57
+
58
+ ```markdown
59
+ ## 2026-06-19
60
+
61
+ **Scope:** agents: all six profiles
62
+ **Type:** modified
63
+
64
+ **What:** Agents now read `Knowledge/Priorities/` at the start of every wake and
65
+ flag anything that threatens a priority.
66
+
67
+ **Why:** Sync, triage, and drafting were ignoring strategic context; signals that
68
+ could block a priority passed silently.
69
+
70
+ **Details:**
71
+ - Added a uniform `## Priorities` section and a `Priority Watch` output line to
72
+ the five worker agents.
73
+ - The chief-of-staff consolidates each agent's `Priority Watch` flags into a
74
+ dedicated section of the daily briefing.
75
+
76
+ ---
77
+ ```
78
+
79
+ ## New skill
80
+
81
+ ```markdown
82
+ ## 2026-03-01
83
+
84
+ **Scope:** skill: anarlog-process
85
+ **Type:** added
86
+
87
+ **What:** New skill for processing Anarlog meeting recordings.
88
+
89
+ **Why:** Meeting notes were being lost — Anarlog captures transcriptions but they
90
+ weren't integrated into the knowledge base.
91
+
92
+ **Details:**
93
+ - Reads transcription files, extracts people/decisions/action items, and links
94
+ attendees to `Knowledge/People/`.
95
+
96
+ ---
97
+ ```
@@ -2,7 +2,8 @@
2
2
 
3
3
  You are the user's personal knowledge assistant. You help draft emails, prep for
4
4
  meetings, track projects, and answer questions, backed by a live knowledge graph
5
- built from their emails, calendar, and meeting notes, all stored locally.
5
+ built from their emails, calendar, and meeting notes, all stored as plain files on
6
+ the user's machine.
6
7
 
7
8
  ## Ethics & Integrity — NON-NEGOTIABLE
8
9
 
@@ -27,26 +28,31 @@ When in doubt, err toward discretion.
27
28
 
28
29
  ## Voice
29
30
 
30
- Be supportive, direct, and lightly warm. Explain complex things clearly without
31
- hedging. When the next step is obvious, take it. Ask at most one clarifying
32
- question, and only at the start. Reference files by full path. Confirm before
33
- destructive actions.
31
+ Be supportive and direct. Explain complex things clearly without hedging. When
32
+ the next step is obvious, take it. Ask at most one clarifying question, at the
33
+ start. Reference files by full path. Confirm before destructive actions.
34
34
 
35
35
  ## Dependencies
36
36
 
37
37
  - **ripgrep** (`rg`) for fast knowledge graph searches — `brew install ripgrep`.
38
38
 
39
- ## Workspace Layout
39
+ ## Workspace Layout & Sharing
40
+
41
+ The **root is personal and local — never shared.** Only `Knowledge/` is shared
42
+ with the team over a synced filesystem; each member keeps their own root,
43
+ `Drafts/`, and `Briefings/`. KBs are **not** Git repositories — they sync as
44
+ plain files. `CLAUDE.md` and `.claude/` are yours to tweak; use the `fit-outpost`
45
+ CLI to install or update the standard instruction set.
40
46
 
41
47
  ```
42
- ./
43
- ├── knowledge/ # The knowledge graph (Obsidian-compatible)
44
- ├── People/ Organizations/ Projects/ Topics/
45
- │ └── Candidates/ Goals/ Priorities/ Conditions/ Roles/
46
- ├── .claude/skills/ # Auto-discovered skill files
47
- ├── drafts/ # Email drafts (draft-emails skill)
48
- ├── CLAUDE.md # This file
49
- └── .mcp.json # MCP server configurations (optional)
48
+ ./ # Personal root — never shared
49
+ ├── CLAUDE.md # This file
50
+ ├── .claude/ # Agent profiles + auto-discovered skills
51
+ ├── Knowledge/ # Knowledge graph SHARED (Obsidian-compatible)
52
+ │ └── People/ Organizations/ Projects/ Topics/ Candidates/ Priorities/ Conditions/ Roles/
53
+ ├── Drafts/ # Email/chat drafts (personal)
54
+ ├── Briefings/ # Daily briefings (personal)
55
+ └── .mcp.json # MCP config (optional)
50
56
  ```
51
57
 
52
58
  ## Agents
@@ -54,29 +60,29 @@ destructive actions.
54
60
  Agents in `.claude/agents/` maintain this KB, woken on a schedule by the Outpost
55
61
  scheduler. Each wake: observe state, decide the most valuable action, execute.
56
62
 
57
- | Agent | Domain | Schedule | Skills |
58
- | ------------------ | ------------------------------- | --------------- | -------------------------------------------------------------------------------------------- |
59
- | **postman** | Communication triage and drafts | Every 5 min | sync-apple-mail, sync-teams, draft-emails |
60
- | **concierge** | Meeting prep and transcripts | Every 10 min | sync-apple-calendar, meeting-prep, anarlog-process |
61
- | **librarian** | Knowledge graph maintenance | Every 15 min | extract-entities, organize-files |
62
- | **recruiter** | Engineering recruitment | Every 30 min | req-track, req-screen, req-assess, req-decide, req-workday, req-forget, fit-pathway, fit-map |
63
- | **head-hunter** | Passive talent scouting | Every 60 min | req-scan, fit-pathway, fit-map |
64
- | **chief-of-staff** | Daily briefings and priorities | 7am, Mon 7:30am | _(reads all state for daily briefings)_ |
63
+ Each agent's skills are declared in its own profile under `.claude/agents/`.
64
+
65
+ | Agent | Domain | Schedule |
66
+ | ------------------ | ------------------------------- | --------------- |
67
+ | **postman** | Communication triage and drafts | Every 5 min |
68
+ | **concierge** | Meeting prep and transcripts | Every 10 min |
69
+ | **librarian** | Knowledge graph maintenance | Every 15 min |
70
+ | **recruiter** | Engineering recruitment | Every 30 min |
71
+ | **head-hunter** | Passive talent scouting | Every 60 min |
72
+ | **chief-of-staff** | Daily briefings and priorities | 7am, Mon 7:30am |
65
73
 
66
74
  Each agent writes `~/.cache/fit/outpost/state/{agent}_triage.md` per wake. The
67
- **chief-of-staff** reads all five to write daily briefings in
68
- `knowledge/Briefings/`.
75
+ **chief-of-staff** reads all of them to write daily briefings in `Briefings/`.
69
76
 
70
77
  ## Cache Directory (`~/.cache/fit/outpost/`)
71
78
 
72
- Synced data and runtime state live outside the KB; only notes and drafts live
73
- inside it.
79
+ Synced data and runtime state live outside the KB; only notes, drafts, and
80
+ briefings live inside it.
74
81
 
75
- **Resolve `~` before passing a path to a tool.** Paths like
76
- `~/.cache/fit/outpost/` are shorthand; read `$HOME` at runtime and never hardcode
77
- it. Shell commands expand `~`, but the Write and Edit tools do not a literal
78
- `~/...` given to those creates a stray `.cache/` inside the KB. Always pass them
79
- the full `$HOME/...` path.
82
+ **Resolve `~` before passing a path to a tool.** Shell commands expand `~`, but
83
+ the Write and Edit tools do not a literal `~/...` creates a stray `.cache/`
84
+ inside the KB. Read `$HOME` at runtime and pass the full `$HOME/...` path. Read
85
+ meetings, emails, and messages directly from the source dirs below.
80
86
 
81
87
  - `apple_mail/` — Mail threads as `.md` (plus `attachments/`)
82
88
  - `apple_calendar/` — Calendar events as `.json`
@@ -90,38 +96,26 @@ the full `$HOME/...` path.
90
96
  Plain markdown with Obsidian-style `[[backlinks]]`.
91
97
 
92
98
  ```bash
93
- ls knowledge/People/ # List entities
94
- rg "Sarah Chen" knowledge/ # Search by name
95
- cat "knowledge/People/Sarah Chen.md" # Read a note
99
+ rg "Sarah Chen" Knowledge/ # Search by name
100
+ cat "Knowledge/People/Sarah Chen.md" # Read a note
96
101
  ```
97
102
 
98
103
  **Always search broadly first.** When the user mentions any person, org, project,
99
- or topic, run `rg "keyword" knowledge/` to surface every note first — one note is
100
- never the full story. Use it for tasks involving named entities, people, projects,
101
- meetings, emails, or calendar data; skip general knowledge and brainstorming.
102
-
103
- ## Synced Sources
104
-
105
- Read upcoming meetings, recent emails, and messages directly from:
106
-
107
- - `~/.cache/fit/outpost/apple_mail/`
108
- - `~/.cache/fit/outpost/apple_calendar/`
109
- - `~/.cache/fit/outpost/teams_chat/`
104
+ or topic, run `rg "keyword" Knowledge/` to surface every note — one note is never
105
+ the full story. Skip it only for general knowledge and brainstorming.
110
106
 
111
107
  ## Skills
112
108
 
113
- Skills auto-discover from `.claude/skills/` and load by context: data sync (Apple
114
- Mail, Calendar, Teams), knowledge-graph maintenance (extract-entities, recruitment
115
- pipeline), and communication (draft-emails, send-chat, meeting-prep, decks, docs).
109
+ Skills auto-discover from `.claude/skills/` and load by context data sync,
110
+ knowledge-graph maintenance, recruitment, and communication.
116
111
 
117
112
  ## User Identity
118
113
 
119
114
  The current user's identity is cached at
120
- `~/.cache/fit/outpost/state/identity.md` — read it directly. If it is missing or
121
- stale, run the `identify-user` skill to refresh it from the corporate directory.
115
+ `~/.cache/fit/outpost/state/identity.md` — read it directly. If missing or stale,
116
+ run the `identify-user` skill to refresh it from the corporate directory.
122
117
 
123
118
  ## Working Outside This Directory
124
119
 
125
- You have full filesystem access (macOS). For tasks outside this KB
126
- (organizing the Desktop, finding files in Downloads), use shell commands
127
- directly.
120
+ You have full filesystem access (macOS). For tasks outside this KB, use shell
121
+ commands directly.
@@ -1,63 +0,0 @@
1
- # Goal and Priority Templates
2
-
3
- Goals and Priorities are **never auto-created** by `extract-entities`. They are
4
- set deliberately by the user. These templates are 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
- ## Goals
24
- {Time-bound targets that ladder to this priority — backlinks to knowledge/Goals/}
25
-
26
- ## Projects
27
- - [[Projects/{Project}]] — {relationship}
28
-
29
- ## Key facts
30
- {substantive facts only — leave empty if none}
31
- ```
32
-
33
- ## Goals
34
-
35
- ```markdown
36
- # {Goal Name}
37
-
38
- ## Info
39
- **Priority:** [[Priorities/{Priority}]]
40
- **Status:** {on track|at risk|off track|achieved|abandoned}
41
- **Owner:** [[People/{Person}]]
42
- **Target date:** {YYYY-MM-DD}
43
- **Set:** {YYYY-MM-DD}
44
-
45
- ## Outcome
46
- {1-2 sentences: what measurable success looks like}
47
-
48
- ## Blockers
49
- {Active Conditions that impede this goal — link to knowledge/Conditions/}
50
- - [[Conditions/{Condition}]] — {impact on this goal}
51
-
52
- ## Projects
53
- - [[Projects/{Project}]] — {how it contributes}
54
-
55
- ## Progress
56
- - **{YYYY-MM-DD}**: {Update on progress toward the outcome}
57
-
58
- ## Key facts
59
- {substantive facts only — leave empty if none}
60
-
61
- ## Risks
62
- {known risks to achieving this goal — leave empty if none}
63
- ```