@forwardimpact/outpost 3.12.1 → 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 (85) hide show
  1. package/package.json +3 -2
  2. package/src/kb-manager.js +58 -5
  3. package/src/kb-validator.js +762 -0
  4. package/src/outpost.js +73 -8
  5. package/templates/.claude/agents/chief-of-staff.md +14 -6
  6. package/templates/.claude/agents/concierge.md +9 -2
  7. package/templates/.claude/agents/head-hunter.md +9 -2
  8. package/templates/.claude/agents/librarian.md +11 -4
  9. package/templates/.claude/agents/postman.md +9 -2
  10. package/templates/.claude/agents/recruiter.md +9 -2
  11. package/templates/.claude/skills/anarlog-follow/SKILL.md +53 -29
  12. package/templates/.claude/skills/anarlog-follow/references/sessions.md +52 -0
  13. package/templates/.claude/skills/anarlog-process/SKILL.md +88 -45
  14. package/templates/.claude/skills/anarlog-process/references/extraction.md +19 -11
  15. package/templates/.claude/skills/anarlog-process/references/sessions.md +92 -58
  16. package/templates/.claude/skills/anarlog-process/scripts/scan.mjs +404 -163
  17. package/templates/.claude/skills/candidate-report/SKILL.md +12 -9
  18. package/templates/.claude/skills/changelog/SKILL.md +106 -56
  19. package/templates/.claude/skills/deck-create/SKILL.md +60 -2
  20. package/templates/.claude/skills/deck-review/SKILL.md +4 -1
  21. package/templates/.claude/skills/deck-summarize/SKILL.md +6 -2
  22. package/templates/.claude/skills/deck-summarize/references/brief-template.md +1 -1
  23. package/templates/.claude/skills/doc-collab/SKILL.md +16 -11
  24. package/templates/.claude/skills/doc-create/SKILL.md +6 -3
  25. package/templates/.claude/skills/draft-emails/SKILL.md +31 -25
  26. package/templates/.claude/skills/draft-emails/references/template.md +1 -1
  27. package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +14 -8
  28. package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +9 -3
  29. package/templates/.claude/skills/extract-entities/SKILL.md +17 -16
  30. package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +2 -1
  31. package/templates/.claude/skills/extract-entities/references/conditions.md +6 -5
  32. package/templates/.claude/skills/extract-entities/references/links.md +34 -10
  33. package/templates/.claude/skills/extract-entities/references/recruitment.md +15 -10
  34. package/templates/.claude/skills/extract-entities/references/resolution.md +1 -1
  35. package/templates/.claude/skills/extract-entities/references/sources.md +1 -1
  36. package/templates/.claude/skills/extract-entities/references/templates-conditions.md +10 -4
  37. package/templates/.claude/skills/extract-entities/references/templates-people-orgs.md +29 -10
  38. package/templates/.claude/skills/extract-entities/references/templates-priorities.md +8 -2
  39. package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +19 -7
  40. package/templates/.claude/skills/meeting-prep/SKILL.md +23 -18
  41. package/templates/.claude/skills/organize-files/SKILL.md +3 -0
  42. package/templates/.claude/skills/person-identify/SKILL.md +58 -10
  43. package/templates/.claude/skills/person-identify/scripts/identify.sh +110 -11
  44. package/templates/.claude/skills/person-lookup/SKILL.md +8 -3
  45. package/templates/.claude/skills/person-lookup/scripts/lookup.sh +27 -1
  46. package/templates/.claude/skills/req-assess/SKILL.md +19 -11
  47. package/templates/.claude/skills/req-assess/references/interview-template.md +6 -1
  48. package/templates/.claude/skills/req-assess/references/panel-template.md +5 -1
  49. package/templates/.claude/skills/req-bundle/SKILL.md +164 -0
  50. package/templates/.claude/skills/req-bundle/references/matching.md +70 -0
  51. package/templates/.claude/skills/req-bundle/references/pdf-structure.md +74 -0
  52. package/templates/.claude/skills/req-bundle/scripts/split-bundle.mjs +377 -0
  53. package/templates/.claude/skills/req-decide/SKILL.md +26 -18
  54. package/templates/.claude/skills/req-decide/references/template.md +2 -2
  55. package/templates/.claude/skills/req-forget/SKILL.md +39 -22
  56. package/templates/.claude/skills/req-forget/references/classify.md +12 -10
  57. package/templates/.claude/skills/req-forget/references/locations.md +27 -22
  58. package/templates/.claude/skills/req-forget/references/report-template.md +23 -15
  59. package/templates/.claude/skills/req-scan/SKILL.md +6 -3
  60. package/templates/.claude/skills/req-scan/references/template.md +11 -1
  61. package/templates/.claude/skills/req-screen/SKILL.md +78 -34
  62. package/templates/.claude/skills/req-screen/references/rubric.md +38 -42
  63. package/templates/.claude/skills/req-screen/references/scoring.md +79 -0
  64. package/templates/.claude/skills/req-screen/references/template.md +26 -14
  65. package/templates/.claude/skills/req-track/SKILL.md +44 -44
  66. package/templates/.claude/skills/req-track/references/fields.md +18 -15
  67. package/templates/.claude/skills/req-track/references/overlays.md +42 -0
  68. package/templates/.claude/skills/req-track/references/signals.md +2 -2
  69. package/templates/.claude/skills/req-track/references/templates.md +28 -27
  70. package/templates/.claude/skills/req-workday/SKILL.md +49 -20
  71. package/templates/.claude/skills/req-workday/references/brief.md +81 -0
  72. package/templates/.claude/skills/req-workday/references/templates.md +6 -73
  73. package/templates/.claude/skills/req-workday/references/xlsx-format.md +19 -0
  74. package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +96 -20
  75. package/templates/.claude/skills/send-chat/SKILL.md +11 -11
  76. package/templates/.claude/skills/sync-apple-calendar/SKILL.md +3 -0
  77. package/templates/.claude/skills/sync-apple-mail/SKILL.md +3 -0
  78. package/templates/.claude/skills/sync-teams/SKILL.md +3 -0
  79. package/templates/.claude/skills/upstream-instructions/SKILL.md +8 -5
  80. package/templates/.claude/skills/upstream-instructions/references/examples.md +3 -3
  81. package/templates/CLAUDE.md +96 -87
  82. package/templates/MIGRATION.md +359 -0
  83. package/templates/registry.yaml +25 -0
  84. package/templates/.claude/skills/anarlog-follow/scripts/follow.mjs +0 -243
  85. package/templates/.claude/skills/anarlog-trim/SKILL.md +0 -186
