@forwardimpact/outpost 3.12.0 → 3.13.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 (129) hide show
  1. package/README.md +2 -2
  2. package/bin/fit-outpost.js +3 -2
  3. package/package.json +6 -5
  4. package/src/agent-path.js +10 -6
  5. package/src/agent-runner.js +28 -24
  6. package/src/index.js +2 -3
  7. package/src/kb-manager.js +75 -20
  8. package/src/kb-validator.js +762 -0
  9. package/src/outpost.js +108 -39
  10. package/src/posture.js +3 -3
  11. package/src/privilege.js +11 -11
  12. package/src/scheduler.js +14 -12
  13. package/src/socket-server.js +19 -18
  14. package/src/spawn-env.js +7 -6
  15. package/src/state-manager.js +2 -2
  16. package/templates/.claude/agents/chief-of-staff.md +32 -24
  17. package/templates/.claude/agents/concierge.md +26 -17
  18. package/templates/.claude/agents/head-hunter.md +34 -26
  19. package/templates/.claude/agents/librarian.md +26 -18
  20. package/templates/.claude/agents/postman.md +26 -18
  21. package/templates/.claude/agents/recruiter.md +38 -27
  22. package/templates/.claude/skills/anarlog-follow/SKILL.md +91 -66
  23. package/templates/.claude/skills/anarlog-follow/references/coaching.md +22 -21
  24. package/templates/.claude/skills/anarlog-follow/references/sessions.md +52 -0
  25. package/templates/.claude/skills/anarlog-process/SKILL.md +108 -62
  26. package/templates/.claude/skills/anarlog-process/references/extraction.md +41 -29
  27. package/templates/.claude/skills/anarlog-process/references/sessions.md +92 -58
  28. package/templates/.claude/skills/anarlog-process/scripts/scan.mjs +402 -160
  29. package/templates/.claude/skills/candidate-report/SKILL.md +41 -36
  30. package/templates/.claude/skills/candidate-report/references/report-template.html +10 -10
  31. package/templates/.claude/skills/candidate-report/references/report.css +4 -4
  32. package/templates/.claude/skills/candidate-report/references/rubric.md +15 -14
  33. package/templates/.claude/skills/candidate-report/scripts/render-pdf.mjs +2 -2
  34. package/templates/.claude/skills/changelog/SKILL.md +122 -67
  35. package/templates/.claude/skills/deck-create/SKILL.md +90 -32
  36. package/templates/.claude/skills/deck-create/references/slide.css +4 -4
  37. package/templates/.claude/skills/deck-create/scripts/convert-to-pdf.mjs +6 -6
  38. package/templates/.claude/skills/deck-review/SKILL.md +63 -58
  39. package/templates/.claude/skills/deck-review/assets/slide-annotator.js +58 -49
  40. package/templates/.claude/skills/deck-summarize/SKILL.md +55 -45
  41. package/templates/.claude/skills/deck-summarize/references/brief-template.md +5 -4
  42. package/templates/.claude/skills/deck-summarize/scripts/extract-pptx.mjs +8 -7
  43. package/templates/.claude/skills/doc-collab/SKILL.md +39 -34
  44. package/templates/.claude/skills/doc-create/SKILL.md +27 -23
  45. package/templates/.claude/skills/doc-create/scripts/convert-to-pdf.mjs +6 -6
  46. package/templates/.claude/skills/draft-emails/SKILL.md +63 -53
  47. package/templates/.claude/skills/draft-emails/references/template.md +2 -2
  48. package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +15 -8
  49. package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +19 -11
  50. package/templates/.claude/skills/extract-entities/SKILL.md +76 -75
  51. package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +6 -5
  52. package/templates/.claude/skills/extract-entities/references/conditions.md +20 -18
  53. package/templates/.claude/skills/extract-entities/references/content.md +10 -9
  54. package/templates/.claude/skills/extract-entities/references/links.md +37 -13
  55. package/templates/.claude/skills/extract-entities/references/recruitment.md +30 -24
  56. package/templates/.claude/skills/extract-entities/references/resolution.md +14 -14
  57. package/templates/.claude/skills/extract-entities/references/sources.md +9 -9
  58. package/templates/.claude/skills/extract-entities/references/templates-conditions.md +12 -6
  59. package/templates/.claude/skills/extract-entities/references/templates-people-orgs.md +29 -10
  60. package/templates/.claude/skills/extract-entities/references/templates-priorities.md +10 -4
  61. package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +19 -7
  62. package/templates/.claude/skills/extract-entities/scripts/state.mjs +9 -8
  63. package/templates/.claude/skills/meeting-prep/SKILL.md +42 -36
  64. package/templates/.claude/skills/organize-files/SKILL.md +27 -22
  65. package/templates/.claude/skills/organize-files/scripts/organize-by-type.mjs +5 -4
  66. package/templates/.claude/skills/organize-files/scripts/summarize.mjs +4 -4
  67. package/templates/.claude/skills/person-identify/SKILL.md +77 -27
  68. package/templates/.claude/skills/person-identify/scripts/identify.sh +125 -26
  69. package/templates/.claude/skills/person-lookup/SKILL.md +34 -30
  70. package/templates/.claude/skills/person-lookup/scripts/lookup.sh +46 -17
  71. package/templates/.claude/skills/req-assess/SKILL.md +44 -36
  72. package/templates/.claude/skills/req-assess/references/interview-template.md +7 -2
  73. package/templates/.claude/skills/req-assess/references/panel-template.md +7 -2
  74. package/templates/.claude/skills/req-assess/references/rubric.md +13 -13
  75. package/templates/.claude/skills/req-bundle/SKILL.md +164 -0
  76. package/templates/.claude/skills/req-bundle/references/matching.md +70 -0
  77. package/templates/.claude/skills/req-bundle/references/pdf-structure.md +74 -0
  78. package/templates/.claude/skills/req-bundle/scripts/split-bundle.mjs +377 -0
  79. package/templates/.claude/skills/req-decide/SKILL.md +52 -41
  80. package/templates/.claude/skills/req-decide/references/rubric.md +11 -10
  81. package/templates/.claude/skills/req-decide/references/template.md +2 -2
  82. package/templates/.claude/skills/req-forget/SKILL.md +58 -39
  83. package/templates/.claude/skills/req-forget/references/classify.md +15 -13
  84. package/templates/.claude/skills/req-forget/references/locations.md +27 -22
  85. package/templates/.claude/skills/req-forget/references/report-template.md +24 -16
  86. package/templates/.claude/skills/req-scan/SKILL.md +27 -25
  87. package/templates/.claude/skills/req-scan/references/fallbacks.md +9 -9
  88. package/templates/.claude/skills/req-scan/references/filters.md +13 -13
  89. package/templates/.claude/skills/req-scan/references/sources.md +7 -7
  90. package/templates/.claude/skills/req-scan/references/state.md +1 -1
  91. package/templates/.claude/skills/req-scan/references/template.md +11 -1
  92. package/templates/.claude/skills/req-scan/scripts/state.mjs +3 -2
  93. package/templates/.claude/skills/req-screen/SKILL.md +96 -50
  94. package/templates/.claude/skills/req-screen/references/rubric.md +46 -50
  95. package/templates/.claude/skills/req-screen/references/scoring.md +79 -0
  96. package/templates/.claude/skills/req-screen/references/template.md +29 -17
  97. package/templates/.claude/skills/req-track/SKILL.md +76 -76
  98. package/templates/.claude/skills/req-track/references/fields.md +31 -27
  99. package/templates/.claude/skills/req-track/references/overlays.md +42 -0
  100. package/templates/.claude/skills/req-track/references/signals.md +12 -12
  101. package/templates/.claude/skills/req-track/references/statuses.md +3 -2
  102. package/templates/.claude/skills/req-track/references/templates.md +28 -27
  103. package/templates/.claude/skills/req-workday/SKILL.md +69 -40
  104. package/templates/.claude/skills/req-workday/references/brief.md +81 -0
  105. package/templates/.claude/skills/req-workday/references/status-mapping.md +5 -5
  106. package/templates/.claude/skills/req-workday/references/templates.md +11 -78
  107. package/templates/.claude/skills/req-workday/references/xlsx-format.md +26 -7
  108. package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +113 -35
  109. package/templates/.claude/skills/send-chat/SKILL.md +58 -54
  110. package/templates/.claude/skills/sync-apple-calendar/SKILL.md +23 -19
  111. package/templates/.claude/skills/sync-apple-calendar/references/SCHEMA.md +7 -7
  112. package/templates/.claude/skills/sync-apple-calendar/scripts/query.mjs +6 -6
  113. package/templates/.claude/skills/sync-apple-calendar/scripts/sync.mjs +9 -8
  114. package/templates/.claude/skills/sync-apple-mail/SKILL.md +20 -14
  115. package/templates/.claude/skills/sync-apple-mail/references/SCHEMA.md +10 -10
  116. package/templates/.claude/skills/sync-apple-mail/scripts/parse-emlx.mjs +9 -9
  117. package/templates/.claude/skills/sync-apple-mail/scripts/sync-helpers.mjs +16 -13
  118. package/templates/.claude/skills/sync-apple-mail/scripts/sync.mjs +3 -3
  119. package/templates/.claude/skills/sync-teams/SKILL.md +46 -43
  120. package/templates/.claude/skills/sync-teams/scripts/idb-reader.mjs +22 -21
  121. package/templates/.claude/skills/sync-teams/scripts/leveldb-reader.mjs +4 -4
  122. package/templates/.claude/skills/sync-teams/scripts/sync.mjs +4 -4
  123. package/templates/.claude/skills/upstream-instructions/SKILL.md +43 -41
  124. package/templates/.claude/skills/upstream-instructions/references/examples.md +5 -5
  125. package/templates/CLAUDE.md +97 -85
  126. package/templates/MIGRATION.md +359 -0
  127. package/templates/registry.yaml +25 -0
  128. package/templates/.claude/skills/anarlog-follow/scripts/follow.mjs +0 -243
  129. package/templates/.claude/skills/anarlog-trim/SKILL.md +0 -183
