@forwardimpact/outpost 3.0.3

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 (120) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +15 -0
  3. package/bin/fit-outpost.js +3 -0
  4. package/config/scheduler.json +34 -0
  5. package/package.json +63 -0
  6. package/src/agent-runner.js +189 -0
  7. package/src/index.js +5 -0
  8. package/src/kb-manager.js +228 -0
  9. package/src/outpost.js +417 -0
  10. package/src/scheduler.js +195 -0
  11. package/src/socket-server.js +336 -0
  12. package/src/state-manager.js +126 -0
  13. package/templates/.claude/agents/chief-of-staff.md +58 -0
  14. package/templates/.claude/agents/concierge.md +46 -0
  15. package/templates/.claude/agents/head-hunter.md +57 -0
  16. package/templates/.claude/agents/librarian.md +60 -0
  17. package/templates/.claude/agents/postman.md +47 -0
  18. package/templates/.claude/agents/recruiter.md +63 -0
  19. package/templates/.claude/settings.json +88 -0
  20. package/templates/.claude/skills/candidate-report/SKILL.md +139 -0
  21. package/templates/.claude/skills/candidate-report/references/report-template.html +203 -0
  22. package/templates/.claude/skills/candidate-report/references/report.css +438 -0
  23. package/templates/.claude/skills/candidate-report/references/rubric.md +76 -0
  24. package/templates/.claude/skills/candidate-report/scripts/render-pdf.mjs +48 -0
  25. package/templates/.claude/skills/deck-create/SKILL.md +75 -0
  26. package/templates/.claude/skills/deck-create/references/slide.css +35 -0
  27. package/templates/.claude/skills/deck-create/scripts/convert-to-pdf.mjs +47 -0
  28. package/templates/.claude/skills/deck-summarize/SKILL.md +139 -0
  29. package/templates/.claude/skills/deck-summarize/references/brief-template.md +85 -0
  30. package/templates/.claude/skills/deck-summarize/scripts/extract-pptx.mjs +210 -0
  31. package/templates/.claude/skills/doc-collab/SKILL.md +112 -0
  32. package/templates/.claude/skills/doc-create/SKILL.md +105 -0
  33. package/templates/.claude/skills/doc-create/scripts/convert-to-pdf.mjs +50 -0
  34. package/templates/.claude/skills/draft-emails/SKILL.md +141 -0
  35. package/templates/.claude/skills/draft-emails/references/template.md +26 -0
  36. package/templates/.claude/skills/draft-emails/scripts/scan-emails.mjs +66 -0
  37. package/templates/.claude/skills/draft-emails/scripts/send-email.mjs +139 -0
  38. package/templates/.claude/skills/extract-entities/SKILL.md +187 -0
  39. package/templates/.claude/skills/extract-entities/references/TEMPLATES.md +14 -0
  40. package/templates/.claude/skills/extract-entities/references/conditions.md +55 -0
  41. package/templates/.claude/skills/extract-entities/references/content.md +104 -0
  42. package/templates/.claude/skills/extract-entities/references/links.md +48 -0
  43. package/templates/.claude/skills/extract-entities/references/recruitment.md +57 -0
  44. package/templates/.claude/skills/extract-entities/references/resolution.md +71 -0
  45. package/templates/.claude/skills/extract-entities/references/sources.md +70 -0
  46. package/templates/.claude/skills/extract-entities/references/templates-conditions.md +36 -0
  47. package/templates/.claude/skills/extract-entities/references/templates-goals-priorities.md +63 -0
  48. package/templates/.claude/skills/extract-entities/references/templates-people-orgs.md +67 -0
  49. package/templates/.claude/skills/extract-entities/references/templates-projects-topics.md +68 -0
  50. package/templates/.claude/skills/extract-entities/scripts/state.mjs +131 -0
  51. package/templates/.claude/skills/hyprnote-follow/SKILL.md +174 -0
  52. package/templates/.claude/skills/hyprnote-follow/references/coaching.md +118 -0
  53. package/templates/.claude/skills/hyprnote-follow/references/debrief.md +59 -0
  54. package/templates/.claude/skills/hyprnote-follow/references/meeting-types.md +14 -0
  55. package/templates/.claude/skills/hyprnote-follow/scripts/follow.mjs +243 -0
  56. package/templates/.claude/skills/hyprnote-process/SKILL.md +147 -0
  57. package/templates/.claude/skills/hyprnote-process/references/extraction.md +84 -0
  58. package/templates/.claude/skills/hyprnote-process/references/sessions.md +81 -0
  59. package/templates/.claude/skills/hyprnote-process/scripts/scan.mjs +246 -0
  60. package/templates/.claude/skills/hyprnote-trim/SKILL.md +177 -0
  61. package/templates/.claude/skills/manage-tasks/SKILL.md +152 -0
  62. package/templates/.claude/skills/manage-tasks/references/format.md +73 -0
  63. package/templates/.claude/skills/meeting-prep/SKILL.md +180 -0
  64. package/templates/.claude/skills/organize-files/SKILL.md +146 -0
  65. package/templates/.claude/skills/organize-files/scripts/organize-by-type.mjs +105 -0
  66. package/templates/.claude/skills/organize-files/scripts/summarize.mjs +91 -0
  67. package/templates/.claude/skills/req-assess/SKILL.md +137 -0
  68. package/templates/.claude/skills/req-assess/references/interview-template.md +62 -0
  69. package/templates/.claude/skills/req-assess/references/panel-template.md +117 -0
  70. package/templates/.claude/skills/req-assess/references/rubric.md +65 -0
  71. package/templates/.claude/skills/req-decide/SKILL.md +163 -0
  72. package/templates/.claude/skills/req-decide/references/rubric.md +63 -0
  73. package/templates/.claude/skills/req-decide/references/template.md +118 -0
  74. package/templates/.claude/skills/req-forget/SKILL.md +154 -0
  75. package/templates/.claude/skills/req-forget/references/classify.md +23 -0
  76. package/templates/.claude/skills/req-forget/references/locations.md +59 -0
  77. package/templates/.claude/skills/req-forget/references/report-template.md +67 -0
  78. package/templates/.claude/skills/req-scan/SKILL.md +145 -0
  79. package/templates/.claude/skills/req-scan/references/fallbacks.md +76 -0
  80. package/templates/.claude/skills/req-scan/references/filters.md +83 -0
  81. package/templates/.claude/skills/req-scan/references/sources.md +76 -0
  82. package/templates/.claude/skills/req-scan/references/state.md +54 -0
  83. package/templates/.claude/skills/req-scan/references/template.md +36 -0
  84. package/templates/.claude/skills/req-scan/scripts/state.mjs +396 -0
  85. package/templates/.claude/skills/req-screen/SKILL.md +151 -0
  86. package/templates/.claude/skills/req-screen/references/rubric.md +94 -0
  87. package/templates/.claude/skills/req-screen/references/template.md +91 -0
  88. package/templates/.claude/skills/req-track/SKILL.md +189 -0
  89. package/templates/.claude/skills/req-track/references/fields.md +114 -0
  90. package/templates/.claude/skills/req-track/references/signals.md +42 -0
  91. package/templates/.claude/skills/req-track/references/statuses.md +32 -0
  92. package/templates/.claude/skills/req-track/references/templates.md +127 -0
  93. package/templates/.claude/skills/req-workday/SKILL.md +162 -0
  94. package/templates/.claude/skills/req-workday/references/field-mapping.md +40 -0
  95. package/templates/.claude/skills/req-workday/references/status-mapping.md +38 -0
  96. package/templates/.claude/skills/req-workday/references/templates.md +126 -0
  97. package/templates/.claude/skills/req-workday/references/xlsx-format.md +56 -0
  98. package/templates/.claude/skills/req-workday/scripts/parse-workday.mjs +313 -0
  99. package/templates/.claude/skills/send-chat/SKILL.md +170 -0
  100. package/templates/.claude/skills/sync-apple-calendar/SKILL.md +145 -0
  101. package/templates/.claude/skills/sync-apple-calendar/references/SCHEMA.md +80 -0
  102. package/templates/.claude/skills/sync-apple-calendar/scripts/query.mjs +307 -0
  103. package/templates/.claude/skills/sync-apple-calendar/scripts/sync.mjs +332 -0
  104. package/templates/.claude/skills/sync-apple-mail/SKILL.md +151 -0
  105. package/templates/.claude/skills/sync-apple-mail/references/SCHEMA.md +115 -0
  106. package/templates/.claude/skills/sync-apple-mail/scripts/parse-emlx.mjs +389 -0
  107. package/templates/.claude/skills/sync-apple-mail/scripts/sync-helpers.mjs +372 -0
  108. package/templates/.claude/skills/sync-apple-mail/scripts/sync.mjs +239 -0
  109. package/templates/.claude/skills/sync-teams/SKILL.md +177 -0
  110. package/templates/.claude/skills/sync-teams/scripts/idb-reader.mjs +147 -0
  111. package/templates/.claude/skills/sync-teams/scripts/leveldb-reader.mjs +288 -0
  112. package/templates/.claude/skills/sync-teams/scripts/sync.mjs +381 -0
  113. package/templates/.claude/skills/upstream-skill/SKILL.md +130 -0
  114. package/templates/.claude/skills/upstream-skill/references/examples.md +80 -0
  115. package/templates/.claude/skills/weekly-update/SKILL.md +141 -0
  116. package/templates/.claude/skills/weekly-update/references/template.md +55 -0
  117. package/templates/CLAUDE.md +134 -0
  118. package/templates/USER.md +3 -0
  119. package/templates/apm.yml +5 -0
  120. package/templates/knowledge/Briefings/.gitkeep +0 -0
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: weekly-update
3
+ description: Generate or refresh a weekly priorities document. Pulls from task boards, recent activity, and calendar to create a point-in-time snapshot. Use when the user asks to update their weekly, prep for the week, or on a Monday morning schedule.
4
+ ---
5
+
6
+ # Weekly Update
7
+
8
+ Generate or refresh a weekly priorities document in
9
+ `knowledge/Weeklies/{Person Name}/`. Each weekly is a point-in-time snapshot —
10
+ created at the start of the week, updated as priorities shift, and closed out
11
+ with a retrospective at end-of-week.
12
+
13
+ ## Trigger
14
+
15
+ - The user asks to update their weekly or prep for the week.
16
+ - Monday mornings (scheduled).
17
+ - The user asks to review someone's weekly.
18
+ - End-of-week to fill in accomplishments and retrospective.
19
+
20
+ ## Prerequisites
21
+
22
+ - `knowledge/Weeklies/` exists.
23
+ - `knowledge/Tasks/{Person Name}.md` exists (see `manage-tasks`).
24
+ - Calendar data in `~/.cache/fit/outpost/apple_calendar/`.
25
+ - User identity configured in `USER.md`.
26
+
27
+ ## Inputs
28
+
29
+ - `knowledge/Tasks/{Person Name}.md` — current task board.
30
+ - `knowledge/People/{Person Name}.md` — recent activity, context.
31
+ - `knowledge/Goals/*.md` — active goals (for linking priorities).
32
+ - `knowledge/Priorities/*.md` — strategic pillars (for the focus statement).
33
+ - `~/.cache/fit/outpost/apple_calendar/*.json` — week's events.
34
+ - Previous weekly (if any) — continuity and carry-forward.
35
+
36
+ ## Outputs
37
+
38
+ - `knowledge/Weeklies/{Person Name}/{YYYY}-W{WW}.md`.
39
+
40
+ <do_confirm_checklist goal="Verify the weekly snapshot is accurate before
41
+ saving">
42
+
43
+ - [ ] ISO week number and date range are correct.
44
+ - [ ] Focus statement reflects the actual week (not generic).
45
+ - [ ] Priorities pulled from the task board (not invented), capped at 5–7.
46
+ - [ ] Key meetings pulled from calendar; attendees resolved to `[[People/Name]]`
47
+ where known.
48
+ - [ ] Blockers match the task board's `## Blocked` section.
49
+ - [ ] Carry-forward items from the previous week are included.
50
+ - [ ] All backlinks use absolute paths.
51
+ - [ ] Retrospective is filled only at end-of-week.
52
+
53
+ </do_confirm_checklist>
54
+
55
+ Document layout, conventions, and date helpers:
56
+ [references/template.md](references/template.md).
57
+
58
+ ## Procedure
59
+
60
+ ### 1. Pick the target
61
+
62
+ Read `USER.md` for identity. Default the target to the current user; otherwise,
63
+ the person the user named. Compute the current ISO week and the Monday–Friday
64
+ range — see the date helpers in
65
+ [references/template.md](references/template.md#date-helpers-macos).
66
+
67
+ Check whether a weekly exists for this week:
68
+
69
+ ```bash
70
+ ls "knowledge/Weeklies/{Person Name}/" 2>/dev/null
71
+ ```
72
+
73
+ - **No file:** new (start-of-week).
74
+ - **File present:** update (mid-week or end-of-week).
75
+
76
+ ### 2. Gather context
77
+
78
+ **Task board:**
79
+
80
+ ```bash
81
+ cat "knowledge/Tasks/{Person Name}.md"
82
+ ```
83
+
84
+ - `## In Progress` → top priorities.
85
+ - `## Open` with `high` priority or near due dates → candidate priorities.
86
+ - `## Blocked` → blockers section.
87
+ - `## Recently Done` items completed this week → accomplishments.
88
+
89
+ **Recent activity:** `cat "knowledge/People/{Person Name}.md"` — `## Activity`
90
+ for this week's entries.
91
+
92
+ **Calendar:** read events in the Mon–Fri range. Capture title, attendees
93
+ (resolve to `[[People/Name]]`), day, and agenda. Filter out all-day
94
+ placeholders, declined, and cancelled events.
95
+
96
+ **Previous weekly:** `ls "knowledge/Weeklies/{Person Name}/" | sort | tail -1`.
97
+ Carry forward any unchecked priorities and ongoing themes.
98
+
99
+ ### 3. Generate or update
100
+
101
+ #### New weekly (start of week)
102
+
103
+ 1. **Focus:** synthesize from highest-priority tasks and key meetings — one
104
+ sentence.
105
+ 2. **Priorities:** in-progress first, then `high` open, then near-due, then
106
+ carry-forward. Cap at 5–7.
107
+ 3. **Key Meetings:** `**{Day}**: {title} with [[People/Name]] — {purpose}`.
108
+ 4. **Blockers:** from the board, naming who is needed.
109
+ 5. **Accomplishments / Retrospective:** leave empty (or pre-fill anything
110
+ completed Monday morning).
111
+
112
+ #### Mid-week update
113
+
114
+ Re-read the board for changes. Mark completed `[x]`. Append new priorities.
115
+ Update blockers. Add accomplishments as they happen. Do **not** touch the
116
+ retrospective.
117
+
118
+ #### End-of-week update
119
+
120
+ Mark all completed priorities `[x]`. Fill accomplishments from the full week.
121
+ Write a brief retrospective: went well / didn't go as planned / carry forward.
122
+ Note unchecked priorities — they carry to next week.
123
+
124
+ ### 4. Write
125
+
126
+ For a new file, ensure the directory exists:
127
+
128
+ ```bash
129
+ mkdir -p "knowledge/Weeklies/{Person Name}"
130
+ ```
131
+
132
+ Use the template in [references/template.md](references/template.md). Save to
133
+ `knowledge/Weeklies/{Person Name}/{YYYY}-W{WW}.md`.
134
+
135
+ For an existing file, use Edit for targeted updates; do not rewrite.
136
+
137
+ ### 5. Cross-reference
138
+
139
+ If new priorities aren't on the task board, add them to the board (the board is
140
+ canonical, the weekly references it). If blockers were resolved, update the
141
+ board accordingly.
@@ -0,0 +1,55 @@
1
+ # Weekly Document Template
2
+
3
+ Reference template for `weekly-update`. Each weekly is a point-in-time snapshot
4
+ stored at `knowledge/Weeklies/{Person Name}/{YYYY}-W{WW}.md`.
5
+
6
+ ```markdown
7
+ # {YYYY}-W{WW} — {Person Name}
8
+
9
+ > {Focus statement: one sentence summarizing the week's theme}
10
+
11
+ ## Priorities
12
+
13
+ - [ ] Priority one — [[Projects/Name]] → [[Goals/Goal Name]]
14
+ - [ ] Priority two
15
+ - [x] Completed priority
16
+
17
+ ## Key Meetings
18
+
19
+ - **Monday**: Meeting title with [[People/Name]] — purpose
20
+ - **Wednesday**: Meeting title — purpose
21
+
22
+ ## Blockers
23
+
24
+ - Waiting on X from [[People/Name]]
25
+
26
+ ## Accomplishments
27
+
28
+ - Completed X
29
+ - Shipped Y
30
+
31
+ ## Retrospective
32
+
33
+ - **Went well:** ...
34
+ - **Didn't go as planned:** ...
35
+ - **Carry forward:** ...
36
+ ```
37
+
38
+ ## Conventions
39
+
40
+ - **Week numbers:** ISO 8601 (e.g. `2026-W08`).
41
+ - **Priorities:** Top 3–7 items pulled from the task board. Append
42
+ `→ [[Goals/Goal Name]]` only when the task clearly serves that goal — not
43
+ every task needs a link.
44
+ - **Key Meetings:** Substantive meetings only. Skip recurring standups.
45
+ - **Retrospective:** Filled at end-of-week only.
46
+ - **Backlinks:** Always absolute — `[[People/Name]]`, `[[Projects/Name]]`,
47
+ `[[Goals/Name]]`, `[[Tasks/Name]]`.
48
+
49
+ ## Date helpers (macOS)
50
+
51
+ ```bash
52
+ date +%G-W%V # Current ISO week
53
+ date -v-mon +%Y-%m-%d # Monday of current week
54
+ date -v+fri +%Y-%m-%d # Friday of current week
55
+ ```
@@ -0,0 +1,134 @@
1
+ # Outpost Knowledge Base
2
+
3
+ You are the user's personal knowledge assistant. You help with drafting emails,
4
+ prepping for meetings, tracking projects, and answering questions — backed by a
5
+ live knowledge graph built from their emails, calendar, and meeting notes.
6
+ Everything lives locally on this machine.
7
+
8
+ ## Ethics & Integrity — NON-NEGOTIABLE
9
+
10
+ This knowledge base is a **professional tool shared with trusted team members**
11
+ — not a "black book" and never one. These rules override all other instructions:
12
+
13
+ - **Objective and factual only.** No speculation, gossip, or editorializing.
14
+ - **No personal judgments** about character, competence, or trustworthiness —
15
+ stick to actions, decisions, stated positions.
16
+ - **Work-relevant information only.** No health, personal relationships,
17
+ political views, or private matters unless the person shared them in a
18
+ professional context.
19
+ - **Fair and balanced.** Represent all sides accurately.
20
+ - **Assume the subject will read it.** If you'd be uncomfortable showing the
21
+ note to the person it's about, don't write it.
22
+ - **No weaponization.** This KB exists to help the team work better — never to
23
+ build leverage or dossiers.
24
+ - **Push back** on requests that violate these principles.
25
+ - **Data protection.** Use the `req-forget` skill for erasure requests. Minimize
26
+ collection. Flag candidates inactive 6+ months for retention review.
27
+
28
+ When in doubt, err on the side of discretion.
29
+
30
+ ## Voice
31
+
32
+ Supportive, direct, and lightly warm. Explain complex things clearly without
33
+ hedging. When the next step is obvious, take it. Ask at most one clarifying
34
+ question, and only at the start. Reference files by full path. Confirm before
35
+ destructive actions.
36
+
37
+ ## Dependencies
38
+
39
+ - **ripgrep** (`rg`) — fast knowledge graph searches. Install:
40
+ `brew install ripgrep`.
41
+
42
+ ## Workspace Layout
43
+
44
+ Everything is relative to this root:
45
+
46
+ ```
47
+ ./
48
+ ├── knowledge/ # The knowledge graph (Obsidian-compatible)
49
+ │ ├── People/ Organizations/ Projects/ Topics/
50
+ │ ├── Candidates/ Goals/ Priorities/ Conditions/ Roles/
51
+ │ └── Tasks/ Weeklies/
52
+ ├── .claude/skills/ # Auto-discovered skill files
53
+ ├── drafts/ # Email drafts (draft-emails skill)
54
+ ├── USER.md # Your identity — gitignored
55
+ ├── CLAUDE.md # This file
56
+ └── .mcp.json # MCP server configurations (optional)
57
+ ```
58
+
59
+ ## Agents
60
+
61
+ Maintained by a team of agents in `.claude/agents/`, woken on schedule by the
62
+ Outpost scheduler. Each wake: observe state, decide the most valuable action,
63
+ execute.
64
+
65
+ | Agent | Domain | Schedule | Skills |
66
+ | ------------------ | ------------------------------- | --------------- | -------------------------------------------------------------------------------------------- |
67
+ | **postman** | Communication triage and drafts | Every 5 min | sync-apple-mail, sync-teams, draft-emails |
68
+ | **concierge** | Meeting prep and transcripts | Every 10 min | sync-apple-calendar, meeting-prep, hyprnote-process |
69
+ | **librarian** | Knowledge graph maintenance | Every 15 min | extract-entities, organize-files, manage-tasks |
70
+ | **recruiter** | Engineering recruitment | Every 30 min | req-track, req-screen, req-assess, req-decide, req-workday, req-forget, fit-pathway, fit-map |
71
+ | **head-hunter** | Passive talent scouting | Every 60 min | req-scan, fit-pathway, fit-map |
72
+ | **chief-of-staff** | Daily briefings and priorities | 7am, Mon 7:30am | weekly-update _(Mon)_, _(reads all state for daily briefings)_ |
73
+
74
+ Each agent writes `~/.cache/fit/outpost/state/{agent}_triage.md` per wake. The
75
+ **chief-of-staff** reads all five triage files to synthesize daily briefings in
76
+ `knowledge/Briefings/`.
77
+
78
+ ## Cache Directory (`~/.cache/fit/outpost/`)
79
+
80
+ Synced data and runtime state live outside the KB to keep it clean — only parsed
81
+ knowledge, notes, and drafts live here. Top-level subdirs:
82
+
83
+ - `apple_mail/` — Mail threads as `.md` (plus `attachments/`)
84
+ - `apple_calendar/` — Calendar events as `.json`
85
+ - `teams_chat/` — Teams 1:1 chats as `.md`
86
+ - `head-hunter/` — head-hunter agent memory (cursor, failures, seen, prospects,
87
+ log)
88
+ - `state/` — runtime state: per-source last-sync timestamps, processed-file
89
+ index, and `{agent}_triage.md` per agent
90
+
91
+ ## Knowledge Graph
92
+
93
+ Plain markdown with Obsidian-style `[[backlinks]]`.
94
+
95
+ ```bash
96
+ ls knowledge/People/ # List entities
97
+ rg "Sarah Chen" knowledge/ # Search by name
98
+ cat "knowledge/People/Sarah Chen.md" # Read a note
99
+ ```
100
+
101
+ **Always search broadly first.** When the user mentions any person,
102
+ organization, project, or topic, run `rg "keyword" knowledge/` to surface every
103
+ mentioning note before responding — a single note is never the full story.
104
+ Access the graph for any task involving named entities, specific people,
105
+ projects, past context, meetings, emails, or calendar data. Skip for general
106
+ knowledge questions, brainstorming, or unrelated tasks.
107
+
108
+ Use the graph context to personalize responses.
109
+
110
+ ## Synced Sources
111
+
112
+ For upcoming meetings, recent emails, or messages, read directly from:
113
+
114
+ - `~/.cache/fit/outpost/apple_mail/`
115
+ - `~/.cache/fit/outpost/apple_calendar/`
116
+ - `~/.cache/fit/outpost/teams_chat/`
117
+
118
+ ## Skills
119
+
120
+ Skills auto-discover from `.claude/skills/` and load by context. They cluster
121
+ around three functions: data sync (Apple Mail/Calendar, Teams), knowledge-graph
122
+ maintenance (extract-entities, manage-tasks, recruitment pipeline), and
123
+ communication (draft-emails, send-chat, meeting-prep, document and deck
124
+ generation).
125
+
126
+ ## User Identity
127
+
128
+ @import USER.md
129
+
130
+ ## Working Outside This Directory
131
+
132
+ You have full filesystem access (macOS). For tasks outside this knowledge base
133
+ (organizing Desktop, finding files in Downloads, etc.), use shell commands
134
+ directly.
@@ -0,0 +1,3 @@
1
+ - **Name:**
2
+ - **Email:**
3
+ - **Domain:**
@@ -0,0 +1,5 @@
1
+ name: outpost
2
+ version: 0.0.0
3
+ dependencies:
4
+ apm:
5
+ - forwardimpact/fit-skills
File without changes