@@ -8,6 +8,9 @@ description: >
8
8
 
9
9
  # Candidate Report
10
10
 
11
+ Write tier: `0-Draft` (the report is an export artifact)
12
+ Frontmatter: none
13
+
11
14
  Generate a polished, single-page A4 HTML report that benchmarks a candidate
12
15
  against a specific role in the agent-aligned engineering standard. The report
13
16
  serves hiring managers and pod leads. They need a quick visual summary before
@@ -24,11 +27,11 @@ they decide whether to invest interview time.
24
27
  - `@forwardimpact/pathway` CLI installed (`bunx fit-pathway --help`).
25
28
  - Playwright for PDF output
26
29
  (`bun install playwright && bunx playwright install chromium`).
27
- - The candidate has a `brief.md` in `Knowledge/Candidates/{Name}/`.
30
+ - The candidate has a `brief.md` in `2-Confidential/Candidates/{Name}/`.
28
31
 
29
32
  ## Inputs
30
33
 
31
- - **Candidate name** — locates `Knowledge/Candidates/{Name}/brief.md`.
34
+ - **Candidate name** — locates `2-Confidential/Candidates/{Name}/brief.md`.
32
35
  - **Target role** — discipline, level, track (e.g.
33
36
  `software-engineering J070 forward-deployed`). If the user does not give it,
34
37
  infer it from the candidate's `Req` field → Role file. Ask the user when you
@@ -38,7 +41,7 @@ they decide whether to invest interview time.
38
41
 
39
42
  ## Outputs
40
43
 
41
- - `Drafts/{Recipient}-{CandidateSurname}-Report.html` — the A4 one-pager.
44
+ - `0-Draft/{Recipient}-{CandidateSurname}-Report.html` — the A4 one-pager.
42
45
  - Optional PDF with `scripts/render-pdf.mjs`.
43
46
 
44
47
  <do_confirm_checklist goal="Verify the report before delivering it">
@@ -64,17 +67,17 @@ they decide whether to invest interview time.
64
67
  Read whatever exists for the candidate:
65
68
 
66
69
  ```text
67
- Knowledge/Candidates/{Name}/brief.md # required
68
- Knowledge/Candidates/{Name}/screening.md # if produced by req-screen
69
- Knowledge/Candidates/{Name}/interview-*.md # if produced by req-assess
70
- Knowledge/Candidates/{Name}/CV.pdf|CV.md # raw CV if needed
70
+ 2-Confidential/Candidates/{Name}/brief.md # required
71
+ 2-Confidential/Candidates/{Name}/screening.md # if produced by req-screen
72
+ 2-Confidential/Candidates/{Name}/interview-*.md # if produced by req-assess
73
+ 2-Confidential/Candidates/{Name}/CV.pdf|CV.md # raw CV if needed
71
74
  ```