@@ -1,13 +1,16 @@
1
1
  ---
2
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.
3
+ description: Track changes to this installation's instruction files: the root CLAUDE.md, agent profiles, and skills. Record them in a single root CHANGELOG.md so you can contribute improvements back to the upstream monorepo. Use when someone modified, added, or removed CLAUDE.md, agents, or skills locally and you should document those changes for upstream.
4
4
  ---
5
5
 
6
6
  # Upstream Instructions
7
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:
8
+ Write tier: none (the root CHANGELOG.md is a personal surface)
9
+ Frontmatter: none
10
+
11
+ Track changes to this installation's **instructions**. Record them in one root
12
+ `CHANGELOG.md` so you can contribute improvements back to the upstream monorepo.
13
+ "Instructions" means all three surfaces, and they carry equal weight:
11
14
 
12
15
  - **`CLAUDE.md`** (root) — installation-wide instructions.
13
16
  - **`.claude/agents/*.md`** — agent profiles.
@@ -16,9 +19,9 @@ monorepo. "Instructions" means all three surfaces, treated equally:
16
19
  ## Trigger
17
20
 
18
21
  - 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
+ - Someone modified, added, or removed the root `CLAUDE.md`, an agent profile, or
23
+ a skill.
24
+ - The user wants to document what changed locally before the sync upstream.
22
25
 
