@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.
- package/LICENSE +21 -201
- package/config/skill-postures.json +28 -0
- package/package.json +2 -4
- package/src/agent-path.js +42 -0
- package/src/agent-runner.js +60 -17
- package/src/kb-manager.js +5 -7
- package/src/outpost.js +43 -1
- package/src/posture.js +77 -0
- package/src/socket-server.js +15 -6
- package/src/spawn-env.js +62 -0
- package/src/state-manager.js +17 -2
- package/templates/.claude/agents/chief-of-staff.md +24 -9
- package/templates/.claude/agents/concierge.md +14 -0
- package/templates/.claude/agents/head-hunter.md +14 -0
- package/templates/.claude/agents/librarian.md +19 -7
- package/templates/.claude/agents/postman.md +14 -0
- package/templates/.claude/agents/recruiter.md +21 -12
- package/templates/.claude/settings.json +4 -0
- package/templates/.claude/skills/anarlog-follow/SKILL.md +7 -7
- package/templates/.claude/skills/anarlog-process/SKILL.md +15 -16
- package/templates/.claude/skills/anarlog-process/references/extraction.md +5 -5
- package/templates/.claude/skills/candidate-report/SKILL.md +9 -9
- package/templates/.claude/skills/deck-create/SKILL.md +2 -2
- package/templates/.claude/skills/deck-summarize/SKILL.md +2 -2
- package/templates/.claude/skills/deck-summarize/references/brief-template.md +1 -1
- package/templates/.claude/skills/doc-collab/SKILL.md +8 -8
- package/templates/.claude/skills/doc-create/SKILL.md +3 -3
- package/templates/.claude/skills/draft-emails/SKILL.md +19 -19
- package/templates/.claude/skills/draft-emails/references/template.md +1 -1
- package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +4 -4
- package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +2 -2
- package/templates/.claude/skills/extract-entities/SKILL.md +16 -17
- package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +2 -2
- package/templates/.claude/skills/extract-entities/references/conditions.md +4 -4
- package/templates/.claude/skills/extract-entities/references/links.md +3 -18
- package/templates/.claude/skills/extract-entities/references/recruitment.md +8 -8
- package/templates/.claude/skills/extract-entities/references/resolution.md +3 -5
- package/templates/.claude/skills/extract-entities/references/sources.md +1 -1
- package/templates/.claude/skills/extract-entities/references/templates-conditions.md +2 -2
- package/templates/.claude/skills/extract-entities/references/templates-priorities.md +32 -0
- package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +2 -2
- package/templates/.claude/skills/meeting-prep/SKILL.md +18 -19
- package/templates/.claude/skills/req-assess/SKILL.md +11 -11
- package/templates/.claude/skills/req-assess/references/interview-template.md +1 -1
- package/templates/.claude/skills/req-assess/references/panel-template.md +1 -1
- package/templates/.claude/skills/req-decide/SKILL.md +17 -17
- package/templates/.claude/skills/req-decide/references/template.md +1 -1
- package/templates/.claude/skills/req-forget/SKILL.md +8 -8
- package/templates/.claude/skills/req-forget/references/classify.md +4 -4
- package/templates/.claude/skills/req-forget/references/locations.md +10 -10
- package/templates/.claude/skills/req-forget/references/report-template.md +8 -8
- package/templates/.claude/skills/req-scan/SKILL.md +3 -3
- package/templates/.claude/skills/req-scan/references/template.md +1 -1
- package/templates/.claude/skills/req-screen/SKILL.md +9 -9
- package/templates/.claude/skills/req-screen/references/template.md +1 -1
- package/templates/.claude/skills/req-track/SKILL.md +17 -17
- package/templates/.claude/skills/req-track/references/fields.md +8 -8
- package/templates/.claude/skills/req-track/references/signals.md +2 -2
- package/templates/.claude/skills/req-track/references/templates.md +1 -1
- package/templates/.claude/skills/req-workday/SKILL.md +12 -12
- package/templates/.claude/skills/req-workday/references/templates.md +3 -3
- package/templates/.claude/skills/send-chat/SKILL.md +4 -4
- package/templates/.claude/skills/upstream-instructions/SKILL.md +154 -0
- package/templates/.claude/skills/upstream-instructions/references/examples.md +97 -0
- package/templates/CLAUDE.md +47 -53
- package/templates/.claude/skills/extract-entities/references/templates-goals-priorities.md +0 -63
- package/templates/.claude/skills/upstream-skill/SKILL.md +0 -130
- package/templates/.claude/skills/upstream-skill/references/examples.md +0 -80
- 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
|
-
|
|
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
|
-
`
|
|
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
|
-
- `
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
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 `
|
|
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
|
|
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}"
|
|
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
|
|
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
|
-
`
|
|
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 "
|
|
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
|
-
`
|
|
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
|
-
`
|
|
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 `
|
|
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 `
|
|
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}"
|
|
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}"
|
|
56
|
+
rg -l -i "{name}" Knowledge/People/
|
|
57
57
|
|
|
58
58
|
# If ambiguous, read candidates to disambiguate
|
|
59
|
-
cat "
|
|
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 `
|
|
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
|
+
```
|
package/templates/CLAUDE.md
CHANGED
|
@@ -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
|
|
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
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
├──
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
├──
|
|
48
|
-
├──
|
|
49
|
-
└── .mcp.json
|
|
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
|
-
|
|
58
|
-
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
| **
|
|
62
|
-
| **
|
|
63
|
-
| **
|
|
64
|
-
| **
|
|
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
|
|
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
|
|
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.**
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
94
|
-
|
|
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"
|
|
100
|
-
|
|
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
|
|
114
|
-
|
|
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
|
|
121
|
-
|
|
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
|
-
|
|
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
|
-
```
|