72
75
 
73
76
  If `screening.md` exists, treat its skill and behaviour ratings as the primary
74
77
  source. They are already standard-calibrated. Otherwise map them manually in
75
78
  Step 3.
76
79
 
77
- Search the graph for surrounding context: `rg "{Candidate Name}" Knowledge/`.
80
+ Search the graph for surrounding context: `rg "{Candidate Name}" [0-9]-*/`.
78
81
 
79
82
  ### 2. Load the standard benchmark
80
83
 
@@ -122,7 +125,7 @@ preview overflows, cut content.
122
125
  Save the completed HTML to:
123
126
 
124
127
  ```text
125
- Drafts/{Recipient}-{CandidateSurname}-Report.html
128
+ 0-Draft/{Recipient}-{CandidateSurname}-Report.html
126
129
  ```
127
130
 
128
131
  `{Recipient}` is the first name of the person the report is for.
@@ -1,64 +1,79 @@
1
1
  ---
2
2
  name: changelog
3
- description: Record the knowledge-graph changes from the current session into one shared Knowledge/CHANGELOG.md. The team can then see what changed and why. Use when the user asks to log, record, or write up the changes they just made to the knowledge base. This typically happens at the end of a session of edits.
3
+ description: Record the knowledge-graph changes from the current session into one CHANGELOG.md per shared tier. The team can then see what changed and why. Use when the user asks to log, record, or write up the changes they just made to the knowledge base. This typically happens at the end of a session of edits.
4
4
  ---
5
5
 
6
6
  # Changelog
7
7
 
8
- Record the changes to the **knowledge graph** (`Knowledge/`) from the current
9
- working session. Write them in one shared `Knowledge/CHANGELOG.md`, newest
10
- first. Teammates who sync the same filesystem can then see what changed and why.
8
+ Write tier: each shared tier (rank 1 and up)
9
+ Frontmatter: changelog
11
10
 
12
- This skill tracks **graph content**. Graph content is the notes under
13
- `Knowledge/People/`, `Organizations/`, `Projects/`, `Topics/`, `Candidates/`,
14
- `Priorities/`, and the other subdirectories. It does **not** track changes to
15
- instructions (`CLAUDE.md`, agents, skills). The `upstream-instructions` skill
16
- owns those.
11
+ Record the changes to the **knowledge graph** (the tier directories) from the
12
+ current working session. Write them into one `CHANGELOG.md` per shared tier
13
+ (`<N>-<Label>/CHANGELOG.md`, ranks 1 and up), newest first. Teammates who
14
+ receive a tier can then see what changed in it and why.
15
+
16
+ The changelog is per tier because its audience is the tier's audience. An
17
+ entry never names a note in a narrower tier: a change to a tier-2 note goes
18
+ to `2-Confidential/CHANGELOG.md` only, never to `3-Team/CHANGELOG.md`.
19
+ `0-Draft/` keeps no changelog. Discover changelogs inside the tier
20
+ directories only.
21
+
22
+ This skill tracks **graph content**: the notes under each tier's entity
23
+ subdirectories (`People/`, `Organizations/`, `Projects/`, `Candidates/`, and
24
+ the rest). It does **not** track changes to instructions (`CLAUDE.md`,
25
+ agents, skills). The `upstream-instructions` skill owns those, and the root
26
+ instruction `CHANGELOG.md` is a personal surface this skill never touches.
17
27
 
18
28
  ## Trigger
19
29
 
20
30
  - The user asks to write, update, or record a changelog after they edit the KB.
21
- - A session added, modified, removed, or renamed notes in `Knowledge/`. The user
22
- wants a record of those changes for the team.
31
+ - A session added, modified, removed, or renamed notes in a shared tier. The
32
+ user wants a record of those changes for the team.
23
33
 
24
34
  ## Inputs
25
35
 
26
- - **The edits made in the current session** — the source of truth. The KB lives
27
- on a synced filesystem and has no version control, so no commit history exists
28
- to diff. Recall every note that you created, edited, removed, or renamed under
29
- `Knowledge/` during this conversation.
36
+ - **The edits made in the current session** — the source of truth. A tier may
37
+ sync over a mount with no version control, so never rely on commit history.
38
+ Recall every note that you created, edited, removed, or renamed in a shared
39
+ tier during this conversation.
30
40
  - `~/.cache/fit/outpost/state/identity.md` — the current user's identity. Use
