@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.
- package/LICENSE +21 -201
- package/config/skill-postures.json +28 -0
- package/package.json +1 -1
- package/src/agent-runner.js +52 -1
- package/src/kb-manager.js +5 -7
- package/src/outpost.js +42 -0
- package/src/posture.js +77 -0
- package/src/socket-server.js +1 -5
- 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/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
|
@@ -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
|
|
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 `
|
|
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
|
-
- `
|
|
39
|
-
`
|
|
40
|
-
- `
|
|
38
|
+
- `Knowledge/People/`, `Knowledge/Organizations/`, `Knowledge/Projects/`,
|
|
39
|
+
`Knowledge/Topics/` — created or updated.
|
|
40
|
+
- `Knowledge/Priorities/` — **updated only**, never
|
|
41
41
|
auto-created.
|
|
42
|
-
- `
|
|
42
|
+
- `Knowledge/Conditions/` — created when cross-cutting patterns are detected, or
|
|
43
43
|
updated.
|
|
44
|
-
- `
|
|
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.
|
|
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
|
|
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
|
|
93
|
-
|
|
94
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
- **
|
|
154
|
-
[references/links.md](references/links.md#
|
|
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-
|
|
11
|
-
|
|
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
|
|
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 `##
|
|
35
|
-
|
|
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
|
|
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 (
|
|
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
|
-
`[[
|
|
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
|
|
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 `
|
|
4
|
-
`
|
|
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
|
|
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}"
|
|
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 `
|
|
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 `
|
|
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
|
-
`
|
|
36
|
+
`Knowledge/Candidates/`):
|
|
37
37
|
|
|
38
|
-
1. Cross-reference To/CC against `
|
|
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
|
-
- **
|
|
15
|
-
match `
|
|
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
|
-
`
|
|
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 `
|
|
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
|
-
{
|
|
20
|
-
- [[
|
|
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
|
+
```
|
|
@@ -22,13 +22,12 @@ meetings.
|
|
|
22
22
|
## Inputs
|
|
23
23
|
|
|
24
24
|
- `~/.cache/fit/outpost/apple_calendar/*.json` — calendar events
|
|
25
|
-
- `
|
|
26
|
-
- `
|
|
27
|
-
- `
|
|
28
|
-
- `
|
|
29
|
-
- `
|
|
30
|
-
- `
|
|
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"
|
|
48
|
-
3. **READ** — Read their notes: `cat "
|
|
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"
|
|
96
|
-
rg -l "attendee_email"
|
|
97
|
-
cat "
|
|
98
|
-
cat "
|
|
99
|
-
rg -l "attendee_name"
|
|
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 `
|
|
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
|
|
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 `
|
|
143
|
+
"Decomposition", "Panel", or a candidate name from `Knowledge/Candidates/`):
|
|
145
144
|
|
|
146
|
-
1. **Read the candidate brief:** `
|
|
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
|
-
`
|
|
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 `
|
|
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 `
|
|
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
|
-
- `
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
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
|
-
- `
|
|
46
|
-
- `
|
|
45
|
+
- `Knowledge/Candidates/{Name}/interview-{date}.md`.
|
|
46
|
+
- `Knowledge/Candidates/{Name}/panel.md` — only when more interviews are
|
|
47
47
|
planned.
|
|
48
|
-
- Updated `
|
|
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 `
|
|
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 `
|
|
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 `
|
|
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
|
-
`
|
|
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
|
-
`
|
|
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
|
-
- `
|
|
33
|
-
- At least one `
|
|
34
|
-
- `
|
|
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 `
|
|
38
|
+
- All artifacts in `Knowledge/Candidates/{Name}/`.
|
|
39
39
|
- Standard data via `fit-pathway`.
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
40
|
+
- `Knowledge/Candidates/Insights.md` — cross-candidate context.
|
|
41
|
+
- `Knowledge/Roles/*.md` — the candidate's requisition (positions, hiring
|
|
42
42
|
manager, domain lead).
|
|
43
|
-
- `
|
|
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
|
-
- `
|
|
49
|
-
- Updated `
|
|
50
|
-
- Updated `
|
|
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
|
|
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
|
|
118
|
-
cat "
|
|
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
|
|
128
|
+
cat Knowledge/Candidates/Insights.md
|
|
129
129
|
|
|
130
|
-
for dir in
|
|
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 `
|
|
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 `
|
|
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
|
|
|
@@ -37,7 +37,7 @@ what was found, deleted, and redacted — the compliance audit trail.
|
|
|
37
37
|
|
|
38
38
|
## Outputs
|
|
39
39
|
|
|
40
|
-
- `
|
|
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 "
|
|
96
|
-
rm -f "
|
|
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 `
|
|
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}"
|
|
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
|
-
- `
|
|
147
|
-
- `
|
|
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 `
|
|
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 | `
|
|
9
|
-
| **Dedicated directory** | Delete entire directory | `
|
|
10
|
-
| **Mention in another note** | Redact: remove lines referencing the person | Backlink in `
|
|
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 | `
|
|
15
|
+
| **Insights file** | Redact: remove bullets mentioning them | `Knowledge/Candidates/Insights.md` |
|
|
16
16
|
|
|
17
17
|
## Redaction rules
|
|
18
18
|
|