23
26
  ## Prerequisites
24
27
 
@@ -31,27 +34,26 @@ monorepo. "Instructions" means all three surfaces, treated equally:
31
34
  - `.claude/agents/*.md` — agent profiles.
32
35
  - `.claude/skills/*/SKILL.md` and reference files — skills.
33
36
  - `CHANGELOG.md` (root) — the existing changelog, for what's already recorded.
34
- - The changes made in the current working session — the source of truth for what
35
- changed, since the KB lives on a synced filesystem and is not
36
- version-controlled.
37
+ - The changes you made in the current working session — the source of truth for
38
+ what changed. The KB may sync without version control; do not rely on it.
37
39
 
38
40
  ## Outputs
39
41
 
40
- - `CHANGELOG.md` (root) — a **single** reverse-chronological changelog covering
41
- all three surfaces. There are no per-skill or per-agent changelogs.
42
+ - `CHANGELOG.md` (root) — a **single** reverse-chronological changelog that
43
+ covers all three surfaces. There are no per-skill or per-agent changelogs.
42
44
 
43
45
  <do_confirm_checklist goal="Verify the changelog is upstream-ready">
44
46
 
45
- - [ ] Exactly one root `CHANGELOG.md`; no stray per-skill / per-agent changelogs
46
- left behind.
47
- - [ ] Every entry names its **Scope** (which surface(s) and file(s) it touched).
48
- - [ ] Each entry has **What**, **Why**, and **Details**.
49
- - [ ] Descriptions are specific enough for an upstream maintainer to act on (not
50
- "updated CLAUDE.md" / "fixed stuff").
51
- - [ ] New skills/agents include a brief description of their purpose; removed
52
- ones explain why.
53
- - [ ] Dates are the date the change was made, not guessed.
54
- - [ ] No duplicate entries for the same change.
47
+ - [ ] Keep exactly one root `CHANGELOG.md`. Leave no stray per-skill or
48
+ per-agent changelog behind.
49
+ - [ ] Name the **Scope** in every entry (the surfaces and files it touched).
50
+ - [ ] Give each entry **What**, **Why**, and **Details**.
51
+ - [ ] Make each description specific enough for an upstream maintainer to act
52
+ on. Never write "updated CLAUDE.md" or "fixed stuff".
53
+ - [ ] Briefly describe the purpose of each new skill or agent. Explain why you
54
+ removed each deleted one.
55
+ - [ ] Use the real date of the change. Never guess a date.
56
+ - [ ] Write no duplicate entry for the same change.
55
57
 