31
- its **Name** as the author on each entry. The KB is shared, so every entry
41
+ its **Name** as the author on each entry. The tiers are shared, so every entry
32
42
  must name the team member who made the change. Resolve `~` to `$HOME` before
33
43
  you read it.
34
- - `Knowledge/CHANGELOG.md` — the existing changelog. Read it to see what is
35
- already recorded and to avoid duplicates.
44
+ - `<N>-<Label>/CHANGELOG.md` per shared tier — the existing changelogs. Read
45
+ them to see what is already recorded and to avoid duplicates.
36
46
 
37
47
  ## Outputs
38
48
 
39
- - `Knowledge/CHANGELOG.md` a **single** reverse-chronological changelog that
40
- covers all graph subdirectories. No per-folder or per-note changelogs.
49
+ - One `CHANGELOG.md` per shared tier that had changes: a
50
+ reverse-chronological log that covers that tier's subdirectories. No
51
+ per-folder or per-note changelogs, and none in `0-Draft/`.
41
52
 
42
53
  ## Ethics
43
54
 
44
- The team shares `Knowledge/`. Every entry obeys the KB's integrity rules:
45
- objective and factual, work-relevant, no personal judgments. Assume the person a
46
- note is about will read its changelog entry. Describe
55
+ The team shares each tier with its own audience. Every entry obeys the KB's
56
+ integrity rules: objective and factual, work-relevant, no personal judgments.
57
+ Assume the person a note is about will read its changelog entry. Describe
47
58
  **what changed in the graph**. Do not record opinions about the people in it.
48
59
 
49
60
  <do_confirm_checklist goal="Verify the changelog is accurate and shareable">
50
61
 
51
- - [ ] Keep exactly one `Knowledge/CHANGELOG.md`. Leave no stray per-folder
52
- changelog.
53
- - [ ] Name the **Scope** in every entry, with the full path of each note or
54
- folder touched.
55
- - [ ] Give each entry a **Who** (the author, from identity), a **What**, and a
56
- **Why**.
57
- - [ ] Make each description specific enough to be useful (never "updated some
58
- notes").
62
+ - [ ] Keep exactly one `CHANGELOG.md` per shared tier, at the tier root.
63
+ Leave no stray per-folder changelog and none in `0-Draft/`.
64
+ - [ ] Route every entry to the changelog of the tier that holds the changed
65
+ note. Never name a narrower tier's note in a wider tier's changelog.
66
+ - [ ] Write every entry as **one line**: type, **Scope** (tier-prefixed
67
+ paths), **Who**, and a short pointer. No `What:`/`Why:` blocks.
68
+ - [ ] Make the pointer specific enough to locate the change (never "updated
69
+ some notes").
59
70
  - [ ] Use the real date of each change. Never guess a date.
60
71
  - [ ] Add no duplicate entry for a change already in the changelog.
61
72
  - [ ] Keep every entry factual and fit for the subject to read.
73
+ - [ ] Stamp the frontmatter core (`type: changelog`, `created`, `updated`) on
74
+ a changelog you create; stamp `updated` on one you edit.
75
+ - [ ] Keep each file short (see Step 5). Compact or drop old entries when it
76
+ grows.
62
77
 
63
78
  </do_confirm_checklist>
64
79
 
@@ -67,8 +82,8 @@ note is about will read its changelog entry. Describe
67
82
  ### 1. Find what's already recorded, and who you are
68
83
 
69
84
  ```bash
70
- head -30 Knowledge/CHANGELOG.md 2>/dev/null # newest date already logged, if any
71
- cat "$HOME/.cache/fit/outpost/state/identity.md" # Name → the author for this session's entries
85
+ head -30 3-Team/CHANGELOG.md 2>/dev/null # per tier you changed
86
+ cat "$HOME/.cache/fit/outpost/state/identity.md" # Name → the author
72
87
  ```
73
88
 
74
89
  If `identity.md` is missing or stale, run the `person-identify` skill to refresh
@@ -76,22 +91,23 @@ it before you log the changes. Never guess the author.
76
91
 
77
92
  ### 2. Reconstruct this session's changes
78
93
 
79
- Recall every change you made to `Knowledge/` during the current conversation:
80
- creations, edits, removals, and renames. Group them by note. If you are unsure
81
- that a change landed, confirm it before you log it:
94
+ Recall every change you made to the shared tiers during the current
95
+ conversation: creations, edits, removals, and renames. Group them by note,
96
+ then by tier. If you are unsure that a change landed, confirm it before you
97
+ log it:
82
98
 
83
99
  ```bash
84
- rg --files Knowledge/ | rg "<note name>" # confirm a note exists
85
- cat "Knowledge/People/Doe, Jane.md" # confirm content landed
100
+ rg --files [0-9]-*/ | rg "<note name>" # confirm a note exists
101
+ cat "3-Team/People/Doe, Jane.md" # confirm content landed
86
102
  ```
87
103
 
88
104
  Optionally, surface anything you edited recently and might have missed:
89
105
 
90
106
  ```bash
91
- find Knowledge -name '*.md' -newermt '-1 day' -not -path '*/.*'
107
+ find [0-9]-* -name '*.md' -newermt '-1 day' -not -path '*/.*'
92
108
  ```
93
109
 
94
- Use `Knowledge/CHANGELOG.md` only to avoid a duplicate of an entry already
110
+ Use each tier's `CHANGELOG.md` only to avoid a duplicate of an entry already
95
111
  there.
96
112
 
97
113
  ### 3. Classify each change
@@ -104,38 +120,72 @@ there.
104
120
  | `renamed` | Note renamed or moved |
105
121
 
106
122
  Some related changes form one logical edit. An example is a new project note
107
- plus the backlinks to the people it involves. Record these as **one entry**. The
108
- Scope of that entry lists every note touched.
123
+ plus the backlinks to the people it involves. Record these as **one entry**
124
+ when they live in one tier. Changes that span tiers split into one entry per
125
+ tier, each naming only that tier's notes.
109
126
 
110
127
  ### 4. Write the changelog
111
128
 
112
- Create or update `Knowledge/CHANGELOG.md` (newest first). Group entries under
113
- one heading per day. Write one bullet per logical change:
129
+ Create or update the changed tiers' `CHANGELOG.md` files (newest first).
130
+ Group entries under one heading per day. Write one bullet per logical change.
131
+ A new changelog opens with the frontmatter core (`type: changelog`,
132
+ `created`, `updated`); an edited one gets a fresh `updated`.
114
133
 
115
134
  ```markdown
116
- # Knowledge Changelog
135
+ ---
136
+ type: changelog
137
+ created: 2026-01-01
138
+ updated: 2026-01-01
139
+ ---
140
+
141
+ # Team Changelog
117
142
 
118
- Changes to the shared knowledge graph, newest first. Maintained by hand at the
119
- end of editing sessions via the `changelog` skill. The KB is not
120
- version-controlled, so this is the record of what changed and why.
143
+ Terse, newest-first pointers to changes in this tier. This is a hint for
144
+ teammates who sync the same files, not a precious record. The `changelog`
145
+ skill maintains it, and compacts and drops old entries as the file grows.
121
146
 
122
147
  ## <YYYY-MM-DD>
123
148
 
124
- - **<added | modified | removed | renamed>** — _<Scope: full path(s)>_ · <Who>
125
- **What:** <one-line summary of the change.>
126
- **Why:** <the reason — the email, meeting, or request that prompted it.>
149
+ - **<added | modified | removed | renamed>** — _<Scope: tier-prefixed path(s)>_ · <Who> — <short pointer: what changed, and why only if it isn't obvious.>
127
150
  ```
128
151
 
152
+ **Keep entries brief — a pointer, not a summary.** One line each. State the
153
+ type, the scope (tier-prefixed paths), the author, and a short clause that
154
+ lets a teammate find the change and grasp its gist. Do **not** reproduce the
155
+ content of the edit. If someone needs the detail, they open the note.
156
+
129
157
  Use the real date of the change (today's date is in context). Use the **Name**
130
158
  from `identity.md` as `<Who>`. The team shares the file, so the author travels
131
- on each entry. The day's heading alone is not enough. A day with edits from more
132
- than one teammate then stays unambiguous. Keep each entry to its What and Why.
133
- Write a ledger. Do not write a diff.
159
+ on each entry.
160
+
161
+ Collapse related same-tier edits into one line. Several notes touched for one
162
+ purpose, or the same note created-then-reworked in a session, is a single
163
+ entry. Combine the types (e.g. `**added / renamed**`) and name the notes in
164
+ the scope.
165
+
166
+ ### 5. Compact each file when it grows
167
+
168
+ A changelog is a **disposable hint file, not an archive**. The notes
169
+ themselves are the record. Keep it short. After you add this session's
170
+ entries, compact the file in the same pass when it has grown large (rough
171
+ guide: **more than ~150 lines, or older than ~2 months of daily headings**):
172
+
173
+ - **Roll up old days.** Fold each day older than ~2 weeks into one or two
174
+ thematic lines per author.
175
+ - **Merge iterative churn.** Collapse a run of edits to the same file or
176
+ topic into a single line that describes the net result.
177
+ - **Drop the stale tail.** Delete day headings older than ~2–3 months
178
+ outright. The change already lives in the notes.
179
+
180
+ Be aggressive: losing granularity here costs nothing. Never rewrite an entry
181
+ to say something the edit did not do. Do not drop a *recent* change just to
182
+ save space.
134
183
 
135
184
  ## Notes
136
185
 
137
186
  - This skill **documents only**. It records changes you already made. It does
138
187
  not make or undo edits.
139
- - One `Knowledge/CHANGELOG.md` at the graph root, never per-folder.
188
+ - One `CHANGELOG.md` per shared tier, at the tier root, never per-folder.
140
189
  - For changes to instructions (`CLAUDE.md`, agents, skills), use
141
- `upstream-instructions` instead.
190
+ `upstream-instructions` instead; its root `CHANGELOG.md` is a separate
191
+ personal artifact.
@@ -6,6 +6,9 @@ compatibility: Requires Node.js. The skill installs Playwright on first use.
6
6
 
7
7
  # Create Presentations
8
8
 
9
+ Write tier: `0-Draft`
10
+ Frontmatter: none
11
+
9
12
  Generate PDF slide decks from user requests. Playwright renders the HTML slides
10
13
  to PDF. This skill can pull context from the knowledge base for company info,
11
14
  project details, and people.
@@ -22,7 +25,7 @@ Run when the user asks to create a presentation, slide deck, or pitch deck.
22
25
  ## Inputs
23
26
 
24
27
  - User's description of the presentation
25
- - `Knowledge/` — optional context about company, product, team, projects
28
+ - `3-Team/` — optional context about company, product, team, projects
26
29
 
27
30
  ## Outputs
28
31
 
@@ -32,7 +35,7 @@ Run when the user asks to create a presentation, slide deck, or pitch deck.
32
35
 
33
36
  ## Workflow
34
37
 
35
- 1. Check `Knowledge/` for relevant context about the company, product, team,
38
+ 1. Check `3-Team/` for relevant context about the company, product, team,
36
39
  etc.
37
40
  2. Make sure Playwright is installed:
38
41
  `bun install playwright && bunx playwright install chromium`
@@ -54,6 +57,59 @@ The conversion script accepts optional arguments:
54
57
  Defaults: input = `/tmp/outpost-presentation.html`, output =
55
58
  `~/Desktop/presentation.pdf`
56
59
 
60
+ ## Source Annotations — REQUIRED
61
+
62
+ Decks are condensed views of source documents (knowledge-base notes, drafts
63
+ under `0-Draft/`, project docs). As a deck is iterated on, improvements get
64
+ **back-ported** to those sources. So every deck must record what maps where.
65
+ Embed the mapping as HTML comments (invisible in the browser and in the PDF).
66
+ A deck with untraceable content is incomplete.
67
+
68
+ ### Comment syntax
69
+
70
+ <!-- src: <relative-path>#<heading> -->
71
+ <!-- src-note: <free text> -->
72
+
73
+ - `src:` maps the **next element** (and everything inside it) to a source file
74
+ or section. A nested `src:` overrides its parent for that subtree.
75
+ - The path is **relative to the deck file itself**. The heading is the exact
76
+ markdown heading text without the leading `#`-marks, as in an Obsidian
77
+ `[[file#heading]]` link. Omit `#<heading>` to map to the whole file.
78
+ - `src: #<heading>` (path omitted) inherits the path from the nearest
79
+ **enclosing** `src:`. Use this for repeated sections within one annotated
80
+ slide, so the doc path is stated once per slide.
81
+ - `src-note:` records exceptions and nuances in prose: content synthesized
82
+ from multiple sources, deliberately omitted source fields, or deviations
83
+ from the field conventions.
84
+
85
+ ### Placement rules
86
+
87
+ 1. **Legend first.** Put one legend comment right after `<body>`. It explains
88
+ the syntax and the deck's field conventions (see below). Never nest a
89
+ literal `<!--` inside it — write the syntax without comment delimiters.
90
+ 2. **One `src:` per slide**, mapping it to its primary source document, placed
91
+ immediately before the `<section class="slide">`.
92
+ 3. **One `src:` per repeated content block** (a goal, a priority, a feature
93
+ card…), mapping it to the source section heading, placed immediately
94
+ before the block's opening tag.
95
+ 4. **Field conventions instead of per-paragraph comments.** When a block's
96
+ inner elements map 1:1 to labelled source fields (e.g. `.card.why p` ↔
97
+ `**Why it matters:**`), declare that mapping **once in the legend**.
98
+ Annotate individual elements only when they deviate — then use `src-note:`.
99
+ 5. **Synthesized content** (title pages, summary slides that condense several
100
+ sources) gets a `src-note:` saying what it draws on.
101
+
102
+ ### Authoring for back-portability
103
+
104
+ - Keep deck headings **verbatim from the source headings** where possible.
105
+ The anchor then doubles as an integrity check.
106
+ - Keep stable IDs from the sources (A1, B2, goal numbers) visible in the deck
107
+ content, so items self-identify even if comments are stripped.
108
+ - When back-porting: treat the deck text as the edited version of the mapped
109
+ source field. Apply the change to the source file at the given heading.
110
+ Carry the substance back, not the deck's condensed formatting. Find all
111
+ annotations with `rg '<!-- src' <deck>.html`.
112
+
57
113
  ## PDF Rendering Rules
58
114
 
59
115
  **These rules prevent problems when the PDF renders:**
@@ -109,6 +165,8 @@ See that skill for the install steps and the sidecar JSON schema.
109
165
  ## Constraints
110
166
 
111
167
  - Always use the knowledge base for context when available
168
+ - Always embed source annotations (`src:` / `src-note:` comments + legend)
169
+ that map deck sections to their source documents — see Source Annotations
112
170
  - Output to `~/Desktop/presentation.pdf` unless the user specifies otherwise
113
171
  - Keep slides clean and readable (max 5-6 bullet points per slide)
114
172
  - Use the same styles throughout
@@ -6,6 +6,9 @@ compatibility: Standalone HTML deck opened in a Chromium-based browser (Chrome/E
6
6
 
7
7
  # Add a Review Overlay to a Deck
8
8
 
9
+ Write tier: `0-Draft`
10
+ Frontmatter: none
11
+
9
12
  Install the self-contained `slide-annotator.js` overlay onto an HTML deck. The
10
13
  user can then **highlight text on a slide and save the feedback as a sidecar
11
14
  JSON**. Each annotation carries a robust anchor (exact text + the context around
@@ -26,7 +29,7 @@ reviewable" or asks to set up a feedback loop on slides.
26
29
  ## Inputs
27
30
 
28
31
  - Path to the target deck `.html` file (ask, or default to the most recently
29
- edited `*.html` in `Drafts/`).
32
+ edited `*.html` in `0-Draft/`).
30
33
  - The bundled tool at `assets/slide-annotator.js`. This skill's own copy is the
31
34
  source of truth. Edit it here, then re-install it to update decks.
32
35
 
@@ -6,6 +6,9 @@ compatibility: Node.js only — no external dependencies.
6
6
 
7
7
  # Synthesize Deck
8
8
 
9
+ Write tier: `0-Draft` (promotion is a human act)
10
+ Frontmatter: none
11
+
9
12
  Turn messy PowerPoint specification decks into clear, actionable markdown briefs
10
13
  that forward deployed engineers can build from. Strip business jargon. Focus on
11
14
  what matters: what the team must build, what blocks progress, and what data you
@@ -31,7 +34,8 @@ Run when the user wants to understand what a project deck really asks for.
31
34
  ## Outputs
32
35
 
33
36
  - One markdown file per deck (or one combined file for related decks) written to
34
- `Knowledge/Projects/{Project Name} - Engineering Brief.md`.
37
+ `0-Draft/{Project Name} - Engineering Brief.md`. The human promotes a
38
+ finished brief into `3-Team/Projects/`.
35
39
 
36
40
  <do_confirm_checklist goal="Verify the brief is engineer-actionable before
37
41
  delivering">
@@ -131,7 +135,7 @@ infrastructure. Call out timeline–scope mismatches.
131
135
 
132
136
  Use the structure in
133
137
  [references/brief-template.md](references/brief-template.md). Save to
134
- `Knowledge/Projects/{Project Name} - Engineering Brief.md`. For multiple related
138
+ `0-Draft/{Project Name} - Engineering Brief.md`. For multiple related
135
139
  decks, write one combined brief with shared dependencies.
136
140
 
137
141
  ### 9. Save and report
@@ -1,7 +1,7 @@
1
1
  # Engineering Brief Template
2
2
 
3
3
  Reference template for `deck-summarize` Step 8. Save the assembled brief to
4
- `Knowledge/Projects/{Project Name} - Engineering Brief.md`.
4
+ `0-Draft/{Project Name} - Engineering Brief.md`.
5
5
 
6
6
  ```markdown
7
7
  ---
@@ -5,9 +5,13 @@ description: Help the user create, edit, and refine documents in the knowledge b
5
5
 
6
6
  # Document Collaboration
7
7
 
8
+ Write tier: `0-Draft` (working copies; the human promotes)
9
+ Frontmatter: none
10
+
8
11
  Help the user create, edit, and refine documents in the knowledge base. This
9
12
  skill supports direct edits and approval-based workflows. It always uses context
10
- from the knowledge base for entity references.
13
+ from the knowledge base for entity references. New documents start in
14
+ `0-Draft/`. The human promotes a finished document into its tier.
11
15
 
12
16
  ## Trigger
13
17
 
@@ -15,17 +19,18 @@ Run when the user asks to create, edit, review, or collaborate on a document.
15
19
 
16
20
  ## Prerequisites
17
21
 
18
- - Knowledge base directory exists
22
+ - The KB root exists with its tier directories
19
23
 
20
24
  ## Inputs
21
25
 
22
26
  - The user's edit instructions
23
- - `Knowledge/` — existing notes and documents
27
+ - The tier directories — existing notes and documents
24
28
  - Document to edit (user-specified or searched)
25
29
 
26
30
  ## Outputs
27
31
 
28
- - Created or modified documents in `Knowledge/` or user-specified location
32
+ - New documents in `0-Draft/` (or a user-specified location)
33
+ - Modified documents in the tier where the user points
29
34
 
30
35
  ---
31
36
 
@@ -54,8 +59,8 @@ Follow their choice for the entire session.
54
59
  Search thoroughly before you say a document doesn't exist:
55
60
 
56
61
  ```bash
57
- rg -l -i "roadmap" Knowledge/
58
- find Knowledge/ -iname "*roadmap*" 2>/dev/null
62
+ rg -l -i "roadmap" [0-9]-*/
63
+ find [0-9]-*/ -iname "*roadmap*" 2>/dev/null
59
64
  ```
60
65
 
61
66
  **If found:** Read it. Then proceed. **If NOT found:** Ask "I couldn't find
@@ -63,7 +68,7 @@ find Knowledge/ -iname "*roadmap*" 2>/dev/null
63
68
 
64
69
  **Create a new document:**
65
70
 
66
- 1. Ask: "Shall I create Knowledge/[name].md?"
71
+ 1. Ask: "Shall I create 0-Draft/[name].md?"
67
72
  2. Create it with just a title. Don't pre-populate it with structure
68
73
  3. Ask: "What would you like in this?"
69
74
 
@@ -92,14 +97,14 @@ reorganize unless the user asks.
92
97
  - Ask: "What's next?"
93
98
  - Don't read back the entire document unless asked
94
99
 
95
- ## Search Knowledge for Context
100
+ ## Search the Graph for Context
96
101
 
97
102
  When the user mentions people, companies, or projects:
98
103
 
99
104
  ```bash
100
- rg -l "Name" Knowledge/
101
- cat "Knowledge/People/Person.md"
102
- cat "Knowledge/Organizations/Company.md"
105
+ rg -l "Name" [0-9]-*/
106
+ cat "3-Team/People/Person.md"
107
+ cat "3-Team/Organizations/Company.md"
103
108
  ```
104
109
 
105
110
  Use `[[wiki-links]]` to connect to other notes. Only link to notes that exist.
@@ -6,6 +6,9 @@ compatibility: Requires Node.js installed. Playwright is installed on first use.
6
6
 
7
7
  # Create Documents
8
8
 
9
+ Write tier: `0-Draft`
10
+ Frontmatter: none
11
+
9
12
  Generate multi-page A4 PDF documents from user requests. This skill uses
10
13
  Playwright to render self-contained HTML to PDF. It can pull context from the
11
14
  knowledge base for company info, project details, and people.
@@ -23,18 +26,18 @@ submission, brief, or any multi-page PDF that is not a slide deck.
23
26
  ## Inputs
24
27
 
25
28
  - User's description of the document
26
- - `Knowledge/` — optional context about company, product, team, projects
29
+ - `3-Team/` — optional context about company, product, team, projects
27
30
 
28
31
  ## Outputs
29
32
 
30
33
  - An HTML file and a PDF rendered from it, placed where the user specifies
31
- (default: `Knowledge/Projects/`)
34
+ (default: `0-Draft/`; the human promotes a finished document into its tier)
32
35
 
33
36
  ---
34
37
 
35
38
  ## Workflow
36
39
 
37
- 1. Check `Knowledge/` for relevant context about the company, product, team,
40
+ 1. Check `3-Team/` for relevant context about the company, product, team,
38
41
  projects, or people mentioned.
39
42
  2. Make sure Playwright is installed:
40
43
  `bun install playwright && bunx playwright install chromium`