56
58
  </do_confirm_checklist>
57
59
 
@@ -65,15 +67,15 @@ head -20 CHANGELOG.md 2>/dev/null # newest date already recorded, if any
65
67
 
66
68
  ### 2. Identify changed instructions
67
69
 
68
- Knowledge bases live on a synced filesystem, not in Git, so there is no commit
69
- history to diff. Identify what changed from the work just done **this session**:
70
- recall every edit, addition, removal, and rename made to `CLAUDE.md`,
71
- `.claude/agents/`, and `.claude/skills/` during the current conversation, and
72
- list them per surface.
70
+ A knowledge base may sync over a mount with no version control, so never rely
71
+ on commit history. Identify what changed from the work you did **this
72
+ session**. Recall every edit, addition, removal, and rename you made to
73
+ `CLAUDE.md`, `.claude/agents/`, and `.claude/skills/` during the current
74
+ conversation. List them per surface.
73
75
 
74
- Use `CHANGELOG.md` only to see what's already recorded so you don't duplicate an
75
- existing entry. If something was clearly changed but you can't reconstruct what
76
- or why from the session, flag it as needing review rather than guessing.
76
+ Use `CHANGELOG.md` only to see what it already records. Do not duplicate an
77
+ existing entry. If something clearly changed but you cannot
78
+ reconstruct what or why from the session, flag it for review. Do not guess.
77
79
 
78
80
  ### 3. Classify each change
79
81
 
@@ -90,10 +92,10 @@ or why from the session, flag it as needing review rather than guessing.
90
92
  | `removed` | Instruction file or directory deleted |
91
93
  | `renamed` | File or directory renamed |
92
94
 
93
- A single change often spans surfaces (e.g. a KB-structure change touching
94
- `CLAUDE.md`, several agents, and several skills) record it as **one entry**
95
- whose Scope lists every surface touched. Re-read the affected files to confirm
96
- the change landed as intended before describing it.
95
+ A single change often spans surfaces. For example, a KB-structure change touches
96
+ `CLAUDE.md`, several agents, and several skills. Record it as **one entry**
97
+ whose Scope lists every surface it touched. Before you describe the change,
98
+ re-read the affected files and confirm it landed as intended.
97
99
 
98
100
  ### 4. Describe each change
99
101
 
@@ -103,9 +105,9 @@ Every entry must answer:
103
105
  2. **Why?** — the problem encountered or improvement discovered in use.
104
106
  3. **Details** — a summary of the actual change (not a full diff).
105
107
 
106
- Good: "Agents now read `Knowledge/Priorities/` at the start of every wake and
107
- flag anything that threatens a priority drafts and triage were ignoring
108
- strategic context."
108
+ Good: "Agents now read `Priorities/` in every tier at the start of every wake
109
+ and flag anything that threatens a priority. Drafts and triage ignored strategic
110
+ context."
109
111
 
110
112
  Bad: "Updated the agents" / "Fixed stuff" / "Changed line 42".
111
113
 
@@ -139,8 +141,8 @@ Worked examples in [references/examples.md](references/examples.md).
139
141
 
140
142
  ## Notes
141
143
 
142
- - This skill **documents only** it does not push or merge anything.
143
- - The single root `CHANGELOG.md` is consumed by the **downstream-instructions**
144
- skill in the upstream monorepo.
145
- - When in doubt about whether a change is upstream-worthy, include it; the
144
+ - This skill **documents only**. It does not push or merge anything.
145
+ - The **downstream-instructions** skill in the upstream monorepo consumes the
146
+ single root `CHANGELOG.md`.
147
+ - When in doubt about whether a change is upstream-worthy, include it. The
146
148
  upstream maintainer decides what to incorporate.
@@ -2,8 +2,8 @@
2
2
 
3
3
  Reference output for `upstream-instructions` Step 5. There is **one** root
4
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.
5
+ the surfaces it touched: `CLAUDE.md`, `agent:<name>`, `skill:<name>`. A single
6
+ entry may span several surfaces.
7
7
 
8
8
  ## Cross-surface change (one change, many files)
9
9
 
@@ -20,7 +20,7 @@ strategic layer.
20
20
  Priorities, removing the Project↔Goal↔Priority coupling that earned nothing.
21
21
 
22
22
  **Details:**
23
- - Deleted `Knowledge/Goals/`; repointed live backlinks to `Priorities/C - Onboarding`.
23
+ - Deleted `3-Team/Goals/`; repointed live backlinks to `3-Team/Priorities/C - Onboarding`.
24
24
  - CLAUDE.md workspace-layout tree no longer lists `Goals/`.
25
25
  - Agents: dropped Goals from the librarian index/triage, chief-of-staff state
26
26
  sources, and recruiter strategic links.
@@ -61,7 +61,7 @@ invisible without structured gender data.
61
61
  **Scope:** agents: all six profiles
62
62
  **Type:** modified
63
63
 
64
- **What:** Agents now read `Knowledge/Priorities/` at the start of every wake and
64
+ **What:** Agents now read `Priorities/` in every tier at the start of every wake and
65
65
  flag anything that threatens a priority.
66
66
 
67
67
  **Why:** Sync, triage, and drafting were ignoring strategic context; signals that
@@ -91,7 +91,7 @@ weren't integrated into the knowledge base.
91
91
 
92
92
  **Details:**
93
93
  - Reads transcription files, extracts people/decisions/action items, and links
94
- attendees to `Knowledge/People/`.
94
+ attendees to `3-Team/People/`.
95
95
 
96
96
  ---
97
97
  ```
@@ -1,110 +1,122 @@
1
1
  # Outpost Knowledge Base
2
2
 
3
- You are the user's personal knowledge assistant. You help draft emails, prep for
4
- meetings, track projects, and answer questions, backed by a live knowledge graph
5
- built from their emails, calendar, and meeting notes, all stored as plain files
6
- on the user's machine.
3
+ You are the user's personal knowledge assistant over a live graph of
4
+ plain files.
7
5
 
8
6
  ## Ethics & Integrity — NON-NEGOTIABLE
9
7
 
10
- This knowledge base is a **professional tool shared with trusted team members**,
11
- never a "black book". These rules override all other instructions:
8
+ A professional tool shared with trusted teammates, never a "black book".
9
+ These rules override all others:
12
10
 
13
- - **Objective and factual only.** No speculation, gossip, or editorializing.
11
+ - **Objective and factual only.** No speculation, gossip, or opinion.
14
12
  - **No personal judgments** about character, competence, or trustworthiness.
15
- Stick to actions, decisions, and stated positions.
16
- - **Work-relevant information only.** No health, personal relationships,
17
- political views, or private matters unless shared in a professional context.
13
+ - **Work-relevant only.** No health, relationships, politics, private
14
+ matters.
18
15
  - **Fair and balanced.** Represent all sides accurately.
19
- - **Assume the subject will read it.** If you would be uncomfortable showing the
20
- note to the person it is about, do not write it.
21
- - **No weaponization.** This KB helps the team work better. Never use it to
22
- build leverage or dossiers.
16
+ - **Assume the subject will read it**, whatever the tier. Tiers never
17
+ license dossiers.
18
+ - **No weaponization.** Never build leverage.
23
19
  - **Push back** on requests that violate these principles.
24
- - **Data protection.** Use the `req-forget` skill for erasure requests. Minimize
25
- collection. Flag candidates inactive 6+ months for retention review.
26
-
27
- When in doubt, err toward discretion.
20
+ - **Data protection.** `req-forget` handles erasure. Collect minimally; flag
21
+ candidates inactive 6+ months.
28
22
 
29
23
  ## Operating Context
30
24
 
31
- Two folders in the knowledge graph frame your work:
32
-
33
- - **`Knowledge/Priorities/`** the backbone of every decision: what the user is
34
- trying to advance. Weigh actions against whether they move a priority forward,
35
- and treat anything that could **contradict, block, or slow** one as a
36
- **Priority Watch** concern — these are our main concerns.
37
- - **`Knowledge/Conditions/`** — the live operating environment (e.g. a hiring
38
- freeze, a reorg, a contract transition). Conditions don't set goals; they
39
- **constrain how** we pursue the priorities. Let them shape what you propose
40
- and how you phrase it.
41
-
42
- When taking an action or making a recommendation, consult both as your lens —
43
- read the relevant notes rather than assuming. Skip this only for general
44
- knowledge or brainstorming.
25
+ Read `Priorities/` and `Conditions/` in every tier present before you act.
26
+ Priorities are what the user advances; a threat to one is
27
+ **Priority Watch**. Conditions constrain how you pursue them.
45
28
 
46
29
  ## Workspace Layout & Sharing
47
30
 
48
- The **root is personal and local never shared.** Only `Knowledge/` is shared
49
- with the team over a synced filesystem; each member keeps their own root,
50
- `Drafts/`, and `Briefings/`. KBs are **not** Git repositories — they sync as
51
- plain files. `CLAUDE.md` and `.claude/` are yours to tweak; use the
52
- `fit-outpost` CLI to install or update the standard instruction set.
53
-
54
- ```text
55
- ./ # Personal root — never shared
56
- ├── CLAUDE.md # This file
57
- ├── .claude/ # Agent profiles + auto-discovered skills
58
- ├── Knowledge/ # Knowledge graph SHARED (Obsidian-compatible)
59
- │ └── People/ Organizations/ Projects/ Topics/ Candidates/ Priorities/ Conditions/ Roles/
60
- ├── Drafts/ # Email/chat drafts (personal)
61
- ├── Briefings/ # Daily briefings (personal)
62
- └── .mcp.json # MCP config (optional)
63
- ```
64
-
65
- ## Searching
66
-
67
- Use the **ripgrep** `rg` program for fast knowledge graph searches.
31
+ The KB root is the Obsidian vault. Tier directories (one digit, one dash) are
32
+ the graph and the share units; a lower rank is a narrower audience. Every other
33
+ root entry is personal, never shared (instruction files, `Briefings/`,
34
+ `registry.yaml`, `validation-baseline.json`); personal folders never match the
35
+ rank grammar.
36
+
37
+ - `0-Draft/` — owner only, never shared: drafts, agent reports, permanent
38
+ owner-only notes.
39
+ - `1-Management/` — senior managers. User-placed; fellow-manager notes go
40
+ to tier 0.
41
+ - `2-Confidential/` hiring managers. Candidates, Prospects, Roles,
42
+ Erasure.
43
+ - `3-Team/` the team. People, Teams, Organizations, Projects, Topics,
44
+ Priorities, Conditions, Tasks.
45
+ - `4-Public/` — anyone. User-placed after rights and verification checks.
46
+
47
+ Rename, add, or remove tiers; entity subdirectories appear on demand.
48
+
49
+ Sharing is cumulative: a tier-N member receives every wider tier, from
50
+ tier 1 up, over any syncing mount (OneDrive, Git). A shared tier is often a
51
+ symlink into a synced folder; the rank comes from the link's name. Keep
52
+ the vault root outside every cloud-synced folder.
53
+ `npx fit-outpost validate <root>` checks any vault or suffix.
54
+
55
+ ## Placement and Links
56
+
57
+ - Link only to your own tier or a wider one, never narrower or personal.
58
+ - Shared-tier links are tier-prefixed and vault-absolute
59
+ (`[[3-Team/People/Sarah Chen]]`); bare basenames only in tier 0 or one
60
+ entity folder.
61
+ - Place each note in the widest tier that excludes everyone who must not
62
+ read it; otherwise tier 0.
63
+ - Promote: a human moves a note into its tier. Export: a skill
64
+ sends a copy over mail or chat; the note keeps its tier. Named recipients
65
+ and panels are exports.
66
+ - Overlay: a narrower facet in a narrower tier, declared by a one-way
67
+ quoted `canonical` link to the wide note. Forms: facet, timeline split
68
+ (same date keys), inverse stub (linked down to).
69
+ - Link inversion: the wide note's narrow link moves, with its one-line
70
+ context, into the narrow note; no tombstone.
71
+ - Route each dated entry to the note in its own tier.
72
+ - Aggregates over narrower sources go to `0-Draft/`; no agent writes
73
+ tier 1.
74
+ - `no-redistribute` overrides tier; marked or third-party content never
75
+ enters tier 4.
76
+ - Assessment prose about a named subject lives only in that subject's
77
+ record.
78
+
79
+ ## Note Metadata
80
+
81
+ Stamp YAML frontmatter on every note. Humans edit `registry.yaml`; agents
82
+ select from it.
83
+
84
+ - Core on every shared note: `type`, `created`, `updated` (ISO dates).
85
+ - Conditional: `aliases` (person, candidate, organization), `status`
86
+ (candidate, prospect), `canonical` (overlays), `verified` (tier 4).
87
+ - Flat block at line 1, snake_case, canonical key order; property links
88
+ double-quoted, tier-prefixed.
89
+ - No tier, rank, or audience key; the path is the sole tier authority.
90
+ - Tags: the closed `topic/` registry taxonomy, frontmatter `tags` only;
91
+ each tag carries its widest tier.
92
+ - Coherence: Bases on `type`/`status`, aliases in the switcher, path-keyed
93
+ graph groups; absolute-link, same-folder vault settings.
68
94
 
69
95
  ## Agents
70
96
 
71
- Agents in `.claude/agents/` maintain this KB, woken on a schedule by the Outpost
72
- scheduler. Each wake: observe state, decide the most valuable action, execute.
73
-
74
- Each agent's skills are declared in its own profile under `.claude/agents/`.
97
+ The scheduler wakes the `.claude/agents/` agents: observe, decide,
98
+ execute. Profiles declare skills, read scope, write tier.
75
99
 
76
- | Agent | Domain | Schedule |
77
- | ------------------ | ------------------------------- | --------------- |
78
- | **postman** | Communication triage and drafts | Every 5 min |
79
- | **concierge** | Meeting prep and transcripts | Every 10 min |
80
- | **librarian** | Knowledge graph maintenance | Every 15 min |
81
- | **recruiter** | Engineering recruitment | Every 30 min |
82
- | **head-hunter** | Passive talent scouting | Every 60 min |
83
- | **chief-of-staff** | Daily briefings and priorities | 7am, Mon 7:30am |
84
-
85
- Each agent writes `~/.cache/fit/outpost/state/{agent}_triage.md` per wake. The
86
- **chief-of-staff** reads all of them to write daily briefings in `Briefings/`.
100
+ - **postman** (5 min) — communication triage and drafts
101
+ - **concierge** (10 min) meeting prep and transcripts
102
+ - **librarian** (15 min) knowledge graph maintenance
103
+ - **recruiter** (30 min) engineering recruitment
104
+ - **head-hunter** (60 min) passive talent scouting
105
+ - **chief-of-staff** (daily 7am) briefings in `Briefings/`
87
106
 
88
107
  ## Cache Directory (`~/.cache/fit/outpost/`)
89
108
 
90
- Synced data and runtime state live outside the KB; only notes, drafts, and
91
- briefings live inside it.
92
-
93
- **Resolve `~` before passing a path to a tool.** Shell commands expand `~`, but
94
- the Write and Edit tools do not — a literal `~/...` creates a stray `.cache/`
95
- inside the KB. Read `$HOME` at runtime and pass the full `$HOME/...` path. Read
96
- meetings, emails, and messages directly from the source dirs below.
109
+ Synced data and runtime state live outside the KB. Resolve `~` to `$HOME`
110
+ for Write and Edit; search with `rg`.
97
111
 
98
- - `apple_mail/` — Mail threads as `.md` (plus `attachments/`)
99
- - `apple_calendar/` — Calendar events as `.json`
100
- - `teams_chat/` — Teams 1:1 chats as `.md`
101
- - `head-hunter/` — head-hunter agent memory
102
- - `state/` — per-source last-sync timestamps, processed-file index, and
103
- `{agent}_triage.md` per agent
112
+ - `apple_mail/`, `apple_calendar/`, `teams_chat/` — synced sources
113
+ - `head-hunter/` — agent memory
114
+ - `drafts/` — the draft-status ledgers (`handled`, `ignored`)
115
+ - `state/` — daemon-owned sync state and triage files
104
116
 
105
- ## User Identity
117
+ ## User Identity & Team
106
118
 
107
- The current user's identity is cached at
108
- `~/.cache/fit/outpost/state/identity.md` read it directly. If missing or
109
- stale, run the `person-identify` skill to refresh it from the corporate
110
- directory.
119
+ Read `~/.cache/fit/outpost/state/identity.md`; refresh with
120
+ `person-identify`. Manager plus Direct reports define "our team";
121
+ `Direct reports: none` means an individual contributor. Resolve peers with
122
+ `person-lookup` on the Manager. Never guess.